信捷XDPLC与3台欧姆龙E5CC温控器通讯程序(XJXD-9) 功能:通过信捷XD5,实现对3台欧姆龙E5CC温控器设定温度,读取温度,反应灵敏,通讯稳定可靠。 程序采用轮询方式 器件:信捷XD5-24T4-E,3台欧姆龙E5CC温控器,昆仑通态TPC7022NI触摸屏。 说明:的是带注释,带温控器手册,接线,参数设置都提供。 通讯稳定可靠,实用有效。
信捷XD5PLC和欧姆龙E5CC温控器的组合在工业现场挺常见,最近刚好调试了个三温区控制系统。通讯这块用Modbus RTU协议走串口,接线简单但参数设置容易踩坑,特别是新手上路容易在站号、波特率这些基础设置上翻车。
硬件接线说简单也简单,PLC的COM2口(自带RS485)接温控器。注意E5CC的S+和S-对应接PLC的485+和485-,线序别反了。有个细节是最好给每个温控器单独供电,避免共地干扰。现场遇到过一次温控器集体掉线,最后发现是某个温控器的24V电源挂了导致总线异常。
参数设置必须两边对齐。以1号温控器为例,进入E5CC的"Adr-SEL"菜单把站号设为1,通讯速率9600bps,数据位7,停止位1,偶校验。PLC这边用MOV指令配置串口参数:
MOV H86 D8120 // 串口参数:9600,7,1,偶校验 MOV K1 D100 // 温控器1站号 MOV K2 D101 // 温控器2站号 MOV K3 D102 // 温控器3站号这个配置经常被忽视的是数据位设置,有些手册写的是8位数据位,实际E5CC默认是7位。之前有个兄弟在这卡了三天,后来用串口监听才发现数据位不匹配。
轮询程序结构像接力赛,每个周期处理一个温控器。核心是状态切换+超时重试:
LD M8000 // 常开触点 CMP K0 D200 // 判断当前操作状态 = M0 // 初始状态 CALL P0 // 调用轮询程序 // 轮询子程序P0 LD M0 OUT TR0 RS D100 K8 D500 K10 // 发送读取温度指令 SET M1 RST M0 LD M1 OUT TR0 TIMER T0 K50 // 等待50ms响应 LD T0 CMP D510 K0 // 检查接收完成标志 = M2 ...这里用了状态机思维,M0-M3代表不同阶段。T0定时器是防卡死的关键——遇到过温控器死机不返回数据,不加超时的话整个轮询就停摆了。
温度读取用MOV指令处理接收缓冲区:
LD M8000 MOV D510 D300 // 温控器1当前温度 MOV D511 D301 // 温控器2当前温度 MOV D512 D302 // 温控器3当前温度但要注意Modbus的数据格式转换。E5CC的温度值是16位有符号数,遇到负温时要处理补码。有次冷冻机组显示300多度,查了半天发现是没做符号位判断。
设定温度用RS指令发送:
MOV K400 D400 // 设定温度40.0℃ RS D400 K6 D600 K8 // 发送写命令这里有个坑:E5CC的温度值需要乘以10发送。比如设25.5℃要发255,在程序里得做浮点转整型的处理。新手容易直接传浮点数,结果温控器不认。
触摸屏那边用昆仑通态的组态软件,建立三个温度显示框绑定D300-D302,设定值输入框关联D400-D402。重点要在屏上做数值缩放,显示时除以10,输入时乘以10。遇到过操作工输入35直接烧到350℃,就是缩放系数没设置好。
调试阶段必备工具是USB转485适配器,接电脑用ModScan模拟主站,或者用串口助手看原始数据。有个经典故障是通讯时有时无,最后发现是PLC和触摸屏用了同一个COM口,两者争用导致数据混乱。解决办法是把HMI接到COM1,温控器接COM2。
这套系统跑起来后,实测响应速度能到200ms级,完全满足大多数热处理场景。关键是把故障预案做足——通讯重试机制、温度突变报警、设备离线检测这些都得考虑进去。毕竟工业现场稳定大于天,谁也不想半夜被报警电话叫起来查通讯故障。