Modbus通信协议

1、Modbus通信协议介绍

       Modbus通信协议是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信,OSI模型见图1.1。

图1.1

       Modbus是一个请求/应答协议,并且提供功能码规定的服务,modbus功能码是modbus请求/应答PDU的元素。

       Modbus通信栈见图1.2所示。

图1.2

       Modbus缩略语:

ADU   应用数据单元

HDLC  高级数据链路控制

HMI   人机界面

IETF   因特网工程工作组

I/O     输入/输出设备

IP      互连网协议

MAC   介质访问控制

MB     MODBUS 协议

MBAP  MODBUS 协议

PDU    协议数据单元

PLC    可编程逻辑控制器

TCP    传输控制协议

2、Modbus通信协议描述

       Modbus协议定义了一个与基础通信层无关的简单协议数据单元(PDU),特定总线或网络上的Modbus协议映射能够在应用数据单元(ADU)上引入一些附加域。

       Modbus通用帧见图1.3所示。

图1.3

       启动Modbus事务处理的客户机创建Modbus应用数据单元。功能码向服务器指示将执行哪种操作。

       Modbus协议建立了客户机启动的请求格式。

       用一个字节编码Modbus数据单元的功能码域。有效的码字范围是十进制1-255(128-255是异常响应保留)。当从客户机向服务器设备发送报文时,功能码域通知服务器执行哪种操作。

       从客户机向服务器设备发送的 报文数据域包括附加信息,服务器使用这个信息执行功能码定义的操作。这个域还包括离散项目和寄存器地址、处理的项目数量以及域中的实际数据字节数。

       在某种请求中,数据域可以是不存在的(0长度),在此情况下服务器不需要任何附加信息。功能码仅说明操作。

如果在一个正确接收的MODBUS ADU中,不出现与请求MODBUS功能有关的差错,那么服务器至客户机的响应数据域包括请求数据。如果出现与请求 MODBUS 功能有关的差错,那么域包括一个异常码,服务器应用能够使用这个域确定下一个执行的操作。

当服务器对客户机响应时,它使用功能码域来指示正常(无差错)响应或者出现某种差错(称为异常响应)。对于一个正常响应来说,服务器仅对原始功能码响应,modbus事务处理见图1.4。

图1.4 modbus事务处理(无差错)

对于异常响应,服务器返回一个与原始功能码等同的码,设置该原始功能码的最高有效位为逻辑1,异常响应见图1.5所示。

3、Modbus功能码定义

       modbus功能码定义见图1.6所示。

图1.6

4、以功能码03为例进行介绍

       在远程设备通信中,使用03功能码读取保存寄存器连续块的内容,请求PDU说明了起始寄存器地址和寄存器数量,从零开始寻址寄存器,因此寻址寄存器1-16为0-15.

       将响应报文中的寄存器数据分成每个寄存器有两个字节,每个字节中直接地调整二进制内容,对于每个寄存器,第一个字节包括高位比特,第二个字节包括低位比特。

请求

功能码

1个字节

0x03

起始地址

2个字节

0x0000至0xffff

寄存器数量

2个字节

1-125(0x7D)

 

响应

功能码

1个字节

0x03

字节数

1个字节

2xN

寄存器值

Nx2个字节

 

N=寄存器的数量

 

错误

差错码

1个字节

0x83

异常码

1个字节

01/02/03/04

 

以读取寄存器108-110为例

请求

响应

域名

(十六进制)

备注

域名

(十六进制)

备注

功能码

03

 

功能

03

···

高起始地址

00

0x006B

字节数

06

2*3个字节

低起始地址

6B

寄存器值Hi(108)

02

0x022B

高寄存器编号

00

0x0003

寄存器值Lo(108)

2B

低寄存器编号

03

寄存器值Hi(109)

00

0x0000

 

寄存器值Lo(109)

00

寄存器值Hi(110)

00

0x0064

寄存器值Lo(110)

64

 

读保持寄存器流程框图见图1.7所示

      

图1.7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值