已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
装订线大连海事大学毕业论文二一四年六月基于ARM的以太网网关设计与实现专业班级: 通信工程3班 姓 名: 计平元 指导教师: 毕 胜 信息科学技术学院摘 要CAN总线作为现场总线的一种,与一般的通信总线相比,具有突出的可靠性、实时性和灵活性。以太网作为构筑互连网的一种最普及的局域网技术,具有较好的稳定性和传输数据的高效性等特点,还能够支持互连网络的远程访问。但是它不能直接和工业设备相连进行通信。将两种不同适用范围的网络进行连接以利用各自的优点实现对工业生产的监控和管理,就需要通过网关来实现。本文在深入的研究了CAN2.0协议、TCP/IP协议的特点及实现原理后,提出了一种以太网和CAN总线互联的网关模型。以SBC6845ARM开发板(搭载内核为ARM9的AT91SAM9G45处理器)为硬件平台,以嵌入式Linux为软件平台,利用GEDIT工具进行软件设计,采用4个线程分别处理上行数据和下行数据的存储和转发,对CAN总线协议和TCP/IP协议进行转换,实现了以太网与CAN总线的互联。从而允许在控制室内对现场中的设备进行访问、监控与管理。测试结果表明,本设计实现了系统设计功能。关键词:Linux;CAN总线;以太网;网关ABSTRACTCAN bus as a fieldbus, has outstanding reliability, timeliness and flexibility, compared with the general communication bus. Ethernet Internet constructed as one of the most popular LAN technology, has not only high efficiency and good stability characteristics of the transmission data, but also the interconnection network for remote access. But it can not be directly connected to industrial equipment to communicate. Connectting the scope of application of two different network in order to exploit their advantages to achieve industrial production monitoring and management, we need to realize through the gateway.In this paper, in-depth study of the CAN2.0 agreement and implementation of the principle characteristics of TCP/IP protocol, it has made an Ethernet and CAN bus interconnection gateway model. With the hardware platform of SBC6845ARM development board (equipped with the AT91SAM9G45 ARM9 processor kernel) and and the software platform of embedded Linux, using GEDIT tools for software design, using four threads to process store and forward data uplink and downlink data, converting CAN bus protocol and TCP / IP protocol, it achieves the interconnection of Ethernet and CAN bus. Thus, we can visit the fieldequipment, monitor and manage it in the control room. The test results show that the design of the system achieves design function. Keywords: Linux, CAN BUS, Ethernet, Gateway目 录第1章绪论11.1课题研究的背景及意义11.2 CAN总线和以太网技术的研究现状11.2.1 CAN总线的研究现状11.2.2以太网的研究现状21.3本文的主要工作2第2章CAN总线和以太网简介32.1 CAN总线简介32.2 以太网简介8第3章系统硬件设计93.1 硬件总体方案设计93.2 硬件电路设计113.2.1 核心处理器113.2.2 CAN总线电路123.2.3 以太网电路13第4章系统软件设计164.1 嵌入式系统特点及开发流程164.2 CAN总线模块软件设计174.3 以太网模块软件设计174.3.1 TCP客户端建立连接184.3.2 以太网发送和接收数据184.4 网关应用程序设计184.4.1 双循环缓冲机制194.4.2 网关多线程设计204.4.3 网关协议转换程序设计21第5章系统测试245.1网口连接测试245.2网关工作状态测试24第6章结论及展望28参考文献29致 谢30IV基于ARM的以太网网关设计与实现基于ARM的以太网网关设计与实现第1章 绪论1.1课题研究的背景及意义现场总线是应用在生产现场、在微机化测量控制设备之间实现双向串行多节点数字通信的系统,也被称为开放式、数字化、多点通信的底层控制网络。现场总线是当今自动化技术发展的热点之一,被誉为自动化领域的计算机局域网。CAN总线作为现场总线的一种,由于采用了许多新技术及独特的设计,与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性1。以太网(Ethernet)作为互连网的一种最普及的局域网技术,具有较好的技术稳定性和传输数据的高效性等特点,此外,以太网还可以方便的与干线网络连接,整个控制系统还能够支持互连网络的远程访问。因此,使用以太网作为工业控制的上层网络有着十分明显的优势。本文设计并实现了一种基于嵌入式平台的CAN总线和以太网互联的网关,有效解决了底层现场总线与上层控制系统的互联问题。1.2 CAN总线和以太网技术的研究现状1.2.1 CAN总线的研究现状现场总线技术包含范围比较广泛,并不只是指单一的通信总线,而是指一个整个的系统,系统中包含智能化生产设备,将现场总线应用到这些设备中,使原本简单的普通设备升级成数字通信智能设备。现在的工业现场总线控制网络技术已经发展的比较成熟,在各个领域也都得到了广泛的应用,虽然没有统一的标准,但是几种著名的总线都已经做的比较成熟能够适应工业生产的需要,在和以太网技术共同应用时,将现场信息经网关传到以太网上然后再传递到控制室,实现对生产现场的监控与管理2。现场总线的当前发展状况:多种总线共存、总线的应用领域不断拓展、各种总线以企业为支撑、各种总线相继成为自己国家或地区标准、以太网成为新的热点。本文正是针对现场总线及以太网的当前发展趋势,市场上CAN和以太网互联的产品还不是很成熟的状况提出来的。1.2.2以太网的研究现状以太网作为一种应用广泛的局域网已经成为了我们生活中必不可少的一部分,它以其自身的高可靠性、方便易用等优点获得了广大用户的青睐。工业以太网是一个新的概念,它指的是在复杂的生产现场中应用以太网技术,这就要求针对工业现场的环境的恶劣性对现有的网络进行适当的改进,主体部分不动,针对工业控制系统的特点对以太网技术做出改进,使之既能够适应物理上复杂恶劣的现场环境,又能够满足工业控制在通信实时性、数据安全等方面的要求。当然,现阶段的技术还无法将网络直接连接到现场的智能化仪表与设备上,因为设备的种类太多,各自遵循的标准也不统一,而以太网技术的最初的发展也不是针对工业控制来设计的,所以在现阶段情况下,还是要将以太网通过网关与适用于工业控制的控制局域网总线连接起来实现以太网与工业设备之间的数据通信,实现到对生产现场进行监控和管理的目的。以太网现在已经应用很广泛,技术方面也很成熟,然而在工业控制中,现场总线的种类和技术标准却有很多,并且各种总线之间一般情况下无法相互兼容,每一个开发厂商都有自己的标准,这种情况导致了如果一个客户选择了某一种总线用在工业控制系统中就很难改变,很难再用另一种现场总线来代替,对设备及控制系统的升级不利,有可能会影响到生产效益3。因此,针对这种情况,有必要提出一种新的技术标准,就是基于以太网技术,并且将这种技术扩展到工业中使之在将来能够发展成为适用于工业现场生产环境的统一的技术标准。现在,国际上相关组织也开始着手做这项工作,制定出了一些工业以太网的标准,在未来直接将以太网技术应用到工业生产现场,取代现在的现场总线技术,这是一个必然的趋势,在这方面需要做的工作还有很多。现阶段的现场仪表设备之间的通信还是离不开现场总线,还是需要将以太网通过网关转换连接进来与设备仪表进行通信,实现上层监控网络和现场控制网络的一体化。1.3 本文的主要工作本文的主要任务是以嵌入式Linux为软件平台,以ATMEL公司的AT91SAM9G45芯片为微处理器,以深圳市天漠科技有限公司的SBC6845ARM开发板为硬件平台,在对CAN总线、以太网工作原理深入分析的基础上设计嵌入式CAN-Ethernet网关转换器,实现CAN总线和以太网的互联通信。本文中,前两章概述了国内外CAN总线和以太网的发展现状并简要的介绍了这两种通信协议及其特点;第三章介绍了系统的硬件结构及原理;在第四章中,着重阐明了系统的软件设计方案;第五章展示了系统的测试过程及结果。第2章 CAN总线和以太网简介2.1 CAN总线简介CAN是Controller Area Network的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986年德国电气商博世公司开发出面向汽车的CAN通信协议。此后,CAN通过ISO11898及ISO11519进行了标准化,现在在欧洲已是汽车网络的标准协议4。现在,CAN的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。CAN控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。CAN协议具有以下特点:1)多主控制。在总线空闲时,所有单元都可以发送消息(多主控制),而两个以上的单元同时开始发送消息时,根据标识符(Identifier以下称为ID)决定优先级。ID并不是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消息ID的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。2)系统的柔软性。与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变。3)通信速度较快,通信距离远。最高1Mbps(距离小于40M),最远可达10KM(速率低于5Kbps)。4)具有错误检测、错误通知和错误恢复功能。所有单元都可以检测错误(错误检测功能),检测出错误的单元会立即同时通知其他所有单元(错误通知功能),正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。5)故障封闭功能。CAN可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。6)连接节点多。CAN总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。正是因为CAN协议的这些特点,使得CAN特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一,并且得到了极大的发展。CAN协议经过ISO标准化后有两个标准:ISO11898标准和ISO11519-2标准。其中ISO11898是针对通信速率为125Kbps1Mbps的高速通信标准,而ISO11519-2是针对通信速率为125Kbps以下的低速通信标准5。本章,我们针对ISO11898标准,阐述该标准的物理层特征。CAN协议是通过以下5种类型的帧进行的:数据帧遥控帧错误帧过载帧帧间隔另外,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有11个位的标识符ID,扩展格式有29个位的ID。各种帧的用途如下表所示:表2.1 CAN总线帧类型及用途帧类型帧用途数据帧用于发送单元向接收单元传送数据的帧遥控帧用于接收单元向具有相同ID的发送单元请求数据的帧错误帧用于当检测出错误时向其它单元通知错误的帧过载帧用于接收单元通知其尚未做好接收准备的帧间隔帧用于将数据帧及遥控帧与前面的帧分离开来的帧由于篇幅所限,我们这里仅对数据帧进行详细介绍,数据帧一般由7个段构成,即:(1)帧起始。表示数据帧开始的段。(2)仲裁段。表示该帧优先级的段。(3)控制段。表示数据的字节数及保留位的段。(4)数据段。数据的内容,一帧可发送08个字节的数据。(5)CRC段。检查帧的传输错误的段。(6)ACK段。表示确认正常接收的段。(7)帧结束。表示数据帧结束的段。数据帧的构成如图2.1所示:图2.1 数据帧的构成注:图中D表示显性电平,R表示隐形电平。帧起始,这个比较简单,标准帧和扩展帧都是由1个位的显性电平表示帧起始。仲裁段,表示数据优先级的段,标准帧和扩展帧格式在本段有所区别,如图2.2所示:图2.2 数据帧仲裁段构成标准格式的ID有11个位。从ID28到ID18被依次发送。禁止高7位都为隐性(禁止设定:ID=1111111XXXX)。扩展格式的ID有29个位。基本ID从ID28到ID18,扩展ID由ID17到ID0表示。基本ID和标准格式的ID相同。禁止高7位都为隐性(禁止设定:基本ID=1111111XXXX)。其中RTR位用于标识是否是远程帧(0,数据帧;1,远程帧),IDE位为标识符选择位(0,使用标准标识符;1,使用扩展标识符),SRR位为代替远程请求位,为隐性位,它代替了标准帧中的RTR位。控制段,由6个位构成,表示数据段的字节数。标准帧和扩展帧的控制段稍有不同,如图2.3所示:图2.3 数据帧控制段构成上图中,r0和r1为保留位,必须全部以显性电平发送,但是接收端可以接收显性、隐性及任意组合的电平。DLC段为数据长度表示段,高位在前,DLC段有效值为08,但是接收方接收到915的时候并不认为是错误。数据段,该段可包含08个字节的数据。从最高位(MSB)开始输出,标准帧和扩展帧在这个段的定义都是一样的,如图2.4所示:图2.4 数据帧数据段构成CRC段,该段用于检查帧传输错误。由15个位的CRC顺序和1个位的CRC界定符(用分隔的位)组成,标准帧和扩展帧在这个段的格式也是相同的,如图2.5所示:图2.5 数据帧CRC段构成此段CRC的值计算范围包括:帧起始、仲裁段、控制段、数据段。接收方以同样的算法计算CRC值并进行比较,不一致时会通报错误。ACK段,此段用来确认是否正常接收。由ACK槽(ACK Slot)和ACK界定符2个位组成。标准帧和扩展帧在这个段的格式也是相同的,如图2.6所示:图2.6 数据帧CRC段构成发送单元的ACK,发送2个位的隐性位,而接收到正确消息的单元在ACK槽(ACK Slot)发送显性位,通知发送单元正常接收结束,这个过程叫发送ACK/返回ACK。发送ACK的是在既不处于总线关闭态也不处于休眠态的所有接收单元中,接收到正常消息的单元(发送单元不发送ACK)。所谓正常消息是指不含填充错误、格式错误、CRC错误的消息6。帧结束,这个段也比较简单,标准帧和扩展帧在这个段格式一样,由7个位的隐性位组成。2.2 以太网简介以太网作为一种应用广泛的局域网已经成为了我们生活中必不可少的一部分,它以其自身的高可靠性、方便易用等优点获得了广大用户的青睐。工业以太网是一个新的概念,它指的是在复杂的生产现场中应用以太网技术,这就要求针对工业现场的环境的恶劣性对现有的网络进行适当的改进,主体部分不动,针对工业控制系统的特点对以太网技术做出改进,使之既能够适应物理上复杂恶劣的现场环境,又能够满足工业控制在通信实时性、数据安全等方面的要求。当然,现阶段的技术还无法将网络直接连接到现场的智能化仪表与设备上,因为设备的种类太多,各自遵循的标准也不统一,而以太网技术的最初的发展也不是针对工业控制来设计的,所以在现阶段情况下,还是要将以太网通过网关与适用于工业控制的控制局域网总线连接起来实现以太网与工业设备之间的数据通信,实现到对生产现场进行监控和管理的目的。以太网现在已经应用很广泛,技术方面也很成熟,然而在工业控制中,现场总线的种类和技术标准却有很多,并且各种总线之间一般情况下无法相互兼容,每一个开发厂商都有自己的标准,这种情况导致了如果一个客户选择了某一种总线用在工业控制系统中就很难改变,很难再用另一种现场总线来代替,对设备及控制系统的升级不利,有可能会影响到生产效益。因此,针对这种情况,有必要提出一种新的技术标准,就是基于以太网技术,并且将这种技术扩展到工业中使之在将来能够发展成为适用于工业现场生产环境的统一的技术标准。现在,国际上相关组织也开始着手做这项工作,制定出了一些工业以太网的标准,在未来直接将以太网技术应用到工业生产现场,取代现在的现场总线技术,这是一个必然的趋势,在这方面需要做的工作还有很多。现阶段的现场仪表设备之间的通信还是离不开现场总线,还是需要将以太网通过网关转换连接进来与设备仪表进行通信,实现上层监控网络和现场控制网络的一体化7。第3章 系统硬件设计本文所设计的嵌入式协议转换网关,实现了CAN总线与以太网的互联,即以太网能够通过网关读取CAN总线上的数据,同时也可以向CAN总线发送命令以实现上位机对现场设备的监控,网关工作示意图如图3.1所示。图3.1 网关工作示意图现场总线的信息可以通过CAN协议传送出去,经过协议转换功能将CAN协议形式转换成TCP协议形式,然后传送到Ethemet上,连接到Ethernet上的远方计算机可以通过一定的权限,在一定的平台上进行数据的接收。同时,该计算机也可以在一定的平台上对现场下达命令,该命令在Ethemet上,以TCP/IP协议的形式传送出去,经过协议转换功能将TCP/IP协议形式转换成CAN协议形式,然后传送到CAN总线上,现场设备接收到命令后执行命令,这样就实现了对现场的远程监控。3.1 硬件总体方案设计硬件平台的选型和设计是很重要的,因为软件开发也是基于硬件的,没有好的硬件软件设计也会受限制,因此如何选择合适的硬件平台,使其性价比高而又能满足系统控制的要求是很关键的。网关转换的必不可少的部分是以太网控制器芯片、CAN控制器芯片和CAN收发器的选择和接口设计。本文以AT91SAM9G45作为核心处理器,CAN总线控制器选用MCP2515,CAN收发器采用PCA81C251芯片。以太网控制器选用,本章介绍了本系统选择的这些器件以及关键部分硬件电路的设计。图3.2 硬件总体结构图系统的硬件组成如图3.2所示,方框中中央处理器(CentralProcessingUnit,CPU)为本系统核心部分,集成有AT91SAM9G45处理器、SDRAM存储器、Flash存储器8。核心模块的外围电路设计包括一下几个部分:电源电路:设计电路所需的5V和3.3V电压;串口电路:提供系统所必需的传输控制命令的通道;CAN模块:AT91SAM9G45通过SPI控制CAN控制器;以太网模块:AT91SAM9G45通过控制DM9161,进行网络访问。网关的硬件实物如图3.3所示,采用的是SBC6845开发板。图3.3 网关硬件实物图3.2 硬件电路设计3.2.1 核心处理器基于ARM926EJ-S的AT91SAM9G45集成了常用的和具有高传输速率的硬件接口,包括LCD控制器,电阻式触摸屏控制器,图像传感器接口,声音控制器,10/100M以太网控制器和高速USB和SDIO控制器。当处理器以400MHz处理多组超过100Mbps的高速外设时,AT91SAM9G45能够以足够的带宽去处理包括网络和本地多媒体的数据,以提供满意的用户体验。AT91SAM9G45支持最新的用来存储程序和数据的DDR2和NAND Flash储存器接口。带有一个内置的133MHz并且支持37个DMA通道的多层总线架构,两组外部总线接口,分散的存储单元(包括一个64KB的SRAM,可以根据处理器和高速外设的要求,配置成一个紧凑结合内存(Tightly Coupled Memory,TCM),以保持高的带宽)。I/O接口支持1.8V和3.3V工作电压,这些可以为存储接口和外设I/O接口单独配置基于这个特点,它能够完全满足不同外设的电平需要。而且它是以0.8球间距进行封装,能够给PCB厂商降低相应的成本。AT91SAM9G45电源管理控制器使用门控时钟(clock gating)和电池备份组件使得在活动和就绪模式下把功耗降到最低。3.2.2 CAN总线电路Microchip的MCP2515是一款独立控制器局域网(ControllerAreaNetwork,CAN)协议控制器,完全支持CANV2.0B技术规范。该器件能发送和接收标准和扩展数据帧以及远程帧。MCP2515自带的两个验收屏蔽寄存器和六个验收滤波寄存器可以过滤掉不想要的报文,因此减少了主单片机(MCU)的开销。MCP2515与MCU的连接是通过业界标准串行外设接口(Serial PeripheralInterface,SPI)来实现的。MCP2515是一款独立CAN控制器,可简化需要与CAN总线连接的应用。MCP2515的内部结构如图3.4所示。该器件主要由三个部分组成:图3.4 MCP2515结构框图1) CAN模块,包括CAN协议引擎、验收滤波寄存器、验收屏蔽寄存器、发送和接收缓冲器。CAN模块的功能是处理所有CAN总线上的报文接收和发送。报文发送时,首先将报文装载到正确的报文缓冲器和控制寄存器中。通过SPI接口设置控制寄存器中的相应位或使用发送使能引脚均可启动发送操作。通过读取相应的寄存器可以检查通讯状态和错误。会对CAN总线上检测到的任何报文进行错误检查,然后与用户定义的滤波器进行匹配,以确定是否将报文移到两个接收缓冲器中的一个。2) 用于配置该器件及其运行的控制逻辑和寄存器。通过与其他模块连接,控制逻辑模块控制MCP2515的设置和运行,以便传输信息与控制。所提供的中断引脚提高了系统的灵活性。器件上有一个多用途中断引脚及各接收缓冲器的专用中断引脚,用于指示有效报文是否被接收并载入接收缓冲器。可选择使用专用中断引脚。通用中断引脚和状态寄存器(通过SPI接口访问)也可用来确定何时接收了有效报文。器件还有三个引脚,用来启动将装载在三个发送缓冲器之一中的报文立即发送出去。是否使用这些引脚由用户决定;若不使用,也可利用控制寄存器(通过SPI接口访问)来启动报文发送。3) SPI协议模块。MCU通过SPI接口与该器件连接。使用标准的SPI读/写指令以及专门的SPI命令来读/写所有的寄存器9。图3.5 CAN控制器(MCP2515)电路原理图图3.6 CAN收发器电路3.2.3 以太网电路DM9161是一款完全集成的和符合成本效益单芯片快速以太网PHY,提供数据转换和数据传输等作用。DM9161CEP还提供了介质无关的接口,来连接所有提供支持介质无关接口功能的家用电话线网络设备或其他收发器。该DM9161CEP支持8位,16位接口访问内部存储器,以支持不同的处理器。DM9161CEP物理协议层接口完全支持使用10MBps下3类、4类、5类非屏蔽双绞线和100MBps下5类非屏蔽双绞线。这是完全符合IEEE 802.3u规格。它的自动协调功能将自动完成配置以最大限度地适合其线路带宽。还支持IEEE802.3x全双工流量控制。用户可以容易的移植任何系统下的端口驱动程序。芯片特点:1.48pinLQFP封装2.制作工艺:0.18um,IO供电电压3.3V,模拟部分1.8V3.支持MII和RMII连接方式(推荐使用MII)4.支持双绞线自适应(AUTO-mix)5.支持TCP/IP硬加速6.与全球95%的厂家的MCU完全兼容,是ATMEL推荐使用的单口PHY10。应用领域:DM9161应用广泛,涵盖了多个领域。如:计算机基站,上网本和超便个人电脑(UMPC),移动互联网设备,数字电视,录像机,机顶盒,网络打印机,游戏主机,独立式USB以太网适配器,嵌入式系统,工业应用,电力抄表,自动化设备,远程控制系统,医疗设备。以太网控制器硬件电路及RJ45连接器电路分别如图3.7和图3.8所示。以太网发送和接收分别有指示灯指示其工作状态。另外,由于以太网通信速度高,信号线频率也相应较高,在发送和接收数据线上做了较为稳妥的滤波处理,确保电路工作的可靠性。在芯片的供电管脚处,分别加了多了滤波电容,以保证电源的稳定。图3.7 以太网控制器(DM9161BIEP)硬件电路图3.8 RJ45连接器电路第4章 系统软件设计4.1 嵌入式系统特点及开发流程嵌入式系统与一般的计算机系统相比较具有以下特点:1.专用化,嵌入式系统一般是面向特定应用的,不像通用型的计算机,嵌入式系统设备一般是功耗不高、占用空间小、集成度高,能够把针对特定应用的一些功能集成到嵌入式芯片中,更有利于完成特定应用所要求的功能,并且由于嵌入式系统的占用空间小的特点,其移动能力增强了不少,这样的特点或者说优点也是嵌入式系统能够如此流行的一个根据。2.综合化。嵌入式技术是多个学科的交叉和融合,集成了多个学科的优点,诸如通信技术、计算机技术、微电子技术等学科的发展对于嵌入式技术的发展都起到了至关重要的作用。3.可裁剪性。在嵌入式设备中,由于资源有限,尤其是内存不像通用的计算机那么丰富,因此针对特定的应用就要讲软件资源中不必要的部分裁剪掉以节省系统资源,提高设备利用率,提高硬件性能,正是嵌入式系统的这种特点使得它更加具有竞争力。4.嵌入式系统中没有硬盘这样的设备,系统软件一般都是固化在存储FLASH中,这样做能够提高系统可靠性和运行速度。5.交叉开发环境。不像通用性PC,嵌入式系统的开发无法直接在嵌入式设备上完成,因此必须借助PC来完成开发,并且在PC环境下开发的程序要经过交叉编译使目标代码能够在目标板上运行。因此在开发嵌入式系统时首先要做的就是建立交叉开发环境。本系统所实现的网关是基于嵌入式Linux操作系统,在ARM9处理器S3C2440平台下进行开发的。嵌入式开发首先要做的就是搭建嵌入式开发的环境,即交叉编译环境,因为实际系统的运行是在目标板上,而程序的开发则要在上位机上,上位机上开发出的程序要能够在目标板上运行就要使用交叉编译。所以首先要做的就是在一台PC机上安装Linux操作系统,本文选用的是Redhat9.0版本的操作系统,操作系统安装完成后,将arm-linux-gcc.tar软件包安装到PC中,建立好交叉编译环境。对于目标板,因为选用的是采用嵌入式Linux作为操作系统来运行应用程序,要将嵌入式Linux的内核编译并移植到目标板,建立起嵌入式Linux开发环境。两边的开发环境都搭建完成后,便可以进行网关相关程序的开发了11。嵌入式开发的流程可以概括为:在宿主机也就是上位机上对特定的处理器系统环境下开发的程序通过编译器、链接器将开发的程序编译生成目标代码,然后将该目标代码通过JTAG接口、串口或者USB接口等方式下载到目标板的FLASH里面,上电后如果没有错误,程序便可以正常运行12。4.2 CAN总线模块软件设计 图4.1 初始化 图4.2发送数据图4.3接收数据CAN总线模块中,分别编写了3个函数,分别为CAN总线的初始化函数,发送数据和接收数据函数。初始化流程如图4.1所示,先打开CAN总线的设备文件,设置其工作的速率,然后设置过滤器及工作方式。本文中使用的设置参数是:CAN总线通信速率500Kbps、无过滤器、普通工作方式。发送数据函数如图4.2所示,先设置要发送的数据个数,然后将数据内容复制到发送缓冲区,最后调用系统write()函数发送到CAN总线上。接收函数如图4.3所示,先清空接收缓冲区,再读设备文件,然后显示收到的数据内容,最后将CAN帧头通过串口打印出来。4.3 以太网模块软件设计Linux网络编程一般可分为UDP和TCP两类。UDP是无连接的传输协议,提供面向事务的简单不可靠信息传输服务;TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。由于本文要传输的是CAN总线采集的传感数据以及以太网下发的控制数据,要求传输过程中稳定可靠,所以本文中采用了面向连接的TCP/IP传输协议。4.3.1 TCP客户端建立连接要实现一个完整的TCP连接,需要有一个服务器和一个客户端。服务器:监听客户端发起的连接,发现有连接建立则发送字符串信息给客户端;客户端:对服务器发起连接,接收服务器发送的信息,并打印收到的信息。本文的嵌入式网关搭载的是客户端,客户端建立连接的流程如图4.4所示:图4.4 TCP客户端建立连接流程图4.3.2 以太网发送和接收数据由于底层的驱动程序已经由开发板提供,要想实现以太网数据的收发,在建立连接后,直接读写socket设备文件即可。调用入下函数:int read(int sockfd, char *buffer, int nbytes);write(int sockfd, char *buffer, int bytes);其中sockfd为socked描述符,char *buffer为发送接收缓冲区,read()中的nbytes为最大的接收字节数,write()中的nbytes为要发送的字节数。4.4 网关应用程序设计通过上述的分析和介绍,现在对网络通信已经有了比较清晰的认识,针对CAN-Ethernet网关的应用程序设计发送和接收过程都比较简单。首先建立服务器,通过listen()侦听客户端的连接请求,此时在客户端编程通过connect(),如果通信没有错误的话便可以连接成功之后进行通信。因为以太网帧发送数据的长度在461500字节之间,为了提高网络利用率,应该单帧发送的数据越多越好,CAN数据帧中的数据长度最大是8个字节,为了信息传递及处理的方便最好将数据长度都设置为8个字节,不足8个数据的部分填充0即可。处理器处理时将多个CAN总线数据打包成一个以太网帧然后通过套接字发送到以太网上。从以太网上接收数据时,将数据送到指定的缓冲区,然后调用CAN模块的应用程序将数据拆分打包成CAN数据帧,通过SPI接口发送到现场总线上。4.4.1 双循环缓冲机制由于网关既要处理CAN总线发送到网络上的上行数据,又要处理从网络上下发的控制数据,所以为了提高网关的工作效率,本文设置了双缓冲区,上行数据和下行数据分别拥有自己的缓冲区。无论是上行数据还是下行数据,数据量都可能是比较大的,这就需要缓冲区的空间足够大。而实际上硬件的资源一定是有限的。所以最好的解决办法是缓冲区的重复利用。这里借用了循环队列的思想。struct SendUpControl /上行数据控制结构体pthread_mutex_t lock;/互斥LOCKpthread_cond_t notempty;/缓冲区非空条件判断pthread_cond_t notfull; /缓冲区未满条件判断char SendUpBufferSEND_UP_BUFFER_CNTSEND_UP_BUFFER_SIZE;char readpos , writepos;/读写指针;以上行数据控制结构体为例:char SendUpBufferSEND_UP_BUFFER_CNTSEND_UP_BUFFER_SIZE;是缓冲区,一共有SEND_UP_BUFFER_CNT个单元,每个单元有SEND_UP_BUFFER_SIZE个字节数据,SEND_UP_BUFFER_CNT和SEND_UP_BUFFER_SIZE由宏定义给出。char readpos ,writepos;是读写指针,每写入缓冲区一条数据writepos自加一,每读出一条数据readpos自加一。如果writepos或readpos等于SEND_UP_BUFFER_CNT,则让它们归零,便实现了缓冲区的重复利用,即循环缓冲。如果readpos等于writepos,则缓冲区为空;如果readpos加1等于writepos,则缓冲区满。4.4.2 网关多线程设计线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。当多个任务可以并行执行时,可以为每个任务启动一个线程13。在网关应用程序中,同时需要转发上行数据和下行数据。为了提高数据传输的实时性,本文共设计了四个线程,分别为:1. Top_CANRec();while(1)printf(rn);CAN_Read();CAN_Put(&SendUpBuf);Top_CANRec()为上行数据的CAN总线接收线程,不停地检测CAN总线上是否有要接收的数据,如果有则将数据存入循环缓冲区,再进行下一次的检测。2. Top_TCPSend();while(1)printf(rn);TCP_Get(&SendUpBuf);int cnt = (int)(UpMessageBuf SEND_UP_BUFFER_CNT * SEND_UP_BUFFER_SIZE8)+UpMessageBuf SEND_UP_BUFFER_CNT *SEND_UP_BUFFER_SIZE + 1 ;TCP_Write(UpMessageBuf, cnt);sleep(5);Top_TCPSend()为上行数据的TCP发送线程,不停地检测上行数据缓冲区是否有数据要向上发送,如果有则通过TCP/IP发送到服务器上。这里为了提高网络的通信效率,设置了一个5s的睡眠,即5s检测一次,有的话将数据打包发送。3. Top_TCPRec();while(1)TCP_RecCnt=TCP_Read();if(TCP_RecCnt)TCP_Put(&SendDownBuf);printf(rn);Top_TCPRec()为下行数据的TCP接收线程,检测服务器上是否有下发的数据,如果检测到,则存入缓冲区。4. Top_CANSend();while(1)printf(rn);CAN_Get(&SendDownBuf);int cnt = DownMessageBuf1268 | DownMessageBuf127;CAN_Write(DownMessageBuf,cnt);delay();Top_CANSend()为下行数据的CAN发送线程,如果下行数据缓冲区有待发送的数据,则通过CAN总线发送出去。4.4.3 网关协议转换程序设计工业生产现场的智能仪表和设备多种多样,在实际的工业生产中可能现场有同一类型和不同类型的很多个设备,而在现场总线控制系统中,从这些设备上采集的数据都是通过现场总线传输的,CAN总线是一种多主总线,每个CAN节点都可以作为主机发送和接收数据,对于一个完整的从底层现场设备到上层的监控室的工业生产控制系统来说,在控制室内监控到的生产现场信息要能够明确的表明是哪个节点的哪个设备产生的这些信息,进而对相应的设备发送控制命令。对于一个复杂的多设备控制系统来说,对具体的现场设备要能够在发送的数据中提取信息并识别是哪一个设备,因为采用的是CAN现场总线,就要在CAN数据帧中的8个字节的数据中开辟出一定的空间填充上必要的标识信息,剩余的部分作为相应设备数据的存储空间,通过这种途径,在监控室内收到现场发送来的数据后根据对应的规则识别出是哪个设备产生的这些信息,然后就可以对这个设备进行监控和管理。在应用程序设计中,采用多线程处理来模拟多个网关进行数据的转发,考虑到一般情况下从现场采集到的数据比较多,而从控制室发送的命令信息可能较少,所以在这里建立一个线程负责接收以太网的数据一个线程用于将数据转发到生产现场,建立一个线程专门用于现场总线数据的读取,将读取的数据放到缓冲队列中,若缓冲区满则丢弃收到的数据,另外建立一个或几个线程用于将现场总线发送来的数据也就是缓冲区中的数据发送到以太网上,在排队模型中这几个线程相当于服务台,他们共同为一个队列中的顾客服务,也就是只设置一个缓冲队列,每个服务台都在这个队列中取数据发送,为防止读取冲突,线程在读取数据时要对缓冲队列加锁防止其他进程修改队列的头尾指针14。这样就可以利用多线程程序设计的处理速度快,占用资源少,并发处理的优点来简单的模拟多网关系统,但是多线程程序设计要更加的小心,如果一个线程崩溃的话可能会导致一个进程内的其他线程无法正确执行,并且CPU要花时间去维护多线程的切换和执行,这是值得我们注意的地方。协议转换的流程如图4.5所示。图4.5 协议转换流程图第5章 系统测试为了测试网关系统的工作状态及性能,制作了一个带有CAN总线的下位机和一个带有TCP服务器功能的上位机软件。测试仪器及工具:硬件:AT91SAM9G45开发板一块STM32F103开发板(带CAN总线接口)一块网线一条USB转串口线一根12V电源一个软件:SecureCRT软件V6.2.3网络调试助手V3.8.15.1网口连接测试由于测试电脑本地连接IP地址为:192.192.192.105,因此将网关IP地址设置为同一网段的192.192.192.200。连接上网线后,在串口调试中断中输入“ping 192.192.192.105”指令,则网关会ping主机。测试结果如图5.1所示。图5.1 网口测试结果5.2网关工作状态测试以STM32开发板为硬件载体,编写了一个采集温度,并通过CAN总线传输至网关的测试程序。程序中可以设定CAN总线通信速率,CAN总线工作方式。并且每秒发送3次传感数据。发送的信息格式如下:$T28,H34。正好是8个字节,为一帧CAN数据。下位机的硬件实物如图5.2所示。图5.2 下位机硬件在PC环境下用MFC编写了一个简单的Ethernet服务器测试程序来对系统进行测试。在尝试了不同的数据通信速率后发现,当以太网向CAN总线发送数据时,数据率比较低时能够通信正常,没有错误。当发送数据的速度超过CAN通信速率的时候,便会出现数据阻塞和数据丢失的情况,因为CAN总线的通信速率有限来不及将到达的数据发送出去,新的数据又到达了。现场总线的通信速率是个瓶颈
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中央厨房冷链物流系统项目分析方案
- 2026425黄露脑梗塞病人的护理查房
- 人教版二年级数学下册《表内除法平均分》课件
- 青浦区消防安全检测报告
- 电梯门异常应急处置程序
- c考试题及答案
- 高中化学必修第二册氮气与氮的固定教学设计
- 现代汉语2试题及答案
- 2026年神经内外科护理人员考核试题(含答案)
- 2026年度贵州省遵义市专业技术人员继续教育公需科目试卷及答案
- 2026道德与法治新教材五年级上册全套单元试卷及参考答案
- 桥式起重机安全维护培训
- GB/T 47743.1-2026数码照相机图像稳定性能的测量方法第1部分:光学防抖系统
- 2026年云南省基层法律服务考试真题(附答案)
- 莫兰迪简约风STAR法则运用模板
- 七年级历史第四单元《三国两晋南北朝:政权分立与民族交融》单元整合复习思维型导学案
- 《食物过敏相关消化系统疾病诊断与管理循证指南(2026)》解读
- 部编版小学一年级语文单韵母aoeiuu课件
- 谐音梗挑战课件
- 高中团课·教学设计:《“碳”寻青春路点亮“双碳”光-在“十五五”攻坚期书写绿色答卷》
- 难治性甲状腺功能亢进诊疗专家共识(2026版)
评论
0/150
提交评论