想学一下增量式PID,谁能帮忙将下面S1200的库程序转换成S7 200或 smart200

http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=993316&b_id=50

想学一下增量式PID,谁能帮忙将下面S1200的库程序转换成S7 200或  smart200 。谢谢
Sv:REAL;//设定值
Pv:REAL;//采样值
Kp:REAL:=1.0;//比例系数
Ki:REAL:=0.01;//积分系数
Kd:REAL:=0.0;//微分系数
LimitHigh:REAL:=100.0;//输出最大值
LimitLow:REAL:=0;//输出最小值 
AM:BOOL;//手自动
MV:REAL;//手动值
SQ:REAL;//死区
Mode:BOOL;//正反作用选择
FF:REAL;//前馈信号
MAXE:REAL:=50;//积分分离阙值 

  以下程序


IF Mode = true THEN
e:=(Pv-Sv);
ELSE
e:=(Sv-Pv);

END_IF;
IF ABS(e)e:=0;
ELSIF ABS(e)>MAXE THEN 
B:=0.0;
ELSE b:=1.0;
END_IF;
IF AM=TRUE THEN
KP_V:=Kp*(e-e1);
KI_V:=B*Ki*e;
KD_V:=Kd*(e-2*e1+e2);
FF_LAST:=FF-FF_LAST1;
OutLast:=KP_V+KI_V+KD_V+FF_LAST+OutLast;
MV:=OUTLAST;
ELSE
OutLast:=MV;
SV:=PV;
END_IF;


IF OutLast>LimitHigh THEN
OutLast:=LimitHigh;
ELSIF OutLastOutLast:=LimitLow;
END_IF;
e2:=e1;
e1:=e;
FF_LAST:=FF;
FF_LAST1:=FF_LAST;
Out:=OutLast;

问题补充:
不会自己写,所以才要学这个

钻石用户推荐最佳答案

200PLC 的PID就是增量式PID 你没有必要写个,除非你想超过8个PID的限制. 200PLC自带向导生成的PID数量只有8个,你自己写PID那确实可以超过8个的。控制程序里面的PID都是离散式的PID。也就是和扫描周期有关系。从本质上来说,PID是当次、上次、上上次的偏差的加权平均值,对于增量和非增量的(阀位式的)的区别就在于输出结果 。阀位式的 将偏差进行PID运算得出结果直接作为输出。而增量式的是阀位式的当此和上次的阀位式输出之间的差值再加上此时的实际阀位的值得出的和作为输出值的。

提问者对于答案的评价:

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc291215.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月31日 上午12:44
下一篇 2020年10月31日 上午12:44

相关推荐