基于嵌入式ARM的MODBU协议的研究与实现1

上传人:xins****2008 文档编号:61307139 上传时间:2022-03-11 格式:DOCX 页数:45 大小:648.42KB
返回 下载 相关 举报
基于嵌入式ARM的MODBU协议的研究与实现1_第1页
第1页 / 共45页
基于嵌入式ARM的MODBU协议的研究与实现1_第2页
第2页 / 共45页
基于嵌入式ARM的MODBU协议的研究与实现1_第3页
第3页 / 共45页
点击查看更多>>
资源描述
论文题目: 基于嵌入式ARM的MODBU协议的研究与实现专 业: 电子信息工程学 生: 孙玉鑫 签名:指导教师: 孙弋教授 签名:摘 要 电子技术的迅速发展极大的改善了人们的生活,彻底的改变了世界的面貌。在工业控制领域现场总线控制系统(FCS)的出现和发展彻底改变了传统的可编程控制器(PLC)和分散式控制系统(DCS)基本结构。现场总线系统技术极大地简化了传统控制系统繁琐且技术含量较低的布线工作量,使各种并行通信转向串行通信,使系统检测和控制单元的分布更趋合理。Modbus通信协议作为现场总线的一种,具有数据传输量大、可扩展性好、可靠性好等优点,它目前已成为自动控制和通信领域使用非常广泛的通信语言。Linux操作系统以其开源、免费、易于移植,支持众多的处理器而得到了广泛的应用。ARM处理器具有成本低、功耗低、易开发和性能好等特点,其中的S3C2410性价比、可靠性较高可作为本系统的硬件平台。 本论文首先介绍了Modbus协议的规范,协议的通信原理以及对协议的具体实现过程。之后对嵌入式Linux操作系统平台的建立、构造以及内核的制作、移植、烧录等过程也进行了的阐述,最后实现了基于RS485接口的Modbus串口编程。【关键字】 ARM 嵌入式Linux Modbus总线 串口通信【论文类型】设计型Title: Research and Implementation of Modbus 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 the 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 system 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 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 development 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 system 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.绪 论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硬件平台介绍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结论396.2展望397致 谢408参考文献411.绪 论1.1引言 现场总线是近年来迅速发展起来的一种工业数据总线,按照IEC的解释:现场总线是指安装在制造或过程区域的现场装置与控制室内的自动装置之间的数字式、串行、多点通信的数据总线。它主要解决工业现场的智能化仪器仪表、控制器、执行机构等现场设备间的数字通信以及这些现场控制设备和高级控制系统之间的信息传递问题。它被广泛的应用于制造业、流程工业、交通、楼宇、电力等方面的自动化系统中。现场总线通信标准具有公开、一致的特点,从而使系统具备开放性,设备间具有互可操作性;现场总线功能块与结构的规范化设计使相同功能的设备间具有互换性;现场总线将控制功能下放到现场,使控制系统结构具备高度的分散性。一对双绞线上可挂接多个控制设备, 便于节省安装费用;节省维护开销;提高了系统的可靠性;现场总线控制系统的出现彻底改变了传统的可编程控制器和分散式控制系统的基本结构。Modbus 协议作为通用工业标准的一种,得到了广泛的应用,有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。1.2课题研究背景与现状现场总线正在逐步的替代分散控制系统,但目前现场总线的成本较高,并不是所有设备都能一下子改用现场总线控制系统。但是随着技术的进步,现场总线成本的下降,再加上之前的控制系统的各种瓶颈,现场总线正在迅速的增长。目前多种现场总线竞争激烈,可编程控制器和分散式控制系统还仍在很多方面发挥着主导作用。然而在应用工程方面,各行业的现场总线应用工程发展迅速,但现在尚无全能的现场总线。Modbus通信协议具有数据传输量大、实时性好、侦错能力强等优点,它目前已成为自控和通信领域使用非常广泛的通信语言。Modbus应用协议不断拓展,已经将串行链路、高速令牌网络、Web Sever、TCPIP等关键技术引入到Modbus应用协议解决方案中,形成了Modbus应用协议族。ModbusTCP将Modbus帧简单地嵌入到TCP帧中,特别适合将其应用于嵌入式系统。在国内,现场总线技术已经起步好几年了,多种现场总线在国内展开激烈竞争,竞争的重点是应用工程实际运用中,但成功的例子并不多。国内自己开发的现场总线产品也开始投入市场,在国民经济快速发展中,现场总线的市场需求不断增大。从长远看,积极与国外现场总线基金会建立联系,获得国外的最新技术信息, 掌握国外成熟技术也是加快我国现场总线发展的一个重要的方向。Modbus总线在多种场合取得了应用,例如工矿企业,道路控制,火电厂等,但有的还处于理论研究阶段,真正大量应用与实际的Modbus还不多,因此研究Modbus协议的应用还有重要意义。 1.3研究内容本设计主要对Modbus通信协议进行了具体的研究和实现。该设计基于嵌入式Linux操作平台,分别从硬件和软件两方面讨论了Modbus的具体实现过程。硬件主要以三星公司的S3C2410芯片为主,包括2410核心板和外围电路,尤其对其中串口驱动电路的设计进行了较深入的探讨。软件部分包括Linux操作系统的移植,Modbus协议的工作流程图及其具体移植过程。具体包括以下内容Modbus主从协议的原理、两中传输模式、较验方式;ARM2410硬件的介绍;Linux操作系统移植;Modbus到Linux系统的移植过程。1.4论文组织与安排 本文主要研究了嵌入式Linux系统中Modbus现场总线协议的移植过程。本文首先综述了Modbus总线协议的结构及其通信原理;然后介绍嵌入式Linux系统的移植过程和驱动的开发过程;最后讨论了Modbus的实现过程。文章共分为六个章节:第一章是绪论部分,首先是前言,引入主题。然后简述了现场总线的发展现状,说明选择Modbus的原因。然后分析了系统的意义和论文的基本结构。第二章主要介绍Modbus现场总线协议的具体内容。首先说明了现场总线技术的优点及应用方面。然后具体介绍了Modbus在串行链路上的实现方法及应用层协议。第三章 重点介绍嵌入式硬件平台及其开发过程,重点介绍了S3C2410硬件平台的构成,及其串口电路的设计和Modbus的拓扑结构。第四章重点介绍了嵌入式Linux操作系统的优势,及其具体的移植过程。第五章介绍了Modbus的一个具体协议FreeModbus的实现过程和测试过程。第六章为结论与展望。分别对本文做个总结并展望了对Modbus深入研究和应用美好的前景。第七章为致谢。在做毕业设计的这段时间内,得到了太多人的帮助,在这里衷心的谢谢他们。第八章为参考文献。2. MODBUS现场总线综述2.1现场总线的实质和优点现场总线是应用在生产现场、在微机化测量控制设备之间实现双向串行多节点数字通信的协议, 是新一代智能仪表的通信标准,是面向工厂底层自动化及信息集成的数字化网络技术。根据国际电工委员会(IEC)的标准和现场总线基金会的定义“现场总线是指安装在制造或过程区域的现场装置与控制室内的自动装置之间的数字式、串行、多点通信的数据总线。”由于现场总线适应了工业控制系统向分散化、网络化和智能化的发展趋势, 它一经产生便成为全球工业自动化技术的热点, 受到了全世界的普遍关注。目前现场总线标准仍未统一,很多公司推出其各自的现场总线技术,但彼此的开放性和互操作性还不理想。现场总线类型主要有:FF、ProfiBus、ControlNet、P-NET、InterBus、CAN和Modbus等。这些总线各有各的规范,互不兼容。现场总线控制系统有如下主要优点:1) 全数字化。在采用现场总线控制系统的企业中,用于生产管理的局域网能够与用于自动控制的现场总线网络紧密衔接。此外,数字化信号固有的高精度、抗干扰特性也能提高控制系统的可靠性。2) 全分布。在现场总线控制系统中,各现场设备有足够的自主性,它们彼此之间相互通信,完全可以把各种控制功能分散到各种设备中,实现真正的分布式控制。3) 双向传输。对于传统的4-20mA电流信号,一条线只能传递一路信号。现场总线设备在一条线上则可以向上传递传感器信号,也可以向下传递控制信号。4) 自诊断。现场总线仪表本身具有自诊断功能,而且这种诊断信息可以送到中央控制室,以便于维护,而这在只能传递一路信号的传统仪表中是做不到的。5) 节省布线及控制室空间。传统的控制系统每个仪表都需要一条线连到中央控制室,在中央控制室装备一个搭配线架。而在FCS系统中多台现场设备可串行连接在一条总线上,只需较少的线进入中央控制室,这样就大量节省了布线费用,同时也降低了中央控制室的造价。6) 多功能仪表。数字双向传输方式使得现场总线仪表可以摆脱传统仪表功能单一的制约,可以在一个仪表中集成多种功能,做成多变量变送器,甚至集检测、运算、控制于一体的变送控制器。7) 开放性。1999年底现场总线协议已被IEC批准正式成为国际标准,从而使现场总线成为一种开放的技术。8) 互操作性。现场总线标准保证不同厂家的产品可以互操作,这样就可以在一个企业中由用户根据产品的性能、价格选用不同厂商的产品,集成在一起,避免了传统控制系统中必须选用同一厂家的产品限制,促进有效的竞争,降低控制系统的成本。9) 智能化与自治性。现场总线设备具有很高的智能,能处理各种参数、运行状态信息及故障信息,甚至能在部件、网络故障的情况下独立工作,大大提高了整个控制系统的可靠性。现场总线突破了DCS系统中因专用通信网络的封闭造成的缺陷,采用开放化、标准化的解决方案,把来自不同厂商而遵守同一协议规范的自动化设备连接成控制网络,组合成各类控制系统,实现综合自动化的各种功能。其突出特点是开放性、分散性与数字通信。2.2 MODBUS现场总线协议概述MODBUS协议是莫迪康公司1978年发明用于电子控制器进行控制和通信的协议。Modbus目前在自动化领域使用非常广泛,原因之一是它纯粹是一个软协议,不依赖于任何通讯介质和通讯设备。它不是为计算机和计算机通讯而设计的,因而它更适用与控制器和控制器之间的通讯。Modbus通信协议具有数据传输量大、实时性好、侦错能力强等优点,它目前已成为自控和通信领域使用非常广泛的通信语言。通过该协议,不同厂商生产的控制设备可以连接成工业网络,实现集中监控。目前工业中常用的Modbus通信分为两种,一种是经由RS232兼容串行接口(或通过RS232485转换器转换成RS485接口)组成Modbus网络进行通信,另一种通过以太网结合TCPIP协议组成ModbusTCP网络进行通信。协议规定总线上有一个主机,一个或多个从机,每个从机分配唯一的地址。工作时可以采用命令/应答的通讯方式。MODBUS通讯总是由主站发起请求,所有的从设备都接收并解析其中的地址信息,与地址不匹配的从站抛弃该请求帧,继续侦听总线;只有与地址相匹配的从设备对该请求帧进行进一步解析,并回应应答帧。若解析后校验的结果出错,从站向主机发送出错信号。一般情况下,当主机收到出错应答或在用户设定的时间内仍未收到响应报文时,主站就会立即重发信息给从设备。这种一问一答的通信模式,大大提高了通信的正确率。从站没有收到来自总站的请求时,将不会自动发送数据。从站之间也不能互相通信。在某一时刻主站只能启动一个MODBUS事务处理。 RS485 Master Slave 图2.1 Modbus点对点通信 Master Modbus RS485 RS485 RS485 RS485 Slave Slave Slave 图2.2Modbus点对多点通信 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 应用层报文传输协议,提供了连接于总线或网络的设备之间的客户机/服务器通信。在Modbus 串行链路上客户机的功能由主节点提供,而服务器功能由子节点实现。下图给出了Modbus 串行通信栈对应于7 层ISO/OSI模型的一般关系。图2.3 Modbus协议和ISO/OSI模型的对应关系 2.3.2 Modbus主站/从站协议原理Modbus 串行链路协议是一个主从协议。在同一时刻,只有一个主节点连接于总线,一个或多个子节点(最大编号为247 ) 连接于同一个串行总线。Modbus 通信总是由主节点发起。子节点在没有收到来自主节点的请求时,从不会发送数据。子节点之间从不会互相通信。主节点在同一时刻只会发起一个Modbus 事务处理。主节点以两种模式对子节点发出Modbus请求:1) 单播模式:主节点以特定地址访问某个子节点,子节点接到并处理完请求后,子节点向主节点返回一个报文(一个 “应答”)。在这种模式, 一个 Modbus 事务处理包含2 个报文: 一个来自主节点的请求, 一个来自子节点的应答。每个子节点必须有唯一的地址(1 到247),这样才能区别于其它节点被独立的寻址。图2.4 单播模式2)广播模式:主节点向所有的子节点发送请求。对于主节点广播的请求没有应答返回。广播请求一般用于写命令。所有设备必须接受广播模式的写功能。地址0是专门用于表示广播数据的。 图2.5 多播模式2.3.3两种串行传输模式串行传输两种模式为: RTU模式和ASCII 模式。两种模式分别定义了报文域的位内容在线路上串行的传送方式。它确定了信息如何打包为报文和解码。同一条Modbus 串行链路总线上所有设备的传输模式 (和串行口参数) 必须相同。尽管在特定的领域ASCII 模式是要求的,但达到Modbus 设备之间的互操作性只有每个设备都有相同的模式: 所有设备必须必须实现RTU 模式。ASCII 传输模式是选项。设备应该由用户设成期望的模式,RTU 或ASCII。默认设置必须为RTU 模式。2.3.3.1 ASCII传输模式当 Modbus 串行链路的设备被配置为使用ASCII (American Standard Code for Information Interchange) 模式通信时, 报文中的每个 8 位子节以两个ASCII 字符发送。当通信链路或者设备无法符合RTU 模式的定时管理时使用该模式。ASCII 模式每个字节( 10 位 ) 的格式为 :编码系统: 十六进制,ASCII 字符 0-9, A-F。报文中每个ASCII 字符含有1个十六进制字符1 起始位7 数据位, 首先发送最低有效位1 位作为奇偶校验1 停止位偶校验是要求的,但其它模式( 奇校验,无校验) 也可以使用。为了保证与其它产品的最大兼容性,同时支持无校验模式是建议的。默认校验模式必须为偶校验。使用无校验要求2个停止位。字符串行传送:每个字符或字节均由此顺序发送(从左到右):图2.6 ASCII传输模式位序列设备配置为奇校验、偶校验或无校验都可以接受。如果无奇偶校验,将传送一个附加的停止位以填充字符帧:图2.7 ASCII传输模式位序列位序列(无校验)帧检验域:串行模式下需要保证报文的正确性,因此要进行帧校验。ASCII模式的错误校验采用纵向冗余校验(LRC-Longitudinal Redundancy Check-LRC)。报文以一个冒号(:)字符开始,即ASCII码3AH;并且以一个回车换行符(CRLF)结束,即ASCII码0DH和0AH。网络设备不断检测网络总线上的“:”字符,当一个冒号被接收到时,每个设备都解码下个域(地址域)来查明是否是被访问的设备。ASCII报文帧格式如下图所示:起始位设备地址功能代码数据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 附在报文后面。接收设备在接收报文时重新计算LRC 的值,并将计算结果于实际接收到的LRC值相比较。如果两个值不相等,则为错误。LRC 的计算, 对报文中的所有的连续8 位字节相加,忽略任何进位,然后求出其二进制补码。执行检验针对不包括起始“冒号”和结尾CRLF对的整个ASCII 报文域的内容。在ASCII模式,LRC的结果被ASCII编码为两个字节并放置于ASCII模式报文帧的结尾,CRLF之前。ASCII报文帧的要求在下面的状态图中综合。主节点和子节点的不同角度均在下图中表示:图2.9 ASCII传输模式状态图“空闲” 态是没有发送和接收报文要处理的正常状态。每次接收到: 字符表示新的报文的开始。如果在一个报文的接收过程中收到该字符,则当前地报文被认为不完整并被丢弃。而一个新的接收缓冲区被重新分配。检测到帧结束后,完成LRC 计算和检验。然后,分析地址域以确定帧是否发往此设备,如果不是,则丢弃此帧。为了减少接收处理时间,地址域可以在一接到就分析,而不需要等到整个帧结束。2.3.3.2 RTU传输模式当设备使用RTU (Remote Terminal Unit) 模式在Modbus 串行链路通信, 报文中每个8位字节含有两个4 位十六进制字符。这种模式的主要优点是较高的数据密度,在相同的波特率下比ASCII 模式有更高的吞吐率。每个报文必须以连续的字符流传送。RTU 模式每个字节( 11 位 ) 的格式为 :编码系统: 8位二进制报文中每个8 位字节含有两个4 位十六进制字符(09,AF)Bits per Byte: 1 起始位8 数据位, 首先发送最低有效位1 位作为奇偶校验1 停止位其中,奇偶校验位默认为偶检验。每个字符或字节均由此顺序发送(从左到右):最低有效位(LSB) . . . 最高有效位(MSB),如下图:图2.10 RTU模式位序列为保证最大兼容性,也可选择奇校验或无校验,如无奇偶校验则用一个停止位填充。如下图:图2.11 RTU模式位序列(无校验)RTU报文帧格式如图所示。典型的RTU报文帧没有起始位,也没有停止位,而是以至少3.5个字符时间的停顿间隔标志一帧的开始或结束。报文帧由地址域、功能域、数据域和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 帧中间有超过1.5个字符的停顿则出错在RTU 模式包含一个对全部报文内容执行的,基于循环冗余校验 (CRC- Cyclical Redundancy Checking) 算法的错误检验域。CRC 域检验整个报文的内容。不管报文有无奇偶校验,均执行此检验。CRC 包含由两个8 位字节组成的一个16 位值。CRC 域作为报文的最后的域附加在报文之后。计算后,首先附加低字节,然后是高字节。CRC高字节为报文发送的最后一个子节。附加在报文后面的CRC 的值由发送设备计算。接收设备在接收报文时重新计算CRC 的值,并将计算结果于实际接收到的CRC 值相比较。如果两个值不相等,则为错误。CRC 的计算, 开始对一个16 位寄存器预装全1。然后将报文中的连续的8 位子节对其进行后续的计算。只有字符中的8个数据位参与生成CRC 的运算,起始位,停止位和校验位不参与CRC计算。CRC 的生成过程中, 每个 8位字符与寄存器中的值异或。然后结果向最低有效位(LSB)方向移动(Shift) 1位,而最高有效位(MSB)位置充零。然后提取并检查LSB:如果LSB 为1, 则寄存器中的值与一个固定的预置值异或;如果LSB 为 0, 则不进行异或操作。这个过程将重复直到执行完8 次移位。完成最后一次(第8 次)移位及相关操作后,下一个8位字节与寄存器的当前值异或,然后又同上面描述过的一样重复8 次。当所有报文中子节都运算之后得到的寄存器忠的最终值,就是CRC。当 CRC 附加在报文之后时,首先附加低字节,然后是高字节。下图表示了对RTU 传输模式状态图的描述。主节点和子节点的不同角度均在下图中表示:图2.15 RTU模式状态图从 初始 态到 “空闲” 态转换需要t3.5 定时超时: 这保证帧间延迟。 “空闲” 态是没有发送和接收报文要处理的正常状态。 在RTU 模式, 当没有活动的传输的时间间隔达3.5个字符长时,通信链路被认为在“空闲”态。当链路空闲时, 在链路上检测到的任何传输的字符被识别为帧起始。链路变为 活动 状态。然后, 当链路上没有字符传输的时间间隔个达到t3.5 后,被识别为帧结束。 检测到帧结束后,完成CRC 计算和检验。然后,分析地址域以确定帧是否发往此设备,如果不是,则丢弃此帧。为了减少接收处理时间,地址域可以在一接到就分析,而不需要等到整个帧结束。这样,CRC 计算只需要在帧寻址到该节点(包括广播帧)时进行。2.4 MODBUS应用层协议2.4.1 MODBUS功能码MODBUS功能码是MODBUS请求/应答PDU(Protocol Description Unit)的元素。PDU中用一个字节编码MODBUS功能码域,有效的码字范围是十进制1255,其中128255为异常相应保留。MODBUS定义了三类功能码:(1)公共功能码:由Modbus.org确认的,被确切定义并保证唯一的功能码。此类功能码在MB IETF RFC中归档,可进行一致性测试。(2)用户定义的功能码:十进制区间6572和100110为用户可自定义的功能码。在此区间内,用户无需Modbus组织的任何批准就可以选择和实现一个功能码,但不能保证被选功能码的使用是唯一的。用户可启动RFC将改变引入公共分类中,并且指配一个新的功能码。(3)保留功能码:某些公司在传统产品上使用的功能码,不作为公共使用。已定义的Modbus公共功能码按其功能可分为数据访问类和异常响应及诊断类两部分。数据访问类功能码实现对输入离散量、线圈的位访问,对寄存器、FIFO队列的16位访问以及对文件记录的读写。诊断类功能码提供了读异常状态、设备标识等功能。下图给出了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报告从站ID17-11读设备识别码43142B封装接口传输43-2B图2.16 Modbus公共功能码定义2.4.2 MODBUS异常响应 当客户机设备向服务器设备发送请求时,主站的询问可能导致下列四种事件:(1) 服务器设备接收到无通信错误的请求,并且可以正常地处理询问,那么服务器设备将返回一个正常的响应。(2) 由于通讯错误,服务器没有接收到请求,那么不能返回响应。客户机程序将视之为超时。(3) 服务器接收到请求,但是检测到一个通信错误(奇偶检验、LRC、CRC等),那么不能返回响应。客户机程序将视之为超时。(4) 服务器接收到无通信错误的请求,但不能处理这个请求(例如,请求读一个不存在的寄存器),服务器将返回一个异常响应,通知客户机错误的实际情况。异常响应报文时通过功能码域和数据域区别于正常响应。对于功能码域,正常响应的服务器复制原始请求的功能码,即所有功能码的MSB都为0;异常响应的服务器设置功能码的MSB为1,即使得异常响应中的功能码值比正常响应中的功能码值高80H。对于数据域,正常响应的服务器将返回请求中要求的信息;异常响应的服务器返回异常码。客户机通过响应报文中功能码的MSB识别异常响应,并能够检测数据域中的异常码。图给出了Modbus异常码及其含义。 代码名称含义01非法功能对于服务器来说,询问中接收到的功能码是不允许的操作02非法数据地址对于服务器来说,询问中接收到的数据地址是不允许的地址:特别是,寄存器编号和传输长度的组合式无效的03非法数据值对于服务器来说,询问数据中包含的是不允许的值,这个值指示了组合请求中剩余结构方面的错误,例如:隐含长度是不正确的;04从站设备故障当服务器正在试图执行请求操作时,产生不可恢复的差错05确认服务器已经接受请求,并且正在进行处理,但是需要较长的处理时间;返回这个响应以防止在客户机中产生超时错误06从属设备忙服务器正在处理较长时间的程序命令;客户机应该稍后重新传送报文08存储器偶性错误与读和写文件记录功能码一起使用,服务器试图读文件记录,但是在存储器中发展一个奇偶性校验错误0A不可用网关路径与网关一起使用,指示网关不能为处理请求分配输入端口至输出端口的内部通信路径;通常意味着网关是错误配置的或过载的0B网关目标设备响应失败与网关一起使用,指示没有目标设备中获得响应,通常意味着设备未在网络中图2.17 Modbus异常码及其含义3.嵌入式硬件平台3.1嵌入式简介本系统主要以ARM9嵌入式处理器为硬件平台,嵌入式Linux为核心系统,主要在RS485串口实现Modbus协议。3.1.1嵌入式系统特点嵌入式是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。它是计算机技术、通信技术、半导体技术、微电子技术、语音图像数据传输技术甚至传感器等先进技术与具体应用对象相结合后的更新换代产品。其主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成。嵌入式计算机在应用数量上远远超过了各种通用计算机,反映当代最新技术的先进水平。与通用型计算机系统相比,嵌入式系统功耗低、可靠性高;功能强大、性价比高;实时性强,支持多任务;占用空间小,效率高;面向特定应用,可根据需要灵活定制。这就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。嵌入式系统和PC系统有显著的不同,有着自己的特点,这些特点归纳起来主要有以下几点:1)嵌入式系统体积小、功耗低、专用性强。与Pc系统相比,嵌入式系统都是为不同的应用而专门定做的,它可以把Pc机需要用很多的板卡完成的任务聚集在一张板卡甚至是一个芯片中,大大缩小了体积和功耗,而且具有很强的专用性2)软件一般固化在芯片上。一般Pc系统作为开发嵌入式系统的工具,但是开发结束后,嵌入式系统就是可以不依赖于Pc系统而独立运行,所以它的软件需要固化在处理器芯片或者存储器芯片(如Flash)中。3)嵌入式系统市场分散。Pc系统王国被少数几个公司所垄断,如它的体系结构绝大部分是Intel的X86体系结构,而芯片生产商集中在Intel、AMD、Cyrix;它的操作系统则被Microsoft一家垄断。在嵌入式系统领域,却充满竞争、机遇与创新,没有哪一家公司垄断处理器和操作系统,呈现百家齐鸣、白花开放景象。例如:微软的WinCE,开放源代码的ucOSII。Linux,VxWorks等。4)嵌入式系统软硬件结合紧密。由于受到体积、功耗等因素的限制,嵌入式系统的存储器和外设资源有限,在嵌入式系统软硬件体系结构内部,各层次、模块之间的耦合度比通用计算机强,这是嵌入式系统要求高效的结果。5)嵌入式系统开发需要有专门的开发工具和开发环境。3.1.2嵌入式操作系统嵌入式操作系统就是支持嵌入式系统工作的操作系统,是嵌入式应用软件的基础和开发平台。它是一段嵌入在目标代码中的软件,用户的其他应用程序都建立在操作系统之上,它在知识体系和技术本质上与通用操作系统没有太大的区别,一般用于比较复杂的嵌入式系统软件开发中。由于大多数嵌入式系统应用在实时环境中,因此嵌入式系统一般具有实时特点。实时操作系统又分为硬实时和软实时,硬实时系统有一个刚性的、不可改变的时间限制,它不允许任何超出时间限制的情况出现,一旦出现,将产生系统崩溃的后果;软实时系统可以容忍超时,它将以降低系统的性能为代价。典型的嵌入式操作系统有嵌入式Linux、uC0S、Windows CE、VxWorks、Palm OS、QNX等。1)嵌入式Linux。Linux是操作系统中发展最快、应用最广的,究其原因,主要是源代码开放、可以从网上免费下载、有遍布世界的软件人才在不断维护和改进。Linux无疑是一种极好的选择方案,这就促使各种嵌入式Linux版本不断出现。2)uC0S是一款典型的实时操作系统,现在发展到第二版uC0SII,代码公开、结构清晰、可移植性好、可裁减、可固化。3)Windows cE Microsoft开发,是一款从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统,但是价格很高。4)VxWorks是WindRiver公司专门为实时嵌入式系统设计开发的操作系统,具有极好的性能,是一款非常优秀的实时系统,但是昂贵的价格往往使很多用户望而却步。5)Palm OS是一种32位的嵌入式操作系统,用于掌上电脑。6)QNX是一款实时操作系统,具有很好的伸缩性。3.1.3嵌入式的开发过程在嵌入式开发过程中有宿主机和目标机的角色之分:宿主机是执行编译、链接、定址过程的计算机;目标机指运行嵌入式软件的硬件平台。首先须把应用程序转换成可以在目标机上运行的二进制代码。这一过程包含三个步骤:编译、链接、定址。编译过程由交叉编译器实现。所谓交叉编译器就是运行在一个计算机平台上并为另一个平台产生代码的编译器。常用的交叉编译器有GNU CC+(gcc)。编译过程产生的所有目标文件被链接成一个目标文件,称为链接过程。定址过程会把物理存储器地址指定给目标文件的每个相对偏移处。该过程生成的文件就是可以在嵌入式平台上执行的二进制文件。嵌入式开发过程中另一个重要的步骤是调试目标机上的应用程序。嵌入式调试采用交叉调试器,一般采用宿主机-目标机的调试方式,它们之间由串行口线或以太网或BDM线相连。交叉调试有任务级、源码级和汇编级的调试,调试时需将宿主机上的应用程序和操作系统内核下载到目标机的RAM中或直接烧录到目标机的FLASH中。目标监控器是调试器对目标机上运行的应用程序进行控制的代理(Debugger Agent),事先被固化在目标机的Flash、ROM中,在目标机上电后自动启动,并等待宿主机方调试器发来的命令,配合调试器完成应用程序的下载、运行和基本的调试功能,将调试信息返回给宿主机。3.2硬件平台介绍在工业控制领域有核心处理芯片品种多,技术都比较成熟,稳定性好,给我们的选择余地比较大。8位单片机以51内核单片机为代表,16位单片机以TI MSP430为代表,32位单片机以ARM7、ARM9内核嵌入式处理器为代表。51内核单片机是目前应用最广泛,工程师涉足人数最多的单片机,工业控制的产品大多数是基于51内核单片机开发的,它的最大优点是技术成熟,电磁兼容性好,价格便宜,开发成本低,开发的人数比较多。它的最大的缺点是寄存器位数少、可寻址空间范围小,不利于做一些比较复杂的算法运算,或者一些外围设备比较多的应用;ARM7处理器采用3级流水线结构,且主频较低,目前已逐渐退出主流应用场合。ARM9处理器,采用了更多的晶体管,能够达到两倍以上于ARM7处理器的处理能力。这种处理能力的提高是通过增加时钟频率和减少指令执行周期实现的。最后选用了市场上比较流行的基于ARM9内核的S3C2410微处理器,它是工业级芯片,具有非常丰富的片上功能。图3.1 S3C2410开发板系统硬件结构示意图 本设计是基于S3C2410芯片实现的,S3C2410是SAMSUNG公司针对工业级和民用级等多种应用场合设计的一款高性价比的16/32位RISC嵌入式微处理器其内部除了包含ARM 公司设计的16/32位ARM920T RISC处理内核外,S3C2410还包括众多比较重要的功能模块,片内带有MMU (Memory Manage Unit)内存管理单元,故S3C2410支持Windows CE ,嵌入式Linux和EPOC32等多种嵌入式操作系统。它集成了大量的功能单元,包括: 内部1.8V,存储器3.3V,外部I/O 3.3V,16KB数据Cache,16KB指令Cache, MMU。 内置外部存储器控制器(SDRAM控制和芯片选择逻辑)。 LCD控制器,一个LCD专业DMA。 4个带外部请求线的DMA。 3个通用异步串行端口(IrDA1.0,16-Byte Tx FIFO and 16-Byte Rx FIFO),2通道SPI。 一个多主I2C总线,一个I2S总线控制器。 SD主接口版本1.0和多媒体卡协议版本2.11兼容。 两个USB HOST,一个USB DEVICE(VER1.1)。 4个PWM定时器和一个内部定时器。 看门狗定时器。 117个通用I/O。 56个中断源。 24个外部中断。 电源控制模式:标准、慢速、休眠、掉电。 8通道10位ADC和触摸屏接口。 带日历功能的实时时钟。 芯片内置PLL。 设计用于手持设备和通用嵌入式系统。 16/32位RISC体系结构,使用ARM920T CPU核的强大指令集。 带MMU的先进的体系结构支持WinCE、EPOC32、Linux。 指令缓存(Cache)、数据缓存、写缓存和物理地址TAG RAM,减小了对主存储器带宽和性能的影响。 ARM920T CPU核支持ARM调试的体系结构。3.3 RS485模块3.3.1 串口基本类型介绍1)RS-232串行接口标准 目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。RS-232采取非平衡传输方式,即所谓单端通讯。 由于其发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为37k。所以RS-232适合本地设备之间的通信。2). RS-422与RS-485串行接口标准 2.1). 平衡传输 RS-422、RS-485与RS-232不一样,数据信号采用差分传输方式,也称作平衡传输,使用一对双绞线,将其中一线定义为A,另一线定义为B,通常情况下,发送驱动器A、B之间的正电平在+2+6V,是一个逻辑状态,负电平在-2-6V,是另一个逻辑状态。另有一个信号地C,在RS-485中还有一“使能”端,而在RS-422中这是可用可不用的。“使能”端是用于控制发送驱动器与传输线的切断与连接。当“使能”端起作用时,发送驱动器处于高阻状态,称作“第三态”,即它是有别于逻辑“1”与“0”的第三态。 接收器也作与发送端相同的规定,收、发端通过平衡双绞线将AA与BB对应相连,当在收端AB之间有大于+200mV的电平时,输出正逻辑电平,小于-200mV时,输出负逻辑电平。接收器接收平衡线上的电平范围通常在200mV至6V之间。2.2)RS-422电气规定 RS-422标准全称是“平衡电压数字接口电路的电气特性”,它定义了接口电路的特性。典型的RS-422是四线接口。实际上还有一根信号地线,共5根线。其DB9连接器引脚定义。由于接收器采用高输入阻抗和发送驱动器比RS232更强的驱动能力,故允许在相同传输线上连接多个接收节点,最多可接10个节点。即一个主设备(Master),其余为从设备(Salve),从设备之间不能通信,所以RS-422支持点对多点的双向通信。接收器输入阻抗为4k,故发端最大负载能力是104k+100(终接电阻)。RS-422四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必须的信号交换均可以按软件方式(XON/XOFF握手)或硬件方式(一对单独的双绞线)实现。 RS-422的最大传输距离为1219米,最大传输速率为10Mb/s。其平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能达到最大传输距离。只有在很短的距离下才能获得最高速率传输。一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。 RS-422需要一终接电阻,要求其阻值约等于传输电缆的特性阻抗。在短距离传输时可不需终接电阻,即一般在300米以下不需终接电阻。终接电阻接在传输电缆的最远端。 3.2)RS-485电气规定 由于RS-485是从RS-422基础上发展而来的,所以RS-485许多电气规定与RS-422相仿。如都采用平衡传输方式、都需要在传输线上接终接电阻等。RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信,而采用四线连接时,与RS-422一样只能实现点对多点的通信,即只能有一个主(Master)设备,其余为从设备,但它比RS-422有改进, 无论四线还是二线连接方式总线上可多接到32个设备。 RS-485与RS-422的不同还在于其共模输出电压是不同的,RS-485是-7V至+12V之间,而RS-422在-7V至+7V之间,RS-485接收器最小输入阻抗
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 财经资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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