龙空技术网

PID 指令及自整定系统总结

工控小飞侠 714

前言:

此刻姐妹们对“pid算法编程”大致比较关怀,兄弟们都想要剖析一些“pid算法编程”的相关知识。那么小编也在网摘上汇集了一些有关“pid算法编程””的相关资讯,希望我们能喜欢,咱们快快来了解一下吧!

第一部分、PID 控制

Micro/WIN 提供了PID Wizard(PID 指令向导),可以帮助我们方便地生成一个闭环控制过程的

PID 算法。此向导可以完成绝大多数PID 运算的自动编程,只需在主程序中调用PID 向导生成的子程

序,就可以完成PID 控制任务。

PID 向导既可以生成模拟量输出PID 控制算法,也支持开关量输出;既支持连续自动调节,也支持

手动参与控制。

PID 向导编程步骤

在Micro/WIN 中的命令菜单中选择:工具 > 指令向导,然后在指令向导窗口中选择PID 指令:

图1. 选择PID 向导

在使用向导时必须先对项目进行编译,在随后弹出的对话框中选择“Yes” ,确认编译。如果已有的程

序中存在错误,或者有没有编完的指令,编译不能通过。

如果项目中已经配置了一个PID 回路,则向导会指出已经存在的PID 回路,并让你选择是配置修改已有

的回路,还是配置一个新的回路:

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

----------------------- Page 2-----------------------

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

第二步:设定PID 回路参数

图3. 设置PID 参数

定义回路设定值(SP,即给定)的范围:

在低限(Low Range)和高限(High Range)输入域中输入实数,缺省值为0.0 和100.0,表示给定值的

取值范围占过程反馈量程的百分比。

这个范围是给定值的取值范围。它也可以用实际的工程单位数值表示,接下来会和过程输入量一起总

结。

比例增益: 即比例常数。

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

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

采样时间:是PID 控制回路对反馈采样和重新计算输出值的时间间隔。在向导完成后,若想要修改此

数,则必须返回向导中修改,不可在程序中或状态表中修改。

----------------------- Page 3-----------------------

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

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

标定: 指定输入类型

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

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

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

即4mA 对应6400,20mA 对应32000

反馈输入取值范围

设置为单极性时

:缺省值为0 - 32000,对应输入量程范围0 - 10V 或0 - 20mA 等,输入信号为正

设置为双极性时:

缺省的取值为-32000 - +32000,对应的输入范围根据量程不同可以是±10V、±5V 等

----------------------- Page 4-----------------------

选中20% Offset 时,取值范围为6400 - 32000,不可改变

此反馈输入也可以是工程单位数值。

输出类型

可以选择模拟量输出或数字量输出。模拟量输出用来控制一些需要模拟量给定的设

备,如比例阀、变频器等;数字量输出实际上是控制输出点的通、断状态按照一定的

占空比变化,可以控制固态继电器(加热棒等)

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

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

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

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

取值范围:

为单极性时,缺省值为 0 到 32000

为双极性时,取值-32000 到32000

为20% 偏移量时,取值6400 - 32000,不可改变

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

重点:

实例:

假定一个PID 控制系统的控制对象是压力,反馈元件的测量范围为0 - 16MPa。反馈器件的信号经过变

换,以0 - 20mA(或4 - 20mA)电流信号的形式输入到EM231 模拟量输入模块中。据此,我们可以按下

表设置给定、反馈的范围。

若给定范围是0到100,则设定值就是实际物理量的百分比,如设为30.0,则设定值就等于

16*0.3=4.8Mpa。

若给定范围是一物理工程单位形式0到160(当n=10时),则设定值直接对应物理量,如设定100.0则设定

值为10Mpa。

----------------------- Page 5-----------------------

其中这些值的给定是和模拟量输入范围仅仅相关的。其实是先对应模拟量然后再转换成实际物理量。

又比如我在做水箱pid调节时,当水位最低为0时,通过EM235传送给plc的值为3225,水位最高值17cm时

的值为10000,那么我在第三步:设定回路输入输出值时就选择是3225到10000,设置回路给定值范围为0

到100.那么在指令当中的setpiont设的参数即为0到17cm的高度的百分比。如我设为50.0.则我想要的液

位高度即为:17*0.5=8.5cm。

当然我也可以将回路给定值设为物理工程单位如0到170,对应关系则不再复述。

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

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

向导提供了三个输出来反映过程值(PV)的低值报警、高值报警及过程值模拟量模块错误状态。当报警条件满足时,输出

置位为1。这些功能在选中了相应的选择框之后起作用。

? 使能低值报警并设定过程值(PV)报警的低值,此值为过程值的百分数,缺省值为0.10,即报警的低值为过程值的

10%。此值最低可设为0.01,即满量程的1%

? 使能高值报警并设定过程值(PV)报警的高值,此值为过程值的百分数,缺省值为0.90,即报警的高值为过程值的

90%。此值最高可设为1.00,即满量程的100%

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

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

----------------------- Page 6-----------------------

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

PID 指令(功能块)使用了一个120个字节的V 区参数表来进行控制回路的运算工作;除此之外,PID 向导生成的输入/

输出量的标准化程序也需要运算数据存储区。需要为它们定义一个起始地址,要保证该地址起始的若干字节在程序的其

它地方没有被重复使用。如果点击“Suggest Address”,则向导将自动为你设定当前程序中没有用过的V 区地址。

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

为这些参数分配符号名,否则将导致PID 控制不执行。

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

----------------------- Page 7-----------------------

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

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

注意:

1,如果项目中已经存在一个PID 配置,则中断程序名为只读,不可更改。因为一个项目中所有PID 共用一个中断程

序,它的名字不会被任何新的PID 所更改。

2,PID 向导中断用的是SMB34定时中断,在用户使用了PID 向导后,注意在其它编程时不要再用此中断,也不要向

SMB34中写入新的数值,否则PID 将停止工作。

3,此处可以选择添加PID 手动控制模式。在PID 手动控制模式下,回路输出由手动输出设定控制,此时需要写入手动

控制输出参数一个0.0-1.0的实数,代表输出的0%-100%而不是直接去改变输出值。

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

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

一旦点击完成按钮,将在你的项目中生成上述PID 子程序、中断程序及符号表等。

----------------------- Page 8-----------------------

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

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

----------------------- Page 9-----------------------

图9. 调用PID 子程序

在用户程序中调用PID 子程序时,可在指令树的Program Block (程序块)中用鼠标双击由向导生成的PID 子程序,在

局部变量表中,可以看到有关形式参数的解释和取值范围。

在这里,给定、反馈的入口参数不是PID 指令功能块所需要的0.0 - 1.0之间的实数,而可以是实际的反馈地址,或是其

他变量。例如,PV_I 可以是模拟量输入地址AIW0,也可以是存储器地址VW100等;Setpoint 则往往来自V 变量存储

区,这样可以从人机操作界面(HMI )设备输入给定值。

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

此处输入过程值(反馈)的模拟量输入地址

此处输入设定值变量地址(VDxx ),或者直接输入设定值常数,根据向导中的设定0.0-100.0,此处应输入一个0.0

-100.0的实数,例:若输入20,即为过程值的20 %,假设过程值AIW0是量程为0-200度的温度值,则此处的设定

值20代表40度(即200度的20 %);如果在向导中设定给定范围为0.0 - 200.0,则此处的20相当于20度

此处用I0.0控制PID 的手/ 自动方式,当I0.0为1时,为自动,经过PID 运算从AQW0输出;当I0.0为0时,PID 将停

止计算,AQW0输出为ManualOutput (VD4 )中的设定值,此时不要另外编程或直接给AQW0赋值。若在向导中没

有选择PID 手动功能,则此项不会出现

----------------------- Page 10-----------------------

定义PID 手动状态下的输出,从AQW0输出一个满值范围内对应此值的输出量。此处可输入手动设定值的变量地址

(VDxx ),或直接输入数。数值范围为0.0-1.0之间的一个实数,代表输出范围的百分比。例:如输入0.5,则设定为

输出的50%。若在向导中没有选择PID 手动功能,则此项不会出现

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

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

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

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

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

行。

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

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

查看Data Block (数据块),以及Symbol Table (符号表)相应的PID 符号标签的内容,可以找到包括PID 核心指令所

用的控制回路表,包括比例系数、积分时间等等。将此表的地址复制到Status Chart (状态表)中,可以在监控模式下在

线修改PID 参数,而不必停机再次做配置。

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

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

图10. PID 数据块

还有一个更简单的调试方法:

通过pid 调节控制面板(需要将程序下载到plc 当中,在线调试)

----------------------- Page 11-----------------------

图11. PID 调节控制面板

先选择手动调节,输入调节参数,然后点击更新PLC 即可。

如何实现PID反作用调节?

在有些控制中需要PID 反作用调节。例如:在夏天控制空调制冷时,若反馈温度(过程值)低于设定温度,需要关阀,

减小输出控制(减少冷水流量等),这就是PID 反作用调节(在PID 正作用中若过程值小于设定值,则需要增大输出控

制)。

若想实现PID 反作用调节,需要把PID 回路的增益设为负数。对于增益为0的积分或微分控制来说,如果指定积分时

间、微分时间为负值,则是反作用回路。

第二部分 PID 自整定

新的S7-200 CPU 支持PID 自整定功能,在STEP 7-Micro/WIN V4.0 中也添加了PID 调节控制面板。

用户可以使用用户程序或PID 调节控制面板来启动自整定功能。在同一时间最多可以有8 个PID 回路同

时进行自整定。PID 调节控制面板也可以用来手动调试老版本的(不支持PID 自整定)CPU 的PID 控制

回路。

用户可以根据工艺要求为调节回路选择快速响应、中速响应、慢速响应或极慢速响应。PID 自整定会根

----------------------- Page 12-----------------------

据响应类型而计算出最优化的比例、积分、微分值,并可应用到控制中。

PID 调节控制面板

STEP 7-Micro/WIN V4.0 中提供了一个PID 调节控制面板,可以用图形方式监视PID回路的运行,另外从

面板中还可以启动、停止自整定功能。

PID 自整定步骤

第一步:在PID Wizard (向导)中完成PID 功能组态,要想使用PID 自整定功能,PID 编程必须用PID

向导来完成

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

在Micro/WIN V4.0 在线的情况下,从主菜单Tools > PID Tune Control Panel 或点击进入PID 调节控

制面板中,如果面板没有被激活(所有地方都是灰色),可点击Configure(配置)按钮运行CPU。

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

* 使 PID 调节器基本稳定,输出、反馈变化平缓,并且使反馈比较接近给定

* 设置合适的给定值,使 PID 调节器的输出远离趋势图的上、下坐标轴,以免PID 自

整定开始后输出值的变化范围受限制

第三步:在d.区点击高级按钮,设定PID 自整定选项。如果不是很特殊的系统,也可以不加理会。

----------------------- Page 13-----------------------

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

在此允许设定下列参数:

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

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

Hysteresis(滞回死区):

死区值规定了允许过程值偏离设定值的最大(正负)范围,过程反馈在这个范围内的变化不会引起PID

自整定调节器改变输出,或者使PID 自整定调节器“认为”这个范围内的变化是由于自己改变输出进行

自整定调节而引起的。PID 自整定开始后,只有过程反馈值超出了该区域,PID 自整定调节器才会认为

它对输出的改变发生了效果。这个值用来减少过程变量的噪声对自整定的干扰,从而更精确地计算出过

程系统的自然振动频率。如果选用自动计算,则缺省值为2%。

Deviation(偏差):

偏差值决定了允许过程变量偏离设定值的峰峰值。如果选择自动计算该值,它将是死区的4 倍,即8%。

有些非常敏感的系统不允许过程量偏离给定值很多,也可以人工设置为比较小的值,但是要和上述“死

区”设置保持比例关系。这就是说,一个精度要求高的系统,其反馈信号必须足够稳定。

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

----------------------- Page 14-----------------------

PID 自整定开始后,PID 自整定调节器将主动改变PID 的输出值,以观察整个系统的反应。初始步长值

就是输出的变动第一步变化值,以占实际输出量程的百分比表示。

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

生看门狗超时错误。

PID 自整定调节器在改变输出后,如果超过此时间还未观察到过程反馈(从下至上或从上至下)穿越给

定曲线,则超时。如果能够事先确定实际系统响应非常慢,可以加长这个时间。

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

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

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

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

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

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

g. 设定完参数点击 OK 键回到PID 调节控制面板的主画面

第四步:在手动将PID 调节到稳定状态后,即过程值与设定值接近,且输出没有不规律的变化,并最好

处于控制范围中心附近。此时可点击开始自动调节 按钮启动PID 自整定功能,这时按钮变为停止自动调

节。这时只需耐心等待,系统完成自整定后会自动将计算出的PID 参数显示出来。当按钮再次变为开始

自动调节时,表示系统已经完成了PID 自整定。

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

第五步:如果用户想将PID 自整定的参数应用到当前PLC 中,则只需点击更新PLC。

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

以下是我做的自动调节时的截图,仅供参考:

----------------------- Page 15-----------------------

----------------------- Page 16-----------------------

----------------------- Page 17-----------------------

PID 自整定失败的原因:

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

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

2.经过一段时间后,PID 自整定面板显示如下信息:“ The Auto Tune algorithm

was aborted due to a zero-crossing watchdog timeout.” 即自整定计算因为等待

反馈穿越给定值的看门狗超时而失败。

解决方法: 确定在启动PID 自整定前,过程变量和输出值已经稳定。并检查

Watchdog Time 的值,将其适当增大。

对于其它错误,可参考手册中表15-3 中的错误代码的描述。

其他错误:

----------------------- Page 18-----------------------

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

在开始PID 自整定调整前,整个PID 控制回路必须工作在相对稳定的状态。

稳定的PID 是指过程变量接近设定值,输出不会不规则的变化,且回路的输出值在控

制范围中心附近变化。

问题与解决方法:

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

产生原因:

o 增益(Gain)值太高

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

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

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

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

解决方法:降低积分时间

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

产生原因:

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

----------------------- Page 19-----------------------

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

解决方法:

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

o 根据回路调节特性将增益值降低,最低可从 0.x 开始逐渐增大往上调,直到

获得稳定的PID。

标签: #pid算法编程 #pid自整定模糊算法