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 常见问题与排查

通信不上怎么办?别慌,按这个顺序查:

  1. 先看硬件接线——TX/RX有没有接反?
  2. 再看参数配置——波特率、数据位、停止位、校验位是否一致?
  3. 最后看设备地址——Modbus地址对不对?

我曾经被一个很简单的问题卡了整整半天:PLC和变频器的波特率都设成了19200,但变频器实际跑的是9600。为什么?因为变频器的拨码开关被人动过了。嗯,从那以后,我每次调试前都会先读一遍设备的实际参数,而不是只看手册。

避坑指南:我曾经遇到过一台设备,手册上写的是“8位数据位、1位停止位、无校验”,但实际配置却是“8位数据位、2位停止位、偶校验”。所以,永远不要100%相信手册,用软件读一遍实际参数最靠谱

4.9 知识体系图

下面这张图,是我自己整理的通信参数配置决策流程。你照着走,基本不会出错。

通信参数配置决策流程 开始配置通信参数 第一步:确定波特率(距离短选高,距离长选低) 第二步:数据位(Modbus RTU选8位) 第三步:停止位(默认1位,特殊设备2位) 第四步:校验位(干扰大选偶校验) 两边参数一致 → 通信成功 常见组合 9600,8,1,N 19200,8,1,E 38400,8,1,N 115200,8,1,N 9600,8,2,E (特殊设备用)

这张图我每次做项目都会打印出来贴在调试台上。你照着这个流程走,90%的通信参数问题都能解决。

好了,通信参数配置就讲到这里。记住:参数匹配是通信的基础,基础不牢,地动山摇。下一节我们聊聊更深入的内容。


公众号:蓝海资料掘金营,微信deep3321