信捷XDPLC与3台台达DT330温控器通讯程序+本体远程双设定(XJXD-4) 功能:通过信捷XD5,实现对3台台达DT330温控器设定温度,读取温度,本体远程双设定温度,反应灵敏,通讯稳定可靠。 程序采用轮询方式 器件:信捷XD5-24T4-E,台达DT330温控器,昆仑通态TPC7022NI触摸屏。 说明:的是带注释,带温控器手册,接线,参数设置都提供。 通讯稳定可靠,实用有效。
最近在车间搞了个温控项目,用信捷XD5 PLC带三台台达DT330温控器。现场要同时处理挤出机三段温区,还得实现触摸屏远程设定和本地旋钮双操作。折腾了两周终于跑通,这里把关键点捋一捋。
硬件搭台子
485总线手拉手接线最实在。信捷XD5的COM2口(支持MODBUS RTU)接温控器1的RS485,温控器1的OUT接温控器2的IN,最后温控器2的OUT接温控器3。注意终端电阻记得在最后一个温控器上拨码,实测不加电阻通讯偶尔会丢包。
温控器参数设置重点:
Addr=1,2,3(对应三台设备) Baud=9600 Data=8,N,1PLC端用自带的485模块,参数设置直接在编程软件里配:
COM2_Set(9600, 0, 8, 1); //波特率、校验、数据位、停止位轮询机制核心代码
用了个取巧的轮询方式——按设备地址顺序循环访问,每个周期只处理一台设备:
IF (Timer1.Q) THEN Case Index OF 0: ReadTemp(1); //读第一台当前温度 1: WriteSet(2); //写第二台设定值 2: ReadStatus(3);//读第三台状态 END_CASE Index := (Index + 1) MOD 3; Timer1(IN:=TRUE, PT:=T#200ms); END_IF这里用了200ms轮询间隔,实测三台设备数据刷新在600ms内完成。重点是把读写操作分开到不同周期,避免同一设备连续操作造成总线冲突。
双设定温度骚操作
本地旋钮和远程设定切换用了温控器的SV2参数。PLC里搞了个状态标志位:
IF M200 THEN //切换远程模式 MOV K200 D100 //远程设定值存D100 MODBUS_WRITE(1, 0x1002, D100); //写入SV2参数 ELSE MODBUS_READ(1, 0x1000, D200); //读取SV1本地设定值 END_IF触摸屏上做个切换按钮,触发M200线圈。实测切换时有0.5秒左右延迟,属于温控器参数写入的正常响应时间。
避坑指南
- 遇到通讯超时先查接线相位——台达的A/B线序和信捷可能反着来,对调下立马见效
- 温度值处理记得用数据转换块,温控器返回的是16位整数,要除以10才是实际温度
- 干扰大的场合,在PLC程序里加个三次取值取中间值的滤波算法:
FILTER(IN:=AIW0, OUT:=D300, N:=3);- 触摸屏控件地址直接映射PLC的D寄存器,昆仑通态那边用Modbus TCP协议,注意寄存器地址要+1
这套方案跑了两个月没出过通讯中断,关键是把轮询节奏调合适了。每个温控器响应时间控制在300ms内,操作工切换设定模式时也没见跳变。源码里加了详细的设备注释,后来维护的兄弟看着手册半小时就能上手改参数。