Небольшой проект по промышленной автоматизации

Как сделать логику сортировки наблюдаемой от PLC до HMI

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

Сначала разделил ответственность в PLC. Ladder держит режим, запуск, разрешения, финальные команды и общий fault. Structured Text ведёт только цикл детали: запоминает тип, ждёт обратную связь, обрабатывает таймауты и обновляет счётчики.

Дальше собрал замкнутый путь: действие оператора → логика PLC → команда → датчики модели → состояние на HMI. Это desktop-симуляция для изучения управления, не промышленная и не safety-certified система.

PLC → HMI

логика, датчики и HMI
OpenPLC
Ignition Perspective
Conveyor Sorting Summary
OpenPLC: ladder и ST

Сначала разделить ответственность

Ladder отвечает за режим, Run latch, permissives, финальные команды и общий fault. Structured Text отвечает за состояние детали, таймауты и счётчики. За счёт этого одну команду не пишут два блока логики.

Conveyor Sorting Overview
Одна деталь за раз

На PE_Infeed PLC фиксирует type A или B. Следующую деталь он не принимает, пока текущий цикл не завершён.

Маршрут type A

Для type A цикл проходит 10 → 20 → 30 → 0: движение к divert, feedback выдвижения, возврат в home и инкремент Type A/Total.

Таймауты и fault

Нет нужного PE или feedback толкателя — sequence уходит в state 90 и снимает автоматические команды. Reset возвращает в idle, но не запускает новый цикл.

Conveyor Sorting Step
Structured Text: state machine

Сделать цикл детали явным

ST-блок берёт зафиксированный тип детали и ведёт её через состояния: вход, движение к divert, выдвижение толкателя, возврат в home и завершение. На каждом ожидании есть свой таймаут и переход в fault.

Conveyor Sorting Overview
Зафиксировать тип

На PE_Infeed state machine сохраняет type A или B. Дальше она работает с этим значением, поэтому внешняя смена сигнала не меняет маршрут детали в середине цикла.

Отделить решение от исполнения

Ladder формирует команды и permissives. ST не пишет оборудование напрямую: он отдаёт состояние, fault и счётчики. Поэтому у финальной команды остаётся один writer.

Реагировать на отсутствие feedback

Если датчик или Pusher_Extended не приходит вовремя, state machine переходит в state 90. Автоматические команды снимаются. Для нового цикла нужны Reset и новый Start.

Structured Text · State 0
CASE Sequence_State OF
    0:
        IF Mode_Auto_Active AND Run_Active
           AND Pusher_Home AND PE_Infeed THEN
            Active_Part_Type_A := Part_Type_A;
            IF Part_Type_A THEN
                Sequence_State := 10;
            ELSE
                Sequence_State := 50;
            END_IF;
        END_IF;
END_CASE;
Perspective и модель

Показывать состояние контроллера, а не локальный UI state

В Perspective на одном экране собраны Auto, Start/Stop/Reset, статусы датчиков, pusher, fault и три счётчика. Gateway Timer моделирует только входы и обратную связь. Команды, fault и counts остаются в PLC.

Conveyor Sorting Overview
Операторский экран

Здесь собраны команды, статус линии, conveyor, три PE, feedback толкателя, причина fault и отдельные счётчики.

Детерминированная обратная связь

Gateway Timer с периодом 200 ms чередует A/B. Для A он даёт PE_Infeed → PE_Divert → Extended → Home с запасом внутри 2-секундного PLC watchdog.

Наблюдаемый normal path

В тестовом цикле type A изменил Total/A/B с 10/4/6 до 11/5/6. Затем type B — с 11/5/6 до 12/5/7. Active fault не появился.

Выводы:

  1. Конечный автомат помогает держать последовательность читаемой
  2. Граница writers между HMI, моделью и PLC снимает спорные состояния
  3. Таймауты нужно проектировать вместе с обратной связью, а не добавлять после
Conveyor Sorting Step

Другие проекты

Part Production Cell — MES & OEE Project

Part Production Cell — MES & OEE

OpenPLC, Ignition Perspective и SQLite: порядок в событиях, KPI и причинах простоев.

Смотреть кейс Arrow
Tank Level Control Project

Tank Level Control

OpenPLC, Modbus TCP и Ignition: от ladder-логики до проверяемого операторского сценария.

Смотреть кейс Arrow
Monitoring — UPL Project

Monitoring — UPL

Enterprise-мониторинг для АЭС: состояния системы, инженерные ограничения и 3D-логика хранилищ.

Смотреть Arrow