3. 通信协议入门:脉冲方向控制、模拟量控制、EtherCAT总线协议基础、CANopen协议基础
做多轴同步,通信协议是绕不开的坎。很多新手一上来就盯着EtherCAT、CANopen这些高大上的总线,觉得脉冲控制太low。其实不然。我在现场调试过上百台设备,见过用脉冲控制跑得飞快的产线,也见过总线协议没配好导致整条线停机的惨案。说白了,没有最好的协议,只有最合适的。
这一章,我带你把四种主流控制方式过一遍。脉冲方向、模拟量、EtherCAT、CANopen,它们各自适合什么场景?坑在哪里?怎么选?
核心观点:控制方式的选择取决于三个因素——轴数、同步精度要求、成本预算。轴数少(≤4轴)、精度要求不高,脉冲控制最划算;轴数多(≥8轴)、需要高精度同步,必须上总线。
3.1 脉冲方向控制——最经典,也最容易被忽视
脉冲方向控制,也叫PUL+DIR模式。控制器发脉冲给驱动器,脉冲数量决定位置,频率决定速度,电平方向决定正反转。就这么简单。
我见过很多工程师看不起脉冲控制,觉得它过时了。但说实话,在3-4轴的小型设备上,脉冲控制依然是最稳定、最便宜的选择。一台PLC加几个脉冲输出口,成本不到总线方案的三分之一。
3.1.1 两种脉冲模式
| 模式 | 信号定义 | 适用场景 |
|---|---|---|
| PUL+DIR | PUL脉冲,DIR方向 | 最常用,接线简单 |
| CW+CCW | 正转脉冲+反转脉冲 | 部分日系驱动器 |
我的习惯:能用PUL+DIR就别用CW+CCW。前者只需要一路脉冲,后者要两路,占用PLC输出口多一倍。而且大部分驱动器两种模式都支持,改个参数就行。
3.1.2 脉冲输出方式
- 差分输出(RS422):抗干扰强,传输距离远(10米以上),适合工业现场。我建议优先选这个。
- 集电极开路(NPN/PNP):成本低,但距离短(3米以内),容易受干扰。我在一个包装机上吃过亏,脉冲线走了5米,电机老是丢步,换成差分输出就好了。
3.1.3 脉冲频率与速度的关系
这个公式必须记住:
电机转速(rpm) = (脉冲频率(Hz) × 60) / (编码器分辨率 × 电子齿轮比)
举个例子:脉冲频率200kHz,编码器分辨率10000线,电子齿轮比1:1,转速就是1200rpm。你想想看,如果PLC最大只能发100kHz脉冲,那转速就只能到600rpm。选型时一定要算清楚。
注意:PLC的脉冲输出频率有上限。普通晶体管输出一般100-200kHz,专用脉冲模块可以到500kHz甚至1MHz。别把PLC当脉冲发生器用,频率不够就换方案。
3.2 模拟量控制——老古董,但还在用
模拟量控制,就是控制器输出±10V或0-10V电压给驱动器,电压大小决定速度。位置控制靠外部编码器反馈给控制器,形成闭环。
说实话,现在新项目很少用纯模拟量控制了。为什么?抗干扰太差。我在一个热处理车间调试过,变频器一启动,模拟量信号就飘,电机速度忽快忽慢。后来换成脉冲控制才解决。
3.2.1 模拟量控制的典型场景
- 变频器调速:大部分变频器还保留0-10V或4-20mA输入,用于简单调速。
- 模拟量伺服:老式伺服驱动器,没有脉冲输入口,只能用模拟量。
- 张力控制:有些张力控制器输出模拟量给驱动器,做恒张力控制。
3.2.2 模拟量控制的坑
我曾经调试一台印刷机,模拟量线跟动力线走同一个线槽,结果电机在低速时抖动严重。查了两天才发现是干扰问题。后来把模拟量线换成屏蔽双绞线,单独走管,问题解决。
避坑指南:模拟量信号线必须用屏蔽双绞线,屏蔽层单端接地。走线远离变频器、电机线、电源线。如果距离超过10米,建议用4-20mA电流环代替电压信号。
3.3 EtherCAT总线协议基础——现代多轴同步的标配
EtherCAT是德国Beckhoff公司开发的实时以太网协议。它的核心优势是:分布式时钟。所有从站共享同一个时钟,同步精度可以达到100μs以内。对于多轴同步来说,这就是神器。
我第一次用EtherCAT做8轴电子凸轮时,心里也没底。结果一跑起来,轴跟轴之间的同步误差不到1个脉冲。说实话,当时挺震撼的。从那以后,只要轴数超过4个,我首选EtherCAT。
3.3.1 EtherCAT的工作原理
EtherCAT采用"飞读飞写"技术。主站发一帧数据,经过每个从站时,从站读取自己的数据,同时写入反馈数据,整个过程只延迟几纳秒。所以EtherCAT的通信效率极高。
| 特性 | 参数 |
|---|---|
| 通信周期 | 100μs - 1ms(典型值) |
| 同步精度 | < 1μs(分布式时钟) |
| 最大从站数 | 65535(理论上) |
| 拓扑结构 | 线型、星型、树型、环型 |
3.3.2 EtherCAT的应用层协议
- CoE(CANopen over EtherCAT):最常用,把CANopen的对象字典搬到EtherCAT上。伺服驱动基本都用这个。
- SoE(SERCOS over EtherCAT):用于一些老式SERCOS设备。
- FoE(File over EtherCAT):用于固件升级。
我的建议:新手学EtherCAT,先搞懂CoE。因为大部分伺服驱动器都支持CoE,而且CANopen的知识可以直接迁移过来。你只要理解了PDO和SDO,EtherCAT就入门了。
3.3.3 EtherCAT的配置步骤
- 硬件连接:主站(控制器)通过网线连接第一个从站,再从第一个从站连到第二个,以此类推。
- 导入ESI文件:每个从站都有ESI(EtherCAT Slave Information)文件,描述设备支持的对象。主站软件导入后自动识别。
- 配置PDO映射:把需要的数据(如目标位置、实际速度)映射到PDO中。
- 设置分布式时钟:选择一个从站作为参考时钟,其他从站同步到它。
- 启动通信:主站进入OP(Operational)状态,开始循环数据交换。
注意:EtherCAT的网线必须用超五类或六类屏蔽网线。我见过有人用普通网线,结果通信不稳定,丢包严重。还有,EtherCAT不支持交换机,必须用专用的EtherCAT耦合器或端子模块。
3.4 CANopen协议基础——工业总线的老大哥
CANopen是基于CAN总线的应用层协议。它比EtherCAT老,但依然广泛使用。尤其是在工程机械、医疗设备、纺织机械等领域,CANopen还是主流。
我记得第一次接触CANopen是在一台纺织机上,32轴同步控制。当时用的是CANopen DS402驱动行规,虽然同步精度不如EtherCAT,但胜在稳定、成本低。那台机器跑了5年没出过通信问题。
3.4.1 CANopen的核心概念
| 概念 | 说明 |
|---|---|
| 对象字典(OD) | 设备的所有参数,通过索引+子索引访问 |
| PDO(过程数据对象) | 实时数据交换,1-8字节,优先级高 |
| SDO(服务数据对象) | 参数配置,可以读写任意对象 |
| NMT(网络管理) | 控制设备状态:初始化→预操作→操作→停止 |
| SYNC(同步对象) | 主站发同步帧,所有从站同时执行 |
3.4.2 CANopen的同步机制
CANopen通过SYNC对象实现同步。主站周期性发送SYNC帧,所有从站收到后同时执行位置/速度指令。同步周期一般1-10ms,比EtherCAT慢,但对于大多数应用足够了。
不过要注意,CANopen的同步精度受总线负载影响。如果总线上有大量PDO在传输,SYNC帧可能会延迟。我建议把SYNC帧的优先级设到最高(COB-ID=0x80),并且控制总线负载率不超过60%。
3.4.3 DS402驱动行规
DS402是CANopen针对驱动器的行规。它定义了伺服驱动器的状态机、控制字、状态字、模式等。常用的模式有:
- 轮廓位置模式(pp):给定目标位置和速度,驱动器内部规划轨迹。
- 轮廓速度模式(pv):给定目标速度,驱动器加减速。
- 原点回归模式(hm):自动找原点。
- 插补位置模式(ip):主站实时下发位置指令,用于电子凸轮。
经验之谈:用CANopen做多轴同步,一定要用好SYNC和PDO。把位置指令映射到TX-PDO(从站发送),把状态反馈映射到RX-PDO(从站接收)。这样主站只需要发一个SYNC帧,所有从站同时响应,效率最高。
3.5 四种控制方式的对比与选型
| 控制方式 | 同步精度 | 轴数 | 成本 | 抗干扰 | 适用场景 |
|---|---|---|---|---|---|
| 脉冲方向 | 中等(受脉冲频率限制) | ≤4轴 | 低 | 好(差分输出) | 小型设备、点对点定位 |
| 模拟量 | 低(受干扰影响大) | ≤2轴 | 低 | 差 | 变频器调速、老设备改造 |
| EtherCAT | 高(<1μs) | ≥8轴 | 高 | 好 | 多轴同步、电子凸轮、机器人 |
| CANopen | 中等(1-10ms同步周期) | ≤16轴 | 中 | 好 | 中轴数同步、工程机械、纺织 |
选型时,我一般这样判断:
- 轴数≤4,精度要求不高 → 脉冲控制,省钱省事。
- 轴数4-8,需要中等同步精度 → CANopen,性价比高。
- 轴数≥8,同步精度要求高 → EtherCAT,没得选。
- 模拟量控制?除非是改造老设备,否则别碰。
最后说一句:不管你选哪种协议,一定要在调试前把通信参数确认清楚。波特率、站号、PDO映射、同步周期,这些参数错了,设备动都动不了。我见过太多人在现场花一整天查通信问题,结果只是站号重复了。