海为PLC读写欧姆龙E5EC系列温控表温度 点击:241 | 回复:7



dj2110

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 150回
  • 年度积分:168
  • 历史总积分:491
  • 注册:2010年7月09日
发表于:2025-10-30 14:52:41
楼主
求助帖30分-已结帖

求海为PLC  Modbus协议读和设定欧姆龙E5EC系列温控表温度的示例程序。谢谢!




ac米兰

  • 精华:4帖
  • 求助:0帖
  • 帖子:262帖 | 13704回
  • 年度积分:6159
  • 历史总积分:53810
  • 注册:2004年4月26日
发表于:2025-11-01 09:48:46
1楼

看手册 MODW之类的指令 写就行了 

回复本条

    

Allen010

  • 精华:0帖
  • 求助:0帖
  • 帖子:30帖 | 620回
  • 年度积分:7
  • 历史总积分:19887
  • 注册:2010年8月04日
发表于:2025-11-03 17:42:06
2楼

一、先保证正常通信:

海为 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 功能码)



回复本条

    

Allen010

  • 精华:0帖
  • 求助:0帖
  • 帖子:30帖 | 620回
  • 年度积分:7
  • 历史总积分:19887
  • 注册:2010年8月04日
发表于:2025-11-03 17:43:02
3楼

三、程序参考:

程序 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)


回复本条

    
  • dj2110楼主

    谢谢哦

    2025-11-15 07:53:16回复

Allen010

  • 精华:0帖
  • 求助:0帖
  • 帖子:30帖 | 620回
  • 年度积分:7
  • 历史总积分:19887
  • 注册:2010年8月04日
发表于:2025-11-03 17:43:58
4楼

注意:部分 E5EC 型号(如带通信扩展的型号)寄存器地址可能不同。

回复本条

    

小肥猪123

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 124回
  • 年度积分:67
  • 历史总积分:2167
  • 注册:2025年2月13日
发表于:2025-11-04 13:08:47
5楼

海为 PLC 通过 Modbus 读 E5EC:读取保持寄存器 0x0000(当前值)。设定:写 0x0001(设定值),需对应功能码 0x06。

回复本条

    

工控一点通

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:2
  • 历史总积分:52
  • 注册:2025年10月30日
发表于:2025-11-05 15:20:53
6楼

海为PLC通过Modbus协议读写欧姆龙E5EC温控表温度的示例方法如下:

  1. 读取当前温度(功能码0x03):
  • 寄存器地址:0x0000
  • 使用MODR指令读取
  1. 设定目标温度(功能码0x06):
  • 寄存器地址:0x0001
  • 使用MODW指令写入

注意:需确认温控表具体型号,部分E5EC型号寄存器地址可能有差异。建议先查阅E5EC的Modbus通信手册确认地址映射。

回复本条

    

热门招聘
相关主题

官方公众号

智造工程师