CASE значение eState будет прочитано снова, и тогда будет выбрана ветка:WORKING:
Для циклической программы ПЛК это обычно означает переход к новой логике на следующем цикле задачи.
━━━━━━━━━━━━━━━━━━
✅ Почему ENUM лучше набора чисел?
Можно было бы написать:
iState := 0;
iState := 10;
iState := 20;
iState := 30;
Но что означает:
iState = 20?Без дополнительного описания — непонятно.
А:
eState = WORKING
читается сразу.
Именно поэтому для состояний удобно использовать
ENUM.━━━━━━━━━━━━━━━━━━
🔧 Диагностика тоже становится проще
Если механизм остановился и оператор сообщает:
«Почему он не продолжает работу?»
в онлайн-режиме можно посмотреть:
eState = STARTING
После этого понятно:
алгоритм ждёт условия перехода из
STARTING.В нашем случае первым делом стоит проверить:
xSensorЭто значительно удобнее, чем искать комбинацию из нескольких:
xStep1, xStep2, xStep3...━━━━━━━━━━━━━━━━━━
🏗 Где такой подход особенно полезен?
ENUM + CASE хорошо подходит для:• последовательностей запуска оборудования
• пошаговых технологических процессов
• дозирования
• промывки
• продувки
• перемещения механизмов
• автоматических циклов
• управления режимами
• конечных автоматов
• процедур запуска и останова
━━━━━━━━━━━━━━━━━━
⚠️ Но CASE — не замена каждому IF
Не нужно превращать вообще всю программу в одну гигантскую машину состояний.
Если необходимо просто проверить условие:
IF rTemperature > 90.0 THEN
xHighTemp := TRUE;
END_IF;
обычный
IF прекрасно подходит.CASE особенно полезен тогда, когда есть:состояния → условия перехода → следующее состояние.
━━━━━━━━━━━━━━━━━━
💡 Главная мысль
IF отвечает на вопрос:«Выполняется ли условие?»
А связка:
ENUM + CASE
помогает описать:
«В каком состоянии находится алгоритм и куда он должен перейти дальше?»
Для небольшого кода разница может быть незаметна.
Но в большом промышленном проекте понятная структура программы сильно упрощает:
• разработку
• ПНР
• диагностику
• сопровождение
• последующую доработку
Хороший код должен быть понятен не только ПЛК, но и инженеру, который откроет проект через год.
━━━━━━━━━━━━━━━━━━
💬 А как вы строите пошаговые алгоритмы?
Используете
CASE, отдельные BOOL для каждого шага или свой шаблон машины состояний?📤 Если статья оказалась полезной — отправьте её другу или коллеге, который работает с CODESYS и ПЛК.
🔁 Можно также репостнуть материал в профильный чат или канал — так о наших технических разборах узнает больше инженеров.
#CODESYS #ПЛК #АСУТП #StructuredText #ST #CASE #ENUM #ПрограммированиеПЛК