В посёлке городского типа Новый Ургал, вторая ветка БАМа, выполнены пусконаладочные работы автоматизации технологического процесса системы водоподготовки охлаждающей жидкости для дизельных двигателей тепловозов.
Проектное название - КОМПЛЕКС ПОДГОТОВКИ И ЭКИПИРОВКИ ВОДЫ ПРОИЗВОДИТЕЛЬНОСТЬЮ ПО ВОДЕ С ЩЕЛОЧНОЙ ПРИСАДКОЙ 3м3/сут., С БЕСЩЕЛОЧНОЙ 10м3/сут.
Основное оборудование расположено в помещение водоподготовки. Состав системы:
Проект был разработан ООО «ФКТ РОСТР» Санкт-Петербург 2018 г. На систему имелся паспорт с описанием автоматической работы. По факту центральный шкаф с ПЛК не выполнял свою функцию СОВСЕМ. Дисплей экрана существовал своей жизнью, вне зависимости от состояний входных сигналов ПЛК. В ходе проверки проекта также обнаружилось что связь с модулями ввода/вывода, дисплеем ведётся, но общем 485 интерфейсе, причём платы колонок имеют не стандартный протокол.
Закрадывается мысль, как на систему может выдаваться паспорт с гарантией, правда в особых отметках было указано что - Гарантийные обязательства распространяются только на все работы, связанные с монтажом, наладкой и пуском изделия в эксплуатацию под руководством шефмонтажа или бригадой монтажно-наладочного участка ООО «ФТК РОСТР». Чего собственно сделано не было, видимо вопрос баланса стоимости.
Итак, для запуска системы в эксплуатацию требовалось проверка различных датчиков, насосов, дозаторов, постов колонок и комплексное испытание. На первом этапе для завершения готовности электромонтажных работ было выполнено следующее:
После готовности электромонтажных подключений, можно приступать к индивидуальным испытаниям оборудования:
По завершению первичных испытаний оборудования низкого уровня, приступили к составлению ПО:
Может показаться простой работой, программирование из четырёх пунктов, но на самом деле, программа в процессе отладки подвергается неоднократным изменениям и дополнениям, т.к. инженеры в процессе работ всё глубже и детальней понимают процесс управления, пока не отработается комплекс испытаний.
Итак, после наладки и испытаний системы водоподготовки, дело дошло до связи контроллера с платами колонок. Но первым препятствием к тому оказался политический вопрос производителя в отказе предоставлять документацию на протокол опроса плат. После давления административным ресурсом описание всё-таки получить удалось. В данном случае считаем если у производителя приобрели готовое изделие – экипировочную колонку, то будьте любезны предоставить описание, без которого оно не заработает.
Вернёмся к протоколу. Ну, мы знаем, как работать с модулями В/В – настраиваешь скорость, указываешь адрес, выбираешь регистр чтения или записи и опрашиваешь значение. Да, но это в протоколе 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 часовым графиком ничего не было. А жизнь то вокруг есть, вон как зелень то за время командировки распустилась, воздух стал теплее. И с уважением ко всем трудящимся Нового Ургала и с чистым чувством совести, новых знаний и победы попутный поезд начинает ускорение в сторону дома.
Живи и развивайся Новый Ургал! В таких местах остались только полезные, стойкие люди, которых можно сравнить с командой на корабле, где каждый человек на своём месте. И только благодаря человеческой воле корабль хоть и замедлил, но продолжает путь. И только дай попутного ветра как полотнище паруса наполниться упругой силой и энергией команды. Как в былые годы строительства БАМа. А ведь и радостные новости – строительства БАМа продолжится! Государство уделяет инфраструктурным объектам Дальнего Востока отдельное внимание, план есть и начало его уже идёт.
Ну а мы как специалисты в своём деле, поможем стране здесь на месте, ну или где того потребуется.
С уважением к трудящимся Нового Ургала, коллектив компании ПускАвтоматика.