文章目录

Modbus通信的奇偶校验与停止位设置

发布于 2026-03-22 23:44:13 · 浏览 5 次 · 评论 0 条

Modbus通信的奇偶校验与停止位设置

Modbus是工业自动化领域最常用的串行通信协议之一。当你遇到PLC与变频器、温控器或智能仪表通信失败时,问题往往出在串口参数的细微差异上——尤其是校验位和停止位这两个极易被忽视的设置。本文将系统讲解如何正确配置这两个参数,确保你的Modbus网络稳定运行。


第一部分:理解串口通信的基础帧结构

在深入配置之前,你需要先理解一帧Modbus RTU报文是如何在物理线路上传输的。串口通信以"帧"为单位发送数据,每帧包含:起始位(1位)、数据位(8位)、校验位(可选)、停止位(1或2位)。

以最常见的8-N-1配置为例,传输一个字节的实际波形是:先拉低电平表示起始,然后依次发送8个数据位(低位在前),接着是校验位(这里无校验,所以跳过),最后拉高电平表示停止。整个时序必须严格对齐,收发双方的时钟误差不能超过约2%

打开你的设备手册,找到"通信参数"章节。你会看到类似这样的描述:"波特率9600,数据位8,停止位1,偶校验"。这四个参数必须逐字匹配,任何一项不同都会导致通信失败。


第二部分:奇偶校验的工作原理与选择

2.1 什么是奇偶校验

奇偶校验是最简单的错误检测机制。它通过在数据位后附加1个校验位,使整个帧中"1"的个数满足特定规律。

  • 偶校验(Even):数据位+校验位中"1"的总数为偶数
  • 奇校验(Odd):数据位+校验位中"1"的总数为奇数
  • 无校验(None):不发送校验位,帧结构变为8-N-18-N-2

计算一个字节的偶校验位示例:假设要发送数据0x53(二进制01010011,包含4个"1")。4已经是偶数,所以校验位填0,接收端检测到总"1"个数为4(偶数),判定数据正确。

若数据改为0x52(二进制01010010,3个"1"),校验位需填1,使总数变为4(偶数)。

2.2 何时必须使用校验位

Modbus RTU协议本身有CRC校验作为终极防线,理论上可以禁用奇偶校验。但工业现场的电磁干扰可能破坏单比特,此时奇偶校验能提前剔除明显错误的帧,避免浪费CPU资源去计算CRC。

以下场景建议启用偶校验

场景 原因
电缆长度超过50米 长距离传输误码率上升
与老式仪表通信 部分旧设备不支持无校验模式
存在变频器或大功率电机干扰 电磁环境恶劣
波特率高于19200 时钟容差要求更严格

以下场景可以禁用校验

场景 原因
短距离RS-485通信(<10米) 误码率极低
需要最大化吞吐量 每帧节省1位传输时间
设备明确不支持校验 部分简易设备只有固定配置

第三部分:停止位的作用与配置策略

3.1 停止位的本质功能

停止位标志一帧的结束,同时为接收方提供重新同步的时间窗口。在异步通信中,收发双方没有共享时钟线,仅靠各自晶振维持波特率。每传输若干位后,时钟漂移会累积,停止位提供了一个"校准点"让接收方复位。

  • 1位停止:标准配置,适用于绝大多数场景
  • 2位停止:为时钟精度不足的设备提供更多容差

3.2 1位与2位的选择依据

设置为2位停止的典型情况:

  1. 硬件限制:某些老式PLC(如早期西门子S7-200)的串口芯片波特率发生器精度有限,在115200等高波特率下必须使用2位停止以保证可靠同步。

  2. 多设备总线:当总线上挂接十几台从站设备时,各设备晶振精度参差不齐,2位停止能容忍更大的时钟偏差。

  3. 协议转换网关:部分串口服务器或Modbus网关内部处理需要时间缓冲,2位停止提供了额外裕量。

注意:Modbus标准规定从站必须在3.5字符时间内开始响应。使用2位停止会略微延长帧间隔,但通常不影响合规性,除非你运行在接近协议极限的高速率下。


第四部分:实际配置操作指南

4.1 西门子S7-1200/1500 PLC配置

打开TIA Portal软件,双击项目树中的"设备组态"。选中PLC的CM1241或CB1241通信板,查看属性中的"端口组态"选项卡。

设置参数如下:

参数 典型值 说明
波特率 9600 与从站匹配
校验 "Even""None" 优先尝试偶校验
数据位 8 固定值
停止位 1 失败时尝试改为2

关键操作展开"高级选项",确认"操作模式"设为"Modbus (Master)"点击"Modbus设置"子项,设置从站轮询超时时间为1000ms(默认值可能过短)。

4.2 三菱FX5U PLC配置

启动GX Works3,双击导航栏"参数"→"FX5UCPU"→"模块参数"→"485串口"。

选择"协议"为"Modbus RTU Master"切换到"基本设置"页,配置如下:

  1. 选择"传输速度":9600bps
  2. 选择"数据长度":8位
  3. 选择"奇偶校验":偶校验
  4. 选择"停止位":1位

注意:三菱FX5U的RS-485端口与编程口共用,确认未勾选"使用编程协议",否则Modbus功能被禁用。

4.3 变频器/仪表侧配置

以台达VFD-E系列变频器为例:

进入参数09-00(通讯地址),设置从站地址为1(避开广播地址0)。进入09-01选择波特率为9600进入09-04设置数据格式:

参数值 格式 应用场景
0 7-N-2 兼容极老设备,不推荐
1 7-E-1 部分欧系仪表
2 7-O-1 极少使用
3 8-N-1 最常见
4 8-E-1 推荐标准
5 8-O-1 特定厂商要求
6 8-N-2 长距离或高速率

务必使此值与PLC侧完全对应


第五部分:故障排查与验证方法

5.1 通信失败的典型症状与定位

症状一:PLC报错"从站无响应"

  • 检查物理接线:A/B线是否反接,终端电阻是否缺失
  • 检查从站地址:是否与PLC程序中MB_MASTER指令的MB_ADDR参数一致
  • 检查波特率:用示波器或USB转串口工具抓取实际波形,测量位宽是否为1/9600 ≈ 104μs

症状二:偶发数据错误,CRC校验失败

  • 尝试将校验改为Even,排除单比特翻转
  • 尝试将停止位改为2,排除同步误差
  • 检查屏蔽层接地:RS-485屏蔽应单端接地,避免地环流

症状三:特定从站偶尔离线

  • 分析该从站与其他设备的差异:是否线缆更长?是否靠近干扰源?
  • 临时将该从站波特率降低一半(如9600→4800),观察稳定性是否改善

5.2 使用串口监听工具验证

安装Modbus Poll或类似工具,配置为与PLC相同的串口参数。连接到总线,观察是否能正常读取从站数据。

关键验证步骤

  1. 故意将监听工具的校验位设错(如实际为Even,工具设为Odd)
  2. 观察现象:所有返回帧应显示CRC错误或帧格式错误
  3. 恢复正确设置,确认通信正常
  4. 结论:若参数错误时通信必定失败,说明物理层参数匹配是硬性门槛

5.3 示波器波形分析(进阶)

若具备示波器,捕捉RS-485差分信号,测量以下指标:

  • 位宽:$T = \frac{1}{波特率}$,9600bps下应为$104.17\mu s \pm 2\%$
  • 帧间隔:Modbus RTU要求帧间间隔≥3.5字符时间,即$3.5 \times 11 \times T \approx 4ms$(以8-E-1计11位/字符)
  • 信号幅度:正常应为$2V \sim 6V$(A-B间差分),低于$1.5V$可能导致误判

第六部分:特殊场景与最佳实践

6.1 多主站冲突处理

Modbus标准不允许多主站,但某些网关设备会模拟此行为。确保所有主站的串口参数完全一致,包括校验和停止位。参数不一致的主站发送数据时,会以错误格式占用总线,导致其他主站解析异常。

6.2 无线透传模块的适配

当使用LoRa或4G透传模块替代有线RS-485时,注意

  • 部分透传模块强制使用8-N-1,不支持校验位
  • 空中速率与串口波特率解耦,但模块内部需要缓冲处理,建议停止位设为2以提供处理裕量
  • 无线链路的误码特性与有线不同,必须启用应用层CRC校验,不可仅依赖奇偶校验

6.3 配置变更的文档管理

建立通信参数配置表,记录每台设备的:

设备位号 从站地址 波特率 数据位 校验 停止位 备注
VFD-101 1 9600 8 Even 1 挤出机主驱
TIC-201 2 9600 8 Even 1 反应釜温度
FIQ-301 3 19200 8 None 1 质量流量计,需高速采样

禁止口头约定参数,任何变更必须同步更新此表。


最终检查清单(新建通信链路时逐项确认):

  1. 核对PLC程序中的MB_MASTERMB_CLIENT参数与硬件组态一致
  2. 核对从站设备参数与PLC侧匹配,特别注意校验和停止位
  3. 确认总线拓扑:手牵手连接,避免星型拓扑;总线两端各加120Ω终端电阻
  4. 测试单设备通信成功后,再逐个追加从站
  5. 记录最终配置参数至设备档案

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文