modbus标准协议.doc
《modbus标准协议.doc》由会员分享,可在线阅读,更多相关《modbus标准协议.doc(22页珍藏版)》请在三一办公上搜索。
1、modbus标准协议篇一:Modbus标准通讯协议格式 Modbus通讯协议 Modbus协议 Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化 (Schneider Automation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。此协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。 当在网络上通信时,Modbus协议决定了每个控制器须要知道它们的设备地址,识别按地址
2、发来的消息,决定要产生何种行动。如果需要回应,控制器将生成应答并使用Modbus协议发送给询问方。 Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。标准的Modicon控制器使用RS232C实现串行的Modbus。Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写
3、。 Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。另外,Modbus采用主从方式定时收发数据,在实际使用中如果某Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通。因此,Modbus协议的可靠性较好。 下面我来简单的给大家介绍一下,对于Modbus的ASCII、RTU和TCP协议来说,其中TCP和RTU协议非常类似,我们只要把RTU协议的两个字节的校验码去掉,然后在RTU协议的开始加上5个0和一个6并
4、通过TCP/IP网络协议发送出去即可。所以在这里我仅介绍一下Modbus的ASCII和RTU协议。 下表是ASCII协议和RTU协议进行的比较: 协议 开始标记 结束标记 校验 传输效率 程序处理 ASCII :(冒号) CR,LF LRC 低 直观,简单,易调试 RTU 无 无 CRC 高 不直观,稍复杂 通过比较可以看到,ASCII协议和RTU协议相比拥有开始和结束标记,因此在进行程序处理时能更加方便,而且由于传输的都是可见的ASCII字符,所以进行调试时就更加的直观,另外它的LRC校验也比较容易。但是因为它传输的都是可见的ASCII字符,RTU传输的数据每一个字节ASCII都要用两个字节
5、来传输,比如RTU传输一个十六进制数 0xF9,ASCII就需要传输F9的ASCII码0x39和0x46两个字节,这样它的传输的效率就比较低。所以一般来说,如果所需要传输的数据量较小可以考虑使用ASCII协议,如果所需传输的数据量比较大,最好能使用RTU协议。 下面对两种协议的校验进行一下介绍。 1、LRC校验 LRC域是一个包含一个8位二进制值的字节。LRC值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算LRC,并将它和接收到消息中LRC域中的值比较,如果两值不等,说明有错误。 LRC校验比较简单,它在ASCII协议中使用,检测了消息域中除开始的冒号及结束的回车换行号外的内容
6、。它仅仅是把每一个需要传输的数据按字节叠加后取反加1即可。下面是它的VC代码: BYTE GetCheckCode(const char * pSendBuf, int nEnd)/获得校验码 BYTE byLrc = 0; char pBuf4;int nData = 0; for(i=1; i<end; i+=2) /i初始为1,避开“开始标记”冒号 /每两个需要发送的ASCII码转化为一个十六进制数 pBuf 0 = pSendBuf i; pBuf 1 = pSendBuf i+1; pBuf 2 = '0' sscanf(pBuf,%x,& nData)
7、; byLrc += nData; byLrc = byLrc; byLrc +; return byLrc; 2、CRC校验 CRC域是两个字节,包含一16位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。 CRC是先调入一值是全“1”的16位寄存器,然后调用一过程将消息中连续的8位字节各当前寄存器中的值进行处理。仅每个字符中的8Bit数据对CRC有效,起始位和停止位以及奇偶校验位均无效。 CRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移动,最高有效位以0填充。LSB被提取
8、出来检测,如果LSB为1,寄存器单独和预置的值或一下,如果LSB为0,则不进行。整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相或。最终寄存器中的值,是消息中所有的字节都执行之后的CRC值。 CRC添加到消息中时,低字节先加入,然后高字节。下面是它的VC代码: WORD GetCheckCode(const char * pSendBuf, int nEnd)/获得校验码 WORD wCrc = WORD(0xFFFF);篇二:modbus协议标准(转 载于:wWw.xLTkwj.cOM 小 龙 文档网:modbus标准协议)新版 目 录 一概述.2 二功
9、能码分类.5 三地址分配及功能码使用.6 3.1 开关量输出.6 3.2 开关量输入.6 3.3 模拟量输入.7 3.4 设备标识信息.7 3.5 模拟输出及系统参数.7 3.6 系统参数.20 四功能码描述.23 4.1 01(0x01)读线圈.23 4.2 02(0x02)读离散量输入.24 4.3 03(0x03)读保持寄存器.27 4.4 04(0x04)读输入寄存器.29 4.5 05(0x05)写单个线圈.31 4.6 06(0x06)写单个寄存器.33 4.7 15(0x0F)写多个线圈.35 4.8 16(0x10)写多个保持寄存器.37 4.9 43/14(0x2B/0x0E
10、)读设备标识.39 4.10 65(0x41)读标定参数及相关系统参数.41 4.11 66(0x42)写多个标定参数及相关系统参数.41 五Modbus异常响应.42 六Modbus协议在串行链路上的实现规范.43 6.1 Modbus主/从协议原理.43 6.2 Modbus寻址规则.43 6.3 Modbus帧描述.43 6.4 主站/从站状态图.446.4.1 主站状态图.446.4.2 从站状态图.45 6.5 串行传输模式.466.5.1 Modbus报文RTU帧.476.5.2 CRC校验.48一概述 此次Modbus RTU通讯协议标准的制定参照GB/T 195822008基于
11、Modbus协议的工业自动化网络规范。协议中规定了功能码的使用和数据地址的分配,Modbus通讯协议的实现请参照GB/T 195822008基于Modbus协议的工业自动化网络规范。 GB/T 195822008分为三部分: 第1部分:Modbus应用协议; 第2部分:Modbus协议在串行链路上的实现指南; 第3部分:Modbus协议在TCP/IP上的实现指南。 第1部分描述了Modbus事物处理;第2部分提供了有助于开发者在串行链路上实现Modbus应用层的参考信息;第3部分提供了有助于开发者在TCP/IP上实现Modbus应用层的参考信息。 GB/T 195822008包括两个通信规程中
12、使用的Modbus应用层协议和服务规范: 串行链路上的Modbus 基于TIA/EIA标准:232E和485A; TCP/IP上的Modbus基于IETF标准:RFC793和RFC791。 Modbus是一种请求/应答协议,并提供功能码规定的服务。协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上的Modbus协议映射能够在数据单元(ADU)上引入一些附加字段,如图1.1所示。 ADU PDU 图1.1 通用Modbus通讯帧 在一个正确接收的Modbus ADU中,如果不出现与请求的Modbus功能有关的差错,那么设备至上位机的相应数据字段包括所要求的数据。如果出现
13、与所要求的Modbus功能有关的差错,那么该字段包括一个异常码。当设备对上位机响应时,它使用功能码字段来只是正常(无差错)响应(见图1.2)或出现某中差错(异常响应,见图1.3)。 图1.2 Modbus事务处理(无差错)对于正常响应,设备仅复制原始功能码。对于异常响应,设备将请求PDU中的原始功能的最高有效位设置逻辑1后返回。 图1.3 Modbus事务处理(异常响应) 注意:需要超时管理,以免无期限的等待可能不会出现的应答。 串行通讯链路上Modbus ADU的长度最大为256字节,则Modbus PDU=256-设备地址(1字节)-CRC(2字节)=253字节。 Modbus事务处理:
14、图1.4是Modbus事务处理状态图,描述了在设备上Modbus事务处理的一般过程。一旦设备处理请求,就使用相应的Modbus事务处理生成Modbus响应。根据处理结果,可以建立两种类型的响应: 一个正常的Modbus响应:响应功能码=请求功能码。 一个异常的Modbus响应: 1)用来为上位机提供处理过程中与所发现的差错相关的信息; 2)异常功能码=请求功能码+0x80; 3)提供一个异常码来指示差错原因。图1.4 Modbus事务处理的状态图 注:MB(Modbus Protocol) Modbus协议。二功能码分类 本协议中规定了11种功能码,其功能如表2.1所示: 表2.1 功能码分类
15、表 篇三:Modbus 通讯协议的原理和标准 Modbus 通讯协议的原理和标准 工业控制已从单机控制走向集中监控、集散控制,如今已进入网络时代,工业控制器连网也为网络管理提供了方便。Modbus 就是工业控制器的网络协议中的一种。 一、 Modbus 协议简介 Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的
16、过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。 当在一 Modbus 网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用 Modbus 协议发出。在其它网络上,包含了 Modbus 协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。 1、在 Modbus 网络上转输 标准的 Modbus 口是使用一 RS-232C 兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直
17、接或经由 Modem 组网。 控制器通信使用主从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据做出相应反应。典型的主设备:主机和可编程仪表。典型的从设备:可编程控制器。 主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。Modbus 协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、一错误检测域。 从设备回应消息也由 Modbus 协议构成, 包括确认要行动的域、 任何要返回的数据、 和一错误检测域。如果在消息接收过程中发生一错误,或从设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- modbus 标准 协议
链接地址:https://www.31ppt.com/p-4138042.html