随着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地址和寄存器地址的详细介绍。
Modbus地址区分为的0区、1区、3区、4区
0区、1区、3区、4区各是一片数据区,是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
要想理解modbus地址,我们先简单介绍一下modbus协议报文,下面是一条读保持寄存器(地址40001)的modbus报文。Mdobus请求报文基本由从机地址、功能码、寄存器地址、读写的寄存器数量与CRC16校验码组成。读40001就对应了modubs报文中的功能码(0x03)与寄存器地址(0x00)
Profinet网关在博图中使用“Modbus_Master”指令时,”DATA_ADDR”参数填写的是寄存器的modbus地址。这样的好处是开发者在编写mdobus指令是不需要关注改用什么功能码。只需关注是需要读或写,与读写数量。PLC会自动根据参数调用对应的功能码,方便了开发人员的效率。同时目前各modbus从站设备文档基本都会提供“modbus地址表”与“寄存器地址表”。
PN1-D25单网口profinet网关的modbus模块参数在配置时已经划分好了Coil-线圈-DO-0区、Discrete Input-离散输入-DI-1区、Holding Register-保持寄存器-AO-4区、Input Register-输入寄存器-AI-3区,在填写起始地址(Start Address)时需要填写寄存器地址,不能写带modbus区的modbus地址。
可以使用DATA_ADDR和MODE参数来选择Modbus功能代码。
DATA_ADDR(从站中的Modbus起始地址):指定在Modbus从站中访问的数据的起始地址。
Modbus_Master指令使用 MODE 输入,不使用功能代码输入。MODE和DATA_ADDR结合使用可指定在实际Modbus帧中使用的功能代码。下表显示了 MODE 参数、Modbus功能代码和DATA_ADDR 中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, | - |
|
| - |
|
|
| 保留 | ||
1 在扩展寻址中(请参见Extended_Adressing 参数),最大数据长度根据功能的数据类型而缩减 1 字节或 1 个字。 2 MODE 2 允许使用 Modbus 功能 15 和 16 写入 1 个或多个输出位和 1 个或多个保持寄存器。 3 以下情况适用于S7-300/400/WinAC:不支持。 |
今天的分享就到这里啦,EBYTE每一天都致力于更好的助力物联化、智能化、自动化的发展,提升资源利用率,更多Profinet网关产品更多资料,感兴趣的小伙伴可以登录我们的亿佰特官网进行了解,也可以直接拨打400电话咨询技术专员!
相关阅读:
4、PN1-D25P系列Profinet网关使用博图加载设备教程
7 X 24 销售服务热线
4000-330-990深圳办事处柯经理:18218726658 无锡办事处刘经理:13558641933
成都总部销售经理:
秦 科(无线模块):18884314654 冯子恒(无线模块):18828049434
蔡友银(无线模块):13882211021 葛宇龙(通信设备):19138800613
胡兵(外贸销售经理):18584911141、 sales06@ebyte.com
业务邮箱:support@cdebyte.com 全国销售投诉电话:19934352316
地址:四川省成都市高新西区西区大道199号B5栋(前台座机:028-61543675)
©© 成都亿佰特电子科技有限公司【版权所有】 蜀ICP备13019384号