编程技术分享平台

网站首页 > 技术教程 正文

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

xnh888 2024-12-20 19:23:32 技术教程 139 ℃ 0 评论

在运动控制系统中,将轴的运行状态分成若干个逻辑状态,而每个逻辑状态之间的转换,需要特定的条件、或指定的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指令的使用逻辑和顺序,是编写稳定可靠应用程序的关键。这样不仅能确保轴的正确操作,还能提高整个系统的效率和安全性。

运动控制之轴状态

http://bbs.plcjs.com/forum.php?mod=viewthread&tid=496589&fromuid=17

(出处: PLC论坛-全力打造可编程控制器专业技术论坛)

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表