1. 项目概述
在工业自动化控制系统中,温度控制是一个常见但至关重要的环节。这次我们要实现的是通过三菱FX5U PLC与3台台达DT330温控器建立稳定可靠的通讯,同时实现远程(触摸屏)和本地(温控器面板)双设定功能。这种架构在实际生产中非常实用,既保证了操作人员在控制室就能完成温度设定和监控,又允许现场技术人员在设备旁直接调整参数。
这个方案的核心价值在于:
- 实现了多台温控器的集中控制
- 保留了本地操作权限,提高了系统灵活性
- 采用标准485通讯,布线简单可靠
- 响应速度快,满足实时控制需求
2. 硬件配置与接线
2.1 设备清单
要实现这个系统,我们需要以下硬件设备:
- 三菱FX5U PLC(带485通讯口):作为控制核心,负责与温控器通讯和数据交换
- 台达DT330温控器(3台):执行实际温度控制,每台控制一个独立温区
- 昆仑通态TPC7022NI触摸屏:提供人机交互界面,通过以太网与PLC通讯
- 通讯线缆:用于PLC与温控器之间的485通讯连接
- 24V直流电源:为PLC和温控器供电
2.2 接线方案
正确的接线是通讯稳定的基础。FX5U的485接口与DT330的接线方式如下:
-
FX5U侧:
- 485+ → SDA
- 485- → SDB
- FG → 屏蔽层接地
-
DT330侧(每台相同):
- S+ → 485+
- S- → 485-
- GND → 屏蔽层接地
重要提示:485总线必须采用手拉手方式连接,不能采用星型连接。建议使用屏蔽双绞线,屏蔽层单端接地(通常在PLC侧接地)。
- 终端电阻设置:
- 在总线两端的设备上(第一台和最后一台温控器)需要启用120Ω终端电阻
- DT330的终端电阻通过参数设置启用
3. 参数配置详解
3.1 FX5U通讯参数设置
在GX Works3中配置FX5U的485通讯参数:
-
打开"PLC参数"→"模块参数"→"串行通讯"
-
设置通讯参数:
- 协议:Modbus RTU(从站)
- 波特率:9600bps(与温控器一致)
- 数据位:8位
- 停止位:1位
- 校验:无
- 站号:1(PLC作为主站)
-
设置通讯超时:
- 接收超时:1000ms
- 发送间隔:50ms
3.2 DT330温控器参数设置
每台DT330需要设置以下参数(通过面板操作):
| 参数代码 | 参数名称 | 设置值 | 说明 |
|---|---|---|---|
| P00 | 通讯地址 | 1/2/3 | 分别为3台温控器设置不同站号 |
| P01 | 波特率 | 9600 | 必须与PLC设置一致 |
| P02 | 数据格式 | 8N1 | 8数据位,无校验,1停止位 |
| P03 | 通讯协议 | Modbus | 选择Modbus RTU协议 |
| P04 | 通讯超时 | 3.0 | 3秒无响应判定超时 |
操作技巧:DT330参数设置需要先按"SET"键3秒进入参数设置模式,使用"▲"和"▼"键选择参数代码,再次按"SET"键进入值设置。
4. PLC程序设计
4.1 变量定义
首先在GX Works3中定义需要的变量:
st复制// 温控器设定值变量
DINT g_stTempSet[3]; // 温控器设定温度数组(单位:0.1℃)
// 温控器实际值变量
DINT g_stTempActual[3]; // 温控器实际温度数组(单位:0.1℃)
// 通讯状态标志
BOOL g_bCommOK[3]; // 温控器通讯状态标志
// 触摸屏设定值
DINT g_stHmiSet[3]; // 触摸屏设定温度
4.2 通讯初始化程序
st复制// 485通讯初始化
MOV K9600 D8120 // 设置波特率9600
MOV K0 D8121 // 数据位8,停止位1,无校验
MOV K1 M8129 // 启用485通讯功能
4.3 温度读取程序
采用轮询方式依次读取3台温控器的温度值:
st复制// 读取温控器1温度
LD M8000 // 常ON触点
MOV K1 D100 // 站号1
MOV H3 D101 // 功能码03(读取保持寄存器)
MOV H0 D102 // 起始地址高位
MOV H0 D103 // 起始地址低位
MOV H0 D104 // 寄存器数量高位
MOV H1 D105 // 寄存器数量低位
CALL P_RTU_READ // 调用Modbus RTU读取子程序
MOV D200 D0 // 读取结果存储到g_stTempActual[0]
注意事项:Modbus RTU通讯需要添加CRC校验,建议将校验计算封装成子程序重复调用。
4.4 温度设定程序
当触摸屏设定值变化时,写入温控器:
st复制// 温控器1设定
LD M0 // 触摸屏设定值变化标志
MOV g_stHmiSet[0] D10 // 设定温度值
MOV K1 D100 // 站号1
MOV H6 D101 // 功能码06(写单个寄存器)
MOV H0 D102 // 寄存器地址高位
MOV H0 D103 // 寄存器地址低位
MOV D10 D104 // 设定值
CALL P_RTU_WRITE // 调用Modbus RTU写入子程序
5. 触摸屏组态设计
5.1 变量连接
在昆仑通态组态软件中建立与PLC变量的连接:
- 新建设备连接:选择"三菱FX5U以太网"驱动
- 设置PLC IP地址和端口号
- 建立变量表:
- 读取温度变量:g_stTempActual[0]~[2]
- 设定温度变量:g_stHmiSet[0]~[2]
- 通讯状态变量:g_bCommOK[0]~[2]
5.2 画面设计
设计主监控画面包含以下元素:
-
温度显示区:
- 3个数值显示框,分别显示3个温区的实际温度
- 添加趋势图显示温度变化曲线
-
温度设定区:
- 3个数值输入框,用于设定目标温度
- 设定按钮,确认发送新设定值
-
状态指示区:
- 通讯状态指示灯(绿色正常,红色故障)
- 报警信息显示区域
6. 双设定功能实现
实现本地和远程都能修改设定值是本项目的关键。DT330温控器本身支持双设定功能,需要通过以下参数设置:
- 设置参数P79=2(允许面板和通讯同时修改设定值)
- 设置参数P80=1(通讯设定优先)
PLC程序中需要处理以下逻辑:
st复制// 双设定同步处理
// 当检测到温控器本地设定值变化时(通过通讯读取)
LD M100
MOV g_stTempActual[0] g_stHmiSet[0] // 同步到触摸屏
// 当触摸屏设定值变化时
LD M0
// 已经在前面的程序中将g_stHmiSet写入温控器
7. 常见问题与解决方案
7.1 通讯失败排查
-
所有温控器无响应:
- 检查485总线接线是否正确
- 确认PLC和温控器的通讯参数一致
- 测量485线路电压(A-B间应有2V左右差分电压)
-
个别温控器无响应:
- 检查该温控器的站号设置是否正确
- 检查该节点的接线是否松动
- 确认终端电阻设置正确
7.2 数据异常处理
-
温度值跳动或错误:
- 增加通讯数据校验
- 在PLC程序中添加数据滤波处理
- 检查接地是否良好,排除干扰
-
设定值不同步:
- 确认DT330参数P79和P80设置正确
- 检查PLC程序中同步逻辑是否完整
- 增加设定值变化检测机制
8. 系统优化建议
-
通讯效率优化:
- 采用批量读取指令(Modbus功能码0x03可一次读取多个寄存器)
- 合理设置轮询间隔,平衡实时性和总线负载
-
安全性增强:
- 在触摸屏上增加设定值上下限保护
- 添加温控器通讯超时报警功能
- 实现重要参数修改权限管理
-
扩展性考虑:
- 预留更多温控器接口(FX5U最多可支持16个站号)
- 设计模块化程序结构,方便增加新功能
在实际调试过程中,我发现以下几个经验点特别值得注意:
- 485总线终端电阻对长距离通讯稳定性影响很大,建议超过50米就一定要加
- DT330的通讯参数修改后需要重启才能生效,这点容易被忽略
- 在工业现场,给通讯线加装磁环可以有效抑制高频干扰