V2.2固件的CPU PTO停止后可以立即再次启动,不需要有上一个有效脉冲的周期时间延迟。
由于在 PTO 操作正在产生脉冲时被禁止,再次执行 PLS 指令之前必须要有时间延迟,并要确保其等于上一个有效脉冲的最大周期时间。因此,可采用如下方法来实现延迟执行新脉冲串输出:
延迟上一个有效脉冲的最大周期时间,再执行PLS 指令,输出新脉冲串。
2. 利用 PTO 空闲状态位(SM66.7、SM77.7 和 SM566.7)和程序执行错误状态位 SM4.3:
PTO 空闲(SM66.7=1、SM77.7=1 和 SM566.7=1)以及程序执行无错误 SM4.3=0 时,执行 PLS 指令;
PTO 空闲(SM66.7=1、SM77.7=1 和 SM566.7=1)以及程序执行有错误 SM4.3=1 时, 通过GET_EEROR 指令获取 CPU 程序执行错误代码16#05,继续返回直到错误清除执行 PLS 指令。
S7-200 SMART PLS 定位编程方法比较
采用定时中断 | 利用 PTO 空闲状态位和程序执行错误状态位 |
实际应用中,在 PTO 频率值不固定的情况下, 需根据变化的 PTO 频率值计算再次执行 PLS 指令的延迟时间Tdelay = 1 / Fmax 编程相对复杂,但精确计算上一个有效脉冲的最大周期时间,有利于保证延迟执行新脉冲串的输出。 |
PTO 频率越小,PTO 操作被禁止后内在地完成该脉冲的周期时间越长。 即 LBL 标签内跳转次数越多,该部分程序处理时间越长,因此可能造成 CPU 看门狗超时错误。此时,则需要用户编程延长看门狗时间,防止CPU 停机。 |
例如,V0.0 上升沿触发 PLS 指令,以 100 HZ 频率输出 5000 个脉冲数。在 5000 个脉冲数输出完成之前,使能 I0.2 ,I0.2 上升沿中断程序 INT_0 里中断禁止 PTO 并启用定时中断 INT_1,定时中断时间 SMB34= Tdelay = 1 / 100HZ= 10 ms;
定时时间到,更新 PTO 频率为 2000 HZ 和脉冲数为 10000, 立即执行 PLS 指令输出新脉冲串并分离中断。 程序编写如下图 5 所示:
程序说明:
PTO 控制字节 SMB67=16#C5
PTO 频率值 SMW68=100
PTO 脉冲数 SMD72=5000
使能 V0.0,上升沿触发 PLS ,
在 5000 个脉冲数输出完成之前,I0.2 上升沿中断禁止 PTO并启用定时中断INT_1,定时时间 SMB34= 1 / 100HZ= 10 ms 。
定时时间到,进入定时中断 INT_1, 更新PTO 频率为 2000 HZ 和脉冲数为10000
PTO 控制字节 SMB67=16#C5
PTO 频率值 SMW68=2000
PTO 脉冲数 SMD72=10000
立即执行 PLS 指令输出新脉冲串并分离中断。
图 5. 采用定时中断禁止延时执行新脉冲串输出
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 空闲状态位和程序执行错误状态位延时执行新脉冲串输出
在向导内激活STP后,当STP使能高速脉冲会立即停车,当需要再次发送脉冲时,需复位STP信号,而有些工况人工无法干预,如何复位STP?
以ST40为例,见图7 所示:
图7. 运动控制轴0组态
接线如下图所示:
将实际的STP信号接入 I0.0,将 Q1.0输出连接到 I0.1,如图 8 所示:
图8.ST40接线
注:红色虚线为程序内逻辑;黑色实线为实际接线
程序如下图 9 所示:
图9. STP功能复位
S7-200 SMART PLS指令 正在产生脉冲时被禁止,为何不能再立即执行 PLS 指令输出新脉冲串?
S7-200 SMART PTO 正在产生脉冲时被禁止,CPU 对立即执行新脉冲串输出不响应,导致非致命错误。 再次执行 PLS 指令前必须要有时间延迟,并确保其等于上一个有效脉冲的最大周期时间 Tdelay = 1 / Fmax
例如,I0.2 上升沿中断禁止 PTO,立即更新脉冲频率和脉冲数,CPU 忽略立即执行的 PLS 指令并报错。
程序说明:
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
立即执行 PLS 指令。
如下图 10 所示:
图 10. 中断程序里立即执行 PLS 指令
STEP 7 Micro/Win SMART 软件在线,从 PLC 信息可以查看到非致命错误。如下图 11 所示:
图 11. 非致命错误