三菱FX3U与3台台达DT330温控器通讯(SL3U-3) 功能:通过昆仑通态触摸屏,三菱FX3U 485BD板,实现对3台台达DTK温控器 设定温度值,读取实际温度 器件:三菱FX3U PLC,FX3U 485BD,台达DT330温控器,昆仑通态TPC7022NI触摸屏。 说明:的是程序,带注释,带温控器手册,接线,参数设置都提供。 通讯稳定可靠,实用有效。
搞工控的兄弟都知道,多设备通讯是个技术活。今天咱们聊聊用三菱FX3U带485BD板,同时跟三台台达DT330温控器唠嗑的实战经验。这个方案已经在产线上跑了半年多,稳定性杠杠的,温度波动控制在±0.3℃以内。
先看硬件配置:FX3U本体+485BD板通过总线接三台DT330,昆仑通态触摸屏直接连PLC。这里有个细节,RS485接线一定要把终端电阻挂上,特别是当通讯距离超过10米时。见过不少兄弟栽在这,通讯时好时坏,折腾半天发现是少了120Ω电阻。
温控器参数设置得按这个套路来(以1号站为例):
- Sn-01=3(Modbus RTU模式)
- Sn-02=1(站号)
- Sn-03=9600(波特率)
- Sn-04=0(无校验)
参数改完记得断电重启,台达这货有时候改了参数不重启不生效。
PLC程序用RS指令轮询,核心代码长这样:
|-[MOV K3 D0] //温控器数量 |-[MOV K500 D10] //超时时间设定 |-[RS D100 K8 D200 K12] //发送8字节,接收12字节 |-[DMOVP K0 D100] //发送缓冲区初始化 |-[INC D20] //当前设备号+1 |-[CMP D20 D0] //判断是否轮询完成 |-[<= M0] //复位设备号这段代码的精髓在轮询机制。D20作为设备计数器,从1到3循环。每次通讯成功后自动切到下一台设备,超时就重试三次。这里有个坑——RS指令执行期间如果被中断,缓冲区会残留数据,所以每次发送前必须清空D100-D107区域。
具体到数据帧结构,读温度用Modbus 03功能码:
发送:01 03 00 00 00 01 84 0A(读1号站当前温度)
接收:01 03 02 01 2C B5 33(假设当前温度30.0℃)
这里01 2C是十六进制,转十进制就是300,除以10得实际温度值。
写设定值用06功能码:
发送:01 06 00 01 01 F4 48 2A(给1号站写入50.0℃)
这里01 F4转十进制是500,温控器会自动除以10。校验码计算要仔细,推荐用三菱的CRC指令直接生成。
触摸屏配置更简单,昆仑通态直接绑定PLC的D寄存器。比如:
- 实际温度显示:D500(1号站)、D501(2号站)、D502(3号站)
- 设定值写入:D300-D302对应三个站号
注意数据格式要选32位浮点,实测台达的温度值用单精度浮点传输更稳定。
调试时踩过几个坑:
- 某次三个温控器突然集体失联,查线发现是某个端子螺丝松动——RS485必须拧紧接线,压接比插接可靠
- 凌晨温度突然跳变,查日志发现是电磁炉启动干扰,给通讯线加了磁环解决
- 触摸屏写入后实际值不变,结果是PLC程序里忘了做数值转换,直接发送了整型数据
这套系统跑起来后最爽的是扩展性——要加第四台温控器?改个站号,PLC里把D0从K3改成K4,程序都不用重写。要是哪天温控器换型号,只要Modbus协议一致,改改地址映射就能接着用。
最后给个忠告:玩Modbus通讯,手里必须备个USB转485调试器。当你怀疑PLC程序有问题时,先用调试助手手动发报文,能快速定位是硬件问题还是软件问题。这招至少帮我省了三天调试时间。