или как кнопка "Проверить" ускорила проверку и выпуск устройств контроля питания в несколько раз.

Предисловие

«“Я знаю, что ничего не знаю” — говорил Сократ. Именно так я чувствовал себя, когда решил автоматизировать проверку модулей, требующую множества ручных операций».

Зовут меня Никита aka sadoviy_gnom, и сегодня я расскажу, как превратил рутинные проверки электронных модулей в почти магический процесс. Но обо всём по порядку.  

Немного обо мне

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

Об опыте в сфере энергетики

- Релейная защита - настраивал «умные» защиты, которые за миллисекунды определяли, где случилось КЗ (короткое замыкание, а не «кто здесь»).
- Телемеханика - это как геймпад для энергосистемы. Ты сидишь за компом, а где-то в тайге твои команды включают выключатели на ВЛ.

А если серьезно, кто знает - понимает что все немного сложнее... :)

Чему научился:
— Страху. Осознание, что от твоей работы зависит порой критическая инфраструктура, — лучший мотиватор не косячить.
— Точности. Одна небольшая оплошность в настройке — и может получится фейерверк.
— Терпению. Когда ждёшь дежурного, сначала целый день, а потом всю ночь, для того чтобы выполнить плановые работы за 15 минут.

О программировании

- Я жил с мечтой стать «программистом», начиная с Pascal. Потом был Delphi и это было как пересесть с велосипеда на космический корабль, который почему-то назывался «Borland».
- После я застрял в Java-джунглях. Сертификаты OCA 1Z0-808 и 1Z0-809 стали моими талисманами.

Как я попал на производство?

— Условие вакансии: «Знаете любой ЯП? Хоть эльфийский? Опыт в сфере АСУТП есть?!»
— Моё резюме: «Java, базовый SQL и 100% уверенность, что “NullPointerException” — это про меня».
Итог: Меня взяли. Видимо, за упорство (ну еще, потому что в предметной области я хорошо разбирался).

Почему я вообще за это взялся? 

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

После месяца работы на производстве и наблюдений за тем, как коллеги “залипали” на одних и тех же тестах, я не выдержал. Тогда я и понял: ручная проверка — это не просто долго и скучно, а иногда даже опасно.

Почему руки больше не вариант

Время. Один модуль — 4 часа. Десять модулей — неделя. А объем производства увеличивается? Заказчик ждет?
Надёжность. Система не может заболеть или филонить если ей стало лень.
Безопасность. Шаловливые руки всегда хотят полезть куда-то и потрогать что-то
Свобода. Представьте: оператор, который вместо того, чтобы как робот стоять рядом с устройством, наконец-то может... *продолжи фразу

*созерцать работать над другой задачей.

Автоматизация — это не про увольнения. Это про то, чтобы оператор контролировал процесс, а не был его заложником.

«Автоматизировать нельзя оставить» — запятая здесь была очевидна. Но как собрать систему, которая заменит и глаза, и руки, и мозг уставшего инженера? Об этом — дальше.

Ближе к сути! Проблема

«Ручная проверка модуля напоминала игру в “Сапёра”: один неверный шаг — и получаешь дым из корпуса. Но после нескольких таких “игр” я решил: хватит это терпеть. Идея разработать стенд стала необходимостью , а кнопка “Проверить” — молотом, который разобьет рутину».

Ручная проверка одного модуля контроля питания занимала “часы”, а если быть точным то минимум 4 часа. Оператор вручную тестировал входные/выходные каналы, датчики температуры и связь, сверяя десяток параметров, логику и т.д. Ошибки случались регулярно.

«Что за зверь — модуль контроля питания? Как он спасает от апокалипсиса?»

Модуль предназначен для контроля и управления схемой питания систем автоматизации напряжением постоянного тока.

Основные функции:

  1. Мониторинг питания
    — Контроль напряжения на входах/выходах. 24/48V DC (зависит от модификации)
    — Автопереключение между основным, резервным и аварийным (АКБ) источниками при сбоях.

  2. Управление АКБ
    — Заряд аккумулятора при критическом разряде.
    — Отключение от АКБ при восстановлении внешнего питания.

  3. Терморегуляция
    — Включение кабельного обогрева при падении температуры ниже заданного порога.

Примитивная схема
Подключение входных и выходных цепей
Подключение датчика температуры и нагревателя

Принцип работы модуля:

Модуль автоматически переключает питание между источниками:
- Основной канал (IN1) — приоритетный.
- Резервные (IN2, IN3*) — активируются при отключении IN1 (в модификациях 24V40A/48V40A добавлен IN4).
- Аварийный (АКБ) — включается при потере всех внешних источников. О переходе в аварийный режим система уведомляет верхний уровень.

Управление АКБ:
- Заряд включается/отключается автоматически в зависимости от напряжения.
- При критическом разряде модуль отключается от АКБ.
- При восстановлении внешнего питания — возврат в штатный режим.

Температурный контроль:
- Цифровой интерфейс 1-Wire поддерживает до 5 датчиков.
- Обогрев активируется автоматически на выбранном датчике при низкой температуре.

Световая сигнализация:
- Наличие напряжения: основной/резервные каналы, АКБ, выходные цепи.
- Статус процессора, заряд АКБ, готовность к автономной работе.
- Состояние связи по RS-485.

Что было нужно?


- Стенд, способный проверять несколько устройств без участия оператора.  
- Гибкость под разные конфигурации (6 модификаций!).  
- Авто отчётность — чтобы не тратить время на составление протоколов проверки.  

«Делай, что можешь, с тем, что имеешь, там, где ты есть» (Рузвельт). 

«У меня был 1 неттоп, 75 метров проводов разного сечения, 5 датчиков температуры, полкоробки реле и пол коробки контакторов, целое множество разъёмов всех форм и размеров, а также паяльник, осциллограф, модули нашего производства, ящик кофе, литр терпения и пара бутылок чего-то жидкого. Не то чтобы всё это строго входило в техническое задание которое я сам себе придумал…»

Реализация: начало

Я разделил проект на две части:  

1. Аппаратная — сборка стенда с универсальными разъёмами, имитацией нагрузок и различных датчиков.  
2. Программная — веб-интерфейс с кнопкой «Проверить», который управляет всем этим хозяйством.  

В следующих частях:


- Лайфхаки: как я превратил неттоп в мозг стенда и заставил Python «дружить» с со всеми устройствами.  Погоди, а при чем здесь Python!?

- Провалы: как я покалечил и спалил несколько устройств и не только... Кто не работает – тот не ошибается.

- Финал: как автоматизация сократила проверки с
1 модуля = 4 часа, до 5 модулей = 1 час 15 минут,
и как это освободило команду для других задач, а так же ускорило время выпуска и качество продукции.

Если не знаешь, куда идти, тогда все дороги хороши», — говорила Алиса. Я нашел свою дорогу. И вот что из этого вышло

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