СТАБУР
Образование· 10 мин чтения

Плавное изменение задания в программе ПЛК

Как задавать рампу в ПЛК: темп в единицах за секунду, разные направления, смена цели, реальный интервал, пауза и восстановление после запуска.

Оператор меняет задание температуры с 40 до 70 градусов, но процесс должен выходить на новый режим постепенно. В программу добавляют «прибавлять понемногу каждый цикл». На стенде получается нужный темп, а после изменения периода задачи скорость разгона становится другой.

Разберём рампу с явными единицами времени, сменой цели и состояниями запуска. Это не фильтрация измерения и не встроенная рампа частотного преобразователя. Плавное задание в ПЛК является самостоятельным звеном, поведение которого нужно согласовать с регулятором и операторским интерфейсом.

Короткий ответ

Рампа ограничивает скорость изменения выходного задания, обычно в физических единицах за секунду. На каждом шаге допустимое приращение равно темпу, умноженному на прошедшее время, а результат ограничивается текущей целью без перескока. Для роста и снижения можно задать разные темпы. Отдельно определяют начальное значение, паузу, смену цели и реакцию после перезапуска. Семантику готового библиотечного блока проверяют по его версии, особенно параметры времени и RESET.

Какие значения должны быть раздельными

В программе нужны как минимум целевое задание оператора и текущее задание после рампы. Если записывать промежуточное значение обратно в поле цели, оператор потеряет собственную команду, а алгоритм может перестать понимать, куда двигаться. Названия переменных должны отражать эти два разных смысла.

Регулятор получает текущее ограниченное задание. Интерфейс показывает и его, и конечную цель, если они различаются. Тогда медленное изменение воспринимается как предусмотренный режим, а не как отказ принятия команды. Дополнительно полезны признаки «идёт рампа», «пауза» и «цель достигнута» с определённым допуском.

Фактическая температура или скорость остаётся третьим сигналом. Достижение цели рампой не означает, что процесс уже достиг нового режима. Это различие существенно для разрешения следующего технологического шага: переход следует привязывать к нужному физическому условию, а не к окончанию арифметического изменения.

Пределы цели проверяют до расчёта движения. Если оператор ввёл недопустимую температуру, рампа не должна медленно вести к ней только потому, что изменение плавное. Допустимые диапазоны и разрешения процесса являются отдельной логикой, применяемой в установленном проектом порядке.

Формула шага и условный пример

Пусть y является текущим выходом рампы, x целью, r скоростью роста, а dt фактическим интервалом в секундах. При x > y новое значение равно min(x, y + r·dt). При снижении используют max(x, y − rснижения·dt). Когда цель достигнута, выход остаётся на ней.

Возьмём условный рост от 40 до 70 °C с темпом 0,5 °C/с. Без пауз и дополнительных ограничений расчётное время составляет 60 с. При задаче 100 мс обычный шаг равен 0,05 °C. Если период станет 200 мс, приращение должно стать 0,1 °C, чтобы физический темп сохранился.

Приращение фиксированного размера за вызов задаёт скорость в единицах на вызов. Это тоже возможный режим, но он зависит от планирования задачи и числа фактических вызовов. Его нельзя подписывать на экране как градусы в секунду без преобразования и гарантии соответствующего периода.

Последний шаг ограничивают целью. Например, если до неё осталось 0,02 °C, а разрешённое приращение равно 0,05 °C, выход должен перейти точно к цели, а не перескочить и начать колебаться. Для вещественных чисел критерий достижения задают с подходящим допуском, согласованным с масштабом величины.

Фактическое время и задержка задачи

Использование измеренного dt сохраняет средний темп при небольшом джиттере. Но очень большой интервал после остановки задачи создаст большой разрешённый шаг. Поэтому для длительных пауз нужно отдельное правило: продолжить по времени, ограничить шаг или считать работу приостановленной.

Нельзя выбирать это правило только по удобству кода. Если процесс требует медленного нагрева именно во время реальной работы, догоняющий скачок после паузы может нарушить требование. Если рампа описывает календарную траекторию, наоборот, потерянное время может требовать другого поведения. Смысл задаёт технология.

При расчёте dt используют подходящий монотонный источник времени, если он доступен в среде. Коррекция часов календаря не должна внезапно давать отрицательный интервал или огромное приращение. Тип данных, переполнение счётчика и единицы времени проверяют по документации платформы.

Значения темпа тоже валидируют. Отрицательная скорость роста, нулевое время или нечисловой вход должны иметь определённую обработку. Ноль может означать остановку движения или запрещённую настройку, но это значение должно быть явно описано, иначе оператор и программист будут ожидать разное.

Событие Что требуется определить Нежелательный результат без правила
Новая цель по ходу движения Продолжение от текущего выхода Скачок к старой начальной точке
Пауза Удержание или иной режим Догоняющий скачок после возобновления
Холодный запуск Источник начального значения Выход из случайного или нулевого состояния
Смена периода задачи Учёт времени Другой физический темп
Потеря измерения Зависимость и разрешение движения Переход при недостоверном процессе
Аварийное ограничение Приоритет защитного действия Задержка необходимой реакции рампой

Смена цели и разные направления

Если новая цель находится дальше по ходу текущего движения, рампа обычно продолжает от текущего выхода. Если цель оказалась между текущим выходом и старой целью, движение заканчивается раньше. Если цель перешла на другую сторону, направление изменяется по определённому правилу без повторной инициализации.

Для некоторых процессов требуется ограничивать не только скорость, но и ускорение изменения задания. Простая линейная рампа меняет наклон мгновенно при смене направления. Если это недопустимо для механики или процесса, нужен другой профиль, а не дополнительные случайные задержки вокруг обычного ограничителя темпа.

Разные темпы роста и снижения часто технологически оправданы. Ёмкость можно нагревать медленно, но снижать задание быстрее, либо наоборот. Числа задают в одинаковых физических единицах и проверяют обе ветви отдельно. Названия ASCEND и DESCEND библиотечного блока ещё не объясняют политику при смене режима.

Если оператор меняет темп во время движения, нужно решить, действует ли новая настройка сразу или со следующего этапа. Немедленное применение обычно понятно, но может противоречить рецептурному процессу. Изменение параметра следует журналировать так же, как изменение цели, если от него зависит качество продукта.

Пауза, запуск и библиотечный RESET

Начальное значение можно брать из сохранённого состояния, текущего задания регулятора или измерения, но у каждого варианта есть условия. Измерение должно быть достоверным, сохранённое значение актуальным, а задание регулятора соответствовать выбранному режиму. Универсального правильного начального нуля нет.

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

В документации CODESYS RAMP_REAL параметр TIMEBASE различает приращение за вызов и приращение за интервал времени. RESET у описанного блока останавливает изменение с удержанием последнего OUT; он не означает безусловную установку нуля. Эти сведения относятся к указанному библиотечному блоку, а не ко всем одноимённым реализациям.

Поэтому готовый блок сначала проверяют небольшим стендовым сценарием: рост, снижение, смена цели, RESET и возобновление. Версию библиотеки фиксируют в проекте. Собственное имя входа «сброс» не должно скрывать другую фактическую семантику библиотечного параметра.

Согласование с регулятором и приводом

Рампа задания не ограничивает автоматически выход ПИД. При большом возмущении регулятор всё ещё может быстро изменить воздействие, даже если задание постоянно. Если требуется ограничение мощности или скорости клапана, это отдельное звено с учётом насыщения и состояния интегратора.

У частотного преобразователя может быть собственная рампа скорости. Две последовательные рампы создают траекторию, отличающуюся от каждой по отдельности. ПЛК может считать, что задание уже достигнуто, пока привод ещё продолжает разгон. Поэтому интерфейс должен различать цель ПЛК и фактическую скорость.

Защитные действия не следует безусловно пропускать через обычную медленную рампу. Если требуется немедленное ограничение или предусмотренный безопасный останов, его порядок определяется проектом. Плавность технологического перехода не является основанием задерживать действие независимых защит.

Приёмка включает не только плавный график y, но и реакцию реального контура. Изменение задания может идти по плану, а температура отставать из-за недостаточной мощности. Следующий этап разрешают по нужным условиям процесса и качеству измерения, а не только по внутреннему флагу рампы.

Проверка траектории в нескольких временных режимах

Для теста используют одинаковую начальную точку, цель и физический темп, меняя только период вызова. Время достижения должно оставаться одинаковым в пределах разрешения расчёта, если режим задан в единицах за секунду. Если оно пропорционально числу вызовов, алгоритм фактически работает в другой системе единиц. Такой небольшой тест выявляет ошибку раньше подключения реального нагревателя или привода.

Отдельно вводят единичную задержку задачи. Для неё заранее определяют ожидаемую реакцию: ограниченный шаг, остановка или продолжение по прошедшему времени. Нельзя оценить результат без этого правила. Большой шаг может быть математически правильным для календарной траектории и одновременно недопустимым для ограничения скорости технологического воздействия.

Тест смены цели проводят до достижения старой. Например, при движении от сорока к семидесяти цель меняют на пятьдесят, а затем на тридцать. Выход должен продолжать от своего текущего значения по выбранной политике, а не перескакивать к началу предыдущего участка. Для разных темпов вверх и вниз время каждого участка проверяют отдельно.

Границы задания и рецепт

Если рецепт состоит из нескольких ступеней, рампа является лишь частью последовательности. После достижения текущего задания может требоваться выдержка, подтверждение температуры или согласование с другим аппаратом. Время выдержки нельзя автоматически запускать по окончании расчётной рампы, если технология требует выдерживать уже достигнутый физический режим.

При изменении рецепта в ходе выполнения определяют, какие параметры разрешено менять немедленно. Новая конечная цель, темп и длительность выдержки имеют разные последствия. Удобно сохранять активную копию параметров этапа и явно фиксировать момент её обновления. Иначе редактирование экрана способно незаметно изменить выполняемый процесс.

Для нескольких взаимосвязанных заданий независимые рампы не всегда сохраняют нужное соотношение. Если требуется согласованная траектория температуры и расхода, её описывают общим параметром времени или другой предусмотренной зависимостью. Простое ограничение каждого сигнала своим темпом может вывести процесс в промежуточное сочетание, которого рецепт не допускает.

Операторское подтверждение паузы должно соответствовать фактическому состоянию. Если команда уже принята, но рампа продолжает движение из-за порядка задач, это нужно исключить или ограничить документированным временем реакции. Проверка интерфейса включает момент передачи команды между задачами, а не только правильность формулы в одном блоке.

После сохранения и восстановления проекта полезно проверить привязку экземпляра блока. Случайное создание нового экземпляра вместо прежнего может заново инициализировать выход, даже если остальные параметры сохранены. Источник начального состояния должен быть очевиден из кода и описания режима запуска, чтобы обновление программы не меняло траекторию неожиданно.

Для журнала изменений полезно фиксировать не каждое промежуточное значение, а принятую цель, темп и событие паузы или возобновления. Эти данные позволяют восстановить ожидаемую траекторию и сравнить её с трендом. Если записать только конечную цель, позднее будет трудно объяснить, почему два одинаковых перехода заняли разное время после вмешательства оператора.


Вопросы при работе

Можно ли заменить рампу фильтром первого порядка?

Фильтр приближается к цели по экспоненциальному закону и не задаёт постоянный максимальный темп тем же способом. Для некоторых задач он подходит, но время достижения и начальная скорость будут другими. Выбор делают по требованию к траектории.

Нужно ли хранить состояние после отключения?

Только если это предусмотрено сценарием восстановления. Сохранённое число проверяют вместе с состоянием оборудования и рецепта. Сам факт записи в энергонезависимую память не делает продолжение старого режима допустимым.

Почему рампа идёт быстрее после обновления проекта?

Проверяют период задачи, число вызовов блока и единицы TIMEBASE. Возможно, скорость задавалась за вызов, а не за секунду. Также сравнивают версию библиотеки и начальное состояние блока.

Что показывать оператору?

Конечную цель, текущее задание после рампы и фактическую величину процесса. Если есть пауза или ограничение, его причину показывают явно. Это позволяет отличить предусмотренный переход от недостижения задания.

Документация и источники

TOPICS • ТЕМЫ#рампа ПЛК#плавное задание#скорость изменения#RAMP_REAL#ограничение темпа