[CodeSys] 运动控制之轴状态Axis.nAxisState

[复制链接]
查看440 | 回复0 | 2024-6-13 08:18:51 | 显示全部楼层 |阅读模式
>



在运动控制系统中,将轴的运行状态分成若干个逻辑状态,而每个逻辑状态之间的转换,需要特定的条件、或指定的MC 运控指令来触发。这种划分策略极大地提升了系统的可控性和稳定性,在任何给定时刻,轴都只能处于单一的逻辑状态,并且状态的转换必须遵循预设的规则,从而避免了因不同MC指令的误触发导致的运行混乱。
状态机枚举变量
轴数据结构变量(Axis.nAxisState) 来指示轴的当前运行状态,该变Axis.nAxisState 为枚举型变量,共有以下8 种状态:
    0:Poweroff — 轴未使能,运动之前需执行MC_Power 指令给轴使能
  1:Errorstop — 轴错误状态,需执行MC_Reset给轴复位
    2:Stopping — 轴停止状态
    3:Standstill — 轴静止状态
    4:Discrete Motion — 轴处于离散运行状态
    5:Continuous Motion —– 轴处于连续运行中
    6:Synchronized Motion — 轴处于同步运行中
    7:Homing — 轴处于回零运行中,等待归零操作执行完成


状态机转换条件
轴状态转移图如下,详细描绘了轴在不同逻辑状态间的转换过程。在这些状态转换中,每个转换都依赖于特定的条件触发,如执行特定的MC(运动控制)指令或外部故障的发生。用户无法直接强制轴的状态,这确保了系统的安全性和稳定性。在编程时,必须严格遵守这些逻辑要求,确保按照正确的顺序和条件执行相关指令,以保证轴能够按照预期在状态转移图中顺利移动。






  • 轴在静止状态(Standstill,即 Axis.nAxisState=3)时,可以通过运动功能块切换到各种运行状态;
  • 在Continuous_Motion、Synchronized_Motion状态时,需通过MC_Halt才能切换到Standstill状态;
  • 若伺服轴出现告警(Errorstop,即 Axis.nAxisState=1),就要先运行 MC_Reset 指令,复位轴错误;
  • Homing回零状态( Axis.nAxisState=7),不能被其他运动指令打断,只能被MC_Stop打断;
如果不按照上图所示的方式使用 MC 指令来命令轴进行运动,轴将不会响应,并且将收到关于 MC 功能块的错误信息。nAxisState在程序中的应用
程序中当需要确认轴是否处于空闲状态,即可以运动且没有被其他运动指令占用时,可以判断Axis.nAxisState是否等于3(Standstill状态)Axis.nAxisState等于3表明轴当前是静止的,没有执行任何运动指令。


判断轴是否可以运动(能打断其他运动指令),可以判断Axis.nAxisState>=3且Axis.nAxisState<=6 ;


在调试过程中,监控Axis.nAxisState变量是一个很有用的方法,因为它能直观地显示轴状态机的转换,帮助判断轴是否发生报警,以及轴当前处于何种运动模式(如离散、连续、同步)。


程序中,根据Axis.nAxisState来判断轴的状态,相较于仅仅依赖MC功能块的Done信号,通常更为准确可靠。因为Axis.nAxisState提供了轴当前状态的详细信息,而Done信号可能只表示上一个MC指令是否完成,而不涉及轴的实际状态。


因此,熟悉轴状态图的转移条件,并在编程时仔细考虑MC指令的使用逻辑和顺序,是编写稳定可靠应用程序的关键。这样不仅能确保轴的正确操作,还能提高整个系统的效率和安全性。





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则