FANUC实时宏ZONCE与ZEDGE:条件后来成立,为何动作仍未发生?
依据30i-A实时宏规则,用100毫秒假定执行窗口比较ZONCE、ZEDGE和初始为真的情况,解释一次性宏的等待范围与短脉冲识别不能混为一谈。
把“条件满足时执行”写入实时宏后,条件后来确实成立,动作却没有发生。这里至少有两个独立问题:采用的是单次判断还是边沿等待,以及等待所在的执行窗口是否已经结束。
三个规则决定时序
30i/31i/32i-A通用用户手册B-63944EN/03,§17.1.1及§17.4.1–17.4.2,第581、599–600页(原厂手册公开镜像)规定:ZONCE在判断为假时结束,不等待以后变真;ZEDGE等待假到真的变化,初始已经为真不算新边沿。一次性RTM与后续第一个NC指令一起启动,有效期止于该NC指令结束。
本文只讨论该版本实时自定义宏功能中的一次性语句,不把普通宏IF、模态RTM或PLC扫描逻辑视为相同机制。功能是否具备及信号映射须与实际控制配置一致。
把等待放进一个具体窗口
原创逻辑例设关联NC块在t=0开始、t=100 ms结束;“动作”仅表示记录一个软件事件,没有输出信号或轴运动。表格假定列出的条件变化已被有效采样。
| 条件变化 | 一次性ZONCE | 一次性ZEDGE |
|---|---|---|
| 起初为假,60 ms变真并保持 | 首次为假即结束 | 窗口内识别到上升边沿后执行 |
| 起初为假,120 ms才变真 | 已经结束 | 100 ms窗口已结束,不再等待 |
| 起初为真,40 ms变假,70 ms再变真 | 初始为真时执行 | 初始真不触发,后续假→真才触发 |
第二行并不是条件表达式写错,而是事件发生在有效期之外。第三行则说明“当前状态为真”与“观察到新边沿”有不同用途:前者回答状态是否成立,后者确认此后是否发生了转换。
程序中的文字先后,不等于时间窗口长短
把一次性实时宏写得更靠前,不能据此推断它会更早开始等待;应先识别实际触发它的NC指令。若工艺要求监视跨越多个NC块,仅把一个块的预计运行时间拉长也不能证明逻辑可靠,因为倍率、停止和执行分支都可能改变时间关系。
还应区分“生命周期足够长”与“采样能看见事件”。假定检查周期为4 ms,1 ms脉冲可能完整落在两次检查之间;这是一般采样反例,4 ms不是本文对FANUC实时宏周期的规格声明。ZEDGE不是对任意短脉冲都有效的硬件捕获保证。
怎样判断应该检查哪一层
若开始时为假便永远不执行,先核对是否误用了ZONCE;若块内成立可以触发、块结束后不触发,核对一次性有效期;若只有很短的事件偶发丢失,再分析输入链路及采样。三个现象的原因不同,不能统一归结为“宏程序不实时”。更多机制分析见OPTION栏目。
