Як ми будували систему аварійної сигналізації дата-центру

image
Так вийшло, що в команді проекту Embox у мене найбільше досвіду в області АСУ: на попередньому місці роботи я розробляв промислові контролери. Тому не дивно, що коли виникла завдання-зробити систему автоматичного керування світлодіодами в датацентрі, саме мене попросили опрацювати архітектуру проекту. Спочатку планувалося закупити готові контролери дистанційного керування портами вводу-виводу, але після більш ретельного опрацювання вимог стало ясно, що для замовника кращий варіант розробки замовленого контролера. Власне, ви і бачите на фотографії.
Тим, кому цікаво дізнатися про те, на які граблі ми наступили, як виглядають вибухнули мікросхеми, як правильно підключати землю на DC/DC конвертер, ну і, звичайно, чому ми застосували наш проект, прошу під кат. Обережно, багато картинок!

Бажання замовника — закон
Спочатку завдання здавалося дуже стандартної, потрібно управляти діодами +24В за повідомленнями приходять від SCADA-системи замовника. Звичайно, від SCADA надходять повідомлення про стан всяких датчиків, а не про те, що потрібно запалити або погасити якийсь конкретний діод, але це вирішується розробкою своєрідного PROXY який переводить повідомлення типу аварійна ситуація в шафі N у відповідну команду, посилаємо по протоколу Modbus на конкретний контролер.

Відповідно, запропонована мною архітектура була дуже простий і виходила з мого досвіду в області АСУ. А саме — взяти електричні щити, типу тих, в яких стоять лічильники, набити їх контролерами з максимальним набором дискретних виходів, наприклад, MOXA ioLogik E1211, поставити джерела живлення, і, в принципі, все. Тобто, картина уявлялася такою: щит, як і належить в АСУ, що монтується на стіну, в нього заходить один мережний провід Ethernet і живлення 220, а виходять купа пар проводів, які йдуть до світлодіодів. Були, звичайно, питання з приводу такої великої кількості діодів, але вони легко вирішувалися збільшенням кількості шаф.

Але при подальшому уточненні деталей почали спливати нюанси, які почали впливати на таку просту і зрозумілу схему реалізації. Першою умовою, похитнув нашу впевненість, було те, що обладнання потрібно монтувати тільки в телекомунікаційні шафи. З одного боку, DIN рейки ніхто не відміняв, але з іншого, погодьтеся, якось убого буде виглядати телекомунікаційна стійка, якщо там будуть навісити контролери вводу-виводу та блоки живлення до них. До того ж, монтаж і обслуговування подібної конструкції являє собою досить нетривіальну задачу. Очевидним рішенням було використовувати rack корпус, а вже в ньому приховати всю недоступну для очей «користувача» кухню. Для того, щоб було простіше масштабувати схему і нарощувати кількість виходів, я запропонував використовувати контролери, які працюють не за Ethernet, а по RS485 (наприклад ioLogik R1212), а на вході поставити перетворювач Modbus-RTU в Modbus/TCP (MGate MB3170-T).

Але побажання замовника мати дружній користувальницький web-інтерфейс сильно сплутало наші плани. Я почав пропонувати вже не настільки красиві рішення, наприклад — поставити в кожен корпус з проксі і так далі. Ці ідеї були не дуже вдалими, але я продовжував відстоювати рішення зробити все на готових елементах, поки не з'ясувалося, що термін поставки готових контролерів в достатній кількості не вкладається в термін замовлення.

Власний велосипед повинен бути зручним
Стали обмірковувати інші рішення. Хлопці з команди говорили:
“Так що там взагалі робити? Адже Нам просто потрібно ногами контролера керувати, нехай напруга і струм досить великі, але ж є ключі типу ULN2803A. У нас ось зараз на столі лежать пара налагоджувальних плат STM32F4Discovery, на них чудово вирішується подібна задача. Крім того, якщо використовувати ці налагодження, можна дуже просто реалізувати web-інтерфейс, оскільки web-сервер там вже працює."
Я заперечив, що не все так просто, що у нас, наприклад, немає підтримки протоколу ModBus, що є стандартом для подібного роду пристроїв. На що один з членів нашої команди 0xdde на наступний день зробив підтримку, перенісши бібліотеку libmodbus.

Загалом, я здався, і було вирішено робити контролер за допомогою наявної STM32F4Discovery, монтажної плати, провід МГТФ, ключів і якийсь матері.

Для того, щоб гарно виглядало, ми вирішили замість клем поставити роз'єми на три контакту W7166-03PSGB00, оскільки, як я вже говорив, управління ведеться парами діодів, і у них спільна земля. На жаль, роз'ємів на три контакту з нормальним терміном поставки ми знайти не змогли і поставили роз'єми W7166-04PSGB00 на чотири контакту. Спочатку ми хотіли, щоб на одному контролері було расположенною 80 таких роз'ємів, але тут ми знову зіткнулися з тим, що 80 таких роз'ємів ледве влазять на кришку rack корпусу U1. Крім того, у нас виходило, що блок живлення 24В повинен бути не менш, ніж на 20А. Тому ми вирішили обмежитися 40 роз'ємами (парами діодів) і поставити все в корпус U2.

Наступне питання, яке виникло, полягав у тому, що на нашій STM32F4Discovery не було 80 вільних висновків для управління 40 парами діодів. На допомогу довелося викликати зсувні регістри 74HCT164N.

Аналіз вимог це важливо
Проблеми із закупівлями компонент ми опускаємо. А ось про наш недогляд при читанні опису мікросхеми ключів я розповім. Якщо це і не цікаво, то як мінімум повчально.

image
Як я вже говорив, діоди у нас зведені в пари і мають загальний провід — землю. Управляються ж діоди позитивним напругою на керуючих контактах. Так от, коли приїхали діоди, ми включили один діод, успішно їм поуправляли і заспокоїлися. Але коли справа дійшла до перевірки на реальній парі, з'ясувалося, що ці ключі керують розриванням землі (загального проводу), тобто схема включення довжка була бути такий, як на картинці.

Загалом, нам терміново довелося міняти тип ключів, спочатку на UDN2981A-T, а потім на TD62783APG, оскільки перші вважалися застарілими, і, крім того що вони коштували зовсім не мало, їх виявилося ще й важко купити.

Коли, нарешті, схема на один каскад була створена, виглядало це приблизно так.



Підсумком недогляду щодо документації стали пара втрачених днів і наявність пари сотень мікросхем, які до того часу вже встигли приїхати.

Навісний монтаж не так вже простий
Після того, як у нас, нарешті, запрацював один каскад під управлінням STM32F4, ми приступили до наступної стадії, а саме — до створення повноцінного прототипу пристрою.

Ідея була така.
Беремо монтажну плату, розставляємо на ній мікросхеми і роз'єми. Припаюємо все це, з'єднуємо за досить простою схемою (буде далі), додаємо пару роз'ємів, один для харчування і один штирьовий для керуючих сигналів від STM32F4Discovery, потім подаємо харчування, з'єднуємо з шлейфом Discovery, і все — залишається тільки корпус. Загалом, все здавалося простим і легким. Втім, реальність виявилася не настільки райдужною.

Перша проблема, з якою ми зіткнулися, була в навісному монтажі. Справа в тому, що є велика різниця між пайкою десятків проводів і сотень проводів, і останнє виявилося моторошним заняттям.

Загалом, паяли довго, але це ще не найгірше. Коли, нарешті, спаяли, продзвонили і подали харчування, стався вибух. Вимкнули, продзвонили ще раз, виявилося, коротиш між землею (5В) і +24В. Ми просто вели дві шини, і вони торкнулися одного і того ж металізованого отвору, а ми не продзвонили живлення між собою. Загалом, самі винні, але було дуже страшно.

Ми заклеїли ізолентою місце коротуна (так, так, без ізоляційної стрічки не обійшлося):



І тут же зробили ще одну помилку, а саме — не прибрали зі схеми взорвавшуюся мікросхему. Принаймні, ми думаємо, що причина такого вибуху була саме в цьому.

А ось так виглядають мікросхеми, вирізані з плати після такого коротуна.



Не варто працювати в суботу
Ми домоглися того, що після подачі живлення на схему нічого не вибухало, не дымилось і сильно не грілося. Зрадівши, підключили шлейфом Discovery і навіть спробували керувати діодами, щоправда, безрезультатно. Потрібно було шукати проблему. Насамперед, ми перевірили напруги живлення+5В і +24В). Вони були коректні. Потім напруги на вихідних контактах зсувних регістрів, — вони теж були правильні. І ними навіть можна було керувати. Але, як не дивно, на виходах ключів нічого не змінювалося, вони завжди були відкриті. Довга перевірка схеми підключення виявилася безрезультатною.

Вимірюючи напругу в черговий раз, ми дуже здивувалися, побачивши, що на вихідному контакті сдвигового регістра +5В, а на вході ключа щось дивне, хоча вони просто з'єднані дротом. Трохи пізніше з'ясувалося, що ми вимірюємо напруги в цих точках від різних земель. Виміряли різниця потенціалів між землями 5В і 24В і побачили 5В. Виявилося, що ми просто неправильно підключили мікросхему DC/DC конвертера TRECO TEN 12-2411. Навіть не знаю, як нам в голову таке прийшло, адже очевидно, що якщо дві напруги приходять на одну і ту ж мікросхему, то у них має бути спільна земля, а ми землі не з'єднали і отримали на схемі два розв'язаних напруги. У своє виправдання можу сказати тільки те, що ми програмісти, хоча і системні, і навіть очевидний факт про спільну точку нам підказали знайомі інженери.

Загалом, зрозуміли свою помилку і вирішили поєднати землі, але так як вже було десь десять годин вечора в суботу, вирішили зробити це тоненьким дротом, причому притримуючи руками, просто коротнув ці точки на платі. Не знаю вже, що сталося далі, то рука здригнулася у людини, який тримав провід, то після попередніх аварій ще один ключ вилетів, але на цей раз я побачив, як горить мікросхема, в буквальному сенсі горить, а адже раніше я думав, що ні керамічний корпус, ні металеві контакти горіти не можуть. Загалом, ще мінус мікросхема ключа і сдвигового регістра, який ми выкусили, пам'ятаючи про попередній досвід. І на цій прекрасній ноті ми пішли додому, оскільки подальші спроби зробити щось поспіхом нам здавалися недоречними. Адже у нас ключів не вистачало навіть на один пристрій. Добре хоч вони повинні були прийти вже в понеділок.

Простота врятує світ
За підсумками суботніх битв ми все-таки отримали працюючий прототип пристрою, і виглядав наступним чином:



Резистори (300 Ом) на фото імітують навантаження. Перед демонстрацією замовнику ми робили тестові прогони по кілька годин. Грілися резистори, до речі, до 120 градусів.

Я не буду розповідати про роботи з корпусом і остаточну збірку, просто наведу фотографії нутрощів, і то заради того, щоб розповідь була повною:





Ми продемонстрували роботу замовнику, функціональність його влаштувала, зовнішній вигляд теж. Єдине, що він попросив змінити — це поставити замість наших роз'ємів що-небудь з прийнятих в телекомунікації: RJ45 або RJ11, оскільки це сильно звичніше, а значить і простіше в експлуатації і обслуговуванні. На цей раз, проконсультувавшись з інженерами на предмет того, чи витримають потрібні струми подібні роз'єми, чи вистачить місця на лицьовій панелі і так далі, вирішили поставити RJ12. Вони були на складі в наявності, ну і конструктивно займають менше місця, ніж RJ45. Крім того, враховуючи попередній досвід, ми вирішили, що паяти на макетної платі не варіант, і замовили проектування друкованої плати. А оскільки вона виявилася дуже проста, двостороння навіть без металізації, то нам випустили її менше, ніж за тиждень.

Проведені модернізації сильно спростили нам життя і зробили саму плату більш гарною.



При чому тут Embox?
Найсильнішим аргументом, як ви розумієте, для застосування Embox було те, що він нам добре відомий, якщо не сказати більше.

Але все ж хочеться відзначити технічні характеристики, які сильно спрощували створення необхідного пристрою. Головне, звичайно, — це наявність повноцінного web-сервера з підтримкою cgi. В результаті керувати нашим пристроєм можна за допомогою браузера, зовнішній вигляд сторінки максимально наближений до реальної лицьовій панелі.



Звичайно, можна заперечити, що є більш простий спосіб отримати web-сервер на пристрої, а саме — використовувати Linux. Не сперечаюся це так, і він буде, безумовно, більш функціональний і дозволить використовувати для розробки купу фреймворків та мов програмування. Але, по-перше, ми щиро переконані, що керувати GPIO з під Linux-а це не зовсім правильний підхід. А по-друге, він на таку апаратну платформу просто не встане без спеціальних хитрувань.

Ну, а якщо використовувати FreeRTOS з lwIP стеком, який йде в комплекті, то реалізація подібного функціоналу сильно ускладнюється, ну і, звичайно, libmodbus так просто вже не перенести.

P. S. При розробці даного пристрою ні один світлодіод в датацентрі не постраждав

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.