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

Урок 12

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

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

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 означает разрешение движения.

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. Практика в симуляторе

Откройте пример блокировки двух направлений в редакторе PLC Portal.

1. Установите Safety_OK = TRUE.

2. Включите Up_Button и проверьте, что Move_Up = TRUE, Move_Down = FALSE.

3. Выключите Up_Button.

4. Включите Down_Button и проверьте, что Move_Down = TRUE, Move_Up = FALSE.

5. Включите Up_Button и Down_Button одновременно.

6. Проверьте, что оба выхода FALSE.

7. Установите Safety_OK = 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 можно скачать отдельно для просмотра или переноса.