伺服电机运动控制协议CiA402

伺服电机运动控制协议CiA402

  • [1. CiA402协议](#1. CiA402协议)
  • [2 问题分析:运动控制命令下发,但电机不运动](#2 问题分析:运动控制命令下发,但电机不运动)
    • [2.1 分析原因](#2.1 分析原因)
    • [2.2 分区与基础状态含义](#2.2 分区与基础状态含义)
      • [(1)Power Disabled(断电未励磁大区,电机完全无法运转)](#(1)Power Disabled(断电未励磁大区,电机完全无法运转))
      • [(2)Power Enabled(上电励磁大区,正常工作核心区,你的设备日常运行区)](#(2)Power Enabled(上电励磁大区,正常工作核心区,你的设备日常运行区))
      • (3)Fault(故障大区,硬件报错锁定)
    • [2. 标准正常使能跳转路径(对应你手册三步指令)](#2. 标准正常使能跳转路径(对应你手册三步指令))
    • [3.3 总结](#3.3 总结)

1. CiA402协议

关于该协议,笔者之前也没有关注。也是遇到了具体的问题,笔者查阅资料,分析可能与笔者使用伺服电机时的状态机有关。

状态机是什么东西?其实就是电机当前所处的状态。伺服电机厂家在设置电机驱动成时,要考虑电机在什么状态,定义了电机运动控制的状态,以及各个状态之间的转化,才能有有条理地控制电机。

CiA402协议中重要的一条就是关于状态机的定义。我们看下面这张图。只有在Operation Enable下,才是驱动器正常运行的状态。

状态机各状态对应说明:

以某款电机为例:

关于驱动器的启停控制指令和状态描述主要通过状态字6040h和状态字6041h来实现。

2 问题分析:运动控制命令下发,但电机不运动

笔者,遇到"运动控制命令下发,电机不运动"的情况,该情况是在频繁测试电机运动的情况下出现,也就是对电机做疲劳性测试的时候出现。且出现上述情况时,读取电机故障码,为0x00,也就是没有发生下面这些硬件故障。

2.1 分析原因

电机初始运动时,必须下发三条命令,使得电机到Operation Enable 状态。这三条初始化命令,笔者只在电机上电后,发一次。后续的所有运动控制,只下发速度,加减速,目前位置的命令。

那么,当"运动控制命令下发,电机不运动"这种情况的可能原因是,电机跳出了Operation Enable 状态,在非Operation Enable 状态下,即使给电机发目标位置的命令,电机也不运动。且此时,无硬件故障报警。

可能存在导致电机跳出Operation Enable状态的场景:

(1 )快速停止激活(Quick Stop Active) 触发原因:外接急停 /

限位开关瞬时抖动、总线误发快速停止控制字、电压波动触发驱动器软快停;

表现:驱动器不会记故障码,只是进入快停锁定态,拒绝新定位指令;协议硬性规定:只能下发

0x06(Shutdown)退出该状态,直接发启动命令无效,是你偶发停机头号诱因。 (2).状态机卡在过渡中间态 CiA402

标准合法使能链路固定:0x06(关机复位) → 0x07(上电预备) → 0x0F(运行使能)

触发原因:高频循环启停、指令下发时序错位、单次指令丢包,状态停在0x07(Switched On)过渡态,没抵达最终可运行态;

表现:参数能正常读写,但触发运动指令无响应,无任何报警;跳过 0x06 直接重复发 0x0F,协议不允许越级跳转,无法脱困。 (3)临时

IO 信号边沿触发锁定 触发原因:限位、使能 DI 口接线松动、机械振动造成通断瞬跳,瞬时触发锁定逻辑,信号很快恢复正常;

表现:信号回弹后锁定标记不会自动清除,驱动器静默拒动,全程不生成故障记录。 (4)通讯扰动带来的状态位偏移 触发原因:485 /

总线电磁干扰,控制寄存器6040h个别 bit 被异常改写,使能标志失效; 表现:表面通讯应答正常,内部运行权限丢失,无故障码,补发

0x06 可刷新修正状态位。

驱动器能不能执行运动指令,完全由当前所处状态决定,不是收到指令就会跑。

2.2 分区与基础状态含义

(1)Power Disabled(断电未励磁大区,电机完全无法运转)

  • Not Ready to Switch On:刚上电自检阶段,仅初始化硬件,不能读写参数、不能运动;
  • Switch on Disabled:通讯连通、可改参数,但电机不通电励磁,所有运动命令无效;

(2)Power Enabled(上电励磁大区,正常工作核心区,你的设备日常运行区)

  • Ready to Switch On:参数可配置,电机未励磁;
  • Switched on:电机预备通电、输出电压就绪,但禁止执行运动动作,只等待最终使能;
  • Operation Enable:唯一可以正常跑定位 / 速度指令的合法运行态;
  • Quick Stop Activ(快速停止激活):最常见非故障锁定态,电机维持励磁,但冻结所有新运动指令,不报硬件故障;

(3)Fault(故障大区,硬件报错锁定)

  • Fault Reaction Active:触发故障后紧急停机,电机暂保持励磁;
  • Fault:彻底故障锁定,必须先清除故障码才能重回正常链路。

2. 标准正常使能跳转路径(对应你手册三步指令)

Switch on Disabled(0x06指令触发跳转2)Ready to Switch On(0x07 指令触发跳转 3) → Switched on(0x0F 指令触发跳转 4) → Operation Enable(可运动)

这条递进链路不允许越级跳转:跳过前置指令直接发最终使能命令,状态机不会响应。

3.3 总结

所以,用户手册中,三条初始化命令,每次运动控制命令下发时,不能省。这是保障伺服电机能够按照状态机控制顺序,正常影响控制命令的关键。能够在电机非预期跳出Operation Enable状态时,修正电机状态,正常影响控制命令。

############################################################################################################
交流使人进步,碰撞产生火花! 欢迎 大家留言评论! ############################################################################################################

相关推荐
CoreTK_EMC12 天前
华南 EMC 技术服务研究:机器人与车载硬件量产电磁兼容整改方案
电磁兼容·伺服电机·人形机器人·车载电子·芯通康·emc 整改·华南 emc 技术服务
thesky12345615 天前
智能体面试准备(九):工作流编排——DAG 与状态机两种范式的取舍与手写实现
面试·agent·状态机·工作流·智能体
llwszx21 天前
【Java/Go后端手撸原生Agent(第五篇):多工具并行调用 + BashTool执行引擎 + Judge证据链升级】
java·后端·golang·状态机·pydantic·agnet·llm-as-judge
水豚老师24 天前
基于会话变量与行快照的跨数据库双向增量同步系统设计与实现 - TriggerAsyn v2:从状态机防循环到事件溯源回放的全面重构
重构·触发器·状态机·异构数据库·多数据库同步
2301_768103491 个月前
HarmonyOS宠物邻里实战第16篇:寄养申请状态机、记录时间线与回归测试
mongodb·集成测试·express·harmonyos·状态机
大侠锅锅1 个月前
第 9 篇:状态机实践——状态环 + 步进表替代 if-else 地狱
golang·边缘计算·状态机
认真的小埋2 个月前
审核流程别再用 if + status 硬写了——状态机引擎设计实战(从原理到落地)
状态机
SiliconGazer2 个月前
第15届国赛满分代码解析(下)—— 运动轨迹算法、按键交互与完整状态机
算法·状态机·stc15f2k60s2·浮点运算·蓝桥杯国赛·运动轨迹、·向量分解
Emerson_20262 个月前
kanzi--属性插值、状态机、动画
动画·状态机·hmi·kanzi·属性插值