S7-300 FB41 PID如何设置参数
- 格式:doc
- 大小:25.50 KB
- 文档页数:1
FB41的PID:一、在ob35里面插入FB41,方框顶上会有红字,输入一个类似“DB120”的,系统会问你要不要生成这个Db,yes就可以二、大部分参数不要填,默认就行,下面是常用参数,用变量连接:1、MAN_ON:用一个bool量,如m0.0,为true则手动,为false则自动;2、cycle:T#100MS,这个值与ob35默认的100ms一致;3、SP_INT:MD2,是hmi发下来的设定值,0-100.0的范围,real型;4、PV_IN:md6,实际测量值,比如压力,要从piw×××转换为0-100.0的量程;5、MAN:MD10,op值,也就是手动状态下的阀门输出,real型,0-100.0的范围;6、GAIN:md14,Pid的P啊,默认写1-2吧(系统默认是2),调试的时候再改7、TI:MW20,pid的i啊.默认写T#30S吧,调试的时候改;8、DEAD_W:md22,死区,就是sp和pv的偏差死区,0-100.0的范围,默认0,调试的时候改;输出:9、LMN:MD26,0-100。
0,最终再用fc106转换为word型move到pqw×××,如果pid运算结果不再有工艺条件其他限制可以用LMN_PER更简单就不用fc106了。
三、用plcsim模拟1、手动man_on=true,看输出是否等于man;2、自动man_on=false,调整pv或者sp,使得有偏差大于死区,看输出变化,这里的模拟只能说明pid工作了,不能测试实际调节效果啊。
2、在PID中有不同的物理量,例如温度、压力及阀门开度等,它们的量纲单位均不同,所以要进行规格化工作。
规格化概念及方法:PID参数中重要的几个变量,给定值,反馈值和输出值都是用0.0~1.0之间的实数表示,而这几个变量在实际中都是来自与模拟输入,或者输出控制模拟量的因此,需要将模拟输入转换为0.0~1.0的数据,或将0.0~1.0的数据转换为模拟输出,这个过程称为规格化规格化的方法:(即变量相对所占整个值域范围内的百分比对应与27648数字量范围内的量)对于输入和反馈,执行:变量*100/27648,然后将结果传送到PV-IN和SP-INT对于输出变量,执行:LMN*27648/100,然后将结果取整传送给PQW即可;D:PID的调整方法:一般不用D,除非一些大功率加热控制等惯大的系统;仅使用PI即可,一般先使I等于0,P从0开始往上加,直到系统出现等幅振荡为止,记下此时振荡的周期,然后设置I为振荡周期的0.48倍,应该就可以满足大多数的需求。
使用FB41实现PID控制在自动化领域中常常要用到PID控制,而常规仪表里一个控制器就只能实现一路的PID 控制,如果要现实多路的PID控制成本就会变得非常高,而且不便于我们集中控制与管理。
经过学习西门子S7-300PLC,我们可以使用模块FB41来实现PID控制,FB41就相当于我们常规仪表里的控制器,既然是PID控制器就应该能够设定P、I、D参数。
即:比例度、积分时间、微分时间。
常规仪表的面板上可以更改PID参数,又有手动/自动切换按钮等。
今天我们要做的就是使用S7-300PLC 的FB41来代替常规仪表,如何使用FB41来实现PID控制的呢??FB41是一个功能块,它所能实现的功能(PID)已经由专业人员设计好,我们只要调用它,并根据我们的需要来更改相应的参数即可使用。
所以我们不用理会FB41是如何实现比例运算、积分运算、微分运算等等这些问题,只需要会调用就可以了。
现在我们已经知道FB41就相当于常规仪表里的一个控制器了,那么我们是如何使用FB4 1并给它设置相应的参数呢??FB41相当于一个子程序,它是用来实现PID运算的,我们只需要每隔一段时间去调用这一“子程序”就可以实现PID控制。
所以我们在OB35里调用FB41就可以了,调用的频率可以在属性里面设置。
我们是在OB35里调用FB41的所以在OB35里可以看到FB41的端口。
因此可以直接在这些端口上直接设参数。
如下图所示到这里有人会问,既然可以在OB35里面可以直接给FB41端口赋参数,为什么还要背景数据块DB呢???其实PLC在运行过程中会先检查,用户有没有在OB35里给FB41的端口设参数,如果有就直接使用端口上的参数,如果没有就到背景数据表里面去取参数。
所以我们可以在两个地方设置参数,在数据表里面参数只能是一个固定值,不能是一个变量,所以当程序下载到PLC之后就不能更改数据表里面的参数了。
给端口赋参数是一个变量,变量里面存有参数,当我们需要改变参数只需要改变相应的变量就只以了。
S7-300 FB41 PID参数如何设置?来源:作者:时间:2008-02-03 点击:145PID 没有例程和经验值可参考,每个设备都不同,都需要根据现场的设备去调试。
有时同样的两套设备P、I、D参数都会不同。
所以PID 的参数也需要根据实际情况一点点试。
下面的步骤仅供参考。
PID的调用要在OB35中完成.在ob35里面插入FB41,方框顶上会有红字,输入一个DB块如“DB20”。
系统会问你要不要生成这个DB,选yes就可以。
大部分参数不要填,默认就行,下面是常用参数,用变量连接:1、MAN_ON:用一个bool量,如m0.0,为true则手动,为false则自动;2、cycle:T#100MS,这个值与ob35默认的100ms一致;3、SP_INT:MD2,是hmi发下来的设定值,0-100.0的范围,real型;4、PV_IN:MD6,实际测量值,比如反馈的氧浓度,要从piw×××转换为实际的工程量(使用FC105);5、MAN:MD10 (该地址也可以是从上位机设定的地址),是手动状态下的输入值,real型。
手动设多少输出将为多少。
6、GAIN: MD100(该地址也可以是从上位机设定的地址如DB 块的地址,这样可以从上位机设P 参数了),默认写1-2吧(系统默认是2),调试的时候再改。
7、TI:MW120, 默认可以写T#30S吧,调试的时候改;8、DEAD_W:MD122,死区,就是sp和pv的偏差死区,0-100.0的范围,默认0,调试的时候改;输出:9、LMN:MD126,把MD126再用fc106转换到pqw××,如果pid运算结果不再有工艺条件其他限制可以用LMN_PER更简单就不用fc106了。
三、用plcsim模拟1、手动man_on=true,看输出是否等于man;2、自动man_on=false,调整pv或者sp,使得有偏差大于死区,看输出变化,这里的模拟只能说明pid工作了,不能测试实际调节效果啊。
用S7-300PLC进行PID控制——功能块FB41的功能及用法介绍一、控制系统假设图1 液压系统控制框图如图1为液压系统的简单控制框图。
控制方式为使用变频器拖动泵,使系统的实际压力等于设定压力。
本文基于此系统,探讨一下如何用S7-300进行PID控制。
为方便讨论,做以下假定:•· 系统压力的可调范围为:0 – 1MPa;•· 变频器的变频范围为:0 – 50Hz;•· 压力传感器的输入外设地址:PIW272;模拟量输出外设地址为PQW288。
二、FB41简介在STEP7中的库中,有专门用于PID控制的FB块——FB41。
PID控制必须在循环中断中执行,以确保其扫描、执行时间基本固定。
本例中的CPU仅有OB35一个循环中断,因此,要在OB35中调用FB41。
图2 FB41在库中的位置图3 FB41的逻辑图FB41的逻辑如图3所示。
分解介绍如下:•· SP_INT端为给定值,本例中即为给定压力,假设为0.5MPa;即:0.5==>'SP_INT';•· 实际值有两条通路可选:· 当PVPER_ON=0时,PV_IN端的值为实际值,该值通常有FC105转换而来;· 当PVPER_ON=1时,PV_PER端的值为实际的压力值,该值来自AI模块,为压力传感器的反馈值;本例中,我们以PVPER_ON=1时,来说明。
即:1==>'PVPER_ON'、PIW272==>'PV_PER'•· PV_FAC、PV_OFF对应压力的范围,即:1==>'PV_FAC'、0==>'PV_OFF'。
•· PV是根据PV_PER计算出的实际压力值。
具体来说:PV_PER=0时,对应的实际压力为PV_OFF,即0MPa;PV_PER=27648时,对应的实际压力为PV_FAC,即1MPa;PV=PV_PER/27648*(PV_FAC –PV_OFF),本例中,PV=PV_PER/27648;•· ER为给定值SP_INT和实际值PV的偏差,PID即是基于它进行调节的;•· GAIN、TI、TD分别为比例、积分、微分的系数。
PID控制FB41的参数设置
有个PID控制方面的问题请教各位朋友,希望大家指点。
生产线上有个执行机构,主要负责上升和下降动作。
是通过力士乐伺服阀控制,同时依靠位移传感器进行检测上升和下降的距离。
最近发现,PID中SP_INT上升位置为650,可是每次反馈值PV_IN基本在730左右,而且上升的速度比较快,相比较下降,它会在快到最低位置执行减速,可是上升的时候却没实现。
导致上升到最大位置时,撞击声音很大。
昨天晚上,我就参照网上的FB41参数设置资料,对相关参数进行了设置,比如将P和I设置为1,设置LMN_HLM上限值,以及PV_OFF,可是都不起作用。
本来还想改GAIN,可是自己不太懂。
更糟糕的是,之前下降时会有个减速动作,可是现在连下降也不减速了,震动声音很明显。
我已经将所有修改过的地方都恢复成了原样,可是下降时减速现象还是不能恢复。
我现在有两个想法,不知道该怎么实现,请教。
1.如何实现对上升速度进行一个减速,比如现在上升到730,当在700的时候速度变慢,该怎么调试?gain这个参数该怎么设置?一般的设置值是多少?
2.如何在自动运行时设置一个上限值,不超过730,
希望对PID控制熟悉的,指导一下!
图片说明:1,PID控制程序2 2,PID控制程序1
最佳答案
FB41的P比例参数是个实数,从0----无穷大的,越大比例度越大,超调过多,可以减小P,P=1.0不是最小,你的现象是超调过多,需要先减小P,然后观察静差,根据静差调整I来减小静差.微分就不要用了。
本人现用到西门子S7-300(CPU315)做整流系统的PID控制,具体是由AI模块输入4-20MA信号(既A柜/B柜饱和电抗器控制电流信号反馈和机组A柜/B柜直流电流信号反馈),通过CPU调用PID功能块,实现自动闭环控制,最后由AO模块输出一个4-20MA的信号给稳流系统(既A柜/B柜电流给定反馈)。
现请教:1、具体应调用S7的PID中的哪些功能块。
我是直接在OB1里边调用FB41,不知可否。
2、PID标准块FB41的输入输出参数如何整定,PV_PER、SP_INT、PV_IN有何区别。
3、GAIN、TI、TD如何整定。
4、MAN_ON、PVPER_ON怎么用,是直接在FB41的输入端写吗?原理上,PID的调节节奏应该与其采样周期一致,这是数学模型应与物理过程一致的要求。
这也就是FB41要在OB35中周期调用且OB35的周期要与FB41采样周期一致的原因。
当然,在OB1或其他FC、FB中调用FB41也是可以的,此时最好将OB1参数区中扫描周期作为FB41的采样周期。
本人在管道恒流恒压的PID过程控制中,也曾在FC中无条件连续调用FB41,PID效果也还令人满意。
我个人认为,精度要求不高的应用中,简单调用也是可以的。
FB41参数的设置很灵活,可根据自己的习惯或应用的方便选择。
下面是一种方式。
MAN_ON :激活PID手动调节给定值MAN的使能位,可用PID手自动转换位来触发。
PVPER_ON :是PID输入输出参数“PERIPHERAL化”的使能位,即将参数看成0~27648之间的整数。
换个说法,就是PID的反馈值直接取自相应AIW通道,而PID输出则直接给出到AQW通道。
参数整定由FB41完成。
可用调节装置的启动标志来触发本位。
MAN :PID手动调节给定值,当“MAN_ON=1”时有效。
CYCLE :采样周期。
根据物理量变化快慢定,一般要求与FB41执行的周期一致。
SP_INT:PID的设定值。
一、PID控制原理:1、比例(P)控制:比例控制是一种最简单的控制方式。
其控制器的输出与输入误差信号成比例关系。
当仅有比例控制时系统输出存在稳态误差。
2、积分(I)控制:在积分控制中,控制器的输出与输入误差信号的积分成正比关系。
对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统。
为了消除稳态误差,在控制器中必须引入“积分项”。
积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。
这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。
因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。
3、微分(D)控制:在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。
自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。
其原因是由于存在有较大惯性组件(环节)或有滞后组件,具有抑制误差的作用,其变化总是落后于误差的变化。
解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。
这就是说,在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。
所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。
二、PID控制器参数整定的一般方法:PID控制器的参数整定是控制系统设计的核心内容。
它是根据被控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小。
PID控制器参数整定的方法很多,概括起来有两大类:一是理论计算整定法。
它主要是依据系统的数学模型,经过理论计算确定控制器参数。
这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改;二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。
西门子S7-300PLC使用FB41进行闭环PID调节的解释说明2009-03-01 12:07使用FB41进行PID调整的说明FB41称为连续控制的PID用于控制连续变化的模拟量,与FB42的差别在于后者是离散型的,用于控制开关量,其他二者的使用方法和许多参数都相同或相似。
PID的初始化可以通过在OB100中调用一次,将参数COM-RST置位,当然也可在别的地方初始化它,关键的是要控制COM-RST;PID的调用可以在OB35中完成,一般设置时间为200MS,一定要结合帮助文档中的PID框图研究以下的参数,可以起到事半功倍的效果以下将重要参数用黑体标明.如果你比较懒一点,只需重点关注黑体字的参数就可以了。
其他的可以使用默认参数。
A:所有的输入参数:COM_RST: BOOL: 重新启动PID:当该位TURE时:PID执行重启动功能,复位PID内部参数到默认值;通常在系统重启动时执行一个扫描周期,或在PID进入饱和状态需要退出时用这个位;MAN_ON: BOOL:手动值ON;当该位为TURE时,PID功能块直接将MAN的值输出到LMN,这可以在PID框图中看到;也就是说,这个位是PID的手动/自动切换位;PEPER_ON: BOOL:过程变量外围值ON:过程变量即反馈量,此PID可直接使用过程变量PIW(不推荐),也可使用 PIW规格化后的值(常用),因此,这个位为FALSE;P_SEL: BOOL:比例选择位:该位ON时,选择P(比例)控制有效;一般选择有效;I_SEL: BOOL:积分选择位;该位ON时,选择I(积分)控制有效;一般选择有效;INT_HOLD BOOL:积分保持,不去设置它;I_ITL_ON BOOL:积分初值有效,I-ITLVAL(积分初值)变量和这个位对应,当此位ON时,则使用I-ITLVAL变量积分初值。
一般当发现PID功能的积分值增长比较慢或系统反应不够时可以考虑使用积分初值;D_SEL : BOOL:微分选择位,该位ON时,选择D(微分)控制有效;一般的控制系统不用;CYCLE : TIME:PID采样周期,一般设为200MS;SP_INT: REAL:PID的给定值;PV_IN : REAL:PID的反馈值(也称过程变量);PV_PER: WORD:未经规格化的反馈值,由PEPER-ON选择有效;(不推荐)MAN : REAL:手动值,由MAN-ON选择有效;GAIN : REAL:比例增益;TI : TIME:积分时间;TD : TIME:微分时间;TM_LAG: TIME:我也不知道,没用过它,和微分有关;DEADB_W: REAL:死区宽度;如果输出在平衡点附近微小幅度振荡,可以考虑用死区来降低灵敏度;LMN_HLM: REAL:PID上极限,一般是100%;LMN_LLM: REAL:PID下极限;一般为0%,如果需要双极性调节,则需设置为-100%;(正负10V输出就是典型的双极性输出,此时需要设置-100%);PV_FAC: REAL:过程变量比例因子PV_OFF: REAL:过程变量偏置值(OFFSET)LMN_FAC: REAL:PID输出值比例因子;LMN_OFF: REAL:PID输出值偏置值(OFFSET);I_ITLVAL:REAL:PID的积分初值;有I-ITL-ON选择有效;DISV :REAL:允许的扰动量,前馈控制加入,一般不设置;B:部分输出参数说明:LMN :REAL:PID输出;LMN_P :REAL:PID输出中P的分量;(可用于在调试过程中观察效果)LMN_I :REAL:PID输出中I的分量;(可用于在调试过程中观察效果)LMN_D :REAL:PID输出中D的分量;(可用于在调试过程中观察效果)C:规格化概念及方法:PID参数中重要的几个变量,给定值,反馈值和输出值都是用0.0~1.0之间的实数表示,而这几个变量在实际中都是来自与模拟输入,或者输出控制模拟量的因此,需要将模拟输出转换为0.0~1.0的数据,或将0.0~1.0的数据转换为模拟输出,这个过程称为规格化规格化的方法:(即变量相对所占整个值域范围内的百分比对应与27648数字量范围内的量)对于输入和反馈,执行:变量*100/27648,然后将结果传送到PV-IN和SP-INT 对于输出变量,执行:LMN*27648/100,然后将结果取整传送给PQW即可;D:PID的调整方法:一般不用D,除非一些大功率加热控制等惯大的系统;仅使用PI即可,一般先使I等于0,P从0开始往上加,直到系统出现等幅振荡为止,记下此时振荡的周期,然后设置I为振荡周期的0.48倍,应该就可以满足大多数的需求。
PID 没有例程和经验值可参考,每个设备都不同,都需要根据现场的设备去调试。
有时同样的两套设备P、I、D参数都会不同。
所以PID 的参数也需要根据实际情况一点点试。
下面的步骤供你参考。
PID的调用要在OB35中完成.
在ob35里面插入FB41,方框顶上会有红字,输入一个DB块如“DB20”。
系统会问你要不要生成这个DB,选yes就可以。
大部分参数不要填,默认就行,下面是常用参数,用变量连接:本文来自PLC资料网
1、MAN_ON:用一个bool量,如m0.0,为true则手动,为false则自动;
2、cycle:T#100MS,这个值与ob35默认的100ms一致;
3、SP_INT:MD2,是hmi发下来的设定值,0-100.0的范围,real型;
4、PV_IN:MD6,实际测量值,比如反馈的氧浓度,要从piw×××转换为实际的工程量(使用FC105);
5、MAN:MD10 (该地址也可以是从上位机设定的地址),是手动状态下的输入值,real 型。
手动设多少输出将为多少。
6、GAIN: MD100(该地址也可以是从上位机设定的地址如DB 块的地址,这样可以从上位机设P 参数了),默认写1-2吧(系统默认是2),调试的时候再改。
7、TI:MW120, 默认可以写T#30S吧,调试的时候改;
8、DEAD_W:MD122,死区,就是sp和pv的偏差死区,0-100.0的范围,默认0,调试的时候改;
输出:
9、LMN:MD126,把MD126再用fc106转换到pqw××,如果pid运算结果不再有工艺条件其他限制可以用LMN_PER更简单就不用fc106了。
三、用plcsim模拟
1、手动
man_on=true,看输出是否等于man;
2、自动
man_on=false,调整pv或者sp,使得有偏差大于死区,看输出变化,这里的模拟只能说明pid工作了,不能测试实际调节效果啊。
copyright plc资料网
COM_RST: BOOL: 重新启动PID:当该位TURE时:PID执行重启动功能,复位PID内部参数到默认值;通常可以不用,因为一旦参数设定好不会有大的变动了。