信捷XD PLC与欧姆龙E5CC温控器通讯程序+输出启停控制(XJXD-7) 功能:通过信捷XD5,实现对欧姆龙E5CC温控器 设定温度,读取温度,控制温控器输出启停,反应灵敏,通讯稳定可靠。 程序采用轮询方式 器件:信捷XD5-24T4-E,欧姆龙E5CC温控器,昆仑通态TPC7022NI触摸屏。 说明:的是带注释,带温控器手册,接线,参数设置都提供。 通讯稳定可靠,实用有效。
工业现场的温度控制总有几个坎要过——设备选型、通讯稳定、逻辑调试。这次拿信捷XD5 PLC和欧姆龙E5CC温控器搭了个系统,实测效果比预想中带劲。直接上干货,先说怎么让这两个不同品牌的设备对上暗号。
硬件接线别翻车。XD5的RS485口(A+/B-)直连E5CC的9(S+)、10(S-)号端子,屏蔽层记得接地。这里有个坑:E5CC的通讯端子藏在侧边标签纸底下,新机到手得撕开贴纸才能看见,别以为发错货了。
参数设置对不上全都白搭。温控器这边长按M键进菜单,把通信设置里的站号改到1(默认是1),波特率9600,数据位7,停止位1,校验选EVEN。PLC这边用信捷的编程软件,在系统参数里勾选COM2的Modbus主站模式,参数和温控器保持同步。
核心程序用轮询稳如老狗。先上段通讯初始化的代码:
// 通讯参数配置 MOV H81 到 D8120 // 波特率9600,7位数据,偶校验,1停止位 ENI // 开启中断这段配置直接影响握手成功率,D8120这个特殊寄存器的位组合得对着手册查清楚。实测时用串口监控工具抓包,发现信捷的校验位配置和常规Modbus有点差异,必须严格对应温控器参数。
温度读取用功能码03,地址从温控器的Modbus映射表里扒出来。PV当前值在40001,这里有个转换技巧:
// 读取温度值 LD M8000 // 常通信号 MOV K1 到 D100 // 从站地址1 MOV H0000 到 D101 // 起始地址40001转成0000 MOV K1 到 D102 // 读取1个寄存器 RS D100 K6 D200 K2 // 发送读取指令接收数据存到D200,实测发现E5CC返回的是带一位小数的整数值,得用除法处理。比如收到1234要转成123.4℃,PLC里用DIV指令处理:
DIV D200 K10 D210 // 温度值转实际数值设定温度更刺激,得先解锁温控器的写保护。在程序里用功能码06写40002地址,重点在于数据转换:
// 设定温度到50℃ LD X0 // 设定按钮 MOV K50 到 D300 MUL D300 K10 D301 // 转换为温控器识别的整数值 MOV K1 到 D110 MOV H0001 到 D111 // 写地址40002 MOV D301 到 D112 RS D110 K6 D120 K1 // 发送写入命令输出控制玩的是心跳。E5CC的运行命令在40050这个地址,发01启动,00停止。这里得注意保持发送间隔,实测超过500ms的间隔会导致控制响应迟滞:
// 启停控制 LD M0 // 运行标志 MOV H0001 到 D120 // 写地址40050 MOV K1 到 D121 // 写入1 RS D120 K6 D130 K1调试时在触摸屏上做了个急停连锁,昆仑通态的按钮直接绑定M0寄存器,状态反馈实时显示。遇到通讯中断时,用SM51报警标志触发自动重连机制,这招让现场运行稳如老狗。
最后说个血泪教训:千万别在同一个轮询周期里又读又写。实测把读取PV值和设定SV值分到不同扫描周期执行,通讯错误率直接降了80%。硬件接线如果超过30米,建议在PLC侧并个120Ω终端电阻,别问为什么——曾经在配电柜后面撅着屁股加了半小时电阻的师傅如是说。