一般来说,PID运算都是放在控制器里运算,如果放在上位机上运算,一旦通信中断就会失控;
但是,既然有软PLC这种东西,那么,把PID运算放在上位机就不能算作创新(或者说标新立异)。S7-200smart的PLC回路被限制在8路(为什么是8路?这个很让人联想到八路军的呀!)……
好了,引子就到这里,下面是用VBS编写的一段PID程序,使用时可以将形参换成实参(即外部变量),再以100ms周期触发一次该脚本运行:
Dim MPn,Kc,SPn,PVn,MIn,TS,TI,MDn,TD,EVn,EVn0,Mn
'定义PID比例项输出MPn
'定义PID设定值SPn
'定义过程值PVn
'定义误差EVn
'定义上次周期的误差EVn0
'定义P参数Kc
'定义扫描周期TS
'定义积分时间TI
'定义微分时间TD
'定义积分项MIn
'定义微分项MDn
'定义PID输出Mn
EVn=SPn-PVn
MPn=Kc*EVn
MDn=Kc*TD/TS*(EVn-EVn0)
EVn0=EVn
If TI<>0 And Mn>0 And Mn<100 Then '积分运算冻结
MIn=Kc*TS/TI*EVn+MIn
End If
Mn=MPn+MDn+MIn'合并多项式
If Mn>100 Then
Mn=100'输出标准化处理
MIn=100-MPn
End If
If Mn<0 Then
Mn=0 '输出标准化处理
MIn=0
End If