当前位置: 首页 >应用方案 >技术应用 >

profinet网关模块中寄存器modbus地址详解

profinet网关modbus地址

随着PN1-D25系列profinet网关模组产品上市,该profinet网关模组支持profinet协议转modbus RTU协议的网关,用于将Modbus数据映射到Profinet网关上。profinet网关使用GSD文件进行集成,免代码读取、写入Modbus设备,可以快速设置数据并将其传输到PLC设备中。Profinet网关提供1路RS485和1路RS422(兼容RS485)接口各支持32个命令节点,共64个命令节点。所有Modbus命令以模块形式加载,Profinet、Modbus间的内存映射关系直观,可在STEP 7或博途软件中查询。可加载状态字节查询Modbus设备的连接状态,实时监控设备状态。

最近有很多profinet网关客户在使用博图或STEP 7软件来配置PN1-D25单网口profinet网关设备时,经常反馈profinet网关无法读写到正确的数据,同时profinet网关会返回错误,表现为profinet网关与PLC设备的错误灯都在闪烁。我们在为客户提供profinet网关设备的技术支持时,大部分客户都是因为将“寄存器的modbus地址”当成“寄存器地址”配置到了profinet网关,导致profinet网关读写到错误的寄存器导致报错。那么如何理解profinet网关“寄存器的modbus地址”与“寄存器地址”,寄存器的modbus地址和寄存器地址有什么区别。在什么时侯该用那种地址?本文将做profinet网关的寄存器的modbus地址和寄存器地址的详细介绍。

1、寄存器的modbus地址分区

Modbus地址区分为0134

0134各是一片数据区,是Modbus协议规定的地址范围,各类地址是互相对应的

0 :离散量输出,可读/可写【对应PLC: DO】线圈类地址:00001~09999。使用功能码:01、05、15

1 :离散量输入16位,只读【对应PLC: DI】触点类地址:10001~19999。使用功能码:02

3 :输入寄存器16位,只读【对应PLC: AI】模拟输入地址:30001~39999。使用功能码:04

4 :保持寄存器,可读/可写【对应PLC: AO(或某些参数区)】模拟输出地址:40001~49999。使用功能码:03、06、16

2、寄存器地址

要想理解modbus地址,我们先简单介绍一下modbus协议报文,下面是一条读保持寄存器(地址40001)的modbus报文。Mdobus请求报文基本由从机地址、功能码、寄存器地址、读写的寄存器数量与CRC16校验码组成。读40001就对应了modubs报文中的功能码(0x03)与寄存器地址(0x00)

1  寄存器的modbus地址


3、博图中的“Modbus_Master”指令

2   寄存器的modbus地址

Profinet网关在博图中使用Modbus_Master”指令时,DATA_ADDR参数填写的是寄存器的modbus地址。这样的好处是开发者在编写mdobus指令是不需要关注改用什么功能码。只需关注是需要读或写,与读写数量。PLC会自动根据参数调用对应的功能码,方便了开发人员的效率。同时目前各modbus从站设备文档基本都会提供“modbus地址表”与“寄存器地址表”。

4、PN1-D25单网口profinet网关mdobus指令参数配置

3  寄存器的modbus地址

PN1-D25单网口profinet网关的modbus模块参数在配置时已经划分好了Coil-线圈-DO-0区、Discrete Input-离散输入-DI-1区、Holding Register-保持寄存器-AO-4区、Input Register-输入寄存器-AI-3区,在填写起始地址(Start Address)时需要填写寄存器地址,不能写带modbus区的modbus地址。

附:博图-“Modbus_Master:作为Modbus主站进行通讯(S7-1200,S7-1500)”官方文档。

可以使用DATA_ADDR和MODE参数来选择Modbus功能代码。

DATA_ADDR(从站中的Modbus起始地址):指定在Modbus从站中访问的数据的起始地址。

Modbus_Master指令使用 MODE 输入,不使用功能代码输入。MODE和DATA_ADDR结合使用可指定在实际Modbus帧中使用的功能代码。下表显示了 MODE 参数、Modbus功能代码和DATA_ADDR 中Modbus地址范围之间的关系。

profinet网关Modbus功能码详解

MODE

DATA_ADDR

Modbus地址

DATA_LEN(数据长度)

Modbus

功能代码

运行和数据

0

每个请求的位数

01

读取输出位:

1

9999

1

2000/1992 1

0

9998

0

每个请求的位数

02

读取输入位:

10001

19999

1

2000/1992 1

0

9998

0

每个请求的字数

03

读取保持寄存器:

40001

49999

1

125/124 1

0

9998

400001

465535

1

125/124 1

0

65534

0

每个请求的字数

04

读取输入字:

30001

39999

1

125/124 1

0

9998

1

每个请求的位数

05

写入一个输出位:

1

9999

1

0

9998

1

每个请求1 个字

06

写入一个保持寄存器:

40001

49999

1

0

9998

400001

465535

1

0

65524

1

每个请求的位数

15

写入多个输出位:

1

9999

2

1968/1960 1

0

9998

1

每个请求的字数

16

写入多个保持寄存器:

40001

49999

2

123/122

0

9998

400001

465534

2

123/122 1

0

65534

2 2

每个请求的位数

15

写入一个或多个输出位:

1

9999

1

1968/1960 1

0

9998

2 2

每个请求的字数

16

写入一个或多个保持寄存器:

40001

49999

1

123

0

9998

400001

465535

1

122 1

0

65534

11

此功能将忽略Modbus_Master 的 DATA_ADDR 和 DATA_LEN 操作数。

11

读取从站通信的状态字和事件计数器。状态字表示“忙”(0 - 不忙,0xFFFF - 忙)。事件计数器随着帧的每次成功处理而递增。

80

每个请求1 个字

08

使用数据诊断代码0x0000 检查从站状态(回送测试 - 从站返回请求的回应)

-

1

-

81

每个请求1 个字

08

利用数据诊断代码0x000A 重新设置从站事件计数器

-

1

-

104 3

每个请求的字数

04

读取输入字

0

65535

1

125/124 1

0

65535

3到10,12到79,
82到103,105到255

-

-

保留

1 在扩展寻址中(请参见Extended_Adressing 参数),最大数据长度根据功能的数据类型而缩减 1 字节或 1 个字。

2 MODE 2 允许使用 Modbus 功能 15 和 16 写入 1 个或多个输出位和 1 个或多个保持寄存器。
MODE 1 使用 Modbus 功能 5 和 6 写入 1 个输出位和 1 个保持寄存器,使用 Modbus 功能 15 和 16 写入多个输出位和多个保持寄存器。

3 以下情况适用于S7-300/400/WinAC:不支持。



今天的分享就到这里啦,EBYTE每一天都致力于更好的助力物联化、智能化、自动化的发展,提升资源利用率,更多Profinet网关产品更多资料,感兴趣的小伙伴可以登录我们的亿佰特官网进行了解,也可以直接拨打400电话咨询技术专员!


相关阅读:

1、浅Profinet网关使用博图配置Modbus报文

2、Profinet网关使用博图配置modbus通讯参数

3、Modbus协议功能码详解

4、PN1-D25P系列Profinet网关使用博图加载设备教程



点击拨打: 亿佰特官网 4000-330-990