Msp430 Launchpad Как Сигнал Тревоги О Состоянии Серверного Оборудования

Специалисты, работающие с серверным оборудованием, знают, насколько высокие требования предъявляются к источникам бесперебойного питания и системам кондиционирования и воздухообмена.

Я сам неоднократно сталкивался с ситуациями, когда сбой той или иной системы приводил к обрушению дата-центра одного из мобильных операторов стран СНГ.

В одной из ситуаций одновременно были обесточены основные и резервные линии электропередачи дата-центра, дизель-генераторы запустились автоматически, но электрики не включили определенный выключатель.

ИБП держали нагрузку до последнего момента, а затем были обесточены более 200 серверов.

В другой ситуации дата-центр после отключения электроэнергии на основной линии был переключен на резервную линию, напряжение на которой оказалось низким.

Это привело к отказу запуска кондиционеров, идущих в обход ИБП.

Сервера выключались из-за перегрева, коммутатор HLR зависал на долгое время и восстанавливал полную работоспособность только через 2-3 дня.

Все это привело к тому, что до миллиона абонентов остались без связи.

Сразу отвечаю на вопрос: «Что сделала служба мониторингаЭ» В первой ситуации она считала работу завершенной; во втором она поздно заметила сигнал тревоги на одном из многочисленных мониторов.

Так как моей непосредственной обязанностью было восстановление серверов после таких аварий и мне, мягко говоря, надоело полагаться на сервис мониторинга и я начал искать решение кроме SNMP-ловушек.

Изучив руководства, прилагаемые к ИБП и кондиционерам, выяснилось, что все они поддерживают сухие контакты.

Остаётся только узнать, как с ними работать.

На помощь пришла плата разработки MSP430 Launchpad от Texas Instruments. Для неспециалистов сухие контакты действуют как переключатели включения/выключения, замыкая/размыкая контакты при определенных условиях.

Производитель может установить, например, следующие условия: общая тревога (любая неисправность оборудования), отсутствие напряжения на входных контактах, низкий заряд батареи, повышенная температура.

Все это подробно описано в мануалах, а также там же есть схемы контактов, к которым нужно подключиться.

Эти переключатели позволяют формировать критерии HIGH и LOW для микроконтроллера: если контакт разомкнут, то относительно земли у нас на выводе контроллера будет HIGH, если замкнут, то сформируется LOW. Такие условия позволяют вам управлять, используя простой оператор «if», включением/выключением других контактов на плате.

Недолго думая, я решил управлять светодиодами и пьезозуммером для подачи звукового и визуального сигнала тревоги.

Через 5 минут на основе примеров, которые прилагались к среде Energia, был составлен скетч:

   

const int ledPin0 = P1_0; const int ledPin1 = P1_1; const int ledPin2 = P1_2; const int ledPin3 = P1_3; const int ledPin4 = P1_4; const int ledPin5 = P1_5; const int buttonPin0 = P2_0; const int buttonPin1 = P2_1; const int buttonPin2 = P2_2; const int buttonPin3 = P2_3; const int buttonPin4 = P2_4; const int buttonPin5 = P2_5; const int tonePin = P1_7; int buttonState0 = 0; int buttonState1 = 0; int buttonState2 = 0; int buttonState3 = 0; int buttonState4 = 0; int buttonState5 = 0; void setup() { pinMode(ledPin0, OUTPUT); pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); pinMode(ledPin4, OUTPUT); pinMode(ledPin5, OUTPUT); pinMode(buttonPin0, INPUT_PULLUP); pinMode(buttonPin1, INPUT_PULLUP); pinMode(buttonPin2, INPUT_PULLUP); pinMode(buttonPin3, INPUT_PULLUP); pinMode(buttonPin4, INPUT_PULLUP); pinMode(buttonPin5, INPUT_PULLUP); } void loop() { buttonState0 = digitalRead(buttonPin0); buttonState1 = digitalRead(buttonPin1); buttonState2 = digitalRead(buttonPin2); buttonState3 = digitalRead(buttonPin3); buttonState4 = digitalRead(buttonPin4); buttonState5 = digitalRead(buttonPin5); // LED P1_0 if (buttonState0 == LOW) { digitalWrite(ledPin0, HIGH); tone(tonePin, 440, 200); } else { digitalWrite(ledPin0, LOW); } // LED P1_1 if (buttonState1 == LOW) { digitalWrite(ledPin1, HIGH); tone(tonePin, 440, 200); } else { digitalWrite(ledPin1, LOW); } // LED P1_2 if (buttonState2 == LOW) { digitalWrite(ledPin2, HIGH); tone(tonePin, 440, 200); } else { digitalWrite(ledPin2, LOW); } // LED P1_3 if (buttonState3 == LOW) { digitalWrite(ledPin3, HIGH); tone(tonePin, 440, 200); } else { digitalWrite(ledPin3, LOW); } // LED P1_4 if (buttonState4 == LOW) { digitalWrite(ledPin4, HIGH); tone(tonePin, 440, 200); } else { digitalWrite(ledPin4, LOW); } // LED P1_5 if (buttonState5 == LOW) { digitalWrite(ledPin5, HIGH); tone(tonePin, 440, 200); } else { digitalWrite(ledPin5, LOW); } }

Немного поясню, в серверной стоят 4 ИБП и 2 промышленных кондиционера.

Это те, что подключены как buttonPinX, светодиоды подключены какledPinX, твитер подключен кtonePin. Не думаю, что возникнут какие-либо трудности с дальнейшим анализом эскиза.

Сигнальные панели планировалось установить в двух помещениях: в офисе, где находятся администраторы, и в центре мониторинга.

Использовать для этого две платы было жалко, поэтому я решил запараллелить сигнальные контакты.

Доставлять сигналы в помещения было решено довольно необычным способом – с помощью уже проложенных сетевых кабелей через кроссовый шкаф и розетки.

Получилось довольно удобно - для плюсовых контактов светодиодов используется 6 UTP-кабелей, один для плюсового контакта твитера и последний для земли.

Я не решился подключать кабели, идущие от сухих контактов оборудования, напрямую к плате; Я использовал резисторы сопротивлением 10 кОм.

Еще я боялся, что светодиоды со временем могут перегореть, так как ток потребления по данным тестера был 6мА, а контроллер MSP430G2553 может обеспечить на выходе до 50мА.

Я решил использовать ограничительные резисторы сопротивлением 390 Ом.

В итоге схема получилась такая

MSP430 Launchpad как сигнал тревоги о состоянии серверного оборудования

Справа — шлейф сигнальных кабелей к пульту дистанционного управления; в реальной схеме у меня 2 таких шлейфа на 2 пульта.

Пронумерованные выводы идут к сухим контактам ИБП и кондиционера, спаренным с землей.

К ИБП подключены сухие контакты, сообщающие о начале разряда батареи; в то же время это означает, что входного напряжения нет. На кондиционерах к сухим контактам общей сигнализации.

Сигнализация сразу заработала, с первого же дня стала оповещать о сбоях в работе, так как проблемы с электроснабжением были практически каждый день.

Планируется включить UART для чтения данных о состоянии контактов и генерации уведомлений по электронной почте или SMS. Теги: #Сделай сам или Сделай сам #поделки #сигнализация #сигнализация #сигнализация #MSP430

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.