教学课件第5部分Modbus通信协议简介.ppt

上传人:牧羊曲112 文档编号:6287932 上传时间:2023-10-14 格式:PPT 页数:27 大小:658KB
返回 下载 相关 举报
教学课件第5部分Modbus通信协议简介.ppt_第1页
第1页 / 共27页
教学课件第5部分Modbus通信协议简介.ppt_第2页
第2页 / 共27页
教学课件第5部分Modbus通信协议简介.ppt_第3页
第3页 / 共27页
教学课件第5部分Modbus通信协议简介.ppt_第4页
第4页 / 共27页
教学课件第5部分Modbus通信协议简介.ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《教学课件第5部分Modbus通信协议简介.ppt》由会员分享,可在线阅读,更多相关《教学课件第5部分Modbus通信协议简介.ppt(27页珍藏版)》请在三一办公上搜索。

1、,第5部分 Modbus通信协议简介 5.1 Modbus协议概述 5.2 Modbus协议规范 5.3 Modbus协议在串行链路的主站/从站通信原理 5.4 Modbus协议在串行链路寻址原则 5.5 Modbus帧结构 5.6 串行链路上Modbus帧的两种传输模式 5.7 Modbus协议数据模型 5.8 Modbus通信应用实例,5.1 Modbus协议概述,1.Modbus协议的发展历史(1)Modicon公司提出的通信规约。(2)Modicon公司被施耐德电气公司收购。(3)施耐德将Modbus协议的所有权移交给IDA,成立了Modbus-IDA组织。(4)Modbus-RTPS

2、成为实时以太网标准(IEC61784-2)。(5)Modbus协议已经成为国家标准(GB/T19582-2008)。2.Modbus协议的特点(1)标准、开放用户可以免费、放心地使用Modbus协议。(2)灵活支持多种物理层标准,如RS-232、RS-485、以太网等。(3)简单Modbus的帧格式简单、紧凑,通俗易懂。(4)使用广泛它是一种在工业领域被广为应用的真正开放、标准的网络通讯协议,已经成为一种电子控制器的通用语言,通过此协议控制器之间可以通讯,已成为一种工业标准。不同厂商生产的控制设备通过Modbus协议可以连成通讯网络,在PLC、变频器、电器设备及自动化仪表等领域都广泛应用Mod

3、bus协议。,5.2 Modbus协议规范,1.Modbus技术规范的关系Modbus是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。Modbus是一个请求/应答协议,并且提供功能码规定的服务。Modbus功能码是Modbus请求/应答PDU的元素。,5.2 Modbus协议规范,2.Modbus通信栈Modbus是一种简单客户机/服务器应用协议:客户机能够向服务器发送请求,服务器分析请求,处理请求,向客户机发送应答。,5.3 Modbus协议在串行链路的主站/从站通信原理,Modbus串行链路协议是一个主/从协议。在同一时刻,只有一个主

4、节点连接于总线,一个或多个子节点(最大编号为247)连接于同一个串行总线。Modbus通信总是由主节点发起,子节点在没有收到来自主节点的请求时,从不会发送数据。子节点之间从不会互相通信,主节点在同一时刻只会发起一个 Modbus 事务处理。主站用两种模式向从站发出Modbus请求,分别为单播模式和广播模式。单播模式工作方式:由主站寻址单个从站,从站接收并处理完请求之后,向主站返回一个报文(一个应答)。在这种模式下,一个Modbus 事务处理包含2 个报文,一个是主站的请求,另一个是从站的应答。每个从站必须有唯一的地址(1247),这样才能区别于其它站而被独立地寻址。广播模式工作方式:主站可以向

5、所有的从站发送请求,对于主站广播的请求没有应答的返回,广播请求必须是写命令,所有设备必须接收写功能的广播,地址0被保留用来识别广播通信。,单播模式,广播模式,1.客户机向服务器发请求,服务器分析并处理客户机的请求后返回响应。2.1个主站(客户机),最多247个从站(服务器)。3.可以采用单播模式和广播模式(0地址)。4.产生错误,服务器返回通信异常码。,5.3 Modbus协议在串行链路的主站/从站通信原理,5.4 Modbus协议在串行链路寻址原则,Modbus寻址空间由256个不同地址组成。地址0为广播地址,所有从站必须识别广播地址。Modbus主节点没有地址,只有子节点必须有一个地址。该

6、地址必须在 Modbus串行总线上唯一的。1.请求-响应周期(1)请求主设备查询消息中的功能代码告之被选中的从设备要执行何种功能,数据段包含了从设备要执行功能的任何附加信息。例如:功能代码03是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了一种验证消息内容是否正确的方法。(2)响应如果从设备产生一个正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应,数据段包括了从设备收集的数据(例如寄存器值或状态)。如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代

7、码。错误检测域允许主设备确认消息内容是否可用。,5.5 Modbus帧结构,串行链路上的Modbus帧结构见下图:(1)地址域在 Modbus串行链路,地址域只含有子节点地址,合法的子节点地址为十进制 0 247。每个子设备被赋予1 247范围中的地址。主节点通过将子节点的地址放到报文的地址域对子节点寻址。当子节点返回应答时,它将自己的地址放到应答报文的地址域以让主节点知道哪个子节点在回答。(2)功能码Modbus由公共功能码和用户定义的功能码组成,功能码指明服务器要执行的动作。功能码后面可跟有表示含有请求和响应参数的数据域。(3)错误检验域错误检验域是对报文内容执行 冗余校验 的计算结果。根

8、据不同的传输模式(RTU or ASCII)使用两种不同的计算方法。,1.Modbus事务处理(无差错)当服务器对客户机响应时,它使用功能码域来指示正常(无差错)响应或者出现某种差错(称为异常响应)。对于一个正常响应来说,服务器仅复制原始功能码。,5.5 Modbus帧结构,2.Modbus事务处理(异常响应)对于异常响应,服务器将原始功能码的最高有效位设置逻辑1后返回,异常码指示差错类型。3.Modbus PDU(数据单元)长度Modbus最初在串行链路上的实现(最大RS485 ADU=256字节),限制了Modbus PDU的长度。因此,对串行链路通信来说,Modbus PDU=256-服

9、务器地址(1字节)-CRC(2字节)253字节。因此:RS232/RS485 ADU=253字节+服务器地址(1字节)+CRC(2字节)=256字节。TCP/IP Modbus ADU=253字节+MBAP(7字节)=260字节。,5.5 Modbus帧结构,4.Modbus PDU(数据单元)结构(1)Modbus请求PDUmb_req_pdu=function_code,request_data,function_code-1字节 Modbus功能码,request_data-n字节。(2)Modbus响应PDUmb_rsp_pdu=function_code,response_ data

10、,function_code-1字节 Modbus功能码,response_data-n字节。(3)Modbus异常响应PDUmb_excep_rsp_pdu=function_code,exception_code,function_code-1字节 Modbus功能码+0 x80 exception_code 1字节。,5.5 Modbus帧结构,5.6 串行链路上Modbus帧的两种传输模式,Modbus帧的两种串行传输模式有RTU模式 和ASCII模式。它定义了报文域的位内容在线路上串行的传送。它确定了信息如何打包为报文和解码Modbus串行链路上所有设备的传输模式和串行通信接口的参数

11、必须相同。尽管在特定的领域ASCII模式是要求的,但达到Modbus 备之间的互操作性只有每个设备都有相同的模式。所有设备必须必须实现 RTU 模式,ASCII传输模式是选项。,5.6 串行链路上Modbus帧的两种传输模式,1.RTU传输模式当设备使用 RTU模式在Modbus串行链路通信,报文中每个8位字节含有两个4位十六进制字符。这种模式的主要优点是较高的数据密度,在相同的波特率下比 ASCII 模式有更高的吞吐率。每个报文必须以连续的字符流传送。(1)RTU模式每个字节(11位)的格式编码系统:8位二进制;报文中每个8位字节含有两个4位十六进制字符(09,AF)。Bits per By

12、te:1个起始位;8数据位,首先发送最低有效位;1位作为奇偶校验;1位停止位。注意:一般使用偶校验,其它模式(奇校验,无校验)也可以使用。默认校验模式必须为偶校验。如果无奇偶校验,将传送一个附加的停止位以填充字符帧。见下图:,有奇偶校验的RTU模式位序列,无奇偶校验的RTU模式位序列,5.6 串行链路上Modbus帧的两种传输模式,(2)Modbus报文RTU帧结构由发送设备将Modbus报文构造为带有已知起始和结束标记的帧。这使设备可以在报文的开始接收新帧,并且知道何时报文结束。不完整的报文必须能够被检测到而错误标志必须作为结果被设置。在RTU 模式,报文帧由时长至少为3.5个字符时间的空闲

13、间隔区分。在后续的部分,这个时间区间被称作t3.5。消息发送至少要以3.5个字符时间的停顿间隔开始。传输的第一个域是设备地址。可以使用的传输字符是十六进制的0.9,A.F。网络设备不断侦测网络总线,包括停顿间隔时间内。当第一个域(地址域)接收到,每个设备都进行解码以判断是否发往自己的。在最后一个传输字符之后,一个至少3.5个字符时间的停顿标定了消息的结束。一个新的消息可在此停顿后开始。,5.6 串行链路上Modbus帧的两种传输模式,整个报文帧必须以连续的字符流发送。如果两个字符之间的空闲间隔大于 1.5 个字符时间,则报文帧被认为不完整应该被接收节点丢弃。见下图:注意:RTU接收驱动程序的实

14、现,由于t1.5和t3.5的定时,隐含着大量的对中断的管理。在高通信速率下,这导致CPU负担加重。因此在通信速率等于或低于19200bps时,这两个定时必须严格遵守。对于波特率大于19200bps的情形,应该使用2个定时的固定值:建议的字符间超时时间(t1.5)为750s,帧间的超时时间(t1.5)为1.750ms。,5.6 串行链路上Modbus帧的两种传输模式,(3)Modbus报文RTU传输模式状态图注:主节点 和 子节点 的不同角度均在相同的图中表示。,5.6 串行链路上Modbus帧的两种传输模式,(4)Modbus报文RTU帧的CRC 校验 在 RTU模式包含一个对全部报文内容执行

15、的基于循环冗余校验(CRC)算法的错误检验域。CRC 域检验整个报文的内容。不管报文有无奇偶校验,均执行此检验。CRC包含由两个8位字节组成的一个16位值。CRC域作为报文的最后的域附加在报文之后。计算后,首先附加低字节,然后是高字节,CRC高字节为报文发送的最后一个子节。附加在报文后面的CRC 的值由发送设备计算。接收设备在接收报文时重新计算CRC的值,并将计算结果于实际接收到的 CRC 值相比较。如果两个值不相等,则为错误。CRC的计算,开始对一个16位寄存器预装全,然后将报文中的连续的8位子节对其进行后续的计算。只有字符中的8个数据位参与生成CRC的运算,起始位,停止位和校验位不参与CR

16、C计算。CRC的生成过程中,每个8位字符与寄存器中的值异或。然后结果向最低有效位(LSB)方向移动(Shift)1位,而最高有效位(MSB)位置充零。然后提取并检查LSB:如果LSB 为,1则寄存器中的值与一个固定的预置值异或;如果LSB为 0,则不进行异或操作。这个过程将重复直到执行完8次移位。完成最后一次(第 8 次)移位及相关操作后,下一个8位字节与寄存器的当前值异或,然后又同上面描述过的一样重复8次。当所有报文中子节都运算之后得到的寄存器忠的最终值,就是 CRC。当 CRC 附加在报文之后时,首先附加低字节,然后是高字节。注:CRC 生成的详细示例请参考相关的资料。,5.6 串行链路上

17、Modbus帧的两种传输模式,2.ASCII传输模式当Modbus串行链路的设备被配置为使用ASCII模式通信时,报文中的每个8位子节以两个ASCII字符发送,当通信链路或者设备无法符合RTU模式的定时管理时使用该模式。由于一个子节需要两个字符,此模式比RTU效率低。例如:子节0 x5B会被编码为两个字符,0 x35和0 x42(ASCII 编码0 x35=5,0 x42=B)。(1)ASCII模式每个字节(10 位)的格式编码系统:十六进制,ASCII 字符0-9、A-F。报文中每个ASCII字符含有1个十六进制字符。Bits per Byte:1 起始位;7 数据位;首先发送最低有效位;1

18、位作为奇偶校;1停止位。注意:偶校验是要求的,其它模式(奇校验,无校验)也可以使用。为了保证与其它产品的最大兼容性,同时支持无校验模式是建议的。默认校验模式必须为偶校验。使用无校验要求2个停止位。字符的传送方式:每个字符或字节均由此顺序发送(从左到右),最低有效位(LSB).最高有效位(MSB)。,有奇偶校验的ASCII模式的位序列,无奇偶校验的ASCII模式的位序列,5.6 串行链路上Modbus帧的两种传输模式,(2)Modbus ASCII报文帧结构由发送设备将Modbus报文构造为带有已知起始和结束标记的帧。这使设备可以在报文的开始接收新帧,并且知道何时报文结束。不完整的报文必须能够被

19、检测到而错误标志必须作为结果被设置。报文帧的地址域含有两个字符。在ASCII模式,报文用特殊的字符区分帧起始和帧结束。一个报文必须以一个“冒号”(:)(ASCII 十六进制3A)起始,以“回车-换行”(CRLF)对(ASCII十六进制0D 和0A)结束。对于所有的域,允许传送的字符为十六进制 09,AF(ASCII编码)。设备连续的监视总线上的“冒号”字符。当收到这个字符后,每个设备解码后续的字符一直到帧结束。下图显示了一个典型的报文帧。注:LF 字符可以通过特定的Modbus应用命令(参见Modbus应用协议规范)改变。每个字符子节需要用两个字符编码。因此,为了确保ASCII模式 和RTU模

20、式在Modbus应用级兼容,ASCII数据域最大数据长度为(2x252)是RTU数据域(252)的两倍。必然的,Modbus ASCII帧的最大尺寸为513个字符。报文中字符间的时间间隔可以达到一秒。如果有更大的间隔,则接受设备认为发生了错误。,5.6 串行链路上Modbus帧的两种传输模式,(3)Modbus报文的ASCII输模式状态图 注:“主节点和“子节点”的不同角度均在相同的图中表示。,5.6 串行链路上Modbus帧的两种传输模式,(4)Modbus报文ASCII帧的LRC校验 在ASCII模式,包含一个对全部报文内容执行的,基于纵向冗余校验(LRC)算法的错误检验域。LRC 域检验

21、不包括起始“冒号”和结尾CRLF对的整个报文的内容。不管报文有无奇偶校验,均执行此检验。LRC域为一个子节,包含一个8位二进制值。LRC值由发送设备计算,然后将LRC附在报文后面。接收设备在接收报文时重新计算LRC的值,并将计算结果于实际接收到的LRC值相比较。如果两个值不相等,则为错误。LRC 的计算,对报文中的所有的连续8位字节相加,忽略任何进位,然后求出其二进制补码。执行检验针对不包括起始“冒号”和结尾CRLF对的整个ASCII报文域的内容。在ASCII模式,LRC的结果被 ASCII编码为两个字节并放置于ASCII模式报文帧的结尾,CRLF之前。注:LRC生成的详细示例请参考相关的资料

22、。,5.6 串行链路上Modbus帧的两种传输模式,3.Modbus帧的ASCII和RTU传输模式的特性,5.7 Modbus协议数据模型,Modbus以一系列具有不同特征表格上的数据模型为基础。四个基本表格见下表:对于基本表格中任何一项,协议都允许单个地选择65536个数据项,而且设计那些项的读写操作可以越过多个连续数据项直到数据大小规格限制,这个数据大小规格限制与事务处理功能码有关。很显然,必须将通过Modbus处理的所有数据放置在设备应用存储器中。但是,存储器的物理地址不应该与数据参考混淆。要求仅仅是数据参考与物理地址的链接。Modbus功能码中使用的Modbus逻辑参考数字是以0开始的

23、无符号整数索引。,5.8 Modbus通信应用实例,1.主站发送命令:设备地址 命令号01 起始寄存器地址高8位 起始寄存器地址低8位 读取的寄存器数高8位 读取的寄存器数低8位 CRC校验的低8位 CRC校验的高8位。例:110100130025CRC低CRC高。意义如下:(1)设备地址:在一个485总线上可以挂接多个设备,此处的设备地址表示想和哪一个设备通讯。例子中为想和17号(十进制的17是十六进制的11)通讯。(2)命令号01:读取数字量的命令号固定为01。(3)起始地址高8位、低8位:表示想读取的开关量的起始地址(起始地址为0)。比如例子中的起始地址为19。(4)寄存器数高8位、低8

24、位:表示从起始地址开始读多少个开关量。例子中为37个开关量。(5)CRC校验:是从开头一直校验到此之前。此处需要注意,CRC校验在命令中的高低字节的顺序和其他的相反。从站响应:设备地址 命令号01 返回的字节个数数据1数据2.数据nCRC校验的低8位 CRC校验的高8位。例:110105CD6BB20E1BCRC低CRC高。意义如下:(1)设备地址和命令号和上面的相同。(2)返回的字节个数:表示数据的字节个数,也就是数据1,2.n中的n的值。(3)数据1.n:由于每一个数据是一个8位的数,所以每一个数据表示8个开关量的值,每一位为0表示对应的开关断开,为1表示闭合。比如例子中,表示20号(索引

25、号为19)开关闭合,21号断开,22闭合,23闭合,24断开,25断开,26闭合,27闭合.如果询问的开关量不是8的整倍数,那么最后一个字节的高位部分无意义,置为0。(4)CRC校验同上。,5.8 Modbus通信应用实例,2.题:有某地址为1的从设备,其变量定义如下:例1:主设备用3号命令寻址地址为1的从设备,读取寄存器地址为0000H的量程?主设备命令帧 从设备响应帧由上可得:其量程=3E8H=1000,5.8 Modbus通信应用实例,2.题:有某地址为1的从设备,其变量定义如下:例2:主设备用4号命令寻址地为1的从设备,读取地址为0002H的测量值?主设备命令帧 从设备响应帧由上可得:其测量值=0320H=800,5.8 Modbus通信应用实例,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号