
实验三 S7-200PLC PID温度调节实验一
一、实验目的
1、定性掌握PID控制原理,在此基础上理解PID各调分量的调节作用;
2、掌握S7-200PLC中PID调节指令的使用及编程(以温度调节为例,学习使用向导和不使用向导两种编程,本实验不使用向导),并初步学会PID参数定方法。
二、实验内容
1、S7-200PLC 与模块的硬件接线、S7-200PLC PID指令应用
2、掌握S7-200 PLC PID编程步骤
3、掌握输入输出参数的标准化及PID回路表的使用
4、观察PID自动调节与手动调节效果图(趋势曲线),并学习PID参数整定方法
5、以温度控制为例进行PID调节模拟,观察效果(有模拟量扩展模块的话,掌握EM231或者EM232或者EM235的连接及使用)
6、改变设定值、积分时间、采样时间、微分时间,观察调节效果曲线,学会分析曲线图,定性掌握PID参数整定方法
三、实验步骤
1、硬件连接:S7-200CPU与模拟量扩展模块的正确连接
以EM235为例,连接图如下:(EM235是最常用的模拟量扩展模块,它实现了4路模拟量输入和1路模拟量输出功能)
左图演示了模拟量扩展模块的接线方法,对于电压信号,按正、负极直接接入X+和X-;对于电流信号,将RX和X+短接后接入电流输入信号的“+”端;未连接传感器的通道要将X+和X-短接。
对于某一模块,只能将输入端同时设置为一种量程和格式,即相同的输入量程和分辨率。EM235的常用技术参数:
| 模拟量输入特性 | |
| 模拟量输入点数 | 4 |
| 输入范围 | 电压(单极性)0~10V 0~5V 0~1V 0~500mV 0~100mV 0~50mV |
| 电压(双极性)±10V ±5V ±2.5V ±1V ±500mV ±250mV ±100mV ±50mV ±25mV | |
| 电流0~20mA | |
| 数据字格式 | 双极性 全量程范围-32000~+32000 单极性 全量程范围0~32000 20%偏移量00-32000 |
| 分辨率 | 12位A/D转换器 |
| 模拟量输出特性 | |
| 模拟量输出点数 | 1 |
| 信号范围 | 电压输出 ±10V电流输出0~20mA |
| 数据字格式 | 电压-32000~+32000电流0~32000 |
| 分辨率电流 | 电压12位 电流11位 |
| EM235开关 | 单/双极性选择 | 增益选择 | 衰减选择 | |||||
| SW1 | SW2 | SW3 | SW4 | SW5 | SW6 | |||
| ON | 单极性 | |||||||
| OFF | 双极性 | |||||||
| OFF | OFF | X1 | ||||||
| OFF | ON | X10 | ||||||
| ON | OFF | X100 | ||||||
| ON | ON | 无效 | ||||||
| ON | OFF | OFF | 0.8 | |||||
| OFF | ON | OFF | 0.4 | |||||
| OFF | OFF | ON | 0.2 | |||||
输入校准:模拟量输入模块使用前应进行输入校准。其实出厂前已经进行了输入校准,如果OFFSET和GAIN电位器已被重新调整,需要重新进行输入校准。其步骤如下:
A、切断模块电源,选择需要的输入范围。
B、接通CPU和模块电源,使模块稳定15分钟。
C、用一个变送器,一个电压源或一个电流源,将零值信号加到一个输入端。
D、读取适当的输入通道在CPU中的测量值。
E、调节OFFSET(偏置)电位计,直到读数为零,或所需要的数字数据值。
F、将一个满刻度值信号接到输入端子中的一个,读出送到CPU的值。
G、调节GAIN(增益)电位计,直到读数为32000或所需要的数字数据值。
H、必要时,重复偏置和增益校准过程。
2、PLC编程步骤
在Micro/WIN 中的命令菜单中选择工具 >指令向导,然后在指令向导窗口中选择PID 指令。如果你的项目中已经配置了一个PID 回路,则向导会指出已经存在的PID 回路,并让你选择是配置修改已有的回路,还是配置一个新的回路。
第一步:定义需要配置的PID 回路号;第二步:设定PID 回路参数
a. 定义回路设定值(SP,即给定)的范围:
在低限(Low Range)和高限(High Range)输入域中输入实数,缺省值为0.0 和100.0,表示给定值的取值范围占过程反馈量程的百分比。这个范围是给定值的取值范围。它也可以用实际的工程单位数值表示。参见:设置给定-反馈的量程范围。
以下定义PID 回路参数,这些参数都应当是实数:
b.增益: 即比例常数。
c.积分时间:如果不想要积分作用,可以把积分时间设为无穷大INF
d.微分时间:如果不想要微分回路,可以把微分时间设为0 。
e.采样时间:是PID 控制回路对反馈采样和重新计算输出值的时间间隔。在向导完成后,若想要修改此数,则必须返回向导中修改,不可在程序中或状态表中修改。
注意:关于具体的PID 参数值,每一个项目都不一样,需要现场调试来定,没有所谓经验参数。
第三步:设定回路输入输出值
a. 指定输入类型
单极性,即输入的信号为正,如0-10V 或0-20mA 等
双极性,输入信号在从负到正的范围内变化。如输入信号为±10V、±5V 等时选用
选用20%偏移,如果输入为4-20mA 则选单极性及此项,4mA 是0-20mA 信号的20%,所以选20% 偏移,即4mA 对应00,20mA 对应32000
b. 反馈输入取值范围
在a.设置为单级性 时,缺省值为0 - 32000,对应输入量程范围0 - 10V 或0 - 20mA 等,输入信号为正
在a.设置为双极性时,缺省的取值为-32000 - +32000,对应的输入范围根据量程不同可以是±10V、±5V 等
在a.选中20% 偏移量时,取值范围为00 - 32000,不可改变此反馈输入也可以是工程单位数值,参见:设置给定-反馈的量程范围。然后定义输出类型
c.输出类型可以选择模拟量输出或数字量输出。模拟量输出用来控制一些需要模拟量给定的设备,如比例阀、变频器等;数字量输出实际上是控制输出点的通、断状态按照一定的占空比变化,可以控制固态继电器(加热棒等)
d. 选择模拟量则需设定回路输出变量值的范围,与输入相同设置。如果选择了开关量输出,需要设定此占空比的周期。
第四步:设定回路报警选项。向导提供了三个输出来反映过程值(PV)的低值报警、高值报警及过程值模拟量模块错误状态。当报警条件满足时,输出置位为1。这些功能在选中了相应的选择框之后起作用。
a.使能低值报警并设定过程值(PV)报警的低值,此值为过程值的百分数,缺省值为0.10,即报警的低值为过程值的10%。此值最低可设为0.01,即满量程的1%
b.使能高值报警并设定过程值(PV)报警的高值,此值为过程值的百分数,缺省值为0.90,即报警的高值为过程值的90%。此值最高可设为1.00,即满量程的100%
c. 使能过程值(PV)模拟量模块错误报警并设定模块于CPU 连接时所处的模块位置。“0”就是第一个扩展模块的位置
第五步:指定PID 运算数据存储区
PID 指令(功能块)使用了一个120 个字节的V 区参数表来进行控制回路的运算工
作;除此之外,PID 向导生成的输入/输出量的标准化程序也需要运算数据存储区。需要为它们定义一个起始地址,要保证该地址起始的若干字节在程序的其它地方没有被重复使用。如果点击“Suggest Address”,则向导将自动为你设定当前程序中没有用过的V 区地址。自动分配的地址只是在执行PID 向导时编译检测到空闲地址。向导将自动为该参数表分配符号名,用户不要再自己为这些参数分配符号名,否则将导致PID 控制不执行。
第六步:定义向导所生成的PID 初使化子程序和中断程序名及手/自动模式。向导已经为初使化子程序和中断子程序定义了缺省名,你也可以修改成自己起的名字。
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 子程序、中断程序及符号表等
一旦点击完成按钮,将在你的项目中生成上述PID 子程序、中断程序及符号表等。
第八步:配置完PID 向导,需要在程序中调用向导生成的PID 子程序(本题用PID指令盒形式手工调用,用向导只是为了能使用PID调节面板,下次实验学习调用)在用户程序中调用PID 子程序时,可在指令树的程序块中用鼠标双击由向导生成的PID 子程序,在局部变量表中,可以看到有关形式参数的解释和取值范围。
a. 必须用SM0.0 来使能PID,以保证它的正常运行
b. 此处输入过程值(反馈)的模拟量输入地址
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. 此处用I0.0 控制PID 的手/自动方式,当I0.0 为1 时,为自动,经过PID 运算从AQW0 输出;当I0.0 为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参数。
查看数据块,以及符号表相应的PID 符号标签的内容,可以找到包括PID 核心指令所用的控制回路表,包括比例系数、积分时间等等。将此表的地址复制到状态表)中,可以在监控模式下在线修改PID 参数,而不必停机再次做组态。
参数调试合适后,用户可以在数据块中写入,也可以再做一次向导,或者编程向相应
的数据区传送参数。
3、PID 自整定
可以使用用户程序或PID 调节控制面板来启动自整定功能。在同一时间最多可以有8 个PID 回路同时进行自整定。PID 自整定步骤:
第一步:在PID Wizard (向导)中完成PID 功能组态
要想使用PID 自整定功能,PID 编程必须用PID 向导来完成
第二步:打开PID 调节控制面板,设置PID 回路调节参数
在Micro/WIN V4.0 在线的情况下,从主菜单工具 > PID 调节控制面板,击进入PID 调节控制面板中,如果面板没有被激活(所有地方都是灰色),可点击Configure(配置)按钮运行CPU。在PID 调节面板的e.区选择要调节的PID 回路号,在d.区选择Manual(手动),调节PID 参数并点击Update(更新),使新参数值起作用,监视其趋势图,根据调节状况改变PID 参数直至调节稳定。为了使PID 自整定顺利进行,应当做到:
. 使PID 调节器基本稳定,输出、反馈变化平缓,并且使反馈比较接近给定
. 设置合适的给定值,使PID 调节器的输出远离趋势图的上、下坐标轴,以免PID 自
整定开始后输出值的变化范围受
第三步:在d.区点击高级按钮,设定PID 自整定选项。如果不是很特殊的系统,也可以不加理会。在此允许你设定下列参数:
a. 你可以选中复选框,让自整定来自动计算死区值和偏移值对于一般的PID 系统,建议使用自动选择。
b.滞回死区:死区值规定了允许过程值偏离设定值的最大(正负)范围,过程反馈在这个范围内的变化不会引起PID 自整定调节器改变输出,或者使PID 自整定调节器“认为”这个范
围内的变化是由于自己改变输出进行自整定调节而引起的。PID 自整定开始后,只有过程反馈值超出了该区域,PID 自整定调节器才会认为它对输出的改变发生了效果。这个值用来减少过程变量的噪声对自整定的干扰,从而更精确地计算出过程系统的自然振动频率。如果选用自动计算,则缺省值为2%。如果过程变量反馈干扰信号较强(噪声大)自然变化范围就大,可能需要人为设置一个较大的值。但这个值的改变要与下面的偏差值保持1:4 的关系。
c.偏差:偏差值决定了允许过程变量偏离设定值的峰峰值。如果选择自动计算该值,它将是死区的4 倍,即8%。有些非常敏感的系统不允许过程量偏离给定值很多,也可以人工设置为比较小的值,但是要和上述“死区”设置保持比例关系。这就是说,一个精度要求高的系统,其反馈信号必须足够稳定。
d.初始步长值:PID 调节的初始输出。PID 自整定开始后,PID 自整定调节器将主动改变PID 的输出值,以观察整个系统的反应。初始步长值就是输出的变动第一步变化值,以占实际输出量程的百分比表示。
e.看门狗时间:过程变量必须在此时间(时基为秒)内达到或穿越给定值,否则会产生看门狗超时错误。PID 自整定调节器在改变输出后,如果超过此时间还未观察到过程反馈(从下至上或从上至下)穿越给定曲线,则超时。如果能够事先确定实际系统响应非常慢,可以加长这个时间。
f. 动态响应选项:根据回路过程(工艺)的要求可选择不同的响应类型:快速、中速、慢速、极慢速。
快速:可能产生超调,属于欠阻尼响应。中速:在产生超调的边缘,属于临界阻尼响应。慢速:不会产生任何超调,属于过阻尼响应。极慢速:不会产生任何超调,属于严重过阻尼响应用户在这里指定需要达到的系统控制效果,而不是对系统本身响应快慢的判断。
g. 设定完参数点击OK 键回到PID 调节控制面板的主画面
第四步:在手动将PID 调节到稳定状态后,即过程值与设定值接近,且输出没有不规律的变化,并最好处于控制范围中心附近。此时可点击d.区内的“开始自动调节”按钮启动PID 自整定功能,这时按钮变为Stop Auto Tune。这时只需耐心等待,系统完成自整定后会自动将计算出的PID 参数显示在d.区。当按钮再次变为开始自动调节时,表示系统已经完成了PID 自整定。要使用自整定功能,必须保证PID 回路处于自动模式。开始自整定后,给定值不能再改变。
第五步:如果用户想将PID 自整定的参数应用到当前PLC 中,则只需点击“更新PLC”。完成PID 调整后,最好下载一次整个项目(含数据块),使新参数保存到CPU 的EEPROM 中。
四、实验报告
实验报告包括实验目的、实验内容、步骤、设计说明、实验体会、实验思考题。
五、常见问题解答兼作实验思考题
1.PID 输出在最大值与最小值之间振荡(曲线接触到坐标轴)
解决方法:降低PID 初始输出步长值
2.经过一段时间后,PID 自整定面板显示如下信息:“ 由于看门狗超时自动整定异常中止” 。
解决方法: 确定在启动PID 自整定前,过程变量和输出值已经稳定。并检查看门的值,将其适当增大。
3、在开始PID 自整定调整前,整个PID 控制回路必须工作在相对稳定的状态。
稳定的PID 是指过程变量接近设定值,输出不会不规则的变化,且回路的输出值在控
制范围中心附近变化。
4.PID 输出总是输出很大的值,并在这一区间内调节变化
产生原因:增益值太高,PID 扫描时间太长(对于快速响应PID 的回路)
解决方法:降低增益值并且/或选择短一些的扫描时间
5.过程变量超过设定值很多(超调很大)
产生原因:积分时间(Integral time)可能太高
解决方法:降低积分时间
6.得到一个非常不稳定的PID
产生原因:如果用了微分,可能是微分参数有问题,如没有用微分,可能是增益值太高
解决方法:
调整微分参数到0-1 的范围内。根据回路调节特性将增益值降低,最低可从0.x 开始逐渐增大往上调,直到
获得稳定的PID。
六、实验参考程序(程序中用VD300模拟温度值是考虑实验室一直没有配置EM235模块)
主程序:
Network 1
// 本例为了模拟的需要(本例用VD300模拟,实际中用EM235模拟量输入输出模块进行采集,输入通道为AIW0、AIW1,输出通道为AQW0、AQW1等等),先对它设置为一个值,假设比设定的温度低,为40度,并标准化为0.0-1.0之间的实数,以便PID运算需要(西门子S7-200规定PID运算时要先标准化才能运算),并调用子程序进行PID回路参数的初始化
LD SM0.1
DTR VD300, VD300
MOVR 90.0, VD104 //设定温度为90,存在VD104中,这是原始值
MOVR 40.5, VD300 //假设当前温度为40,温度的变化范围为0-100度
/R 100.0, VD300 //标准化为0.0-1.0之间的实数
CALL SBR0 //调用子程序
Network 2
// 将已经标准化的测量值送VD200,根据回路表及本例的规定,VD200中存放的是过程变量值,此处将标准化过的VD300送VD200,以便开始PID运算。注意,如果是实际的模拟量采样值比如AIW0,则就必须用除以量程范围值得(单极性是32000,双极性是000)到标准化值
LD SM0.0
MOVR VD300, VD200 // 将模拟量通道采集数据(单极性,这里用VW300模拟)整数送VD200
Network 3
// 将设定值送VD204中并标准化,
LD SM0.0
MOVR VD104, VD204 // 将设定值的原始值移至SP(见回路表)
/R 100.0, VD204 // 标准化设定值
Network 4
// 用SM0.0一直调用PID调节运算,第0号回路起始地址为VB200,因S7-200中的地址必须用字节表示,故此处的VB200是第0号回路表的起始地址。注意如果是真的采集模拟量,就要用中断方式调用PID运算,而不是此处的一直调用
LD SM0.0
PID VB200, 0
Network 5
// 输出量转换,VD208中所存值为PID运算的输出量,其为0.0-1.0之间的实数,将其乘以100,正好可以作为后面矩形脉冲的宽度或者间隙值,即为T37和T38等等定时器的PT值送VW0,同时又可以作为百分数值
LD SM0.0 //
MOVR VD208, AC1 //此行与下面一行结合,使PID输出值(0.0-1.0之间的实数)乘以100得到百分数
*R 100.0, AC1
ROUND AC1, AC1 // 取整
DTI AC1, VW0 //将取整后的32位整数转换为16位整数送VW0中
Network 6
// 下面几个网络产生脉冲,在周期为10秒的时间内轮流接通Q1.0(接电加热器)和Q1.1(接冷却风扇)
// 同时设置一个周期为30秒的矩形波,其周期等于VW0+VW2=100,这里假定VW0与VW2之和不大于100
LD SM0.0
MOVW +100, VW2 //100对后面的T37和T38来说是200个100ms即10秒
-I VW0, VW2 //
Network 7
// 产生矩形波脉冲,周期为VW0+VW2
LD SM0.0
AN T38
TON T37, VW2
Network 8
LD T37
TON T38, VW0
Network 9
// T37接通期间接通Q1.0,模拟电阻丝加热,温度升高
LD T37
= Q0.0
Network 10
// T37断开期间接通Q1.1,模拟冷却风扇启动,温度降低
LDN T37
= Q0.1
Network 11
// 升高采用模拟方法:用T39生成间隔为0.1秒的定时脉冲
LD SM0.0
A T37
AN T39
TON T39, 1
Network 12
// 在定时脉冲作用下,每0.1秒让温度升高0.1度,对此题来说是让标准化数VD300增0.001,模拟加热
LD T39
+R 0.001, VD300
AENO
MOVR VD300, VD200
Network 13
// 下降采用模拟方法:用T40生成间隔为0.1秒的定时脉冲
LD SM0.0
AN T37
AN T40
TON T40, 1
Network 14
// 在定时脉冲作用下,每0.1秒让温度下降0.1度,对此题来说是让标准化数VD300减0.001,模拟冷却
LD T40
-R 0.001, VD300
AENO
MOVR VD300, VD200
子程序:
TITLE=子程序注释
BEGIN
Network 1 // // 初始化,载入PID参数,并附加PID中断例行程序
// 第0号回路表起始地址VB200,回路表具体内容见廖常初教材P192表8-3,VD104中存储的是设定的实际值,不是标准化值!后面要用的。
LD SM0.0 // 载入温度设定值=90摄氏度,注意是装入VD104中,后面要除以100
MOVR 20.0, VD212 // 载入增益 = 20
MOVR 0.2, VD216 // 载入采样时间 = 0.2秒
MOVR 30.0, VD220 // 载入积分时间 = 30分钟
MOVR 0.0, VD224 // 设置无微分计算
回路表符号:(详见教材P192表8-3)
PID0_Table VB200 PID 0 的回路表起始地址
PID0_PV VD200 标准化的过程变量
PID0_SP VD204 标准化的过程给定值
PID0_Output VD208 标准化的回路输出计算值
PID0_Gain VD212 回路增益
PID0_SampleTime VD216 采样时间 (要修改请重新运行 PID 向导)
PID0_I_Time VD220 积分时间
PID0_D_Time VD224 微分时间
