Специалисты, работающие с серверным оборудованием, знают, насколько высокие требования предъявляются к источникам бесперебойного питания и системам кондиционирования и воздухообмена.
Я сам неоднократно сталкивался с ситуациями, когда сбой той или иной системы приводил к обрушению дата-центра одного из мобильных операторов стран СНГ.
В одной из ситуаций одновременно были обесточены основные и резервные линии электропередачи дата-центра, дизель-генераторы запустились автоматически, но электрики не включили определенный выключатель.
ИБП держали нагрузку до последнего момента, а затем были обесточены более 200 серверов.
В другой ситуации дата-центр после отключения электроэнергии на основной линии был переключен на резервную линию, напряжение на которой оказалось низким.
Это привело к отказу запуска кондиционеров, идущих в обход ИБП.
Сервера выключались из-за перегрева, коммутатор HLR зависал на долгое время и восстанавливал полную работоспособность только через 2-3 дня.
Все это привело к тому, что до миллиона абонентов остались без связи.
Сразу отвечаю на вопрос: «Что сделала служба мониторингаЭ» В первой ситуации она считала работу завершенной; во втором она поздно заметила сигнал тревоги на одном из многочисленных мониторов.
Так как моей непосредственной обязанностью было восстановление серверов после таких аварий и мне, мягко говоря, надоело полагаться на сервис мониторинга и я начал искать решение кроме SNMP-ловушек.
Изучив руководства, прилагаемые к ИБП и кондиционерам, выяснилось, что все они поддерживают сухие контакты.
Остаётся только узнать, как с ними работать.
На помощь пришла плата разработки MSP430 Launchpad от Texas Instruments. Для неспециалистов сухие контакты действуют как переключатели включения/выключения, замыкая/размыкая контакты при определенных условиях.
Производитель может установить, например, следующие условия: общая тревога (любая неисправность оборудования), отсутствие напряжения на входных контактах, низкий заряд батареи, повышенная температура.
Все это подробно описано в мануалах, а также там же есть схемы контактов, к которым нужно подключиться.
Эти переключатели позволяют формировать критерии HIGH и LOW для микроконтроллера: если контакт разомкнут, то относительно земли у нас на выводе контроллера будет HIGH, если замкнут, то сформируется LOW. Такие условия позволяют вам управлять, используя простой оператор «if», включением/выключением других контактов на плате.
Недолго думая, я решил управлять светодиодами и пьезозуммером для подачи звукового и визуального сигнала тревоги.
Через 5 минут на основе примеров, которые прилагались к среде Energia, был составлен скетч:
Немного поясню, в серверной стоят 4 ИБП и 2 промышленных кондиционера.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); } }
Это те, что подключены как buttonPinX, светодиоды подключены какledPinX, твитер подключен кtonePin. Не думаю, что возникнут какие-либо трудности с дальнейшим анализом эскиза.
Сигнальные панели планировалось установить в двух помещениях: в офисе, где находятся администраторы, и в центре мониторинга.
Использовать для этого две платы было жалко, поэтому я решил запараллелить сигнальные контакты.
Доставлять сигналы в помещения было решено довольно необычным способом – с помощью уже проложенных сетевых кабелей через кроссовый шкаф и розетки.
Получилось довольно удобно - для плюсовых контактов светодиодов используется 6 UTP-кабелей, один для плюсового контакта твитера и последний для земли.
Я не решился подключать кабели, идущие от сухих контактов оборудования, напрямую к плате; Я использовал резисторы сопротивлением 10 кОм.
Еще я боялся, что светодиоды со временем могут перегореть, так как ток потребления по данным тестера был 6мА, а контроллер MSP430G2553 может обеспечить на выходе до 50мА.
Я решил использовать ограничительные резисторы сопротивлением 390 Ом.
В итоге схема получилась такая
Справа — шлейф сигнальных кабелей к пульту дистанционного управления; в реальной схеме у меня 2 таких шлейфа на 2 пульта.
Пронумерованные выводы идут к сухим контактам ИБП и кондиционера, спаренным с землей.
К ИБП подключены сухие контакты, сообщающие о начале разряда батареи; в то же время это означает, что входного напряжения нет. На кондиционерах к сухим контактам общей сигнализации.
Сигнализация сразу заработала, с первого же дня стала оповещать о сбоях в работе, так как проблемы с электроснабжением были практически каждый день.
Планируется включить UART для чтения данных о состоянии контактов и генерации уведомлений по электронной почте или SMS. Теги: #Сделай сам или Сделай сам #поделки #сигнализация #сигнализация #сигнализация #MSP430
-
Настройте Подключение Wii К Интернету
19 Oct, 24 -
Основная Цель Безопасных Ssl-Сертификатов
19 Oct, 24 -
Гаити
19 Oct, 24 -
Алексеев Николай Николаевич.
19 Oct, 24