2. 通讯协议基础:串口、以太网与工业总线

做运动控制上位机开发,说白了就是跟各种设备「对话」。你得知道对方用什么语言、什么规矩来收发数据。这一章我就带你捋一遍最常用的几种通讯方式——串口、以太网,还有工业现场常见的总线协议。

我个人习惯把通讯协议分成两类:一类是物理层怎么接线的,另一类是数据怎么组织的。咱们先看物理层,再聊数据层。

核心观点:选对通讯协议,比写好代码更重要。协议选错了,后面再怎么优化也白搭。

2.1 串口通讯:RS232 与 RS485

串口通讯,老一辈工程师叫它「串行口」。它一次只传一个 bit,一根数据线走天下。虽然速度不快,但胜在简单、可靠,工业现场至今还在大量使用。

2.1.1 RS232——点对点的老将

RS232 是最早的串口标准之一。我记得刚入行时调试一台老式 PLC,用的就是 RS232。它有几个特点:

  • 全双工:发送和接收可以同时进行,用 TX、RX 两根线。
  • 电压摆幅大:逻辑 1 是 -3V ~ -15V,逻辑 0 是 +3V ~ +15V。抗干扰能力还行,但距离一长就衰减。
  • 传输距离短:一般不超过 15 米。我试过拉 20 米线,数据就开始丢包了。
  • 点对点:一台设备只能跟另一台设备通信,不能组网。
参数 RS232 RS485
传输方式 单端(不平衡) 差分(平衡)
最大距离 约 15 米 约 1200 米
最大节点数 1 对 1 最多 32 个(标准)
电压范围 ±3V ~ ±15V ±1.5V ~ ±6V
常用场景 调试口、短距设备 工业总线、多站通信

小技巧:调试 RS232 时,我习惯先用串口助手发一个 0x55(二进制 01010101),看波形是不是交替翻转。如果波形不对,先查电平转换芯片(比如 MAX232)的供电。

2.1.2 RS485——工业现场的主力

RS485 用的是差分信号,两根线(A、B)传一路数据。抗干扰能力比 RS232 强得多,距离也能拉到上千米。

我曾经在一个自动化产线上用过 RS485,挂了 16 台伺服驱动器,用一条双绞线就搞定了。不过要注意:

  • 半双工:同一时刻只能发或收,需要软件控制收发切换。
  • 终端电阻:长线传输时,必须在总线两端各加一个 120Ω 电阻,防止信号反射。
  • 共模电压:虽然差分信号抗干扰,但共模电压不能超过 -7V ~ +12V,否则会烧芯片。

避坑指南:我曾经遇到过 RS485 通信时好时坏,查了半天发现是地线没接。RS485 虽然用差分信号,但设备之间最好还是共地,否则共模电压漂移会导致数据错乱。

2.2 以太网通讯:TCP 与 UDP

以太网在工业领域越来越普及。速度比串口快得多,而且能跟办公网络共用。但工业以太网和普通办公网络有个本质区别——实时性。

2.2.1 TCP——可靠但慢

TCP 是面向连接的协议。它像打电话一样,先建立连接,再传数据,最后挂断。TCP 保证数据不丢、不乱序,但代价是额外的握手和确认包。

我做上位机时,如果传输的是配置文件、固件升级包这类数据,一定用 TCP。丢一个字节都不行。

  • 三次握手:SYN → SYN-ACK → ACK,建立连接。
  • 重传机制:如果没收到 ACK,发送方会重传数据包。
  • 流量控制:接收方可以告诉发送方「慢点发,我处理不过来」。

2.2.2 UDP——快但不可靠

UDP 像发短信——你只管发,对方收没收到你不管。它没有握手、没有重传,所以延迟很低。

在运动控制中,如果传输的是实时状态数据(比如位置、速度),偶尔丢一帧没关系,但延迟必须低。这时候 UDP 比 TCP 更合适。

特性 TCP UDP
连接方式 面向连接 无连接
可靠性 可靠(重传、校验) 不可靠(尽力而为)
延迟 较高(握手+确认) 低(无握手)
适用场景 配置、文件、指令 实时状态、视频、音频

经验之谈:如果你用 UDP 传运动指令,建议在应用层加一个简单的序列号。接收方发现序列号跳变时,可以判断丢包,然后主动请求重传。这样既保留了 UDP 的低延迟,又弥补了不可靠的短板。

2.3 工业总线协议:EtherCAT 与 CANopen

串口和以太网是通用协议,但工业现场有更专业的总线协议。它们针对运动控制做了专门优化,实时性、同步性远超通用方案。

2.3.1 EtherCAT——高速同步之王

EtherCAT 是德国 Beckhoff 公司开发的实时以太网协议。它的核心思想是「飞读飞写」——数据帧经过每个从站时,从站直接读取或写入数据,延迟只有纳秒级。

我记得第一次用 EtherCAT 控制 8 轴伺服时,同步抖动小于 1 微秒。相比之下,传统脉冲方向控制根本做不到这个精度。

  • 拓扑灵活:支持线型、星型、树型,甚至环形冗余。
  • 分布式时钟:所有从站自动同步,精度可达 100ns 以内。
  • 数据率:100Mbps 全双工,实际有效载荷利用率很高。

关键点:EtherCAT 的从站控制器(ESC)是硬件实现的,所以延迟极低。上位机只需要发一个帧,所有从站的数据都在这个帧里完成读写。

2.3.2 CANopen——稳健的现场总线

CANopen 基于 CAN 总线,最早用在汽车电子,后来被工业自动化广泛采用。它不像 EtherCAT 那么快,但胜在成熟、稳定、成本低。

我曾经用 CANopen 控制一个 4 轴机器人,虽然速度不如 EtherCAT,但抗干扰能力极强。工厂里电机启停、变频器干扰,CANopen 从来没掉过链子。

  • 对象字典:每个设备都有一个标准化的数据字典,通过索引和子索引访问。
  • PDO/SDO:PDO 用于实时数据交换(高速),SDO 用于配置参数(可靠)。
  • 心跳与同步:支持节点心跳检测和同步报文,保证多轴协调。
协议 最大速率 同步精度 典型从站数 成本
EtherCAT 100Mbps < 1μs 100+ 较高
CANopen 1Mbps < 100μs 32~64 较低

注意:CANopen 的 1Mbps 是理论最大值,实际应用中我一般只跑到 500kbps。线缆长度、节点数量都会影响实际速率。别被数据手册上的极限值忽悠了。

2.4 本章知识体系总览

下面这张图把本章的核心知识点串起来了。你可以把它当作一个快速索引,以后遇到通讯问题,先看这张图定位到对应章节。

通讯协议知识体系总览 通讯协议知识体系总览 串口通讯 以太网通讯 工业总线 RS232 RS485 TCP UDP EtherCAT CANopen 选型建议 短距、低速、简单设备 → 串口(RS232/RS485) 高速、多轴、高同步 → EtherCAT | 稳健、低成本 → CANopen

2.5 小结

这一章我们聊了三种通讯方式:串口(RS232/RS485)、以太网(TCP/UDP)、工业总线(EtherCAT/CANopen)。每种协议都有自己的脾气和适用场景。

你想想看,如果你只是调试一台伺服,用 RS485 就足够了。但如果你要控制 8 轴联动、同步精度要求微秒级,那 EtherCAT 几乎是唯一选择。

嗯,这里要注意:协议只是工具,没有绝对的好坏。我在项目中见过有人用 TCP 传实时数据,结果延迟高到没法用;也见过有人用 RS232 控制 4 轴机器人,虽然慢但稳定可靠。关键是你得清楚自己的需求——速度、距离、节点数、实时性,把这些列出来,协议自然就选出来了。