1. 项目背景与核心需求
工业自动化领域对生产环境参数的实时监测有着刚性需求,温湿度作为影响产品质量、设备运行稳定性的关键指标,其数据采集的可靠性直接关系到整个生产系统的控制精度。中盛模块作为国内主流的工业级温湿度传感器,其稳定性和性价比在食品加工、医药仓储、电子制造等行业得到广泛验证。
传统PLC通过模拟量输入模块采集传感器数据存在布线复杂、抗干扰能力差等痛点。本项目采用RS485总线实现三菱FX系列PLC与中盛TH系列温湿度模块的通讯,相比传统方案具有三大优势:
- 单总线可挂接多个传感器(理论最大32个节点)
- 最远1200米传输距离(波特率9600时)
- 数字信号传输抗干扰能力显著提升
2. 硬件系统搭建要点
2.1 设备选型清单
| 设备类型 | 推荐型号 | 关键参数 |
|---|---|---|
| PLC主机 | 三菱FX3U-32MR/ES | 内置RS485接口,支持Modbus RTU |
| 温湿度模块 | 中盛TH320S-RS485 | 精度±0.5℃/±3%RH,DC24V供电 |
| 通讯线缆 | RVSP 2×1.0mm²双绞屏蔽线 | 线径≥1.0mm²,带铝箔+编织层 |
| 终端电阻 | 120Ω 1/4W金属膜电阻 | 接在总线最远端模块的A-B端子 |
2.2 硬件连接规范
- 供电隔离:为每个TH320S单独配置DC24V开关电源,避免共地干扰
- 总线拓扑:采用手拉手菊花链连接,严禁星型拓扑
- 屏蔽层处理:电缆屏蔽层单端接地(建议接PLC侧地线端子)
- 极性确认:A线(485+)接模块T/R+,B线(485-)接T/R-
关键提示:首次上电前务必用万用表测量A-B线间电阻(断电状态下应为60Ω左右),避免短路烧毁端口。
3. 通讯协议深度解析
3.1 中盛模块数据格式
TH320S采用标准Modbus RTU协议,具体数据映射如下:
| 寄存器地址 | 数据类型 | 数据含义 | 换算公式 |
|---|---|---|---|
| 0x0000 | uint16 | 温度原始值 | 温度=值/10-40(℃) |
| 0x0001 | uint16 | 湿度原始值 | 湿度=值/10(%RH) |
| 0x0002 | uint16 | 设备状态字 | 位0=1表示传感器故障 |
典型查询帧示例(读取温度湿度):
bash复制01 03 00 00 00 02 C4 0B
- 01:模块地址(默认1,可通过拨码开关修改)
- 03:功能码(读取保持寄存器)
- 00 00:起始地址
- 00 02:读取寄存器数量
- C4 0B:CRC16校验
3.2 三菱PLC程序架构
FX3U系列通过内置RS485接口实现Modbus主站功能,需按以下步骤配置:
-
特殊寄存器设置:
- D8120=0x009F(波特率9600,8数据位,无校验,1停止位)
- D8121=0x0001(通讯超时1秒)
-
梯形图编程要点:
structured复制MOV K1 D100 // 目标站地址=1
MOV H3 D101 // 功能码=03H
MOV H0 D102 // 起始地址高位
MOV H0 D103 // 起始地址低位
MOV H0 D104 // 寄存器数量高位
MOV H2 D105 // 寄存器数量低位
RS D100 K6 D200 K5 // 发送6字节到D100-D105,接收存D200起5字节
4. 数据处理与异常处理
4.1 数据转换算法
收到有效数据后需进行工程值转换:
-
温度处理:
- 原始值:D201(高8位)+D202(低8位)
- 实际温度 = (RAW_VALUE / 10) - 40
- 示例:收到0x01A2 → 十进制418 → 41.8-40=1.8℃
-
湿度处理:
- 原始值:D203+D204
- 实际湿度 = RAW_VALUE / 10
- 示例:收到0x0276 → 十进制630 → 63.0%RH
4.2 错误处理机制
| 错误代码 | 可能原因 | 解决方案 |
|---|---|---|
| E1 | 从站无响应 | 检查模块供电/地址/接线 |
| E2 | CRC校验错误 | 更换屏蔽线或降低波特率 |
| E3 | 非法功能码 | 确认D101设置为03H |
| E4 | 非法数据地址 | 检查D102-D105设置 |
典型错误处理程序:
structured复制LD M8123 // 接收完成标志
AND<> D200 K1 // 判断站地址是否匹配
OUT Y0 // 报警输出
LD M8123
AND<> D201 K3 // 判断功能码是否正确
OUT Y1
5. 系统调试实战技巧
5.1 分阶段调试法
-
硬件层验证:
- 用USB-RS485转换器连接PC与单个模块
- 使用ModScan32测试基础通讯(确认能读取数据)
-
协议层验证:
- PLC发送测试帧(如01 03 00 00 00 02 C4 0B)
- 用示波器抓取485总线波形(确认信号完整性)
-
应用层验证:
- 强制修改D200-D205值模拟响应数据
- 监控D210-D215确认数据解析正确
5.2 典型故障排查
现象: PLC能收到数据但值固定为0
- 检查模块供电电压(实测≥22V)
- 确认传感器保护膜已撕除(新模块出厂带保护膜)
- 用热风枪局部加热传感器观察数值变化
现象: 通讯时好时坏
- 测量总线末端电压(A-B线间差分电压应≥1.5V)
- 尝试降低波特率到4800测试
- 检查附近是否有变频器/大功率设备干扰
6. 系统优化建议
- 数据滤波算法:
structured复制// 移动平均滤波(N=5)
MOV D210 D220 // 当前温度值
MOV D211 D221 // 历史值1
MOV D222 D222 // 历史值2
...
DIV (D220+D221+...+D224)/5 D230 // 滤波后温度
- 定时轮询策略:
- 多个模块采用分时查询(间隔≥100ms)
- 关键点位模块设置更高优先级(如每周期查询)
- 数据记录方案:
- 使用SD卡扩展模块(FX3U-4AD-ADP)
- 设置触发记录条件(如温度>阈值时记录)
实际项目中发现,当总线长度超过800米时,建议在总线中段增加RS485中继器(如研华ADAM-4510)。对于制药厂等强干扰环境,可考虑采用光纤转换器(MOXA MC-110)实现电气隔离。
