【步骤详解】西门子 PLC PID组态设置及PID常见问题解答
本文作者:技成徐陈爽
01 PID控制知识讲解
S7-200 SMART能够进行PID控制。S7-200 SMART CPU最多可以支持8个PID控制回路(8个PID指令功能块)
PID是闭环控制系统的(比例-积分-微分)
PID控制器根据设定值(给定)与被控对象的实际值(反馈)的差值,按照PID算法计算出控制器的输出量,控制执行机构去影响被控对象的变化。
PID控制是负反馈闭环控制,能够抑制系统闭环内的各种因素所引起的扰动,使反馈跟随给定变化。
根据具体项目的控制要求,在实际应用中有可能用到其中的一部分,比如常用的是PI(比例-积分)控制,这时没有微分控制部分。
PID算法在S7-200 SMART中的实现
PID控制最初在模拟量控制系统中实现,随着离散控制理论的发展,PID也在计算机化控制系统中实现。
02 PID向导组态设置
Micro/WIN SMART提供了PID Wizard(PID指令向导),可以帮助用户方便地生成一个闭环控制过程的PID算法。此向导可以完成绝大多数PID运算的自动编程,用户只需在主程序中调用PID向导生成的子程序,就可以完成PID控制任务。
PID向导既可以生成模拟量输出PID控制算法,也支持开关量输出;既支持连续自动调节,也支持手动参与控制。建议用户使用此向导对PID编程,以避免不必要的错误。
PID向导编程组态步骤:
1.在Micro/WIN SMART中的工具菜单中选择PID向导:
图1. 在工具栏中选择PID向导
图2.在项目树中打开'向导'文件夹,然后双击'PID',或选择'PID'并按回车键。
定义需要配置的PID回路号
图3.在此对话框中选择要组态的回路?
图4.最多可组态 8 个回路。在此对话框上选择回路时,PID 向导左侧的树视图随组态该回路所需的所有节点一起更新。
2.为回路组态命名
图5.可为回路组态自定义名称。此部分的默认名称是'回路 x',其中'x'等于回路编号
3.设定PID回路参数
图6.设置PID参数中定义了PID回路参数,这些参数都应当是实数:
增益:即比例常数,默认值=1.00。
1积分时间:如果不想要积分作用可以将该值设置很大(比如10000.0),默认值=10.00。
2微分时间:如果不想要微分回路,可以把微分时间设为0 ,默认值=0.00。
3采样时间:是PID控制回路对反馈采样和重新计算输出值的时间间隔,,默认值=1.00。在向导完成后,若想要修改此数,则必须返回向导中修改,不可在程序中或状态表中修改。
注意:关于具体的PID参数值,每一个项目都不一样,需要现场调试来定,没有所谓经验参数。
4.设定回路过程变量
图7. 设定PID输入过程变量
指定回路过程变量 (PV) 如何标定。可以从以下选项中选择:
1.单极性:即输入的信号为正,如0-10V或0-20mA等
2.双极性:输入信号在从负到正的范围内变化。如输入信号为±10V、±5V等时选用
3.选用20%偏移:如果输入为4-20mA则选单极性及此项,4mA是0-20mA信号的20%,所以选20% 偏移,即4mA对应5530,20mA对应27648。
4.温度 x 10 °C
5温度 x 10 °F
反馈输入取值范围
1在a.设置为单极时,缺省值为0 - 27648,对应输入量程范围0 - 10V或0 - 20mA等,输入信号为正
2在a.设置为双极时,缺省的取值为-27648 - +27648,对应的输入范围根据量程不同可以是±10V、±5V等
3在a.选中20% 偏移量时,取值范围为5530 - 27648,不可改变
在'标定'(Scaling) 参数中,指定回路设定值 (SP) 如何标定。默认值是 0.0 和 100.0 之间的一个实数。此反馈输入也可以是工程单位数值,参见:设置给定-反馈的量程范围。
5.设定输入回路输出选项
图8. 设定PID输出选项
1输出类型可以选择模拟量输出或数字量输出。模拟量输出用来控制一些需要模拟量给定的设备,如比例阀、变频器等;数字量输出实际上是控制输出点的通、断状态按照一定的占空比变化,可以控制固态继电器(加热棒等)
选择模拟量则需设定回路输出变量值的范围,可以选择:
1. 单极:单极性输出,可为0-10V或0-20mA等
2. 双极:双极性输出,可为正负10V或正负5V等
3. 单极20% 偏移量:如果选中20% 偏移,使输出为4 - 20mA
4. 取值范围:
0. c为单极时,缺省值为 0 到 27648
0. c为双极时,取值-27648 到27648
0. c为20%偏移量时,取值5530 - 27648 ,不可改变
如果选择了开关量输出,需要设定此循环周期
图9. 设定PID输出为数字量
6.设定回路报警选项
图10. 设定回路报警限幅值
向导提供了三个输出来反映过程值(PV)的低值报警、高值报警及过程值模拟量模块错误状态。当报警条件满足时,输出置位为1。这些功能在选中了相应的选择框之后起作用。
1. 使能低值报警并设定过程值(PV)报警的低值,此值为过程值的百分数,缺省值为0.10,即报警的低值为过程值的10%。此值最低可设为0.01,即满量程的1%
2. 使能高值报警并设定过程值(PV)报警的高值,此值为过程值的百分数,缺省值为0.90,即报警的高值为过程值的90%。此值最高可设为1.00,即满量程的100%
3. 使能过程值(PV)模拟量模块错误报警并设定模块于CPU连接时所处的模块位置。'EM0'就是第一个扩展模块的位置
7.定义向导所生成的PID初始化子程序和中断程序名及手/自动模式
图11. 指定子程序、中断服务程序名和选择手动控制
向导已经为初始化子程序和中断子程序定义了缺省名,你也可以修改成自己起的名字。
1. 指定PID初始化子程序的名字。
2. 指定PID中断子程序的名字注意:
1. 如果你的项目中已经存在一个PID配置,则中断程序名为只读,不可更改。因为一个项目中所有PID共用一个中断程序,它的名字不会被任何新的PID所更改。
2. PID向导中断用的是SMB34定时中断,在用户使用了PID向导后,注意在其它编程时不要再用此中断,也不要向SMB34中写入新的数值,否则PID将停止工作。
3. 此处可以选择添加PID 手动控制模式。在PID手动控制模式下,回路输出由手动输出设定控制,此时需要写入手动控制输出参数一个0.0-1.0的实数,代表输出的0%-100%而不是直接去改变输出值。PID控制的自动/手动之间的无扰动切换
8.指定PID运算数据存储区
图12. 分配运算数据存储区
PID指令(功能块)使用了一个120个字节的V区参数表来进行控制回路的运算工作;除此之外,PID向导生成的输入/输出量的标准化程序也需要运算数据存储区。需要为它们定义一个起始地址,要保证该地址起始的若干字节在程序的其它地方没有被重复使用。如果点击'建议',则向导将自动为你设定当前程序中没有用过的V区地址。
自动分配的地址只是在执行PID向导时编译检测到空闲地址。向导将自动为该参数表分配符号名,用户不要再自己为这些参数分配符号名,否则将导致PID控制不执行。
9.生成PID子程序、中断程序及符号表等
一旦点击完成按钮,将在你的项目中生成上述PID子程序、中断程序及符号表等。
图13. 生成PID子程序、中断程序和符号表等
10.配置完PID向导,需要在程序中调用向导生成的PID子程序程
图14. PID子程序
调用PID子程序
在用户程序中调用PID子程序时,可在指令树的程序块中用鼠标双击由向导生成的PID子程序,在局部变量表中,可以看到有关形式参数的解释和取值范围。
1. 必须用SM0.0来使能 PIDx_CTRL 子程序,SM0.0 后不能串联任何其他条件,而且也不能有越过它的跳转;如果在子程序中调用 PIDx_CTRL 子程序,则调用它的子程序也必须仅使用 SM0.0 调用,以保证它的正常运行
2. 此处输入过程值(反馈)的模拟量输入地址
3. 此处输入设定值变量地址(VDxx),或者直接输入设定值常数,根据向导中的设定0.0-100.0,此处应输入一个0.0-100.0的实数,例:若输入20,即为过程值的20%,假设过程值AIW0是量程为0-200度的温度值,则此处的设定值20代表40度(即200度的20%);如果在向导中设定给定范围为0.0 - 200.0,则此处的20相当于20度
4. 此处用I0.0控制PID的手/自动方式,当I0.0为1时,为自动,经过PID运算从AQW0输出;当I0.0为0时,PID将停止计算,AQW0输出为ManualOutput(VD4)中的设定值,此时不要另外编程或直接给AQW0赋值。若在向导中没有选择PID手动功能,则此项不会出现
5. 定义PID手动状态下的输出,从AQW0输出一个满值范围内对应此值的输出量。此处可输入手动设定值的变量地址(VDxx),或直接输入数。数值范围为0.0-1.0之间的一个实数,代表输出范围的百分比。例:如输入0.5,则设定为输出的50%。若在向导中没有选择PID手动功能,则此项不会出现
6. 此处键入控制量的输出地址
7. 当高报警条件满足时,相应的输出置位为1,若在向导中没有使能高报警功能,则此项将不会出现
8. 当低报警条件满足时,相应的输出置位为1,若在向导中没有使能低报警功能,则此项将不会出现
9. 当模块出错时,相应的输出置位为1,若在向导中没有使能模块错误报警功能,则此项将不会出现
调用PID子程序时,不用考虑中断程序。子程序会自动初始化相关的定时中断处理事项,然后中断程序会自动执行。
11.实际运行并调试PID参数
没有一个PID项目的参数不需要修改而能直接运行,因此需要在实际运行时调试PID参数。
查看数据块以及符号表相应的PID符号标签的内容,可以找到包括PID核心指令所用的控制回路表,包括比例系数、积分时间等等。将此表的地址复制到状态表中,可以在监控模式下在线修改PID参数,而不必停机再次做配置。
参数调试合适后,用户可以在数据块中写入,也可以再做一次向导,或者编程向相应的数据区传送参数。
03 PID组态设置中常问问题
做完PID向导后,如何知道向导中设定值,过程值及PID等参数所用的地址?
做完PID向导后可在符号表中,查看PID向导所生成的符号表(上例中为PID0_SYM),可看到各参数所用的详细地址,及数值范围。
在数据块中,查看PID指令回路表的相关参数。如图所示:
1. 做完PID向导后,如何在调试中修改PID参数?
答:可以在状态表中,输入相应的参数地址,然后在线写入用户需要的PID参数数值,这样用户就可根据工艺需要随时对PID参数、设定值等进行调整。
2.PID已经调整合适,如何正式确定参数?
答:可以在数据块中直接写入参数。
3.做完PID向导后,能否查看PID生成的子程序,中断程序?
答:PID向导生成的子程序,中断程序用户是无法看到的,也不能对其进行修改。没有密码能够打开这些子程序,一般的应用也没有必要打开查看。
4.PID参数有经验值吗?
答:每一个项目的PID 参数都不一样,没有经验参数,只能现场调试获得。
5.我的PID向导生成的程序为何不执行?
答:必须保证用SM0.0无条件调用PID0_CTRL程序
在程序的其它部分不要再使用SMB34定时中断,也不要对SMB34赋值
6.如何实现PID反作用调节?
答:在有些控制中需要PID反作用调节。例如:在夏天控制空调制冷时,若反馈温度(过程值)低于设定温度,需要关阀,减小输出控制(减少冷水流量等),这就是PID反作用调节(在PID正作用中若过程值小于设定值,则需要增大输出控制)。若想实现PID反作用调节,需要把PID回路的增益设为负数。对于增益为0的积分或微分控制来说,如果指定积分时间、微分时间为负值,则是反作用回路。
7.如何根据工艺要求有选择地投入PID功能?
答:可使用'手动/自动'切换的功能。PID向导生成的PID功能块只能使用SM0.0的条件调用。
你了解怎么使用西门子plc进行PID编程吗?
1.注意信号区分
注意区分输入端接的是电压信号还是电流信号;输出端是电流信号还是电压信号。在模拟模块上不同信号下的接线方式。
2.了解信号元件
如使用温度变送器,要了解温度变送器测量范围,如0~100℃;输出电流范围4~20mA;分度号是什么,如PT100;接线原理图等。相关输入元件;输出元件在模拟模块上的接线方式。其他如工程要求的精度是多少等。
3.PID设定值
模拟量值和A/D转换值的转换
假设模拟量的标准电信号是A0—Am(如:4—20mA),A/D转换后数值为D0—Dm(如:6400—32000),设模拟量的标准电信号是A,A/D转换后的相应数值为D,由于是线性关系,函数关系A=f(D)可以表示为数学方程:
A=(D-D0)×(Am-A0)/(Dm-D0)+A0。
根据该方程式,可以方便地根据D值计算出A值。将该方程式逆变换,得出函数关系D=f(A)可以表示为数学方程:
D=(A-A0)×(Dm-D0)/(Am-A0)+D0。
具体举一个实例,以S7-200和4—20mA为例,经A/D转换后,我们得到的数值是6400—32000,即A0=4,Am=20,D0=6400,Dm=32000,代入公式,得出:
A=(D-6400)×(20-4)/(32000-6400)+4
假设该模拟量与AIW0对应,则当AIW0的值为12800时,相应的模拟电信号是6400×16/25600+4=8mA。
又如,某温度传感器,-10—60℃与4—20mA相对应,以T表示温度值,AIW0为PLC模拟量采样值,则根据上式直接代入得出:
T=70×(AIW0-6400)/25600-10
可以用T 直接显示温度值。
模拟量值和A/D转换值的转换理解起来比较困难,该段多读几遍,结合所举例子,就会理解。为了让您方便地理解,我们再举一个例子:
某压力变送器,当压力达到满量程5MPa时,压力变送器的输出电流是20mA,AIW0的数值是32000。可见,每毫安对应的A/D值为32000/20,测得当压力为0.1MPa时,压力变送器的电流应为4mA,A/D值为(32000/20)×4=6400。
由此得出,AIW0的数值转换为实际压力值(单位为KPa)的计算公式为:
VW0的值=(AIW0的值-6400)(5000-100)/(32000-6400)+100(单位:KPa)
假定我们将控制温度定位23.5℃;以单极性为例,首先应确定输入信号是0~10V电压信号还是4~20mA电流信号,这在PID设定值中非常重要。
如是0~10V电压输入信号对应0~32000,温度范围0~100℃,设定值为可直接算出:VD204=23.5/(100-0)=0.235;
若是电流4~20mA,其对应数值应为6400~32000,温度范围0~100℃,则设定值应为0.388。
原因:模拟模块中0~32000对应0~20mA;其中6400~32000对应4~20mA对应0~100℃;这就必须进行相关的计算,23.5℃电流计算方式:
(20-4):(100-0)=(X-4):23.5;
解方程:X=7.76(mA)。
设定值:VD204=7.76/20=0.388
4.PID输出值
以单极性为例,应确定输出信号是0~10V电压信号还是4~20mA电流信号对应着0~32000
若是输出信号AQW0对应电压信号,比如0~10V,则AQW0=(实数VD208*32000在转化成整数)即可;
若是输出信号AQW0对应电流信号,比如4~20mA,则AQW0=(实数VD208*32000在转化成整数+6400)。
5.PID恒温控制
通过上机实验可知:PID恒温控制是围绕着设定值进行调节的。若设定温度为23.5℃;当温度低于设定值时,加温蒸汽调节阀始终处于全部打开状态,;当温度达到23.5℃,加温用的蒸汽调节阀开始逐渐关闭,在关闭过程中,温度有可能仍在渐渐上升,温度偏离越大,关闭速度越快;知道全部关闭为止;当温度再次低于设定值时,加温蒸汽调节阀则会逐渐打开,打开速度取决于温度偏离值的大小,偏离越大,打开速度越快;直到温度再次达到设定值。若温度长时间未达到设定值,调节功能会将调节阀全部打开,这就是我所观察到的PID恒温控制情况。所以,我们可以根据实控情况进行必要的编程,有效的利用低于设定值时PID控制时段;切断高于设定值部分的PID控制,在温度高于设定值后,即可根据生产要求干脆部分或全部关闭加温阀。以防温度上升过高。来求得优越的温控效果。
相关问答
plc如何实现pid控制?
PLC实现PID(比例、积分、微分)控制相对还是比较简单的,因为现在很多PLC都具有PID控制指令,像三菱、西门子等都能够完成PID的控制,下面我们以三菱PLC为例来说...P...
PLC实现PID控制该怎么做?
PLC基本有自带的PID功能块。把要控制的值,连到PID的PV值,PID的输出值,连到要控制的设备,然后整定PID的参数就可以了。PLC基本有自带的PID功能块。把要控制的...
plc怎样控制温度?
PLC可以通过多种方式控制温度,最常用的方法是使用传感器监测温度,并根据设定的温度值控制加热或冷却设备的输出功率,从而实现温度的控制。PLC还可以通过PID控...
plc如何自己编写pid功能?
回答如下:编写PLCPID功能的基本步骤如下:1.确定PID算法的具体实现方式,包括比例系数、积分时间和微分时间等参数。2.读取输入信号,例如温度、压力等变量...
温度PID可控制如何接线,由哪些部件组成?-陈用心の麻麻的...
温度PID可控制的接线:接线图如图:由于固态继电器输出是采用脉冲开关形式,因此采用plc的晶体管输出,型号为CPU224DC/DC/DC。对于扩展模块EM2314TC的...
三菱plc怎样控制温度?
控制温度基本上有两种方法:一通过时间控制,温度不需要精确控制时就可以采取这样的方法,通过plc内的定时器控制输出端。二通过温度传感器控制,通过温度传...
PLC实现PID控制?
PLC实现PID的控制方式是什么?1、PID过程控制模块,这种模块的PID控制程序是PLC生产厂家设计的,并存放在模块中,用户使用时序要设置一些参数,使用起来非...PLC...
温度PID可控制如何接线,由哪些部件组成?-阿狸的女友的回...
温度PID可控制的接线:接线图如图:由于固态继电器输出是采用脉冲开关形式,因此采用plc的晶体管输出,型号为CPU224DC/DC/DC。对于扩展模块EM2314TC...
怎样用PLC控制恒温?
采集温度,输入plc,内部pid控制,控制输出数值控制阀门或调功器的等。也可以用温度控制器控制,开关量或模拟量输出控制接触器或阀门等采集温度,输入plc,内部pi...
PID在plc里是什么?
plc里PID,就是“比例(proportional)、积分(integral)、微分(derivative)”,是一种很常见的控制算法。在工程实际中,应用最为广泛的调节器控制规律为比例...pl....
扫一扫微信交流