三菱FX3U与台达DT330温控器通讯(SL3U-1) 功能:通过昆仑通态触摸屏,三菱FX3U 485BD板,实现对台达DTK温控器 设定温度值,读取实际温度。 器件:三菱FX3U PLC,FX3U 485BD,台达DT330温控器,昆仑通态TPC7022NI触摸屏。 说明:的是带注释,带温控器手册,接线,参数设置都提供。 通讯稳定可靠,实用有效。
搞工控的老司机都知道,PLC和温控器的通讯是自动化项目里的常见需求。这次用三菱FX3U的485BD板卡和台达DT330温控器搭了个局,中间还串了个昆仑通态触摸屏当操作界面。实测通讯稳定不丢包,设定温度和读取实际温度都妥妥的,下面直接上干货。
硬件接线不翻车指南
先看物理层连接,这是所有通讯的基础。FX3U的485BD板卡接线端子上,SDA接温控器的RS485+,SDB接RS485-(注意台达DT330的485端子标记是A/B还是+/-,不同型号可能有差异)。重点来了:两端终端电阻一定要匹配!温控器侧如果有拨码开关记得打开120Ω终端电阻,PLC侧如果通讯不稳可以尝试并联个100Ω电阻。接地线别偷懒,外壳地和信号地分开走,干扰问题能少一半。
参数设置踩坑记录
温控器出厂默认是台达自家协议,得先改成Modbus RTU模式。进入DT330参数菜单,把通讯协议(Addr 1900)设置为2(Modbus RTU),波特率(Addr 1901)设成9600,数据位/停止位(Addr 1902)设为8/N/1。这里有个隐藏坑点:台达的Modbus地址是十进制,而三菱PLC习惯用十六进制操作。比如温控器的设定温度寄存器地址是1000(十进制),对应Modbus的03E8H,但实际发指令时要换算成十六进制地址。
PLC侧的通讯参数用RS指令设置:
MOV H0C96 D8120 // 设置通讯格式:9600/8/N/1/RS485这里D8120是特殊寄存器,H0C96换算成二进制是0000 1100 1001 0110,对应控制码中的位设置。别死记硬背,用三菱的配置工具生成更稳妥。
代码实操:温度读写双杀
核心是FX3U的RS指令实现Modbus RTU主站。读取实际温度的代码段:
RS D100 K8 D200 K10 // 发送8字节到D100,接收10字节存到D200发送帧构造示例(读取40001~40002寄存器):
D100: 01 03 00 00 00 02 C4 0B // 从站地址01,功能码03,起始地址0000,读取2个寄存器重点解析:
- CRC校验码计算可以用三菱的CRC指令直接生成
- 接收缓冲区D200解析时要注意字节交换,台达的数据存储是高字节在前
- 实际温度值在返回的第4~5字节,需要做INT→浮点转换(根据DT330的量程设置)
写入设定温度更刺激,用功能码06写单个寄存器:
MOV K500 D50 // 假设要设定50.0℃ CALL P0 // 调用发送子程序发送帧构造:
01 06 03 E8 13 88 校验码 // 写入地址03E8(十进制1000),数据1388H对应50.0℃这里有个骚操作:用乘法指令处理小数点位。比如DT330的分辨率是0.1℃,设定值=实际值×10,再转成16进制发送。
触摸屏的桥接艺术
昆仑通态这边反而是最简单的。在MCGS组态软件里:
- 新建Modbus RTU设备,绑定到FX3U的D寄存器
- 温度显示控件绑定D210(实际温度)
- 输入框控件绑定D50(设定温度)
注意设置数据转换公式,比如D210的值除以10显示为XX.X℃。重点检查通讯超时设置,超过3次无响应自动重连是保命操作。
稳定性优化三板斧
- 心跳包机制:每5秒读取一次系统状态寄存器,检测通讯链路
- 错误重试:连续3次CRC错误触发报警,复位通讯端口
- 数据缓存:在触摸屏侧做数据暂存,断线时保持最后有效值
实测这套方案在电机启停干扰下依然稳如老狗,关键是把硬件滤波(磁环+屏蔽线)和软件容错(超时重发+数据校验)都做到位了。完整代码和接线图已经跑过真机测试,需要参考的兄弟可以私信甩邮箱。