工控智汇

工控智汇

如何使用 西门子S7-200CPU 的 PID 控制

admin 31 94

第一部分、PID控制

PID算法在S7-200中的实现

调试PID控制器

主要参数是:

积分时间(IntegralTime):偏差值恒定时,积分时间决定了控制器输出的变化速率。积分时间越短,偏差得到的修正越快。过短的积分时间有可能造成不稳定。积分时间的长度相当于在阶跃给定下,增益为"1"的时候,输出的变化量与偏差值相等所需要的时间,也就是输出变化到二倍于初始阶跃偏差的时间。如果将积分时间设为最大值,则相当于没有积分作用。

常问问题

1、对于某个具体的PID控制项目,是否可能事先得知比较合适的参数?有没有相关的经验数据?

虽然有理论上计算PID参数的方法,但由于闭环调节的影响因素很多而不能全部在数学上精确地描述,计算出的数值往往没有什么实际意义。因此,除了实际调试获得参数外,没有什么可用的经验参数值存在。甚至对于两套看似一样的系统,都可能通过实际调试得到完全不同的参数值。

2、PID控制不稳定怎么办?如何调试PID?

闭环系统的调试,首先应当做开环测试。所谓开环,就是在PID调节器不投入工作的时候,观察:


输出通道是否动作正常

S7-200的新一代产品提供了自整定的PID细调功能。


PID向导编程步骤

在Micro/WIN中的命令菜单中选择ToolsInstructionWizard,然后在指令向导窗

口中选择PID指令:


图1.选择PID向导

在使用向导时必须先对项目进行编译,在随后弹出的对话框中选择"Yes",确认编译。如果已有的程序中存在错误,或者有没有编完的指令,编译不能通过。如果你的项目中已经配置了一个PID回路,则向导会指出已经存在的PID回路,并让你选择是配置修改已有的回路,还是配置一个新的回路:


图2.选择需要配置的回路

第一步:定义需要配置的PID回路号


图3.选择PID回路号

第二步:设定PID回路参数


图4.设置PID参数

图4中:

以下定义PID回路参数,这些参数都应当是实数:

(增益):即比例常数。

(积分时间):如果不想要积分作用,可以把积分时间设为无穷大:9999.99

(微分时间):如果不想要微分回路,可以把微分时间设为0。

注意:关于具体的PID参数值,每一个项目都不一样,需要现场调试来定,没有所谓经验参数。

第三步:设定回路输入输出值


图5.设定PID输入输出参数

在图5中,首先设定过程变量的范围:

a.指定输入类型

Unipolar:单极性,即输入的信号为正,如0-10V或0-20mA等

Bipolar:双极性,输入信号在从负到正的范围内变化。如输入信号为正负10V、正负5V等时选用

20%Offset:选用20%偏移。如果输入为4-20mA则选单极性及此项,4mA是0-20mA信号的20%,所以选20%偏移,即4mA对应6400,20mA对应32000

在a.设置为Unipolar时,缺省值为0-32000,对应输入量程范围0-10V或0-20mA等,输入信号为正

在a.设置为Bipolar时,缺省的取值为-32000-+32000,对应的输入范围根据量程不同可以是正负10V、正负5V等

(输出类型)可以选择模拟量输出或数字量输出。模拟量输出用来控制一些需要模拟量给定的设备,如比例阀、变频器等;数字量输出实际上是控制输出点的通、断状态按照一定的占空比变化,可以控制固态继电器(加热棒等)

d.选择模拟量则需设定回路输出变量值的范围,可以选择:

Unipolar:单极性输出,可为0-10V或0-20mA等

Bipolar:双极性输出,可为正负10V或正负5V等

20%Offset:如果选中20%偏移,使输出为4-20mA

e.取值范围:

d为Unipolar时,缺省值为0到32000

d为Bipolar时,取值-32000到32000

d为20%Offset时,取值6400-32000,不可改变

如果选择了开关量输出,需要设定此占空比的周期。

第四步:设定回路报警选项


图6.设定回路报警限幅值

向导提供了三个输出来反映过程值(PV)的低值报警、高值报警及过程值模拟量模块错误状态。当报警条件满足时,输出置位为1。这些功能在选中了相应的选择框之后起作用。

a.使能低值报警并设定过程值(PV)报警的低值,此值为过程值的百分数,缺省值为0.10,即报警的低值为过程值的10%。此值最低可设为0.01,即满量程的1%

b.使能高值报警并设定过程值(PV)报警的高值,此值为过程值的百分数,缺省值为0.90,即报警的高值为过程值的90%。此值最高可设为1.00,即满量程的100%

c.使能过程值(PV)模拟量模块错误报警并设定模块于CPU连接时所处的模块位置。"0"就是第一个扩展模块的位置

第五步:指定PID运算数据存储区


图7.分配运算数据存储区

自动分配的地址只是在执行PID向导时编译检测到空闲地址。向导将自动为该参数表分配符号名,用户不要再自己为这些参数分配符号名,否则将导致PID控制不执行。

第六步:定义向导所生成的PID初使化子程序和中断程序名及手/自动模式


图8.指定子程序、中断服务程序名和选择手动控制

向导已经为初使化子程序和中断子程序定义了缺省名,你也可以修改成自己起的名字。

a.指定PID初使化子程序的名字。

b.指定PID中断子程序的名字

注意:

1.如果你的项目中已经存在一个PID配置,则中断程序名为只读,不可更改。因为一个项目中所有PID共用一个中断程序,它的名字不会被任何新的PID所更改。

2.PID向导中断用的是SMB34定时中断,在用户使用了PID向导后,注意在其它编程时不要再用此中断,也不要向SMB34中写入新的数值,否则PID将停止工作。

c.此处可以选择添加PID手动控制模式。在PID手动控制模式下,回路输出由手动输出设定控制,此时需要写入手动控制输出参数一个0.0-1.0的实数,代表输出的0%-100%而不是直接去改变输出值。

此功能提供了PID控制的手动和自动之间的无扰切换能力。

第七步:生成PID子程序、中断程序及符号表等


图9.生成PID子程序、中断程序和符号表等

第八步:配置完PID向导,需要在程序中调用向导生成的PID子程序(如下图)


图10.PID子程序图11.调用PID子程序

在用户程序中调用PID子程序时,可在指令树的ProgramBlock(程序块)中用鼠标双击由向导生成的PID子程序,在局部变量表中,可以看到有关形式参数的解释和取值范围。

a.必须用来使能PID,以保证它的正常运行

c.此处输入设定值变量地址(VDxx),或者直接输入设定值常数,根据向导中的设定0.0-100.0,此处应输入一个0.0-100.0的实数,例:若输入20,即为过程值的20%,假设过程值AIW0是量程为0-200度的温度值,则此处的设定值20代表40度(即200度的20%);如果在向导中设定给定范围为0.0-200.0,则此处的20相当于20度

d.此处用控制PID的手/自动方式,当为1时,为自动,经过PID运算从AQW0输出;当为0时,PID将停止计算,AQW0输出为ManualOutput(VD4)中的设定值,此时不要另外编程或直接给AQW0赋值。若在向导中没有选择PID手动功能,则此项不会出现

e.定义PID手动状态下的输出,从AQW0输出一个满值范围内对应此值的输出量。此处可输入手动设定值的变量地址(VDxx),或直接输入数。数值范围为0.0-1.0之间的一个实数,代表输出范围的百分比。例:如输入0.5,则设定为输出的50%。若在向导中没有选择PID手动功能,则此项不会出现

f.此处键入控制量的输出地址

g.当高报警条件满足时,相应的输出置位为1,若在向导中没有使能高报警功能,则此项将不会出现

h.当低报警条件满足时,相应的输出置位为1,若在向导中没有使能低报警功能,则此项将不会出现

i.当模块出错时,相应的输出置位为1,若在向导中没有使能模块错误报警功能,则此项将不会出现

调用PID子程序时,不用考虑中断程序。子程序会自动初始化相关的定时中断处理事项,然后中断程序会自动执行。

第九步:实际运行并调试PID参数

没有一个PID项目的参数不需要修改而能直接运行,因此需要在实际运行时调试PID参数。

查看DataBlock(数据块),以及SymbolTable(符号表)相应的PID符号标签的内容,可以找到包括PID核心指令所用的控制回路表,包括比例系数、积分时间等等。将此表的地址复制到StatusChart(状态表)中,可以在监控模式下在线修改PID参数,而不必停机再次做组态。

参数调试合适后,用户可以在数据块中写入,也可以再做一次向导,或者编程向相应的数据区传送参数。

常问问题

1、做完PID向导后,如何知道向导中设定值,过程值及PID等参数所用的地址?

做完PID向导后可在SymbolTable(符号表)中,查看PID向导所生成的符号表(上例中为PID0_SYM),可看到各参数所用的详细地址,及数值范围。

在DataBlock(数据块)中,查看PID指令回路表的相关参数。如图所示:


图12.PID数据块

2、做完PID向导后,如何在调试中修改PID参数?

可以在StatusChart(状态表)中,输入相应的参数地址,然后在线写入用户需要的PID参数数值,这样用户就可根据工艺需要随时对PID参数、设定值等进行调整。

3、PID已经调整合适,如何正式确定参数?

可以在DataBlock(数据块)中直接写入参数。

4、做完PID向导后,能否查看PID生成的子程序,中断程序?

PID向导生成的子程序,中断程序用户是无法看到的,也不能对其进行修改。没有密码能够打开这些子程序,一般的应用也没有必要打开查看。

5、PID参数有经验值吗?

每一个项目的PID参数都不一样,没有经验参数,只能现场调试获得。

6、我的PID向导生成的程序为何不执行?

必须保证用无条件调用PID0_INIT程序bull;在程序的其它部分不要再使用SMB34定时中断,也不要对SMB34赋值

7、如何实现PID反作用调节?

8、如何根据工艺要求有选择地投入PID功能?

可使用"手动/自动"切换的功能。PID向导生成的PID功能块只能使用的条件调用。


完成PIDWizard组态后,会为每个PID回路生成一个子程序PIDx_INIT

(x=0-7)。在用户程序中,必须使用始终调用这个子程序才能实现PID功能。

下图是一个最简单的PID子程序调用程序段:


图1.调用PID子程序

其中:

Setpoint:给定参数值的入口

Output:PID调节器的输出值

注意:

这取决于被控制的对象,如果是压力,则给定也必须对应于压力值;如果是温度,则给定也必须对应于温度。


图2.在图中a.处设置给定范围


实例

表1.


n为比例系数,为了精度高些可以设置n=10等等

又如一个温度控制的PID系统,温度值直接由热电偶测量,输入到EM231TC(热电偶)模块转换为温度值。热电偶为J型,其测量范围为-150.0deg;;C。则可按如下设置给定的范围。

表2.




图5.给定范围设置

第二部分、PID自整定

PID自整定

新的S7-200CPU支持PID自整定功能,在STEP7-Micro/中也添加了PID调节控制面板。用户可以使用用户程序或PID调节控制面板来启动自整定功能。在同一时间最多可以有8个PID回路同时进行自整定。PID调节控制面板也可以用来手动调试老版本的(不支持PID自整定)CPU的PID控制回路。

用户可以根据工艺要求为调节回路选择快速响应、中速响应、慢速响应或极慢速响应。PID自整定会根据响应类型而计算出最优化的比例、积分、微分值,并可应用到控制中。

PID调节控制面板

STEP7-Micro/中提供了一个PID调节控制面板,可以用图形方式监视PID回路的运行,另外从面板中还可以启动、停止自整定功能。


图1.PID调节控制面板

在图1中:

a.过程值指示显示过程变量的值及其棒图

b.当前的输出值指示显示当前使用的设定值、采样时间、PID参数值及显示当前的输出值和棒图

c.可显示过程值、设定值及输出值的PID趋势图


图2.图形显示区

图中:

A.过程变量和设定值的取值范围及刻度

输出的取值范围及刻度

C.实际PC时间

D.以不同颜色表示的设定值、过程变量及输出的趋势图

d.调节参数这里你可以:

选择PID参数的显示:当前参数(Current)、推荐参数(Suggested)、手动输入(Manual)

在Manual模式下,可改变PID参数,并按UpdatePLC按钮来更新PLC中的参数

启动PID自整定功能

选择Advanced(高级)按钮进入高级参数设定

e.当前的PID回路号

这里你可以选择需要监视或自整定的PID回路

f.时间选项设定

这里你可以设定趋势图的时基,时基以分为单位

g.图例颜色

这里你可以看到趋势图中不同的颜色代表不同的值的趋势

h.帮助按钮

信息显示窗口

j.关闭PID调节面板

要使用PID调节控制面板,PID编程必须使用PID向导完成。

PID自整定步骤

第一步:在PIDWizard(向导)中完成PID功能组态

要想使用PID自整定功能,PID编程必须用PID向导来完成

第二步:打开PID调节控制面板,设置PID回路调节参数

为了使PID自整定顺利进行,应当做到:

设置合适的给定值,使PID调节器的输出远离趋势图的上、下坐标轴,以免PID自整定开始后输出值的变化范围受限制

参见:手动调整PID回路参数


图3.设置PID自整定高级选项

在此允许你设定下列参数:

a.你可以选中复选框,让自整定来自动计算死区值和偏移值

对于一般的PID系统,建议使用自动选择。

(滞回死区):

这个值用来减少过程变量的噪声对自整定的干扰,从而更精确地计算出过程系统的自然振动频率。如果选用自动计算,则缺省值为2%。

(偏差):

(初始步长值):PID调节的初始输出值

PID自整定开始后,PID自整定调节器将主动改变PID的输出值,以观察整个系统的反应。初始步长值就是输出的变动第一步变化值,以占实际输出量程的百分比表示。

(看门狗时间):过程变量必须在此时间(时基为秒)内达到或穿越给定值,否则会产生看门狗超时错误。


f.动态响应选项:根据回路过程(工艺)的要求可选择不同的响应类型:快速、中速、慢速、极慢速

快速:可能产生超调,属于欠阻尼响应

中速:在产生超调的边缘,属于临界阻尼响应

慢速:不会产生任何超调,属于过阻尼响应

极慢速:不会产生任何超调,属于严重过阻尼响应

用户在这里指定需要达到的系统控制效果,而不是对系统本身响应快慢的判断。

要使用自整定功能,必须保证PID回路处于自动模式。开始自整定后,给定值不能再改变。


完成PID调整后,最好下载一次整个项目(包括数据块),使新参数保存到CPU的EEPROM中。

PID自整定失败的原因

PID输出在最大值与最小值之间振荡(曲线接触到坐标轴)


解决方法:降低PID初始输出步长值(initialoutputstep)

解决方法:确定在启动PID自整定前,过程变量和输出值已经稳定。并检查WatchdogTime的值,将其适当增大。对于其它错误,可参考手册中表15-3中的错误代码的描述。

如何获得一个稳定的PID回路

在开始PID自整定调整前,整个PID控制回路必须工作在相对稳定的状态。稳定的PID是指过程变量接近设定值,输出不会不规则的变化,且回路的输出值在控制范围中心附近变化。

问题与解决方法:

1.PID输出总是输出很大的值,并在这一区间内调节变化

产生原因:

增益(Gain)值太高

PID扫描时间(sampletime)太长(对于快速响应PID的回路)

解决方法:降低增益(Gain)值并且/或选择短一些的扫描时间

2.过程变量超过设定值很多(超调很大)

产生原因:积分时间(Integraltime)可能太高

解决方法:降低积分时间

3.得到一个非常不稳定的PID

产生原因:

如果用了微分,可能是微分参数有问题

没有微分,可能是增益(Gain)值太高

解决方法:

调整微分参数到0-1的范围内

根据回路调节特性将增益值降低,最低可从0.x开始逐渐增大往上调,直到获得稳定的PID。