Modbus-MODBUS-TCP-协议解析

合集下载

modbus tcp协议报文解析

modbus tcp协议报文解析

modbus tcp协议报文解析【最新版1篇】目录(篇1)一、Modbus TCP 协议简介二、Modbus TCP 报文结构1.请求报文结构2.响应报文结构三、Modbus TCP 报文解析实例四、Modbus TCP 协议在工业自动化中的应用正文(篇1)一、Modbus TCP 协议简介Modbus TCP 协议是一种用于工业自动化领域的通信协议,由Modicon 公司于 1979 年开发。

Modbus TCP协议是基于TCP/IP协议的一种应用层协议,它使用TCP作为传输层协议,以IP作为网络层协议。

在工业自动化领域,Modbus TCP 协议被广泛应用于传感器、执行器、PLC 等设备之间的通信。

二、Modbus TCP 报文结构Modbus TCP 报文分为请求报文和响应报文两种。

1.请求报文结构请求报文主要包括以下几个部分:- 事务处理标识符:用于区分不同的通信数据报文,每次通信后需加1。

- 协议标识符:表示 Modbus 协议。

- 数据长度:指示接下来数据的长度,单位为字节。

- 设备地址:用于标识连接在串行线或网络上的远程服务端的地址。

- 功能码:表示请求的操作类型,例如读取保持寄存器数据。

- 起始地址:指示读取数据的起始地址。

- 寄存器数量:表示需要读取的寄存器数量。

2.响应报文结构响应报文主要包括以下几个部分:- 事务处理标识符:与请求报文中的事务处理标识符保持一致。

- 协议标识符:与请求报文中的协议标识符保持一致。

- 数据长度:指示接下来数据的长度,单位为字节。

- 设备地址:与请求报文中的设备地址保持一致。

- 功能码:与请求报文中的功能码保持一致,如果出错则返回 80h。

- 数据字节长度:指示接下来数据的字节长度。

- 保持寄存器数据:表示被读取的保持寄存器中的数据值。

三、Modbus TCP 报文解析实例以读取保持寄存器数据为例,请求报文如下:```00 00 00 00 00 06 09 03 00 00 00 01```响应报文如下:```00 00 00 00 00 05 09 03 02 12 34```从请求报文中,我们可以看到事务处理标识符为 1,协议标识符为 00 00,数据长度为 6,设备地址为 09,功能码为 03,起始地址为 00 00,寄存器数量为 01。

Modbus_MODBUS_TCP_协议解读

Modbus_MODBUS_TCP_协议解读

TCP/IP IETF RFC 793 IP IETF RFC 791
Ethernet II /802.3 IEEE 802.2 以太网物理层
TIA/EIA-485-A
SUPCON
Modbus应用协议
Modbus是一种简单客户机/服务器应用协议 客户机能够向服务器发送请求。 服务器分析请求,处理请求,向客户机发送应答。
从站 地址 1 字节 功能码 1 字节 数据 0 至 252 字节 CRC 2 字节
CRC 低位 CRC 高位
ASCII模式:信息中的每个8 Bit字节需2个ASCII字符,其 优点是准许字符的传输间隔达到1 s而不产生错误;
起始 1个 字符 : 地址 2 个字符 功能码 2 个字符 数据 0 至 2x252 个字符 LRC 2 个字符 结束 2 个字符 CR、LF
主站 从站 …… …… …… 从站 从站 …… 从站 从站
SUPCON
主站工作状态图
SUPCON
从站工作状态图
SUPCON
主/从通信的三种典型情况
SUPCON 串行链路上的Modbus地址规则
Modbus寻址空间有256个不同地址 地址0为广播地址 Modbus主节点没有地址,子节点必须有一个唯一的地址

7 6 5 4 3 2 1
ISO/OSI 模型
应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 Modbus应用协议 空 空 空 空 Modbus串行链路协议 EIA/TIA-485 (或 EIA/TIA232)
Modbus 主站/从站 EIA/TIA-485
(或 EIA/TIA-232)
0 1——247 248——255
广播地址

modbus tcp协议报文解析

modbus tcp协议报文解析

modbus tcp协议报文解析摘要:I.简介- Modbus TCP 协议介绍- 报文解析的重要性II.Modbus TCP 协议报文结构- 报文头- 功能码- 数据长度- 设备地址- 起始地址- 寄存器数量- 数据值III.报文解析实例- 请求报文解析- 响应报文解析IV.Modbus TCP 协议应用- 工业自动化- 能源管理- 智能交通V.结论- Modbus TCP 协议报文解析的重要性- 对未来应用的展望正文:I.简介Modbus TCP 协议是一种通信协议,广泛应用于工业自动化、能源管理和智能交通等领域。

报文解析是理解Modbus TCP 协议的关键,只有深入理解报文结构,才能更好地利用该协议进行通信。

II.Modbus TCP 协议报文结构Modbus TCP 协议报文由报文头、功能码、数据长度、设备地址、起始地址、寄存器数量和数据值等部分组成。

报文头:报文开始的标识,包括事务处理标识符和协议标识符。

功能码:指示报文的具体功能,如读取保持寄存器数据。

数据长度:表示接下来数据的长度,单位字节。

设备地址:标识连接在串行线或者网络上的远程服务端的地址。

起始地址:指定要读取或写入的寄存器的起始地址。

寄存器数量:指定要读取或写入的寄存器数量。

数据值:报文中包含的实际数据。

III.报文解析实例以读取保持寄存器数据的请求报文为例:请求报文:00 00 00 00 00 06 09 03 00 00 00 01解析:- 事务处理标识符:00 00- 协议标识符:00 00(Modbus 协议)- 数据长度:00 06- 设备地址:09- 功能码:03(读取保持寄存器数据)- 起始地址:00 00- 寄存器数量:00 01响应报文:00 00 00 00 00 05 09 03 02 12 34解析:- 事务处理标识符:00 00(应答报文要求与先前对应的请求保持一致)- 协议标识符:00 00(与先前对应的请求保持一致)- 数据长度:00 05- 设备地址:09(应答报文要求与先前对应的请求保持一致)- 功能码:03(正常情况下应答报文要求与先前对应的请求保持一致,如果出错则返回80h 先前的功能码)- 指示接下来数据的字节长度:02- 数据值:12 34(被读取的保持寄存器中的数据值)IV.Modbus TCP 协议应用Modbus TCP 协议在工业自动化、能源管理和智能交通等领域有着广泛的应用。

Modbus-MODBUS-TCP-协议解析

Modbus-MODBUS-TCP-协议解析


ISO/OSI 模型
7
应用层
Modbus应用协议
6
表示层

5
会话层

4
传输层

3
网络层

2
数据链路层
Modbus串行链路协议
1
物理层
EIA/TIA-485 (或 EIA/TIA232)
Modbus 应用协议层 客户机/服务器
Modbus 主站/从站 EIA/TIA-485
(或 EIA/TIA-232)
主节点在同一时刻只会发起一个Modbus事务处理。
主节点以两种模式对子节点发送Modbus请求:广播、单播。
主站
从站 …… 从站
……
从站
从站
…… ……
从站
主站工作状态图
SUPCON
从站工作状态图
SUPCON
主/从通信的三种典型情况
SUPCON
SUPCON
串行链路上的Modbus地址规则
异常码指示差错类型。
客户机
启动请求
功能码
数据请求
接收响应
服务器
在操作中检测差错 启动差错
异常功能码
异常码
SUPCON
3
Modbus协议在串行链路上的实现
SUPCON Modbus协议在串行链路上的实现模型
主要是在RS485和RS232等物理接口上实现Modbus协议。
在Modbus链路层上客户机的功能由主站提供而服务器的功 能由从站实现。
SUPCON
Modbus-MODBUS-TCP-协议解析
主要内容
1 2 3 4
SUPCON
概述 Modbus 协议规范 Modbus协议在串行链路上的实现 Modbus协议在TCP/IP上的实现

MODBUSTCPIP协议详情介绍

MODBUSTCPIP协议详情介绍

1.该规范的发展概况原始版本1997年9月3日作为公共评论的草案。

再版1999年3月29日,即修订版1.0。

没有大的技术改动,仅作了补充说明。

增加了附录A和B作为对一些常用执行问题的回应。

该Modbus/TCP规范在万维网上公开发行。

它表明开发者的意愿是把它作为工业自动化领域具有互用性的标准。

既然MODBUS和MODBUS/TCP作为事实上的“实际”标准,而且很多生产商已经实现了它的功能,此规范主要是阐述在互连网上具有普遍可用性的基于TCP通讯协议的MODBUS 报文的特殊编码。

2 . 概述MODBUS/TCP是简单的、中立厂商的用于管理和控制自动化设备的MODBUS系列通讯协议的派生产品。

显而易见,它覆盖了使用TCP/IP协议的“Intranet”和“Internet”环境中MODBUS报文的用途。

协议的最通用用途是为诸如PLC's,I/O模块,以及连接其它简单域总线或I/O模块的网关服务的。

MODBUS/TCP协议是作为一种(实际的)自动化标准发行的。

既然MODBUS已经广为人知,该规范只将别处没有收录的少量信息列入其中。

然而,本规范力图阐明MODBU S 中哪种功能对于普通自动化设备的互用性有价值,哪些部分是MODBUS作为可编程的协议交替用于PLC's的“多余部分”。

它通过将配套报文类型“一致性等级”,区别那些普遍适用的和可选的,特别是那些适用于特殊设备如PLC's的报文。

2.1面向连接在MODBUS中,数据处理传统上是无国界的,使它们对由噪音引起的中断有高的抵抗力,而且在任一端只需要最小的维护信息。

编程操作,另一方面,期望一种面向连接的方法。

这种方法对于简单变量通过唯一的“登录”符号完成,对于Modbus Plus变量,通过明确的“程序路径”容量来完成,而“程序路径” 容量维持了一种双向连接直到被彻底击穿。

MODBUS/TCP处理两种情况。

连接在网络协议层很容易被辨认,单一的连接可以支持多个独立的事务。

modbus tcp协议说明

modbus tcp协议说明

modbus tcp协议说明
Modbus TCP协议是一种基于TCP/IP网络的工业通信协议,用
于在工业自动化系统中实现设备之间的数据交换。

该协议基于Modbus协议,将其封装在TCP/IP协议中,使得设备可以通过标准
的以太网进行通信。

Modbus TCP协议采用客户端-服务器的通信模式。

客户端通过
建立TCP连接向服务器发送请求,服务器收到请求后进行相应的处理,并将结果返回给客户端。

这种通信模式使得设备之间可以方便
地实现数据的读取和控制。

在Modbus TCP协议中,数据的传输是基于Modbus协议的数据
模型,包括离散输入(Coil)、离散输出(Discrete Input)、保
持寄存器(Holding Register)和输入寄存器(Input Register)
四种数据类型。

客户端可以通过读取和写入这些数据类型来实现对
设备的控制和监测。

Modbus TCP协议使用标准的TCP端口(默认为502)进行通信,因此设备之间可以直接通过以太网进行连接,无需额外的串口转以
太网设备。

这种特性使得Modbus TCP协议在工业自动化领域得到了
广泛的应用,尤其是在需要远程监控和控制的场景中。

总的来说,Modbus TCP协议是一种基于TCP/IP网络的工业通信协议,具有通信稳定、数据传输可靠、易于实现和部署等特点,适用于工业自动化系统中设备之间的数据交换和控制。

MODBUS-TCP-协议解析

MODBUS-TCP-协议解析

Part
02
Modbus-TCP数据包格式
数据包结构
起始符
用于标识数据包的开始, 固定为0xFF。
校验码
用于校验数据包是否在传 输过程中发生错误,采用 CRC16算法。
地址域
标识从站地址,用于指定 接收或发送数据的目标设 备。
数据域
包含实际的数据或请求数 据,长度根据功能码不同 而变化。
功能码
标识要执行的操作,如读 取线圈状态、读取保持寄 存器等。
该功能码用于设置Modbus-TCP从设备的 单个线圈或离散输出状态。线圈和离散输出 用于控制设备的动作,如启动或停止设备、 打开或关闭阀门等。通过发送功能码05请 求,主设备可以设置从设备的单个线圈或离 散输出的状态。
功能码06:写单个寄存器
总结词
用于写入从设备的一个保持寄存器的值。
详细描述
该功能码用于向Modbus-TCP从设备的保 持寄存器写入一个值。保持寄存器用于存储 设备的状态、设置参数或历史数据等。通过 发送功能码06请求,主设备可以设置从设备 的一个保持寄存器的值,从而控制或配置设
随着物联网技术的不断发展,Modbus-TCP协议将进一步集成到 物联网平台中,实现更加智能化的远程监控和控制。
安全性增强
针对网络安全问题,未来Modbus-TCP协议将进一步增强安全性, 采用加密和认证机制来保护数据传输的安全。
扩展性提升
为了满足不断增长的数据传输需求,Modbus-TCP协议将进一步 优化和扩展,提高数据传输的效率和可靠性。
备的功能或行为。
功能码15:强制多个线圈/离散
总结词
用于同时设置从设备的多个线圈或离散输出状态。
详细描述
该功能码允许主设备同时设置Modbus-TCP从设备的多个线圈或离散输出状态。通过 发送功能码15请求,主设备可以同时控制多个线圈或离散输出的状态,实现更复杂的

modbus tcp讲解

modbus tcp讲解

modbus tcp讲解什么是Modbus TCP?Modbus TCP是一种通信协议,用于在以太网上实现Modbus通信。

Modbus是一种串行通信协议,通常用于连接工业自动化设备。

Modbus TCP是基于TCP/IP协议栈的,使得Modbus可以在以太网上进行通信。

Modbus TCP的工作原理Modbus TCP协议基于客户端-服务器模型工作。

客户端是发送请求的设备,而服务器是响应请求的设备。

客户端和服务器之间通过以太网连接进行通信。

在Modbus TCP通信中,客户端发送一个请求包给服务器。

请求包包含了要求的读取或写入的数据以及其他相关信息,例如数据地址和数据长度。

请求包被传输到服务器,然后服务器对请求进行处理,并返回响应包给客户端。

响应包包含了请求的结果和其他必要的信息。

Modbus TCP通信的好处Modbus TCP具有以下几个好处:1. 网络可扩展性:由于Modbus TCP使用以太网作为物理媒介,因此它具有很好的网络可扩展性。

在现代工业自动化中,往往需要处理大量设备和数据,Modbus TCP可以轻松地扩展以满足需求。

2. 简单性:Modbus TCP是一种简单且易于实现的协议。

它使用标准的TCP/IP协议栈,因此设备可以使用现有的以太网硬件和软件进行通信。

此外,Modbus TCP的数据格式和通信规范也相对简单明了。

3. 兼容性:Modbus TCP可以兼容不同类型的设备。

无论设备是基于Windows、Linux还是其他操作系统,只要支持TCP/IP协议栈,就可以使用Modbus TCP进行通信。

4. 实时性:Modbus TCP使用以太网作为物理媒介,具有较高的传输速度和较低的延迟。

这使得Modbus TCP成为支持实时通信的一种有效选择。

应用领域Modbus TCP常被应用于工业自动化领域,用于连接各种设备和系统。

以下是几个典型的应用领域:1. 温度控制系统:Modbus TCP可以用于连接温度传感器和温度调节设备,实现对温度的监测和调控。

「ModbusTCP协议详解」内容有点多,但讲得很详细

「ModbusTCP协议详解」内容有点多,但讲得很详细

「ModbusTCP协议详解」内容有点多,但讲得很详细简介Modbus由MODICON公司于1979年开发,是一种工业现场总线协议标准。

1996年施耐德公司推出基于以太网TCP/IP的Modbus 协议:ModbusTCP。

Modbus协议是一项应用层报文传输协议,包括ASCII、RTU、TCP三种报文类型。

标准的Modbus协议物理层接口有RS232、RS422、RS485和以太网接口,采用master/slave方式通信。

ModbusTCP数据帧ModbusTCP的数据帧可分为两部分:MBAP+PDU。

报文头MBAPMBAP为报文头,长度为7字节,组成如下:事务处理标识协议标识长度单元标识符2字节2字节2字节1字节内容解释事务处理标识可以理解为报文的序列号,一般每次通信之后就要加1以区别不同的通信数据报文。

协议标识符00 00表示ModbusTCP协议。

长度表示接下来的数据长度,单位为字节。

单元标识符可以理解为设备地址。

帧结构PDUPDU由功能码+数据组成。

功能码为1字节,数据长度不定,由具体功能决定。

功能码Modbus的操作对象有四种:线圈、离散输入、保持寄存器、输入寄存器。

对象含义线圈PLC的输出位,开关量,在Modbus中可读可写离散量PLC的输入位,开关量,在Modbus中只读输入寄存器PLC中只能从模拟量输入端改变的寄存器,在Modbus中只读保持寄存器PLC中用于输出模拟量信号的寄存器,在Modbus中可读可写根据对象的不同,Modbus的功能码有:功能码含义0x01 读线圈0x05 写单个线圈0x0F 写多个线圈0x02 读离散量输入0x04 读输入寄存器0x03 读保持寄存器0x06 写单个保持寄存器0x10 写多个保持寄存器说明更详细的表代码中文名称英文名位操作/字操作操作数量01 读线圈状态READ COIL STATUS 位操作单个或多个02 读离散输入状态READ INPUT STATUS 位操作单个或多个03 读保持寄存器READ HOLDING REGISTER 字操作单个或多个04 读输入寄存器READ INPUT REGISTER 字操作单个或多个05 写线圈状态WRITE SINGLE COIL 位操作单个06 写单个保持寄存器WRITE SINGLE REGISTER 字操作单个15 写多个线圈WRITE MULTIPLE COIL 位操作多个16 写多个保持寄存器WRITE MULTIPLE REGISTER 字操作多个PDU详细结构0x01:读线圈在从站中读1~2000个连续线圈状态,ON=1,OFF=0•请求:MBAP 功能码起始地址H 起始地址L 数量H 数量L(共12字节)•响应:MBAP 功能码数据长度数据(一个地址的数据为1位)•如:在从站0x01中,读取开始地址为0x0002的线圈数据,读0x0008位•00 01 00 00 00 06 01 01 00 02 00 08•回:数据长度为0x01个字节,数据为0x01,第一个线圈为ON,其余为OFF•00 01 00 00 00 04 01 01 01 010x05:写单个线圈将从站中的一个输出写成ON或OFF,0xFF00请求输出为ON,0x000请求输出为OFF•请求:MBAP 功能码输出地址H 输出地址L 输出值H 输出值L (共12字节)•响应:MBAP 功能码输出地址H 输出地址L 输出值H 输出值L (共12字节)•如:将地址为0x0003的线圈设为ON•00 01 00 00 00 06 01 05 00 03 FF 00•回:写入成功•00 01 00 00 00 06 01 05 00 03 FF 000x0F:写多个线圈将一个从站中的一个线圈序列的每个线圈都强制为ON或OFF,数据域中置1的位请求相应输出位ON,置0的位请求响应输出为OFF•请求:MBAP 功能码起始地址H 起始地址L 输出数量H 输出数量L 字节长度输出值H 输出值L•响应:MBAP 功能码起始地址H 起始地址L 输出数量H 输出数量L0x02:读离散量输入从一个从站中读1~2000个连续的离散量输入状态•请求:MBAP 功能码起始地址H 起始地址L 数量H 数量L(共12字节)•响应:MBAP 功能码数据长度数据(长度:9+ceil(数量/8))•如:从地址0x0000开始读0x0012个离散量输入•00 01 00 00 00 06 01 02 00 00 00 12•回:数据长度为0x03个字节,数据为0x01 04 00,表示第一个离散量输入和第11个离散量输入为ON,其余为OFF0x04:读输入寄存器从一个远程设备中读1~2000个连续输入寄存器•请求:MBAP 功能码起始地址H 起始地址L 寄存器数量H 寄存器数量L(共12字节)•响应:MBAP 功能码数据长度寄存器数据(长度:9+寄存器数量×2)•如:读起始地址为0x0002,数量为0x0005的寄存器数据•00 01 00 00 00 06 01 04 00 02 00 05•回:数据长度为0x0A,第一个寄存器的数据为0x0c,其余为0x00•00 01 00 00 00 0D 01 04 0A 00 0C 00 00 00 00 00 00 00 00 0x03:读保持寄存器从远程设备中读保持寄存器连续块的内容•请求:MBAP 功能码起始地址H 起始地址L 寄存器数量H 寄存器数量L(共12字节)•响应:MBAP 功能码数据长度寄存器数据(长度:9+寄存器数量×2)•如:起始地址是0x0000,寄存器数量是 0x0003•00 01 00 00 00 06 01 03 00 00 00 03•回:数据长度为0x06,第一个寄存器的数据为0x21,其余为0x00•00 01 00 00 00 09 01 03 06 00 21 00 00 00 000x06:写单个保持寄存器在一个远程设备中写一个保持寄存器•请求:MBAP 功能码寄存器地址H 寄存器地址L 寄存器值H 寄存器值L(共12字节)•响应:MBAP 功能码寄存器地址H 寄存器地址L 寄存器值H 寄存器值L(共12字节)•如:向地址是0x0000的寄存器写入数据0x000A•回:写入成功•00 01 00 00 00 06 01 06 00 00 00 0A0x10:写多个保持寄存器在一个远程设备中写连续寄存器块(1~123个寄存器)•请求:MBAP 功能码起始地址H 起始地址L 寄存器数量H 寄存器数量L 字节长度寄存器值(13+寄存器数量×2)•响应:MBAP 功能码起始地址H 起始地址L 寄存器数量H 寄存器数量L(共12字节)•如:向起始地址为0x0000,数量为0x0001的寄存器写入数据,数据长度为0x02,数据为0x000F•00 01 00 00 00 09 01 10 00 00 00 01 02 00 0F•回:写入成功•00 01 00 00 00 06 01 10 00 00 00 01Modbus TCP 示例报文ModBusTcp与串行链路Modbus的数据域是一致的,具体数据域可以参考串行Modbus。

modbus-tcp协议讲解

modbus-tcp协议讲解

modbus-tcp协议讲解MODBUS功能码简介 代码中⽂名称位操作/字操作操作数量01h读线圈状态位操作单个或多个02h读离散输⼊状态(只能读到0或1)位操作单个或多个03h读保持寄存器(保持寄存器可以通过06h功能写⼊)字操作单个或多个04h读输⼊寄存器(输⼊寄存器只能读取,不能通过06h功能写⼊)字操作单个或多个05h写单个线圈(线圈表⽰⽤来控制输出IO控制)位操作单个06h写单个保持寄存器字操作单个0Fh写多个线圈位操作多个10h写多个保持寄存器字操作多个Modbus TCP介绍⽰例-通过03功能码读寄存器(从寄存器00开始,读取两个值,读到01寄存器结束)客户端发送01 02 00 00 00 06 01 03 00 00 00 0201 02 00 00 00 06 (固定报⽂头)01 02: 客户端发出的检验信息, server端会将这两个字节内容复制到回应的报⽂第⼀⼆位.⼀般我们会将第⼀⼆位进⾏不停递加,然后根据服务器返回的相应内容, 来验证服务器回应信息的时效性00 00: 表⽰tcp/ip 的协议的modbus的协议00 06: 表⽰客户端发送的后⾯带了多少字节.01 03 00 00 00 02(⽤户数据)01: 表⽰设备地址03: 表⽰读保持寄存器功能码00 00: 表⽰客户端读取的寄存器起始地址00 02: 表⽰读取的寄存器值个数(由于为02,所以会读出寄存器00h和01h的值)返回值如下图所⽰:服务器返回值01 02 00 00 00 07 01 03 04 04 7B 00 FF01 02: 服务器回应的检验信息00 00: 表⽰tcp/ip 的协议的modbus的协议00 07: 表⽰服务器发送的后⾯带了多少字节.01: 表⽰设备地址03: 表⽰功能码04: 表⽰后⾯发送的寄存器00的字节长度04 7B: 表⽰寄存器00的值00 FF: 表⽰寄存器01的值⽰例-06功能码写单个寄存器(向寄存器03地址⾥写值)客户端发送 01 02 00 00 00 06 01 06 00 03 00 FF01 02 00 00 00 06 (固定报⽂头)01 02: 客户端发出的检验信息00 00: 表⽰tcp/ip 的协议的modbus的协议00 06: 表⽰客户端发送的后⾯带了多少字节.01 06 00 03 00 FF (⽤户数据)01: 表⽰设备地址06: 表⽰写单个保持寄存器功能码00 03 00 FF: 表⽰写⼊寄存器03h的值为0xFF返回值如下图所⽰:服务器返回 01 02 00 00 00 06 01 06 00 03 00 FF后⾯的06 00 03 00 FF:表⽰客户端使⽤06功能码成功向寄存器03h分别写⼊了0xFF值⽰例-10功能码写多个寄存器(向寄存器03~06地址⾥写不同值)客户端发送 01 02 00 00 00 0F 01 10 00 03 00 04 08 FF FF 00 0A 00 0F 00 0601 02 00 00 00 0F (固定报⽂头)01 02: 客户端发出的检验信息00 00: 表⽰tcp/ip 的协议的modbus的协议00 0F: 表⽰客户端发送的后⾯带了多少字节.01 10 00 03 00 04 08 FF FF 00 0A 00 0F 00 06 (⽤户数据)01: 表⽰设备地址10: 表⽰写多个保持寄存器功能码00 03: 表⽰客户端写⼊的寄存器起始地址00 04: 表⽰写⼊的寄存器值个数(由于为04,所以会写⼊寄存器03h~06h的值)08: 表⽰后⾯写⼊的字节个数FF FF: 表⽰写⼊寄存器03h的值00 0A: 表⽰写⼊寄存器04h的值00 0F: 表⽰写⼊寄存器05h的值00 06: 表⽰写⼊寄存器06h的值返回值如下图所⽰:服务器返回 01 02 00 00 00 06 01 10 00 03 00 04后⾯的10 00 03 00 04:表⽰客户端使⽤10功能码成功向寄存器03h~06h分别写⼊了值。

modbus,tcp协议解析

modbus,tcp协议解析

竭诚为您提供优质文档/双击可除modbus,tcp协议解析篇一:modbus协议(功能码及报文解析)modbus协议modbus是一种串行通信协议,是modicon于1979年,为使用可编程逻辑控制器(plc)而发表的。

事实上,它已经成为工业领域通信协议标准,并且现在是工业电子设备之间相当常用的连接方式。

modbus比其他通信协议使用的更广泛的主要原因有:公开发表并且无版税要求相对容易的工业网络部署对供应商来说,修改移动原生的位或字节没有很多限制modbus允许多个设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。

在数据采集与监视控制系统(scada)中,modbus 通常用来连接监控计算机和remoteterminalunit(Rtu)。

modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。

大多数modbus设备通信通过串口eia-485物理层进行[1]。

对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。

modbusRtu是一种紧凑的,采用二进制表示数据的方式,modbusascii是一种人类可读的,冗长的表示方式。

这两个变种都使用串行通讯(serialcommunication)方式。

Rtu格式后续的命令/数据带有循环冗余校验的校验和,而ascii格式采用纵向冗余校验的校验和。

被配置为Rtu变种的节点不会和设置为ascii 变种的节点通信,反之亦然。

对于通过tcp/ip(例如以太网)的连接,存在多个modbus/tcp变种,这种方式不需要校验和的计算。

对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。

modbus有一个扩展版本modbusplus(modbus+或者mb+),不过此协定是modicon专有的,和modbus不同。

它需要一个专门的协处理器来处理类似hdlc的高速令牌旋转。

MODBUS-协议解析

MODBUS-协议解析

4.MODBUS协议解析MODBUS协议是应用于电子控制器上的一种通用语言。

通过此协议,控制器相互之间、控制器经由网络和其它设备之间可以通信。

该协议是一个请求/应答协议,采取主从通讯模式,它描述了控制器请求访问其它设备的过程,以及如何回应来自其它设备的请求,以及怎样侦测错误并记录。

它制定了消息域格局和内容的公共格式。

MODBUS协议支持传统的RS-232、RS-422、RS-485和以太网设备。

许多工业设备,包括PLC,DCS,智能仪表等都在使用MODBUS协议作为他们之间的通讯标准。

其主要包含MODBUS TCP、MODBUS RTU与MODBUS ASCII三种。

(1)MODBUS TCP协议该协议是通过以太网为通讯媒介。

具体的数据格式分为两部分:MBAP(报文头)+PDU(帧结构)。

PDU(帧结构)由功能码+数据组成,数据长度由具体功能决定。

功能码定义如下:注:以下所列举内容均在三菱PLC(FX5U-32MT/ES)上测试通过,其中PLC为服务器,上位机为客户端。

(1)线圈读取功能(01H)样例1:读Y0-Y7,Y10-Y17请求:123400000006010100000010响应:1234000000050101025500(2)输入读取功能(02H)样例2:读X0-X7请求:112200000006010200000008响应:11220000000401020100(3)保持寄存器读取功能(03H)样例3:读D0-D3(D0=1,D1=2,D2=3,D3=4)请求:FF EE00000006010300000004响应:FF EE0000000B0103080001000200030004(4)1线圈写入功能(05H)样例4:将Y1设置为0N请求:11220000000601050001FF00(5)1寄存器写入功能(06H)样例5:将D1赋值为9请求:999900000006010600010009(6)多线圈写入功能(0FH)样例6:将Y0,Y2置ON,Y1,Y3置OFF请求:141500000008010F000000040105响应:141500000006010F00000004(7)多寄存器写入功能(10H)样例7:将D0,D1,D2分别赋值1,2,3请求:25260000000D01100000000306000100020003响应:252600000006011000000003附录:三菱PLC(FX5U)功能及地址对应关系表(2)MODBUS RTU协议该协议是通过RS485,RS422,RS232为通讯媒介。

MODBUS-TCP-协议解析课件

MODBUS-TCP-协议解析课件

用户应用
通讯
MODBUS MODBUS

应用层
客户接口 客户接口


MODBUS客户机 MODBUS服务器


流 量 控Βιβλιοθήκη TCP管理层制
栈参数化
连接管理
访问控制
TCP/IP栈
MODBUS-TCP-协议解析
26
通信应用层
v Modbus客户机:允许用户应用控制与远程设备的信息交换。 Modbus客户机根据用户应用向Modbus客户机接口的发送要 求中所包含的参数来建立一个Modbus请求。
设备 @ IP1
客户
机端
n (n>1024)

连接(@ IP1 n, @IP2 502)
设备 @ IP2
客户
n (n>1024)
机端

服务器 端口
502
服务器
502
端口
MODBUS-TCP-协议解析
31
信息交换过程
完整的ModbusTCP通信过程:
客户机建立一个连接, 向服务器发送3 个MODBUS请 求,而不等待第一个请求的 应答到来。在收到所有的应 答后,客户机正常地关闭连 接。
v 可以对TCP/IP的栈进行参数配置,以适用于不同的产品或 系统特定的约束条件,来进行数据流控制、地址管理和连
接管理,使用BSD套接字接口来管理TCP连接。
MODBUS-TCP-协议解析
29
TCP连接管理
v MODBUS通信需要建立客户机与服务器之间的TCP连接。
v 连接的建立可以由用户应用模块直接实现,也可以由TCP连接 管理模块自动完成。
15
❖ 主/从通信的三种典型情况
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SUPCON
2
Modbus 协议规范
SUPCON
Modbus技术规范的关系
Modbus 应用协议 规范 Modbus 应用层
Modbus 协议 在 TCP/IP 上 的实现指南
在 TCP/IP 上的 M odbus 映射
Modbus 协议 在串行链路 上的实现指 南
串行链路主站/从站 TIA/EIA-232-F
Modbus报文传输服务必须在502端口上提供一个监听套接 字,允许接收新的连接和与其他设备交换数据。 当报文传输服务需要与远程服务器交换数据时,它必须 与远程502端口建立一个新的客户机连接,以便于远距离 地交换数据。本地端口必须高于1024,并且对每个客户 机的连接各不相同 。
设备
@ IP1 客户 机端 口
管理层
栈参数化 连接管理 访问控制
TCP/IP栈
SUPCON 通信应用层
Modbus客户机:允许用户应用控制与远程设备的信息交换。 Modbus客户机根据用户应用向Modbus客户机接口的发送要 求中所包含的参数来建立一个Modbus请求。
Modbus客户机接口:Modbus客户机接口提供一个接口,使 得用户应用能够生成各类Modbus服务的请求,该服务包括 对Modbus应用对象的访问。 Modbus服务器:在收到一个Modbus请求以后,模块激活一 个本地操作进行读、写、或完成其他操作。
SUPCON TCP管理层
管理通信的建立和结束以及管理在所建立的TCP连接上的 数据流。 连接管理: 在客户机和服务器的Modbus模块之间的通信需要使用 TCP连接管理模块,负责全面管理报文传输TCP连接。 访问控制: 在某些至关重要的场合,必须禁止无关的主机对设备 内部数据的访问。
SUPCON TCP/IP栈层
SUPCON 通用Modbus帧结构--协议数据单元 (PDU)
Modbus协议定义了一个与基础通信层无关的简单协议数 据单元(PDU),特定总线或网络上的Modbus协议映射 能够在应用数据单元(ADU)上引入一些附加域。
ADU 附加地址 功能码 PDU 数据 差错校验
SUPCON
Modbus事务处理(无差错)
SUPCON
Modbus主站-从站协议原理
Modbus串行链路协议是一个主-从协议。在同一时刻,只有 一个主节点连接与总线,一个或多个子节点(最大编号为 247)连接于同一串行总线。 Modbus通信由主节点发起,子节点在没有收到来自主节点的 请求时,从不会发送数据。 子节点之间互不通信。 主节点在同一时刻只会发起一个Modbus事务处理。 主节点以两种模式对子节点发送Modbus请求:广播、单播。
MBAP报文头
域 事务处理 标识符 协议标识 符 长度 长度 2 字 节 2 字 节 2 字 节 描述 Modbus 请求 / 响 应事务处理的识 别 0=Modbus协议 客户机 客户机启 动 客户机启 动 服务器 服务器从接收的 请求中重新复制 服务器从接收的 请求中重新复制
随后字节的数量
客户机启 服务器(响应) 动 ( 请 求 ) 启动
客户机
启动请求
功能码 数据请求
服务器
在操作中检测差错 启动差错 接收响应
异常功能码
异常码
SUPCON
3
Modbus协议在串行链路上的实现
SUPCON Modbus协议在串行链路上的实现模型
主要是在RS485和RS232等物理接口上实现Modbus协议。 在Modbus链路层上客户机的功能由主站提供而服务器的功 能由从站实现。
0 1——247 248——255
广播地址
子节点单独地址
保留
SUPCON 串行链路上的Modbus帧结构
Modbus串行链路协议是一个主/从协议 网络上的每个从站必须有唯一的地址(从1到247) 从站地址用于寻址从站设备,由主站发起 地址0用于广播模式,不需要响应 RS-485和RS-232 定义了标准的物理端口,提高互可操作性
SUPCON Modbus/TCP的优缺点
优点: 用户可免费获得协议及样板程序; 网络实施价格低廉,可全部使用通用网络部件; 易于集成不同的设备,几乎可以找到任何现场总线连接到 Modbus-TCP的网关 ; 网络的传输能力,100M以太网的传输结果为:每秒4000个 Modbus TCP报文,而每个报文可传输125个字(16bit),故 相当于4000×125=500000个模拟量数据(8000000开关量! ); 缺点: 实时性较差
主站 从站 …… …… …… 从站 从站 …… 从站 从站
SUPCON
主站工作状态图
SUPCON
从站工作状态图
SUPCON
主/从通信的三种典型情况
SUPCON 串行链路上的Modbus地址规则
Modbus寻址空间有256个不同地址 地址0为广播地址 Modbus主节点没有地址,子节点必须有一个唯一的地址
Modbus TCP / IP
Modbus 服务器 串行链路 Modbus 服务器 串行链路
Modbus 服务器 TCP/IP
Modbus 服务器 TCP/IP
服务器 TCP/I 网关
Modbus 串行链路
SUPCON
ModbusTCP数据帧
ModbusTCP数据帧与串行链路数据帧的区别
SUPCON
SUPCON Modbus 的优缺点
优点: 公开的协议,完全免费。 简单易用,性能稳定。 广泛的知识资源支持。
缺点: 自适应性差,需合理组态。 通信效率低。
SUPCON
4
Modbus协议在TCP/IP上的实现
SUPCON
ModbusTCP简介
ModbusTCP是运行在TCP/IP上的Modbus 报文传输协议。通过 此协议,控制器相互之间通过网络(例如以太网)和其它设 备之间可以通信。 ModbusTCP是开放的协议,IANA(Internet Assigned Numbers Authority,互联网编号分配管理机构)给Modbus 协议赋予TCP编口号为502,这是目前在仪表与自动化行业中 唯一分配到的端口号。 ModbusTCP/IP协议模型
层 7 6 5 4 3 2 ISO/OSI 模型 应用层 表示层 会话层 传输层 网络层 数据链路层 Modbus应用协议 空 空 空 空 Modbus串行链路协议
Modbus 主站/从站 EIA/TIA-485
(或 EIA/TIA-232)
Modbus 应用协议层 客户机/服务器
1
物理层
EIA/TIA-485 (或 EIA/TIA232)
SUPCON
Modbus 和Modbus/TCP协议基础介绍
EPA推广应用中心
章雷
SUPCON
主要内容
概 述
Modbus 协议规范 Modbus协议在串行链路上的实现 Modbus协议在TCP/IP上的实现
1 2
3
4
SUPCON
1
概 述
SUPCON
Modbus是MODICON公司于1979年开发的一种通讯协议, 是一种工业现场总线协议标准。1996年施耐德公司推出 了基于以太网TCP/IP的Modbus协议——ModbusTCP。 Modbus协议是一项应用层报文传输协议,包括ASCII、 RTU、TCP三种报文类型,协议本身并没有定义物理层, 只是定义了控制器能够认识和使用的消息结构,而不管 他们是经过何种网络进行通信的。 标准的Modbus协议物理层接口有RS232、RS422、RS485 和以太网口。采用Master/Slave(主/从)方式通信。 Modbus在2004年成为我国国家标准。
TCP/IP IETF RFC 793 IP IETF RFC 791
Ethernet II /802.3 IEEE 802.2 以太网物理层
TIA/EIA-485-A
SUPCON
Modbus应用协议
Modbus是一种简单客户机/服务器应用协议 客户机能够向服务器发送请求。 服务器分析请求,处理请求,向客户机发送应答。
当服务器对客户机响应时,它使用功能码域来指示正常 (无差错)响应或者出现某种差错(称为异常响应)。 对于一个正常响应来说,服务器仅复制原始功能码。
客户机
启动请求
功能码 数据请求
服务器
执行操作 启动响应
功能码
数据响应
接收响应
SUPCON
Modbus事务处理(异常响应)
对于异常响应,服务器将原始功能码的最高有效位设置 逻辑1后返回。 异常码指示差错类型。
SUPCONΒιβλιοθήκη ModbusTCP通信结构
Modbus TCP/IP 的 通 信 设 备 : 连 接 至 TCP/IP 网 络 的 Modbus TCP/IP客户机和服务器设备。 互连设备,如:在 TCP/IP 网络和串行链路子网之间互连 的网桥、路由器或网关等设备。
Modbus 客户机 串行链路 Modbus 客户机 TCP/IP Modbus 客户机 TCP/IP 客户机 TCP/IP 网关
设备
n (n>1024)
连接(@ IP1 n, @IP2 502)
n (n>1024)
@ IP2 客户 机端 口
服务器 端口
502
502
服务器 端口
SUPCON 信息交换过程
完整的ModbusTCP通信过程: 客 户 机 建立 一 个 连接 , 向服务器发送 3 个 MODBUS 请 求,而不等待第一个请求的 应答到来。在收到所有的应 答后,客户机正常地关闭连 接。
SUPCON 应用行业规模
TCP/IP 已成为信息行业的事实标准:世界上93%的网络都 使用TCP/IP,只要在应用层使用Modbus TCP,就可实现工 业以太网数据交换;
相关文档
最新文档