
Когда речь заходит о программировании ПЛК систем дозирования/смешивания, многие сразу представляют себе стандартные библиотеки блоков — но на практике часто оказывается, что готовые решения не учитывают инерционность шнековых дозаторов или особенности работы задвижек с пневмоприводом. Взять хотя бы наш последний проект на цементном заводе — казалось бы, типовой рецептурный смеситель, но при переходе с гранулированного на порошковый компонент система начала давать погрешность в 3-4%, хотя по паспорту должно быть не более 1.5%. Пришлось переписывать алгоритм компенсации налива с учётом вибрации бункера — мелочь, которую в теории редко учитывают.
Самая распространённая ошибка — попытка использовать PID-регуляторы там, где достаточно простого алгоритма с предварительным дозированием. Например, для сыпучих материалов часто делают двухстадийный цикл: сначала быстрая подача до 90% массы, потом точное дозирование. Но если не добавить задержку между стадиями, система будет постоянно переливать из-за инерции транспортера.
Ещё момент — многие забывают программировать защиту от 'залипания' клапанов. У нас был случай на линии производства строительных смесей, где заслонка подачи песка периодически не закрывалась до конца. Вместо того чтобы ставить дополнительный датчик положения, добавили в ПЛК контроль времени срабатывания — если клапан не достигает конечного положения за 2 секунды, программа инициирует повторное включение и записывает событие в журнал.
Особенно сложно работать с материалами переменной плотности. Помню, на заводе по производству сухих строительных смесей использовали перистальтические насосы для жидких компонентов — так там при изменении температуры вязкость менялась на 20-30%, что полностью сбивало кривую дозирования. Пришлось вводить поправочные коэффициенты на основе фактической производительности насоса.
Для сложных многокомпонентных систем часто используют каскадное программирование — когда основной ПЛК управляет подчинёнными контроллерами дозаторов. В наших проектах, например, для программирования ПЛК систем дозирования/смешивания обычно применяем Siemens S7-1500 в качестве ведущего, а для отдельных линий — CompactLogix. Важно не просто раздать задания, а организовать квитирование: каждый подчинённый контроллер должен подтвердить получение рецепта и сообщить о завершении цикла.
Интересный случай был на производстве полимерных композиций — там требовалось одновременно управлять двенадцатью дозаторами с разной дискретностью. Сделали архитектуру с резервированием PROFIBUS, но столкнулись с тем, что при обрыве шины система не могла корректно восстановить параметры дозирования. Добавили в ПЛК буфер текущих значений с привязкой к времени — теперь при сбое оператор видит, на каком именно компоненте прервался процесс.
Отдельная головная боль — синхронизация начала выгрузки. Если компоненты поступают в смеситель не одновременно, получается неоднородная смесь. Мы обычно программируем задержку запуска шнеков в зависимости от длины транспортных путей — но это требует точных замеров на объекте. На том же заводе полимеров пришлось трижды перезамерять длины пневмотранспорта, пока добились синхронности в пределах 0.5 секунды.
В системах взвешивания всегда есть проблема с фильтрацией сигналов тензодатчиков. Стандартные фильтры ПЛК часто не справляются с вибрацией — мы обычно пишем кастомные алгоритмы с адаптивной частотой среза. Например, для дозаторов цемента используем фильтр, который автоматически увеличивает жёсткость при обнаружении резких изменений нагрузки (это признак работы виброустройств).
Калибровка аналоговых модулей — ещё один момент, который часто недооценивают. В проекте для ООО Чэнду Жундэ Электромеханическое Оборудование мы столкнулись с тем, что встроенные АЦП ПЛК давали погрешность 0.3% при работе с датчиками давления Mitsubishi — пришлось закладывать в программу таблицу поправок для каждого канала. Кстати, их сайт https://www.cdroad.ru содержит полезную техническую документацию по калибровке весовых систем — мы иногда используем их методики при настройке фильтров.
Особенно критичны аналоговые сигналы для расходомеров Coriolis — там малейшая погрешность приводит к кумулятивной ошибке за цикл. В одном из проектов по модернизации химического производства пришлось программировать компенсацию температуры непосредственно в ПЛК, хотя обычно это делает сам расходомер. Зато теперь система поддерживает точность 0.1% даже при скачках температуры среды от 20 до 80°C.
При подключении к SCADA часто возникает проблема с тегами — особенно когда в системе сотни параметров дозирования. Мы выработали свою систему именования: например, 'DZ01_CurrWeight' для текущего веса дозатора 1 или 'MX05_State' для состояния смесителя 5. Это кажется мелочью, но когда на объекте работают три смены технологов, единая номенклатура сильно упрощает диагностику.
Для обмена с ERP-системами используем OPC UA — но здесь есть нюанс с обработкой рецептов. Если просто передавать веса компонентов, без учёта коэффициентов уплотнения, система закупок будет заказывать сырьё с ошибкой. В проекте для завода красок мы добавили в ПЛК расчёт фактической плотности материалов после дозирования — теперь отдел МТС получает корректные данные для планирования.
Интересный опыт был при интеграции с системой управления зданием — оказалось, что вентиляция цеха влияет на точность дозирования мелкодисперсных порошков. Пришлось программировать в ПЛК поправку на скорость воздушных потоков, данные о которых поступают из общезаводской автоматики. Без этого в зимний период, когда включается отопление, погрешность дозирования талька достигала 2%.
Самое сложное в отладке — поймать плавающие ошибки. Например, на линиях розлива иногда возникает ситуация, когда дозатор периодически недоливает 50-100 грамм без видимых причин. Мы обычно вешаем на ПЛК долговременный логинг всех параметров цикла — потом анализируем данные в Excel. В 80% случаев оказывается, что проблема в износе уплотнителей шнека или изменении давления в пневмосети.
При commissioning всегда оставляем запас по времени на 'обкатку' — даже идеально написанная программа для программирования ПЛК систем дозирования/смешивания требует подстройки под реальное оборудование. Обычно первые две недели система работает в режиме мониторинга, а мы корректируем коэффициенты по результатам статистики.
Недавний пример с модернизацией линии на заводе ООО Чэнду Жундэ Электромеханическое Оборудование — там пришлось переписывать алгоритм управления задвижками после того, как выяснилось, что новые пневмоцилиндры срабатывают на 0.3 секунды медленнее старых. Казалось бы, мелочь — но из-за этого на каждом цикле терялось 2 кг материала. Исправили добавлением компенсации в программу ПЛК.