《基于嵌入式ARM的MODBU协议的研究与实现1.docx》由会员分享,可在线阅读,更多相关《基于嵌入式ARM的MODBU协议的研究与实现1.docx(45页珍藏版)》请在三一办公上搜索。
1、论文题目: 基于嵌入式ARM的MODBU协议的研究与实现专 业: 电子信息工程学 生: 孙玉鑫 签名:指导教师: 孙弋教授 签名:摘 要 电子技术的迅速发展极大的改善了人们的生活,彻底的改变了世界的面貌。在工业控制领域现场总线控制系统(FCS)的出现和发展彻底改变了传统的可编程控制器(PLC)和分散式控制系统(DCS)基本结构。现场总线系统技术极大地简化了传统控制系统繁琐且技术含量较低的布线工作量,使各种并行通信转向串行通信,使系统检测和控制单元的分布更趋合理。Modbus通信协议作为现场总线的一种,具有数据传输量大、可扩展性好、可靠性好等优点,它目前已成为自动控制和通信领域使用非常广泛的通信
2、语言。Linux操作系统以其开源、免费、易于移植,支持众多的处理器而得到了广泛的应用。ARM处理器具有成本低、功耗低、易开发和性能好等特点,其中的S3C2410性价比、可靠性较高可作为本系统的硬件平台。 本论文首先介绍了Modbus协议的规范,协议的通信原理以及对协议的具体实现过程。之后对嵌入式Linux操作系统平台的建立、构造以及内核的制作、移植、烧录等过程也进行了的阐述,最后实现了基于RS485接口的Modbus串口编程。【关键字】 ARM 嵌入式Linux Modbus总线 串口通信【论文类型】设计型Title: Research and Implementation of Modbus
3、 Protocol on ARM-Based Embedded System Major: Electronic information engineeringName: Sun Yuxin Signature:Supervisor: Professor Sun Yi Signature:AbstractThe rapid development of electronic technology has greatly improved peoples lives, completely changed the world. The emergence and development in t
4、he field of industrial control field bus control system (FCS) completely changed the basic structure of the traditional programmable logic controller (PLC) and distributed control systems (DCS). Field Bus System greatly simplifies the workload of the tedious and low-tech effort traditional control s
5、ystem wiring, which turns a variety of parallel communication to serial communication, at the same time makes the distribution of the system detection and control unit more reasonable. As a member of field bus ,Modbus protocol has been widely used in the field of automatic control and communication
6、because of its good capacity of data transmission ,and its expandability and reliability.Linux is open-source, free, easy to port, and supporting a large number of processors, so it is widely used, particularly in the embedded field. ARM processor with its low cost, low power consumption, easy devel
7、opment and good performance characteristics, which S3C2410 cost-effective, high reliability can be used as the hardware platform. First,the Modbus protocol specification, protocol communications principles and a specific implementation of the Modbus protocol are introduced Embedded Linux operating s
8、ystem platform, after the establishment, structure and core production, transplant, burn and other processes have also been elaborated, and finally to achieve interface based on RS485 Modbus serial programming.【Keywords】ARM Embedded Linux Modbus BUS Serial Communication 【Type of Thesis】 Design目 录1.绪
9、 论11.1引言11.2课题研究背景与现状11.3研究内容21.4论文组织与安排22. MODBUS现场总线综述42.1现场总线的实质和优点42.2 MODBUS现场总线协议概述52.3 Modbus协议在串行链路上的实现62.3.1 Modbus串行链路协议OSI模型对应关系62.3.2 Modbus主站/从站协议原理72.3.3两种串行传输模式82.4 MODBUS应用层协议142.4.1 MODBUS功能码142.4.2 MODBUS异常响应153.嵌入式硬件平台183.1嵌入式简介183.1.1嵌入式系统特点183.1.2嵌入式操作系统193.1.3嵌入式的开发过程193.2硬件平台介
10、绍203.3 RS485模块223.3.1 串口基本类型介绍223.3.2 串口电路设计233.4系统通讯的拓扑结构244.Linux系统的移植264.1 嵌入式Linux的优势264.2Linux系统的移植274.2.1建立交叉编译环境274.2.2Bootloader的设计与实现274.2.3Linux内核的移植294.2.4文件系统原理304.2.5 Busybox移植315.freeModbus的移植335.1 FreeMODBUS简介335.2 实现FreeModbus协议所需要的软/硬件需求335.3 freemodbus的移植345.4 测试结果376.结论与展望396.1结论3
11、96.2展望397致 谢408参考文献411.绪 论1.1引言 现场总线是近年来迅速发展起来的一种工业数据总线,按照IEC的解释:现场总线是指安装在制造或过程区域的现场装置与控制室内的自动装置之间的数字式、串行、多点通信的数据总线。它主要解决工业现场的智能化仪器仪表、控制器、执行机构等现场设备间的数字通信以及这些现场控制设备和高级控制系统之间的信息传递问题。它被广泛的应用于制造业、流程工业、交通、楼宇、电力等方面的自动化系统中。现场总线通信标准具有公开、一致的特点,从而使系统具备开放性,设备间具有互可操作性;现场总线功能块与结构的规范化设计使相同功能的设备间具有互换性;现场总线将控制功能下放到
12、现场,使控制系统结构具备高度的分散性。一对双绞线上可挂接多个控制设备, 便于节省安装费用;节省维护开销;提高了系统的可靠性;现场总线控制系统的出现彻底改变了传统的可编程控制器和分散式控制系统的基本结构。Modbus 协议作为通用工业标准的一种,得到了广泛的应用,有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。1.2课题研究背景与现状现场总线正在逐步的替代分散控制系统,但目前现场总线的成本较高,并不是所有设备都能一下子改用现场总线控制系统。但是随着技术的进步,现场总线成本的下降,再加上之前的控制系统的各种瓶颈,现场总线正在迅速的增长。目前多种现场总线竞争激烈,可编程控制器和分散式控
13、制系统还仍在很多方面发挥着主导作用。然而在应用工程方面,各行业的现场总线应用工程发展迅速,但现在尚无全能的现场总线。Modbus通信协议具有数据传输量大、实时性好、侦错能力强等优点,它目前已成为自控和通信领域使用非常广泛的通信语言。Modbus应用协议不断拓展,已经将串行链路、高速令牌网络、Web Sever、TCPIP等关键技术引入到Modbus应用协议解决方案中,形成了Modbus应用协议族。ModbusTCP将Modbus帧简单地嵌入到TCP帧中,特别适合将其应用于嵌入式系统。在国内,现场总线技术已经起步好几年了,多种现场总线在国内展开激烈竞争,竞争的重点是应用工程实际运用中,但成功的例
14、子并不多。国内自己开发的现场总线产品也开始投入市场,在国民经济快速发展中,现场总线的市场需求不断增大。从长远看,积极与国外现场总线基金会建立联系,获得国外的最新技术信息, 掌握国外成熟技术也是加快我国现场总线发展的一个重要的方向。Modbus总线在多种场合取得了应用,例如工矿企业,道路控制,火电厂等,但有的还处于理论研究阶段,真正大量应用与实际的Modbus还不多,因此研究Modbus协议的应用还有重要意义。 1.3研究内容本设计主要对Modbus通信协议进行了具体的研究和实现。该设计基于嵌入式Linux操作平台,分别从硬件和软件两方面讨论了Modbus的具体实现过程。硬件主要以三星公司的S3
15、C2410芯片为主,包括2410核心板和外围电路,尤其对其中串口驱动电路的设计进行了较深入的探讨。软件部分包括Linux操作系统的移植,Modbus协议的工作流程图及其具体移植过程。具体包括以下内容Modbus主从协议的原理、两中传输模式、较验方式;ARM2410硬件的介绍;Linux操作系统移植;Modbus到Linux系统的移植过程。1.4论文组织与安排 本文主要研究了嵌入式Linux系统中Modbus现场总线协议的移植过程。本文首先综述了Modbus总线协议的结构及其通信原理;然后介绍嵌入式Linux系统的移植过程和驱动的开发过程;最后讨论了Modbus的实现过程。文章共分为六个章节:第
16、一章是绪论部分,首先是前言,引入主题。然后简述了现场总线的发展现状,说明选择Modbus的原因。然后分析了系统的意义和论文的基本结构。第二章主要介绍Modbus现场总线协议的具体内容。首先说明了现场总线技术的优点及应用方面。然后具体介绍了Modbus在串行链路上的实现方法及应用层协议。第三章 重点介绍嵌入式硬件平台及其开发过程,重点介绍了S3C2410硬件平台的构成,及其串口电路的设计和Modbus的拓扑结构。第四章重点介绍了嵌入式Linux操作系统的优势,及其具体的移植过程。第五章介绍了Modbus的一个具体协议FreeModbus的实现过程和测试过程。第六章为结论与展望。分别对本文做个总结
17、并展望了对Modbus深入研究和应用美好的前景。第七章为致谢。在做毕业设计的这段时间内,得到了太多人的帮助,在这里衷心的谢谢他们。第八章为参考文献。2. MODBUS现场总线综述2.1现场总线的实质和优点现场总线是应用在生产现场、在微机化测量控制设备之间实现双向串行多节点数字通信的协议, 是新一代智能仪表的通信标准,是面向工厂底层自动化及信息集成的数字化网络技术。根据国际电工委员会(IEC)的标准和现场总线基金会的定义“现场总线是指安装在制造或过程区域的现场装置与控制室内的自动装置之间的数字式、串行、多点通信的数据总线。”由于现场总线适应了工业控制系统向分散化、网络化和智能化的发展趋势, 它一
18、经产生便成为全球工业自动化技术的热点, 受到了全世界的普遍关注。目前现场总线标准仍未统一,很多公司推出其各自的现场总线技术,但彼此的开放性和互操作性还不理想。现场总线类型主要有:FF、ProfiBus、ControlNet、P-NET、InterBus、CAN和Modbus等。这些总线各有各的规范,互不兼容。现场总线控制系统有如下主要优点:1) 全数字化。在采用现场总线控制系统的企业中,用于生产管理的局域网能够与用于自动控制的现场总线网络紧密衔接。此外,数字化信号固有的高精度、抗干扰特性也能提高控制系统的可靠性。2) 全分布。在现场总线控制系统中,各现场设备有足够的自主性,它们彼此之间相互通信
19、,完全可以把各种控制功能分散到各种设备中,实现真正的分布式控制。3) 双向传输。对于传统的4-20mA电流信号,一条线只能传递一路信号。现场总线设备在一条线上则可以向上传递传感器信号,也可以向下传递控制信号。4) 自诊断。现场总线仪表本身具有自诊断功能,而且这种诊断信息可以送到中央控制室,以便于维护,而这在只能传递一路信号的传统仪表中是做不到的。5) 节省布线及控制室空间。传统的控制系统每个仪表都需要一条线连到中央控制室,在中央控制室装备一个搭配线架。而在FCS系统中多台现场设备可串行连接在一条总线上,只需较少的线进入中央控制室,这样就大量节省了布线费用,同时也降低了中央控制室的造价。6) 多
20、功能仪表。数字双向传输方式使得现场总线仪表可以摆脱传统仪表功能单一的制约,可以在一个仪表中集成多种功能,做成多变量变送器,甚至集检测、运算、控制于一体的变送控制器。7) 开放性。1999年底现场总线协议已被IEC批准正式成为国际标准,从而使现场总线成为一种开放的技术。8) 互操作性。现场总线标准保证不同厂家的产品可以互操作,这样就可以在一个企业中由用户根据产品的性能、价格选用不同厂商的产品,集成在一起,避免了传统控制系统中必须选用同一厂家的产品限制,促进有效的竞争,降低控制系统的成本。9) 智能化与自治性。现场总线设备具有很高的智能,能处理各种参数、运行状态信息及故障信息,甚至能在部件、网络故
21、障的情况下独立工作,大大提高了整个控制系统的可靠性。现场总线突破了DCS系统中因专用通信网络的封闭造成的缺陷,采用开放化、标准化的解决方案,把来自不同厂商而遵守同一协议规范的自动化设备连接成控制网络,组合成各类控制系统,实现综合自动化的各种功能。其突出特点是开放性、分散性与数字通信。2.2 MODBUS现场总线协议概述MODBUS协议是莫迪康公司1978年发明用于电子控制器进行控制和通信的协议。Modbus目前在自动化领域使用非常广泛,原因之一是它纯粹是一个软协议,不依赖于任何通讯介质和通讯设备。它不是为计算机和计算机通讯而设计的,因而它更适用与控制器和控制器之间的通讯。Modbus通信协议具
22、有数据传输量大、实时性好、侦错能力强等优点,它目前已成为自控和通信领域使用非常广泛的通信语言。通过该协议,不同厂商生产的控制设备可以连接成工业网络,实现集中监控。目前工业中常用的Modbus通信分为两种,一种是经由RS232兼容串行接口(或通过RS232485转换器转换成RS485接口)组成Modbus网络进行通信,另一种通过以太网结合TCPIP协议组成ModbusTCP网络进行通信。协议规定总线上有一个主机,一个或多个从机,每个从机分配唯一的地址。工作时可以采用命令/应答的通讯方式。MODBUS通讯总是由主站发起请求,所有的从设备都接收并解析其中的地址信息,与地址不匹配的从站抛弃该请求帧,继
23、续侦听总线;只有与地址相匹配的从设备对该请求帧进行进一步解析,并回应应答帧。若解析后校验的结果出错,从站向主机发送出错信号。一般情况下,当主机收到出错应答或在用户设定的时间内仍未收到响应报文时,主站就会立即重发信息给从设备。这种一问一答的通信模式,大大提高了通信的正确率。从站没有收到来自总站的请求时,将不会自动发送数据。从站之间也不能互相通信。在某一时刻主站只能启动一个MODBUS事务处理。 RS485 Master Slave 图2.1 Modbus点对点通信 Master Modbus RS485 RS485 RS485 RS485 Slave Slave Slave 图2.2Modbus
24、点对多点通信 Modbus数据以帧为单位进行传输,每帧数据包括送地址、控制信息、发送数据、校验信息等。2.3 Modbus协议在串行链路上的实现2.3.1 Modbus串行链路协议OSI模型对应关系在物理层,Modbus 串行链路系统可以使用不同的物理接口(RS485、RS232)。最常用的是TIA/EIA-485 (RS485) 两线制接口,也可以实现RS485 四线制接口。当只需要短距离的点到点通信时,TIA/EIA-232-E (RS232) 串行接口也可以使用。位于OSI 模型第7 层的Modbus 应用层报文传输协议,提供了连接于总线或网络的设备之间的客户机/服务器通信。在Modbu
25、s 串行链路上客户机的功能由主节点提供,而服务器功能由子节点实现。下图给出了Modbus 串行通信栈对应于7 层ISO/OSI模型的一般关系。图2.3 Modbus协议和ISO/OSI模型的对应关系 2.3.2 Modbus主站/从站协议原理Modbus 串行链路协议是一个主从协议。在同一时刻,只有一个主节点连接于总线,一个或多个子节点(最大编号为247 ) 连接于同一个串行总线。Modbus 通信总是由主节点发起。子节点在没有收到来自主节点的请求时,从不会发送数据。子节点之间从不会互相通信。主节点在同一时刻只会发起一个Modbus 事务处理。主节点以两种模式对子节点发出Modbus请求:1)
26、 单播模式:主节点以特定地址访问某个子节点,子节点接到并处理完请求后,子节点向主节点返回一个报文(一个 “应答”)。在这种模式, 一个 Modbus 事务处理包含2 个报文: 一个来自主节点的请求, 一个来自子节点的应答。每个子节点必须有唯一的地址(1 到247),这样才能区别于其它节点被独立的寻址。图2.4 单播模式2)广播模式:主节点向所有的子节点发送请求。对于主节点广播的请求没有应答返回。广播请求一般用于写命令。所有设备必须接受广播模式的写功能。地址0是专门用于表示广播数据的。 图2.5 多播模式2.3.3两种串行传输模式串行传输两种模式为: RTU模式和ASCII 模式。两种模式分别定
27、义了报文域的位内容在线路上串行的传送方式。它确定了信息如何打包为报文和解码。同一条Modbus 串行链路总线上所有设备的传输模式 (和串行口参数) 必须相同。尽管在特定的领域ASCII 模式是要求的,但达到Modbus 设备之间的互操作性只有每个设备都有相同的模式: 所有设备必须必须实现RTU 模式。ASCII 传输模式是选项。设备应该由用户设成期望的模式,RTU 或ASCII。默认设置必须为RTU 模式。2.3.3.1 ASCII传输模式当 Modbus 串行链路的设备被配置为使用ASCII (American Standard Code for Information Interchang
28、e) 模式通信时, 报文中的每个 8 位子节以两个ASCII 字符发送。当通信链路或者设备无法符合RTU 模式的定时管理时使用该模式。ASCII 模式每个字节( 10 位 ) 的格式为 :编码系统: 十六进制,ASCII 字符 0-9, A-F。报文中每个ASCII 字符含有1个十六进制字符1 起始位7 数据位, 首先发送最低有效位1 位作为奇偶校验1 停止位偶校验是要求的,但其它模式( 奇校验,无校验) 也可以使用。为了保证与其它产品的最大兼容性,同时支持无校验模式是建议的。默认校验模式必须为偶校验。使用无校验要求2个停止位。字符串行传送:每个字符或字节均由此顺序发送(从左到右):图2.6
29、ASCII传输模式位序列设备配置为奇校验、偶校验或无校验都可以接受。如果无奇偶校验,将传送一个附加的停止位以填充字符帧:图2.7 ASCII传输模式位序列位序列(无校验)帧检验域:串行模式下需要保证报文的正确性,因此要进行帧校验。ASCII模式的错误校验采用纵向冗余校验(LRC-Longitudinal Redundancy Check-LRC)。报文以一个冒号(:)字符开始,即ASCII码3AH;并且以一个回车换行符(CRLF)结束,即ASCII码0DH和0AH。网络设备不断检测网络总线上的“:”字符,当一个冒号被接收到时,每个设备都解码下个域(地址域)来查明是否是被访问的设备。ASCII报
30、文帧格式如下图所示:起始位设备地址功能代码数据LRC校验结束位1个字符2个字符2个字符0-2*252个字符2个字符2个字符CR、LF 图2.8 ASCII报文帧必然的,Modbus ASCII 帧的最大尺寸为513个字符。在 ASCII 模式,包含一个对全部报文内容执行的,基于纵向冗余校验 (LRC Longitudinal Redundancy Checking) 算法的错误检验域。LRC 域检验不包括起始“冒号”和结尾CRLF对的整个报文的内容。不管报文有无奇偶校验,均执行此检验。LRC 域为一个子节,包含一个8 位二进制值。LRC 值由发送设备计算,然后将LRC 附在报文后面。接收设备在
31、接收报文时重新计算LRC 的值,并将计算结果于实际接收到的LRC值相比较。如果两个值不相等,则为错误。LRC 的计算, 对报文中的所有的连续8 位字节相加,忽略任何进位,然后求出其二进制补码。执行检验针对不包括起始“冒号”和结尾CRLF对的整个ASCII 报文域的内容。在ASCII模式,LRC的结果被ASCII编码为两个字节并放置于ASCII模式报文帧的结尾,CRLF之前。ASCII报文帧的要求在下面的状态图中综合。主节点和子节点的不同角度均在下图中表示:图2.9 ASCII传输模式状态图“空闲” 态是没有发送和接收报文要处理的正常状态。每次接收到: 字符表示新的报文的开始。如果在一个报文的接
32、收过程中收到该字符,则当前地报文被认为不完整并被丢弃。而一个新的接收缓冲区被重新分配。检测到帧结束后,完成LRC 计算和检验。然后,分析地址域以确定帧是否发往此设备,如果不是,则丢弃此帧。为了减少接收处理时间,地址域可以在一接到就分析,而不需要等到整个帧结束。2.3.3.2 RTU传输模式当设备使用RTU (Remote Terminal Unit) 模式在Modbus 串行链路通信, 报文中每个8位字节含有两个4 位十六进制字符。这种模式的主要优点是较高的数据密度,在相同的波特率下比ASCII 模式有更高的吞吐率。每个报文必须以连续的字符流传送。RTU 模式每个字节( 11 位 ) 的格式为
33、 :编码系统: 8位二进制报文中每个8 位字节含有两个4 位十六进制字符(09,AF)Bits per Byte: 1 起始位8 数据位, 首先发送最低有效位1 位作为奇偶校验1 停止位其中,奇偶校验位默认为偶检验。每个字符或字节均由此顺序发送(从左到右):最低有效位(LSB) . . . 最高有效位(MSB),如下图:图2.10 RTU模式位序列为保证最大兼容性,也可选择奇校验或无校验,如无奇偶校验则用一个停止位填充。如下图:图2.11 RTU模式位序列(无校验)RTU报文帧格式如图所示。典型的RTU报文帧没有起始位,也没有停止位,而是以至少3.5个字符时间的停顿间隔标志一帧的开始或结束。报
34、文帧由地址域、功能域、数据域和CRC校验域构成。所有字符由16进制0-9,A-F组成。RTU报文帧格式如图所示:地址功能码数据CRC校验8位8位0252*8位16位 图2.12 RTU报文帧有上图知Modbus RTU 帧最大为256 字节。在RTU模式中,整个报文帧必须作为一个连续的数据流传输。如果在报文帧完成之前有超过1.5个字符时间停顿间隔发生,接收设备将刷新未完成的报文并假定下一个字节僵尸一个新报文的地址域。同样地,如果一个新报文在小于3.5个字符时间内紧跟前一个报文开始,接收设备将认为它是前一个报文的延续。这些都会导致传输的报文错误。 图2.13 正常传输的RTU报文帧图2.14 帧
35、中间有超过1.5个字符的停顿则出错在RTU 模式包含一个对全部报文内容执行的,基于循环冗余校验 (CRC- Cyclical Redundancy Checking) 算法的错误检验域。CRC 域检验整个报文的内容。不管报文有无奇偶校验,均执行此检验。CRC 包含由两个8 位字节组成的一个16 位值。CRC 域作为报文的最后的域附加在报文之后。计算后,首先附加低字节,然后是高字节。CRC高字节为报文发送的最后一个子节。附加在报文后面的CRC 的值由发送设备计算。接收设备在接收报文时重新计算CRC 的值,并将计算结果于实际接收到的CRC 值相比较。如果两个值不相等,则为错误。CRC 的计算, 开
36、始对一个16 位寄存器预装全1。然后将报文中的连续的8 位子节对其进行后续的计算。只有字符中的8个数据位参与生成CRC 的运算,起始位,停止位和校验位不参与CRC计算。CRC 的生成过程中, 每个 8位字符与寄存器中的值异或。然后结果向最低有效位(LSB)方向移动(Shift) 1位,而最高有效位(MSB)位置充零。然后提取并检查LSB:如果LSB 为1, 则寄存器中的值与一个固定的预置值异或;如果LSB 为 0, 则不进行异或操作。这个过程将重复直到执行完8 次移位。完成最后一次(第8 次)移位及相关操作后,下一个8位字节与寄存器的当前值异或,然后又同上面描述过的一样重复8 次。当所有报文中
37、子节都运算之后得到的寄存器忠的最终值,就是CRC。当 CRC 附加在报文之后时,首先附加低字节,然后是高字节。下图表示了对RTU 传输模式状态图的描述。主节点和子节点的不同角度均在下图中表示:图2.15 RTU模式状态图从 初始 态到 “空闲” 态转换需要t3.5 定时超时: 这保证帧间延迟。 “空闲” 态是没有发送和接收报文要处理的正常状态。 在RTU 模式, 当没有活动的传输的时间间隔达3.5个字符长时,通信链路被认为在“空闲”态。当链路空闲时, 在链路上检测到的任何传输的字符被识别为帧起始。链路变为 活动 状态。然后, 当链路上没有字符传输的时间间隔个达到t3.5 后,被识别为帧结束。
38、检测到帧结束后,完成CRC 计算和检验。然后,分析地址域以确定帧是否发往此设备,如果不是,则丢弃此帧。为了减少接收处理时间,地址域可以在一接到就分析,而不需要等到整个帧结束。这样,CRC 计算只需要在帧寻址到该节点(包括广播帧)时进行。2.4 MODBUS应用层协议2.4.1 MODBUS功能码MODBUS功能码是MODBUS请求/应答PDU(Protocol Description Unit)的元素。PDU中用一个字节编码MODBUS功能码域,有效的码字范围是十进制1255,其中128255为异常相应保留。MODBUS定义了三类功能码:(1)公共功能码:由Modbus.org确认的,被确切定
39、义并保证唯一的功能码。此类功能码在MB IETF RFC中归档,可进行一致性测试。(2)用户定义的功能码:十进制区间6572和100110为用户可自定义的功能码。在此区间内,用户无需Modbus组织的任何批准就可以选择和实现一个功能码,但不能保证被选功能码的使用是唯一的。用户可启动RFC将改变引入公共分类中,并且指配一个新的功能码。(3)保留功能码:某些公司在传统产品上使用的功能码,不作为公共使用。已定义的Modbus公共功能码按其功能可分为数据访问类和异常响应及诊断类两部分。数据访问类功能码实现对输入离散量、线圈的位访问,对寄存器、FIFO队列的16位访问以及对文件记录的读写。诊断类功能码提
40、供了读异常状态、设备标识等功能。下图给出了Modbus公共功能码的定义。 功能数据类型作用对象定义功能码码子码(16进制)数据访问位访问离散量输入读离散量输入02-02内部位或物理线圈读线圈01-01写单个线圈05-05写多个线圈15-0F16位访问输入寄存器读输入寄存器04-04内部存储器或物理输出寄存器读多个寄存器03-03写单个寄存器06-06写多个寄存器16-10读/写多个寄存器23-17屏蔽写寄存器22-16读FIFO队列24-18文件记录访问读文件记录20614写文件记录21615诊断读异常状态08-诊断0800-18-获得公用事件计数器11-0B获得公用事件记录12-0C报告从站
41、ID17-11读设备识别码43142B封装接口传输43-2B图2.16 Modbus公共功能码定义2.4.2 MODBUS异常响应 当客户机设备向服务器设备发送请求时,主站的询问可能导致下列四种事件:(1) 服务器设备接收到无通信错误的请求,并且可以正常地处理询问,那么服务器设备将返回一个正常的响应。(2) 由于通讯错误,服务器没有接收到请求,那么不能返回响应。客户机程序将视之为超时。(3) 服务器接收到请求,但是检测到一个通信错误(奇偶检验、LRC、CRC等),那么不能返回响应。客户机程序将视之为超时。(4) 服务器接收到无通信错误的请求,但不能处理这个请求(例如,请求读一个不存在的寄存器)
42、,服务器将返回一个异常响应,通知客户机错误的实际情况。异常响应报文时通过功能码域和数据域区别于正常响应。对于功能码域,正常响应的服务器复制原始请求的功能码,即所有功能码的MSB都为0;异常响应的服务器设置功能码的MSB为1,即使得异常响应中的功能码值比正常响应中的功能码值高80H。对于数据域,正常响应的服务器将返回请求中要求的信息;异常响应的服务器返回异常码。客户机通过响应报文中功能码的MSB识别异常响应,并能够检测数据域中的异常码。图给出了Modbus异常码及其含义。 代码名称含义01非法功能对于服务器来说,询问中接收到的功能码是不允许的操作02非法数据地址对于服务器来说,询问中接收到的数据
43、地址是不允许的地址:特别是,寄存器编号和传输长度的组合式无效的03非法数据值对于服务器来说,询问数据中包含的是不允许的值,这个值指示了组合请求中剩余结构方面的错误,例如:隐含长度是不正确的;04从站设备故障当服务器正在试图执行请求操作时,产生不可恢复的差错05确认服务器已经接受请求,并且正在进行处理,但是需要较长的处理时间;返回这个响应以防止在客户机中产生超时错误06从属设备忙服务器正在处理较长时间的程序命令;客户机应该稍后重新传送报文08存储器偶性错误与读和写文件记录功能码一起使用,服务器试图读文件记录,但是在存储器中发展一个奇偶性校验错误0A不可用网关路径与网关一起使用,指示网关不能为处理请求分配输入端口至输出端口的内部通信路径;通常意味着网关是错误配置的或过载的0B网关目标设备响应失败与网关一起使用,指示没有目标设备中获得响应,通常意味着设备未在网络中图2.17 Modbus异常码及其含义3.嵌入式硬件平台3.1嵌入式简介本系统主要以ARM9嵌入式处理器为硬件平台,嵌入式Linux为核心系统,主要在RS485串口实现Modbus协议。3.1.1嵌入式系统特点嵌入式是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。它是计算机技术、通信技术
链接地址:https://www.31ppt.com/p-1667816.html