恭喜,你发布的帖子
发布于 2020-07-10 09:00:08
19楼
西门子的PID也支持无扰切换(超驰控制),单个PID的语句如下:
"PID_Compact".PIDCtrl.PIDInit := TRUE;
"PID_Compact".OverwriteInitialOutputValue := "PID_Compact".Output;
或者
"PID_Temp".PIDCtrl.PIDInit := TRUE;
"PID_Temp".OverwriteInitialOutputValue := "PID_Temp".PidOutputSum;
超驰控制并不等同于无扰动切换。
比如程序中限定积分项的范围(0-100%),积分项不是-100% - +100%,这个PID就不是所谓“三步法”,积分项超过0-100%这个边界,就停止积分运算,靠比例运算和微分运算迅速把过程值拉回来,这属于超驰控制的策略;
有时候靠一个传感器反馈过程值是不可靠的,传感器损坏或安装不到位导致反馈值并不真实,这时候需要两个或以上的传感器同时反馈过程值,程序中始终监控传感器的可靠性,一旦发现传感器异常,就切换到另一个通道,这种控制策略不能叫”冗余“,也是叫”超驰“。
我这个系统就是用到两个K型热电偶监控管路中同一点温度值,K型热电偶测温范围-200 -1372℃,当热电偶通道开路时显示温度值1372℃,而管路温度正常值绝不会超过700℃,那么,判断热电偶工作是否正常只需要监控两个K型热电偶数值是不是超过700以上即可:
PROGRAM MainFanCtr
VAR
PID1: PID;
ActualValue:REAL;
END_VAR
……
IF K1<1000 AND K2<1000 THEN (*1,以DOC后温度作为PID过程值; 2,若K1、K2正常,取大值作为过程*)
ActualValue:= MAX(K1,K2);
ELSE
ActualValue:= MIN(K1,K2);
END_IF;
IF HMI_AO0_I <0.1 THEN HMI_AO0_I :=0.1; END_IF; (*积分时间不可设置为0*)
PID1(
SPn:= ActualValue ,
……
)
请填写推广理由:
分享
只看
楼主