PID的实现方式及数目
1.S7-200 SMART中PID功能实现方式有以下三种:
- PID指令块:通过一个PID回路表交换数据,只接受0.0 - 1.0之间的实数(实际上就是百分比)作为反馈、给定与控制输出的有效数值。
- PID向导:方便地完成输入/输出信号转换/标准化处理。PID指令同时会被自动调用。
- 根据PID算法自己编程(该文档不涉及)
2.S7-200 SMART CPU最多可以支持8个PID控制回路(8个PID指令功能块),根据PID算法自己编程没有具体数目的限制,但是需要考虑PLC的存储空间以及扫描周期等影响。
PID控制是负反馈闭环控制,能够抑制系统闭环内的各种因素所引起的扰动,使反馈跟随给定变化。
根据具体项目的控制要求,在实际应用中有可能用到其中的一部分,比如常用的是PI(比例-积分)控制,这时没有微分控制部分。
PID指令使用的相关视频教程链接如下:
概述及项目编程准备 | S7-200 SMART PID回路控制(1):概述及项目编程准备——跟我学 | https://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1084 | |
---|---|---|---|
PID回路控制 | S7-200 SMART PID回路控制(1):概述及项目编程准备——跟我做 | https://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1085 | |
配置PID向导 | S7-200 SMART PID回路控制(2):配置PID向导——跟我学 | https://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1086 | |
S7-200 SMART PID回路控制(2):配置PID向导——跟我做 | https://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1087 | ||
调用向导生成子程序编程 | S7-200 SMART PID回路控制(3):调用向导生成的子程序编程——跟我学 | https://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1088 | |
S7-200 SMART PID回路控制(3):调用向导生成的子程序编程——跟我做 | https://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1089 | ||
下载测试 | S7-200 SMART PID回路控制(4):下载测试——跟我学 | https://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1090 | |
S7-200 SMART PID回路控制(4):下载测试——跟我做 | https://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1091 | ||
PID整定控制面板 | S7-200 SMART PID回路控制(5):PID整定控制面板——跟我学 | https://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1092 | |
S7-200 SMART PID回路控制(5):PID整定控制面板——跟我做 | https://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1093 |
PID算法在S7-200 SMART中的实现
PID控制最初在模拟量控制系统中实现,随着离散控制理论的发展,PID也在计算机化控制系统中实现。
为便于实现,S7-200 SMART中的PID控制采用了迭代算法。详细的计算方法请参考《S7-200 SMART系统手册》中PID指令部分的相关内容。
计算机化的PID控制算法有几个关键的参数Kc(Gain,增益),Ti(积分时间常数),Td(微分时间常数),Ts(采样时间)。
在S7-200 SMART中PID功能是通过PID指令功能块实现。通过定时(按照采样时间)执行PID功能块,按照PID运算规律,根据当时的给定、反馈、比例-积分-微分数据,计算出控制量。
PID功能块通过一个PID回路表交换数据,这个表是在V数据存储区中的开辟,长度为36字节。因此每个PID功能块在调用时需要指定两个要素:PID控制回路号,以及控制回路表的起始地址(以VB表示)。
由于PID可以控制温度、压力等等许多对象,它们各自都是由工程量表示,因此有一种通用的数据表示方法才能被PID功能块识别。S7-200 SMART中的PID功能使用占调节范围的百分比的方法抽象地表示被控对象的数值大小。在实际工程中,这个调节范围往往被认为与被控对象(反馈)的测量范围(量程)一致。
PID功能块只接受0.0 - 1.0之间的实数(实际上就是百分比)作为反馈、给定与控制输出的有效数值,如果是直接使用PID功能块编程,必须保证数据在这个范围之内,否则会出错。其他如增益、采样时间、积分时间、微分时间都是实数。
因此,必须把外围实际的物理量与PID功能块需要的(或者输出的)数据之间进行转换。这就是所谓输入/输出的转换与标准化处理。《S7-200 SMART系统手册》上有详细的介绍。
S7-200 SMART的编程软件Micro/WIN SMART提供了PID指令向导,以方便地完成这些转换/标准化处理。除此之外,PID指令也同时会被自动调用。
调试PID控制器
PID控制的效果就是看反馈(也就是控制对象)是否跟随设定值(给定),是否响应快速、稳定,是否能够抑制闭环中的各种扰动而回复稳定。
要衡量PID参数是否合适,必须能够连续观察反馈对于给定变化的响应曲线;而实际上PID的参数也是通过观察反馈波形而调试的。因此,没有能够观察反馈的连续变化波形曲线的有效手段,就谈不上调试PID参数。
观察反馈量的连续波形,可以使用带慢扫描记忆功能的示波器(如数字示波器),波形记录仪,或者在PC机上做的趋势曲线监控画面等。
新版编程软件STEP 7-Micro/WIN SMART内置了一个PID调试控制面板工具,具有图形化的给定、反馈、调节器输出波形显示,可以用于手动调试PID参数。对于没有“自整定PID”功能的老版CPU,也能实现PID手动调节。
PID参数的取值,以及它们之间的配合,对PID控制是否稳定具有重要的意义。这些主要参数是:
- 采样时间: 计算机必须按照一定的时间间隔对反馈进行采样,才能进行PID控制的计算。采样时间就是对反馈进行采样的间隔。短于采样时间间隔的信号变化是不能测量到的。过短的采样时间没有必要,过长的采样间隔显然不能满足扰动变化比较快、或者速度响应要求高的场合。
编程时指定的PID控制器采样时间必须与实际的采样时间一致。S7-200 SMART中PID的采样时间精度用定时中断(PID向导用SMB34)来保证。
- 增益(Gain,放大系数,比例常数) 增益与偏差(给定与反馈的差值)的乘积作为控制器输出中的比例部分。提高响应速度,减少误差,但不能消除稳态误差,当比例作用过大时,系统的稳定性下降。
- 积分时间(Integral Time) 偏差值恒定时,积分时间决定了控制器输出的变化速率。积分时间越短,偏差得到的修正越快。过短的积分时间有可能造成不稳定。 积分时间的长度相当于在阶跃给定下,增益为“1”的时候,输出的变化量与偏差值相等所需要的时间,也就是输出变化到二倍于初始阶跃偏差的时间。 如果将积分时间设为最大值,则相当于没有积分作用。
- 微分时间(Derivative Time) 偏差值发生改变时,微分作用将增加一个尖峰到输出中,随着时间流逝减小。微分时间越长,输出的变化越大。微分使控制对扰动的敏感度增加,也就是偏差的变化率越大,微分控制作用越强。微分相当于对反馈变化趋势的预测性调整。 如果将微分时间设置为0就不起作用,控制器将作为PI调节器工作。
- 比例调节 提高响应速度,减少误差,但不能消除稳态误差,当比例作用过大时,系统的稳定性下降。(由小到大单独调节)
- 积分调节 消除稳态误差,使系统的动态响应变慢,积分时间越小,积分作用越大 ,偏差得到的修正越快,过短的积分时间有可能造成不稳定。(将调好的比例增益调整到50%~80%后,由大到小减小积分时间)
- 微分调节 超前调节,能预测误差变化的趋势,提前抑制误差的控制作用,从而避免了被控量的严重超调。可以改善系统的响应速度和稳定性,对噪声干扰有放大作用,对具有滞后性质的被控对象,应加入微分环节。
PID常见问题
1. PID向导生成的程序为何不执行?
- 必须保证用SM0.0无条件调用PID0_CTRL程序
- 在程序的其它部分不要再使用SMB34定时中断,也不要对SMB34赋值
- 确认当前工作状态:手动还是自动
2. 如何实现PID反作用调节?
在有些控制中需要PID反作用调节。例如:在夏天控制空调制冷时,若反馈温度(过程值)低于设定温度,需要关阀,减小输出控制(减少冷水流量等),这就是PID反作用调节(在PID正作用中若过程值小于设定值,则需要增大输出控制)。 若想实现PID反作用调节,需要把PID回路的增益设为负数。对于增益为0的积分或微分控制来说,如果指定积分时间、微分时间为负值,则是反作用回路。
3. 如何根据工艺要求有选择地投入PID功能?
可使用"手动/自动"切换的功能。PID向导生成的PID功能块需要保证每个扫描周期都调用,所以建议在主程序内使用SM0.0调用。
4. 做完PID向导后,如何知道向导中设定值,过程值及PID等参数所用的地址?
- 做完PID向导后可在符号表
中,查看PID向导所生成的符号表(上例中为PID0_SYM),可看到各参数所用的详细地址,及数值范围。
- 在数据块
中,查看PID指令回路表的相关参数。如图所示:
图15. PID数据块 用户可以在状态表
中, 输入相应的参数地址,然后在线写入需要的PID参数数值,这样用户就可根据工艺需要随时对PID参数、设定值等进行调整。
5. PID已经调整合适,如何正式确定参数? 可以在数据块中直接写入参数,作为初始值使用。
6. 对于某个具体的PID控制项目,是否可能事先得知比较合适的参数?有没有相关的经验数据?
虽然有理论上计算PID参数的方法,但由于闭环调节的影响因素很多而不能全部在数学上精确地描述,计算出的数值往往没有什么实际意义。因此,除了实际调试获得参数外,没有什么可用的经验参数值存在。甚至对于两套看似一样的系统,都可能通过实际调试得到完全不同的参数值。
7. PID控制不稳定怎么办?如何调试PID?
闭环系统的调试,首先应当做开环测试。所谓开环,就是在PID调节器不投入工作的时候,观察:
- 反馈通道的信号是否稳定
- 输出通道是否动作正常
可以试着给出一些比较保守的PID参数,比如放大倍数(增益)不要太大,可以小于1,积分时间不要太短,以免引起振荡。在这个基础上,可以直接投入运行观察反馈的波形变化。给出一个阶跃给定,观察系统的响应是最好的方法。
如果反馈达到给定值之后,历经多次振荡才能稳定或者根本不稳定,应该考虑是否增益过大、积分时间过短;如果反馈迟迟不能跟随给定,上升速度很慢,应该考虑是否增益过小、积分时间过长……
总之,PID参数的调试是一个综合的、互相影响的过程,实际调试过程中的多次尝试是非常重要的步骤,也是必须的。
S7-200 SMART的新一代产品提供了自整定的PID细调功能。
8. 没有采用积分控制时,为何反馈达不到给定?
这是必然的。因为积分控制的作用在于消除纯比例调节系统固有的“静差”。没有积分控制的比例控制系统中,没有偏差就没有输出量,没有输出就不能维持反馈值与给定值相等。所以永远不能做到没有偏差。
9. S7-200 SMART控制变频器,在变频器也有PID控制功能时,应当使用谁的PID功能?
可以根据具体情况使用。一般来说,如果需要控制的变量直接与变频器直接有关,比如变频水泵控制水压等,可以优先考虑使用变频器的PID功能。
10. 做完PID向导后,能否查看PID生成的子程序,中断程序? PID向导生成的子程序,中断程序用户是无法看到的,也不能对其进行修改。没有密码能够打开这些子程序,一般的应用也没有必要打开查看。
11. 指令块与向导使用的PID回路号是否可以重复?
不可以重复,使用PID向导时,对应回路的指令块也会调用,所以指令块与向导使用的PID回路号不能重复,否则会产生预想不到的结果。
12. 同一个程序里既使用PID指令块又使用向导,PID数目怎样计算?
使用PID向导时,对应回路的指令块也会调用,所以PID指令块与向导一共支持8个。
13. PID指令块可以在主程序/子程序里调用吗?(PID指令块常见问题) 可以,但是不推荐,主程序/子程序的循环时间每个周期都可能不同,不能保证精确的采样,建议用定时中断,例如SMB34/SMB35。
14.SMB34定时最大255ms,如果采样时间是1S怎样实现?(PID指令块常见问题) 采样时间是1S,要求PID指令块每隔1S调用一次。可以先做一个250ms的定时中断,然后编程累加判断每4次中断执行一次PID指令即可。
15. PID指令块怎样实现手动调节?(PID指令块常见问题) 可以简单地使用"调用/不调用"指令的方式控制自动/手动模式。不调用PID指令时,可以手动给输出地址0.0-1.0之间的实数。
16. PID指令块实现数字量输出?(PID指令块常见问题) 1.通过PWM指令,将PID输出值转换为所需时间基准的整数,送到PWM的Pulse,控制脉宽(该法简单易用,但是要求输出点只能是Q0.0或Q0.1)。 2.自己编程实现类似于PWM的输出。(虽然不限制Q点,但编程较复杂,不建议使用,可以直接考虑用PID向导)。