网关返回错误?Modbus地址与寄存器地址别混淆!

360影视 动漫周边 2025-03-10 15:21 2

摘要:随着PN1-D25系列ProfiNet转Modbus网关的上市,最近有很多客户在使用博图或STEP 7软件来配置PN1-D25时,经常反馈网关无法读写到正确的数据,同时网关会返回错误,表现为网关与PLC的错误灯都在闪烁。技术人员在为客户提供技术支持时发现,大部

前言

随着PN1-D25系列ProfiNet转Modbus网关的上市,最近有很多客户在使用博图或STEP 7软件来配置PN1-D25时,经常反馈网关无法读写到正确的数据,同时网关会返回错误,表现为网关与PLC的错误灯都在闪烁。技术人员在为客户提供技术支持时发现,大部分客户都是因为将“寄存器的Modbus地址”当成“寄存器地址”配置到了网关,导致网关读写到错误的寄存器导致报错。那么如何理解寄“寄存器的Modbus地址”与“寄存器地址”,二者有什么区别?什么时候该用哪种地址?下文将详细介绍。

寄存器的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就对应了Modbus报文中的功能码(0x03)与寄存器地址(0x00)。

博图中的“Modbus_Master”指令

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

PN1-D25 Modbus指令参数配置

PN1-D25的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地址范围之间的关系。

Modbus功能:

PN1-D25H系列ProfiNet网关是一款ProfiNet转Modbus RTU网关,用于将Modbus数据映射到ProfiNet。使用GSD文件进行集成,免代码读取、写入Modbus设备,可以快速设置数据并将其传输到PLC中。网关提供1路RS485和1路RS422(兼容RS485)接口各支持32个命令节点,共64个命令节点,支持两个RJ45以太网端口,具有交换机功能。所有Modbus命令以模块形式加载,ProfiNet、Modbus间的内存映射关系直观,可在STEP 7或博途软件中查询。可加载状态字节查询Modbus设备的连接状态,实时监控设备状态。

来源:亿佰特物联网应用

相关推荐