К списку уроков

Урок 13

Логика конвейера

Практическая схема конвейера: пуск, стоп, разрешения, аварийный запрет и самоподхват.

PLC/FBDpracticalвузинженерANDORINTERNAL_SIGNAL

1. Что разбираем

Логика конвейера - это один из самых удобных учебных примеров для изучения PLC и FBD.

В такой задаче есть кнопки оператора, разрешающие условия, аварийный запрет и выход управления двигателем. На этом примере хорошо видно, как отдельные логические элементы объединяются в рабочую программу.

Основной пример урока запускает конвейер кнопкой Start, останавливает кнопкой Stop и снимает разрешение работы при Safety_OK = FALSE. Датчик Product_Stop_Sensor временно останавливает двигатель; после освобождения датчика движение продолжается автоматически, если разрешение оператора сохранено.

Start_Button + Stop_Button + Safety_OK + Product_Stop_Sensor -> логика PLC -> Motor_Run

2. Где это применяется

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

  • запуск и остановка ленточного конвейера;
  • подающий транспортер перед упаковочной машиной;
  • накопительный конвейер перед роботом;
  • рольганг подачи коробов или паллет;
  • выдающий транспортер после станка;
  • учебная модель запуска двигателя с блокировками.

В реальной системе выход PLC обычно не включает двигатель напрямую. Он может подавать команду на контактор, частотный преобразователь, сервопривод или промежуточное реле.

3. Сигналы примера

СигналТипНазначение
Start_Buttonвходкнопка запуска конвейера
Stop_Buttonвходкнопка остановки конвейера
Safety_OKвходобщее разрешение работы: аварии нет, дверь закрыта
Product_Stop_Sensorвходдатчик заполнения на выходе конвейера
Conveyor_Enable_LatchRS-блокхранит разрешение оператора на выходе Q
Motor_Runвыходкоманда двигателя конвейера

Для формул ниже обозначим Q блока Conveyor_Enable_Latch как Conveyor_Enable. Это состояние RS-блока, а не отдельный блок INTERNAL_SIGNAL. В загружаемом JSON есть все четыре входа из таблицы и один выход Motor_Run.

4. Основная идея логики

Простой конвейер обычно не должен работать только пока оператор держит кнопку Start. После краткого нажатия Start команда работы должна запомниться.

Поэтому в загружаемой схеме используется RS-блок Conveyor_Enable_Latch с приоритетом сброса. Он сохраняет разрешение после отпускания Start. Эквивалентная формула памяти:

Conveyor_Enable = (Start_Button OR previous_Conveyor_Enable) AND NOT Stop_Button AND Safety_OK

Смысл этой формулы:

  • Start_Button запускает конвейер;
  • previous_Conveyor_Enable — разрешение, сохранённое после предыдущего скана;
  • Stop_Button снимает команду работы;
  • Safety_OK запрещает работу при аварии или отсутствии разрешения.

Motor_Run = Conveyor_Enable AND NOT Product_Stop_Sensor

Датчик влияет на Motor_Run, но не сбрасывает Conveyor_Enable. При одновременных Start и Stop побеждает Stop, поскольку используется RS, а не SR.

5. Таблица работы

В таблице показано изменение разрешения Conveyor_Enable. При Product_Stop_Sensor = FALSE выход Motor_Run повторяет это разрешение.

Start_ButtonStop_ButtonSafety_OKConveyor_Enable до циклаConveyor_Enable после цикла
FALSEFALSETRUEFALSEFALSE
TRUEFALSETRUEFALSETRUE
FALSEFALSETRUETRUETRUE
FALSETRUETRUETRUEFALSE
TRUETRUETRUEFALSEFALSE
TRUEFALSEFALSEFALSEFALSE
FALSEFALSEFALSETRUEFALSE

Важный момент: Stop_Button = TRUE или Safety_OK = FALSE сбрасывают разрешение, поэтому после их снятия для нового запуска требуется Start. Product_Stop_Sensor только приостанавливает двигатель и не требует нового Start.

6. Разрешения и аварийные условия

Сигнал Safety_OK лучше понимать как общее разрешение работы. Он может объединять несколько условий.

Safety_OK = Emergency_OK AND Door_Closed AND Drive_Ready

Тогда логика конвейера становится более понятной:

Conveyor_Enable = (Start_Button OR previous_Conveyor_Enable) AND NOT Stop_Button AND Safety_OK

Если любое разрешающее условие пропадает, Safety_OK становится FALSE, а Conveyor_Enable сбрасывается.

В загружаемом примере Safety_OK — один вход. Объединение Emergency_OK, Door_Closed и Drive_Ready через AND выше — теоретическое расширение.

7. Другой вариант: повторный Start после заполнения

Часто конвейер должен останавливаться не только по кнопке Stop, но и по состоянию датчика. Например, если на выходе накопилась деталь или следующая зона занята.

Если нужно сбрасывать запомненную команду при заполнении и требовать нового Start после освобождения датчика, условие датчика включают в формулу памяти:

Conveyor_Run = (Start_Button OR Conveyor_Run) AND NOT Stop_Button AND Safety_OK AND NOT Product_Stop_Sensor

В этом варианте Product_Stop_Sensor = TRUE сбрасывает Conveyor_Run, и оператор должен снова нажать Start после освобождения датчика. Это отдельный теоретический вариант; основной JSON урока реализует автоматическое продолжение, описанное ниже.

8. Загружаемая схема: автоматическое продолжение

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

Тогда лучше разделить два сигнала:

СигналНазначение
Conveyor_Enableзапомненная команда оператора: конвейер разрешен к работе
Motor_Runфактическая команда на двигатель с учетом датчиков и разрешений

Conveyor_Enable = (Start_Button OR previous_Conveyor_Enable) AND NOT Stop_Button AND Safety_OK Motor_Run = Conveyor_Enable AND NOT Product_Stop_Sensor

В этом варианте Stop_Button снимает разрешение работы, а Product_Stop_Sensor только временно запрещает включение двигателя.

Именно этот вариант реализован в основном примере урока. Conveyor_Enable хранится в RS-блоке Conveyor_Enable_Latch; отдельного именованного сигнала Conveyor_Run в JSON нет.

9. Связь с реальным оборудованием

В реальной системе команда Motor_Run обычно идет не прямо на двигатель, а на управляющее устройство.

  • катушка контактора;
  • дискретный вход частотного преобразователя;
  • вход Enable или Run привода;
  • модуль управления мотором;
  • промежуточное реле.

Кроме программной логики, в реальной линии обязательно учитываются требования безопасности. Аварийная остановка, защитные двери и цепи безопасности не должны зависеть только от учебной логики программы.

10. Практика в симуляторе

Откройте основной пример урока и запустите симуляцию. Наблюдайте Q блока Conveyor_Enable_Latch и выход Motor_Run. После каждого изменения входов дождитесь следующего скана в режиме «Старт».

  • Установите Safety_OK = TRUE, а Start_Button, Stop_Button и Product_Stop_Sensor — в FALSE.
  • Нажмите Start_Button: Q блока Conveyor_Enable_Latch и Motor_Run станут TRUE.
  • Отпустите Start_Button: оба значения останутся TRUE.
  • Установите Product_Stop_Sensor = TRUE. Motor_Run станет FALSE, а Q блока останется TRUE.
  • Верните Product_Stop_Sensor в FALSE. Motor_Run снова станет TRUE без нового нажатия Start.
  • Нажмите Stop_Button: Q блока и Motor_Run станут FALSE. Отпустите Stop и проверьте, что двигатель не запускается самостоятельно.
  • Снова запустите конвейер, затем установите Safety_OK = FALSE: оба значения станут FALSE. Верните Safety_OK в TRUE при отпущенном Start: для запуска нужно новое нажатие.
  • Проверьте одновременные Start_Button = TRUE и Stop_Button = TRUE: оба значения должны быть FALSE.

Кнопка «Связанный пример» загружает другую схему: пуск/стоп конвейера на SR-триггере. В ней нет Safety_OK и Product_Stop_Sensor, а при одновременных Set и Reset приоритет имеет Set. Для упражнения выше используйте основной пример урока.

Цель упражнения - увидеть, как кнопки, память состояния и разрешающие условия вместе формируют команду работы конвейера.

11. Краткий итог

Логика конвейера объединяет несколько базовых тем: TRUE/FALSE, AND, OR, NOT, самоподхват и разрешающие условия.

Conveyor_Enable = (Start_Button OR previous_Conveyor_Enable) AND NOT Stop_Button AND Safety_OK Motor_Run = Conveyor_Enable AND NOT Product_Stop_Sensor

В более сложных схемах к этой логике добавляют датчики наличия детали, сигналы готовности соседних механизмов, таймеры, аварии и режимы работы.

Важно разделять простую учебную модель и реальную промышленную систему. Учебная схема помогает понять принцип, но реальное оборудование требует дополнительной проверки безопасности и аппаратных цепей защиты.

Практический блок

Откройте связанный пример в редакторе, запустите симуляцию и повторите упражнение из статьи. JSON можно скачать отдельно для просмотра или переноса.