1、Modbus协议的应用举例

        Modbus读写SQL数据库的数据、通过Modbus协议采集数据到数据库

         AB罗克韦尔PLC跟Modbus协议的设备通讯、西门子PLC跟Modbus协议的设备通讯

        AB罗克韦尔PLC转Modbus协议主站、西门子PLC转Modbus协议主站

2、Modbus协议的数据模型

        数据模型是对可访问数据的一种抽象,Modbus协议的数据模型定义了四种可访问的数据,分别是:

        离散量输入 (DI:Discrete Input);

        离散量输出 / 线圈 (DQ:Discrete Output / Coils);

        输入寄存器 (IR:Input Registers);

        保持寄存器 (HR:Holding Registers);

        其中,离散量输入和离散量输出/线圈只支持以位(bit)的方式进行访问,输入寄存器和保持寄存器只支持以字(WORD)的方式进行访问;离散量输入和输入寄存器只支持以只读的方式进行访问,而线圈和保持寄存器既可以读也可以写;

        数据模型中成员的特点如下面的表格所示:

        既然数据模型是一种抽象,在实际使用时必须将其映射到真实的物理存储区才能被访问。

        Modbus协议允许设备将四种数据分别映射到不同的存储区块中,各个区块之间相互独立,使用不同的功能码可读取到不同的数值,如下图所示:

        Modbus协议也允许设备将四种数据映射到同一存储区块中,这样通过不同的功能码读取数据可能会得到相同的数据(比如:输入寄存器和保持寄存器为同一物理区块),如下图所示:

        数据模型中的每一种数据都最多允许有65536个元素(编号1~65536),元素的地址编号从0开始,因此地址的范围为:0~65535;

        需要说明的是:65536只是协议允许的最大元素范围,但并不要求全部实现。Modbus协议允许设备根据自己的实际情况实现部分元素,甚至不要求实现模型中全部四种数据;

3、Modbus协议的地址模型

        为了简化数据模型与设备存储区的对应关系,引入了一种地址模型。该模型通过编号的方式对不同类型数据进行区分,各数据的地址编号请看下面的表格:

        Modbus地址模型的编号从1开始。由于每一种数据都最大支持65536个元素,具体如下:

        线圈型数据,地址范围(从1开始):000001~065536;

        离散量输入,地址范围(从1开始):100001~165536;

        输入寄存器,地址范围(从1开始):300001~365536;

        保持寄存器,地址范围(从1开始):400001~465536;

        有些设备如仪表、变频器等寄存器地址很少不超过4位数,会在中间省去一个0,这样400001就写成40001了。

        由于上述地址都是比较大的数值,实际应用一般采用区域代码+地址的方式,或者直接采用16进制表示地址,具体如下:

        线圈型数据,区域代码+地址(从0开始):DQ 0~65535,16进制:0000H~FFFFH / 0x0000~0xFFFF;

        离散量输入,区域代码+地址(从0开始):DI 0~65535,16进制:0000H~FFFFH / 0x0000~0xFFFF;

        输入寄存器,区域代码+地址(从0开始):IR 0~65535,16进制:0000H~FFFFH / 0x0000~0xFFFF;

        保持寄存器,区域代码+地址(从0开始):HR 0~65535,16进制:0000H~FFFFH / 0x0000~0xFFFF;

        Modbus地址模型对于Modbus-RTU/ASCII和Modbus-TCP协议都是适用的。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐