第二章:物理层与传输介质
各位同学,咱们今天聊聊Modbus的“地基”——物理层。说白了,就是信号怎么在线上跑起来。我见过不少新手,一上来就盯着协议栈看,结果现场调试时线都接不对,那叫一个尴尬。所以,这一章咱们把底层的硬功夫练扎实。
2.1 RS-232:老当益壮的短距离选手
RS-232,这玩意儿年纪比我还大。它用的是单端信号传输,一根信号线对地,电压差来代表逻辑0和1。逻辑1是-3V到-15V,逻辑0是+3V到+15V。嗯,这里要注意,它的电压范围跟现在主流的3.3V或5V系统不兼容,所以需要电平转换芯片,比如MAX232。
RS-232的最大缺点就是传输距离短,一般也就15米左右。而且它只能点对点通信,一个串口只能连一个设备。你想想看,要是工厂里几百个传感器都用RS-232,那线缆得绕成蜘蛛网。
2.2 RS-485:工业现场的主力军
RS-485就不一样了。它用的是差分信号传输,两根线(A和B)之间的电压差来决定逻辑。逻辑1是A比B高,逻辑0是B比A高。这种差分结构抗干扰能力极强,传输距离能到1200米以上。
我个人习惯,在项目选型时,只要距离超过50米或者现场有电机、变频器这类强干扰源,二话不说就上RS-485。它支持多点通信,一条总线上最多能挂32个节点(标准负载),如果用高阻抗的芯片,甚至可以挂到256个。
2.3 RS-422:全双工的“老大哥”
RS-422跟RS-485很像,也是差分信号。但它多了一对线,实现了全双工通信——可以同时发送和接收。而RS-485是半双工,同一时间只能发或收。
RS-422一般用在需要高速、长距离、全双工的场合,比如一些老式的PLC编程口。不过现在RS-485用得更多,因为半双工对大多数应用来说已经够用了,而且布线更简单。
2.4 双绞线与终端电阻
说到传输介质,双绞线是RS-485/RS-422的标配。为什么用双绞线?因为两根线绞在一起,外部干扰在两根线上产生的噪声大小相等、方向相反,差分接收器一减,噪声就抵消了。说白了,这就是物理层的“共模抑制”。
终端电阻,这是个容易忽略的细节。在RS-485总线的两端,各需要接一个120欧姆的电阻。为什么是120欧姆?因为双绞线的特性阻抗就是120欧姆。接上它,信号到了线缆末端就不会反射回来,避免数据出错。
2.5 串口参数:波特率、数据位、校验位、停止位
这些参数是Modbus通信的“握手协议”。两边必须设置一致,否则鸡同鸭讲。
| 参数 | 说明 | 常见值 |
|---|---|---|
| 波特率 | 每秒传输的符号数,单位bps | 9600、19200、38400、115200 |
| 数据位 | 每个字节的数据位数 | 7位(ASCII模式)、8位(RTU模式) |
| 校验位 | 用于检错 | 无校验、奇校验、偶校验 |
| 停止位 | 表示一个字节传输结束 | 1位、2位 |
我个人习惯,Modbus RTU模式用8位数据位、无校验、1位停止位,波特率根据距离和干扰情况选。9600是万金油,115200速度快但容易受干扰。
2.6 TCP/IP物理层
Modbus TCP/IP的物理层就简单多了。它直接跑在以太网上,用的是标准的RJ45接口和网线。物理层由IEEE 802.3标准定义,我们只需要关心网线类型和连接方式。
常用的网线有超五类(Cat5e)和六类(Cat6)。Cat5e支持100Mbps,Cat6支持1000Mbps。对于Modbus TCP来说,100Mbps已经绰绰有余了。
连接方式有两种:直连线和交叉线。现在大部分设备都支持自动翻转(Auto MDI/MDI-X),所以随便用哪种线都行。但老设备可能不支持,我建议手边常备一根交叉线,以防万一。
知识体系总览
下面这张图,把本章的核心逻辑串起来了。你看一眼,心里就有数了。
好了,物理层这块就聊到这儿。记住一句话:物理层是基础,基础不牢,地动山摇。下一章咱们进入数据链路层,看看Modbus的帧结构是怎么组织的。
公众号:蓝海资料掘金营,微信deep3321