2. 利用 PTO 空闲状态位(SM66.7、SM77.7 和 SM566.7)和程序执行错误状态位SM4.3:
例如,V0.0 上升沿触发 PLS 指令,以 100 HZ 频率输出 5000 个脉冲数。在 5000 个脉冲数输出完成之前,使能I0.2 ,I0.2 上升沿中断程序 INT_0 里中断禁止 PTO ,更新 PTO 频率为 2000 HZ和脉冲数为 10000, 并跳转到标签 0;
程序说明:
PTO 控制字节 SMB67=16#C5
PTO 频率值 SMW68=100
PTO 脉冲数 SMD72=5000
使能 V0.0,上升沿触发 PLS 。
在 5000 个脉冲数输出完成之前,I0.2 上升沿中断禁止 PTO , 更新PTO 频率为 2000 HZ和脉冲数为10000
PTO 控制字节 SMB67=16#C5
PTO 频率值 SMW68=2000
PTO 脉冲数 SMD72=10000
在标签 0 编写如下程序:
PTO 空闲 SM66.7=1 以及程序执行无错误 SM4.3=0 时,执行 PLS 指令,输出新脉冲串;
PTO 空闲 SM66.7=1 以及程序执行错误状态位 SM4.3=1 时,
通过 GET_EEROR 指令获取 CPU 程序执行错误代码16#05,继续返回到标签 0。
程序编写如下图 6 所示:
图 6. 利用 PTO 空闲状态位和程序执行错误状态位延时执行新脉冲串输出