第二讲:物理层与传输模式
RS-232、RS-485、TCP/IP,再加上RTU与ASCII模式——这些名词你肯定不陌生。但说实话,真正把它们搞明白的人,我见过的不多。
这一讲,我们就来把这些基础但关键的东西理清楚。
一、物理层:三种最常见的接口
物理层决定了数据怎么在线上跑。我调试过的设备里,90%以上就这三种:RS-232、RS-485、TCP/IP。
1. RS-232:老当益壮的点对点
RS-232是最早的串行通信标准之一。它的特点是:
- 单端传输:用一根信号线对地传输,电压范围±3V到±15V
- 点对点:只能接一个发送端和一个接收端
- 距离短:理论最大15米,实际我一般控制在10米以内
- 速率低:通常9600bps到115200bps
2. RS-485:工业现场的主力军
RS-485是目前工业Modbus最常用的物理层。它为什么这么受欢迎?
- 差分传输:用两根线(A、B)传输,抗干扰能力强
- 多节点:一条总线上最多挂32个节点(加中继器可以更多)
- 距离远:1200米没问题,我见过有人跑到1500米还能用
- 速率适中:距离越远速率越低,1000米时一般用9600bps
3. TCP/IP:现代工业的标配
随着工业以太网的普及,Modbus TCP/IP越来越常见。它的优势很明显:
- 高速:100Mbps甚至1Gbps
- 长距离:通过交换机可以覆盖整个工厂
- 易集成:直接走标准以太网,IT部门也熟悉
- 无校验:TCP/IP本身有校验,Modbus TCP不再额外加校验码
嗯,这里要注意:Modbus TCP的端口号是502,很多防火墙默认会封掉这个端口。我遇到过好几次,设备连不上,最后发现是IT把502端口给禁了。
二、传输模式:RTU与ASCII
物理层定了,接下来就是数据怎么编码。Modbus有两种传输模式:RTU和ASCII。
1. RTU模式(远程终端单元)
RTU是工业现场最常用的模式。它的特点:
- 二进制编码:每个字节直接发送,效率高
- CRC校验:16位循环冗余校验,可靠性高
- 连续传输:帧与帧之间必须有3.5个字符以上的空闲时间
举个例子,读取保持寄存器(功能码03)的RTU报文:
请求:01 03 00 00 00 01 84 0A
响应:01 03 02 00 01 79 84
你看,01是设备地址,03是功能码,00 00是起始地址,00 01是读取数量,84 0A是CRC校验。响应里的02表示数据长度2字节,00 01是数据值,79 84是CRC。
2. ASCII模式(美国信息交换标准码)
ASCII模式把每个字节拆成两个ASCII字符发送。比如0x1A就发送字符'1'和'A'。
- 可读性强:报文可以直接用串口助手看
- LRC校验:纵向冗余校验,比CRC简单但可靠性稍低
- 帧头帧尾:以冒号':'开头,回车换行结尾
同样的读取操作,ASCII报文长这样:
请求::010300000001F1\r\n
响应::0103020001FA\r\n
你想想看,同样的数据,ASCII模式要多发一倍的字节。所以除非调试需要,我一般不用ASCII。
三、RTU与ASCII的对比
为了让你看得更清楚,我整理了一个对比表:
| 对比项 | RTU模式 | ASCII模式 |
|---|---|---|
| 编码方式 | 二进制 | ASCII字符 |
| 数据效率 | 高(1字节=1字节) | 低(1字节=2字符) |
| 校验方式 | CRC-16 | LRC |
| 帧间隔 | 3.5字符时间 | 1秒 |
| 可读性 | 差 | 好 |
| 适用场景 | 工业现场 | 调试、老设备 |
四、避坑指南
做Modbus调试这么多年,我踩过不少坑。分享几个最常见的:
- 波特率不匹配:我曾经调试一个项目,设备怎么都连不上,最后发现是波特率设成了19200,而设备实际是9600。嗯,这种低级错误最容易犯。
- RS-485的A/B线接反:A接B,B接A,通信肯定不行。我习惯用万用表量一下,A线对地电压比B线高0.2V左右就对了。
- 终端电阻忘加:前面说过,总线两端必须加120Ω电阻。不加的话,长距离通信容易出问题。
- RTU和ASCII混用:主站设成RTU,从站设成ASCII,那肯定对不上。我见过有人调试半天,最后发现是模式没统一。
五、小结
这一讲我们聊了物理层和传输模式。说白了,RS-232适合短距离点对点,RS-485是工业现场的主力,TCP/IP是现代工厂的趋势。传输模式上,RTU效率高、可靠性好,是首选;ASCII只在调试或兼容老设备时用。
下一讲,我们会深入Modbus的报文结构,看看请求和响应到底长什么样。到时候我会用实际项目中的报文来讲解,保证你一看就懂。