




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
天津理工大学硕士学位论文基于双口RAM的EtherNet/IP与Modbus--TCP通信适配器研究姓名:魏一申请学位级别:硕士专业:控制理论与控制工程指导教师:陈在平;贾超202301摘要摘要近年来,工业自动化控制系统向着智能化、信息化、网络化的方向开展。早期的工业网络普遍采用基于串行方式的通信接口如RS232、RS485等等,随着计算机技术的发展,诸如DeviceNet、Profibus等现场总线技术应运而生,而随着以太网技术的飞速开展,利用工业以太网将工业控制系统一网到底将是未来开展的必然趋势。目前在所有的网络技术中,基于TCP/IP协议的以太网技术已经成为事实上的标准网络,而EtherNet/IP与Modbus.TCP正是基予以TCP/IP技术为核心的普通商用以太网之上的工业以太网技术,具有良好的应用推广前景与巨大的经济价值。然而面对蓬勃开展的工业以太网,传统的工业设备普遍不具备工业以太网的接口与通信功能,如何将这些设备接入工业以太网成为了亟待解决的问题。本文基于如上背景,在分析了EtherNet/IP与ModbUS.TCP工业以太网协议的根底上,提出了开发EtherNet/IP与Modbus-TCP双工业以太网通信适配器的解决方案,完成了通信适配器的软硬件设计,最后通过实验证明了通信适配器软硬件设计的合理性与正确性。本文首先分析了EtherNet/IP与Modbus.TCP工业以太网的体系结构、通信原理与数据格式,并采用核心板模块与底板模块的物理结构,以三星公司的$3C2440为核心板模块CPU,利用双口RAM作为与外界应用设备交换数据的桥梁,并以核心板接口电路、以太网电路、通信指示电路、复位电路、外部数据交换电路为底板模块核心电路设计了EtherNeVlP与Modbus.TCP双工业以太网通信适配器的硬件电路,在硬件电路的根底上向目标板移植入嵌入式Linux操作系统,在通信协议栈程序的根底上完成了嵌入式Linux操作系统下EtherNet/IP与Modbus-TCP通信软件的编写以及双口RAM驱动程序的开发,最后以HC.100智能测控仪为目标外界应用设备,利用通信适配器将HC.100测控仪分别接入EtherNet/IP与ModbUS.TCP网络,并通过Woodhead公司的EtherNet/IP主站板卡与Modbus.TCP上位机主站软件对通信适配器的软硬件功能进行了完整的测试,实验验证了通信适配器软硬件设计的合理性与正确性,为课题的进一步研究提供了良好的理论根底与实践经验。关键词:EtherNeVlP通信适配器双口RAMLinux操作系统嵌入式系统AbstractInAbstractInrecentyears,industrialautomationcontrolsystemsdeveloptowardsintellectualization,informatizationandnetworking.Intheearlyyears,industrialnetworkcommonlyadoptedthecommunicationinterfacebasedonthewayofserialsuchasRS232orRS485andSOon.Withthedevelopmentofcomputertechnology,fieldbustechnologysuchasDeviceNet,ProfibusandSOonbom,andwiththerapiddevelopmentofEtherNettechnology,industrialcontrolsystemwillbe〞nettingtotheend〞byusingindustrialEtherNetistheinevitabletrendofthedevelopmentinthefuture.Atpresentinallofthenetworktechnologies,EtherNettechnologybasedonTCP/IPprotocolhasbeenthestandardnetwork.Infact,EtherNet/IPandModbus—TCParetheindustrialEtherNettechnologieswhicharebasedonthecommoncommercialEtherNetwhosecoretechnologyisTCP/IPprotocolandhavegoodapplicationpromotionprospectsandhugeeconomicvalue.ButbecomparedwiththevigorousdevelopmentofindustrialEtherNet,thetraditionalindustrialequipmentgenerallydonothavetheindustrialEtherNetinterfaceandcommunicationfunction,SOhowthesedevicesaccessindustryEtherNetbecomestheproblemwhichrequiressolutionimmediately.ThispaperbasedontheabovebackgroundandtheanalysisoftheEtherNet/IPandModbus—TCPindustrialEtherNetprotocolputsforwardthesolutionofdoubleindustrialEtherNetcommunicationadapter,completesthesoftwareandhardwaredesignofthecommunicationadapter,andeventuallyprovestherationalityandvalidityofthehardwareandsoftwaredesignofthecommunicationadapterthroughthecorrespondingexperiments.Thispaperfirstlyanalyzesthesystemstructure,communicationprincipleandthedataformatoftheEtherNet/IPandModbus-TCPindustrialEtherNet,thenbyusingthephysicalstructureofthecoreboardmodulewiththeCPUofSamsung’S$3C2440andboaomboardmodule,byusingthedual-portRAMasthedatabridgeforexchangingdatawiththeoutsideapplicationequipment,andbyusingthecoreboardinterfacecircuit,EtherNetcircuit,communicationinstructioncircuit,resetcircuit,extemaldataexchangingcircuitasthecorecircuitsfortheboRommoduledesignsthehardwaresystemofthedoubleindustrialEtherNetcommunicationadapterbasedontheEtherNet/IPandModbus-TCPprotoc01.AlsothispapertransplantstheembeddedoperatingsystemLinuxonthehardwarecircuitofthetargetboard,andcompletestheEtherNet/IPandModbus—TCPcommunicationsoftwaredevelopmentbasedontheprotocolstackprogramandthehardwaredriverdevelopmentofthedual—portRAMundertheembededLinuxoperatingsystem.EventuallythispaperusestheHC一100intelligentmeasurementandcontrolinstrumentasthetargetoutsideapplicationequipment,andbyusingthecommunicationadapteraccessestheHC一100measurementandcontrolinstrumentintoEtherNet/IPandModbus—TCPnetworkrespectively,finallyfinishestheintegritytestofthesoftwareandhardwarethroughtheEtherNet/IPhostinterfacecardwhichisproducedbyWoodheadcompanyandtheModbus—TCPsuperiormasterstationsoftwareforthecommunicationcommunicationadapter.Theresultofthetestverifiestherationalityandvalidityofthe,hardwareandsoftwaredesignofthecommunicationadapter,providesatheoreticalbasisandpracticalexperienceforthesubjectinthefurtherresearch.Keywords:EtherNet/IECommunicationadapter,Dual—portRAM,Linuxoperatingsystem,Embeddedsystem第一章绪论第一章绪论第一章绪论第一章绪论课题的研究目的和意义本课题的研究目的是基于EtherNet/IP与Modbus.TCP工业以太网协议【l‘21,设计具有广泛通用性的EtherNet/IP与Modbus.TCP工业以太网通信功能的工业网络通信适配器,并以HC.100智能测控仪【31为目标外部应用设备,将智能测控仪接入EtherNeVIP与ModbUS.TCP网络,从而实现非EtherNet/IP与ModbUS—TCP设备接入标准EtherNeVIP与ModbUS.TCP网络并正确交换网络报文的目的。EtherNet/IP(EthernetIndustrialProtocol以太网工业协议)是当前工业控制网络领域中较为流行的一种工业以太网协议。EtherNeVIP协议由标准的以太网物理层和数据链路层、TCP/IP协议以及应用层CIP协议组成,并与DeviceNet以及ControlNet相同,都是基于CIP协议的工业网络。其中CIP(CommonIndustrialProtocolorControlandInformationProtocol控制与信息协议或通用工业协议)是EtherNefflP的核心组成局部,它具有完全开放性和完全标准化的特征。与Producer/Consumer模式相结合,CIP协议支持主从、对等、一对多以及播送通信。EtherNet/IP与DeviceNet与ControlNet相比,不仅增加了数据吞吐量而且减少了响应时问。EtherNet/IP将设备从总线层连接到控制层以及企业级的层面上,因此EtherNeVIP首次实现了传感器级网络到控制器和企业级网络的无缝集成。正是因为这样,自动化设备实现EtherNet/IP通信功能有着非常重要的实际意义【铀J。Modbus.TCP是Modbus系列通信协议中的一员,是Modbus报文利用TCP/IP协议在普通商用以太网上的应用,常用在工业现场I/O模块、PLC等工业自动化设备。由于Modbus-TCP已经成为了“事实上〞的标准,因此研究Modbus.TCP网络通信节点具有重要的实际应用价值17j。在传统的工业设备嵌入式系统中,往往采用单CPU的设计,CPU不仅负责设备本身的控制状态以及动作执行,还需要实现相应的工业网络通信协议来完成设备的组网通信工作,这样的系统物理结构相对简单,但是随之带来的一些重要问题也很明显,通信协议简短易行还好,假设采用相对复杂的通信协议不仅会加重CPU处理软件程序的负担,而且如果设备想接入其它工业网络的话必然要对软件程序代码进行大量的修改,并同时需要对设备的硬件通信接口进行重新设计,效率低下、实施困难、经济本钱高,这样的工业设备只适用于单一功能的工业网络,设备用途的多样性受到制约,给设备用户带来了诸多不便【8-91。因此迫切需要寻求一种解决方法,可以使用户摆脱繁重的网络通信协议软件的编写,并使用户可以利用统一标准的硬件通信接口快速地使自己的设备接入到不同的工业网络当中。第一章绪论工业网络通信适配器的主要功能就是在设备本体和工业网络之间架起一座桥梁,第一章绪论工业网络通信适配器的主要功能就是在设备本体和工业网络之间架起一座桥梁,使工业设备与工业网络主站之间正确高效的疫换实时数据与控制信息。因此,工业设备的生产厂商就不需要消耗大量的人力财力研究工业网络协议标准以及重新丌发产品的软硬件设计结构。工业网络通信适配器在系统中作为一个从站,必须符合相应的工业网络协议技术标准。 基于上述原因,本文选择EtherNet/IP与Modbus-TCPI业以太网协议为目标网络通信协议,设计EtherNet/IP与ModbUS.TCP双工业以太网通信适配器软硬件系统,并以HC.100智能测控仪为目标外部应用设备将其通过工业网络通信适配器接入EtherNet/IP与Modbu.TCP网络进行实验验证。本文开发的EtherNet/IP与ModbUS.TCP双工业以太网通信适配器具有广泛的通用性,为工业设备接入EtherNet/IP与Modbus—TCP网络提供了高性价比的解决方案,为工业自动化真币实现“一网到底〞的目标打下了坚实的根底,且通信适配器软硬件设计思路易于推广到其它工业网络通信适配器的研发工作,为其它工业网络通信适配器的开发提供了一定的理论根底与实践经验,在今后的研发工作中不断加以完善改良,将对工业设备接入到各种工业网络产生巨大的推动作用,产生可观的经济效益,具有重大的理论价值与实际意义。1.2国内外研究现状分析与所存在的问题近年来,以太网技术匕速开展,研究人员日益增多,使得以太网技术开发的本钱显著下降,因此EtherNet/IP网络的使用可以令系统的本钱显著降低。目前,EtherNet/IP网络J下在被ODVA与ControlNetInternational两家协会努力推广向市场,很多公司看到了其未来开展的前景纷纷表示支持,且许多大公司和研究机构看到了这方面的巨大市场需求,纷纷着手研究EtherNet/IP网络通信技术,EtherNet/IP产品日益增多。由于现代网络技术的快速进步,一网到底的将是EtherNet/IP开展的美好蓝图,由于可以延伸拓展到工业现场设备控制层,因此业内普遍认为EtherNet/IP是未来控制网络的最正确解决方梨10·121。当前,工业控制系统中已经运行着数百万的串行Modbus设备以及数十万Modbus—TCP设备,许多国际公司生产Modbus系列控制网络产品,Modbus.TCP设备在各种自动化系统中大量使用,因此Modbus.TCP是广泛使用的“实际〞标准【l引。目前,国内的ModbUS.TCP的研究已经趋于成熟,而EtherNet/IP正处于稳步开展阶段,但设备本身就带EtherNet/IP接口的产品还比拟少【14。61。且由于工业以太网在我国开展的时间有限,很多传统的工业设备也并不具备Modbus-TCP网络接口,放弃原有的工业设备而采购具有工业网络接口的设备对于很多用户来说是资源上与经济上的巨大浪费,因此迫切需要寻求一种方法将这些设备接入工业以太网成为了亟待解决的问题【引。目前,嵌入式技术的应用已经十分广泛,市场竞争非常剧烈,开展同新月异【l引。竞争带来了技术的不断革新,随之产生了多种性价比非常优秀的嵌入式芯片。EtherNet/IP与ModbUS.TCP双工业以太网通信适配器可利用嵌入式芯片加强网络通信第一章绪论协议程序的运行速度,提高处理能力。因此,采用先进的嵌入式技术开发工业网络通第一章绪论协议程序的运行速度,提高处理能力。因此,采用先进的嵌入式技术开发工业网络通信适配器是最为理想的选择【20之21。有鉴于此,利用高速嵌入式微处理器研发EtherNet/IP与Modbus.TCP网络通信适配器成为了较为合理的方案。1.3本文的主要工作目前,工业以太网已经成为工业控制网络开展的主要方向,未来势必代替工业现场总线成为主流的工业通信标准,EtherNet/IP与Modbus.TCP协议是优良的工业以太网解决方案,因此研究EtherNet/IP与Modbus.TCP双工业以太网通信适配器具有很大的理论价值与实际意义。本课题的研究内容是:应用嵌入式Linux操作系统【231,以基于ARM920T内核的高性能微处理器S3C2440[241为平台,以双口RAM作为微处理器与外部应用设备交换数据的桥梁,实现EtherNet/IP与Modbus.TCP双工业以太网通信适配器的软硬件设计,并以HC.100智能测控仪为目标外部应用设备,通过所开发的工业网络通信适配器将其接入EtherNet/IP与ModbUS.TCP网络,对通信适配器进行完整的软硬件功能性测试。具体研究内容如下:(1)分析研究EtherNet/IP与ModbUS.TCP工业以太网协议,重点开展EtherNet/IP与Modbus.TCPj二业以太网协议结构组成、协议通信原理、协议报文数据结构的研究,寻找到了将通信协议程序化的可靠与有效方法;(2)进行设计方案以及软硬件平台论证研究,确定了满足设计要求的设计方案和软硬件平台;(3)分析编写嵌入式Linux系统下的设备驱动程序,使之可以正常驱动外围芯片的各种功能,满足设计方案的需要;(4)在已有的EtherNet/IP与Modbus.TCP节点通信技术理论的根底上,研究EtherNet/IP与ModbUS.TCP软件程序协议栈,分析其代码结构与功能,重点研究利用Linux系统下的C语言编程并完成符合通信适配器软件功能需求的EtherNet/IP与Modbus-TCP协议程序的设计,并完成相应配置文件的编写;(5)研究搭建实验测试环境,以HC.100智能测控仪为目标外部应用设备,将其接入EtherNet/IP与Modbus.TCP工业以太网网络与上位机主站进行数据报文通信测试,评估通信适配器软硬件系统是否到达设计要求并寻求后续改良。1.4本章小结本章阐述了课题研究的目的和意义以及目前国内外对于EtherNet/IP与Modbus-TCP的研究现状,并在此根底上阐述了本文所要进行的主要工作,为课题的顺利开展提供了理论根底与实践经验。第二章EtherNet/IP与Modbus—TCP协议分析第二章EtherNet/IP与Modbus.TCP协议分析第二章EtherNet/IP与Modbus—TCP协议分析第二章EtherNet/IP与Modbus.TCP协议分析2.1EtherNet/IP协议体系结构2.1.1EtherNet/IP协议结构组成近年来,智能化、信息化、网络化是工业自动化控制系统的开展趋势。基于TCP/IP协议的以太网技术目前得到了广泛的使用,因此在绝大局部网络技术中已经成为事实上的标准网络,将标准的基于TCP/IP技术的以太网延伸到工业实时控制领域,与通用工业协议CIP相结合,就形成了工业以太网EtherNeffIP。EtherNet/IP协议结构组成如图2.1所示【25之61。——一1 一’1r——————————————]‘—————————————一r———~一’—1i半导体}{气动阀};Ac驱动}位置控制其他行规行规和 |I用户层应用层[二三三五叵二二区翌兰幽[二传输层和 i将来1数据链路层 l扩展|EtherNetl数据链路层lI(CSMA/CD)1...................一———J物理层图2-IEtherNet/IP协议结构组成EtherNet/IP与DeviceNet和ControlNet相比,采用了相同的应用层CIP协议,而它们之间的区别在于EtherNet/IP采用以太网作为物理层与数据链路层,并且引入了TCP/IP协议作为它的网络层与传输层。由于三种网络采用了相同的应用层协议CIP,因此它们可以共享一致的行业标准与对象库,EtherNet/IP网络可以方便地通过工业路由连接并与其它两种现场总线实现共存。由于建立在广泛使用的CIP协议簇之上,故EtherNet/IP首次实现了传感器级网络到控制器和企业级网络的无缝集成【2第一二章EtherNet/IP与Modbus—TCP协议分析2.1.2第一二章EtherNet/IP与Modbus—TCP协议分析2.1.2EtherNet/IP协议通信原理EtherNet/IP采用TCP/IP协议作为传输层与网络层,TCP/IP协议虽然可以实现数据在网络间的相互传递功能,却不能保证接收数据的双方『F确理解数据的含义,因此需要一种解决方法使得网络上的设备间可以『F确解析彼此的信息,令网络上的各种设备具有有较好的一致性,不同的设备之间具有交互性,CIP协议就是一种优良的解决方案12引。EtherNet/IP采用Producer/Consumer模式来交换网络报文,数据源将报文发送到网络上,网络上的其它节点依据连接标识选择性地接收数据源的数据,从而使得带宽得到了节省且通信效率得到了提高,由于数据利用同样的时问到达了不同节点,因此实现了通信的精确同步。根据不同的网络传输协议,CIP连接交换报文的方式可分为显示报文连接与隐式报文连接,前者发送网络问的点到点之间的信息,对时间无苛刻要求,采用TCP协议作为以太网上的数据传输协议,使用经典的请求/应答网络报文通信方式,常用来上下载设备信息、程序以及组态信息等;后者采用UDP作为以太网上的数据传输协议,发送对时问有苛刻要求的控制信息,主要用于实时I/O数据的传输。CIP协议是一种基于对象的工业协议,把每一个网络设备看作一系列对象的集合,对象是相关效劳和属性的集合,效劳是由对象执行的程序,属性是用数值表示的可以变化的对象特性,对象实例是某一特定对象的实际代表,每个实例都具有一组相同的属性,但各有一组自己的属性值,使得分类中的每个实例都是唯一的,工业设备的对象模型定义可通过设备描述完成。网络终端用户可以方便地通过CIP提供的效劳功能实现对自动化系统的控制、组态、数据传输等操作,实现了CIP设备之间的互操作性,促进了设备的互换性。在CIP协议定义的设备里,除了一些满足网络设备最低限度功能的对象类外,可能包括某些对象类,这些对象所描述的功能不影响设备的动作,因此这类对象是可选的,当一个对象标识为可选时,它对该类型的所有设备来说是可选的【z钆如J?如图2.2所示,每个EtherNet/IP设备必须包括的有信息路由对象、连接管理器、标识对象、TCP/IP接口对象、以太网连接对象。而组合对象、参数对象、应用对象等都是可选的对象,依据设备描述中对设备的定义可以参加相应的特定应用对象。第一二章EtherNet/IP与Modbus—TCP协议分析一第一二章EtherNet/IP与Modbus—TCP协议分析一一须的~~一一选的\\墙、,/篱//~~≥,\\//岁图2-2EtherNet/IP对象模型2.1.3 EtherNeVlP协议报文数据结构EtherNe仂P协议规定了每一个封装数据包都含有一个固定长度为24字节的数据封装报头,一个数据包数据信息总长度不能超过65535字节,也就是封装内的数据总量不能超过65511个字节。报文正确封装好后就可以通过套接口发送至EtherNet/IP网络与网络上的其它节点进行通信[31】。数据报文的封装格式如表2.1所示。表2-1数据报文的封装格式字段 数据类型 意义Command UINT 命令字Length UINT 数据长度报文头 Sessionhandle UDINT SessionID(24字节) Status UDINT 状态代码SenderContext 8字节数组 发送方上下文Options UDINT 选项标志数据 EncapsulatedData 0-6551l字:肖K数组 特定命令相关的数据其中,Command是命令名称的16进制代码;Length指明报文的数据区数据的大小;Sessionhandle是由目标设备产生并返回给命令的发起者,之后发起者发送到此目标的所有信息都应插入相同的会话句柄;Status说明命令的接收者是否可以正确执行命令信息,此外应注意,封装报头的状态段并不能说明CIP信息本身是否可以得到正确解析执行,第二章EtherNet/IP与Modbus—TCP协议分析CIP信息有特定的错误处理机制;Sendercontext用来匹配请求与回复信息;Options为第二章EtherNet/IP与Modbus—TCP协议分析CIP信息有特定的错误处理机制;Sendercontext用来匹配请求与回复信息;Options为命令的发起者应将该段置为0,接收者依据是否该段值为0选择性接收数据;EncapsulatedData的数据格式根据命令的不同而不同,一般使用特定的数据格式或者通用数据包格式,通用数据包格式为命令组织特定数据格式提供了一种可扩展的方法。通用数据包格式定义了一种利用封装层发送协议数据的标准格式,包括工程计数、地址项、数据项、可选项四个局部,如表2.2所示。 表2-2通川数据包格式字段 数据类型 意义Itemcount UINT NumberofitemstOfollow(shallbeatleast2)Addressitern ItemStruct AddressinginformationforencapsulatedpacketDataitem ItemStruct TheencapsulateddatapacketOptionaladditionalitems其中,地址项与数据项又包括类型号、长度段、数据段3个属性,如表2.3所示,EtherNet/IP协议对此做出了详细的规约,对于使用命令SendRRData发送的基于无连接的的UCMM数据,地址项的类型号与长度段都为0且无数据段,数据项的类型号为0xB2,长度段与数据段分别为UCMM信息的长度与数据;对于使用命令SendUnitData发送的基于连接的显示数据,地址项的类型号为0xAl,长度段固定为4,代表发送的是32位的连接id,数据段即为连接id的32位数据,连接id不可重复使用直到相应的连接中断或者超时,数据项的类型id为0xBl,长度段与数据段为相应的数据长度与显示信息数据;对于使用命令SendUnitData发送的基于连接的I/O数据,地址项的类型号为0x8002,长度段固定为8,数据段相比于显示信息来说不仅仅拥有32位的连接id,还插入了一个32位的次序号,因为UDP协议没有控制数据包的顺序和出错重发机制,因此UDP的数据在传输时是不稳定的,通过在封装层标定次序号可以判断数据包的次序与丢包情况。此外在数据项内还包括套接口信息内容,在发起者与接收者之间用以发送基于连接数据的IP地址、端口号等信息。表2-3地址项与数据项格式字段 数据类型 意义TypeID UINT TypeofitemencapsulatedLength UINT LengthinbytesofdatatofollowData Vhriable Thedata(iflength>01当CIP数据封装完毕后就可以通过套接口编程发送到网络上,EtherNeVlP的报文封装结构是多层协议间的嵌套,报文从封装头依次为14字节的以太网报头,20字节的IP报头,20字节的TCP报头,然后就是封装后的CIP数据与CRC校科321。整个数据封装过程由相应协议栈完成,格式如图2.3所示。第一二章EtherNet/IP与Modbus—TCP协议分析第一二章EtherNet/IP与Modbus—TCP协议分析以太网报头 IP报头 TCP报头C1P报文封装 CRC(14字:俗) (20字:1了) (20字:肖)图2-3EtherNet/IP协议的报文封装2.2Modbus.TCP协议体系结构2.2.1Modbus.TCP协议结构组成Modbus.TCP是Modbus系列的网络级通信协议,广泛用于管理控制工业现场自动化设备。显而易见,它覆盖了使用TCP/IP协议的“Intranet〞和“Internet〞环境中Modbus报文的用途。因此,它与EtherNet/IP工业以太网协议相同,都是建立在广泛使用的普通商业以太网之上的工业以太网,Modbus-TCP协议结构组成如图2.4所示:应用层TCPIPCSMA/CD物理层(10M100M)图2-4Modbus-TCP协议结构组成显而易见,将串行Modbus应用层协议稍作修改应用到普通商业以太网之上就构成了Modbus.TCP协议,因此,串行Modbus与Modbus.TCP网络之间的通信将会变得简单明了易于实施,从而实现了Modbus系列工业控制网络从总线级到以太网级的无缝集成【33l。2.2.2Modbus-TCP协议通信原理Modbus.TCP是面向连接的工业以太网协议,连接在网络协议层很容易被识别,多个独立的事务可以被一个单一连接支持。另外,大量的并发连接被TCP协议所支持,因而很多情况下,在请求时重新连接或复用一条长的连接是发起者的选择。Modbus.TCP使用TCP协议传输信息报文,因为一个连接可以封装一个独立事务,且无需客户与服务器采取特别动作此连接就可被识别、管理与取消,这就使得进程拥有对网络性能变化的适应能力,方便平安特色的添加如代理或防火墙,所以面向连接的TCP比面向数据报的UDP具有更广泛的应用。协议所有的请求通常以半双工的方式,在给定的连接上通过TCP端口502发送,是基于应答模式的工业控制网络通信协议,因此,其它的请求无法在连接被占用的时候发出,可利用多点TCP连接来高速并发的进行通信报文的交换【川。第二章EtherNet/IP与Modbus-TCP协议分析2.2.3第二章EtherNet/IP与Modbus-TCP协议分析2.2.3Modbus—TCP协议报文数据结构本局部详细阐述了Modbus.TCP网络报文中请求与响应命令的数据报文封装的一般格式。Modbus.TCP是基于应答的网络通信协议,因此需要上位机主站发送相应的请求信息报文从站才会及时响应,Modbus.TCP功能代码大体共有三种类型,分别为:(1)公共功能代码:由Modbus.org认可并保证其唯一性,是已定义好的功能码。(2)用户自定义功能代码:不需要认可且不保证代码使用的唯一性,代码号分别为65~72和100。110这两组,需要RFC的认可之后才可以成为公共代码。(3)保存的功能代码:不可作为公共用途,是某些公司使用在某些传统设备的代码。常用公共功能代码见表2.4所示。表2_4常用公共功能代码功能码常用公共功能代码十进制 十八进制开关量输入 读输入点 02 02位读线圈 Ol 01操作 内部位或开关量输出 写单个线圈 05 05写多个线圈 15 OF模拟量输入 读输入存放器 04 0416位 读多个存放器 03 03操 内部存放器或输出存放器(模拟量输出) 写单个存放器 06 06作 写多个存放器 16 10Modbus.TCP报文格式分为MBAP(ModbusApplicationProtocal)与PDU(ProtocalDataUnit)两局部如图2.3所示,MBAP报文头由7字节固定大小的数据段组成,格式如表2.5所示:表2-5MBAP报文头数据格式域 K度 描述 客户端 效劳器端标志某个Modbus传输标志 2字节 由客户端生成 应答时复制该值询问/廊答的传输0=Modbus协议协议标志 2字节 由客户端生成 应答时复制该值1=UNI.TE协议应答时由效劳器长度 2字二1了 后续字节计数 由客户端生成端重新生成定义连接于目的单元标志 1字‘j卜 节点的其它设备 由客户端生成 应答时复制该值PDU局部根据不同的Modbus.TCP命令标准,数据报文封装格式会有所不同,总体分为功能码与数据两局部,如图2.5所示,由于具体的命令繁多,详细的命令格式可参考Modubs.TCP的协议文本手册。第_二章EtherNet/IP与Modbus—TCP协议分析●I-———————————————————————————————————————————————————————————————◆,第_二章EtherNet/IP与Modbus—TCP协议分析●I-———————————————————————————————————————————————————————————————◆,MoDBUSTCP/IPADU2.3本章小结本章分析了EtherNeVlP与Modbus.TCP工业以太网协议的体系结构,主要包括EtherNet/IP与Mdobus.TCP协议结构组成、协议通信原理以及协议报文数据结构,为后文EtherNet/IP与Modbus.TCP通信程序的编写提供了理论依据。第二章通信适配器硬{,l:电路殴计第三章通信适配器硬件电路设计第二章通信适配器硬{,l:电路殴计第三章通信适配器硬件电路设计3.1通信适配器总体设计方案在传统的工业设备嵌入式系统中,往往采用单CPU的设计,CPU不仅负责设备本体的状态控制以及动作执行,还需要运行特定的工业通信协议来完成设备的组网通信工作。这样的系统物理结构相对简单,但是随之而带来的一些重要问题也很明显,工业通信协议简短易行还好,假设采用相对复杂的工业通信协议那么不仅会加重CPU处理软件程序的负担影响实时性,而且如果设备想接入其它工业通信网络的话必然要对现行软件程序代码进行较多的修改,且同时需要对设备的硬件通信接口进行重新设计,效率低下实施困难,经济本钱高【35.361。因此这样的设备只适用于功能单一的工业通信网络,设备用途的多样性受到制约,给设备用户带来了诸多不便。因此迫切需要寻求一种解决方法,可以使用户摆脱繁重的工业网络通信协议软件的编写,并使用户可以利用统一标准的硬件通信接口快速易行地使自己的设备接入到不同的工业网络当中。较理想的解决方案是采用外接工业网络协议通信适配器的方法,用户设备CPU负责处理自身设备的状态控制以及动作执行,工业网络通信适配器处理复杂的工业网络通信协议以及提供标准的工业网络通信硬件接口,并且用户设备与工业网络通信适配器之间采用标准的硬件接插接口,即插即用,这样用户设备可以很容易的利用一系列具有不同工业网络通信协议的工业网络通信适配器来快速地接入到相应的工业网络当中去,具有广泛的通用性。传统的方法,两个不同系统CPU之间进行通信一般使用串行或者并行通信的方式,通信效率不高且不宜控制,而利用双口RAM作为两个CPU之间数据交换的缓冲器那么可以克服这些缺陷,易于实现两个不同系统CPU间大量的实时数据快速异步地交换,软硬件设计相对简单,很大的提高了系统间的数据传输效率以及可靠性137。38J。综上所述,利用双口RAM作为两个不同系统CPU间交换实时数据的媒介为硬件基础,开发具有广泛通用性的工业网络通信适配器是一种合理的解决方案。外糊G ≥ 底板模块 争嗽口$核心板模块 刀 卜、工业以太网设备 \ ∥ 主站工业网络通信适配器图3-1通信适配器电路系统总体设计框图如图3.1所示,方框内即为本文所开发的嵌入式EthcrNet/IP与Modubs.TCP双工业以太网通信适配器电路系统总体设计框图,通信适配器分别与外部应用设备和工业以太网上位机主站相连就构成了完整的工业以太网网络通信系统。第二章通信适露己器便件电路设计根本第二章通信适露己器便件电路设计根本的通信过程是外部应用设备在完成自身的工作处理后将数据发送给通信适配器,通信适配器在得知有数据写入后经过工业以太网协议程序分析处理,并通过以太网将打包后的数据报文上传至工业以太网主站;同理当工业以太网主站有数据报文发送时,通过以太网将数据报文发送至通信适配器,经工业以太网协议程序分析处理后,将解包后的数据移交给外部应用设备分析处理,这样便实现了以工业以太网通信适配器为通信桥梁的非工业以太网设备与工业以太网网络的数据交换。工业网络通信适配器的硬件实现需要进行详细周密的电路系统设计,考虑到通信适配器的实际用途,需要处理复杂的工业网络通信协议以及实时地传输工业网络通信数据报文,因此有必要使用嵌入式高速微处理器作为通信适配器系统的核心CPU处理芯片,这样可以确保通信适配器系统高速地处理分析工业网络通信协议以及进行工业网络通信数据报文的高效传输。现代高速嵌入式微处理器以及相应的外围存储芯片普遍设计精密引脚数众多,焊接过程中容易出现各种工艺问题,例如过多地反复焊接精密芯片极易损坏芯片本身内部的物理结构造成芯片性能的下降或者永久性损坏,而这些隐蔽的问题通常不会通过电路设计的电气原理图来发现问题,因此势必会对嵌入式系统的调试改良带来很大的不便。由于很多芯片多为嵌入式系统必不可少的硬件结构组成,轻易不会更改替换,如果能寻找到一种方法可以将电路系统中不会改动或极少改动的这一局部芯片归类到一起,当在进行电路系统改良时只需要更改其它需要变化的芯片,这样的设计将会给电路系统的二次开发与调试带来极大的方便。基于此,本文设计的工业以太网网络通信适配器采用两局部电路结构,采用核心板模块和底板模块的结构分成两局部来设计工业网络通信适配器的硬件系统是一种较理想的方法,如图3.1所示。核心板模块主要搭载的是工业网络通信适配器CPU以及一些存储电路如SDRAM电路与FLASH电路等等,核心板模块构成了通信适配器电路的最小启动系统结构;而底板模块通过核心板接口电路与核心板模块相连,使得二者物理结构上与电气连接上构成一个整体,底板模块主要由以太网电路、复位电路、状态指示电路和外部数据交换电路等组成。综上所述,采用两局部电路模块设计的好处是不仅方便硬件电路系统的设计,结构简单清晰,且易于调试维护。将系统分为两局部设计可以针对电路所发生的问题更加有效率的查找硬件故障,方便系统的二次开发,且修改通信适配器的硬件功能只需要重新设计底板电路模块即可,提高了二次开发的效率,节约了本钱,是一套行之有效的方法。3.2ARM核心板硬件电路设计本文所设计的EtherNet/IP与ModbUS.TCP双工业以太网通信适配器使用了双层电路结构,即分为了核心板模块和底板模块两局部组成,而其中核心板模块的主要设计思路是将通信适配器电路系统开发阶段不易变更的电路芯片集成到一起,功能上等同于通信适配器电路启动的最小系统,因此通信适配器电路系统核心板模块主要由微处理CPU以及SDRAM还有FLASH电路组成如图3.2所示。基于上述原因,本文所开发的工业网络通信适配器的核心板模块采用标准量产化的成品电路,这样可以很大程度上节约系统开发的本钱并增加了系统的可靠性与稳定性。第二章通信适配器硬什电路设计第二章通信适配器硬什电路设计3.3.1电源电路设计电源电路原理图如图3-4所示,由于$3C2440A处理器以及与处理器相连的周边外围芯片基于低功耗的要求均采用3.3V电压供电,而另外一些电路系统中使用的芯片那么采用较常用的5V电压供电,因此在采用5V电源给整个通信适配器系统供电的要求下,需要进行5V到3.3V的电源电压的降压转换来满足局部电路的供电需求,设计采用ASl117AR.3.3V线性稳压芯片作为5V到3.3V电压转换电路的核心芯片[391,其具有良好的线性稳压能力,额定功率符合通信适配器电路系统总体的功率消耗要求:在3.3V电压输出端外接LED电源指示灯,当通信适配器系统供电正常时点亮,可以指示电源模块的当前工作状态。2.6A半宁管扣?雪一半半{=3D图3.4电源电路原理图3.3.2以太网电路设计以太网电路原理图如图3.5所示,以太网电路作为通信适配器的核心通信电路,具有非常重要的作用。通过以太网电路,通信适配器和工业以太网主站之间可以实时地交换工业网络数据报文,具体的通信过程为工业以太网主站通过以太网向通信适配器以太网电路发送工业网络报文,以太网电路接收到报文信息后通过数据总线将报文发送给核心板模块的CPU进行分析处理;反之亦然,核心板模块CPU需要工业网络报文发送时首先通过数据总线将报文信息发送给以太网电路,以太网电路通过以太网进而发送给工业以太网主站,这样就完整的完成了一次工业网络数据报文的交换。因此以太网电路选用以太网MAC控制器DM9000做为核心控制芯片【矧,它的特点是完全集成、单芯片快速且符合本钱效益;H1102做为网络变压器,可以增加信号的传输距离,并利用隔离措施加强抗干扰能力并增加保护作用等等,且当接到电平不匹配的网121时不会对相互设备造成损害;网络变压器与RJ45接口相连,通过RJ45接VI与工业网络进行数据报文的交换。第二章通信适配器硬什电路设计lf丰毒南||l;IlIllllllll||llI||lll!llf是l篁l。l旱J己l景iIPl暑I!南譬l!闩|lzlll葛l丰I景I:晕I嚣l翻I嚣I第二章通信适配器硬什电路设计lf丰毒南||l;IlIllllllll||llI||lll!llf是l篁l。l旱J己l景iIPl暑I!南譬l!闩|lzlll葛l丰I景I:晕I嚣l翻I嚣I∞历自6n16a 置f1Ia 0耍矗聋e?)17In 呈0=uf..【)。矗7EI?萏甍蕊q【饼h翕。一^饶甓zH匦J.n富-L〞一^H~,臣-L景基>?+一釜.1釜古x上芒Ⅲ■^la>?0Ⅱ釜—o釜no釜§暑1)^a丕墨)lZi备n富-L8_譬莶。一 l|l||嚣l|l!降2卜2卜制zl扎;ikI掣ilill匡I盎l警l誊I导I寻I吉l耳I等I肆I耳I古『。l身1了8’静二l吐攀茧lj一T ;“1一.-II 僻 104l一:硎厂■I ∞I1R。D6IIIf104—LcD2图3.5以太网电路原理图3.3.3复位电路设计通信适配器的复位电路采用MAX811作为核心复位芯片【411,复位电路原理图如图3-6所示,2号引脚通过电阻与CPU的复位引脚相连。复位电路为用户提供了两种复位模式,机械复位模式和电平控制复位模式,当用户按下通信适配器的复位按键时MAX81l的3号引脚接地为低电平,此时MAX811将触发复位功能并将低电平复位信号通过2号引脚发送给CPU告知复位申请;第二种复位方法是用户通过对通信适配器的外部数据交换电路提供的外部复位接口提供复位电平,通信适配器接收到来自用户外部应用设备的复位电平,即RESET电气网络为低电平状念时,同样会令MAX8ll产生低电平复位信号发送给CPU进行处理,从而实现了两种不同的复位方法,设计灵活,可靠度高。第二章通信适配器埂f,J:电路设计Rsr第二章通信适配器埂f,J:电路设计Rsr—^—幽已3 2—上—驾』螋L上SW2 470GND M【AX81l图3-6复位电路原理图3.3.4指示电路设计指示电路原理图如图3.7所示采用了4个独立的LED灯,分别与CPU的4个可编程GPIO口相连,实时地指示通信适配器的工作运行状态,具体功能分别为看门狗工作状态、软件初始化状态、数据通信指示状态、超时提示状态4种工作状态提示,具体的工作指示方法在第四章中详细阐述。VDD33VjLEDl=Ⅸ卡 U亚堙tt00卡 U田13=Ⅸ00L日X●0图3.7指示电路原理图3.3.5核心板接口电路设计核心板接口电路原理图如图3.8所示,其作用是将核心板模块与底板模块在物理上与电气上紧密地连接成为一个整体。设计采用2.0ram标准间距的接插器件,从而实现核心板模块CPU与底板模块外围电路之间的信号通信。第二章通信适配器硬f,l:电路殴计变为低电平,可通过电路连接向CPU插入等待状态,第二章通信适配器硬f,l:电路殴计变为低电平,可通过电路连接向CPU插入等待状态,说明此时无法访问这个数据单元;(2)中断方案,双口RAM的两端分别提供了一个INT引脚,即INTR与INTL两个引脚,工作原理如图3-9所示,对于容量为1K的双口RAM在地址0x3fe与0x3ff处提供了两个数据单元作为中断功能存放器,当双口RAM左端CPU将数据写入到地址为Ox3行的数据单元时右端中断引脚INTR变为低电平向右端CPU提供中断信号,当地址为0x3ff的数据单元被右端CPU读取后自动重新回到高电平,0x3fe数据单元与INTL引脚使用方法办如此,因此利用中断方案可以很容易解决地址争用的问题。右端读取数据那么左端写数据\ O】|【3FF <
卜。>DPRAM触发 右端中断左端中断右端写数据霉 ◆ 0x3FE 乡\左端读取数据那么DPRAM自动去除中断图3-9双口RAM中断方式-丁作原理3.3.7外部数据交换电路设计通信适配器需要与外部应用设备进行数据信息的交换,为了便于外部应用设备利用通信适配器集成进入工业以太网,通信适配器需要提供标准的物理通信接口如图3.10所示,这样不同的外部应用设备只需要根据这种标准化的通信接口来设计自己的硬件接口电路,就可以迅速地与通信适配器物理上、电气上无缝结合接入工业以太网网络;延伸本文开发的通信适配器的设计思想,即另行开发其它工业通信协议的通信适配器设备时,仍可采用这种相同的物理硬件接口,此时用户应用设备不需要对自身硬件电路进行重新设计,只需要对设备软件稍加改动便可以利用新的通信适配器接入到对应的工业网络当中去,这样就极大拓展了同类型工业网络通信适配器的用途,方便了用户根据不同的使用环境将外部应用设备接入特定的工业网络中,而不用更改自身设备的硬件电路,稍加修改软件程序即可完成二次开发,效率高且本钱低。第二章通信适配器便什电路设计料第二章通信适配器便什电路设计料 穗昔兰鞠朔萋鞫咱躯兰兰; Ao!—荫h10F 一l苗酲 世l孟一 能—素盖譬曼—酋譬曼—蒲群一IAr)r)R5悭—黼悭—黹慨—严憋—靠e娈T蠢嚆}e鉴—肯专著A9R—嚆。2N/C——}一——蚩1丽酵一氨姓瓮避格肌麓眦重重眦8譬吝苔占g呈星芝暑石98呈吕呈兰旦呈呈呈兰舌弓呈呈呈呈兰2呈107R—焉—图3.10外部数据交换电路原理图硬件外围接口电路的设计得益于双口RAMIDT7130优秀的硬件性能变得简单易行,图3.1l所示即为CPU与双口RAM的电路连接示意图。$3C2440 S吼/4LVG4245 IDT7130图3.1lCPU与双口RAM的电路连接示意图.19.第二章通信适配器硬仆电路设计第二章通信适配器硬仆电路设计本文所设计的EtherNet/IP与Modbus.TCP双工业以太网通信适配器具有广泛的通用性,因此采用5V电源供电且为8位数据总线的双口RAMIDT7130作为外部应用设备与通信适配器问的通信桥梁。由于通信适配器侧处理器$3C2440的地址总线与数据总线为3.3V工作电平,因此在没有5V电平容限的前提下存在电平不匹配的问题,此时如果将CPU与双口RAM的数据总线直接相连的话,由于数据信号的双向传输性,CPU侧3.3V电平可以平安驱动双口RAM的数据总线,而双口RAM的5V数据总线电平信号驱动CPU的数据总线时,短时问的工作也许不会造成影响,但是如果长时间工作会造成CPU的硬件损坏,基于此原因本文采用电平转换芯片作为解决方案来满足通信双方电平匹配的需求。电路设计选用的电平转换芯片为TI公司生产的SN74LVC4245t431,为了实现5V与3.3V电平的相互转换,该芯片采用5V与3.3V两套单独的电源供电,分别与5V系统与3.3V系统相连,信号的传输方向由DIR引脚电平控制,当为高电平的时候允许信号从5V向3.3V方向传输,同理当为低电平的时候信号的传输方向相反。如图3-11所示,电路系统将CPUS3C2440的nGCS5引脚作为74LVC4245与IDT7130的共用片选线,低电平使能芯片;CPU的LnWE引脚与IDT7130的左端写使能刚W。引脚和74LVC4245的DIR引脚相连,当CPU读取数据的时候LnWE为高电平,74LVC4245的信号方向为IDT7130到CPU,当CPU向外写数据时LnWE为低电平,74LVC4245的信号方向为CPU到IDT7130,因此利用这种设计方法可以较好控制信号的传输方向;将CPU的LnOE引脚与IDT7130的左端OEL引脚相连,并将低10位地址总线与IDT7130的左端10位地址总线相连:将CPU的低8位数据总线与74LVC4245的3.3V数据信号端相连,那么74LVC4245的5V信号端与IDT7130的左端数据总线相连接,实现CPU与IDT7130通过电平转换芯片交换数据信号;相应的将CPU的nWAIT与EINT9与IDT7130的左端繁忙与中断引脚相连。双口RAM右端信号线以及其它硬件电路通过标准2.0mm间距的接插器件与外部应用设备连接,具体的接口电路如图3.12所示。接插器件图3.12通信适配器外部接口电路示意图第二章通信适配器硬1;,I:电路设计第二章通信适配器硬1;,I:电路设计电路设计中外部应用设备可通过接插器件的VCC与GND引脚为通信适配器提供5V电源与地信号:通过10位ADDRO地址总线与IDT7130右端地址总线相连,通过8位DATAO数据总线与IDT7130右端数据总线相连,为IDT7130提供地址与数据信号;通过CEO、OEO、刚Wo引脚为IDT?130提供片选、读写使能控制逻辑信号;INTO与BUSYO与IDT7130的中断与繁忙引脚相连,为外部应用设备提供中断和插入等待信号,根据外部应用设备CPU的相应体系结构可以灵活选择使用或者不使用这两个引脚或其中一个;通过RESETO引脚外部应用设备为通信适配器提供低电平复位信号;TXD、RXD两个引脚与通信适配器串行通信电路相连,串行通信可以为通信适配器进行固件升级以及提供扩展性功能。3.3.8PCB设计通信适配器底板模块电路局部的原理图设计完成之后进入PCB板图绘制的过程【441,需要注意的是通信适配器硬件电路系统属于精密的数字电路集成,且由于实际应用的需求,要尽可能小型化电路系统的设计,但是随之而来的问题就是电路板上元件排列紧密、布线困难,因此PCB板图的绘制要对系统的稳定性、可靠性加以详细的电磁兼容理论性论证。绘制完成的PCB板图以及成品的通信适配器硬件电路见附录图1。3.4本章小结本章首先分析了工业网络通信适配器的总体设计思路,将电路系统分为核心板模块和底板模块两大局部,这样可以更加高效的进行电路系统的丌发并且很大程度上降低了开发的本钱,由此作为通信适配器硬件系统开发的解决方案,对通信适配器硬件电路结构以及功能进行了详细研究,在PROTEL99SE软件环境下绘制了电路系统的原理图以及PCB板图并完成了PCB板的制作,为通信适配器的正确工作提供了可靠的硬件根底,是系统软件运行的前提与保障。第四章通信适配器软什程序设计第四章通信适配器软件程序设计第四章通信适配器软什程序设计第四章通信适配器软件程序设计本文所设计的工业网络通信适配器做为EtherNet/IP与Modbus.TCP工业以太网的从节点设备,需要具备EtherNet/IP与Modbus.TCP工业以太网的通信能力,且需要保证数据报文通信的高速性与可靠性。强大的网络支持能力令Linux操作系统支持所有的标准因特网协议【451,因此利用Linux操作系统可以高效的开发具备以太网能力的网络通信电子系统。此外,Linux操作系统还支持多种文件系统,为开发嵌入式应用系统打下了很好的根底m】,实时性优秀且源代码开放免费,易于丌发。因此本文所设计的工业网络通信适配器的软件局部采用嵌入式Linux做为底层的操作系统,进行EtherNet/IP与Modbus.TCP工业以太网通信程序的开发。4.1双口RAM的驱动程序设计4.1.1Linux的设备驱动程序Linux设备驱动程序作为操作系统内核和硬什设备之间的接口,屏蔽了硬件工作的具体细节,在应用程序看来硬件设备只是一个普通的文件而已,因此可以让应用程序像操作普通文件一样来控制各种硬件设备。设备驱动程序、应用程序与硬件设备之问的关系如图4_1所示【474引。设备驱动程序作为操作系统内核的一局部,需要完成以下功能:(1)初始化和释放外部硬件设备;(2)操作系统内核与硬件设备之间进行数据交换;(3)操作系统内核与应用程序之间进行数据交换,从而利用设备驱动程序来间接交换应用程序与硬件设备之间的数据;(4)对硬件设备出现的错误进行检测与处理。在操作系统对设备文件的组织方式中,每个设备都有相应的主、次设备号,主设备号来描述设备利用哪个设备驱动程序来进行控制,而次设备号表示使用相同设备驱动程序的不同具体硬件。在实际读/写时,可以根据需要设计成阻塞型或非阻塞型的输入输出,这些需要在设备驱动程序中完成。第四章通信适配器软1j,l:程序设计第四章通信适配器软1j,l:程序设计硬件设备 !设备驱动程序: 用户应用程序【 l 模数鐾换 提供相关硬l 运行于用户器、串口、 :/一 卜\件设备的机I/ .\进程空问,粤口篝塞际i、\: !/能,运行 }\、. i/不能赢接访:物理设备 I、 。,于内核空间j、 。f问内核由上节所述,Linux操作系统用户应用程序不会直接对外部物理设备进行直接操作,比方存放器的读或写等等,用户应用程序只能通过设备驱动程序来对外部设备进行控制操作。双口RAM具有两个数据通信端口,且每个端口相互独立,接口简单,在工业网络网络通信适配器系统中的作用是可以使通信适配器CPU与用户外部应用设备快速的、异步地交换数据信息,为处理器间的通信提供了很好的解决方案。因此必须要在嵌入式Linux操作系统中移植入双口RAM的硬件设备驱动程序才能使双口RAM在通信系统中正确高效的运行。双口RAM在通信适配器系统中的作用如图4.2所示:外部应用设备 /1 卜 |,几—八、通信适配器双口RAMCPU \厂]/ \\厂]/ CPU通信适配器图4—2双口RAM在通信适配器系统中的作用双口RAM作为两个处理器间共享数据的解决方案,关键的问题在于要防止两个处理器收发的数据冲突,明确不同类型数据的实际用途,即要正确区分出哪些是需要接收的或者发送的I/O数据,那些是需要接收的或者发送的命令数据等,在此将命令数据起名为邮箱命令,比拟形象的表达出此类数据的用途,就是发送配置命令。一个比拟理想的方法就是针对双口RAM的内存区域利用软件的方法进行存储空间功能性区域划分,即利用软件程序,将双口RAM存储区划分为几个子存储区,每个子存储区在物理上地址彼此相互独立,相应的每个存储区所存取的数据功能各不相同,这样就不会发生不同功能用途的数据相互冲突的问题,可以进行高效的数据存取访问。第四章通信适配器软件程序设计表4.1双口RAM的内存地址空问功能划分第四章通信适配器软件程序设计表4.1双口RAM的内存地址空问功能划分名称 偏移地址 人小 用途InputDataArea Ox000......OxOff 256bytes I/O数据输入OutputDataArea 0x100Oxlfjf 256bytes I/O数据输出PostboxInputArea 0x200......0x27f 128bytes 邮箱命令信息输入PostboxOutputArea 0x280......0x2ff I28bytes 邮箱命令信息输出NetworkArea 0x300......0x3bf 192bytes 存储网络状态ControlArea 0x3c0....-0x3fd 62bytes 存储控制状态HandshakeRegisters 0x3fe......Ox3ff 2bytes 中断存放器双口RAM的内存地址空间功能划分如表4.1所示,在1K的双口RAM内存空间中,除了3re.3ff两个字节固定的中断存放器地址外,利用软件将其它区域人为地划分为6个空间:(1)Ox000.OxOff的256字节地址为InputDataArea数据写入区域,即外部应用设备将I/O与参数数据写入到InputDataArea区域,然后被通信适配器CPU获取处理;(2)Oxl00.Oxlff的256字节地址为OutputDataArea数据输出区域,即通信适配器CPU将I/O与参数数据写入到OutputDataArea,随后外部应用设备可将数据读取供自己使用处理;(3)0x200.0x27f的128字节地址为PostboxInputArea邮箱命令写入区域,即外部应用设备将邮箱命令信息数据写入PostboxInputArea,供通信适配器CPU读取处理;(4)0x280—0x02ff的128字节地址为PostbOXOutputArea邮箱命令输出区域,即通信适配器CPU将邮箱命令信息写入到PostboxOutputArea供为外部应用设备读取处理;(5)0x0300.Ox03bf的192字节地址为NetworkArea网络区域,即通信适配器将相应工业以太网特定的状态属性数据写入NetworkArea供外部应用设备读取,在这里为EtherNet/IP或ModbUS.TCP特定的网络状态属性数据信息;(6)0x3c0.0x3fd的62字节地址空间为ControlArea控制区域,即存储着当前通信适配器的各种工作状态,由通信适配器根据当前电路系统工作状态实时更新状态数据,供外部应用设备读取,外部应用设备根据通信适配器当前的工作状态做出相应的控制处理动作。确定了双口RAM内存地址空间的功能划分后就可以编写驱动程序进行数据的存取控制访问了。Linux操作系统下的双口RAM驱动程序主要分为几个局部,驱动程序的初始化函数dpram__init()局部、结束函数dpram_exit()局部与功能性函数局部,利用filestaticconststructfile_operationsdpram_fops={.owner=THIS_MODULE,.poll=dpram_poll,.read=dpram_read,.write=dpram_write,.ioctl=dpramioctl.第四章通信适配器软仆程序设计.0pell第四章通信适配器软仆程序设计.0pell2dpramopen,.release=dpramrelease,);其中包括设备翻开、关闭函数,数据读、写函数以及控制函数和轮询函数。下面详细介绍双口RAM驱动程序的组成:(1)初始化、结束函数程序初始化阶段主要对外部设备的运行状态进行资源性配置,双口RAM作为CPU直接控制的外部设备,因此必须要对双口RAM的运行状态进行初始化,在初始化程序中主要完成以下工作,如图4.3所示:r开始-3\ 7l★I初始化设备结构体、I注册双口RAM设备上I 配置总线宽度和l 相应控制存放器上l申请物理地址并映射I 到内核虚拟地址土l配置中断存放器并l 申请中断源上(结束 )图4_3初始化函数程序流程图程序首先定义双口RAM设备的根本模型信息,配置主设备号为150,内存字节的大小为1K,根据双口RAM与CPU的地址总线接口连线确定基地址为0x28000000。在Linux2.6内核中,使用cdev结构体描述字符设备,cdev的定义在<linux/cdev.h>头文件中可找到,因此还要对双口RAM设备创立cdev结构体,并使用register region函数申请的设备号与操作cdev结构体的内核函数来注册双口RAM字符设备。完成了结构化的资源配置后,需要对CPU内部的存放器进行相应设置,使CPU可以正确控制双口RAM。由于本文使用的双口RAMIDT7130属于8位的数据总线结构,即一次只能对8根数据线组成的单字节数据进行读写,因此需要将CPU的数据总线配置成8位模式。使用requestmemregion()函数进行物理内存区域访问申请并检测双口RAM所占物理内存区域是否在Linux系统内是独占的,这样做得好处是可以确保设备驱动程序可第四章通信适配器软f,I:程序设计第四章通信适配器软f,I:程序设计以唯一地正确访问外部芯片,且由于Linux操作系统支持MMU虚拟内存管理,不直接对物理地址进行存取访问,而是利用ioremap()函数进行虚拟地址映射,将物理地址转化为虚拟地址,虚拟地址的首地址通过ioremap()函数的返回值返回,此后在设备驱动程序中就可以利用这个虚拟地址对双口RAM进行存取访问了。在初始化程序的最后需要完成中断资源配置的相关工作,将相应的GPIO引脚配置为中断功能并使能中断设置成下降沿触发方式,最后使用request()函数为中断源配置中断处理函数interrupt()。至此初始化程序完成,初始化程序是在设备驱动程序加载时自动运行的,当驱动程序成功加载并建立设备节点后就可以在工业以太网协议通信程序中利用open()与close()系统调用来翻开与关闭双口RAM设备文件了,由于双口RAM驱动程序中的apram )与 close(所以本文忽略对这两个函数的介绍。当设备驱动程序卸载时同样需要编写卸载退出函数dpramexit(),其中主要的工作就是卸载和释放初始化程序申请的系统资源,防止过多的资源在不使用的时候被独占,卸载程序如下:staticvoiddpram_exit(void){iounmap(dpramremap); //释放虚拟内存空问releasememregion(DPRAMBASE.DPRAMLEN);//释放申请到的内存空间freeirq(IRQEINT9,NULL); //释放中断源cdev ._devp.>cdev); 删除// kmaUocunregister_chrdevregion(MKDEV(DPRAM_MAJOR,O),1);)(2)中断处理函数程序计算机在工作期间,任何异常或预料之外的紧急事件发生时,CPU会中断当前J下在运行的任务去执行特定的事件处理任务,执行完毕后会继续回到刚刚被打断的地方继续运行或调度新的进程工作,这种处理方法叫做中断,它是计算机可以更好更快利用有限的系统资源解决系统响应速度和运行效率的一种控制技术。根据双口RAM的中断功能,本文使用双口RAM内存空间内地址为0x3fe与Ox3ff两个中断存放器中的数据作为外部应用设备与通信适配器相互交换的中断命令数据,其中0x3fe地址存放器由外部应用设备写入中断命令并由通信适配器读取,0x3ff地址存放器由通信适配器写入中断命令供外部应用设备读取,两个存放器中标志位的定义如表4.2与4.3所示,因此在双口RAM驱动程序中,中断函数主要完成的工作是读取双口RAM中断存放器中的中断命令码,并在中断函数中根据读取到的中断命令码来执行相应的处理动作,包括置位某些全局标志位或唤醒等待队列等等。第四章通信适配器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年焊工考试考前冲刺练习(轻巧夺冠)附答案详解
- 2024全国统考教师资格考试《教育教学知识与能力(小学)》全真模拟模拟题及参考答案详解【基础题】
- 2024自考专业(计算机信息管理)试题预测试卷【有一套】附答案详解
- 荔枝承包合同(标准版)
- 按揭车购买合同(标准版)
- 2023年度计算机四级练习题附参考答案详解【满分必刷】
- 养殖追溯系统用户使用手册-养殖企业
- 2025年云南大理祥云县祥城镇人民政府公益性岗位人员招聘笔试高频难、易错点备考题库及答案详解1套
- 2025年教育精准扶贫政策实施过程中的教育资源共享报告
- 2025年电商平台大数据分析在电商行业战略合作伙伴关系中的应用与策略报告
- 2025-2026秋学生国旗下演讲稿:第4周涵养文明习惯点亮成长底色-养成教育
- 2025秋新部编版一年级上册语文教学计划+教学进度表
- DB13-T 6095-2025 水利工程施工图设计文件编制规程
- GB/T 20841-2007额定电压300/500V生活设施加热和防结冰用加热电缆
- 偏微分方程定解问题课件
- 培训师的核心技能-讲义课件
- 苏教版四年级(上)科学第二单元测试题(无答案)
- 国内各地大厦宾馆饭店酒店用电负荷仅供参考
- 娱乐场所申请书范本
- 《智慧农业》的ppt完整版
- 新浙教版小学美术一年级上册教学计划及教学目标分解
评论
0/150
提交评论