收藏 分销(赏)

Modbus协议分析.pptx

上传人:胜**** 文档编号:1711140 上传时间:2024-05-08 格式:PPTX 页数:45 大小:770.36KB
下载 相关 举报
Modbus协议分析.pptx_第1页
第1页 / 共45页
Modbus协议分析.pptx_第2页
第2页 / 共45页
Modbus协议分析.pptx_第3页
第3页 / 共45页
Modbus协议分析.pptx_第4页
第4页 / 共45页
Modbus协议分析.pptx_第5页
第5页 / 共45页
点击查看更多>>
资源描述

1、MODBUS协议主要内容概述Modbus应用协议规范 Modbus协议在串行链路上的实现概 述q1979年Modicon公司(现Schneider 的一部分)提出的ModbusqModbus最初作为工业串行链路的事实标准q1997年Schneider电气在TCP/IP上实现Modbus协议 q2004年Modbus作为我国国家标准Modbus技术规范组成ModbusModbus应用协议规范应用协议规范ModbusModbus协议在串行链路上的实现指南协议在串行链路上的实现指南ModbusModbus协议在协议在TCP/IPTCP/IP上的实现指南上的实现指南 ModbusModbus标准技术规

2、范由以上三部分组成,本次我们学习前标准技术规范由以上三部分组成,本次我们学习前面两个部分。面两个部分。Modbus技术规范的关系Modbus应用协议规范协议简介数据帧格式事务处理数据模型功能码Modbus通信栈Modbus应用协议ModbusModbus是一种简单客户机是一种简单客户机/服务器应用协议服务器应用协议q客户机能够向服务器发送请求客户机能够向服务器发送请求q服务器分析请求,处理请求,向客户机发送应答服务器分析请求,处理请求,向客户机发送应答通用Modbus帧结构协议数据单元(PDU)Modbus事务处理(无差错)当服务器对客户机响应时,它使用功能码域来指示正常当服务器对客户机响应时

3、,它使用功能码域来指示正常(无差错)(无差错)响应或者出现某种差错(称为异常响应)响应或者出现某种差错(称为异常响应)对于一个正常响应来说,服务器仅复制原始功能码对于一个正常响应来说,服务器仅复制原始功能码Modbus事务处理(异常响应)q对于异常响应,服务器将原始功能码的最高有效位设置逻辑1后返回 q异常码指示差错类型异常码Modbus事务处理Modbus PDU长度Modbus最初在串行链路上的实现(最大最初在串行链路上的实现(最大RS485ADU=256RS485ADU=256字字节)限制了节)限制了Modbus PDU PDU的长度。的长度。因此,对串行链路通信来说,因此,对串行链路通

4、信来说,Modbus PDU=256-PDU=256-服务器服务器地址(地址(1 1字节)字节)-CRCCRC(2 2字节)字节)253253字节。字节。从而:从而:RS232/RS485 ADU=253 RS232/RS485 ADU=253字节字节+服务器地址服务器地址(1(1字节字节)+)+CRC(2CRC(2字节字节)=256)=256字节。字节。TCP Modbus ADU=249 TCP Modbus ADU=249字节字节+MBAP(7MBAP(7字节字节)=2)=25656字节。字节。Modbus PDU结构qModbus请求PDU mb_req_pdu=function_co

5、de,request_data,mb_req_pdu=function_code,request_data,function_code-1 function_code-1字节字节 ModbusModbus功能码功能码 request_data-nrequest_data-n字节字节 qModbus响应PDU mb_rsp_pdu=function_code,response_ data,mb_rsp_pdu=function_code,response_ data,function_code-1 function_code-1字节字节 Modbus Modbus功能码功能码 response_

6、data-nresponse_data-n字节字节 qModbus异常响应PDU mb_excep_rsp_pdu=function_code,exception_code,mb_excep_rsp_pdu=function_code,exception_code,function_code-1 function_code-1字节字节 Modbus Modbus功能码功能码 +0 x80 exception_code+0 x80 exception_code 1 1字节字节 Modbus 数据模型ModbusModbus的数据模型是以一组具有不同特征的类型为基础建立的数据模型是以一组具有不同特

7、征的类型为基础建立的四个基本类型为:的四个基本类型为:基本类型基本类型对象类型对象类型访问类型访问类型注释注释离散量输入离散量输入单个位只读I/O系统可提供这种类型数据线圈线圈单个位读写通过应用程序可改变这种类型数据输入寄存器输入寄存器16位字只读I/O系统可提供这种类型数据保持寄存器保持寄存器16位字读写通过应用程序可改变这种类型数据Modbus功能码有三类MODBUS 功能码。它们是:公共功能码是较好地被定义的功能码,保证是唯一的,MODBUS组织可改变的,公开证明的,具有可用的一致性测试,MB IETF RFC中证明的 其中RFC 为Request for Comments首字母的缩写,

8、它是IETF(互联网工程任务推进组织)的一个无限制分发文档。RFC被编号并且用编号来标识。包含已被定义的公共指配功能码和未来使用的未指配保留供功能码。用户定义功能码有两个用户定义功能码的定义范围,即65 至72 和十进制100 至110。用户没有MODBUS 组织的任何批准就可以选择和实现一个功能码不能保证被选功能码的使用是唯一的。如果用户要重新设置功能作为一个公共功能码,那么用户必须启动RFC,以便将改变引入公共分类中,并且指配一个新的公共功能码。保留功能码一些公司对传统产品通常使用的功能码,并且对公共使用是无效的功能码。功能码分类其中128-255为异常响应保留。Modbus公共功能码的定

9、义常用功能码为0 x01,0 x02、0 x03、0 x04、0 x05、0 x06、0 x0F、0 x10Modbus功能码应用实例(1)读线圈读线圈 (0 x01)(0 x01)功能码1字节0 x01起始地址2字节0 x0000 至0 xFFFF线圈数量2字节1至2000(0 x7D0)功能码1字节0 x01字节计数1字节N*线圈状态n字节nN或N+1响应*N N寄存器的数量/8,如果余数不等于0,那么 N=N+1 错误功能码1字节功能码0 x80异常码1字节01或02或03或04读线圈实例这是一个请求离散量输出20-38的实例。将输出27-20 的状态表示为十六进制字节值CD,或二进制1

10、100 1101。输出27 是这个字节的MSB,输出20 是LSB。通常,将一个字节内的比特表示为MSB 位于左侧,LSB 位于右侧。第一字节的输出从左至右为27至20。下一个字节的输出从左到右为35至28。当串行发射比特时,从LSB向MSB传输:20.27、28.35 等等。在最后的数据字节中,将输出状态38-36表示为十六进制字节值05,或二进制0000 0101。输出38 是左侧第六个比特位置,输出36 是这个字节的LSB。用零填充五个剩余高位比特。Modbus功能码应用实例(2)读离散量输入(0 x02)读离散量输入实例这是一个请求读取离散量输入197-128的实例。将离散量输入状态2

11、04-197表示为十六进制字节值AC,或二进制1010 1100。输入204是这个字节的MSB,输入197 是这个字节的LSB。将离散量输入状态218-213表示为十六进制字节值35,或二进制0011 0101。输入218位于左侧第3 比特,输入213 是LSB这与读线圈功能是相似的,只是读取的数据类型不同。Modbus功能码应用实例(3)读保存寄存器(0 x03)读保持寄存器实例Modbus功能码应用实例(4)读输入寄存器(0 x04)读输入寄存器实例这与读保存寄存器功能相似,只是数据类型不同。Modbus功能码应用实例(5)写多个线圈(0 x0F)其中1 代表逻辑ON,0代表逻辑OFF写多

12、个线圈实例Modbus功能码应用实例(6)写多个寄存器写多个寄存器(0 x10)(0 x10)功能码1字节0 x10起始地址2字节0 x0000至0 xFFFF寄存器数量2字节0 x0001至0 x0078字节计数1字节2N*寄存器值N*2字节值*N N寄存器数量响应错误功能码1字节0 x10起始地址2字节0 x0000至0 xFFFF寄存器数量2字节1至123(0 x7B)差错码1字节0 x90异常码1字节01或02或03或04写多个保持寄存器实例其他功能码与以上类似,如有需要详细了解,可阅读MODBUS协议。Modbus协议在串行链路上的实现主站/从站协议原理Modbus串行传输模式 RT

13、U模式Modbus串行传输模式 ASCII模式Modbus协议在串行链路上的实现模型 q Modbus 串行链路协议是一个主/从协议。该协议位于 OSI 模型的第二层。层ISO/OSI 模型7应用层Modbus应用协议6表示层空5会话层空4传输层空3网络层空2数据链路层Modbus串行链路协议1物理层EIA/TIA-485(或 EIA/TIA232)位于 OSI 模型第 7 层的 Modbus 应用层报文传输协议,供了连接于总线或网络的设备之间的客户机/服务器通信。在 Modbus 串行链路上客户机的功能由主节点提供而服务器功能由子节点实现。Modbus主站/从站协议原理Modbus 串行链路

14、协议是一个主-从协议。在同一时刻,只有一个主节点连接于总线,一个或多个子节点 (最大编号为 247 )连接于同一个串行总线。Modbus 通信总是由主节点发起。子节点在没有收到来自主节点的请求时,从不会发送数据。子节点之间从不会互相通信。主节点在同一时刻只会发起一个 Modbus 事务处理。Modbus通信模式主节点以两种模式对子节点发出 Modbus 请求:在单播模式,主节点以特定地址访问某个子节点,子节点接到并处理完请求后,子节点向主节点返回一个报文(一个应答)。在这种模式,一个 Modbus 事务处理包含 2 个报文:一个来自主节点的请求,一个来自子节点的应答。每个子节点必须有唯一的地址

15、 (1 到 247),这样才能区别于其它节点被独立的寻址。在广播模式,主节点向所有的子节点发送请求。对于主节点广播的请求没有应答返回。广播请求一般用于写命令。所有设备必须接受广播模式的写功能。地址 0 是专门用于表示广播数据的。串行链路上的Modbus帧结构q地址域只含有子节点地址,该地址必须在 Modbus 串行总线上唯一qModbus 主节点没有地址 q功能码指明服务器要执行的动作,遵从Modbus协议规范q错误检验域是对报文内容执行 冗余校验 的计算结果。根据不同的传输模式 (RTU or ASCII)使用两种不同的计算方法,CRC或者LRC串行传输模式-RTU模式当设备使用 RTU (

16、Remote T erminal Unit)模式在 Modbus 串行链路通信,报文中每个 8 位字节含有两个 4 位十六进制字符。这种模式的主要优点是较高的数据密度,在相同的波特率下比 ASCII 模式有更高的吞吐率。每个报文必须以连续的字符流传送。RTU 模式每个字节 (11 位)的格式为:n编码系统:8位二进制n报文中每个 8 位字节含有两个 4 位十六进制字符(09,AF)nBits perByte:1 起始位n8 数据位,首先发送最低有效位n1 位作为奇偶校验n1 停止位奇偶校验中,偶校验是默认的,其它模式 (奇校验,无校验 )也可以使用,在无校验的模式下,有两个停止位串行传输模式-

17、RTU模式在 RTU 模式,报文帧由时长至少为 3.5 个字符时间的空闲间隔区分整个报文帧必须以连续的字符流发送。如果两个字符之间的空闲间隔大于 1.5 个字符时间,则报文帧被认为不完整应该被接收节点丢弃串行传输模式-RTU模式R TU 接收驱动程序的实现,由于 t1.5 和t3.5 的定时,隐含着大量的对中断的管理。在高通信速率下,这导致 CPU 负担加重。因此,在通信速率等于或低于 19200 Bps 时,这两个定时必须严格遵守;对于波特率大于 19200 Bps 的情形,应使用 2 个定时的固定值:建议的字符间超时时间(t1.5)为 750s,帧间的超时时间 (t1.5)为 1.750m

18、s。串行传输模式-RTU模式在 RTU 模式包含一个对全部报文内容执行的,基于循环冗余校验(CRC-Cyclical Redundancy Checking)算法的错误检验域。CRC 域检验整个报文的内容。不管报文有无奇偶校验,均执行此检验。CRC 包含由两个 8 位字节组成的一个 16 位值。CRC为常用的 CRC-16校验方式,计算后,首先附加低字节,然后是高字节串行传输模式-ASCII模式在ASCII模式中,报文中的每个8 位子节以两个 ASCII 字符发送例 :子节 0X5B 会被编码为两个字符 :0 x35 和 0 x42(ASCII 编码 0 x35=5,0 x42=B )由于一个

19、子节需要两个字符,此模式比 RTU 效率低ASCII 模式每个字节 (10 位)的格式为:n编码系统:十六进制,ASCII 字符0-9,A-F。n报文中每个 ASCII 字符含有 1 个十六进制字符nBits perByte:1 起始位n7 数据位,首先发送最低有效位n1 位作为奇偶校验n1 停止位奇偶校验中,偶校验是默认的,其它模式 (奇校验,无校验 )也可以使用,在无校验的模式下,有两个停止位串行传输模式-ASCII模式ASCII模式下的报文帧格式如下:报文必须以报文必须以“:”开始开始报文必须以报文必须以“LFLF(0 x0D0 x0D)CRCR(0 x0A)(0 x0A)”结束结束数据

20、用十六进制数据用十六进制ASCIIASCII码值表示码值表示使用使用LRCLRC进行差错校验进行差错校验每个字符子节需要用两个字符编码。因此,为了确保每个字符子节需要用两个字符编码。因此,为了确保 ASCII ASCII 模式模式 和和 RTU RTU 模式在模式在 Modbus Modbus 应用级兼容,应用级兼容,ASCII ASCII 数据域最大数据长度为数据域最大数据长度为 (2x252)(2x252)是是 RTU RTU 数据域数据域 (252)(252)的两倍。的两倍。Modbus ASCII Modbus ASCII 帧的最大尺寸为帧的最大尺寸为 513 513 个字符个字符串行传输模式-ASCII模式在 ASCII 模式,包含一个对全部报文内容执行的,基于纵向冗余校验(LRC -LongitudinalRedundancyChecking)算法的错误检验域。LRC 域检验不包括起始“冒号”和结尾 CRLF 对的整个报文的内容。不管报文有无奇偶校验,均执行此检验。LRC 域为一个子节,包含一个 8 位二进制值。LRC 的计算,对报文中的所有的连续 8 位字节相加,忽略任何进位,然后求出其二进制补码谢谢!

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服