
Сообщение от
porada
>> существует ли возможность однократного исполнения какого-либо функционального блока?
Конечно, существует. Оформляется по разному в зависимости от языка:
ST:
R_TRIG(CLK:=%IX4,0);
IF R_TRIG.Q THEN
myPID(***:=***, ***:=***, ... );
END_IF
CFC:
щелчок правой мышкой на FB, выбрать "EN/ENO" из меню
LD:
щелчок правой мышкой на цепи, выбрать "Элемент с EN" из меню, заменить имя FB на myPID
IL:
CAL R_TRIG1 (CLK:=%IX4.0)
LD R_TRIG1.Q
CALC myPID(***:=***, ***:=***, ... )
>> штатный функциональный блок PID не выставляет флаг "Завершена автонастройка",
о каком FB PID идет речь? Т.к. у "штатного" FB PID (Util.lib: made in 3S) никаких автонастроек нет.
Кстати эта Util.lib не запаролена, можно открыть ее в Кодесисе 2.3 и обозреть все присутствующие грабли в ее внутренностях. В Кодесисе 3.5 к сожалению это уже Util.compiled-library-ge33 и фиг че увидишь, но судя по сохранившемуся интерфейсу, на 99% можно полагать, что там все по прежнему.
IMHO, ПИД-регулятор нужен только для улучшения динамических параметров ПИ-регулятора, его матмодель предназначена для оперирования в диапазоне ± бесконечность на входе и ± бесконечность на выходе. В реальном мире ПИД-регулятор никогда не имеет бесконечных диапазонов на входе и выходе, плюс всегда имеем дискретность \ квантование измерений его вх.\вых., что приводит к тому, что без "костылей", как-то компенсирующих эти несоответствия от него будет мало пользы.
Т.е. если Вы не собираетесь улучшать динамические параметры ПИ-регулятора, то может и не стоит разбираться со всеми нюансами конкретной реализации PID? К сожалению в поставке Кодесис нет отдельного ПИ-регулятора, но он есть в Oscat.de библиотеках в исходниках.