3. 通信协议入门:脉冲方向控制、模拟量控制、EtherCAT总线协议基础、CANopen协议基础

做多轴同步,通信协议是绕不开的坎。很多新手一上来就盯着EtherCAT、CANopen这些高大上的总线,觉得脉冲控制太low。其实不然。我在现场调试过上百台设备,见过用脉冲控制跑得飞快的产线,也见过总线协议没配好导致整条线停机的惨案。说白了,没有最好的协议,只有最合适的。

这一章,我带你把四种主流控制方式过一遍。脉冲方向、模拟量、EtherCAT、CANopen,它们各自适合什么场景?坑在哪里?怎么选?

核心观点:控制方式的选择取决于三个因素——轴数、同步精度要求、成本预算。轴数少(≤4轴)、精度要求不高,脉冲控制最划算;轴数多(≥8轴)、需要高精度同步,必须上总线。

多轴同步通信协议知识体系 多轴同步通信协议知识体系 运动控制通信协议 脉冲方向控制 PUL+DIR / CW+CCW 差分/集电极开路 适合≤4轴 低速场景 模拟量控制 ±10V / 0-10V / 4-20mA 模拟量伺服/变频器 抗干扰差 逐渐淘汰 EtherCAT 分布式时钟 100μs同步 CoE / SoE / FoE 适合≥8轴 高精度场景 CANopen PDO / SDO / NMT 1Mbps 适合中轴数 DS301 / DS402 驱动行规 选型原则:轴数 + 精度 + 成本 → 匹配协议

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的配置步骤

  1. 硬件连接:主站(控制器)通过网线连接第一个从站,再从第一个从站连到第二个,以此类推。
  2. 导入ESI文件:每个从站都有ESI(EtherCAT Slave Information)文件,描述设备支持的对象。主站软件导入后自动识别。
  3. 配置PDO映射:把需要的数据(如目标位置、实际速度)映射到PDO中。
  4. 设置分布式时钟:选择一个从站作为参考时钟,其他从站同步到它。
  5. 启动通信:主站进入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映射、同步周期,这些参数错了,设备动都动不了。我见过太多人在现场花一整天查通信问题,结果只是站号重复了。