FB43(PULSEGEN)
FB43 “PULSEGEN”用于构造一个PID控制器,以生成脉冲输出,用于比例执行器。还可以配置带有脉宽调制的两步或三步PID控制器,通常与FB41一起使用。
图1. FB41"CONT_C" 与FB43 “PULSEGEN”
主要参数
图2. FB43 “PULSEGEN" 程序块
注:以TIA Potal V13 SP1为例,该功能块在STEP 7中的管脚与其相同
表1. FB43 “PULSEGEN" 的输入参数
参数 | 变量类型 | 数据类型 | 取值范围 | 默认 | 描述 | 应用 |
---|---|---|---|---|---|---|
INV | IN | REAL | -100~100(%) | 0.0 | 模拟量输入 | 上一级PID (FB41) 输出 |
PER_TM | IN | TIME | T#1s | 脉冲周期 | 上一级PID (FB41) 周期 | |
P_B_TM | IN | TIME | T#50 ms | 最小脉冲开/关时间 | 防止执行器频繁开关 | |
RATIOFAC | IN | REAL | 0.1~10.0 | 1.0 | 比率因子 | 改变正负脉冲宽度之比 |
STEP3_ON | IN | BOOL | TRUE | 三步控制 | 激活三步控制,两个脉冲输出都在激活状态 | |
ST2BI_ON | IN | BOOL | FALSE | 两步控制 | ||
MAN_ON | IN | BOOL | FALSE | 手/自动切换按钮 | MAN_ON: 0:自动 1:手动 |
|
POS_P_ON | IN | BOOL | FALSE | QPOS_P手动输出 | ||
NEG_P_ON | IN | BOOL | FALSE | QNEG_P手动输出 | ||
SYS_ON | IN | BOOL | TRUE | 周期同步 | MAN_ON: 0:不同步 1:同步 |
|
COM_RST | IN | BOOL | FALSE | 完全重启动 | ||
CYCLE | IN | TIME | T#10ms | 采样时间 | FB43 采样时间与调用组织块相同 |
表2. FB43 “PULSEGEN" 的输出参数
参数 | 变量类型 | 数据类型 | 取值范围 | 默认 | 描述 | 说明 |
---|---|---|---|---|---|---|
QPOS_P | OUT | BOOL | FALSE | 正向脉冲 | ||
QNEG_P | OUT | BOOL | FALSE | 负向脉冲 |
表3. FB43 “PULSEGEN" 的静态变量
参数 | 变量类型 | 数据类型 | 取值范围 | 默认 | 描述 | 说明 |
---|---|---|---|---|---|---|
siZaehlPer | STATS | INT | 0 | 总脉冲数 | 一个脉冲周期内的脉冲个数,倒数计数 | |
siZaehlPTm | STATS | INT | 0 | 实际高电平脉冲数 | 一个脉冲周期内的实际高电平脉冲个数,倒数计数 |
FB43 “PULSEGEN" 的工作模式
脉宽调制
在每个周期持续时间内,脉冲的持续时间和输入变量成比例。 通过 PER_TM 分配的周期与 PULSEGEN 指令的处理周期不同。 相反,PER_TM 周期由 PULSEGEN 指令的多个处理周期组成,因此每个 PER_TM 周期中 PULSEGEN 调用的次数决定了脉冲宽度的精度。
图3. FB43 “PULSEGEN" 脉宽调制
调节值的精度
由上图可见:
“采样比率”为 1:10(CONT_C 调用与 PULSEGEN 调用之比)时,此示例中的调节值精度将限制为 10%,换言之,只能在输出 QPOS_P 以 10% 为步长的脉冲持续时间对设置的输入值 INV 进行模拟。
精度将随每次 CONT_C 调用中 PULSEGEN 调用的次数的增加而提高。
例如,如果调用 PULSEGEN 的频率是调用 CONT_C 频率的 100 倍,则获得的操作值范围的精度为 1%。
自动同步
可以使脉冲输出与更新输入变量 INV 的指令(例如 CONT_C)自动同步。 这样可以确保尽快将输入变量的变化输出为脉冲。
脉冲执行器以对应周期持续时间 PER_TM 的时间间隔评估输入值 INV,并将该值转换成相应长度的脉冲信号。
由于通常以较慢的循环中断等级计算 INV,因此在 INV 更新之后,脉冲执行器应尽快开始将离散值转换为脉冲信号。
为此,块可以使用以下步骤来与周期的起始点同步:
如果 INV 发生变化,且块调用不在周期的第一个或最后两个调用循环中,则执行同步。 脉冲持续时间将重新计算,并在下一个循环与新周期一起输出。
图4. FB43 “PULSEGEN" 自动同步
如果 SYN_ON = FALSE,自动同步将关闭。