温度PID控制功能块FB58使用入门.docx
《温度PID控制功能块FB58使用入门.docx》由会员分享,可在线阅读,更多相关《温度PID控制功能块FB58使用入门.docx(27页珍藏版)》请在冰点文库上搜索。
![温度PID控制功能块FB58使用入门.docx](https://file1.bingdoc.com/fileroot1/2023-5/18/38adcd97-3803-4560-adf2-7f1b27b17f1c/38adcd97-3803-4560-adf2-7f1b27b17f1c1.gif)
温度PID控制功能块FB58使用入门
15-1-22SiemensIndustryOnlineSupport-AutomationService,AutomationSupport,SimaticService,SimaticSupport,TechnicalSupport,TechnicalConsulting自动化技术>自动化技术>工业自动化系统SIMATIC>工业软件>运行软件>Loadablefunction
blocks>标准PID控制
温度PID控制功能块FB58使用入门
1FB58基本特性介绍
在标准库(Libraries/StandardLibrary/PIDControlBlocks)中的PID控制块中提供了两个用于温度控制的
功能块FB58和FB59。
其中,FB58用于具有连续或脉冲输入信号的执行器的温度控制器,而FB59用于类
似于定位电机的执行器的步进温度控制器。
除了基本的功能之外,FB58还提供PID的参数自整定功能。
PID功能块是纯软件控制器,相关运算数据存放在相应的背景数据块中,对于不同的回路,应该使用不同
的背景数据块,否则会导致PID运算混乱的错误。
FB58可以用在仅加热的温度控制回路(例如控制蒸汽的供给量来控制温度),也可以用在仅冷却的温度
控制回路(例如控制冷却风扇的频率、或者冷媒的供给量来控制温度)。
如果用于冷却,则回路工作在反
作用状态,则需要给比例增益参数GAIN分配一个负数,其他保持不变。
和常规PID功能块(例如FB/SFB41)对比,FB58具有如下特性:
提供控制带(ControlZone)功能;
控制输出提供脉冲方式;
过程值转换增加对温度信号转换(PV_PER*0.1/0.01)方式的支持;
参数保存和重新装载;
控制器参数自整定功能;
设定值变化时的比例作用弱化功能。
2FB58基本使用
2.1功能块调用
在STEP
7中,提供了关于FB58和FB59的一个示例项目,其路径如下图所示:
图1FB58/59示例项目
该示例项目包含有如下几个示例程序:
(1)连续控制器Continuouscontroller
输出类型是连续数值的一类控制器,其中的FB100和DB100是一个模拟的控制对象;
(2)脉冲控制PulsecontrolOB35,OB1
输出类型是单个脉冲信号的一类控制,在OB35和OB1中同时调用,其中的FB102和DB102是一个模拟的
接收脉冲信号的控制对象;
(3)脉冲控制PulsecontrolOB35,OB32
输出类型是单个脉冲信号的一类控制,在OB35和OB32中同时调用,其中的FB102和DB102是一个模拟的
接收脉冲信号的控制对象。
和上一个项目不同,这个项目要求运行的CPU能够支持OB32定时中断,例如
S7-400CPU;
(4)脉冲控制器Pulsecontroller
输出类型是单个脉冲信号的一类控制,只在OB35中调用,其中的FB102和DB102是一个模拟的接收脉冲
信号的控制对象。
和前面两个项目不同,这个项目只在OB35中调用一次FB58即可;
(5)步进控制器Stepcontroller
输出类型是两个脉冲信号的一类控制,只在OB35中调用,其中的FB101和DB101是一个模拟的控制对
象,例如步进电动阀门。
这是一个FB59的应用示例。
通过示例项目可以测试FB58的各项功能。
在具体的编程过程中,可以从示例项目中将相关功能块、组织
块、背景数据块拷贝过来,也可以直接编程调用。
在STEP
7中创建一个OB35,打开并在其中添加FB58:
图2调用FB58
如上图所示,在左侧的总览列表中,依次进入“Libraries”“StandardLibrary”“PIDControlBlocks”,在
其中拖拽FB58到右侧编程窗口中。
填写一个背景数据块(例如DB58),由于是新建的一个DB块,软件会
弹出如下窗口:
图3生成背景数据块
点击“Yes”即可生成一个用于FB58的背景数据块。
在块(“Blocks”)中找到刚生成的DB块,双击打开:
图4背景数据块
在背景数据块中可以直接修改相关的控制参数,然后点击工具栏上的按钮来下载参数。
如果需要查看
更加具体的参数信息,可以切换到数据视图:
图5切换到数据视图
在数据视图中,可以点击工具栏上的来进行在线监控。
2.2过程值的处理
在FB58中,对模拟量的处理遵照如下流程图:
图6过程值处理流程
如图中所示,FB58提供有两个过程值的输入通道:
PV_IN和PV_PER,这两个通道用PVPER_ON来选择:
表1PVPER_ON参数
过程值输入
True模拟量输入通道的数值直接从PV_PER输入
False过程量以浮点型数据从PV_IN输入
注:
PVPER_ON的默认值为False。
对于PV_PER的输入,根据温度测量方式的不同,从模拟量输入通道过来的数据格式也有所不同,因此,
FB58提供过程值格式转换的环节CRP_IN,其中涉及到参数PER_MODE:
表2PER_MODE参数
转换方式单位
0PV_PER*0.1℃/℉
1PV_PER*0.01℃/℉
2PV_PER*100/27648/电流百分数%
注:
PER_MODE的默认值为0。
从图1中的处理流程中可以看到经过CRP_IN之后,还有一个规格化(Normalize)的环节PV_NORM。
该
环节可以对过程值进行修正,对于温度值,可以规格化为百分比值,同样地,百分比的值也可以规格化为
温度值。
其转换公式是:
PV_NORM的输出=CPR_IN的输出*PV_FAC+PV_OFFS
例如,通过温度变送器将一个-200℃~1000℃范围里的温度值以4~20mA的信号送至模拟量输入通道
PIW256中。
在FB58中设置
PV_PER=PIW256
PVPER_ON=TRUE
PER_MODE=2
PV_FAC=1.2
PV_OFFS=-200.0
通过如上的参数设置,则在“PV”参数中得到一个温度值。
同样地,此时的设定值SP_INT可以直接设置为
温度值。
设定值SP_INT的取值由过程值的处理过程所决定,如果过程值经过处理得到一个百分比的值,那么
SP_INT就是一个量程的百分比;如果处理得到一个实际温度值,那么设定值SP_INT也必须是一个温度
值。
SP_INT必须要有和过程值一样的基本单位。
2.3PID运算
PID运算是FB58的运算核心,主要通过对偏差信号(设定值S
P_INT-过程值PV)进行比例、积分、微分运算来得到对阀门、变频器等执行机构的控制信号。
具体流图如下图所示:
图7PID运算流程
从上述流程图中有如下几点信息:
-比例、积分和微分都是对比例和增益参数的乘积之积的运算,其在时间域上的表达式为:
-特殊地,在积分时间TI和微分时间TD为0的时候,积分作用和微分作用被取消激活,此时为纯比例控制;
-对于反作用方式,需要将增益GAIN设置为负数;
-PFAC_SP为比例弱化功能。
在设定值SP_INT发生阶跃变化时,设置比例因子PFAC_SP,从而达到减弱
因为设定值修改而导致的不稳定,该比例因子PFAC_SP的取值范围是0.0~1.0;
-对于积分作用,在I_ITL_ON为1的时候,积分结果就是I_ITLVAL;
-积分功能中的INT_HPOS和INT_HNEG参数为正向积分功能保持和反向积分功能保持,如果此时偏差ER
和增益GAIN的乘积为正,且INT_HPOS为True,那么此次运算周期中积分的增加量为0,即积分项LMN_I
的输出不会改变。
INT_HNEG的作用与此类似。
-微分功能中的D_F参数是微分因子,在微分运算中和周期时间CYCLE作用类似。
2.4手动/自动切换
FB58的手动/自动切换是通过参数MAN_ON来完成的,在MAN_ON为True的时候,PID处在手动工作状
态,此时,手动值通过参数MAN给出。
图8控制输出
默认情况下,LMN_HLM和LMN_LLM分别是100.0和0.0,从上图中可以看出,手动值的有效数值范围也应
该是0.0~100.0。
在参数MAN_ON为False的情况下,PID投入运行,控制回路处于自动工作状态。
为了降低手动/自动切换过程中扰动,算法通过如下措施来实现无扰切换:
-在自动的状态下,比例和积分的运算结果之和会写入到单元MAN中,这样在由自动切换到手动的过程中
不会引起控制输出波动;
-在手动的状态下,积分项的输出等于MAN的值减去比例项的值(偏差ER*增益Gain),而在自动状态
中,积分项是一个累计的结果,这样在切换到自动状态时积分项不会有太大的突变。
从上面的分析可以知道,FB58
已经集成了相应的无扰切换的功能,不需要编写额外的程序来实现。
2.5保存和重新装载参数
保存和重新装载控制器参数是FB58中的新功能,主要用来实现在多套参数之间的切换。
图9控制参数保存和重新装载
从上图中可以看出,控制参数的处理有三种方式:
(1)从PID_CON/PI_CON中装载
要实现此装载,必须满足如下几种条件:
手动控制状态(MAN_ON=True);
PID_CON.GAIN或者PI_CON.GAIN不为0;
LOAD_PID为1
如果参数PID_ON为1,则从PID_CON中装载如下参数:
GAIN、TI、TD,并计算CONZONE=250.0/GAIN
如果参数PID_ON为0,则从PI_CON中装载如下参数:
GAIN、TI、TD,并计算CONZONE=250.0/GAIN。
特殊地,此时会关闭控制带功能,即设置CON_ZONE
参数为0,并让微分参数TD设置为0.0。
装载完成之后,参数LOAD_PID会自动复位。
值得注意的是,如果PID_CON中保存的增益参数PID_CON.GAIN为0,则自动会修改PID_ON为0,并转而
从PI_CON中获取参数。
注:
PID_CON/PI_CON中的参数来自于自整定过程。
(2)保存参数
保存参数可以在任何工作状态下进行,只需设置参数SAVE_PAR为1即可。
可以将如下参数保存找
PAR_SAVE结构体中:
PFAC_SP、GAIN、TI、TD、D_F、CONZ_ON、CON_ZONE
在保存结束之后,参数位SAVE_PAR会自动复位。
(3)重新装载参数
重新装载是“保存参数”的逆过程,但其执行是需要条件的:
手动控制状态(MAN_ON=True);
PAR_SAVE.GAIN不为0;
参数UNDO_PAR为1。
在重新装载完成之后,参数UNDO_PAR会自动复位。
3高级功能
3.1控制带
温度控制回路是一个有明显滞后特性的对象,这给实际的调节过程带来了很多的问题,最显著的困难就是
在过程值偏离设定值较大时,调节过程过于缓慢,而在接近设定值时容易出现较大的超调。
从上述的两个问题出发,PID应该满足这样的功能:
-在偏差超过一定的范围时,PID输出最大或者最小的调节量,让温度值快速回到一个小的范围中,以缩短
回路的调节时间;
-在设定值附近时,越靠近调节量变化越小,以防止超调。
为此,FB58提供了一个“控制带(ControlZone)”功能,其工作原理是这样的:
-当过程值PV大于设定值SP_INT,且偏差的绝对值超过CON_ZONE,则以输出下限LMN_LLM作为输出
值;
-当过程值PV小于设定值SP_INT,且偏差的绝对值超过CON_ZONE,则以输出上限LMN_HLM作为输出
值;
-如果偏差的绝对值小于CO
N_ZONE,则以实际PID的计算结果作为输出值。
图10控制带(正作用情况下,即GAIN>0.0)
默认参数中LMN_LLM是0.0,LMN_HLM是100.0,控制带使能位CONZ_ON是False,控制带范围是
100.0。
如上图所示的控制带解决了在偏差较大时PID调节过于缓慢的问题,但在控制带范围中要避免因大滞后导
致的超调,需要弱化PID的输出,要实现这个功能,可以通过降低比例参数和增加微分作用。
在同样的偏
差情况下,比例增益越小,PID输出变化越缓慢。
微分作用简单来看就是通过偏差的变化量来调节,在接
近设定值的过程中,温度变化速度在逐步变慢,此时的微分作用可以起到弱化控制输出的功能,进而达到
减少超调的目的。
因此,推荐控制带在有微分作用的前提下使用。
参数装载的过程也体现了这一点:
-如果是装载PI_CON下的参数,因为没有微分功能,所以会设置CONZ_ON为False。
在使用过程中,控制带参数CON_ZONE应该始终设置为一个大于等于0.0的值,否则会导致PID运算结果
永远不会被执行的故障现象。
3.2脉冲输出方式
和FB41不同,FB58中集成有脉宽调制输出的功能,通过将PID的运算结果换算成对应的脉冲占空比来达
到加热/冷却的控制。
在FB58的脉冲输出环节中涉及到的关键参数有:
PULSE_ON:
脉冲输出使能;
PER_TM:
输出脉冲的周期时间;
CYCLE_P:
脉冲输出的刷新时间,推荐PER_TM/CYCLE_P>50,即将周期时间分为时间长度为
CYCLE_P的“片”,在每个CYCLE_P时间间隔里,脉冲输出单元运算一次以判断下一个CYCLE_P中应该输
出高电平还是低电平,PER_TM和CYCLE_P的比值越大,说明输出脉冲的精度就也高;
例如当PID的计算输出接近于100.0时,那么输出的脉冲中低电平时间
接近于0,针对执行机构而言,其需要在极短的时间里关断,然后再打开,这会严重缩短设备的工作寿
命,为此,通过设置最小脉冲断开/脉冲时间就可以避免此问题。
当需要输出的高电平时间小于P_B_TM
时,则不会输出这个高电平;当需要输出的高电平时间大于周期时间PER_TM-P_B_TM时,则整个周期都
输出高电平。
P_B_TM设置的过长,可以降低对执行机构的冲击,但会影响输出脉冲和整个回路的控制精
度;设置的过短,则对执行机构不利。
图11脉冲输出
如上图所示,LmnN为PID的运算结果,通过和脉冲周期时间PER_TM相乘得到高电平的输出时间:
脉宽=LmnN*PER_TM/100
脉冲输出单元每次执行都累加一个CYCLE_P,通过判断累加值和脉宽,或者和周期与脉宽差值的比较来
改变输出点的状态。
3.2.1脉冲输出和PID运算
在FB58中,脉冲输出和PID计算是两个相对独立的过程,各自有自己的计算周期。
对于PID计算来说,
CYCLE参数可以看成是PID计算的循环周期时间,例如PID在OB35每次执行过程中都会被调用,而硬件组
态过程中OB35的周期时间被设置成了500ms,则CYCLE应该填写为0.5。
对于脉冲输出来说,其循环周期
时间是CYCLE_P。
这两个时间参数可以一样,也可以不一样。
PID的计算周期主要由被测量的变化规律决
定的,而脉冲输出的CYCLE_P参数由要求的脉冲输出精度决定。
为了协调PID和脉冲输出之间的矛盾,FB58提供了“SELECT”参数,其具体使用如下所示:
表3SELECT的参数配置
块调用功能
S7-300和S7-在周期性中断OB中通过在同一个周期性中断OB中
中,脉冲发生器采样时间SELECT=0进行调用执行控制程序段和脉冲输出
CYCLE_P=100毫秒)
S7-300中,脉冲发生器采在OB1中通过SELECT=1执行在OB1中执行控制程序段
条件调用
CYCLE_P=10毫秒)(QC_ACT=TRUE)
在周期性中断OB中通过在周期性中断OB中执行脉
SELECT=2进行调用冲输出
S7-400中,脉冲发生器采在低速周期性中断OB中通过在低速周期性中断OB中执
(例SELECT=3进行调用行控制程序段
CYCLE_P=10毫秒)在高速周期性中断OB中通过在高速周期性中断OB中执
SELECT=2进行调用行控制程序段
根据上表描述,FB58的调用可以有如下三种情况:
(1)SELECT=0,FB58只在周期中断OB(例如OB35)中调用
此时的参数配置应该将CYCLE_P和周期中断OB的中断时间保持一致。
因为PID计算的执行条件是
CYCLE_P的累计值和CYCLE参数一致,而脉冲输出周期PER_TM则应该CYCLE_P的整数倍,和CYCLE
无关。
例如,在OB35中调用FB58,OB35的周期时间为50ms,FB58中的CYCLE_P是0.05s,CYCLE是1.0s,
PER_TM是3.0s。
观察参数之间的关系,CYCLE是CYCLE_P的20倍,即OB35每20个周期执行一次FB58里的PID计算,而
输出的脉冲周期是3秒钟。
(2)FB58分别在OB1和周期中断OB(例如OB35)中调用
在两个OB块中调用的FB58使用同样的背景数据块和参数,只是SELECT参数有所不同,在OB1中调用,
SELECT设置为1;在周期中断OB中调用,SELECT设置为2。
为了缩短OB1执行时间,可以通过FB58背
景数据块中的“QC_ACT”来选择是否执行FB58,当QC_ACT为TRUE时,执行,否则跳过。
在这种方式下,处理原理同
(1)一致,不同的是PID运算总是在OB1中执行罢了。
OB1的执行周期对PID
运算、脉冲输出均没有影响。
(3)FB58在两个不同周期时间的周期中断OB(例如OB32和OB35)中调用
FB58分别在两个周期中断OB中调用,其中周期时间长的OB中调用的FB58的SELECT参数设置为3,时间
短的设置为2。
同前面两种情况不一样,SELECT选择为3时,PID的运算只和调用周期有关。
例如OB32定义的周期时间
是1000ms,OB35的周期时间是100ms,CYCLE_P是0.02s,PER_TM是1.0s。
这样在OB32中定义
SELECT参数为3,则每1秒钟就执行一次PID运算,并不是由CYCLE和CYCLE_P的关系来决定。
3.2.2参数设置的经验法则
前面的描述说明了CYCLE/CYCLE_P/PER_TM之间的关系,对于具体的参数设置,可以有如下几条法
则:
(1)CYCLE时间不能超过积分时间TI的10%;
(2)为了保证控制精度,脉冲周期时间PER_TM应该至少是CYCLE_P的50倍;
(3)脉冲周期时间CYCLE不能超过积分时间TI的5%。
4自整定功能
FB58的背景数据块中集成了控制器参数整定的功能,打开DB块,点击工具栏的按钮,使DB块在线:
图12背景数据块的参数分配视图的在线
背景数据块在线之后,可以看到,相关的参数均能读取。
点击菜单项“Options”下的“ControllerT
uning...”,
即可开始整定:
图13选择控制器整定菜单
控制器整定的向导一共有5步,第一步是简单的功能介绍:
图14功能介绍
点击“Next”,进入下一步:
图15控制器类型选择
在该窗口中选择是PID控制还是PI控制,该选项对应“PID_ON”参数,如果选择“PIDparameters”,则在点
击“Next”之后,PID_ON会置位。
图16整定激励方法选择
FB58提供两种整定激励,一种是修改设定值,接近工作点(Tunebyapproachingtheoperatingpointwith
asetpointstepchange),另一种是没有设定值阶跃变化,只在工作点整定(Tuneattheopertingpoint
bysettingastart
bit)。
选择第一种,然后点击“Next”:
图17修改设定值下的激励参数
选择修改设定值的激励方式,则需要在上图所示的窗口中填写新的设定值和手动值偏差,其中的手动值偏
差对应的就是参数TUN_DLMN。
默认情况下,设定值是当前DB块中的实际设定值,所以要触发整定,必
须修改这个设定值!
这种修改设定值的激励方式的工作原理如下图所示:
图18修改设定值的激励方式
寻找拐点是整定过程中的关键,如果设定值的阶跃变化过小,则可能在过程值(图中虚线)变化过程中不
会出现拐点;相反地,如果设定值的阶跃变化过大,则可能会造成大的超调,对系统不利。
如果选择没有设定值阶跃变化的整定方式,则激励参数是这样的:
图19无设定值阶跃变化下的激励参数
对比两种窗口,可以发现在无设定值阶跃变化的方式下,设定值是不可设的,而且手动值偏差也是默认为20%。
这种方式下的整定按照如下图所示的流程:
图20无设定值阶跃变化的激励方式
从上图中可以清楚地看到,整个整定过程中,设定值并没有发生改变,只是输出值LMN有一个变化量
TUN_DL
MN,在这个变化量的促使下,过程中出现波动,等检测到拐点之后,变化量消失,系统重新恢复
到设定值上来。
不论哪一种激励方式,在完成配置后点击“Next”,都是开始控制器整定:
图21控制器整定过程
整定过程分为7个阶段,从参数PHASE的值中可以读出,不同阶段的工作内容有所不同:
描述
无整定
检查参数、等待激励、测量采样时间
检测过程值上的拐点
过程参数的计算,保存整定前的参数
控制器设计
处理新的调节量
检测过程类型
注意,整定过程没有阶段6。
整定过程中的状态在变量STATUS_H中显示,具体错误代码对应的含义如下表所示:
表5整定状态代码
STATUS_H诊断消
具体的错误信息可以查看相关手册。
除了STATUS_H之外,从参数STATUS_D中可以显示出整定到的系统类型,具体的参数数值和系统类型
的对应关系,请参看具体手册描述。
如果整定顺利完成,即STATUS_H为10000,优化得到的PID参数会自动写入到相应单元中,原有的参数
会自动保存到PAR_SAVE的结构体中。
在图10中如果选择为“PIDparameters”,那整定得到的参数同时还
会保存到PID_CON结构体中,同样地,选择为“PIparameters”,则会保存在PI_CON中。
5背景数据块
如下是FB58常用参数表:
名称类型初始值注释
PV_IN输入0.0实数类型过程值输入
PV_PER输入0整数类型过程值输入
DISV输入0.0干扰补偿
INT_HPOS输入FALSE正向积分保持开启
INT_HNEG输入FALSE反向积分保持开启
SELECT输入0PID功能和脉冲功能的选择
PV输入0.0过程值
LMN输出0.0实数类型的PID输出控制量
LMN_PER输出0整数类型的PID输出控制量
QPULSE输出FALSE输出脉冲信号
QLMN_HLM输出FALSE控制量到达上限
QLMN_LLM输出FALSE控制量到达下限
QC_ACT输出TRUE下一周期PID是否执行
CYCLE输入_输出0.1PID计算的周期时间
CYCLE_P输入_输出0.02脉冲输出的刷新时间
SP_INT输入_输出0设定值
COM_RST输入_输出FALSE复位
MAN_ON输入_输出TRUE手/自动,默认为手动
DEADB_W静态变量0.0偏差死区
I_ITLVAL静态变量0.0初始积分值
LMN_HLM静态变量100.0控制量上限
LMN_LLM静态变