4、通信参数配置:波特率、数据位、停止位、校验位的设置方法与匹配原则
通信参数配置,说白了就是让PLC和Modbus设备说同一种方言。我见过太多工程师,程序写得漂亮,硬件接线也没问题,结果就是通不上——最后发现是波特率对不上。嗯,这种坑我踩过不止一次。
4.1 四个核心参数,一个都不能错
Modbus RTU通信的参数配置,主要涉及四个东西:波特率、数据位、停止位、校验位。它们共同决定了数据帧的物理格式。我习惯把它们叫做“通信四件套”。
| 参数 | 常见取值 | 说明 |
|---|---|---|
| 波特率 | 9600、19200、38400、115200 | 每秒传输的符号数,单位bps |
| 数据位 | 7、8 | 每个字节中实际数据的位数 |
| 停止位 | 1、2 | 帧结束的标志位长度 |
| 校验位 | 无校验(N)、奇校验(O)、偶校验(E) | 用于检测传输错误 |
你想想看,如果PLC设的是9600波特率,而变频器设的是19200,那两边根本对不上话。就像两个人,一个说慢速中文,一个说快速英文,谁也听不懂谁。
4.2 波特率:通信的“语速”
波特率决定了通信的快慢。我个人习惯,现场总线距离短、干扰小的时候,直接上115200。但如果线缆长、环境嘈杂,我会老老实实降到9600。
核心原则:波特率越高,传输越快,但抗干扰能力越差。距离每增加100米,建议波特率降低一档。
我在项目中遇到过一件事:一个污水处理厂,PLC到仪表距离大概300米,用了19200波特率,数据总是丢包。后来降到9600,稳如老狗。嗯,这就是教训。
4.3 数据位:传多少数据
Modbus RTU通常用8位数据位。为什么?因为RTU模式下,每个字节就是8位,刚好对应一个数据帧的数据部分。
7位数据位一般用在ASCII模式下,或者某些老式仪表上。我建议你:只要不是特殊要求,一律选8位。省得后面出问题排查半天。
4.4 停止位:帧的“句号”
停止位表示一个数据帧的结束。常见的是1位停止位,但有些设备要求2位。
我曾经调试一台德国进口的温控器,死活连不上。查手册才发现,它要求2位停止位。改完之后,一次成功。所以,遇到通信问题,先看设备手册的通信参数页。
小技巧:如果不知道设备用几位停止位,先试1位。不行再试2位。大部分现代设备都兼容1位停止位。
4.5 校验位:数据的“防伪标识”
校验位用来检测数据在传输过程中有没有被干扰。三种模式:
- 无校验(N):不检测错误,速度快,但可靠性低
- 奇校验(O):数据中1的个数为奇数
- 偶校验(E):数据中1的个数为偶数
我个人的经验:现场干扰大的时候,用偶校验。为什么?因为偶校验在工业现场兼容性最好,大部分PLC和仪表都支持。
注意:如果启用了校验位,数据位+校验位总共是9位。有些PLC的串口模块需要单独配置校验位,别漏了。
4.6 匹配原则:两边必须一模一样
通信参数匹配,就一句话:PLC怎么设,设备就怎么设;设备怎么设,PLC就怎么设。两边必须完全一致。
我总结了一个快速排查口诀:
- 波特率对不上——完全不通
- 数据位对不上——数据乱码
- 停止位对不上——偶发丢包
- 校验位对不上——CRC错误频繁
4.7 实战配置示例
下面是一个西门子S7-1200通过Modbus RTU通信的配置代码片段。我习惯把参数写清楚,方便以后维护。
// 西门子S7-1200 Modbus RTU主站配置
// 通信参数:9600, 8, 1, 无校验
"MB_COMM_LOAD_DB".MB_COMM_LOAD(
REQ := TRUE,
PORT := 1, // 硬件接口号
BAUD := 9600, // 波特率
PARITY := 0, // 0=无校验, 1=奇校验, 2=偶校验
DATABITS := 8, // 数据位
STOPBITS := 1, // 停止位
DONE => "Tag_Done",
ERROR => "Tag_Error",
STATUS => "Tag_Status"
);
你看,参数一目了然。我建议你在每个通信块旁边都加个注释,写上实际使用的参数值。半年后回来维护,你会感谢自己的。
4.8 常见问题与排查
通信不上怎么办?别慌,按这个顺序查:
- 先看硬件接线——TX/RX有没有接反?
- 再看参数配置——波特率、数据位、停止位、校验位是否一致?
- 最后看设备地址——Modbus地址对不对?
我曾经被一个很简单的问题卡了整整半天:PLC和变频器的波特率都设成了19200,但变频器实际跑的是9600。为什么?因为变频器的拨码开关被人动过了。嗯,从那以后,我每次调试前都会先读一遍设备的实际参数,而不是只看手册。
避坑指南:我曾经遇到过一台设备,手册上写的是“8位数据位、1位停止位、无校验”,但实际配置却是“8位数据位、2位停止位、偶校验”。所以,永远不要100%相信手册,用软件读一遍实际参数最靠谱。
4.9 知识体系图
下面这张图,是我自己整理的通信参数配置决策流程。你照着走,基本不会出错。
这张图我每次做项目都会打印出来贴在调试台上。你照着这个流程走,90%的通信参数问题都能解决。
好了,通信参数配置就讲到这里。记住:参数匹配是通信的基础,基础不牢,地动山摇。下一节我们聊聊更深入的内容。
公众号:蓝海资料掘金营,微信deep3321