В посёлке городского типа Новый Ургал, вторая ветка БАМа, выполнены пусконаладочные работы автоматизации технологического процесса системы водоподготовки охлаждающей жидкости для дизельных двигателей тепловозов.
Проектное название - КОМПЛЕКС ПОДГОТОВКИ И ЭКИПИРОВКИ ВОДЫ ПРОИЗВОДИТЕЛЬНОСТЬЮ ПО ВОДЕ С ЩЕЛОЧНОЙ ПРИСАДКОЙ 3м3/сут., С БЕСЩЕЛОЧНОЙ 10м3/сут.
Основное оборудование расположено в помещение водоподготовки. Состав системы:
- Накопительные ёмкости приготовления щелочной и без щелочной воды;
- Приёмная ёмкость слива с тепловозов отработанной воды, которую можно довести до нужной в зависимости от химических показателей и для экономии реагентов;
- Узел приготовления дистиллята;
- Оснащение системы насосами, мешалками, дозаторами, подогревателями, различными контролирующими и защитными датчиками;
- Шкаф управления и шкаф ВРУ;
- 15 внешних постов колонок, которые располагаются в трёх линейных зонах техобслуживания тепловозов.
Самая главная технологическая схема, которой в ТЗ не было, нашлась на объекте

Оксонометрия

Проект был разработан ООО «ФКТ РОСТР» Санкт-Петербург 2018 г. На систему имелся паспорт с описанием автоматической работы. По факту центральный шкаф с ПЛК не выполнял свою функцию СОВСЕМ. Дисплей экрана существовал своей жизнью, вне зависимости от состояний входных сигналов ПЛК. В ходе проверки проекта также обнаружилось что связь с модулями ввода/вывода, дисплеем ведётся, но общем 485 интерфейсе, причём платы колонок имеют не стандартный протокол.
Закрадывается мысль, как на систему может выдаваться паспорт с гарантией, правда в особых отметках было указано что - Гарантийные обязательства распространяются только на все работы, связанные с монтажом, наладкой и пуском изделия в эксплуатацию под руководством шефмонтажа или бригадой монтажно-наладочного участка ООО «ФТК РОСТР». Чего собственно сделано не было, видимо вопрос баланса стоимости.
Итак, для запуска системы в эксплуатацию требовалось проверка различных датчиков, насосов, дозаторов, постов колонок и комплексное испытание. На первом этапе для завершения готовности электромонтажных работ было выполнено следующее:
- Расключение кабелей насосов колонок с линий ТО (техобслуживания)."color: #004a80;">Шкафы управления.
По завершению первичных испытаний оборудования низкого уровня, приступили к составлению ПО:
- Составлена таблица входных и выходных сигналов ПЛК 110-60;
- Сконфигурирована структура опроса ПЛК с внешними модулями (CoDeSys v2.3);
- Составлен алгоритм управления для различных устройств – ТЭНЫ, насосы, мешалки, вспомогательные устройства, таймеры, блокировки и защиты, настройки и др.;
- Сконфигурирована панель ОВЕН СП310Р.
Программирование.
Может показаться простой работой, программирование из четырёх пунктов, но на самом деле, программа в процессе отладки подвергается неоднократным изменениям и дополнениям, т.к. инженеры в процессе работ всё глубже и детальней понимают процесс управления, пока не отработается комплекс испытаний.
Разница восприятия интерфейса управления.
Итак, после наладки и испытаний системы водоподготовки, дело дошло до связи контроллера с платами колонок. Но первым препятствием к тому оказался политический вопрос производителя в отказе предоставлять документацию на протокол опроса плат. После давления административным ресурсом описание всё-таки получить удалось. В данном случае считаем если у производителя приобрели готовое изделие – экипировочную колонку, то будьте любезны предоставить описание, без которого оно не заработает.
Вернёмся к протоколу. Ну, мы знаем, как работать с модулями В/В – настраиваешь скорость, указываешь адрес, выбираешь регистр чтения или записи и опрашиваешь значение. Да, но это в протоколе Modbus, чем мы раньше промышляли. Как известно протокол Modbus состоит от 8 байтов. В данном случае запрос посылки состоит из 6 байт, где первый байт — это адрес, второй всегда по нулям. Есть своя особенность опроса текущих состояний и подтверждений перехода выходов платы.
Вот она, любимая плата.
Смещение, байт 0, 1 2 3 4, 5 Параметр Адрес ведомого Текущее состояние Подтверждение запроса CRC Значение slaveAddr curState operAck Crc16 А самое интересное это контрольная сумма CRC! Написанная на языке С, которую необходимо перевезти на язык ST CoDeSys. Функция вычисления контрольной суммы:
#define __swap_nibbles(x) ((x>>4)|(x<<4)) unsigned short crc16Calc(unsigned char *buffer, int n) { unsigned int i; unsigned char crc1,crc2,tmp; crc1 = crc2 = 0xff; for(i = 0;i < n;i++) { crc2^=buffer[i]; tmp = __swap_nibbles(crc2)&0x0f^crc2; crc2 = crc1; crc1 = tmp; tmp = __swap_nibbles(tmp)&0xf0; crc2 ^= tmp; tmp = (tmp<<1)^crc1; crc1 >>= 3; crc2 = crc2^crc1; crc1 = tmp; } return crc2+(crc1<<8); }
Вот это новости! Вот это задача! Вот этого ранее мы не делали и не работали с нестандартными протоколами! – Что ж, поздравляю дорогой друг! У тебя есть прекрасная возможность обучиться новым знаниям! Беги в гостиницу, оплачивай ещё полторы недели симпозиума, устраивайся по удобнее и начни с простого – теории.
И так, с чего же начать, смотрю в книгу, какая-то головоломка, в голове каша. Пробуем различные примеры и решения. Обращаемся в техподдержку ОВЕН и его форум. Где наконец-то подсказывают на какой полюс ориентироваться по компасу в верную сторону. Откланиваясь с благодарностью к ведающим специалистам, решение начинает приобретать осязаемую и понятную форму.
Первое решение – правильное вычисление контрольной суммы CRC! Дело в том, что она придумана для защиты сигнала связи от помех. В это число закладывается адрес устройства, функция опроса, адрес регистра, и значение и пропускается через алгоритм контрольной суммы где корректный результат должен быть равен нулю. Стесняюсь открыть тайну, оказывается любой модуль ввода-вывода своим процессором вычисляет её. Если сумма не совпадает, то на этот запрос он не ответит, словно глыба в вакууме космоса. Да все вещи сложные и не понятные, пока они не входят в круг наших понятий. Нужно помнить, что всё сложное состоит из простого и масштабные мегаструктуры подобным малым. Только в спокойном состоянии возможно найти правильное решение, да бывают эмоции возмущения, но это от выхода напряжения. Но вся энергия восполняется многократно в момент победы.
Вскоре после неоднократных штурмов платки 10х12 см (на STM32), составлен протокол циклического опроса 15 модулей, с алгоритмом подтверждения и снятия команд дистанционного управления. Для устойчивой связи подтянуты уровни опорного сигнала ПЛК и БП плат общих точек – GND. По истечению трёх суток «вылет» плат со связи не замечен.
Система готова к комплексному испытанию. Проверена подача команд с каждой колонки на предмет подачи щелочной, без щелочной воды, насосов слива и блокировки аварийной кнопки.
Комиссия одобряет приёмку с мелкими замечаниями не по нашей части. Подписываем акт приёмки в эксплуатацию, передаём документации, протоколы испытаний, инструкцию по эксплуатации. Так, ещё успеваем взять билет до дому. Что ж, подышим на последок полной грудью воздухом Дальневосточной тайги и посмотрим вокруг, а то кроме программ и электронных схем в голове за последние три недели с 13 часовым графиком ничего не было. А жизнь то вокруг есть, вон как зелень то за время командировки распустилась, воздух стал теплее. И с уважением ко всем трудящимся Нового Ургала и с чистым чувством совести, новых знаний и победы попутный поезд начинает ускорение в сторону дома.
Памятная стелла строительству БАМА в Новом Ургале.
Живи и развивайся Новый Ургал! В таких местах остались только полезные, стойкие люди, которых можно сравнить с командой на корабле, где каждый человек на своём месте. И только благодаря человеческой воле корабль хоть и замедлил, но продолжает путь. И только дай попутного ветра как полотнище паруса наполниться упругой силой и энергией команды. Как в былые годы строительства БАМа. А ведь и радостные новости – строительства БАМа продолжится! Государство уделяет инфраструктурным объектам Дальнего Востока отдельное внимание, план есть и начало его уже идёт.
Ну а мы как специалисты в своём деле, поможем стране здесь на месте, ну или где того потребуется.
С уважением к трудящимся Нового Ургала, коллектив компании ПускАвтоматика.