Modbus协议分析.ppt

上传人:豆**** 文档编号:26553329 上传时间:2022-07-18 格式:PPT 页数:46 大小:799.50KB
返回 下载 相关 举报
Modbus协议分析.ppt_第1页
第1页 / 共46页
Modbus协议分析.ppt_第2页
第2页 / 共46页
点击查看更多>>
资源描述

《Modbus协议分析.ppt》由会员分享,可在线阅读,更多相关《Modbus协议分析.ppt(46页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

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

2、规范由以上三部分组成,本次我们学习前标准技术规范由以上三部分组成,本次我们学习前面两个部分。面两个部分。Modbus技术规范的关系 Modbus 应用层 在 TCP/IP 上的 Modbus 映射 TCP/IP IETF RFC 793 IP IETF RFC 791 Ethernet II /802.3 IEEE 802.2 以太网物理层 TIA/EIA-232-F 串行链路主站/从站 TIA/EIA-485-A Modbus 协议在 TCP/IP 上的实现指南 Modbus应用协议规范 Modbus 协议在串行链路上的实现指南 Modbus应用协议规范 协议简介 数据帧格式 事务处理 数据

3、模型 功能码Modbus通信栈 TCP 基于 TCP的 Modbus Modbus应用层 IP 以太网 物理层 Ethernet II /802.3 EIA/TIA-232 或 EIA/TIA-485 主站/从站 物理层 MODBUS+ / HDLC 其它 其它 Modbus应用协议ModbusModbus是一种简单客户机是一种简单客户机/ /服务器应用协议服务器应用协议q 客户机能够向服务器发送请求客户机能够向服务器发送请求q 服务器分析请求,处理请求,向客户机发送应答服务器分析请求,处理请求,向客户机发送应答通用Modbus帧结构协议数据单元 (PDU) 附 加 地 址 功 能 码 数 据

4、 差 错 校 验 ADU PDU Modbus事务处理(无差错) 当服务器对客户机响应时,它使用功能码域来指示正常当服务器对客户机响应时,它使用功能码域来指示正常(无差错)(无差错)响应或者出现某种差错(称为异常响应)响应或者出现某种差错(称为异常响应) 对于一个正常响应来说,服务器仅复制原始功能码对于一个正常响应来说,服务器仅复制原始功能码 功能码功能码 数据请求数据请求 客户机 服务器 启动请求启动请求 执行操作执行操作 启动响应启动响应 接收响应接收响应 功能码功能码 数据响应 Modbus事务处理(异常响应)q对于异常响应,服务器将原始功能码的最高有效位设置逻辑1后返回 q异常码指示差

5、错类型 客户机 服务器 启动请求启动请求 在操作中检测差错在操作中检测差错 启动差错启动差错 异常功能码异常功能码 接收响应接收响应 异常码异常码 功能码功能码 数据请求数据请求 异常码Modbus事务处理Modbus PDU长度 Modbus最初在串行链路上的实现(最大最初在串行链路上的实现(最大RS485ADU=256RS485ADU=256字字节)限制了节)限制了Modbus PDU PDU的长度。的长度。 因此,对串行链路通信来说,因此,对串行链路通信来说,Modbus PDU=256- PDU=256-服务器服务器地址(地址(1 1字节)字节)- -CRCCRC(2 2字节)字节)2

6、53253字节。字节。 从而:从而: 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结构q Modbus请求PDU mb_req_pdu = function_code, request_data , mb_req_pdu

7、 = function_code, request_data , function_code - 1 function_code - 1字节字节 ModbusModbus功能码功能码 request_data - nrequest_data - n字节字节 q Modbus响应PDU mb_rsp_pdu = function_code, response_ data , mb_rsp_pdu = function_code, response_ data , function_code - 1 function_code - 1字节字节 Modbus Modbus功能码功能码 respons

8、e_data - nresponse_data - n字节字节 q Modbus异常响应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的数据模型是以一组具有不同

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

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

11、-255为异常响应保留。Modbus公共功能码的定义常用功能码为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的实例。

12、将输出27-20 的状态表示为十六进制字节值CD,或二进制1100 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

13、)读离散量输入实例 这是一个请求读取离散量输入197-128的实例。将离散量输入状态204-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)读输入寄存器实例这与读保存寄存器功能相似,只是数据类型不同。Mod

14、bus功能码应用实例(5)写多个线圈(0 x0F)其中1 代表逻辑ON,0代表逻辑OFF写多个线圈实例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写多个保持寄存器实例 其他功能码与以上类似,如有需要详细了解,可阅读MOD

15、BUS协议。Modbus协议在串行链路上的实现主站/从站协议原理Modbus串行传输模式 RTU模式Modbus串行传输模式 ASCII模式Modbus协议在串行链路上的实现模型 q Modbus 串行链路协议是一个主/从协议。 该协议位于 OSI 模型的第二层。 EIA/TIA-485 (或 EIA/TIA-232) Modbus 主站/从站 Modbus 应用协议层 客户机/服务器 层ISO/OSI 模型 7应用层Modbus应用协议6表示层空5会话层空4传输层空3网络层空2数据链路层Modbus串行链路协议 1物理层EIA/TIA-485 (或 EIA/TIA232)位于 OSI 模型第

16、 7 层的 Modbus 应用层报文传输协议, 供了连接于总线或网络的设备之间的客户机/服务器通信。在 Modbus 串行链路上客户机的功能由主节点提供而服务器功能由子节点实现。Modbus主站/从站协议原理 Modbus 串行链路协议是一个主-从协议。 在同一时刻,只有一个主节点连接于总线,一个或多个 子节点 (最大编号为 247 ) 连接于同一个串行总线。Modbus 通信总是由主节点发起。子节点在没有收到来自主节点的请求时,从不会发送数据。 子节点之间从不会互相通信。 主节点在同一时刻只会发起一个 Modbus 事务处理。Modbus通信模式主节点以两种模式对子节点发出 Modbus 请

17、求:在单播模式, 主节点以特定地址访问某个子节点, 子节点接到并处理完请求后, 子节点向主节点返回一个报文(一个应答)。在这种模式, 一个 Modbus 事务处理包含 2 个报文: 一个来自主节点的请求, 一个来自子节点的应答。每个子节点必须有唯一的地址 (1 到 247),这样才能区别于其它节点被独立的寻址。 在广播模式,主节点向所有的子节点发送请求。对于主节点广播的请求没有应答返回。 广播请求一般用于写命令。 所有设备必须接受广播模式的写功能。地址 0 是专门用于表示广播数据的。串行链路上的Modbus帧结构q地址域只含有子节点地址,该地址必须在 Modbus 串行总线上唯一qModbus

18、 主节点没有地址 q功能码指明服务器要执行的动作,遵从Modbus协议规范q错误检验域是对报文内容执行 冗余校验 的计算结果。根据不同的传输模式 (RTU or ASCII)使用两种不同的计算方法,CRC或者LRC 地址域 功能码 数据 CRC (或 LRC) Modbus 串串行行链链路路 ADU Modbus PDU 串行传输模式-RTU模式当设备使用 RTU (Remote T erminal Unit) 模式在 Modbus 串行链路通信, 报文中每个 8 位字节含有两个 4 位十六进制字符。这种模式的主要优点是较高的数据密度,在相同的波特率下比 ASCII 模式有更高的吞吐率。每个报

19、文必须以连续的字符流传送。RTU 模式每个字节 ( 11 位) 的格式为:n 编码系统: 8位二进制n 报文中每个 8 位字节含有两个 4 位十六进制字符(09,AF)n Bits perByte: 1 起始位n 8 数据位, 首先发送最低有效位n 1 位作为奇偶校验n 1 停止位奇偶校验中,偶校验是默认的, 其它模式 ( 奇校验, 无校验 ) 也可以使用,在无校验的模式下,有两个停止位串行传输模式-RTU模式 在 RTU 模式,报文帧由时长至少为 3.5 个字符时间的空闲间隔区分 整个报文帧必须以连续的字符流发送。 如果两个字符之间的空闲间隔大于 1.5 个字符时间,则报文帧被认为不完整应该

20、被接收节点丢弃 t0 至少3.5个字符 帧 1 帧2 至少3.5个字符 帧3 4.5个字符 3.5个字符 t0 1.5个字符 帧 1 正正常常 帧 2 不不正正常常 1.5个字符 串行传输模式-RTU模式 R TU 接收驱动程序的实现,由于 t1.5 和t3.5 的定时,隐含着大量的对中断的管理。在高通信速率下,这导致 CPU 负担加重。因此,在通信速率等于或低于 19200 Bps 时,这两个定时必须严格遵守;对于波特率大于 19200 Bps 的情形,应使用 2 个定时的固定值:建议的字符间超时时间(t1.5)为 750s,帧间的超时时间 (t1.5) 为 1.750ms。串行传输模式-R

21、TU模式 在 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 ) 由

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

23、CR(0 x0A)(0 x0A)”结束结束 数据用十六进制数据用十六进制ASCIIASCII码值表示码值表示 使用使用LRCLRC进行差错校验进行差错校验 每个字符子节需要用两个字符编码。因此,为了确保每个字符子节需要用两个字符编码。因此,为了确保 ASCII ASCII 模式模式 和和 RTU RTU 模式在模式在 Modbus Modbus 应用级兼容,应用级兼容,ASCII ASCII 数据域最大数据长度为数据域最大数据长度为 (2x252) (2x252) 是是 RTU RTU 数据域数据域 (252) (252) 的两倍。的两倍。 Modbus ASCII Modbus ASCII

24、帧的最大尺寸为帧的最大尺寸为 513 513 个字符个字符起始地址功能码数据LRC结束1个字符:2个字符2 个字符2 个字符2 个字符CR、LF0至 2x252 个字符串行传输模式-ASCII模式 在 ASCII 模式,包含一个对全部报文内容执行的,基于纵向冗余校验(LRC -LongitudinalRedundancyChecking) 算法的错误检验域。 LRC 域检验不包括起始 “冒号”和结尾 CRLF 对的整个报文的内容。不管报文有无奇偶校验,均执行此检验。 LRC 域为一个子节,包含一个 8 位二进制值。 LRC 的计算, 对报文中的所有的连续 8 位字节相加,忽略任何进位,然后求出其二进制补码谢谢!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com