PDA

Просмотр полной версии : Включение и выключение APID_PWM



Алексей Н.
25.10.2025, 15:23
Приветствую.

Разбираюсь с ПИД регуляторами, осваиваю APID_PWM.

Видео и пример. Заметил интересный момент - есть различия в ФБ APID_PWM для CFC и ST. В реализации для CFC есть вход "EN", а для ST - нет.
Есть какие-то рекомендации, как остановить/включить/выключить ПИД-регулятор? Или исключительно манипуляциями с уставкой? Я пока только такой вариант "смог". Не очень удобно.

Target 3.5.17.33
библиотеки все обновлённые, контроллер новый СПК210

kondor3000
25.10.2025, 15:34
Разбираюсь с ПИД регуляторами, осваиваю APID_PWM.
Видео и пример. Заметил интересный момент - есть различия в ФБ APID_PWM для CFC и ST. В реализации для CFC есть вход "EN", а для ST - нет.
Есть какие-то рекомендации, как остановить/включить/выключить ПИД-регулятор? Или исключительно манипуляциями с уставкой? Я пока только такой вариант "смог". Не очень удобно.


В CFC вход "EN" можно добавить в любой блок.
На ST это делается добавлением 2 строк

IF Enable THEN
" Вызов блока" ;
END_IF
Или вызов блока вне IF...... THEN (особенно для таймеров, например TON1(); ), с вариантами подачи на вход нужных переменных,
типа TON1.IN:=TRUE; или например TON1.IN:=NOT TON1.Q;

Алексей Н.
25.10.2025, 17:12
Да, по сути, так и реализовано.
НО!
После того, как условие для вызова становится FALSE, на выходе продолжает висеть последнее значение и ПИД продолжает управлять рулить с последней указанной ему уставкой...

kondor3000
25.10.2025, 17:43
Да, по сути, так и реализовано.
НО!
После того, как условие для вызова становится FALSE, на выходе продолжает висеть последнее значение и ПИД продолжает управлять рулить с последней указанной ему уставкой...

Второй вариант читали?
Вынесете вызов блока из IF...... THEN, по включению Enable, режим Авто,
по ELSE переход в ручной режим, с установкой нужного выхода.
Сделать можно как угодно.

Алексей Н.
25.10.2025, 17:53
Да, читал :)
Я и спрашиваю о том, что по сути, этот момент нужно самостоятельно контролировать?
К варианту перевода в ручной режим и "0" значение на выход, либо оформить переменную для записи в канал управления через функцию SEL, например: rOut := SEL(Enable, 0, FBAPID.Y)

Весь вопрос сводится именно к этому - в реализации на ST вход EN отсутствует и процесс нужно брать в свои руки.

Теперь всё ясно :)

Спасибо!

Алексей Н.
25.10.2025, 18:11
И ещё вопрос по автонастройке - по документации настройка происходит на уровне

(SP-PV_0)*0.8+PV_0

У меня же управляющий сигнал стал 0 только после того, как PV "перелетел" через уставку SP на некоторое значение, которое даже больше зоны нечувствительности. Т.е. я настраивался (печка) на температуре 120 градусов. Сигнал стал 0 только когда температура превысила 123 градуса. Это нормально и документация чуток не догоняет реализацию?

kondor3000
25.10.2025, 18:28
И ещё вопрос по автонастройке - по документации настройка происходит на уровне

(SP-PV_0)*0.8+PV_0

У меня же управляющий сигнал стал 0 только после того, как PV "перелетел" через уставку SP на некоторое значение, которое даже больше зоны нечувствительности. Т.е. я настраивался (печка) на температуре 120 градусов. Сигнал стал 0 только когда температура превысила 123 градуса. Это нормально и документация чуток не догоняет реализацию?

Превысила на 3 градуса? При автонастройке это нормально для всех ПИД

Алексей Н.
25.10.2025, 19:08
Это ладно, в принципе - это настройка. А то, что по мануалу эти колебания должны происходить ниже уровня уставки?
(120-25)*0.8+25=101, как быть с этой цифрой? Колебания автонастройки должны ведь колебаться вокруг этого значения?
А по окончании - регулятор переходит непосредственно на уставку. Как-то у меня не так всё проходит, как в описании.

Алексей Н.
25.10.2025, 19:10
Превысила на 3 градуса? При автонастройке это нормально для всех ПИД

Речь не о том, что непосредственно превысила, а о том, что происходит гарантированное перерегулирование. Т.е. регулятор держит выход на 100% мощности даже тогда, когда уже перевалил через уставку.

kondor3000
25.10.2025, 19:16
Речь не о том, что непосредственно превысила, а о том, что происходит гарантированное перерегулирование. Т.е. регулятор держит выход на 100% мощности даже тогда, когда уже перевалил через уставку.

Все блоки ПИД при автонастройке, должны пройти 1-2 цикла, от меньше уставки до больше уставки,
обычно это зона нечувствительности (около 2 градусов) +1 градус, то есть от 117 до 123, до переключения на 123 идёт 100 % мощности.
Что там за формула, надо узнавать у разработчиков.

Алексей Н.
27.10.2025, 11:35
Спасибо.
Всё настроилось и заработало. Держит температуру хорошо.
Единственное наблюдение, которое немного расстраивает в душе - это небольшой перебег в начале нагрева - градуса полтора. Чисто технически в моём случае - не страшно. Но, я почему-то считал, что температура должна "подкрадываться" к уставке. По крайней мере то железо, которое стояло "до меня", работало, как мне помнится, именно так.
Возможно ли это поднастроить?

kondor3000
27.10.2025, 11:38
Спасибо.
Всё настроилось и заработало. Держит температуру хорошо.
Единственное наблюдение, которое немного расстраивает в душе - это небольшой перебег в начале нагрева - градуса полтора. Чисто технически в моём случае - не страшно. Но, я почему-то считал, что температура должна "подкрадываться" к уставке. По крайней мере то железо, которое стояло "до меня", работало, как мне помнится, именно так.
Возможно ли это поднастроить?

Посмотрите график зависимости от коэффициентов, https://commons.wikimedia.org/wiki/File:PID_Compensation_Animated.gif?uselang=ru
вам надо подстроить Kd и Ki, хотя небольшой перебег в начале, это нормально,
важно как регулирует дальше, а не в начале.

Алексей Н.
27.10.2025, 12:17
Посмотрите график зависимости от коэффициентов, https://commons.wikimedia.org/wiki/File:PID_Compensation_Animated.gif?uselang=ru
вам надо подстроить Kd и Ki, хотя небольшой перебег в начале, это нормально,
важно как регулирует дальше, а не в начале.

Супер, спасибо!
Офигенно наглядно! Теперь хоть выстроилось стройно происходящее.
Попробую пошаманить. Если б ОНО ещё и грелось не час до 120 градусов, а потом полтора остывало, было бы ещё и удобно :) Хотя, полагаю, не самая убивающая нервы скорость нагрева/остывания :)