发表于:2009/9/11 11:19:36
#0楼
西门子s7-200系列plc能够进行pid控制。pid是闭环控制系统中比例-积分-微分控制算法,它可以看作是这三项之和,根据设定值与被控对象实际值的差值,按pid方式计算出控制输出量,使反馈跟随设定值变化。因此pid控制是负反馈闭环控制,其中比例项是增益(kc)与偏差的乘积,积分项与偏差的和成正比,而微分项与偏差的变化成正比。
pid控制功能是通过pid指令功能块实现的。在s7-200中,pid回路指令运用回路表中的输入信息和组态信息,进行pid运算,交换数据,编程极其简便,该指令影响特殊存储器标志位sm1.1 (溢出)。只有在逻辑堆栈栈顶值为1时,才能进行pid运算。本指令有两个操作数:tbl和loop(如下图所示)。其中tbl 是回路表的起始地址,操作数。
限用vb区,数据类型是byte型。loop 是回路号可以是 0 到 7 的整数,因此在程序中最多可以用 8 条pid 指令。如果有两个或两个以上的 pid 指令用了同一个回路号,即使这些指令的回路表不同,那么这些 pid 运算之间也会产生不可预料的结果。在直接使用pid 指令功能块之前,必须把增益(kc)、采样时间(ts)、积分时间(ti)、微分时间(td)等等这些实数全部转换成0.0-1.0之间的实数,以便pid 指令功能块接受,也就是说把外界实际物理量转换成pid 指令可以接收的数据,即输入/输出的转换与标准化处理。
pid控制编程:在本系统中,为了生产需求,锅炉内蒸汽压力应维持在0.85-1.0mpa之间,压力的大小由压力变送器检测,变送器压力量程0-2.5mpa,输出dc4-20ma。因此在0.85mpa时,相应的电流输出是9.44ma,同样1.0mpa时输出为10.4ma,其标准化刻度值如下图所示。
过程变量值是压力变送器检测的单极性模拟量,回路输出值也是一个单极性模拟量用来控制鼓风机的速度。这两个模拟量的范围是 0.0 -1.0 ,分辨率为1/32000 (标准化)。可以初步确定kc=0.06,ts=0.2,ti=10.0,在这里不用微分作用,程序编辑如下图。
程序上采用了主程序,子程序,中断程序的结构模式,程序清晰明了,大大缩短了周期扫描时间。
调试程序:选择pid的参数,以及相互间的配合,可以影响pid控制的稳定性。如采样时间过短对外部信号的变化有可能检测不到,而过长的采样时间显然不能满足控制精度的要求。又如过大的增益又会造成控制的震荡。在调试程序时要注意这些参数的设置,慢慢调试以至达到稳定的pid控制。
结束语:pid控制在闭环控制中有着重要的作用,这里以控制鼓风机的速度来保持锅炉内蒸汽压力的恒定为例子介绍pid控制。同样锅炉内负压的维持,也是类似与此,这里不在详细介绍。
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=100200&Name=liuguoxing
[此贴子已经被作者于2009-9-11 11:31:02编辑过]