第二讲:物理层与传输模式——RS-232、RS-485、RS-422接口对比,RTU与ASCII模式详解
各位工程师朋友,咱们接着聊。上一讲我们把Modbus协议的整体框架搭起来了,这一讲要落地了——聊聊物理层和传输模式。说白了,就是Modbus报文到底通过什么线缆传出去,以及用什么格式打包。
我刚开始接触Modbus时,觉得协议本身挺简单,结果一到现场就栽跟头。线接错了、距离不够、干扰太大……各种问题。后来才明白,物理层选型不对,上层协议写得再好也白搭。
一、三种串行接口:RS-232、RS-485、RS-422
Modbus串行通信主要跑在这三种物理接口上。它们长相差不多(都是DB9或端子排),但脾气秉性完全不同。
1. RS-232:老将出马,一个顶俩?
RS-232是最早的串行接口标准,PC机后面的COM口就是它。我最早做项目时,用RS-232连PLC和触摸屏,距离短、速度慢,但胜在简单。
关键参数:
- 传输距离:理论15米,实际建议不超过10米
- 通信方式:点对点,只能一主一从
- 信号电平:±12V(比TTL电平抗干扰强一些)
- 接线方式:至少3根线(TX、RX、GND)
2. RS-485:工业现场的主力军
RS-485才是Modbus的黄金搭档。为什么?因为它支持多节点、长距离、差分信号抗干扰强。我在工厂里见过一条RS-485总线挂了32个设备,跑得稳稳当当。
核心优势:
- 传输距离:1200米(不加中继器)
- 节点数量:标准32个,用高阻抗芯片可到256个
- 通信方式:半双工,同一时刻只能一个设备发数据
- 接线方式:两线制(A+、B-),加一根GND更稳妥
我个人习惯,在RS-485总线的两端各加一个120Ω终端电阻。为什么?因为信号在长线上会反射,不加电阻波形会振铃,数据就容易出错。你想想看,一条线上几十个设备,因为少两个电阻导致通信不稳定,多冤啊。
3. RS-422:全双工的RS-485
RS-422和RS-485很像,但它是全双工的——可以同时收发数据。不过说实话,在Modbus应用里RS-422用得不多。为什么?因为Modbus是主从轮询机制,主机问一句,从机答一句,半双工完全够用。
什么时候用RS-422?
- 需要同时收发数据的场景(比如某些高速数据采集)
- 距离特别远(RS-422也能到1200米)
- 对实时性要求极高的场合
我记得有个项目,客户非要RS-422,说全双工更快。结果布线成本翻倍,实际效果和RS-485没区别。嗯,有时候技术选型也要考虑性价比。
三种接口对比表
| 参数 | RS-232 | RS-485 | RS-422 |
|---|---|---|---|
| 传输方式 | 单端 | 差分 | 差分 |
| 通信模式 | 全双工 | 半双工 | 全双工 |
| 最大节点数 | 2(点对点) | 32(标准) | 10(接收端) |
| 最大距离 | 15米 | 1200米 | 1200米 |
| 抗干扰能力 | 弱 | 强 | 强 |
| 典型应用 | 短距离调试 | 工业现场总线 | 高速全双工 |
二、传输模式:RTU与ASCII
物理层搞定了,接下来是数据怎么打包。Modbus串行通信有两种模式:RTU和ASCII。我建议你优先用RTU,除非有特殊需求。
1. RTU模式(Remote Terminal Unit)
RTU模式用二进制传输,每个字节8位数据,效率高、速度快。这是工业现场最常用的模式。
帧格式:
| 地址码 | 功能码 | 数据区 | CRC校验 |
| 1字节 | 1字节 | N字节 | 2字节 |
RTU的关键是CRC校验。我见过不少工程师,CRC算错了导致通信失败,还以为是硬件问题。其实CRC算法是固定的,网上有现成的查表法代码,直接拿来用就行。
RTU模式特点:
- 数据密度高,同样波特率下传输效率是ASCII的两倍
- CRC校验比LRC更可靠
- 要求严格的帧间隔(3.5个字符时间)
2. ASCII模式
ASCII模式把每个字节拆成两个ASCII字符发送。比如0x4A就发送字符'4'和'A'(十六进制表示)。
帧格式:
| 起始符 | 地址码 | 功能码 | 数据区 | LRC校验 | 结束符 |
| 1字节 | 2字节 | 2字节 | N*2字节| 2字节 | 2字节 |
ASCII模式的好处是肉眼可读,调试方便。但代价是传输效率低——同样的数据量,ASCII需要两倍的字节数。
我什么时候用ASCII?说实话,很少。只有在通信链路特别差、RTU的CRC经常出错时,我才会考虑ASCII。因为ASCII的LRC校验简单,而且每个字符都是可打印的,不容易被干扰破坏。
3. RTU vs ASCII 对比
| 对比项 | RTU | ASCII |
|---|---|---|
| 数据表示 | 二进制 | 十六进制ASCII字符 |
| 校验方式 | CRC-16 | LRC |
| 传输效率 | 高 | 低(约RTU的一半) |
| 调试难度 | 需要工具解析 | 肉眼可读 |
| 推荐场景 | 绝大多数工业应用 | 调试、干扰严重的链路 |
三、实际选型建议
讲了这么多,到底怎么选?我总结几条经验:
- 距离短(<10米)、设备少(1主1从):RS-232 + RTU,简单够用
- 距离远(10-1200米)、设备多(2-32个):RS-485 + RTU,工业标配
- 链路干扰特别大:试试ASCII模式,虽然慢但稳定
- 需要全双工:RS-422,但先确认是否真的需要
💡 我的小技巧: 设计电路板时,把RS-485的A/B线加上TVS管和共模扼流圈。我曾经在一个变频器旁边调试设备,没加保护,烧了三块485芯片。加了保护后,再也没出过问题。
好了,物理层和传输模式就聊到这儿。下一讲我们深入报文结构,看看Modbus的地址、功能码、数据区到底怎么组织。到时候我会拿一个实际项目的报文来拆解,保证你看完就能上手。
记住一句话:物理层选对了,协议就成功了一半。别小看这几根线,它们可是Modbus通信的命根子。