手册中关于这个指令的execute管脚的说明是这样的

我一开始想当然的以为 只要execute管脚为false 就可以执行其他运动控制指令然而当程序中出现互锁需要停止轴时我使用的是上升沿信号而且由于多个信号停轴 实际程序收到的是一串脉冲信号 这个时候 我发现 虽然execute管脚是false 但是执行绝对定位指令时 居然报错16#800F

这就奇怪了 按照说明 stop的execute管脚明明是false了啊 最后查了半天 发现是statusword2的0位 也就是stopcomand这个位一直为1 这是为啥 网上查阅了大量资料
如果 Execute 的高电平只持续 1 个扫描周期(极短脉冲),下降沿出现在轴减速完成(Done 置位)之前,那么当 Done 最终置位时,Execute 已经是 FALSE 了,状态机检测不到「Done 为高时的 Execute 下降沿」,就会一直停留在 Stopping 状态。
触发规则:通过 Execute 参数的 ** 正沿(上升沿)** 启动 MC_Stop 作业。
锁定规则:只要 "Execute" = TRUE,工艺对象就无法执行运动作业
这是 Stopping 状态锁定的核心依据 —— 哪怕轴已经物理停稳,只要 Execute 保持高电平,轴就一直处于停止锁定状态,禁止所有新运动指令。
退出规则:轴制动到静止状态后,必须同时满足「减速完成(Done=TRUE)」+「Execute 变为 FALSE」两个条件,轴才会退出停止锁定状态,回到静止(Standstill)状态。



根据以上信息 最终调整 了MC_STOP的execute触发机制
首先 mc_stop已经处于busy时 不能持续的翻转execute的状态
其次 当execute触发时 其高电平时间至少要维持到done为高电平
最后 定位指令不能在execute为true和busy为true时触发
最终问题解决 所以说 有些时候 单看帮助文档里面的描述信息 是远远不够的 还要去翻找相应的时序图 深挖背后的动作逻辑才能避免“踩坑”
至于为什么在执行mc_stop时busy持续时间那么久呢 那就与你组态的轴的动态特性有关了 速度越高减速度越慢 busy的时间就越长