使用PID程序块 FB58 “TCONT_CP” 脉冲输出时需要注意什么?

FB 58 “TCONT_CP”用于使用连续或脉冲控制信号来控制温度过程。脉冲控制功能使用脉宽调制,将模拟量可调节变量值 LMN 转换成一系列周期为PER_TM 的脉冲信号。通过设置PULSE_ON=TRUE 激活PULSEGEN,并在CYCLE_P 周期中对其进行处理。

哪些参数决定脉冲输出的周期?

首先,需要熟悉几个FB 58 “TCONT_CP” 脉冲输出的重要参数:

  • CYCLE_P : 脉冲发生器的采样周期
  • CYCLE:PID 运 算的采样周期
  • PER_TM: 脉冲输出的周期

如图1,PID输出LMN变 量为30.0,CYCLE=PER_TM=10 *CYCLE_P ,则 每个PER_TM循 环时间调用SFB/FB“PULSEGEN”10次, 则:

  • 脉宽=PER_TM x LMN%
  • 对 于前3SFB/FB“PULSEGEN”10次 调用的30 %), 输出“QPOS”为“1”
  • 对 于其余7SFB/FB“PULSEGEN”10次 调用的70 %), 输出“QPOS”为“0”

图01

如图2,设置参数,LMN=50.0。根据上图的关 系,理 论上输出的脉冲周期应该为10秒。但是通过 WINCC 捕捉的脉冲轨迹可以看到,实际的周期为20秒,如图2。那这是为什么呢?

图02

图03

其实,参数 PER_TM 和CYCLE_P 只是决定了脉宽调制精度G,G=PER_TM/CYCLE_P 。脉 宽调制精 度,决 定了一个脉冲周期内执行的脉冲计算的次数,次数越多精度越高。如图4,FB 58 “TCONT_CP”  通过“SELECT” 参数决定PID 运算和脉冲运算的关系,通常我们使用默认的模式,也就是同一个FB 58 “TCONT_CP” 执行两者,因此在同一个循环中断中执行的FB 58 “TCONT_CP”,每次循环中断进入都会执行脉冲运算,而PID 运算和冲运算成1:G 关系。因此实际脉冲运算的周期 CYCLE_P* 是由程序块执行的间隔决定的,所以实际周期 PER_TM*=CYCLE_P * x G。

图04

在上面的例子中,G = PER_TM / CYCLE_P =10/0.1=100;OB35循 环周期200MS, 所以CYCLE_P * =200MS ,PER_TM* =100X200=20S。因此,要想脉冲输出的周期和设置的一致,必须保证 CYCLE_P=CYCLE_P *(循环中断的时间) 我们只需要调整OB35的循环中断时间到 100MS,就可以实现10S周期的脉冲,如图5。

图05

经验关系时间法则如 下:

  • CYCLE_P<=PER_TM/50
  • PER_TM<=TI/5
  • CYCLE<=TI/10
  • CYCLE(=N x CYCLE_P)=<PER_TM;N 为整数
  • P_B_TM>=CYCLE_P

如果PID CYCLY和周期PER_TM不同会怎么样?

可以为CYCLE 选择一个小于脉冲重复周期PER_TM 的数值。此设置适用于需要尽可能高的脉冲重复周期以减小执行器上的磨损,但快速过程需要的采样时间却又比较短。如果CYCLE< PER_TM,意味 着一个完整周期还没有结束,新的 PID 结果将会产生,脉冲的输出状况将会改变。

图06

如 图7,CYCLE<PER_TM,当前输出LMN=50.0,周期20S。一旦 PID 的结果发生更改,如图8,当脉冲高电平输出到20%时,新的 PID 结果LMN=80.0 到来,则脉冲会在之前的基础上继续输出余下的60%的高电平后再变为低电平,整个周期仍然保持20S。
 
图07

图08

如果新的PID 的结果发生在脉冲的高电平,则会有以下两种情况(黄色箭头:已经输出的高电平脉冲;绿色箭头:新的 PID 结果):

  • PID 结果>当前脉冲长度,则脉冲延长

图09

  • PID 结果<当前脉冲长度,则脉冲终止

图10

如果新的PID 的结果发生在脉冲的低电平,则会有以下两种情况(黄色箭头:已经输出的低电平脉冲;绿色箭头:新的 PID 结果)::

  • 100-PID 结果<=当前低电平脉冲长度,则输出高电平脉冲

图11

  • 100-PID 结果>当前低电平脉冲长度,则低电平脉冲延长

图12,

FB 58 “TCONT_CP”用于使用连续或脉冲控制信号来控制温度过程。脉冲控制功能使用脉宽调制,将模拟量可调节变量值 LMN 转换成一系列周期为PER_TM 的脉冲信号。通过设置PULSE_ON=TRUE 激活PULSEGEN,并在CYCLE_P 周期中对其进行处理。

哪些参数决定脉冲输出的周期?

首先,需要熟悉几个FB 58 “TCONT_CP” 脉冲输出的重要参数:

  • CYCLE_P : 脉冲发生器的采样周期
  • CYCLE:PID 运 算的采样周期
  • PER_TM: 脉冲输出的周期

如图1,PID输出LMN变 量为30.0,CYCLE=PER_TM=10 *CYCLE_P ,则 每个PER_TM循 环时间调用SFB/FB“PULSEGEN”10次, 则:

  • 脉宽=PER_TM x LMN%
  • 对 于前3SFB/FB“PULSEGEN”10次 调用的30 %), 输出“QPOS”为“1”
  • 对 于其余7SFB/FB“PULSEGEN”10次 调用的70 %), 输出“QPOS”为“0”

图01

如图2,设置参数,LMN=50.0。根据上图的关 系,理 论上输出的脉冲周期应该为10秒。但是通过 WINCC 捕捉的脉冲轨迹可以看到,实际的周期为20秒,如图2。那这是为什么呢?

图02

图03

其实,参数 PER_TM 和CYCLE_P 只是决定了脉宽调制精度G,G=PER_TM/CYCLE_P 。脉 宽调制精 度,决 定了一个脉冲周期内执行的脉冲计算的次数,次数越多精度越高。如图4,FB 58 “TCONT_CP”  通过“SELECT” 参数决定PID 运算和脉冲运算的关系,通常我们使用默认的模式,也就是同一个FB 58 “TCONT_CP” 执行两者,因此在同一个循环中断中执行的FB 58 “TCONT_CP”,每次循环中断进入都会执行脉冲运算,而PID 运算和冲运算成1:G 关系。因此实际脉冲运算的周期 CYCLE_P* 是由程序块执行的间隔决定的,所以实际周期 PER_TM*=CYCLE_P * x G。

图04

在上面的例子中,G = PER_TM / CYCLE_P =10/0.1=100;OB35循 环周期200MS, 所以CYCLE_P * =200MS ,PER_TM* =100X200=20S。因此,要想脉冲输出的周期和设置的一致,必须保证 CYCLE_P=CYCLE_P *(循环中断的时间) 我们只需要调整OB35的循环中断时间到 100MS,就可以实现10S周期的脉冲,如图5。

图05

经验关系时间法则如 下:

  • CYCLE_P<=PER_TM/50
  • PER_TM<=TI/5
  • CYCLE<=TI/10
  • CYCLE(=N x CYCLE_P)=<PER_TM;N 为整数
  • P_B_TM>=CYCLE_P

如果PID CYCLY和周期PER_TM不同会怎么样?

可以为CYCLE 选择一个小于脉冲重复周期PER_TM 的数值。此设置适用于需要尽可能高的脉冲重复周期以减小执行器上的磨损,但快速过程需要的采样时间却又比较短。如果CYCLE< PER_TM,意味 着一个完整周期还没有结束,新的 PID 结果将会产生,脉冲的输出状况将会改变。

图06

如 图7,CYCLE<PER_TM,当前输出LMN=50.0,周期20S。一旦 PID 的结果发生更改,如图8,当脉冲高电平输出到20%时,新的 PID 结果LMN=80.0 到来,则脉冲会在之前的基础上继续输出余下的60%的高电平后再变为低电平,整个周期仍然保持20S。
 
图07

图08

如果新的PID 的结果发生在脉冲的高电平,则会有以下两种情况(黄色箭头:已经输出的高电平脉冲;绿色箭头:新的 PID 结果):

  • PID 结果>当前脉冲长度,则脉冲延长

图09

  • PID 结果<当前脉冲长度,则脉冲终止

图10

如果新的PID 的结果发生在脉冲的低电平,则会有以下两种情况(黄色箭头:已经输出的低电平脉冲;绿色箭头:新的 PID 结果)::

  • 100-PID 结果<=当前低电平脉冲长度,则输出高电平脉冲

图11

  • 100-PID 结果>当前低电平脉冲长度,则低电平脉冲延长

图12

使用PID程序块 FB58 “TCONT_CP” 脉冲输出时需要注意什么?

相关文章:

你感兴趣的文章:

标签云: