4、通信参数配置:波特率、数据位、停止位、校验位设置、站地址分配、通信超时设置
通信参数配置,说白了就是让上位机和远程IO模块「说同一种语言」。我见过太多项目,硬件接线没问题,电源也正常,就是死活连不上——十有八九是参数没对齐。今天咱们就把这块掰开揉碎了讲清楚。
4.1 波特率:通信的「语速」
波特率就是每秒传输的符号数。单位是bps(bits per second)。
常见的波特率有:9600、19200、38400、115200。我个人习惯,现场总线用9600或19200,因为抗干扰能力强。高速数据采集场景才上115200。
核心原则:所有设备的波特率必须完全一致。一个设9600,另一个设19200,绝对连不上。
我在项目中遇到过一件事:一个老工程师把PLC设成9600,IO模块设成19200,折腾了一下午没通。最后发现是参数不匹配。嗯,从那以后我每次调试前都会先核对一遍波特率。
我的建议:如果现场干扰大,优先选9600。虽然慢一点,但稳定。你想想看,数据丢包了,再快也没用。
4.2 数据位:一次传多少数据
数据位表示每个字节中实际传输的数据位数。常见的是7位或8位。
- 8位数据位:最常用。ASCII码传输、二进制数据都用它。
- 7位数据位:老设备或特殊协议才用。比如某些仪表只支持7位。
我建议你直接用8位。现在99%的设备都支持8位数据位。除非你遇到古董级设备,否则别碰7位。
注意:数据位设置不一致,会导致数据解析错误。我曾经调试一个温控模块,数据位设成7位,结果温度值一直跳变。后来发现模块默认是8位。改过来就好了。
4.3 停止位:帧结束的「句号」
停止位表示一帧数据结束后的间隔。常见的是1位、1.5位、2位。
| 停止位 | 适用场景 |
|---|---|
| 1位 | 大多数现代设备,默认配置 |
| 1.5位 | 某些特殊协议,很少见 |
| 2位 | 老设备或干扰大的环境 |
我个人习惯,默认用1位停止位。如果通信不稳定,再尝试2位。1.5位基本不用,因为兼容性差。
4.4 校验位:数据正确性的「安检」
校验位用于检测传输过程中有没有数据错误。常见的有:
- 无校验(None):不校验。速度快,但容易出错。
- 奇校验(Odd):数据位+校验位中1的个数为奇数。
- 偶校验(Even):数据位+校验位中1的个数为偶数。
- 标记校验(Mark):校验位固定为1。
- 空格校验(Space):校验位固定为0。
我的经验:现场总线通信,我一般用无校验或偶校验。无校验速度快,偶校验能检测单比特错误。奇校验用得少,因为和某些设备兼容性不好。
为什么会这样?因为很多国产设备默认就是无校验。你设成偶校验,它反而报错。所以调试前先看设备手册,别想当然。
4.5 站地址分配:给每个模块一个「身份证」
站地址就是每个IO模块在总线上的唯一编号。Modbus协议中,地址范围是1-247。0是广播地址,248-255保留。
分配地址时,我建议你遵循以下原则:
- 从1开始顺序分配。别跳着用,容易乱。
- 留出备用地址。比如1-10给AI模块,11-20给DI模块,21-30给DO模块。方便以后扩展。
- 地址不能重复。两个模块用同一个地址,总线会冲突,谁也连不上。
避坑指南:我曾经在一个项目中,把两个DI模块都设成了地址5。结果上位机读到的数据时对时错。排查了整整一天才发现是地址冲突。从那以后,我每次分配地址都会做一张表格,贴在机柜门上。
4.6 通信超时设置:别让系统「死等」
通信超时是指主站等待从站响应的时间。如果超时了还没收到回复,主站会重发或报错。
超时时间怎么设?我一般这样:
- 本地总线(RS485):100-500ms。距离短,速度快。
- 远程总线(走网关或光纤):500-2000ms。要考虑网络延迟。
- 无线通信(4G、LoRa):2000-5000ms。无线不稳定,超时设长一点。
注意:超时设得太短,系统会频繁报错。设得太长,故障响应慢。我建议你先用默认值,调试时再根据实际情况调整。
嗯,这里要注意:超时设置要和重试次数配合。比如超时500ms,重试3次,那最坏情况要等1.5秒才能确认通信失败。这个时间你要心里有数。
4.7 实战配置示例
下面是一个典型的Modbus RTU配置示例。假设我们有3个IO模块:
模块1:AI模块,地址01,波特率9600,8位数据位,1位停止位,无校验
模块2:DI模块,地址02,波特率9600,8位数据位,1位停止位,无校验
模块3:DO模块,地址03,波特率9600,8位数据位,1位停止位,无校验
主站配置:
通信端口:COM1
波特率:9600
数据位:8
停止位:1
校验位:None
超时时间:500ms
重试次数:3
你想想看,如果主站设成19200,模块设成9600,那肯定连不上。所以配置前一定要统一。
4.8 总结
通信参数配置,说白了就是四个字:保持一致。波特率、数据位、停止位、校验位,这四个参数所有设备必须一模一样。站地址要唯一,超时时间要合理。
我做了十几年自动化,见过太多通信问题都是参数没对齐导致的。所以调试前,先花5分钟核对一遍参数。这5分钟,能省你半天时间。
最后说一句:别嫌麻烦。通信参数配置是基本功,但也是坑最多的地方。你踩过的坑,别人也会踩。所以多记录、多总结,慢慢就变成老司机了。