Modbus协议分析.ppt_第1页
Modbus协议分析.ppt_第2页
Modbus协议分析.ppt_第3页
Modbus协议分析.ppt_第4页
Modbus协议分析.ppt_第5页
免费预览已结束,剩余40页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MODBUS协议,主要内容,概述Modbus应用协议规范Modbus协议在串行链路上的实现,概述,1979年Modicon公司(现Schneider的一部分)提出的ModbusModbus最初作为工业串行链路的事实标准1997年Schneider电气在TCP/IP上实现Modbus协议2004年Modbus作为我国国家标准,Modbus技术规范组成,Modbus应用协议规范Modbus协议在串行链路上的实现指南Modbus协议在TCP/IP上的实现指南Modbus标准技术规范由以上三部分组成,本次我们学习前面两个部分。,Modbus技术规范的关系,Modbus应用协议规范,协议简介数据帧格式事务处理数据模型功能码,Modbus通信栈,Modbus应用协议,Modbus是一种简单客户机/服务器应用协议客户机能够向服务器发送请求服务器分析请求,处理请求,向客户机发送应答,通用Modbus帧结构协议数据单元(PDU),Modbus事务处理(无差错),当服务器对客户机响应时,它使用功能码域来指示正常(无差错)响应或者出现某种差错(称为异常响应)对于一个正常响应来说,服务器仅复制原始功能码,Modbus事务处理(异常响应),对于异常响应,服务器将原始功能码的最高有效位设置逻辑1后返回异常码指示差错类型,异常码,Modbus事务处理,ModbusPDU长度,Modbus最初在串行链路上的实现(最大RS485ADU=256字节)限制了ModbusPDU的长度。因此,对串行链路通信来说,ModbusPDU=256-服务器地址(1字节)-CRC(2字节)253字节。从而:RS232/RS485ADU=253字节+服务器地址(1字节)+CRC(2字节)=256字节。TCPModbusADU=249字节+MBAP(7字节)=256字节。,ModbusPDU结构,Modbus请求PDUmb_req_pdu=function_code,request_data,function_code-1字节Modbus功能码request_data-n字节Modbus响应PDUmb_rsp_pdu=function_code,response_data,function_code-1字节Modbus功能码response_data-n字节Modbus异常响应PDUmb_excep_rsp_pdu=function_code,exception_code,function_code-1字节Modbus功能码+0 x80exception_code1字节,Modbus数据模型,Modbus的数据模型是以一组具有不同特征的类型为基础建立的四个基本类型为:,Modbus功能码,有三类MODBUS功能码。它们是:公共功能码是较好地被定义的功能码,保证是唯一的,MODBUS组织可改变的,公开证明的,具有可用的一致性测试,MBIETFRFC中证明的其中RFC为RequestforComments首字母的缩写,它是IETF(互联网工程任务推进组织)的一个无限制分发文档。RFC被编号并且用编号来标识。包含已被定义的公共指配功能码和未来使用的未指配保留供功能码。用户定义功能码有两个用户定义功能码的定义范围,即65至72和十进制100至110。用户没有MODBUS组织的任何批准就可以选择和实现一个功能码不能保证被选功能码的使用是唯一的。如果用户要重新设置功能作为一个公共功能码,那么用户必须启动RFC,以便将改变引入公共分类中,并且指配一个新的公共功能码。保留功能码一些公司对传统产品通常使用的功能码,并且对公共使用是无效的功能码。,功能码分类其中128-255为异常响应保留。,Modbus公共功能码的定义,常用功能码为0 x01,0 x02、0 x03、0 x04、0 x05、0 x06、0 x0F、0 x10,Modbus功能码应用实例(1),读线圈(0 x01),响应,*N寄存器的数量/8,如果余数不等于0,那么N=N+1错误,读线圈实例,这是一个请求离散量输出20-38的实例。将输出27-20的状态表示为十六进制字节值CD,或二进制11001101。输出27是这个字节的MSB,输出20是LSB。通常,将一个字节内的比特表示为MSB位于左侧,LSB位于右侧。第一字节的输出从左至右为27至20。下一个字节的输出从左到右为35至28。当串行发射比特时,从LSB向MSB传输:20.27、28.35等等。在最后的数据字节中,将输出状态38-36表示为十六进制字节值05,或二进制00000101。输出38是左侧第六个比特位置,输出36是这个字节的LSB。用零填充五个剩余高位比特。,Modbus功能码应用实例(2),读离散量输入(0 x02),读离散量输入实例,这是一个请求读取离散量输入197-128的实例。将离散量输入状态204-197表示为十六进制字节值AC,或二进制10101100。输入204是这个字节的MSB,输入197是这个字节的LSB。将离散量输入状态218-213表示为十六进制字节值35,或二进制00110101。输入218位于左侧第3比特,输入213是LSB这与读线圈功能是相似的,只是读取的数据类型不同。,Modbus功能码应用实例(3),读保存寄存器(0 x03),读保持寄存器实例,Modbus功能码应用实例(4),读输入寄存器(0 x04),读输入寄存器实例,这与读保存寄存器功能相似,只是数据类型不同。,Modbus功能码应用实例(5),写多个线圈(0 x0F)其中1代表逻辑ON,0代表逻辑OFF,写多个线圈实例,Modbus功能码应用实例(6),写多个寄存器(0 x10),*N寄存器数量响应,错误,写多个保持寄存器实例,其他功能码与以上类似,如有需要详细了解,可阅读MODBUS协议。,Modbus协议在串行链路上的实现,主站/从站协议原理Modbus串行传输模式RTU模式Modbus串行传输模式ASCII模式,Modbus协议在串行链路上的实现模型,Modbus串行链路协议是一个主/从协议。该协议位于OSI模型的第二层。,位于OSI模型第7层的Modbus应用层报文传输协议,供了连接于总线或网络的设备之间的客户机/服务器通信。在Modbus串行链路上客户机的功能由主节点提供而服务器功能由子节点实现。,Modbus主站/从站协议原理,Modbus串行链路协议是一个主-从协议。在同一时刻,只有一个主节点连接于总线,一个或多个子节点(最大编号为247)连接于同一个串行总线。Modbus通信总是由主节点发起。子节点在没有收到来自主节点的请求时,从不会发送数据。子节点之间从不会互相通信。主节点在同一时刻只会发起一个Modbus事务处理。,Modbus通信模式,主节点以两种模式对子节点发出Modbus请求:在单播模式,主节点以特定地址访问某个子节点,子节点接到并处理完请求后,子节点向主节点返回一个报文(一个应答)。在这种模式,一个Modbus事务处理包含2个报文:一个来自主节点的请求,一个来自子节点的应答。每个子节点必须有唯一的地址(1到247),这样才能区别于其它节点被独立的寻址。在广播模式,主节点向所有的子节点发送请求。对于主节点广播的请求没有应答返回。广播请求一般用于写命令。所有设备必须接受广播模式的写功能。地址0是专门用于表示广播数据的。,串行链路上的Modbus帧结构,地址域只含有子节点地址,该地址必须在Modbus串行总线上唯一Modbus主节点没有地址功能码指明服务器要执行的动作,遵从Modbus协议规范错误检验域是对报文内容执行冗余校验的计算结果。根据不同的传输模式(RTUorASCII)使用两种不同的计算方法,CRC或者LRC,串行传输模式-RTU模式,当设备使用RTU(RemoteTerminalUnit)模式在Modbus串行链路通信,报文中每个8位字节含有两个4位十六进制字符。这种模式的主要优点是较高的数据密度,在相同的波特率下比ASCII模式有更高的吞吐率。每个报文必须以连续的字符流传送。RTU模式每个字节(11位)的格式为:编码系统:8位二进制报文中每个8位字节含有两个4位十六进制字符(09,AF)BitsperByte:1起始位8数据位,首先发送最低有效位1位作为奇偶校验1停止位奇偶校验中,偶校验是默认的,其它模式(奇校验,无校验)也可以使用,在无校验的模式下,有两个停止位,串行传输模式-RTU模式,在RTU模式,报文帧由时长至少为3.5个字符时间的空闲间隔区分整个报文帧必须以连续的字符流发送。如果两个字符之间的空闲间隔大于1.5个字符时间,则报文帧被认为不完整应该被接收节点丢弃,串行传输模式-RTU模式,RTU接收驱动程序的实现,由于t1.5和t3.5的定时,隐含着大量的对中断的管理。在高通信速率下,这导致CPU负担加重。因此,在通信速率等于或低于19200Bps时,这两个定时必须严格遵守;对于波特率大于19200Bps的情形,应使用2个定时的固定值:建议的字符间超时时间(t1.5)为750s,帧间的超时时间(t1.5)为1.750ms。,串行传输模式-RTU模式,在RTU模式包含一个对全部报文内容执行的,基于循环冗余校验(CRC-CyclicalRedundancyChecking)算法的错误检验域。CRC域检验整个报文的内容。不管报文有无奇偶校验,均执行此检验。CRC包含由两个8位字节组成的一个16位值。CRC为常用的CRC-16校验方式,计算后,首先附加低字节,然后是高字节,串行传输模式-ASCII模式,在ASCII模式中,报文中的每个8位子节以两个ASCII字符发送例:子节0X5B会被编码为两个字符:0 x35和0 x42(ASCII编码0 x35=5,0 x42=B)由于一个子节需要两个字符,此模式比RTU效率低ASCII模式每个字节(10位)的格式为:编码系统:十六进制,ASCII字符0-9,A-F。报文中每个ASCII字符含有1个十六进制字符BitsperByte:1起始位7数据位,首先发送最低有效位1位作为奇偶校验1停止位奇偶校验中,偶校验是默认的,其它模式(奇校验,无校验)也可以使用,在无校验的模式下,有两个停止位,串行传输模式-ASCII模式,ASCII模式下的报文帧格式如下:报文必须以“:”开始报文必须以“LF(0 x0D)CR(0 x0A)”结束数据用十六进制ASCII码值表示使用LRC进行差错校验每个字符子节需要用两个字符编码。因此,为了确保ASCII模式和RTU模式在Modbus应用级兼容,ASCII数据域最大数据长度为(2x252)是RTU数据域(252)的两

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论