西门子STEP7中PID功能块说明 点击:7410 | 回复:1



电仪人生

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:36帖 | 617回
  • 年度积分:0
  • 历史总积分:4586
  • 注册:2009年2月12日
发表于:2011-07-09 14:16:58
楼主
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,调试的时候改;
输出:((死区:又叫死区宽度,在控制系统中,某些执行机构如果动作频繁,会导致小幅震荡,造成严重的机械磨损。从控制要求来说,很多系统又允许被控量在一定范围内存在误差。我们允许被控量的误差大小,被称为PID的死区宽度;
死区是如何工作的呢?
当误差的绝对值小于 死区宽度 时,死区非线性的输出量(即 PID控制器的输入量)为0 ,这时PID 控制器的输出分量中,比例部分和微分部分为0,积分部分保持不变,因此PID的输出保持不变,PID控制器起不到调节作用;当误差的绝对值超过 死区宽度 时 ,开始正常的PID 控制
在FB41 中,死区宽度是“DEADB_W”
PID的输入量 = 0 偏差的绝对值|ev|< "DEADB_W"
= ev 偏差的绝对值|ev|>= "DEADB_W" ))
9、LMN:MD126,把MD126再用fc106转换到pqw××,如果pid运算结果不再有工艺条件其他限制可以用LMN_PER更简单就不用fc106了。
三、用plcsim模拟
1、手动
man_on=true,看输出是否等于man;
2、自动
man_on=false,调整pv或者sp,使得有偏差大于死区,看输出变化,这里的模拟只能说明pid工作了,不能测试实际调节效果啊。

COM_RST: BOOL: 重新启动PID:当该位TURE时:PID执行重启动功能,复位PID内部参数到默认值;通常可以不用,因为一旦参数设定好不会有大的变动了。




电仪人生

  • 精华:0帖
  • 求助:0帖
  • 帖子:36帖 | 617回
  • 年度积分:0
  • 历史总积分:4586
  • 注册:2009年2月12日
发表于:2011-07-09 14:17:14
1楼
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的调整可以通过“开始—>SIMATIC->STEP7->PID调整”打开PID调整的控制面板,通过选择不同的PID背景数据块,调整不同回路的PID参数。

----------------------------------------------------------------------------------------------

CALL "CONT_C" , DB43
COM_RST :=
MAN_ON :=FALSE
PVPER_ON:=TRUE
P_SEL :=TRUE
I_SEL :=TRUE
INT_HOLD:=
I_ITL_ON:=
D_SEL :=TRUE
CYCLE :=T#500MS
SP_INT :=DB43.DBD6 //DB13.DBW104*100/160-->DB15.DBD8
PV_IN :=
PV_PER :=PIW516
MAN :=4.500000e+001 //输入开度百数
GAIN :=-3.050000e-001

TI :=T#10S
TD :=T#10MS
TM_LAG :=
DEADB_W :=

LMN_HLM :=1.000000e+002
LMN_LLM :=0.000000e+000
PV_FAC :=1.000000e+000
PV_OFF :=0.000000e+000
LMN_FAC :=1.000000e+000
LMN_OFF :=0.000000e+000
I_ITLVAL:=
DISV :=0.000000e+000
LMN :=
LMN_PER :=DB43.DBW76 // "PQW514"
QLMN_HLM:=
QLMN_LLM:=
LMN_P :=
LMN_I :=
LMN_D :=
PV :=
ER :=
NOP 0
L 3.130000e+001

T DB43.DBD 6 //0-->100%(压力给定值)

L PIW 516 //反馈值(0-->27648)

T DB13.DBW 114 //-->上位机

L DB43.DBW 76

T PQW 514
T DB13.DBW 118
L PIW 516
L 6048 // 出油口压力≤3.5(bar)
<=I
= M 230.0 //连锁到传动/停机信号("1"停机)
L PIW 516
L 10368
>=I
= M 230.1 //压力过高报警("1"报警)≥6bar
L DB43.DBW 76
L 27648
/R
L 100
*R
T MD 208




热门招聘
相关主题

官方公众号

智造工程师