关于Modbus协议的数据结构和寄存器地址模型以及典型应用

modbus 从机地址 功能码 起始地址高位 起始地址低位 数量高位 数量低位 字节数 0001H高位 0001H低位 0002H高位 0002H低位 CRC高位 CRC低位。每个输入寄存器的长度为2个字节。其中,CDH对应线圈0013H到001AH的内容,01H对应线圈001B到001CH的内容,未使用位用0填充。从机地址 功能码 起始地址高位 起始地址低位 寄存器数量高位 寄存器数量低位 CRC高位 CRC低位。从机地址 功能码 起始地址高位 起始地址低位 寄存器数量高位 寄存器数量低位 CRC高位 CRC低位。 阅读详情

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协议都是适用的。

寄存器PLC地址与寄存器modbus协议地址 寄存器PLC地址指存放于控制器中的地址,这些控制器可以是PLC,也可以使触摸屏,或是文本显示器。PLC地址一般采用10进制描述,共有5位,其中第一位代码寄存器类型。第一位数字和寄存器类型的对应关系如表1所示。PLC地址例如40001、30002等。 寄存器modbus协议地址指通信时使用的寄存器地址,在实际编程中,由于寄存器PLC地址前缀的区分作用,所以只需说明后4位数... 阅读详情

相关推荐

modbus协议及modbus TCP协议

运行在串口上的协议,采用ASCII码进行传输,并且每个字节的开始和结束都有特殊字符作为标志,传输效率远远低于Modbus RTU,一般只有通讯量比较少时才会考虑它。,类比为开关量,每一个bit都对应一个信号的开关状态。在读数据和写单个的时候,字节长度都是0x06( 一个字节的单元标识符,一个字节的功能码,两个字节的地址,两个字节的数据),他也是每个bit表示一个开关量,而他的开关量只能读取输入的开关信号,是不能够写的。报文头----功能码----起始地址----数量----字节计数----数据。

m0_74937538的博客 4671

Modbus协议讲解及实现

课程背景Modbus 协议是工业自动化控制系统中常见的通信协议,协议的全面理解是个痛点。本课程主讲老师集10多年在Modbus协议学习、使用中的经验心得,结合当前物联网浪潮下Modbus协议开发的痛点,推出这套面向Modbus 协议初学者的课程。本课程不同于以往市面课程只是协议讲解无实现代码,而是采用讲解与实践并重的方式,结合STM32F103ZET6开发板进行手把手编程实践,十分有利于初学者学习。涵盖了学习者在Modbus协议方面会遇到的方方面面的问题,是目前全网首个对Modbus协议进行全面总结的课程。课程名称   协议讲解及实现>>课程内容1、Modbus 协议的基础。2、Modbus协议栈函数编程实现。3、Modbus协议在串行链路编程实现。4、Modbus协议在以太网链路编程实现。5、常见问题的解决方法。带给您的价值通过学习本课程,您可以做到如下:1、全面彻底的理解Modbus协议。2、理解在串行链路,以太网链路的实现。3、掌握Modbus协议解析的函数编程方法,调试工具的使用。4、掌握多个串口,网口同时运行同一个Modbus协议栈的方法。5、掌握Modbus协议下,负数,浮点数等处理方法。讲师简介许孝刚,山东大学工程硕士,副高职称,技术总监。10多年丰富嵌入式系统开发经验,国家软考“嵌入式系统设计师”。2017年获得“华为开发者社区杰出贡献者”奖励。

Modbus在Android上的应用之Modbus RTU Master

Android端做主站,RS485/RS232接口连接,支持一对一和一对多读取从站数据。

Steven Jon 1万+

Modbus寄存器分类及地址分配

Modbus协议中一个重要的概念是寄存器,所有的数据均存放于寄存器中。最初Modbus协议借鉴了PLC中寄存器的含义,但是随着Modbus协议的广泛应用,寄存器的概念进一步泛化,不再是指具体的物理寄存器,也可能是一块内存区域。Modbus寄存器根据存放的数据类型以及各自读写特性,将寄存器分为4个部分,这4个部分可以连续也可以不连续,由开发者决定。 Modbus寄存器分类及说明 Modbus寄存器地址分配 ...

专注嵌入式开发与 Linux 系统应用实战,分享芯片驱动、设备调试、系统工具开发干货。 2万+

Modbus RTU/TCP协议解析

Modbus通信协议由Modicon公司(现已经为施耐德公司并购,成为其旗下的子品牌)于1979年发明的,是全球最早用于工业现场的总线规约。由于其免费公开发行,使用该协议的厂家无需缴纳任何费用,Modbus通信协议采用的是主从通信模式(即Master/Slave通信模式),其在分散控制方面应用极其广泛,从而使得Modbus协议在全球得到了广泛的应用。 Modbus通信协议具有多个变种,其具有支持

zj20781的博客 4万+

ModbusTcp和ModbusRtu

ModbusTcp和ModbusRtu 1、何为Modbus通信协议 1.1 Modbus基本介绍 Modbus协议介绍:Modbus是 OSI 模型第 7 层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。包括了ASCII、RTU、TCP三种报文类型,协议本身并没有定义物理层,定义了控制器能够认识和使用的消息结构,不管它们是经过何种网络进行通信的。Modbus协议使用串口传输时可以选择RTU或者ASCII模式,并规定了消息、数据结构、命令和应答方式,且需要对数据进行校

weixin_42077793的博客 1万+

Modbus RTU 使用教程(modbus教程、modbus协议)(寄存器类型、功能码)

Modbus RTU是一种基于串行通信的协议,用于连接电子设备。最初由Modicon公司在1979年为其PLC(可编程逻辑控制器)开发,现已成为工业领域的一个事实标准。这些功能码是实现Modbus RTU或TCP协议数据交换的基础,了解每个功能码的具体作用对于理解和使用Modbus协议至关重要。在应用程序或设备固件中实现Modbus时,通常会根据实际需要选择支持哪些功能码。通过遵循这些指导原则,可以有效地分配和管理Modbus RTU网络中的设备地址,确保通信的可靠性和系统的稳定性。

Dontla的博客 4万+

Modbus寄存器地址规则

Modbus协议定义的寄存器地址是5位十进制地址,即: 线圈(DO)地址:00000~09999 触点(DI)地址:10000~19999 输入寄存器(AI)地址:30000~39999 输出寄存器(AO)地址:40000~49999 由于上述各类地址是唯一对应的,因此有些资料就以其第一个数字区分各类地址,即:0x代表线圈(DO)类地址,1x代表触点(DI)类地址、 3x代表输入寄...

lushoumin的博客 6万+

Modbus TCP协议

Modbus介绍及Modbus TCP编程 三方库:modbus库

m0_74762280的博客 2万+

ZYNQ学习:PL端DDR3 读写测试

DDR SDRAM 的最大特点是双沿触发,即在时钟的上升沿和下降沿都能进行数据采集和发送,同样的工作时钟, DDR SDRAM 的读写速度可以比传统的 SDRAM 快一倍。本次实验使用的 DDR3 芯片是南亚的 NT5CC256M16ER-EKI, NT5CC256M16ER-EKI 的 bank 位宽为 3,行位宽为 15,列位宽为 10,所以它的地址大小等于 2^3*2^15*2^10(即 2^28=256M),数据位宽为 16bit,所以容量大小为 256M*16bit,也就是 512MByte。

shuidiQAQ的博客 3031

YOLO-FastestV2从零部署到移动端推理实战手册

本文详细介绍了YOLO-FastestV2从零开始的完整部署流程,涵盖环境搭建、模型训练、格式转换及移动端部署。通过实战步骤,指导开发者将这一轻量级目标检测模型成功部署到Android设备,实现实时推理。文章重点解析了PyTorch到NCNN的模型转换与优化,助力移动端AI应用开发。

l1k9j8h7g6的博客 668

一文看懂Modbus协议

Modbus协议允许在各种网络体系结构内进行简单通信,每种设备(PLC、HMI、控制面板、驱动程序、动作控制、输入/输出设备)都能使用 Modbus协议来启动远程操作。在基于串行链路和以太 TCP/IP 网络的 Modbus上可以进行相同通信,一些网关允许在几种使用 Modbus协议的总线或网络之间进行通信。

不脱发的程序猿 5万+

从真题到策略:浙江工业大学计算机转专业机试全解析与备考指南

本文全面解析浙江工业大学计算机转专业机试的考试概况、典型真题和高频考点,提供详细的备考策略和面试准备建议。从机试题目类型到解题技巧,帮助考生高效备考,顺利通过这一竞争激烈的转专业关卡。

weixin_42524824的博客 419

Modbus Tcp协议

注:在ASCII模式下,每个8位的字节被拆分成两个ASCII字符进行发送,比如十六进制0xAF(1010 1111),会被分解成ASCII字符“A”(0100 0001)和”F”(0100 0110)进行发送,其发送量显然比RTU增加一倍。保持寄存器,这个寄存器的单位不再是bit而是两个byte,也就是可以存放具体的数据量的,并且是可读写的。离散输入寄存器,离散输入寄存器就相当于线圈寄存器的只读模式,他也是每个bit表示一个开关量,而他的开关量只能读取输入的开关信号,是不能够写的。

m0_65222138的博客 9360

sap销售发货的流程_SAP销售订单发货后如何实现发票的自动创建?

问SAP销售订单发货后如何实现发票的自动创建?答业务场景有些快消零售企业,SAP系统单据量大,单据金额少,一般在销售发货后即可确认收入。此时无需人工在系统内操作VF01或者VF04进行开票操作,可将该操作设置成后台作业进行自动批量开票,具体操作如下:1、定义任务:VF06输入完以上信息,点击保存进入以下界面:说明:当前日期的意思是“开票的日期”等于“系统电脑中的当前日期”当前日期+/-...

weixin_42358409的博客 3361

【WRF-Chem教程-附录B】使用 MOZART 与WRF-Chem

使用MOZART与WRF-Chem

WW、forever的博客 242

RS485协议是什么?它和Modbus协议的区分以及C语言实现

例如,在智能家居中,RS485协议可以用于家庭内部的各种设备之间的通信,包括智能电视、智能音响、智能照明、智能安防等,实现设备的互联互通和集中控制。协议性质:RS485是一种物理层通信标准,主要定义了电气特性、信号传输方式和连接方式等,而Modbus是一种通信协议,定义了一种常用的通信格式和规则,用于在主设备和从设备之间进行数据交换。Modbus是主从方式通信,也就是说,不能同步进行通信,总线上每次只有一个数据进行传输,即主机发送,从机应答,主机不发送,总线上就没有数据通信.,本文主要讲解RTU协议。

qq_40326539的博客 1万+

运行后选择GDB/LLDB出现这样的窗口:launch: program ‘输入程序名称,例如 D:\Desktop\新建文件夹\a.exe‘ does not exist...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1129

Modbus TCP和Modbus RTU以及Modbus库的介绍

本文系统介绍了Modbus协议及其两种主要实现方式。Modbus由Modicon公司于1979年开发,包含RTU、ASCII和TCP三种变种,具有简单、免费、易用的特点。文章详细解析了ModbusTCP协议的结构、寄存器类型(线圈、离散输入、输入和保持寄存器)、功能码及其应用方法,包括报文格式和数据读写流程。同时对比了ModbusRTU与TCP的区别,指出RTU采用串口通信并增加CRC校验。最后提供了libmodbus库的安装配置方法和常用API接口,并给出通过库函数实现03功能码的编程示例。

fzc2022的博客 2376

把 ABAP SQL 窗口函数讲透:从 OVER 到 LEAD、RANK 与累计分析

ABAP SQL窗口函数在不丢失明细记录的前提下,为每行数据提供组内统计和排名功能。它通过OVER子句定义计算窗口,支持三类函数:聚合型(AVG/SUM等)、排名型(ROW_NUMBER/RANK等)和取值型(LEAD/LAG)。相比GROUP BY会合并多行数据,窗口函数保留原始记录同时附加计算结果,特别适合需要保留明细又要展示统计信息的业务场景,如销售排名、客户分层分析等。语法核心是OVER子句,通过PARTITION BY分组,ORDER BY排序,可灵活定义计算范围。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1274

python实现马丁策略(股市) (附完整源码)

python实现马丁策略(股市) (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 603

modbus tcp报文解析_Modbus协议详解

Modbus概述Modbus通信协议由Modicon公司(现已经为施耐德公司并购,成为其旗下的子品牌)于1979年发明的,是全球最早用于工业现场的总线规约。由于其免费公开发行,使用该协议的厂家无需缴纳任何费用,Modbus通信协议采用的是主从通信模式(即Master/Slave通信模式),其在分散控制方面应用极其广泛,从而使得Modbus协议在全球得到了广泛的应用。Modbus通信协议具有多个变种...

weixin_39608394的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Modbus 通讯协议 (RTU传输模式)

注:( 2020.05.22 ) GB/T 19582.2-2008 《基于Modbus协议的工业自动化网络规范 第1部分:Modbus协议在串行链路上的实现指南》   1、对于modbus ASCII 模式,使用的是高位字节在前,低位字节在后。使用LRC校验。   2、对于modbus rtu 模式,使用的是低位字节在前,高位字节在后。使用CRC校验。 &nbs...

#elseif 19万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Modbus协议

Modbus的介绍

西西弗的博客 1105

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

网络高级day01(Modbus 通信协议:Modbus TCP)

Modbus 通信协议

dghbs的博客 2250

Modbus RTU、ACSII和TCP协议的数据结构

在可靠性较差的网络上(比如串行网络),数据包可能会丢失,其影响是即使应用程序读取的数据流包含有效的事务处理和协议信息,长度信息的损坏也会使报文头无效。: 占用一个字节,范围0-255,其中有效范围是1-247,其他有特殊用途,比如0是广播地址(广播地址就是应答所有地址,正常的需要两个设备的地址一样才能进行查询和回复)。:占用一个字节,功能码的意义就是,知道这个指令是干啥的,比如你可以查询从机的数据,也可以修改数据,所以不同功能码对应不同功能。:根据功能码不同,有不同结构,在下面的实例中有说明。

专注于硬件开发,嵌入式研发,前后端数据技术,3D打印技术剖析。 824
上一篇: 智能网关IGT-DSER不用编程不用联网,快速实现西门子PLC跟艾默生(EMERSON)、GE PAC/PLC相互通讯
下一篇: 不用编程不用组态,快速实现三菱FX5、R系列PLC跟西门子PLC之间通讯的案例
埃和智能
博客等级 码龄19年 561粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值