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_Button | Down_Button | Safety_OK | Move_Up | Move_Down |
|---|---|---|---|---|
| FALSE | FALSE | TRUE | FALSE | FALSE |
| TRUE | FALSE | TRUE | TRUE | FALSE |
| FALSE | TRUE | TRUE | FALSE | TRUE |
| TRUE | TRUE | TRUE | FALSE | FALSE |
| TRUE | FALSE | FALSE | FALSE | FALSE |
| FALSE | TRUE | FALSE | FALSE | FALSE |
Четвертая строка показывает важный случай: если одновременно активны 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. Следующий урок
Следующий материал: Логика конвейера.
В нем будет разобрана более практическая схема запуска конвейера с кнопками, разрешениями и аварийным запретом.
Practice block
Open the related example in the editor, run the simulation, and repeat the exercise from the article. The JSON is also available as a direct download.