1. 项目概述与硬件配置
在工业自动化控制系统中,PLC与温控器的通讯是实现精确温度控制的关键环节。本次项目使用信捷XD5-24T4-E PLC作为主站,通过RS485总线连接三台台达DT330温控器,实现温度设定、实时读取和输出控制功能。系统架构采用轮询机制,确保通讯稳定可靠,响应时间控制在200ms以内。
1.1 硬件选型与连接
核心设备清单:
- 主控制器:信捷XD5-24T4-E PLC(自带COM2 RS485接口)
- 温控器:台达DT330 ×3(支持Modbus RTU协议)
- HMI:昆仑通态TPC7022NI触摸屏(用于参数显示和设定)
RS485接线规范:
- 使用双绞屏蔽线(AWG18推荐)
- PLC端COM2A(+)连接所有温控器的A+
- PLC端COM2B(-)连接所有温控器的B-
- 总线两端需并联120Ω终端电阻
- 屏蔽层单点接地(推荐在PLC侧接地)
注意:错误的接线会导致信号反射和通讯干扰。曾有个案例因未接终端电阻,导致温度数据每隔5分钟就出现一次跳变,加上电阻后立即稳定。
1.2 温控器参数设置
每台DT330需进行以下关键参数配置(通过面板操作):
| 参数代码 | 设定值 | 说明 |
|---|---|---|
| SLAVE | 1/2/3 | 设备站号,三台分别设为1、2、3 |
| BAUD | 9600 | 波特率,与PLC保持一致 |
| DATA | 8N1 | 数据位8,无校验,停止位1 |
| MODE | 3 | 通讯协议选择Modbus RTU |
实际调试中发现,部分老版本DT330的默认校验方式是偶校验,需特别注意将DATA参数设为0(对应8N1),否则会出现CRC校验失败。
2. 通讯协议与程序设计
2.1 Modbus RTU帧结构解析
台达DT330采用的Modbus RTU协议帧格式如下:
读取温度请求帧(功能码03H):
code复制[站号][功能码][起始地址Hi][起始地址Lo][寄存器数Hi][寄存器数Lo][CRC Lo][CRC Hi]
01 03 00 00 00 01 CRC
温度值响应帧:
code复制[站号][功能码][字节数][数据Hi][数据Lo][CRC Lo][CRC Hi]
01 03 02 01 F4 CRC
示例中01F4H换算十进制为500,表示当前温度50.0℃
2.2 PLC程序架构设计
轮询控制逻辑:
st复制// 初始化
LD M8002 // 上电脉冲
MOV K1 D100 // 轮询指针初始化为1
// 主轮询循环
STL S0
CALL P0 // 执行当前站通讯
INC D100 // 站号+1
CMP D100 K3 // 比较是否超过3号站
LD M8020 // 等于标志位
MOV K1 D100 // 复位轮询指针
RST S0 // 复位步进状态
SET S0 // 重新启动轮询
关键优化措施:
- 每站通讯间隔500ms(TIMER K5)
- 失败重试机制(D110-D112记录各站错误计数)
- 状态指示灯映射(D1000-D1002对应三台设备在线状态)
2.3 温度数据处理算法
收到温度数据后需进行特殊处理:
st复制LD M8123 // 接收完成标志
MOV D301 D50 // 原始数据(16位有符号)
CMP D50 H8000 // 判断是否为负数
LD M8020 // 比较结果标志
SUB H10000 D50 D60 // 负数补码转换
BIN D50 D70 // 最终温度值(扩大10倍)
例如收到FED4H(-300)表示当前温度为-30.0℃。在触摸屏显示时需做除以10处理。
3. 核心功能实现细节
3.1 温度设定功能
写入设定温度程序:
st复制MOV H01 D200 // 站号1
MOV H06 D201 // 功能码06H
MOV H00 D202 // 寄存器地址高位
MOV H01 D203 // 寄存器地址低位
MOV K500 D204 // 设定值500(50.0℃)
CALL P1 // CRC计算子程序
RS D200 K8 D300 K8 // 发送8字节,接收8字节
经验:设定值需乘以10后发送。例如要设25.5℃,实际发送255。DT330的小数点位置是固定的(显示格式参数需设为X.X)
3.2 输出控制功能
启停控制命令帧:
code复制开启:01 05 00 00 FF 00 CRC
关闭:01 05 00 00 00 00 CRC
PLC程序实现:
st复制// 启动1号站输出
LD X0 // 启动按钮
MOV H01 D200
MOV H05 D201
MOV H00 D202
MOV H00 D203
MOV HFF00 D204
CALL P1
RS D200 K8 D300 K8
// 增加状态反馈
LD M8123
MOV K1 D1000 // 更新1号站状态标志
实测表明,输出响应延迟主要来自两方面:
- DT330内部继电器机械动作时间(约20ms)
- PLC程序扫描周期(本项目约10ms)
4. 系统调试与故障处理
4.1 典型问题排查表
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| 通讯超时 | 1. 接线错误 2. 波特率不匹配 3. 站号冲突 |
1. 检查A+/B-极性 2. 确认所有设备BAUD参数 3. 用串口调试工具单独测试各站 |
| CRC错误 | 1. 校验方式设置错误 2. 电磁干扰 |
1. 检查DATA参数为8N1 2. 增加磁环,缩短总线长度 |
| 数据跳变 | 1. 未接终端电阻 2. 电源波动 |
1. 在总线末端加120Ω电阻 2. 检查24V电源稳定性 |
4.2 抗干扰设计要点
-
布线规范:
- RS485总线与动力线间距>30cm
- 避免与变频器电缆平行走线
- 总线长度不超过1200米(9600bps时)
-
接地处理:
- 采用单点接地方式
- 接地线截面积≥2.5mm²
- 接地电阻<4Ω
-
软件滤波:
- 采用滑动平均算法(示例):
st复制// 对D70(温度值)进行5次滑动平均 MOV D70 D71 ADD D71 D72 D72 ADD D72 D73 D73 ADD D73 D74 D74 ADD D74 D75 D75 DIV D75 K5 D76 // 平均值存入D76
4.3 扩展应用技巧
-
多设备支持:
- 修改轮询上限值即可扩展设备数量:
st复制CMP D100 K5 // 支持5台设备- 需注意RS485驱动能力(建议不超过32节点)
-
温度曲线控制:
- 使用D100-D199作为配方存储区
- 通过触摸屏选择不同配方号
- 定时修改设定值实现升温曲线
-
报警联动:
st复制// 读取DT330报警状态(寄存器400H) MOV H01 D200 MOV H03 D201 MOV H04 D202 // 地址高位 MOV H00 D203 // 地址低位 CALL P1 RS D200 K8 D300 K7 LD M8123 MOV D304 D80 // 报警代码 CMP D80 K0 OUT Y0 // 触发报警输出
在塑料挤出机的实际应用中,这套系统实现了±0.3℃的控温精度。关键是要确保每次通讯间隔大于温控器的处理周期(DT330需要约100ms处理一个Modbus命令),否则会出现命令堆积。程序包里附带的自诊断功能模块能自动检测总线状态,当连续3次通讯失败时会触发报警输出并跳过故障设备,保证其他温控器的正常运作。