求海为PLC Modbus协议读和设定欧姆龙E5EC系列温控表温度的示例程序。谢谢!
求海为PLC Modbus协议读和设定欧姆龙E5EC系列温控表温度的示例程序。谢谢!
看手册 MODW之类的指令 写就行了
一、先保证正常通信:
海为 PLC 与 E5EC 必须配置相同的通信参数,默认参数需确认并修改:
波特率:9600bps(E5EC 默认,可修改)
数据位:8 位
停止位:1 位
校验位:无校验(E5EC 默认)
从站地址:E5EC 默认地址为 1(可通过温控表面板修改,范围 1-247)
二、对于E5EC:
E5EC 的温度相关寄存器遵循 Modbus RTU 标准,关键地址如下(需确认温控表型号后缀,
部分型号地址可能略有差异):
功能 寄存器类型 十进制地址 数据格式 说明
读取当前温度 输入寄存器 1000 16 位二进制 单位:0.1℃(例:250 = 25.0℃)
读取设定温度 保持寄存器 1 16 位二进制 单位:0.1℃(例:280 = 28.0℃)
写入设定温度 保持寄存器 1 16 位二进制 同 “读取设定温度”,支持 Modbus 写指令
备注:E5EC 的 “设定温度” 寄存器为 可读写保持寄存器,“当前温度” 为 只读输入寄存器,
需区分 Modbus 功能码(读输入寄存器用 04 功能码,读保持寄存器用 03 功能码,写保持寄存器用 06 功能码)
三、程序参考:
程序 1:读取 E5EC 当前温度(输入寄存器,04 功能码)
// 触发条件:PLC运行后持续读取(或定时读取,如每1秒)
LD SM0.0 // PLC运行标志(常ON)
TON T37, 100 // 定时1秒(100×10ms=1s)
LD T37 // 定时到触发读指令
MBUS_RD VB10, 4, 1000, 1, &VW20, M1.0, M1.2 // Modbus读指令
// 指令参数说明:
// VB10:从站地址(E5EC地址)
// 4:功能码(读输入寄存器)
// 1000:起始寄存器地址(当前温度地址)
// 1:读取寄存器个数(1个16位寄存器)
// &VW20:读取结果存储地址(VW20)
// M1.0:读成功标志(1=成功)
// M1.2:通信错误标志(1=错误)
程序 2:读取 E5EC 设定温度(保持寄存器,03 功能码)
// 触发条件:与读取当前温度同步(定时1秒)
LD T37 // 复用定时触发信号
MBUS_RD VB10, 3, 1, 1, &VW22, M1.0, M1.2 // Modbus读指令
// 指令参数说明:
// 3:功能码(读保持寄存器)
// 1:起始寄存器地址(设定温度地址)
// &VW22:读取结果存储地址(VW22)
程序 3:写入设定温度到 E5EC(保持寄存器,06 功能码)
// 触发条件:M0.0上升沿(按按钮触发,避免重复写入)
LD M0.0
ED // 上升沿检测
MBUS_WR VB10, 6, 1, &VW24, M1.1, M1.2 // Modbus写指令
// 指令参数说明:
// 6:功能码(写单个保持寄存器)
// 1:目标寄存器地址(设定温度地址)
// &VW24:待写入数据地址(需提前赋值,如VW24=280→28.0℃)
// M1.1:写成功标志(1=成功)
程序4: 数据转换(可选:将 0.1℃转为℃显示)
E5EC 返回的温度单位为 0.1℃(如 250=25.0℃),可通过除法指令转换为整数℃或浮点数:
// 转换当前温度为浮点数(℃),存储到VD30
LD M1.0 // 读成功后触发转换
MOVW VW20, VW30 // 字转双字
DTR VW30, VD30 // 整数转浮点数
DIVR VD30, 10.0, VD30 // 除以10.0,得到℃(如250→25.0)
注意:部分 E5EC 型号(如带通信扩展的型号)寄存器地址可能不同。
海为 PLC 通过 Modbus 读 E5EC:读取保持寄存器 0x0000(当前值)。设定:写 0x0001(设定值),需对应功能码 0x06。
海为PLC通过Modbus协议读写欧姆龙E5EC温控表温度的示例方法如下:
注意:需确认温控表具体型号,部分E5EC型号寄存器地址可能有差异。建议先查阅E5EC的Modbus通信手册确认地址映射。