在使用 Modbus/TCP 方式数据通信时,怎样寻址到作为 Modbus 设备的 SIMATIC S7-1200/S7-1500 存储区?

n

描述
Modbus 数据模型在结构上是简单的,分为 4 部分存储区(数据类型):n

  • 离散输入(输入-位方式访问,只读)n
  • 线圈(输出-位方式访问,读写)n
  • 输入寄存器(输入数据-字方式访问,只读)n
  • 保持寄存器(输出数据-字方式访问,读写)

表 01 展示了的存储区和位地址的对照,位地址在 Modbus 设备(应用层)中并在协议(数据链路层)中作为 Modbus 地址传输。
n

存储区 Modbus 设备中应用层的地址 传输报文中 Modbus 地址(数据链路层)
离散输入(输入) 10001 至 19999 0至 9998
线圈(输出) 1 至 9999 0至 9998
输入寄存器(输入数据) 30001 至 39999
300001至 365536 扩展的地址空间
0至 9998
0至 65535
保持寄存器(输出数据) 40001至 49999
400001至 465536 扩展的地址空间
0至 9998
0至 65535

表 01 n

SIMATIC S7 中通过功能块激活 Modbus/TCP 通信。n

注意
S7-1200/S7-1500 的Modbus/TCP 功能块不支持输入寄存器扩展的地址空间。n

S7-1200/S7-1500 Modbus 程序块的地址表示
在 SIMATIC S7-1200/S7-1500 中 Modbus 功能块使用应用层的地址。
表02 展示了 MB_CLIENT 功能块的地址使用方法。参数 MB_MODE 和 MB_DATA_ADDR 的不同组合决定了当前 Modbus 报文中使用的功能码。

FB MB_CLIENT 的参数 FB MB_CLIENT 参数值 描述 Modbus 设备中的地址表示
MB_MODE
MB_DATA_ADDR

DATA_LEN

MB_DATA_PTR

0(十进制)
40001(十进制)

10(十进制)

"DATA_CON1".MB_DATA_PTR

Modbus 请求:读取
起始地址 = 40001:保持寄存器
读取数据的单位(字)
Modbus 服务器接收数据或者发送给 Modbus 服务器的缓存(数据寄存器)。
例如
数据存储在 DB2 "DATA_CON1"中的变量 "MB_DATA_PTR" 中,数据类型为Word 类型的数组 Array[0..9]。
在 Modbus 设备中,保持寄存器的字 0至 10 被读取。
MB_MODE
MB_DATA_ADDR

DATA_LEN

MB_DATA_PTR

1(十进制)
40005(十进制)

10(十进制)

"DATA_CON2".MB_DATA_PTR

Modbus 请求:写
请求地址 = 40005:保持寄存器
写入数据的单位(字)
Modbus 服务器接收数据或者发送给 Modbus 服务器的缓存(数据寄存器)。
例如
数据存储在 DB3 "DATA_CON2" 中的变量 "MB_DATA_PTR" 中,数据类型为Word 类型的数组Array[0..9]。
在 Modbus 设备中保持寄存器的字 4 至 14 被写入。

表 02

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc325625.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论