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

Урок 12

Блокировка двух направлений

Как запретить одновременное включение двух взаимоисключающих команд.

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

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

Блокировка двух направлений - это логика, которая не позволяет одновременно включить две противоположные команды.

Типичный пример: механизм может двигаться вверх или вниз, но не должен двигаться вверх и вниз одновременно.

нельзя: Move_Up = TRUE и Move_Down = TRUE одновременно можно: Move_Up = TRUE, Move_Down = FALSE можно: Move_Up = FALSE, Move_Down = TRUE можно: оба FALSE, механизм стоит

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

  • движение вверх/вниз;
  • движение вперед/назад;
  • открыть/закрыть дверь;
  • вращение по часовой/против часовой стрелки;
  • выдвинуть/задвинуть цилиндр;
  • подъем/опускание платформы.

Такая блокировка защищает программу от противоречивых команд и делает поведение механизма предсказуемым.

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

СигналТипНазначение
Up_Buttonвходкоманда движения вверх
Down_Buttonвходкоманда движения вниз
Safety_OKвходразрешение работы
Move_Upвыходвключить движение вверх
Move_Downвыходвключить движение вниз

В учебной схеме будем считать, что Safety_OK = TRUE означает разрешение движения.

В русском JSON подписи на холсте отличаются от обозначений формул: Up_Button — «Кнопка_Вверх», Down_Button — «Кнопка_Вниз», Safety_OK — «Безопасность», Move_Up — «Движение_Вверх», Move_Down — «Движение_Вниз».

4. Принцип взаимной блокировки

Для движения вверх нужно, чтобы была команда Up_Button и одновременно не было команды Down_Button.

Для движения вниз нужно, чтобы была команда Down_Button и одновременно не было команды Up_Button.

Move_Up = Up_Button AND NOT Down_Button AND Safety_OK Move_Down = Down_Button AND NOT Up_Button AND Safety_OK

Если оператор нажмет обе кнопки одновременно, оба выхода останутся FALSE.

5. FBD-схема

Упрощенная схема для движения вверх:

[Down_Button] -> [NOT] --. [Up_Button] ------------- +-- [AND] ---> [Move_Up] [Safety_OK] -------------'

Упрощенная схема для движения вниз:

[Up_Button] -> [NOT] ----. [Down_Button] ----------- +-- [AND] ---> [Move_Down] [Safety_OK] -------------'

Каждое направление проверяет отсутствие противоположной команды.

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

Up_ButtonDown_ButtonSafety_OKMove_UpMove_Down
FALSEFALSETRUEFALSEFALSE
TRUEFALSETRUETRUEFALSE
FALSETRUETRUEFALSETRUE
TRUETRUETRUEFALSEFALSE
TRUEFALSEFALSEFALSEFALSE
FALSETRUEFALSEFALSEFALSE

Четвертая строка показывает важный случай: если одновременно активны Up_Button и Down_Button, оба выхода выключены.

7. Вариант с приоритетом

Иногда в программе задают приоритет одного направления. Например, если одновременно нажаты Up и Down, разрешать только Stop или только одно выбранное направление.

Для начального обучения проще и безопаснее использовать вариант без приоритета: при конфликте команд оба выхода выключены.

оба направления запрошены одновременно -> Move_Up = FALSE и Move_Down = FALSE

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

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

В учебном симуляторе рассматривается логическая часть: как правильно сформировать выходы программы, чтобы они не стали TRUE одновременно.

9. Расширение схемы

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

Move_Up = Up_Button AND NOT Down_Button AND Safety_OK AND NOT Top_Limit Move_Down = Down_Button AND NOT Up_Button AND Safety_OK AND NOT Bottom_Limit

Top_Limit запрещает движение вверх, если верхнее положение уже достигнуто. Bottom_Limit запрещает движение вниз, если нижнее положение уже достигнуто.

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

Откройте основной пример урока и запустите симуляцию. Ориентируйтесь на русские подписи элементов из раздела 3.

  • Установите «Безопасность» = TRUE, оставив обе кнопки FALSE.
  • Включите «Кнопка_Вверх»: «Движение_Вверх» = TRUE, «Движение_Вниз» = FALSE.
  • Выключите «Кнопка_Вверх», затем включите «Кнопка_Вниз»: «Движение_Вниз» = TRUE, «Движение_Вверх» = FALSE.
  • Включите обе кнопки одновременно и проверьте, что оба выхода FALSE.
  • Установите «Безопасность» = FALSE и убедитесь, что движение запрещено при любом сочетании кнопок.

После каждого изменения дождитесь следующего скана в запущенной симуляции. Кнопка «Связанный пример» загружает другую схему блокировки двух механизмов; названия её сигналов отличаются от основного примера урока.

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

Блокировка двух направлений запрещает одновременное включение противоположных выходов.

Move_Up = Up_Button AND NOT Down_Button AND Safety_OK Move_Down = Down_Button AND NOT Up_Button AND Safety_OK

Такую логику применяют для механизмов с противоположными командами: вверх/вниз, вперед/назад, открыть/закрыть.

12. Следующий урок

Следующий материал: Логика конвейера.

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

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

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