西门子DP数据总线连接器代理商
PLC控制器本身的硬件采用积木式结构,有板,数字I/O模板,模拟I/O模板,还有特殊的模板,条形码识别模板等模块,用户可以根据需要采用在板上扩展或者利用总线技术配备远程I/O从站的方法来得到想要的I/O数量
手动/自动切换
FB58的手动/自动切换是通过参数MAN_ON来完成的,在MAN_ON为True的时候,PID处在手动工作状态,此时,手动值通过参数MAN给出。
图8 控制输出
默认情况下,LMN_HLM和LMN_LLM分别是100.0和0.0,从上图中可以看出,手动值的有效数值范围也应该是0.0~100.0。
在参数MAN_ON为False的情况下,PID投入运行,控制回路处于自动工作状态。
为了降低手动/自动切换过程中扰动,算法通过如下措施来实现无扰切换:
- 在自动的状态下,比例和积分的运算结果之和会写入到单元MAN中,这样在由自动切换到手动的过程中不会引起控制输出波动;
-在手动的状态下,积分项的输出等于MAN的值减去比例项的值(偏差ER*增益Gain),而在自动状态中,积分项是一个累计的结果,这样在切换到自动状态时积分项不会有太大的突变。
从上面的分析可以知道,FB58已经集成了相应的无扰切换的功能,不需要编写额外的程序来实现。
2.5 保存和重新装载参数
保存和重新装载控制器参数是FB58中的新功能,主要用来实现在多套参数之间的切换。
图9 控制参数保存和重新装载
从上图中可以看出,控制参数的处理有三种方式:
(1)从PID_CON/PI_CON中装载
要实现此装载,必须满足如下几种条件:
手动控制状态(MAN_ON=True);
PID_CON.GAIN或者PI_CON.GAIN不为0;
LOAD_PID为1
如果参数PID_ON为1,则从PID_CON中装载如下参数:
GAIN、TI、TD,并计算CONZONE=250.0/GAIN
如果参数PID_ON为0,则从PI_CON中装载如下参数:
GAIN、TI、TD,并计算CONZONE=250.0/GAIN。特殊地,此时会关闭控制带功能,即设置CON_ZONE参数为0,并让微分参数TD设置为0.0。
装载完成之后,参数LOAD_PID会自动复位。
如果PID_CON中保存的增益参数PID_CON.GAIN为0,则自动会修改PID_ON为0,并转而从PI_CON中获取参数。
注:PID_CON/PI_CON中的参数来自于自整定过程。
(2)保存参数
保存参数可以在任何工作状态下进行,只需设置参数SAVE_PAR为1即可。可以将如下参数保存找PAR_SAVE结构体中:
PFAC_SP、GAIN、TI、TD、D_F、CONZ_ON、CON_ZONE
在保存结束之后,参数位SAVE_PAR会自动复位。
(3)重新装载参数
重新装载是“保存参数"的逆过程,但其执行是需要条件的:
PAR_SAVE.GAIN不为0;
参数UNDO_PAR为1。
在重新装载完成之后,参数UNDO_PAR会自动复位。
3 功能
3.1 控制带
温度控制回路是一个有明显滞后特性的对象,这给实际的调节过程带来了很多的问题,显著的困难就是在过程值偏离设定值较大时,调节过程过于缓慢,而在接近设定值时容易出现较大的超调。
从上述的两个问题出发,PID应该满足这样的功能:
- 在偏差超过一定的范围时,PID输出或者小的调节量,让温度值快速回到一个小的范围中,以缩短回路的调节时间;
- 在设定值附近时,越靠近调节量变化越小,以防止超调。
为此,FB58提供了一个“控制带(Control Zone)"功能,其工作原理是这样的:
- 当过程值PV大于设定值SP_INT,且偏差的值超过CON_ZONE,则以输出下限LMN_LLM作为输出值;
- 当过程值PV小于设定值SP_INT,且偏差的值超过CON_ZONE,则以输出上限LMN_HLM作为输出值;
- 如果偏差的值小于CON_ZONE,则以实际PID的计算结果作为输出值。
图10 控制带(正作用情况下,即GAIN>0.0)
默认参数中LMN_LLM是0.0,LMN_HLM是100.0,控制带使能位CONZ_ON是False,控制带范围是100.0。
如上图所示的控制带解决了在偏差较大时PID调节过于缓慢的问题,但在控制带范围中要避免因大滞后导致的超调,需要弱化PID的输出,要实现这个功能,可以通过降低比例参数和增加微分作用。在同样的偏差情况下,比例增益越小,PID输出变化越缓慢。微分作用简单来看就是通过偏差的变化量来调节,在接近设定值的过程中,温度变化速度在逐步变慢,此时的微分作用可以起到弱化控制输出的功能,进而达到减少超调的目的。推荐控制带在有微分作用的前提下使用。参数装载的过程也体现了这一点:
- 如果是装载PI_CON下的参数,因为没有微分功能,会设置CONZ_ON为False。
在使用过程中,控制带参数CON_ZONE应该始终设置为一个大于等于0.0的值,否则会导致PID运算结果永远不会被执行的故障现象