Structured Text, условия и экземпляры функциональных блоков
Цель: Читать простой ST-код и отличать вычисление функции от блока с памятью.
4 акад. ч. Лекция, работа с документацией, практическое задание на учебной модели или согласованном стенде и самопроверка.
Присваивание и ветвление
В ST оператор := присваивает значение; сравнение равенства обычно записывается =. Условие IF выбирает действия по логическому выражению. CASE удобно связывает разные целочисленные состояния с отдельными ветвями. Типы, границы массивов, правила преобразования и поддерживаемые расширения уточняют по среде.
IF Stop OR Fault THEN
RunRequest := FALSE;
ELSIF Start AND Ready THEN
RunRequest := TRUE;
END_IF;
RunCommand := RunRequest AND Ready AND NOT Fault;В этом учебном фрагменте обычный Stop и Fault имеют приоритет над Start. Код не описывает аварийный останов и не является готовой программой безопасности. При недостающих ветвях переменная может сохранить старое значение; это бывает как намеренной памятью, так и ошибкой.
Функция и функциональный блок
Функция прежде всего вычисляет результат по аргументам в рамках определённых правил. Функциональный блок имеет экземпляр со своими внутренними данными. Для двух независимых таймеров нужны два экземпляра, иначе события начнут пользоваться общей историей. Создать экземпляр недостаточно: его нужно вызывать в нужной задаче с правильными входами.
Интерфейсы блока делают понятными: входное задание, измерение, разрешения, состояние, команда и диагностика. Не следует скрыто изменять удалённые глобальные переменные из каждого блока — так сложнее проследить причину воздействия и выполнить отдельное испытание.
Порядок выполнения
Последовательность строк имеет значение. Если переменная присваивается дважды за вызов, более поздняя операция может изменить результат предыдущей. Ветка IF с TRUE не останавливает всю задачу после END_IF. Поэтому выходной запрет, записанный раньше несогласованного пуска ниже, может быть перезаписан.
Практическое задание
В среде разработки создайте фрагмент с IF и таблицей из четырёх состояний CASE. Для каждого перехода запишите ожидаемый результат. Найдите две разные ошибки: пропущенное присваивание в требуемой ветви и перезапись выхода ниже по программе. Затем выделите логику двух механизмов в независимые экземпляры. Проверка компиляции и моделирование нужны до любых действий с реальным оборудованием.
Что нужно запомнить
- Присваивание и сравнение — разные операции.
- Экземпляр функционального блока хранит собственное состояние.
- Последовательность операторов влияет на итоговые значения.