4、通信协议配置:EtherCAT总线配置、CANopen协议配置、脉冲方向模式配置
通信协议这块,说白了就是让两个轴“说同一种语言”。
我见过不少工程师,硬件接得没问题,电机也转,但就是同步精度上不去。查到最后,往往是通信配置里某个参数没对齐。嗯,这里咱们得仔细捋一捋。
4.1 EtherCAT总线配置
EtherCAT是我个人最常用的总线方案。为什么?因为它快,而且确定性好。你想想看,在双轴同步场景下,两个轴的位置指令如果差了几微秒,那同步误差可能就放大到几个脉冲了。
配置EtherCAT,核心就三步:
- 设置站号(Station Alias):每个从站必须有唯一的站号。我习惯用拨码开关或者EEPROM来写死,避免上电后地址冲突。
- 配置PDO映射:说白了,就是告诉主站你要收发哪些数据。对于双轴同步,至少需要映射目标位置、实际位置、控制字、状态字。
- 设置DC同步模式:这是EtherCAT的精髓。分布式时钟能让所有从站的时间基准统一到纳秒级。
关键参数:
- Sync0周期:通常设为位置环周期的整数倍,比如1ms或500μs
- Shift Time:根据总线抖动调整,我一般设50~100μs
我曾经在一个项目中,两个轴明明配置一样,但同步误差总在±5个脉冲左右晃。查了两天,最后发现是其中一个轴的DC同步没使能。从那以后,我每次配置完都会用Wireshark抓一下总线报文,确认DC同步标志位已经置1。
// 示例:EtherCAT从站配置代码片段(基于SOEM库)
ec_slave[0].configadr = 1; // 站号1
ec_slave[1].configadr = 2; // 站号2
// 配置PDO:控制字 + 目标位置
ec_config_map(&IOmap);
ec_configdc(); // 使能分布式时钟
我的小技巧:上电后先读一下从站的DC系统时间寄存器,如果两个轴的时间差超过1μs,建议检查网线质量和拓扑结构。
4.2 CANopen协议配置
CANopen虽然比EtherCAT慢,但在一些老设备或成本敏感的项目里还是很常见。配置CANopen,说白了就是调好对象字典。
双轴同步用CANopen,我建议重点关注这几个对象:
| 索引 | 对象名称 | 说明 |
|---|---|---|
| 0x6040 | 控制字 | 控制电机启停、使能 |
| 0x607A | 目标位置 | 主轴的指令位置 |
| 0x6064 | 实际位置 | 从轴反馈位置 |
| 0x6081 | 电子齿轮比分子 | 同步比例系数 |
| 0x6082 | 电子齿轮比分母 | 同步比例系数 |
配置步骤其实不复杂:
- 设置节点ID(1~127),不能重复
- 配置PDO映射,把上面这些对象映射到TPDO和RPDO
- 设置同步周期,CANopen一般用SYNC报文来同步
注意:CANopen的波特率必须统一。我见过有人把主站设成500k,从站设成250k,结果总线直接瘫痪。嗯,这种低级错误我也犯过。
另外,电子齿轮比的分子分母一定要用整数。我曾经遇到一个客户,非要设成0.333这种小数,结果驱动器直接报错。说白了,电子齿轮比就是两个整数相除,别想着用浮点数。
// CANopen SDO写电子齿轮比示例
// 分子设为 2,分母设为 1,即从轴转2圈对应主轴转1圈
SDO_Write(0x6081, 0x00, 2); // 分子
SDO_Write(0x6082, 0x00, 1); // 分母
4.3 脉冲方向模式配置
脉冲方向模式,说白了就是最传统的控制方式。一个轴发脉冲,另一个轴收脉冲。虽然简单,但坑也不少。
配置脉冲方向模式,核心参数就这几个:
- 脉冲类型:PULSE+DIR(最常见),或者CW/CCW
- 脉冲极性:上升沿有效还是下降沿有效
- 最大脉冲频率:一般不超过200kHz,否则容易丢步
- 滤波时间:我习惯设1~5μs,滤掉毛刺
双轴同步的关键:主轴发出的脉冲频率,决定了从轴的速度。如果主轴突然加速,从轴必须立刻跟上。所以脉冲频率的加减速时间常数要匹配。
我曾经在一个包装机械项目里,主轴用PLC发脉冲,从轴用伺服驱动器接收。结果一跑高速,从轴就丢步。查了半天,发现是脉冲线太长,信号衰减了。后来加了差分驱动(RS422),问题解决。
避坑指南:脉冲线一定要用双绞屏蔽线,而且屏蔽层单端接地。我曾经因为没接地,现场干扰大得离谱,两个轴的位置误差直接到了几十个脉冲。
配置示例(以台达ASDA-A2伺服为例):
// 参数设置
P1-00 = 0x0002 // 脉冲+方向模式
P1-01 = 0x0000 // 脉冲极性:正逻辑
P1-44 = 100 // 电子齿轮比分子
P1-45 = 1 // 电子齿轮比分母
P1-46 = 0 // 脉冲输入滤波:1μs
你想想看,脉冲方向模式虽然简单,但它的同步精度完全取决于脉冲频率的稳定性。如果主轴脉冲有抖动,从轴就会跟着抖。所以,我建议在主轴端加一个电子齿轮功能,把脉冲频率做一下平滑处理。
嗯,通信协议配置这块,说白了就是选对协议、配好参数、注意细节。EtherCAT适合高速高精度,CANopen适合中等要求,脉冲方向模式适合简单应用。选哪个,看你的项目需求。
总结一下:不管用哪种协议,双轴同步的核心就是让两个轴的时间基准和位置基准对齐。配置时多花10分钟检查参数,现场调试就能少花2小时。