基于profibus-dp从站的现场总线多协议转换网关分析

基于profibus-dp从站的现场总线多协议转换网关分析

ID:33012644

大小:3.04 MB

页数:86页

时间:2019-02-19

上传者:U-10915
基于profibus-dp从站的现场总线多协议转换网关分析_第1页
基于profibus-dp从站的现场总线多协议转换网关分析_第2页
基于profibus-dp从站的现场总线多协议转换网关分析_第3页
基于profibus-dp从站的现场总线多协议转换网关分析_第4页
基于profibus-dp从站的现场总线多协议转换网关分析_第5页
资源描述:

《基于profibus-dp从站的现场总线多协议转换网关分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

于现代工原因和应的现场总升级的难因此,研本课题将PROFIBUS.DP、CAN总线和工业以太网等目前使用较广的几种现场总线作为研究对象,通过分析各类现场总线的协议和通信模型,提出了基于协议帧转换的现场总线协议转换方法。并根据该方法设计相应的协议转换网关,实现多协议转换。在研究中,PROFIBUS.DP总线作为主网络,其它总线设备作为接入的从站设备,因此协议转换网关主要基于PROFIBUS.DP从站进行设计开‘△反。文章首先介绍了各主流现场总线的技术特点,并重点研究和分析了PROFIBUS.DP总线、CAN总线、以太网和RS232的工作方式,协议帧结构。然后,结合网关要实现的功能进行多协议转换网关软硬件的设计。为了提高网关性能并降低设计难度,硬件系统采用了高性能的ARM9处理器作为控制核心,使用专门的现场总线协议芯片进行各总线通信接口的设计。最后的协议转换网关的软件设计则是在前面协议帧设计和转换方法研究的基础上进行的,是整个网关设计的重点。文章阐述了软件的设计目标和框架,介绍Lmux操作系统的特点,以及相关设备驱动的开发,并分析协议转换在Lmux系统下的实现方式,相关任务的调度和通信。在实验室的环境下,利用虚拟设备模拟了协议转换网关的应用环境,对网关各总线接口的数据通信进行测试。试验结果表明该网关可以较好的实现CAN总线设备、RS232设备与PROFIBUS.DP主站的通信,以及主站和上层以太网的通信。关键词:现场总线;协议转换;PROFIBUS.DP;CAN总线;以太网 杭州电子科技大学硕士学位论文AbstractFieldbushasbeenusedinthefieldofmodemindustrialcontrolwidelybecauseofitsopen,operability,real-timecharacteristics.Usingfieldbusisanimportantwayfortheinformatizationofenterprises.Duetothehistoricalreasonandthedifferenceoftheapplicationarea,thereareavarityofFieldbusstandardswhichcoexistintheareaoftheinsudtrial.ThefieldbuseswithdifferentprotocolCarlnotcommunicatewitheachother.ThediversityoftheFieldbusstandardincreasesthedifficultyoffieldbustechnologyupgradebasedontheoriginaldevicesandhinderstheinformationexchangebetweendifferentfieldbuses.Thissituationisnotconductivetothedevelopmentofenterpriseinformatization.Forthesereasons,theresearchofinterconnectionbetweenfieldbuseswithdifferentstandardisveryurgentandhaspracticalsignificance.PROFIBUS—DP,CANbus,EthemetandRS232wereusedastheresearchobjectsinthisdissertation.Theprotocolconversionmethodbasedonprotocolframeconversionhasbeenproposedbyanalyzingtheirprotocolsandcommunicatonmodels.Basedonthismethod,amulti-protocolfieldbusconversiongatewayhasbeendesigned.TheotherfieldbusdeviceswereconnectedtothePROFIBUS-DPasslavesthroughtheconversiongateway.Therefore,thedevelopmentoftheprotocolconversiongatewaywasbasedonthePRFIBUS-DPslave.First,thedissertationintroducedthetechnologicalfeaturesofthesefieldbuses,andfocuedontheresearchandanalysisoftheworkingwayandprotocolframestructureofthePROFIBUS-DP,CAN,EthemetandRS232.Then,thehardwareoftheconversiongatewayWasdesignedaccordingtothefunctionsofthegatewayInordertOsimplifythedesignofthehardwareandimprovetheperformanceofthegateway,theARM9一basedprocessorWasadopted.Atsametime,protocolchipswereusedtOdesignthefieldbuscommunicationinterfaces.Last,protocolconversionsoftwarewasdesignedbasedontheprotocolframedesignandtheresearchofprotocolconversionpreviously.Thedissertationelaboratedthedesignobjectiveandframeworkofthesoftware.ThefeaturesofLinuxandthedevicedriverdevelopingunderLinuxwereintroduced.Thedissertationanalysisedtheimplememationoftheprotocolconversionandtheschedulingandcommunicationoftasksrelated.n III 杭州电子科技大学硕士学位论文目录⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.I⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯II⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯1j景⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..11.2.1现场总线技术简介⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.11.2.2现场总线协议转换的研究现状与发展方向⋯⋯⋯⋯⋯⋯⋯⋯⋯..21.3研究目的和意义⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..41.4研究所做的工作和论文结构安排⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..41.5小结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.5第2章现场总线技术⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一62.1现场总线介绍⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..62.1.1现场总线的发展现状⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯62.1.2现场总线的技术优势⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..62.1.3现场总线的标准化⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯72.2PROFIBUS.DP总线技术⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.72.2.1PROFIBUS概述⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯72.2.2PROFIBUS的通信模型和系统组成⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯。82.2.3PROFIBUS.DP的通信协议规范⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一lO2.2.4PROFIBUS.DP主站完成的工作与从站状态机⋯⋯⋯⋯⋯⋯⋯⋯12’2.2.5GSD文件⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯132.3CAN总线技术⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯132.3.1CAN总线的技术特点⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯132.3.2CAN的通信模型⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..142.3.3CAN报文传输和帧结构⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯152.3.4错误类型与出错检测⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯l72.4工业以太网⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯l72.4.1工业以太网介绍⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯172.4.2TCP/IP协议⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯192.4.3工业以太网的帧结构⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯j⋯19W 3.7以太网模块⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯313.7.1DM9000以太网控制器⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.313.7.2以太网接口电路⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.323.8RS232接口⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.333.9d、结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯33第4章多协议转换网关的软件设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.344.1软件的总体设计框架⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..344.1.1软件设计目标⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯344.1.2软件总体架构⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯344.2基于Linux的设备驱动开发⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..354-2.1Lmux操作系统介绍⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.354.2.2Linux下的设备驱动程序概述⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..364.3各总线接口模块的设备驱动实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.374.3.1SPC3驱动模块⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..374.3.2SJAl000驱动模块⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.4l4.3.3DM9000驱动模块⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.44V 杭州电子科技大学硕士学位论文4.3.4RS232串口驱动⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..494.4协议转换设计方案⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.524.4.1应用层协议帧设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯524.4.2网关与以太网的通信实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯554.5基于Linux的协议转换任务设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯574.5.1Linux的任务机制⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..574.5.1协议转换网关的任务划分与实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯584.5.2任务调度与通信⋯⋯⋯⋯⋯⋯...⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯604.6,J、结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯6l第5章多协议转换网关的测试⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.625.1测试环境⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.625.2测试过程和结果⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯625.2.1从站状态机的测试⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯625.2.2CAN总线设备数据收发测试⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯635.2.3以太网接口的数据发送测试⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.645.2.4RS232数据收发测试⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯645.3小结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯65第6章总结与展望⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯666.1总结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯666.2展望⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯66致{射⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.68参考文献⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.69附录发表的论文及参加的科研项目⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.73VI 活的各方面都已经发生以自动控制技术和计算机网络技术为核心的信息技术正迅速地渗透到生产现场的每个层面,覆盖了从生产车间到企业管理的各个方面,逐步形成以控制网络为基础的企业管理系统【l】。现场总线技术作为其中的核心部分,正顺应这个趋势快速发展。现场总线作为工厂信息化网络的基础,联系整个生产过程现场的控制设备,并作为枢纽与更高的管理层沟通。由于技术的不断发展,现场总线已不仅仅局限于数据通信的技术范畴。控制功能块、控制网络的不断复杂,管理内容的不断扩充,使现场总线逐渐成为网络系统和控制系统的结合体,形成了控制网络技术。现在,互联网技术也融入到了现场总线,使控制网络又进一步扩展了作用范围。现场总线以其具有的开放性、实时性、可操作性以及良好的环境适应性等特点而被广泛应用于各类生产企业,并成为了企业信息化的重要组成部分。1.2研究背景1.2.1现场总线技术简介现场总线技术从上世纪80年代出现至今,已经历了将近30年的发剧11。现场总线作为一种工业领域的通信网络,成功的融合了电子计算机技术、控制技术和通信技术【2J,将工业现场的各种设备连接成一个可相互通信的网络。现场总线正广泛应用于过程自动化、制造自动化、楼宇自动化等领域,并向更多行业渗透。通过物理连接,现场总线将工业现场的各种控制设备、测量仪器、仪表连接成网络,这些设备成为能独立承担某些控制、通信任务的网络节点,并能互相沟通信息、共同完成任务。由于现场总线是一种开放式的互联网络,可以和不同层次的网络连接,从而实现资源共享。为了保证本质安全的需求【31,现场总线设备可以直接从通信线路上获取能量。因为现场总线具有上述技术特点,所以现场总线不仅在功能、实时性和可靠性上具有较大的优势,还在控制系统的设计、安装、维护等方面都体现了优越性。看到现场总线技术所具有的巨大优点,很多机构和组织都在现场总线技术的研究方面进行了大量的投入,并获得了许多有价值的研究成果,各类现场总线技术相继在市场上出现。一些现场总线技术已经在一些特定的应用领域展现了自身的特点和优势,表现出了较强的竞争力。为了推广各自的现场总线技术和产品, 杭州电子科技大学硕士学位论文成立了许多现场总线技术组织。其中较为著名的有:现场总线基金会(FF),PROFIBUS协会,LonWorks协会,工业以太网协会IEA等【4】。各种现场总线标准也应运而生。这些应用于各领域的不同标准的现场总线在很大程度上推动了相关企业内部的信息化发展,极大的提高了生产效率。但众多标准的出现却违背了工业标准化的初衷,使数据通信和网络连接的一致性面临了许多问题。在这个全球化和信息化的时代,全球化大生产已成为了工业生产的主要模式,从技术的角度来看,各种技术标准的统一也成为了发展的必然趋势。为了解决这一问题,国际标准组织ISO和IEC曾想制定一个统一标准的现场总线,然而在现场总线技术领域却呈现出来一个十分复杂的局面,标准制定的过程中遇到了很多阻力p116][71。从各种标准制定的历史中,我们可以发现:标准的制定都是以市场上最为成功的技术为基础的。因此,各大公司和组织为了在标准的制定中获取更多的话语权,在业内展开了一场标准争夺战【8】。总线标准制定的竞争则体现了各公司在技术领先地位上的竞争,但最终都要归结为市场的竞争。那些技术落后,市场占有率低的协议将会被淘汰;而技术先进,支持厂商多,协议开放度高的总线技术,具有更强的生命力和更大的发展空间。经历了一系列的插曲【5】和多年的努力之后,国际现场总线标准IEC61158于2000年颁布。但这个国际标准却是一份让人感到困惑和尴尬的标准,它包括了8种互不兼容的总线协议【8l:TRll58,ControINet,PROFIBUS,P-Net,FOUNDATIONFieldbus,SwiitNet,WorldFIP,INTEBUS。近年来,随着以太网技术不断向工业领域渗透,结合以太网技术的现场总线越来越受到人们的关注,相关标准的制定也不断推进。在2003年发布的新标准IEC61784中增加了3种基于以太网的新协议。这些结果违背了当初制定单一现场总线标准的初衷,而且在今后很长的一段时间内,这种现状将难以改变。1.2.2现场总线协议转换的研究现状与发展方向在这种多总线标准并存的现实下,用户不可避免地会面临总线的选择问题。对一些老用户来说,他们需要在原有的总线系统之上进行技术升级和改造。新采用的现场总线可能与原有的总线设备互不兼容,但完全采用新系统代替原有系统的成本会很高,这就要考虑到新总线与原有设备之间的互操作问题【10】【11】。在现代企业网中,以太网一般作为上层网络,现场总线要和以太网进行通信也必须考虑互操作的问题。此外,随着企业的生产规模不断扩大,企业内部可以涵盖多种现场环境,而对不同的生产现场,所适用的现场总线也会不同。不同现场总线之间的互操作性是这些企业在信息化发展过程中需要解决的问题。总线协议转换则是不同总线间互操作的重点。2 供了基本条件。早期的许多协议转换研究都是在OSI的基础上展开的【14】【15】【161。现场总线虽然不同于传统的计算机网络,但作为控制技术与计算机、通信技术相结合的产物,各类现场总线的协议大多都是在OSI的基础上,并根据自身的特点进行设计的。与此同时,各类现场总线协议的逐渐公开化,使在此基础上进行现场总线协议转换的研究成为可能【17】【18J。现场总线协议的转换根据协议之间的差异可分为同类协议间的转换和异类协议间转换。对于同类型的现场总线,主要的区别是在应用层。诸如PROHBUS总线,根据应用场合的不同该总线又分为:Profibus-FMS、Profibus-DP和Profibus-PA。这三类总线之间要进行通信,就必须标准化应用层的逻辑结构并进行设备描述I¨J。对于协议转换,人们更关注的还是异类协议间的转换。目前,异类现场总线协议转换的方法主要有:基于OPC的协议转换技术和协议转换网关。OPC技术全称是ObjectLinkingandEmbedingforProcessControl,它已成为现场控制设备和过程管理系统进行通信的技术规范和标准119112们。OPC技术基于微软的OLE技术,采用了客户/服务器模式,由硬件生产厂家或第三方负责开发访问接口,并以服务器的形式提供给客户,用户负责创建服务器对象和访问服务支持的接口。OPC服务器读取来自现场设备的数据,将不同硬件厂商的不同类型数据转换为格式统一的OPC数据,并通过OPC接口将数据传递给客户应用程序,从而实现各种系统的集成。采用OPC接口技术可以实现不同总线之间的互联,其协议转换的工作都由上位机软件完成,实现方便,但缺点也较为明显:由于依赖上位机,总线中节点间的通信较慢,实时性不高;依赖于微软操作系统,开发成本高,在嵌入式系统中的实现有一定难度。网关12lJ是在采用不同体系结构或协议的网络之间进行互通时,用于提供协议转换、路由选择、数据交换等网络兼容功能的设施。网关最早出现在计算机网络的互联当中,但由于现场总线系统与计算机网络所具有的相似性,网关已被引入到现场总线的协议转换研究当中。目前,采用工业以太网技术或OPC接口技术 杭州电子科技大学硕士学位论文可以实现不同总线间的互操作,但这只能在各系统的主机间实现,现场设备间目前还无法直接进行,因而达不到系统的实时性要求。所以在很多实时性要求高的场合,使用协议转换网关更为适合[2211231。在目前的现场总线协议转换网关的研究当中,更多的还是1对1的协议转换研究,通过专门的协议芯片和采用高新能的处理器对不同协议的数据报文、诊断信息进行处理,最后实现协议的转换[241125】【2611271。随着以太网和无线技术在工业领域的应用,这些新技术在和传统的现场总线进行通信时必然也会遇到互操作的问题,因此这一类的网关设计也不断受到人们的关注【28】【291。OPC和现场总线协议转换网关都能够在一定程度上解决异类现场总线间的互操作问题,但随着电子信息技术和工业以太网的发展,以及物联网概念的提出,现场总线协议转换研究将会向着多协议转换、智能化、高可靠性和高实时性方向发展。1.3研究目的和意义介于多种现场总线并存的现状,研究协议转换网关具有比较大的实际意义,本课题旨在开发一种基于嵌入式系统的多协议转换网关,实现PROFIBUS.DP总线下的多总线设备的接入。课题从现场总线协议转换方法的研究出发,通过分析PROFIBUS.DP总线、CAN总线、以太网和RS232协议栈结构和通信方式,设计出基于通用协议栈的协议转换方法。在此基础上开发出有多个不同总线接口并具备实时调度能力的现场总线多协议转换网关。通过该网关,用户可以方便的将基于CAN总线、RS232串口等设备接入到PROFIBUS.DP总线中,PROFIBUS.DP也可以通过以太网接口与以太网进行通信。1.4研究所做的工作和论文结构安排在本课题中,作者主要负责协议转换方法的研究和接口的设计与实现,基于Linux的硬件驱动开发,网关协议转换与网关通信的任务设计,并完成设备的测试工作。具体包括:1)深入学习和分析PROFIBUS.DP总线、CAN总线、RS232总线和以太网这四种总线协议的具体实现和相关协议帧结构,以及各自的通信方式。提出协议转换的方法和网关的整体实现方案。2)搭建基于ARM9处理器的硬件平台,设计相关总线接口。3)编写各硬件模块在Linux系统下的驱动,完成嵌入式Linux系统的移植和文件系统的构建等工作。4)编写协议转换程序,实现在Linux下的多任务调度。论文的结构安排如下:4 本章介绍了本课题的研究背景和研究目的。首先介绍现场总线的发展现状,分析了多种总线标准共存的原因以及所带来的问题。然后阐述了进行现场总线协议转换的意义,介绍目前的一些研究现状,并给出了课题的设计任务。最后,介绍了论文所涉的内容和工作安排。5 杭州电子科技大学硕士学位论文第2章现场总线技术状“现场总线"一词已经被广泛使用,现场总线技术也被广泛应用于工业控制领域。它的出现被认为是工业控制领域的一次革命f301。现场总线通常指的是一个将诸如传感器、执行器、现场控制器等现场设备与人机界面相结合的控制网络。现场总线涉及各种看似紧密联系的方法和技术,而它们之间有很大的区别。现场总线技术是一种技术,一种政治,它的发展也是人们的一种探索历程【61。从现场总线的概念被提出以后,出现了各种关于现场总线的研究论文、声明和所谓的独家报道,许多公司也相继推出了各自的总线产品。在现场总线发展的初期,由于没有相关的标准可以遵循,各公司只能根据自身的应用领域和客户群体进行现场总线技术开发。很多公司都意识到现场总线技术将会在未来工业控制领域中起到十分重要的作用,他们在开发产品的同时就将相关总线技术进行标准化。各种不同标准的现场总线就此应运而生。对用户来说,标准统一的现场总线才能实现真正意义上的开放,基于这一标准的现场设备能够实现互连和互操作。但是现场总线的发展却和人们的初衷大相径庭,统一标准的现场总线并没有形成,多种总线标准同时出现在国际标准当中。就目前的发展来看,在未来的很长一段时间内,这种多种总线并存的局面将会一直延续。各个公司和相关利益团体关于现场总线技术的竞争也已从标准之争转向了技术之争和市场之争。2.1.2现场总线的技术优势作为一种实现现场级设备控制的网络通信技术,现场总线之所以能够如此广泛应用于各行业的自动化系统中,这与它所具有的技术特点和技术优势密切相关的f30l【311。首先,现场总线是一种开放性的系统。与目前仍然广泛使用的DCS系统相比,现场总线克服了DCS系统中采用专用网络所造成的缺陷。由于通讯协议的公开化,现场总线可以将遵循该协议的不同厂商的设备进行互联,构建一个开放式的互联网络。其次,现场总线具有互可操作性。总线网络中的设备可以实现数据信息的传递和交换,性能相同但生产厂商不同的设备可以相互替换。此外,现场总线还具有良好的实时性和较强的环境适应性。由于现场总线提供了相应的通6 杭州电子科技大学硕士学位论文信机制和时间发布与管理功能,使控制系统满足可以实时性要求。生产现场的环境通常比较复杂,要求各现场设备和网络系统具有的对环境的适应性。现场总线设备一般由总线供电,可以满足本质安全的需要,同时现场总线通常使用屏蔽电缆和光缆作为传输介质,从而大大提高了现场总线的环境适应能力。介于现场总线技术所具有的技术特点和优势,现场总线被广泛应用在控制系统中,并在系统的安装、使用和维护等方面都体现出了明显的优势。2.1.3现场总线的标准化如前文提到的,现场总线发展至今都没有出现统一的标准,目前依然是多种总线并存。但人们为制定统一标准所做的努力却从未停过【31】【32】。现场总线出现不久,国际电工组织IEC就着手开始制定现场总线标准,并成立了专门的工作组。由于各方的意见不同,标准制定工作进展缓慢。在经历了将近16年的纷争之后,一个名为IEC61158的现场总线标准终于在2000年初出炉了。但是该标准是一个各方妥协的产物,其中包括了8类不同类型的现场总线标准,可以说这是一个不是标准的标准。到了2002年,该标准又进行了比较大范围的修改,协议包括的总线类型增加到了lO种。为了便于标准的应用,IEC又制定了IEC61784,作为IEC61158的补充和解释。.该标准包括了近几年发展的实时以太网标准,如EtherNet/IP,PROFINET,Ⅵ町EMP等总线标准。经过各方妥协形成的仍是多总线标准并存的局面,总线类型也没有因为标准的制定而减少。目前,光靠制定总线标准已无法平息这场纷争,各大厂商和组织也不再把重点放在标准制定上,他们更关心的是如何占领市场。各总线组织不断完善和推出新的总线技术,期望能获得更多的市场份额。2.2PROFlBUS-DP总线技术2.2.1PROFIBUS概述PROFIBUS(ProcessFiledbus)是IEC61158总线标准下的一种国际性的现场总线标准。它具有认证规范、标准开放、应用范围广泛等特点,目前已被广泛应用于各类自动化行业以及电力电子等领域【33]134】。根据应用特点的不同,PROFIBUS又可分为PROFIBUS.DP,PI的FIBUS.FMS和PROFIBUS.PA这三个子集。它们各自的特点如下【35】【361。PROFIBUS.DP是专门为自动控制离散系统与设备分散I/O之间的通信而设计的,用于分布式控制系统设备间的高速数据传输。PROFIBUS.FMS适用于承担车间级通用性数据通信,可提供通信量大的相关服务,完成中等传输速度的周期性和非周期性通信任务。PROFIBUS.PA是专门为过程自动化设计的,采用IECll58.2中规定的通行规程,满足安全性较高的本质安全应用。7 杭州电子科技大学硕士学位论文如图2.1所示为三个子集在企业网络中的应用层次。工厂管理级至问级现场级工厂管理系统。<申薷>甲.:申甲申:图2.1PROFIBUS在工厂网络中的应用层次P3J上述这三个子系统构成了传统意义上的PROFIBUS系统。PROHBUS.FMS侧重于车间级较大范围的报文交换,它主要定义了主站和主站间的通行功能。PROFIBUS.DP主要是面向工厂现场层的应用,用于完成包括诸如可编程控制器、自动控制设备、传感器、执行器间的快速可靠的的通信服务。PI的FIBUS.DP网络的传输速度可达12Mb/S,其应用在整个PROFIBUS的应用中占了很大比重。PROFIBUS.PA则是为了满足安全要求较高的场合而推出的,它支持总线供电,具有本质安全的特点。PROFIBUS.DP和PROFIBUS.PA都被纳入了国际标准IEC61158当中,然而由于PROFIBUS.FMS逐渐被工业以太网产品所替代而慢慢退出了市场。为了向工业以太网发展,PROFIBUS国际组织又推出了建立在交换式以太网和TCP/IP协议基础上的PROFINET。为了与原有的PROFIBUS产品兼容和互联,PROFINET大量使用了PROFIBUS固有的用户界面规范,因此PROFINET也是PROFIBUS中的一个子集。2.2.2PROFIBUS的通信模型和系统组成PROFIBUS在OSI开放系统互联参考模型的基础上建立了相应通信模型。如表2.1所示为PROFIBUS各子集的通信模型以及与OSI模型的对照关系【37】。可以看到,PROFIBUS.DP采用了通信参考模型的第l层,第2层和用户接口,而对第3"-'7层未加以定义。使用简化的通信模型有利于协议的设计并可以有效提高数据传输效率。通过用户的应用接口,第3方的应用程序可以被直接调用。数据链路层采用了基于TokenPassing的主从轮询协议。物理层使用了异步传送模式的RS485技术或光纤。8 杭州电子科技大学硕士学位论文表2.1OSI参考模型与PROFIBUS通信模型【35】OSIPROFlBUS-FMSPROFIBUS-DPPROFIBUS-PAFMS.Profile规约DP规约PA规约应用层现场总线报文规范未定义表达层会话层未定义传输层网络层现场总线数据链路层FDLIEC接口数据链路层MAC介质存取控制子层——Token_Passing物理层RS.485/光纤IEC61158.2标准PROFIBUS.FMS的第1层和第2层与PROFIBUS.DP完全相同,数据链路层同样是基于TokenPassing的主从轮询协议。两者不同的是,PROFIBUS.DP没有定义应用层,而PROFIBUS.FMS则在应用层定义了现场总线报文规范。该规范包括了应用协议,并向用户提供了可广泛选用的通信能力。PROFIBUS.PA的数据链路层采用了扩展的基于TokenPassing的主从轮询协议,与PROFIBUS.DP基本相同。为了具备本质安全能力,并可以通过电缆向设备供电,PROFIBUS.PA的物理层使用MBP曼彻斯特编码总线供电技术。由于物理层的不同,PROFIBUS.DP与PROFIBUS.PA需要通过耦合器才能互联。如图2.2所示为PROFIBUS的主从通信结构和令牌传递模型。图2.2PROFIBUS主从结构和令牌传递模型mJf35】PROFIBUS现场总线系统由三类站点设备组成,其中包括两类主站即1类主站和2类主站。1类主站一般指可编程逻辑控SU器(PLC)、工业PC或可作为1类主站的控制器,该类主站主要负责完成总线通信控制和设备管理;2类主站指操作员工作站、编程器和操作员接口,该类主站可以管理1类主站的组态数据和诊9 杭州电子科技大学硕士学位论文断数据,完成各站点的数据读写、系统组态、监视和故障诊断。除了两类主设备之外第三类设备是从站设备,从站在主站的控制下完成组态、参数修改和数据交换。从站设备一般由驱动器、传感器、执行器等带有PROFIBUS接口的I/O现场设备组成。如图2.2所示PROHBUS的总线访问控制包括:主站之间的令牌传递访问控制,主站与从站之间的主从访问控制。总线上的主站形成的集合定义为逻辑环,令牌作为一种特殊的报文按照地址的升序在逻辑环内依次传递。主站获得令牌后,在规定的时间内可以按照主一从关系表和所有从站通信,也可以与其它主站通信。PROFIBUS总线系统在初始化时需要制定总线上的站点分配并建立逻辑环。令牌的循环时间和各主站令牌的持有时间长短取决于系统配置的参数。在总线运行期间,要保证令牌按地址升序依次在各主站间传递,主站若是断电或损坏,必须能将其从逻辑环中移除,而且必须能将新上电的主站加入逻辑环。此外,还需要监测收发器和传输介质是否损坏,是否出现令牌错误。2.2.3PROFlBUS-DP的通信协议规范PROFIBUS.DP是目前使用最为广泛的一种PROFIBUS现场总线,也是本课题的主要研究对象,下面具体介绍一下PROHBUS.DP的通信协议规范和从站通信过程。如前文所述,PROFIBUS.DP是以OSI模型作为基础,并进行了简化。PROFIBUS.DP采用了其中的第1、2层,并自定义了应用层,这种设计结构确保高速数据传输及较小的系统开销【37】。2.2.3.1PROFIBUS.DP的物理层PROHBUS.DP的物理层可以使用屏蔽双绞线和光缆两种传输介质。对于屏蔽双绞线通常采用的是RS485技术,它是一种简单、低成本的传输技术,具有良好的抗干扰能力,主要用于需要高速传输速率的场合。RS485采用线性总线网络拓扑结构,传输速率为9.6KbR/s~12Mb甜s,不带中继器每分段可连接32个站,带中继器可扩展到127个站。RS485的这些特性可以很好的满足PROFIBUS.DP对底层传输的需要。在电磁干扰较大的环境下或者需要覆盖特别大的网络距离时,采用光纤作为传输介质是一种很好的解决方案。通过光电转换器可以方便的将RS485信号转换成光信号或者反向转换,这样很容易将PROFIBUS设备集成到光网络中,RS485和光纤传输也可以在同一系统上使用。2.2.3.2PROFIBUS.DP的数据链路层PROFIBUS.DP的第2层称为FDL,同时还包括了第1层和第2层的管理服lO 杭州电子科技大学硕士学位论文务FMAl/2。该层规定了介质访问控制、数据安全、传输协议和报文处理。PROFIBUS.DP通常使用RS485传输技术,RS485一般使用UART字符作为传输单元,因此,PROFIBUS.DP的每个帧都有若干个UART字符组成。UART字符的结构如图2-3所示。一个UART字符由11位编码组成:其中第一个位是值为二进制“0"的开始位,紧接着是作为主体的8个数据位,之后是一个奇偶校验位P,最后是一个值为二进制“l’’的停止位。发送位顺序1234567891011LSBMSB开始Ob1b2b3b4b5b6b7b8Pl▲8位信息位●....-J奇偶校验位l(“0”或“l”信号)最低有效位最高有效位停止位图2.3UART数据格式1371PROFIBUS.DP数据链路层的报文帧结构主要有5类,具体如图2.4所示。—-/L)‘^1,口丁●二kUJL±qAV-‘,\厘r一1、例一卜一无数据字段的固定长度的应答帧—◆SYNSDlDAsAFCFCSED有数据字段的固定长度的发送/请求帧·——有数据字段的固定长度的回答帧SYNISD2lDAlSAlFCIDATAlFCSIED数据字段的可变长度的发送/请求帧一——有数据字段的町变长度的回答帧SYNISD3lLEIUerlSD3IDAlSAIFClDATAlFCSIED令牌帧短应答帧围珀曰图2.4PROFIBUS.DP的报文帧结构p81由上图可以知道,除令牌帧和短应答帧,报文帧可分为有数据段帧和无数据段帧,而有数据段帧根据其数据段是否固定又可分为数据字段固定帧和数据字段可变帧。其中无数据段帧只用作查询总线上的激活站点。数据段可变帧因为其参数域具有强大的配置功能,成为了PROFIBUS.DP中应用最多的一种帧结构,常用于SRD服务。报文帧中各段的符号定义如表2.2所示。FDL可以为上层提供4种传输服务,即发送数据应答(SDA)、发送数据无需应答(SDN)、发送并请求数据需回答(SRD)、循环发送并请求数据需回答(CSRD)。通常PROFIBUS.DP总线的数据依靠SDN和SRD两种服务,而FMS则使用了 机制而主从站之合考虑了系统负网和现场总线通在PROFIBUS.DP总线系统中,主站主要负责完成数据交换和网络运行管理这两方面的工作,具体包括如下任务【33】【34】:1)初始化从站并初始化完成了的从站交换数据;2)检查与从站的通信失败与否;3)检测总线时间关系是否满足要求;4)监测从站的响应时间;,5)发送和接受令牌,控制令牌的运行处理;6)监测维护令牌环,包括站点的加入和离去。2.2。4.2PROFIBUS.DP从站状态机实现在PROFIBUS.DP的主从站通信中,通常是由主站发出请求后,从站才能和主站进行数据交换。在此之前,主站要先对从站配置参数,并进行初始化,如图2.5所示为PROFIBUS.DP从站的几种状态。从站在上电或复位后,进入W缸PRM状态,等待2类主站从总线上发来设置从站地址的指令一SeUSlaveAddress。如果从站地址不需要改变,从站直接读取PrmTele掣锄参数赋值指令,该指令包含两部分参数,其中一部分为PRoFIBUS标准规定的参数,另一部分是由用户应用程序指定的从站参数。此时12 杭州电子科技大学硕士学位论文从站只能接受上述两种参数。周期性交换图2.5PROFIBUS.DP从站状态机【381之后,从站进入WaitCFG状态,等待相应的组态指令。指令定义了系统要输入/输出的数据结构的详细情况,包括输入/输出数据的字节数量,哪一个模块输入或输出等信息。当从站接受参数赋值和组态以后,进入数据交换状态,与主站进行周期性数据交换。2.2.5GSD文件PROFIBUS设备具有不同的特性,主要体现在具体功能和总线参数的不同。为了便于使用和配置,在实际操作中经常使用一种叫做设备数据库文件(GSD)的配置文件【331。标准化的的GSD文件数据可以由操作员控制,使用基于GSD的组态工具可以很方便得将不同厂商生产的设备集成在一个总线系统中。对每一种设备类型,GSD都以一种准确定义的格式给出其全面而明确的描述。GSD文件由生产厂商分别针对每一种设备类型并以设备数据库清单的形式提供给用户,这种明确定义的文件格式便于读出任何一种PROFIBUS—DP设备的设备数据库文件,并在组态总线系统时自动使用这些信息。2.3CAN总线技术2.3.1CAN总线的技术特点CAN(ControllerAreaNetwork),鬯,线是一种串行通信总线,最早是由德国的 杭州电子科技大学硕士学位论文h公司开发的。起初,CAN总线被用来解决汽车中各种测控部件之间的数据问题。由于CAN总线在技术和性价比方面有很大的优势,目前已经在航天、、石化、冶金、纺织、造纸等行业得到了广泛的应用。CAN总线已成为工据通信的主流技术之一,并成为国际标准IS011898。相比其他同类技术,CAN总线在实时性、可靠性和灵活性方面都具有独特术优势,其技术特点如下【39】【40】f4l】:1)CAN采用多主站模式,总线上的节点不分主从,每个节点都可以在任意14 杭州电子科技大学硕士学位论文逻辑链路子层LLC接受滤波超载通知恢复管理媒体访问控制子层MAC数据链路层数据封装/;l斥装帧编码媒体访问管理错误监测出错标定应答串行化/解除串行化位编码/解码位定时物理层同步驱动器/接收器特性连接器图2.6CAN通信模型的分层结构f4111421媒体访问控制子层是CAN通信模型的核心部分。它负责完成数据的封装/拆装、帧编码、错误监测、出错标定等工作。在开始一次新的发送时,MAC子层要确认总线是否可用,当总线空闲时开始发送。当仲裁丢失时退出仲裁,进入接收方式。MAC对发送数据实行串行化,对接收数据实行反串行化。完成CRC校验和应答校验,发送出错帧。确认超载条件,激活并发送超载帧。添加或分离起始位、远程传送请求位、保留位、CRC校验和应答码等,完成报文的封装和拆装。CAN的物理层除了规定节点的全部电气特性外,还规定了信号的发送方式,其中涉及位定时、位编码和同步的描述。由于CAN没有规定物理层的驱动器和接收器的特性,用户可以根据实际应用定制相应的发送驱动能力。通常来说,在同一个网段内,所有节点应该有相同的物理层。2.3.3CAN报文传输和帧结构目前,CAN技术规范包括两个部分:CAN2.0A和CAN2.0B。其中CAN2.0A规范所规定的报文帧为标准格式的报文帧,有11位标识符。CAN2.0B对CAN2.0A进行了扩展,除了支持标准的格式外,还支持具有29位标识符的报文帧。在CAN通信控制器的设计中,不要求控制器执行所有的扩展格式,但必须完全支持标准格式的报文帧。根据CAN报文帧的不同用途,可以将CAN报文帧分为4类【39】:数据帧、远程帧、出错帧和超载帧。数据帧主要用来传送数据。远程帧用于请求其他节点发送具有规定标识符的数据帧。出错帧是当节点检测到总线错误时发出的,用来向总线通知错误发生。超载帧由发生超载的接收器发出,在当前和后续数据之间15 杭州电子科技大学硕士学位论文增加附加延迟,以推迟接收下一个数据帧。下面介绍一下4种报文帧的结构【4¨。(1)数据帧数据帧由7个不同的位场组成,它们是:帧起始、仲裁场、控制场、数据场、CRC场、应答场和帧尾,其中数据场的长度可为0。数据帧的结构如图2.7所示。帧同空间—'隽^】,口’r纵-一帧间至问或超载帧帧尾▲仲裁场控制场数据场CRC场▲图2.7数据帧结构(2)远程帧接收数据的节点可以通过向源节点发送一个远程帧来请求该数据源节点发送数据。如图2.8所示,远程帧由6个不同的位场组成,帧起始、仲裁帧、控制场、CRC场、应答场和帧结束。帧问空间1MⅧ’口‘,r帧间空间或超载帧帧尾JI仲裁场控制场CRC场十图2.8远程帧的组成(3)出错帧出错帧由两个不同的场组成,一个是出错叠加标识,另一个是出错界定符。出错叠加标志由来自各节点的出错标志叠加而成。出错标志具有两种形式:由6个连续显位组成的活动出错标志和由6个连续隐位组成的认可出错标志。出错帧的组成如图2.9所示。1'函硒’队r帧间空间数据帧·一出错标志1一或超载帧J“J碰矗^n仨-4--o出错界'r—一山t日置川14仲心r一定符一图2.9出错帧的组成(4)超载帧超载帧包括两个位场,6个显位组成的超载标志和8个隐位组成的超载界定符,如图2.10所示。16 杭州电子科技大学硕士学位论文帧结束或1'趱戡。趴,r帧间空间超载界定符·一超载标志1.I或超载帧错误界定符超载界一+口#也+矗^n‘图2.10超载帧的组成2.3.4错误类型与出错检测由于总线错误时常发生,错误检测已成为CAN总线技术中重要的一部分,它直接关系到通信的质量和可靠性。通常,在CAN总线中存在以下5种错误【4lJ。1)位错误。当节点监视到总线上某位的数值与发送的该位数值不同时,则检测到一个位错误,说明该位发生了位错误。2)填充错误。在使用位填充方法进行编码的报文中,如果第6个连续的位电平相同时,则说明检测到1个填充错误。3)CRC错误。如果数据接收节点计算的CRC序列与数据发送节点计算的CRC序列不一致,则说明出现了CRC错误。4)格式错误。在固定格式的位场中出现若干非法位是,则认为出现了格式错误。5)应答错误。在应答间隙的时间段内,如果发送节点没有检测到显位,则该节点认为检出到了一个应答错误。检测到出错条件的节点通过发送出错标志指示错误j当任何节点检出位错误、填充错误、格式错误或应答错误时,该节点将在下一位开始发送出错标志。对于出错活动节点,它发送活动出错标志;而对于出错认可节点,发送认可出错标志。为了界定故障,在每个总线节点中都设有两种计数,一种是发送出错计数,另一种是接收出错计数。当计数器数值过大时,总线可能被严重的干扰,对此,节点需要提供一种测试该状态的方法。2.4工业以太网2.4.1工业以太网介绍工业以太网是以太网技术延伸到工业应用环境的产物。工业以太网技术涉及企业网络的各个层面,包括企业信息网络,基于以太网的控制网络,实时以太网等技术应用。所以工业以太网既是信息网络技术,也是控制网络技术。为了适应控制网络和特殊的工业环境要求,工业以太网要在以太网原有核心技术的基础上进行改造,添加控制应用功能,同时还要针对特殊应用环境下提出的网络供电、本质安全等要求提供解决方案。因此,以太网原有的核心技术仍是工业以太网的基础,而在此基础上进行环境适应性、通信实时性等相关改造、扩17 杭州电子科技大学硕士学位论文展,成为了工业以太网的特色【1]1431。(1)应对环境适应性的特色技术在工业环境下工作的网络所面临的条件要比一般的办公室复杂很多,而工业以太网针对环境适应性所做的主要工作就是打造工业级的产品。比如像RJ.45等在办公室环境下使用的连接器,容易损坏,无法满足可靠性要求。因此,工业现场经常使用带锁紧机构的链接件,采用防雨、防尘、防电磁干扰的外壳,采用DIN导轨式安装结构的工业级产品。(2)应对通信非确定性的缓解错失以太网采用载波监听多路访问/冲突检测(CSMA/CD)进行媒体访问控制。同个网段上挂接的多个节点不分主次,采用平等竞争的方式争用总线。虽然各节点在发送数据时会监听线路直到线路空闲才发送数据,但这样也经常会出现几个节点同时发送而发生冲突的情况。因此,以太网属于非确定性网络。传统的计算机网络对数据传输在时间上没有十分严格的要求,网络的非确定性不会造成负面的影响。但这种非确定性网络不能满足控制系统对通信实时性和确定性的要求,这也是以太网进入控制网络领域在技术上的最大障碍。工业以太网可利用以太网原本具有的技术优势,充分发挥以太网原本具有的传输速率高、全双工交换等技术优势,缓解介质访问控制方式的非确定性对控制实时性的影响。(3)实时以太网实时以太网是应对工业控制中通信实时性、准确性而提出的解决方案,属于工业以太网的特色与核心技术。工作在现场控制层的实时以太网,已经成为了现场总线的一个新类型。目前各大公司和组织都退出了自己的实时以太网技术,其中IEC61784.2中就囊括了11种实时以太网技术,它们是:EtherNet/IP,PROFINET,P-NET,Interbus,VNET/IP,TCnet,EtherCAT,EtherNetPowerlink,EPA,Modbus.RPTS,SERCOS.III。它们在实现机制、性能和通信一致性上都有比较大的差异,但它们都企图从根本上解决通信的非确定性问题。(4)网络供电在很多工业应用场合,现场控制设备的位置一般比较分散,而且现场无法满足供电要求,同时还要考虑安全因素,因此通常采用网络供电。网络供电是适应工业应用环境需要的特色技术之一。工业以太网目前提出的网络供电方案中,一种是利用5类双绞线中现有的信号接收与发送者两对线缆,另一种是利用5类双绞线中空闲线向设备供电。(5)本质安全在一些易燃易爆的工业场合使用工业以太网必须考虑本质安全问题。本质安全是指送往易燃易爆场合的能量限制在引起火花所需能量之内,从而在根本上使18 杭州电子科技大学硕士学位论文系统得到安全保障。这对网络节点设备的功耗,各元器件的参数都提出了新的要求。2.4.2TCP/IP协议TCP/IP(TransmissionControlProtocol/IntemctProtoc01)协议是包括IP、TCP在内的一组协议,是以太网进行数据传输是最常用的协议【441。TCP/IP协议通常分为4层结构,它们是:网络接口层,网际层,传输层和应用层。如图2.11所示为TCP/IP协议的分层结构。应用层传输层网际层网络接口层媒体图2.11TCP/IP协议分层结构Ⅲ】应用层是该结构中的最高层,它直接为用户提供服务。这里的用户进程指的是正在运行的程序。传输层的任务就是负责向两个主机进程之间的通信提供服务。传输层主要使用TCP和UDP协议,其中TCP是面向连接的,能够提供可靠的交付;UDP是无连接的,不保证数据的可靠性。网际层负责为分组交换网上的不同主机提供通信服务。在传送数据时,网络层把传输层产生的报文或用户数据进行分组传送。网络接口层通常包括网络设备的驱动和对应的网络接口卡,主要负责处理与传输介质相关物理接口细节。2.4.3工业以太网的帧结构如图2.12所示,普通的以太网帧由7个域组成,它们是:前导码,帧前界19 由个是地表帧于46个字节,则高层的相关软件负责将数据域填充到46个字节。以太网的数据帧是用户数据通过逐层封装得来的。用户数据在应用层加上相应的首部成为应用数据,然后送往传输层;在传输层加上TCP或UDP首部变成了TCP或UDP数据报送往网络层;网络层负责添加IP首部,而后成为IP数据报;最后在网络接口层加上以太网帧头和帧尾,封装成以太网数据帧。具体过程如图2.13所示。网络接口应用程序用户数据应用首部l用户数据TCP首部l应用数据lP首部ITCP首部l应用数据地址+长度lP首部ITCP首部I应用数据ICRC校验图2.13以太网的帧结构封装过程Il】为了使工业数据能够以TCP/IP数据包在以太网上传递数据,首先需要将工业数据报按照TCP/IP的格式封装;然后将这个数据报发送到以太网上,通过以太网传送到与控制网络相连的网络连接设备上。连接设备收到数据包以后,对TCP/IP数据报进行解封装,然后把数据发送到控制网段上。工业以太网通常利用TCP协议来发送非实时数据,而用UDP协议来传送实时数据。非实时数据的特点是数据包的大小经常变化,发送时间不定。而实时数 杭州电子科技大学硕士学位论文据的数据包短,需要定时或周期性通信。因此,TCP协议一般用来传输组态和诊断信息,UDP协议用来传输实时I/O数据。2.5串行通信2.5.1串行通信技术串行通信【45】指使用一条数据线将数据按位依次传输,每一位数据占据一个固定的时间长度,只需要少数的几条线就可以在设备问进行信息交换。与并行通信相比,串行通信不但节省传输材料,而且有更远的传输距离,适合于远距离传输。串行通行技术已被广泛应用于计算机,通信,工业控制等领域。最早被人们熟悉的串行通信技术标准是RS232、RS422和RS485,它们是由美国电子工业联盟(EIA)提出的串行通信数据接口标准。目前,许多计算机以及工业控制设备仍然使用该类型串行通信接口。USB即通用串行总线,由于它支持即插即用和热插拔,目前已经成为计算机领域使用最广泛的串行通信技术,并逐步取代以往的串口、并口和PS/2等接口。然而,在工业领域,人们对产品的稳定性和可靠性有更高的要求,即插即用技术在工业通信中也没有优势。因此,USB技术并没有在工业领域广泛应用,EIA标准仍然占据主导地位。2.5.2RS232简介如前文所述,RS232t45]1461是一种广泛应用于工业领域的串行通信数据接121技术。在目前许多的现场控制和测量系统中,仍然使用RS232进行通信。在RS232标准中,字符是以一串行的比特串来一个接一个的方式传输,该方式的优点是传输线少,配线简单,传输距离较远。如图2.14为RS232常用的编码格式。该编码第一位是起始位,紧跟其后的是7~8个数据比特位(bit),然后是可选的奇偶校验比特位,最后是1或2个停止比特。因此,发送一个字符至少需要10个比特。RS232的设备一般可分为两类:数据终端设备(DTE,DataTerminalEquipment)和数据通信设备(DCE,DataCommunicationEquipment)两类,这种分类定义了不同的线路用来发送和接受信号。一般来说,计算机和终端设备有DTE连接器,调制解调器和打印机有DCE连接器。l起始位I数据位I奇偶校验l停止位lI1比特I7-8比特I1比特l1或2比特I图2.14RS232常用编码格式【471通常,RS232的接口有两种,9个引脚的DB.9和25个引脚的DB-25。其中DB.9被广泛使用在绝大多数的PC机和其他设备上。如图2.15为DB-9的接口示意图。 杭州电子科技大学硕士学位论文DB.9Ⅳ瞄e图2.15DB-9接口示意图m】引脚的所传递信号的定义与功能如表2.3所示。表2.3RS232接口定义147】针脚信号作用lDCD载波检测2RXD接收数据3TXD发送数据4DTR数据终端准备好5SGND信号地6DSR数据装备好7RTS请求发送8CTs清除发送9RI振铃提示2.6小结本章主要介绍了在本多协议转换网关开发中所涉及的几类现场总线。分别介绍了PROFIBUS.DP、CAN总线、以太网和RS232的技术特点,并分析了它们的协议帧结构以及通信方式。为后续网关的开发作了铺垫。茸 杭州电子科技大学硕士学位论文第3章多协议转换网关的硬件设计3.1网关的需求分析该多协议转换网关主要用在PROFIBUS.DP总线中,通过使用该多协议转换网关可以将CAN总线设备和带RS232串行接口的设备接入PROFIBUS.DP总线,同时可以实现PROFIBUS.DP总线与工业以太网的互联。在本设计中,整个系统是在PROFIBUS.DP从站的基础上搭建的。在进行网关设计的时候需要考虑不同总线的接口问题,以及如何进行各总线协议帧的接收和处理。对于目前主流的现场总线已经有很多成熟的协议芯片可以选择,这可以大大降低系统设计的复杂度。考虑到该网关在同一时刻可能要处理多个协议转换任务,网关需要满足对多任务的支持,同时又有要保证实时性,所以需要采用一个实时操作系统来进行多任务的管理和调度。3.2网关的整体结构设计如图3.1所示为包含多协议转换网关的现场总线系统的整体结构。图3.1多协议转换网关所在总线系统结构图多协议转换网关以PROFIBUS-DP从站的形式和PROFIBUS.DP总线连接,通过相应的总线接口可以将CAN总线设备和RS232设备接入PROHBUS.DP总线,同时支持PROFIBUS.DP与以太网的连接,实现远程监控。除了为各总线设备提供接口之外,该网关主要负责PROFIBUS.DP数据到其他总线设备的转发,—‘‘。。。。1。。。。。。。。。。。。。1。。。。。。。。’。。‘。1。‘。。1。。。。’‘。’1‘。。I}}lllll‘If 杭州电子科技大学硕士学位论文以及数据的反向传输,在这当中完成不同协议帧的转换。如图3.2所示为多协议转换网关的结构图。硬件层协议转换程序Linux内核硬件驱动层圈曰图3.2多协议转换网关结构协议转换网关从结构上可以分为软件层和硬件层。软件层从上至下分别是:协议转换程序,Linux内核驱动,硬件驱动层。其中协议转换程序是软件层的核心部分,负责协议间的数据转换,它以任务的形式运行在Linux系统内。Linux内核与相关硬件驱动则构成的软件层的基础。硬件部分主要由主控芯片,总线协议芯片以及相关接口电路组成。3.3网关的硬件系统组成硬件系统主要由主控CPU模块,PROFIBUS.DP从站接口模块,CAN总线接口模块,以太网模块以及RS232串行接口组成。整体结构如图3.3所示。从站接口模块接口模块Is陷芦刊SJAl000IRS48582C250IS3C2440AR$232以太网接口模块接口模块JH1102。M∞。姒目刊SP3232E刚I1P045DB9IlICAN现场设备R$232设备图3.3协议转换网关的硬件结构主控模块即CPU模块:控制整个系统的工作,完成相关数据的处理,负责与各总线设备的通信以及存储器的扩展等功能。1)PROFIBUS.DP从站接口模块:作为PROFIBUS.DP总线上的一个从站,负责处理来自主站的诊断、配置等信息,以及向主站传递相关信息;同时完成与CPU的数据交换。2)以太网接口:负责该网关与以太网的通信,完成TCP/IP数据包的收发。24图圉 杭州电子科技大学硕士学位论文3)CAN总线接口:接收来自CAN总线设备的数据,与CPU进行数据交换,并负责向CAN总线设备发送经转换后的数据包。4)RS232接口:完成电平转换和RS232串行数据的收发。3.4核心控制模块3.4.183C2440A功能介绍$3C2440At481是三星公司开发的一款微控制器,具备高性能,低功耗等特性,适用于嵌入式设备,以及对价格和功耗敏感的应用场合。$3C2440A使用了由ARM公司设计的32位精简指令集(PdSC)架构ARM920T核心,该核心具有内存管理单元(MMU),可以支持需要MMU的操作系统,诸如Linux系统。ARM920T采用了先进微控制器总线架构(AMBA),指令缓存和数据缓存分离的哈佛结构。$3C2440A提供了丰富的片上资源,为使用者降低了系统设计的复杂度和成本。$3C2440A包括如下资源:1)外部存储器控制器2)LCD控制器提供l通道LCD作用DMA3)4通道带外部请求引脚的DMA4)3通道UART5)2通道SPI6)IIC总线接口7)IIS音频编解码接口8)AC’97编解码接口9)SD卡接口和MMC卡接口10)2个USB主机控制器/1个USB设备端控制器11)4通道PWM定时器/l通道内部定时器/看门狗定时器12)8通道10比特ADC和触摸屏接口13)带日历功能的RTC14)摄像头接口15)130个通用I/o口和24个外部中断源16)带PLL的片上时钟发生器$3C2440A采用独立供电的方式为片内的各模块供电内核采用1.2V供电,存储器采用1.8V/2.5V/3.3V等几种供电方式,外部I/O采用3.3V供电。$3C2440A具有多种电源管理模式:普通,慢速,空闲和掉电模式。3.4.2$3C2440A的中断控制器及系统存储器映射为了便于控制和使用片外资源,$3C2440A提供了一系列的外部设备控制器。应用程序通过操作各类控制器的相关寄存器,可以很方便的使用设备资源。下面 杭州电子科技大学硕士学位论文介绍一下作为$3C2440A核心的中断控制器和存储器控制器,以及系统存储器的映射。3.4.2.1中断控制器为了提高计算机的效率,CPU通常采用中断的方式来处理各种事件和请求,在嵌入式系统中同样如此。$3C2440A内部的中断控制器能够接收来自60个中断源的中断请求。当中断控制器接收到来自内部外围设备和外部中断请求引脚的中断信号后,经过仲裁程序,中断控制器向ARM920T内核请求快速中断(FIQ)或外部中断(IRQ)。内核调用相关的中断服务程序进行处理。中断的处理过程如图3.4所示。图3.4S3C2440A的中断处理过程I耜】通过设置中断控制器内部的相关寄存器,可以设置各中断的类型,优先级以及屏蔽中断。3.4.2.2内存控制器与系统存储器映射$3C2440A的存储器控制器将存储空间分为8个bank,每个bank有128M的字节,因此整个地址空间的大小为1G。其中6个bank是可以使用ROM,SRAM等类型的存储器,另外2个可以作为ROM,S删,SDRAM等存储器bank。前7个bank的起始地址固定,最后一个bank的起始地址可调整。后两个bank的大小可编程,所有存储器bank的访问周期可编程。如图3.5所示为$3C2440A使用NANDflash作为启动ROM时的存储器分布图。NANDflash具有容量大、价格低等特点,而且较NORflash具有更长的使用寿命,因此,作为大容量存储器被广泛应用于嵌入式系统。系统的引导代码和操作系统镜像一般都存放在NANDflash内。本系统使用了一块型号为K9F2G08UOA的N』6心mflash,规格是256M×8Bit。NANDflash无法直接运行程序,但是系统在启动的时候可以使用称为“Steppingstone"的$3C2440A内部缓存,该缓存为4K的RAM。当检测到从NANDflash启动时,系统会自动将NANDflash中前4K字节的数据加载到Steppingstone中,然后将Steppingstone映射到bank0处,系统会从该Steppingstone 杭州电子科技大学硕士学位论文开始运行程序,从而实现了NANDflash的自启动功能。一般来说,在启动代码的前4K字节里,完成了$3C2440A的基本配置,其中包括了SDRAM的初始化,基本的配置完成之后,剩余的启动代码被搬到SDRAM中继续执行。J‘2MB/4MB/BMB/。SROM/SDRAM16MB/32MB/64(nGCS7)MB/l28MBSROM/SDRAM2MB,4MB/8MB,(nGCS6)l6MB/32MB/641MB/128MBJSRoM128MB(nGCS5)1rJlSROM(nGCS4)128MB17lGBJSROMfnGCS3)128MB1JSRoM(nGCS2)128MB1JSRoM128MB(nGCS!)1J128MBBsO,MOTMI。n。teKrBna,l1'图3.5$3C2440A的存储器分布副4叼SD删即同步动态随机存储器,有较快的存储速度,一般作为内存在计算机和嵌入式系统中使用。在$3C2440A的存储器分布中,SDRAM可以被映射到第7或第8个bank。本网关采用了2片型号为HY57V561620FTP的16M×16BitSDRAM,并联构成了64MB32位的SD洲存储系统。整个SDRAM存储系统被映射到了第7个bank。3.5PROFlBUS-DP从站通信接口模块3.5。1SPC3从站协议芯片介绍PROFIBUS.DP是一个开放的协议,原则上可以在任何带有异步串行通信接口的微处理器或微控制器上编程实现,但是由于协议的复杂度较高,而且当传输速率超过500Kb/s时,软件的实现将会遇到瓶颈。在实际的应用中,通常使用ASIC(ApplicationSpecificIntegratedCircuit)通信协议芯片,可以将复杂的协议撇开。目前使用较广的PROFIBUS.DP从站芯片是由西门子公司开发的SPC3t491,该协议芯片集成了全部的PROFIBUS—DP协议,最大传输速率可达12Mb/s,可自动检测并调整数据传输速率。SPC3内部集成了1.5KB的RAM,作为SPC3与 杭州电子科技大学硕士学位论文程序的接口。SPC3对RS485总线的存取完全由硬件控制,无需外加微处理器。为了保证SPC3能够可靠运行,内部还集成了看门狗。如图3.6所示为SPC3的结构框图。总线接口单元代表连接微处理器的接口,包括一个可参数化编程的同步/异步的8位数据接口,另一个是11位的地址总线接口端。通过11位的地址总线和8位数据总线,用户可以与内部的RAM和参数锁存器直接通信。CPU控竺::韭些Q::!旦总线接口单元中断控制器Il蒺萎燃Il看门狗微序列器UARTlI空闲定时器Il波特率发生器00H.3FHSPC3功能寄存器40H.5FFH用户空间图3.6SPC3内部接口示意图149】当处理器上电后,站地址、控制字等参数必须传递到参数寄存器;通过访问状态寄存器,可以查看MAC的各种状态;中断控制器则用来处理各种事件;看门狗定时器工作在3种不同的工作状态:波特率检测、波特率控制和从站控制;微序列器控制整个工作过程;缓冲器参数、缓冲器长度和站地址等参数,以及数据缓冲器都集成在1.5KB的RAM中;在UART中,可以实现并行数据串行化,反之亦然;空闲定时器直接控制串行总线的时序。3.5.2PROFIBUS-DP从站硬件接口设计如图3.7所示为PROFIBUS.DP的从站接口硬件组成示意图。JADD/DATA.—SPC3NOE一XltDTxDN、VE~电平光耦l峪485S3C2440AXRW咖Reset—转换隔离接口IU’SINTNC钳一ALE1图3.7PROFIBUS.DP从站接口 肯晶引片的图3.8电平转换电路PROFIBUS·DP从站主要使用串行通信方式与主站通信,常用的是RS485总线接口。SPC3已经集成了物理层的数据传输功能,但不具备RS485的驱动能力,因此需要额外的驱动电路。如图3.9所示为RS485驱动电路及接口。图3.9RS485驱动电路有时为了降低PROFIBUS.DP总线上的信号对从站电路的影响,可以在RS485驱动电路和SPC3之间进行光耦隔离。29 杭州电子科技大学硕士学位论文3.6CAN总线接口模块3.6.1CAN总线控制器SJAl000介绍和PROFIBUS.DP协议一样,CAN总线协议也通常通过芯片实现,市场上已经出现了许多成熟的CAN总线协议芯片和控制器。本系统采用了由飞利浦公司开发的SJAl000CAN总线控制器,它可以实现CAN总线物理层和数据层的所有功能,并完全支持CAN2.0B协议。SJAl000有以下主要技术特点f50】。。1)具有64字节的FIFO扩展接收缓冲器。2)采用24MHz的时钟频率,位通信率最高可达1Mb/s。3)支持多种微处理器接口。4)可编程配置CAN输出驱动方式。5)具有不应答、不激活出错标志的只听模式。6)支持热插拔。7)工作稳定范围为.40℃"-+125℃。8)SJAl000还增强以下出错处理功能。9)带读写访问的出错计算器。lO)可通过编程设置出错报警限。11)可对总线错误的产生出错中断。12)仲裁丢失中断带有位置细节信息。3.6.2CAN总线收发器82C25082C250[51】是CAN控制器与物理总线之间的接口,它可以提供对CAN总线数据进行差动发送和接收的功能。82C250与ISO/DIS11898标准完全兼容,传输速率可达1Mb/s。82C250内部具有限流电路,可防止发送输出级电源与地之间的短路,同时具有抵抗瞬间干扰,保护总线的能力。当环境温度过高时,82C250的发送器输出端的极限电流将减小,因而可以限制芯片温度的升高。芯片掉电时能够自动关闭输出,不干扰总线的正常运转。82C250的功能框图如图3.10所示。图3.1082C250功能框图【51】30 题。由于SJAl000的接口电平为5V,而S3C2440A的I/O口电平为3.3V,不能直接相连,需要进行电平转换。这里对两类信号进行了分别处理。由于数据总线上的数据信号通常是双向的,需要使用带有方向控制的转换芯片,本设计采用了一、74LVC245[52】。对于从SJAl000到$3C2440A的控制信号,如SJAl000的中断信号,则使用74LVC244t53】来实现电平转换。由$3C2440A发出的控制信号,可以直接相连,如CS、RD、WD和ALE信号。另一个需要考虑的问题是接口信号时序,由于SJAl000采用了地址和数据复用的总线方式,它与S3C2440A的时序不能完全兼容。根据SJAl000的时序特点,可以通过$3C2440A进行两次读写操作的方式来完成对SJAl000的一次读写。为了增强CAN总线节点的抗干扰能力,可以在SJAl000和PCA82C250之.间用光耦进行隔离,从而实现总线上各节点之间的电气隔离。3.7以太网模块3.7.1DM9000以太网控制器在以太网模块的设计中,综合设计复杂度、性能和成本的考虑,采用了DVICOM公司的DM9000自适应以太网控制器。该控制器具备10/lOOMb/s的传输速率,实现以太网媒体介质访问(MAC)和物理层(PHY)的功能。DM9000被设计为高性能、低功耗的以太网处理器,具有通用的处理器接口,可以与包括 杭州电子科技大学硕士学位论文S3C2440A在内的多种处理器互联。该控制器的设计简单,容易完成在各种系统中的驱动开发。DM9000主要有如下特性【56】。1)支持处理器以字节/字/双字长度的I/O命令读写内部存储器。2)支持介质无关接口。3)支持背压模式的半双工流量控制。4)具有IEEES02.3x流量控制的全双工模式。5)支持唤醒帧,链路状态改变和远程唤醒。6)内部集成4K双字SRAM。7)支持4个通用输入输出口。8)支持多种超低功耗模式。3.7.2以太网接口电路以太网的接口电路主要实现DM9000与$3C2440A的数据总线、地址总线和控制总线的连接,以及DM9000和RJ45接头的连接。如图3.12为$3C2440A与DM9000的连接图。1.DATAODATAO/1卜、/1卜、~少~少网络接口IDATAl5DATAl5变压器S3C2440ADM9000LADDR2一@CMDLnOEIORLnWEIOWnGCS4AENlU45EINT7INT图3.12SC32440A与DM9000的连接图S3C2440A的数据线LDATA[0..15]与DM9000的数据线DATA[0..15]直接相连,用来实现$3C2440A和DM9000之间的数据传输。$3C2440A的片选nGCS4和地址线LADDR2分别与DM9000的地址允许引脚AEN和CMD引脚相连,并将DM9000中的SA8和SA9引脚置为高电平,SA4'-'.'SA7引脚置为低电平。当AEN为低时,DM9000被选中。CMD引脚用来设置命令模式,当CMD为高时,选择数据端口;当CMD为低时,选中地址端口。$3C2440A的LnOE引脚和LnWE引脚分别接DM9000的读引脚IOR和写引脚lOW。DM9000使用了$3C2440A的EINT7中断引脚。如图3.13所示的tLl45接口电路中,在RJ45接头与DM9000之间增加了一个网络隔离变压器H11021541。该设计主要的主要作用是:为了增强信号,使其传输距离更远;使芯片端与外部隔离,增强抗干扰能力,并起到保护作用;当接到不同电平的网口时,不会对彼此设备造成影响。32 口芯片155]进行图3.13带网络变压器的ILl45接口电路由于RS232采用正负电压来表示逻辑状态,这和TTL使用高低电平表示逻辑状态不同。因此,在RS232与1]rL电路进行连接时必须进行电平转换,SP3232EEN的主要功能就是实现了这两种电平的转换。通过SP3232EEN,将RS232接口的DB9型接头与$3C2440A的UART进行连接。接口电路如图3.14所示。监a+Ⅶ】D且oI∞104届,‰皿佴V+2‘CA04O-----上。1洲广一C卜V-—五一:黧哪104垒。l2404515●一一O--Q-∞—雨万一t二"3VDEb'V34568碰RⅪ)(I13一一111X口Jl”、。/\1Ⅺ】l二78一3R研Ⅻ[》14r_IUⅡq11IN二12IL",,'/30/OTIOUT阳o【丌:Ior*订N}/^7随{fNI7:砌『r硎一一9f(嘲/910,2陋硼)8c=R2INIDdrr1112O6^B14!g岣23婀瑚图3.14RS232接口电路3.9小结本章首先介绍了整个现场总线多协议转换网关的系统组成及相关结构,然后着重阐述了网关的硬件结构和各总线接口模块的电路构成。33 硕士学位论文网关的软件设计法的研究和协议转换软件的设计与实现,并完成整个实时Linux操作系统的构建,具体包括以三几方面工作。1)Linux下各总线接口模块的设备驱动实现。2)各总线应用层协议帧的设计。3)协议转换程序的实现和Linux下的协议转换任务设计。4.1.2软件总体架构整个协议转换网关的软件系统是在网关的硬件基础上构建的,如图4.1所示,从下至上分别是内核与设备驱动层,Linux系统调用接口和协议转换程序。图4.1网关软件总体架构图在Linux操作系统的环境中,设备驱动作为硬件和内核的桥梁,负责与底层硬件打交道,按照硬件设备的具体工作方式读写设备寄存器,完成设备的轮询、中断处理、DMA通信,进行物理内存向虚拟内存的映射,使各总线模块能够正常收发数据。Linux操作系统则通过系统调用接口为上层应用提供服,协议转换程序只要调用相应的系统调用接口就能方便的访问各总线接口模块。作为系统核心的实时Linux操作系统提供了多任务抢占,调度以及进程间通信的方法和手段,可以很方便的对总线通信和协议转换进行管理,不但降低了设计难度,同时提高了系统的实时性。 杭州电子科技大学硕士学位论文4.2基于Linux的设备驱动开发4.2.1Linux操作系统介绍Linux是由LinusTorvalds在1991年推出的一款操作系统,它是在UNIX和Minix操作系统的基础开发出来的。随着OXFO(GNU’sNotUNIX)计划和自由软件基金会的发展,GUN项目开发出了许多高质量的免费软件,这为Linux的诞生和发展创造了一个良好的环境。同时,POSIX(PortableOperatingSystemInterfaceforComputingSystems)标准的推出,极大的推动了Linux操作系统向着正规化方向发展。由于Intemet的快速发展和Linux源码的公开性,通过网络,用户可以很方便获取源代码,这在很大程度上加快了Linux的传播速度。同时,不少开发者参与到了Linux开源项目当中,他们对代码进行了的不断修改和完善。随着Linux操作系统的日益成熟,它在各种领域的应用也越来越广泛【57】【58】。4.2.1.1Linux2.6内核的特点经过20年的发展,Linux内核已经进入了3.0时代,在这期间,Linux操作系统经历了多次重要的版本更新。Linux系统一直朝着支持更多CPU、硬件体系结构和外部设备,支持更广泛领域的应用,提供更好的性能方向发展。虽然内核已经发展到了3.0版本,但在实际应用当中,更多的还是采用较为成熟的2.6版本,在本转换网关的开发中,同样使用了2.6版本的内核。Linux2.6内核的特点主要有以下几方面‘591。1)2.6版本的Linux内核采用了新的调度算法,可以保证在高负载的情况下仍然能高效的执行。2)2.6版本的Linux内核任务可以被抢占,这提高了系统的实时性,极大增强系统的用户交互性。3)2.6版本的Linux内核可以处理任意数量的线程,并且提高了线程的操作速度。4)增加了对日志文件系统功能的支持。5)支持高级电源配置管理界面(ACPI),用于调整CPU在不同的负载下工作于不同的时钟频率以降低功耗。6)设备驱动方面:内核API增加了新的工能,驱动模块的编译、模块使用计数、模块加载和卸载都更合理化。4.2.1.2Linux内核组成如图4.2所示为Linux内核的组成部分和关系。Linux主要由5个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口和进程间通信[6011611。(1)进程调度 杭州电子科技大学硕士学位论文进程调度是整个Linux系统的核心部分,负责对系统中多个进程对CPU的访问进行调度控制,使多个进程能在CPU中串行执行,而宏观上呈现并行性。Linux的其他子系统都是在进程调度的基础上实现的。(2)内存管理内存管理主要的任务是控制多个进程安全地共享内存区域。当CPU开启内存管理单元(MMU)时,Linux内存管理实现每个进程从虚拟内存到物理内存的转换。(3)虚拟文件系统通过Linux虚拟文件系统(vrs)可以隐藏各种硬件的具体细节,将各种文件系统进行抽象,为所有设备提供了统一的接口。(4)网络接口网络接口包括网络协议和网络驱动程序,提供了对各种网络标准的存取和各种网络硬件的支持。(5)进程通信Linux支持包括信号量、共享内存、管道在内的多种进程通信方式,这些机制可协助多个进程、多资源的互斥访问、进程间的同步和消息传递。图4.2Linux内核的组成部分与关系160l4.2.2LiRUX下的设备驱动程序概述如前文所述,设备驱动程序成为了硬件和应用软件交互的桥梁,应用程序不需要直接和硬件打交道,只要调用系统软件的相关编程接口就可以完成对硬件的操作【591。Linux系统中的设备驱动除了完成对硬件的基本操作外,必须按照系统的架构进行设计,融入内核。为了实现这种融合,必须在所有的设备驱动中设计面向操作系统内核的接口,这样的接口由Linux系统规定,对一类设备而言接口一致,并独立与具体的设备。在Linux系统中,设备驱动变成了连接硬件和内核的桥梁。在Linux系统中一般将设备分为三类:字符设备,块设备和网络设备,与之 杭州电子科技大学硕士学位论文对应的设备驱动则同样分为三类【59】【60】【6¨。(1)字符设备字符设备是可以像字节流一样被访问的设备,字符设备的操作以字节为基础,字符终端和串口都是典型的字符设备。字符设备可以通过文件系统节点来访问。字符设备的这种特性则是由字符设备驱动程序实现的。在Linux系统中,字符设备驱动通常至少要实现open、close、read和write系统调用。(2)块设备与字符设备类似,块设备也是通过文件系统节点来访问。块设备的读写需要有缓冲的支持,因为块设备在进行I/O操作时,每次只能传输一个或多个完整的块,每个块通常包含512个字节。在内核中,块设备和字符设备的数据管理方式不同,块驱动程序的字符设备的接口也完全不同。(3)网络设备网络设备在Linux里做专门的处理。基于Linux对所有物理设备进行抽象并定义成为接口,所有对网络硬件的访问都是通过接口进行的。接口对上层协议提供一致化的操作集合来处理基本数据的发送和接收,对下层屏蔽硬件差异。由于网络设备围绕数据包的传输和接收而设计,因此网络设备驱动为网络操作提供接口,管理网络数据的接收和发送。网络驱动程序不需要知道各个连接的相关信息,它的主要任务是处理数据包。Linux内核采用模块化机制来管理设备驱动,内核也被划分为许多个小的模块。设备驱动不需要被编译进内核,只需通过特定的命令将其加入内核即可,若不需要该驱动,同样可以方便的卸载。驱动的这种机制给Linux的使用和开发带来了极大的方便。4.3各总线接口模块的设备驱动实现4.3.1SPC3驱动模块在PROFIBUS.DP协议中规定了8种主站.从站功能:读DP从站诊断信息、传送输入与输出数据、读DP从站的输入与输出数据、发送参数数据、检测组态数据、读组态数据、对DP从站的控制命令、变更DP从站的站地址。其中的主要功能已经由SPC3实现,用户程序一般只需要处理诊断处理、参数化、检查组态数据和从站地址设置这四种报文。因此,SPC3的设备驱动程序除了完成对SPC3的初始化工作之外,最主要功能就是要向上层提供数据报文收发和配置的接口。由于CPU对SPC3数据的读写是以字节为单位的,因此将该设备可作为字符型设备处理,SPC3的设备驱动是在字符设备驱动的模型上开发的。该设备驱动主要包括一个主程序和一个头文件。在头文件中对SPC3内部RAM中的寄存 的主程序则主要完和缓冲区。对SPC3,使用GPIO口对制寄存器的地址进写的时序,定义对S3C2440GPJDAT&=0x镯压800;S3C2440.GP巾ATl=add;//写入要写数据的SPC3寄存器地址$3C2440GPEDATI_SPC3ALEENABLE1;//地址锁存使能S3C2440GPED筒【’l-SPC3ALEENABLE1:$3C2440GPEDAT&=SPC3ALEDISABLE0;//关闭地址锁存S3C2440GPEDAT&|-SPC3ALEDISABLEO:S3C2440GPJDAT&=0x甥f狂f00:$3C2440GPJDATl=data;//写入数据$3C2440GPmAT&=SPC3XWRENABLEO;//写使能S3C2440GPJDAT&=SPC3XWRENABLEO:S3C2440GPJDAT&=SPC3X、ⅣRENABLEO:S3C2440GPJDAT&=SPC3XWRENABLEO:S3C2440GPⅡ)Ar&=SPC3XWRENABLE0:S3C2440GPJD』气T&=SPC3XWRENABLE0:S3C2440GPJDAT&声SPC3X、ⅣRENABLEO:$3C2440GPJDATI=SPC3XWRDISABLEl;//关闭写使能)BYTEreadspc3WORDadm_ram(D{S3C2440GPJDAT&=0x笳800;$3C2440GPJDATI-add;//写入要读取数据的SPC3寄存器地址$3C2440GPEDATl=SPC3ALEENABLE1;//地址锁存S3C2440GPEDAT1.SPC3ALEENABLE1;$3C2440GPEDAT&=SPC3ALEDISABLEO://关闭地址锁存S3C2440GPEDAT&=SPC3ALEDISABLE0:38 杭州电子科技大学硕士学位论文S3C2440GPED』气T&=SPC3XRDENABLE0:S3C2440GPEDA=r&=SPC3Ⅺ江IE]NABLEO:S3C2440GPEDAT&|-SPC3XRDENABLEO:S3C2440GPEDAT&=SPC3XRDENABLE0:S3C2440GPEDAT&=SPC3XRDENABLEO:S3C2440GPEDAT&=SPC3XRDENABLE0:S3C2440GPEDAT&芦SPC3XRDENABLE0:S3C2440GPEDATl=SPC3XRDDISABLE1;return(rGPJDAT&0xff)://读数据使能//禁止地址锁存)为了进行SPC3报文的接收和发送,需要申请临时缓冲区用于存放报文数据。由于PROFIBUS.DP的报文帧最长可达246个字节,所以这里取246个字节长度的帧,并分别申请具有MAX—TX—BUF个帧的发送缓冲区和有MAX—RX—BUF个帧的接收缓冲区。其中MAXTXBUF和MAXRXBUF分别为最大发送帧数和最大接收帧数宏。两个结构体的定义如以下代码所示。typedefstruct{unsignedchardata_send_but咂246宰MA.XTXBUF];//每个帧246字节unsignedinthead,tail;∥发送缓冲区的头和尾>TXBUF;typedefstruet{unsignedchardatarec_buf[246·MAX_TX_BUF];unsignedint.head,tail;//接收缓冲区的头和尾。)RXBUF;设备驱动中设备结构体需要自行设计,SPC3设备驱动中的设备结构中包括了上述两个缓冲区,此外,由于在该协议转换网关中,会发生多个进程同时访问SPC3的情况,为了保证数据的正确和完整性,需要处理并发的问题,这里使用信号量来进行并发控制。以下代码是SPC3设备结构体的定义。typedefstruct{structcdevcdev;Hcdev结构体TXBUFsendbur;∥发送缓冲区BXBUFreceivebur;//接收缓冲区39 杭州电子科技大学硕士学位论文structsemaphoresem;//并发控制信号量)spc3_dev;在字符设备中需要定义一个file_operations结构体,该结构体中的成员函数是字符设备与内核的接口,是用户空间对Linux进行系统调用的最终落实者。SPC3设备驱动中的fileoperation实例如下所示。structfile_operationsspc3一fops={.owner2THIS_MODULE,.read=spc3read,.write=spc3_write,.ioctl2spc3_ioctl,.open2spc30pen,7.release=spc3release,);其中spc3_readO用来从接收缓冲区中读取数据,成功时函数返回读取的字节数,出错时返回负值。由于内核空间与用户空间不能直接互访,在spc3read()内调用函数copy_to_userO完成内核空间到用户空间的复制。spc3_write()fl§数首先向发送缓冲区发送数据,其中调用了copy_fromuserOi函数完成用户空间到内核空间的复制,然后通过调用write_spc3_ram()函数向SPC3内部RAM的数据区写数据或者诊断信息。spc3_ioctl()i函数则提供相关SPC3控制命令的实现。SPC3通过中断来处理对于时间性要求较高的操作,如设备的上/下线、参数化报文处理、从设备通道配置报文处理、设备地址变更报文处理等。SPC3设备驱动程序中的中断处理程序通过判断中断请求寄存器中的内容来判断中断事件的类型,并将相应的报文复制到接收缓冲区。中断的处理过程如图4.2所示。在SPC3设备驱动加载的时候,完成了SPC3的初始化,设备号的动态申请,设备结构体内存的动态申请以及设备的注册。设备的注册函数如下所示。.staticvoidspc3_setup_edev(struetspc3_dev·dev,intindex){inte儿devno=MKDEV(scullc_rnajor,mdeX);cdev_init(&dev->edev,&spc3_fops);dev->cdev.owner=THIS_MODULE;dev->cdev.ops=&scullc__fops;err=cdcv...add(&dev->cdev,devno,1);if(err)40 杭州电子科技大学硕士学位论文printk(KERN_NOTICE”Error%daddillgdevice%d”,err,index);开始适哑岁\l,77◆Y面嚣南磊FT]有新CFG报文\_,,7◆Y,,’\与原配置相同\一一◆N更新原配置有新SSA报文\/◆Y保存新地址结束SPC3中断图4.3SPC3中断处理过程【49】4.3.2SJAl000驱动模块在本驱动的开发中没用采用内核自带的SJAl000驱动,而是将SJAl000当做字符设备处理,由于CPU是通过字节流的方式读写SJAl000内部数据缓冲区的,因此SJAlooO可作为字符型设备。整个驱动程序分为两部分,分别是主文件和头文件。其中头文件部分定义了SJAl000寄存器宏,以及相关操作函数。在对CPU寄存器进行操作之前同样需要对寄存器的地址进行映射,相关的映射工作可以通过调用内核函数完成。对于CAN数据包的接收,需要通过数据缓冲区来完成。在驱动程序中,利用结构体定义该数据缓冲区,该结构体包括数据包以及数据包的头和尾。CAN总线标准帧的最长长度有108位,这里取13个字节的帧长度,同时定义最大帧数宏MAXFRAMES,可以根据具体情况调整宏的大小,从而改变缓存区的大小。结构体的定义如下所示。struetrec{unsignedchardatabut覃13幸MAX_NR_FRAMES];//每个帧13个字节hatstart,end;/缓冲区的头和尾)rdbu£41 杭州电子科技大学硕士学位论文在程序第一次打开SJAl000的时候,需要初始化缓冲区,保证接收缓冲区是空的。驱动使用init—rdbuf()函数将缓冲区的开始位和结束位都赋值为零,这样即可表示清除缓冲区。在使用缓冲区的时候还需要判断缓冲区是否为空,或者是否已满。这里使用函数is_empty_rd_bufO和is_full_rd_bufO分别进行判断。上述函数的具体实现如以下代码所示。严缓冲区初始化·/staticvoidinit——rd——bufO{rd—bur.start三O;rd—bur.end=0;>严判断缓冲区是否为空·/intis_empty,rdbufO{return(rd_bu£start—rd_bu£end);//若第一个帧和最后一个帧的位置相同//则缓冲区为空)/宰判断缓冲区是否已满·/intis_fullrdbufO{return(rd_buf.start一(rd_bu£end+I)%MAX_FRAMES);倒断缓冲是否//已满>SJAl000作为字符型设备,使用结构体fileoperations来存储各种设备操作函数的指针。该结构体中的每个域都对应着一个设备驱动程序用来处理某个事务的函数的地址。struetfile_operationsfops={owner=TmSMODULE,open2can_open,read=canread,write=can_write,ioctl=can_ioctl,release=anrelease,);42 杭州电子科技大学硕士学位论文can—read和can—write分别是数据包读写函数的函数指针。can_readO函数主要完成将数据接收缓冲区内的数据写到应用程序数据空间的任务,can_write()贝,0负责将应用程序要发送的数据传输到SJAl000内部的发送缓冲器。can_readO和can_writeO的代码如下。staticssize—tcan_read(stmctfile·filep,char幸buffer,size—tlength,lo行_t幸ppos){imtotal=0;while(I){if(total>=length)//判断读取数据长度小于0或已读完break;if(if_empty_rdbufO)//判断数据接收缓冲区为空break;omrdbur(buffer+total);//读取数据total+=13;//已读取的数据长度加13>returntotal;//返回总读取的数据长度)staticssize—tcan_write(structfile·filep,constchar宰buffer,size_tlength,loft—t幸ppos){缸total=0,i;unsignedcharTXdata[13];//临时数组,用来存放发送数据printk(”thedatatobesendedbycanlis:Ln”);for(i=0;i<13;i++){printk(”[%d】=%x”,i,buffer[i]);)printk(”\Il”);while(total+13<--length){memcpy(TXdata,buffer+total,13);//将待发送数据复$0至U115时数组中Transmit(TXdata);//发送数据到内部发送缓冲器total—‘==13;>returntotal;)43 杭州电子科技大学硕士学位论文SJAl000采用中断机制进行数据的接收,当CPU收到来自SJAl000中断引脚发出的中断信号以后,内核会根据中断号调用在驱动模块初始化时注册的中断处理程序sial000_can_irqO。中断处理程序会先读取SJAl000内部中断寄存器的状态,判断是否有接收中断产生,如果接收中断存在,则调用接收函数将SJAl000接收缓冲器中的数据写到接收缓冲区中。当数据接收完成以后,SJAl000接收缓冲器中的数据被释放。如图4.4所示为数据接收中断的处理过程。图4.4SJAl000数据接收中断处理过程在进行SJAl000设备注册的时候,首先调用ioremapO函数对SJAl000的物理地址进行映射,并初始化CAN寄存器;然后对SJAl000使用的GPIO口进行初始化,为其分配外部中断;最后完成中断号和设备号的申请。4.3.3DM9000驱动模块4.3.3.1网络设备的层次结构在Linux的网络设备驱动程序体系结构中,从上到下可以分为4层,如图4.5所示,它们分别是:网络协议接口层、网络设备接口层、提供实际功能的设备驱动功能层以及网络设备和媒介层162】。(1)网络协议接口层网络协议接口层最主要的功能是为上层协议提供透明的数据包发送和接收接口。当上层ARP协议或IP协议发送数据的时候,它们需要调用网络协议接口层的devqueuexrmtO函数发送数据包,同时将一个指向structskbuff数据结构的指针传递给该函数。当上层是同过调用neifrx()函数来完成对数据包的接收,同样需要向该函数传递structsk数据结构的指针。结构体用在_buffskbuffLinux 杭州电子科技大学硕士学位论文网络子系统中的各层之间,用来传递数据,它是Linux网络子系统数据传递的中枢。数据包发送数据包接收devqueuexmit()netjLrx()网络协议接口层▲●Tstructnet_device网络设备接口层一+T数据包发送中断处理网络驱动功能层hard——start——xmitO(数据包接收)▲●T网络物理设备媒介网络设备与媒介层图4.5网络设备驱动体系结构159】(2)网络设备接口层网络设备接口层的主要目的是为各种类型的网络设备定义一个统一、抽象的数据结构net_device,实现多种硬件在软件层次上的统一。net—device结构体在内核中指代一个网络设备,网络设备驱动程序只需通过填充netdevice的具体成员并注册netdevice即可实现硬件操作函数与内核的挂接。(3)设备驱动功能层设备驱动功能层主要完成对netdevice结构体中的成员赋值,其中包括具体数值和函数指针。除此之外,设备功能层的另外一个部分主要包括中断处理函数,它负责读取硬件上接收到的数据包并传递给上层协议。(4)网络设备与媒介层网络设备与媒介层直接对应于实际的硬件设备,为了给设备的物理层配置和寄存器作一个更一般的描述,可以通过宏对寄存器进行定义,并设计访问寄存器的函数。4.3.3.2DM9000驱动实现由于DM9000集成在$3C2440A平台上,因此,该网络设备可作为平台设备处理,这也是2.6版本Linux内核引进的一种新的设备模型。首先在$3C2440板文件“arch/arm/plat.s3c244xx/common-smdk.c”中添加与DM9000相关资源信息,包括数据发送、接收地址,中断号等。具体代码如下。#include#def'me$3C2410一CS4(Ox20000000)stmicstructresources3c2440_dm9kresource[】—j11itdata={[O】={.start=$3C2410_CS4,.end=$3C2410.CS4+3,45 杭州电子科技大学硕士学位论文.flags=IORESOURCEMEM>,【1】={.start=$3C2410一CS4+4,.end=$3C2410一CS4+7,.flags=IORESOURCEMEM),【2】={。start=IRQ_EINT7,.end=IRQ_EINT7,.flags=IORESOURCE_IRQ,>);另外在该文件中还要定义DM9000的平台设备,设备名称为“DM9000’’,设备资源包括前面定义的I/O和中断资源。代码如下。staticstructdm9000plat_datas3c2440_dm9k__pdatainitdma2{.flags=DM9000_PLATF_16BITONLY,>;staticstructplatform_devices3c2440一de、,ice—dm9k—initdata2{.Ilame=”dm9000”,.id=0,.hum—resources=ARRAY_SIZE(s3c2440_d【m9k_resource),.resource=s3c2440_dm9kresouree,‘.deV={.platform_data=&s3c2440_dm9k._pdata,)>;为了使DM9000在板子初始化的时候就能被添加到总线上,需要将DM9000平台设备结构体加入到平台设备初始化结构体数组。staticstructplatformdevice—initdam宰smdk_devs[]2{&s3c_device_nand,&smdk_led4,&smdkled5,&smdkled6,&smdkled7,&s3c2440devicedm9k,//DM9000平台设备); 杭州电子科技大学硕士学位论文接下来分析DMA9000驱动的主要实现过程。要让驱动工作必须要先注册该平台驱动,该过程将驱动添加到总线上,完成驱动和设备的匹配,并执行驱动的probe()i函数。staticstructplatform_driverdm9000一driver2{.driver={.name=”dm9000”,//通过该名字与设备进行匹配.owner=THIS_MODULE,.pm=&dm9000_drv_.pm_ops,),.probe=dm9000_probe,.remove=__devexit_p(dm9000_drv_remove),.suspend=dm9000_drv_suspend,.resume=dm9000_drvresume,>;staticint......initdm9000_init(void){printk(KERN_INFO¨%sEthemetDriver,V%sha”,CARDNAME,DRV_VERSION);returnplatform_driverregister(&dm9000_driver);∥注册平台驱动>如前文所述,probe函数主要完成探测设备,获取并保存资源信息,根据这些信息申请内存和中断。在网络设备中,profbe还负责调用register_netdev函数注册该网络设备。remove函数的功能则是把设备从内核中移除,释放内存区域。suspend的作用是将设备标志位removed状态,并设置挂起状态位,最后关闭设备。与字符设备类似,网络设备同样要提供设备的操作接口供上层调用,而作为网络接口层,需要为网络协议接口层提供设备操作的接口。因此,在驱动中要根据需要填充netdeviceops中的函数。代码如下。staticconststructnet_device_opsdm9000_netdev_ops2{.ndo__open=dm90000pen,.ndo_stop2dmgOOO_stop,.ndo—start—xmit=dm9000_startxmit,47 杭州电子科技大学硕士学位论文.ndo—tx—timeout。dm9000__timcout,.ndo—set—multicast—list=dm9000_hash_table,.ndo—do—ioetl=dm9000_ioctl,.ndo__change_mtu2cth_change_mtu,.ndo—validate—addr=ethvalidate_addr,.ndo—set—mac—address=eth_macaddr,#ifdefCONFIG—NE弋jOLL—CONTROLLER.ndo__poU_comroller=dm9000_.poU_controller,#endif);,dm9000__openO的主要作用是向内核注册中断,复位并初始化dm9000,检测MII接口,使能传输等。din9000__stopO做的工作则基本上与dm9000_open相反,停止传输,释放中断。dm9000_start_xmitO是重要的数据包发送函数,它将从上层接收到的sk__buff包发送给硬件,数据包的发送步骤如下。1)检查存储数据宽度。通过读取中断状态寄存器(ISR)的bit[7:6]来判断数据的位数。2)将数据写入TXSRAM中。3)写传输长度到TXPLL和TXPLH寄存器中。4)设置TXCR寄存器的bit[0]来开始发送一个包。DM9000的数据接收是通过中断完成的,当DM9000收到数据包以后会向$3C2440A发出数据接收中断,$3C2440A通过内核调用中断处理函数,中断处理函数根据相关寄存器的状态来判断是否调用数据接收函数din9000rxO进行数据的接收。中断处理函数在设备打开的时候被注册进内核。中断处理程序的代码如下。staticirqreturn_tdm9000_interrupt(intirq,void幸devid){structnet—device幸dcv=dev_id;board—into—t幸db=netdev_priv(dev);intint_status;unsignedlongflags;u8reg_save;dm9000_dbg(db,3,”entering%s\Il”,—如ncJ;产屏蔽外部中断t/spin_lock_irqsave(&db->lock,flags);48 杭州电子科技大学硕士学位论文严保存寄存器地址·/reg_save2readb(db->io_addr);/.关中断·/io、“db,DM9000_IM&IMR_PAR);严获取DM9000中断状态·/hat—status=ior(db,DM9000_ISR);//读取状态寄存器iow(db,DM9000_ISKint_status);//清除ISRif(netifmsg_intr(db))dev_dbt:(db->dev,”interruptstatus%02x\】a”,int_status);严接收数据包·/if(int_status&ISR_PRS)dm9000_rx(dev);/.传输中断检测·/if(int_status&ISR_PTS)drn9000一tx—done(dev,db);if(db->type!=TYPE_DM9000E){if(int_status&ISR_LNKCHNG){schedule_delayed_work(&db->phy__poll,1);)/.使能中断·/iow(db,DM9000_IMR,db->imr_a11);writeb(reg_save,db->io_addr);//恢复先前的寄存器值spin_unlock_irqrestore《&db->lock,flags);returnIRQ_HANDLED;)4.3.4RS232串口驱动由RS232串口硬件设计可以知道,RS232串口是在UART的基础上通过电平转换扩展而来的,实质上它仍是UART设备。因此,RS232的驱动开发就成为了UART设备驱动的开发。串口设备属于终端设备【631,Linux将终端设备作为字符设备处理,因此串口设备也是字符型设备。由于串口设备驱动不仅仅是简单的设备初始化,数据收发,还增加了许多软件的功能,所以串口设备驱动采用了多层次结构。串口驱动一般分为:终端设备层、串口抽象层和串口芯片层。49 structuart—driver{module·owner;constchar幸driver_name;//驱动名constchar·dev_name;//设备名hatmajor;//主设备号hatminor;//次设备号imnr;console·cons;产私有数据,底层驱动不能访问这些成员,被初始化为NULp/uart—state●state;try_driver·try_driver;);对于一个姆驱动,使用中必须要注册或注销trydriver,而由于uart—driver封装了tty_driver,UART驱动变成了对uart—driver的注册或注销。接口如下:hatuartregisterdriver(structuart—driver幸caw);voiduart_unregisterdriver(structuart—driver·arv);在本驱动中,定义了一个uart—driver的实现s3c24xx—uart—dry,具体代码如下。staticstruetuart—drivers3c24xx—uart—drv={.owner2TIqIS_MODULE,.dev—name。”s3c2440serial”,.nl"=3,.coils2S3C24XX_SERIAL_CONSOLE,.driver—name=S3C24XX 杭州电子科技大学硕士学位论文.major2$3C24XX_SERIAL_MAJOR,.minor=S3C24XX_SERIAL_MINOR,);(2)uartport.uartport用于描述一个UART端口(直接对应一个串121)的I/O端口或I/O内存地址、FIFO大小、端口类型等信息。串口抽象层提供如下函数来添加一个端口:intuart_add_one_port(structuart_ckiver·dry,structuart_port幸port);对该函数的调用需要在注册uart—driver之后,uanaddJmpon()的主要作用是封装了tty_register_device0。在本系统UART端口的实现中,对uart_port进行了封装,同时加入了针对$3C2440AUART的附加信息。该结构体如下所示。structs3c24xx_uart__port{unsignedcharrx_claimed;unsignedchartx_claimed;unsignedintpro_level;unsignedlongbaudclkrate;unsignedintr)Lirq;unsignedintt)(-irq;struets3c24xx—uart—into·into;structs3c24xx—uart—clksrc·clksrc;structclk·elk;structclk·baudclk;structuart_.1)0rtpoIt;#ifdefCONFIGCPU_FREQstructnotifier—.blockreq__transition;拌endif);(3)uartopsuartops定义了对UART的一系列操作,包括发送、.接收及线路设置等,在$3C2440A的串口驱动中uartOPS结构体实例的定义如以下代码所示,staticstructuart_opss3c24xx_serial__ops2{.pm=s3c24xx_serial_pm,.tx_empty=s3c24xx—serial—txempty,.get_mctrl=s3c24xx_serial_get_mctrl,51 杭州电子科技大学硕士学位论文.setmctrl.stop-.start—tx.stopjⅨ.enablenls.breakctl.startup2s3c24xx—serial—set—mctrl,=s3c24xx_serial_stop_tx,//停止传输字符=s3c24xxserialstarttx,//开始传输字符=s3c24xxserialstopD【'//停止接收字符2s3c24xx_serial._enable_ms,2s3c24xx_serial_break_etl,=s3c24xxserialstartup,//启动端口.shutdoWll=s3c24xxserialshutdown,//禁用端口.set—termios=s3c24xx_serialset—termios,//改变端口参数.type2s3c24xxserial_type,.release__port=s3c24xx_serial_release__port,//释放端口占用的内存和I/O.request_.port=s3c24xx_serial_request__port,//申请端口所需的内存和I/O.config__port2s3c24xx_serial_config_port,.verify_port2s3c24xx_serial_verify__port,);由于S3C2440AU砧玎是片内子系统,这里使用平台设备模型进行设备驱动开发,该平台设备驱动的实例如以下代码所示。staticstruetplatform_drivers3c2440一serial—driver一{.probe=s3c2440_serial__probe,.remove=__devexit__p(s3c24xx_serial_remove),..driver={.name=”s3c2440-uart”,.owner=TmS_MODULE,},>;整个驱动在加载过程中会调用uart_registerdriver0注册s3c24xx—uart—dry,同时调用s3c2440_serial_init0,之后s3c24xx_seriaLinit0被调用,并进行平台设备驱动的注册,从而使得s3c2440_serial_probeO被执行。在s3c2440_serial_probe()中s3c24xx_serial__probe()i函数调用s3c24xxseriaLinit__portO初始化UART端口,并调用uart_add_one_.port0添加端口。4.4协议转换设计方案4.4.1应用层协议帧设计作为协议转换网关,主要实现的是CAN总线协议帧、RS232协议帧与PROFIBUS.DP协议帧的转换。与以太网的通信则主要涉及到PROFIBUS.DP报52 杭州电子科技大学硕士学位论文文帧的解析或封装。由于PROFIBUS.DP协议以及CAN总线协议完全由相关协议芯片实现,而Lmux内核也已经实现了TCPBP协议和串行通信协议,应用程序通过Lmux内核提供的系统调用接口可以直接读取相关总线的协议帧和由以太网传输的数据。所以协议转换主要在应用层进行。CAN总线与RS232总线都没有在应用层对协议帧进行具体的定义,这为使用者自行定义应用层协议帧提供了方便,用户可以根据实际的应用情况来设计,应用层协议帧的可自定义则为进行协议帧的转换提供了条件。下面分别介绍CAN总线和RS232总线针对PROFIBUS.DP协议的应用层协议帧设计。4.4.1.1CAN总线应用层协议帧设计CAN总线协议只规定了数据链路层和物理层,在实际应用中需要设计合适的应用层协议,才能满足系统的通信要求,完成可靠的数据传输。为了方便与PROFIBUS.DP协议帧的转换,这里采用了CAN2.0B中具有29位标识符的扩展帧,该标识符的含义可以自行定义。PROFIBUS.DP总线采用主从结构的通信方式。主站和从站建立连接之前,主站向总线发送包含目的从站地址的查询报文,总线上的每个节点都能收到该报文,各节点将报文中的目的地址与本节点的地址比较,若相符则做出应答,并建立与主站的点对点通信。因此,在PROFIBUS.DP的报文帧中包含了源地址和目的地址。CAN总线作为多主系统,没有规定地址段,所以在应用层协议帧设计的时候需要考虑目的地址和源地址的设置。这是CAN协议帧与PROFIBUS.DP协议帧转换首先需要考虑的问题。PROFIBUS.DP协议帧中含有的源地址和目的地址分别用1个字节的低7位表示,可以表示127个站地址。在CAN应用层协议的设计中,使用了CAN标识符中的前两个字节来分别表示PROFIBUS.DP主站地址和从站地址。由于PROFIBUS.DP协议帧中的数据段信息较CAN协议帧中的数据段长很多,所以在协议帧相互转换的过程中需要对数据进行拆分或合并。PRO兀BUS.DP最长的数据帧中有246个数据字节,而CAN协议帧中数据段的最大长度是8个字节,因此需要至少31个CAN协议帧才能完全表示。在PROFIBUS.DP协议帧向CAN协议帧转换的过程中,PROFIBUS.DP帧的数据段按6个字节每部分进行拆分,然后加上帧索引和源地址。在进行反向转换的时候,将CAN协议帧以最多31个为一组的方式进行合并。在进行CAN协议帧设计的时候还需要考虑CAN协议帧优先级的问题,对一些较为敏感和紧急的数据要进行优先处理,以免影响系统的实时性和可靠性。所以在CAN协议帧中加入了帧优先级位。同时,通过帧类型标识位来区分不同53 杭州电子科技大学硕士学位论文类型的CAN协议帧。765432lO字节1FFRTRt|DLC8位源地址(0--255)字节2—58位目的地址(0-255)标识符帧索引位优先级位帧类型设备类型标志位|\|字节6~13数据位(o~8字节)图4.6CAN总线应用层协议帧结构如图4.6所示为CAN应用层协议帧结构,字节l对应SJAl000帧信息寄存器中的对应位,标识符则对应SJAl000标识符寄存器的内容,数据字节对应SJAl000数据寄存器中的内容。其中对29位标识符进行了自定义,具体包括:8位源地址,8位目的地址,5位帧索引,3位优先级,3位帧类型和2位总线设备类型标识位。对于优先级的设置需要根据现场设备的具体情况来设置,如果接入的CAN设备需要进行实时的数据通信,该设备对实时性的要求较高,则可以将该设备数据帧的处理优先级调高,协议转换进程在完成协议帧转换之后可以优先将数据发送到发送缓冲区。对于一些处理特殊状况的协议帧同样可以具有较高的处理优先级。表4.1总线设备类型标识位说明位l位2说明O0DP从站自身发出OlCAN设备lORS232设备1上层以太网这里对总线设备类型标识位进行说明。由于该网关是基于PROFIBUS.DP从站开发的,其他总线设备需要通过该从站才能与主站通信。在进行组态的时候,只能设置DP从站的地址,而对于发送给主站的数据,主站也只能直接识别报文帧中DP从站的地址,无法直接确定数据是来自CAN设备、RS232设备或者是以太网。因此将标识位的最后两位作为总线设备类型标识位使用。总线类型标识位的数值与发出该协议帧的总线设备类型的对应关系如表4.1所示。4.4.1.1RS232数据帧格式设计RS232总线以字节单位进行数据通信,它在总线中的数据传输格式如图2.14所示。一次发送可以传送8个数据位,数据的发送以起始位开始,从低到高,最 杭州电子科技大学硕士学位论文后以一个高电平的停止位作为结束。RS232的帧格式则可以完全由用户来定义。为了便于和PROFIBUS.DP协议帧进行相互转换,对RS232的数据帧结构作了如图4.7所示的定义。SOFLENADDRlADDR2CFlCIDDATACRCEOF图4.7RS232数据帧结构RS232数据帧中各数据域的具体含义如下。1)SOF:1个字节,数据帧的开始字节,主要是用于同步。2)LEN:1个字节,表示除了SOF和EOF外的所有字节个数。3)ADDRl;1个字节,表示源地址。4)ADDR2:1个字节,表示目的地址。5)CFI:1个字节,其中bit7和bit6的组合表示对应PROFIBUS.DP协议的类型,bit5"-bit0表示当前帧携带的有效字节数。6)CID:1个字节,bitl"-,bit0为设备类型标识位,bit3"-bit2表示帧索引位。7)DATA:可携带64个字节的数据区。8)CRC:循环冗余校验。9)EOF:1个字节,标识帧的结束。4.4.2网关与以太网的通信实现4.4.2.1以太网数据的封装由于TCP/IP协议已经完全由Linux内核实现,对于PROFIBUS.DP协议帧和以太网数据帧的转换可以利用“封装法"实现。将PROFIBUS.DP协议帧中的数据段作为“用户数据’’直接嵌入到TCP/IP数据帧中,然后由Linux内核完成以太网数据帧的封装并发送到以太网网中。数据的封装过程如图4.8所示。4.4.2.2socket通信网关利用socket实现上述功能。socket数据传输是一种特殊的I/O,是网络中进行通信的一种方式164]。在Linux系统中,socket作为一种文件描述符的形式存在,因此,可以使用类似文件操作的函数对其进行读写I/O、打开、关闭等操作。socket的基本操作主要由以下几个功能函数组成。(1)socket()函数socket()i垂t数对应于普通文件的打开操作,它返回一个socket描述符,用来55 杭州电子科技大学硕士学位论文唯一标识一个socket。后面对这个socket的读写操作都要把这个描述符作为参数。以太网数据帧—\发送至以太网以太网帧头lIP肥P报头IDAlIAI以太网校验伊报头ITC】P报头IDATATCP报头IDATAPROFIBUs.DP厂一数据帧SYNlSD2IDAISAIFClDATAlFCSIED接收PROFIBUS-DP数据帧图4.8以太网帧的封装过程(2)bind()函数..bind()函数的作用是将一个地址族中的特定地址赋给socket。通常在服务器启动的时候会绑定一个众所周知的IP地址和端口号,客户端可以通过它来连接服务器。(3)listen()函数和connect()函数服务器通过调用listen()来监听socket,等待客户请求。客户端调用connect()函数来请求与TCP服务进行连接。(4)accept()函数TCP服务器监听到请求之后,就会调用accept0函数取接收请求,这样就建立了连接。之后就可以开始网络I/O操作了,即类同于普通文件的读写I/O操作。(5)read()和write()等函数当服务器与客户端建立连接以后,就可以调用read()和write()等I/O操作函数进行数据的传输。(6)cbse()函数当数据传输完成以后,通过调用cbse()函数关闭socket。对于面向TCP的socket通信是建立在“三次握手”的基础上完成的,主要过程如图4.9所示。 杭州电子科技大学硕士学位论文广——]I客户端lL..1socket:connectf阻塞);(主动打开】connect(返回)accept(阻塞)accept(返回):图4.9socket中的TCP连接建立过程[6414.5基于Linux的协议转换任务设计4.5.1Linux的任务机制4.5.1.1多任务机制与进程状态Linux是一个多任务的操作系统,同时可以执行多个任务【57】【5引。Linux采用分时管理的方式来实现多任务的共同执行,所有的任务都放在一个队列中,操作系统根据每个任务的优先级为任务分配合适的时间片,对于单cpu系统每个时刻只有一个任务在执行。由于每个时间片很短,用户一般感觉不到是多个任务在运行。在Linux系统内,任务是以进程的形式存在的。进程是程序的一个动态实体,是操作系统分配内存、CPU时间片等资源的基本单位。因此,进程可以看作是执行状态的程序以及它所包含的资源的总称。按照进程的功能和运行的程序分类,进程可分为两大类。其中一类是系统进程,该类进程主要执行内存资源分配和进程切换等管理工作。另一类用户进程则主要用来完成用户指定的功能。在Linux系统中进程有五种状态:可运行态、可中断的等待状态、不可中断的等待状态、被终止状态和停止状态。在一定条件下进程的状态是可以切换的,任务状态切换如图4.10所示。4.5.1.2进程调度为了使多个进程能有效的工作,需要对进程进行调度。调度程序作为内核的子系统,是Linux系统的基础,只有通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才能有并发执行的效果。Linux内核采用了基于优先级的抢占式调度【5引。根据进程的价值和其对处理器的需求将进程进行分级,优先级高的进程先运行,低的后运行,相同级别的进程则按轮询方式进行调度。Linux内核提供了两组独立的优先级范围。一种是nice值,它的范围从.20N+19,nice值越小优先级越高,进程可获得的时间片也越长。另一种叫实时优先级,它的值可以配置,57 在Linux系统中,进程间通信是进程之间相互通信、同步以及协调各自活动的主要手段,Linux系统的进程间通信主要有以下几种方式眄51。1)管道(Pipe):管道可用于具有亲缘关系进程间的通信。2)信号(Signal):信号用于通知接受进程有某种事件发生。3)消息队列(Message):消息队列是消息的链接表,有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。4)共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。5)信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。6)套接(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。在本设计中,使用信号量进行同步,实现任务间的通信。4.5.1协议转换网关的任务划分与实现由于各总线模块的设备驱动已经实现了各协议帧数据的收发功能,协议转换程序可以通过读取设备文件而获得需要转换的协议帧数据,在完成转换工作以后,通过写目的设备的设备文件即可向该设备写入数据,随后由设备驱动完成协议帧数据的发送。因此,应用层的主要任务是数据读写和协议转换。此外,由于本网关是一个PROFIBUS-DP从站设备,需要及时处理新的参数、配置和地址更改报文。58 杭州电子科技大学硕士学位论文4.5.1.1数据读写任务根据网关上的总线接口模块,设计PROFIBUS.DP、CAN、以太网和RS232的数据读写任务:pDpData、pCanData、pEthData、pRs232Data。协议帧读写进程在获取相关中断释放的信号量之后读取相应的协议帧数据,放入协议帧缓冲区。将这些信号量定义为:semDpRead,semCanRead,semEthRead,semRs232Read。PROFIBUS.DP读写进程在读取PROFIBUS.DP帧数据后会根据协议帧类型对协议帧分别处理:如果是从站配置、参数设定报文帧,读写进程通过semSlaveConfig信号量唤醒主任务对该协议帧进行处理并完成相应的从站配置;如果该帧是发往其他总线设备或者以太网的,则通过信号量semCovertDp唤醒相应的协议转换进程,在完成转换之后,转换进程通过semCanWrite、semEthWrite、semRs232Write信号量启动协议帧读写进程,将协议帧数据写入各自的设备文件,并完成数据的发送。其他数据读写进程,在完成数据的读任务以后,释放信号量semConvertCan、semConvertEth、semConvertRs232,执行协议转换进程。协议转换完成以后,协议转换程序使用semDpWrite信号量启动PROFIBUS.DP协议帧读写进程,将数据送往主站。4.5.1.2协议转换任务协议转换任务pConvert是整个应用层任务中最主要的,也是软件实现的核心部分,在程序中是由函数MutiProtocolConvertoi垂i数实现的。该函数实现了所有协议转换的任务,根据不同的协议转换任务,在MutiProtocolConvertO函数内定义了4个协议处理子函数,它们分别用来处理不同的协议转换过程。这些函数是:DptoOther0,CantoDp0,EthtoDp0和Rs232toDp0,而其中的DptoOther()i函数又根据转换的目标协议不同,定义了3个子函数:DptoCan(),DptoEth()和DptoRs2320。协议转换子函数按照前面定义的总线应用层协议帧格式进行协议转换,并将转换完的数据放入协议帧转换缓冲区。协议转换进程在处理转换任务之前处于休眠状态,数据读写进程释放semCovertDp、semConvertCan、semConvertEth、semConvertRs232信号量之后,该进程被唤醒。协议转换进程根据不同的信号量来选择子函数处理协议转换任务。完成协议转换任务之后,释放信号量semDpWrite、semCanWrite、semEthWrite、semRs232Write,相应的数据读写进程被唤醒,协议转换缓冲区中的数据被发送。协议转换缓冲区的设计需要考虑并发的问题,这里同样使用信号量进行并发控制。4.5.1.3系统主任务系统主任务pMam一方面负责完成PROFIBUS.DP从站的管理和配置,以及 杭州电子科技大学硕士学位论文对参数、配置等报文帧的处理,另一方面就是要创建上述信号量和存储空间,并在执行的时候激活上述任务进程,并由内核根据优先级进行调度。网关的协议转换任务流程如图4.1l所示。图4.11协议转换任务流程4.5.2任务调度与通信_根据任务的重要性合理分配任务的优先级对保证整个网关高效、正确的运行是十分重要的。在本设计中,根据Linux系统进程调度中的优先级以及轮转调度机制对协议转换中涉及的相关任务进行优先级的设置,任务间的通信则通过二进制信号量来完成。4.5.2.1任务优先级的设定如前文所述,Linux使用nice值表示进程的优先级。在本网关任务优先级的设计中,考虑到pMian所起的重要作用,将该任务的优先级设为0。对于pDpdata数据帧读写任务,它是所有PROFIBUS.DP报文帧的读写函数,由于许多从站配置报文需要优先处理,所以将它的优先级设为1。对于另外3个协议帧数据读写任务,出于实时性和公平性的考虑,将它们的nice值都设为2,这样内核可以对这3个任务进行轮转调度。协议转换任务要在完成协议帧数据读取的条件下进行,从而它的优先级要低于协议帧数据读写任务,将其nice值设为3。4.5.2.2任务间的通信在本网关中,协议帧数据读写任务和协议帧转换任务使用了二进制信号量进行同步。由于协议帧数据读写任务的优先级更高,协议帧数据读写任务在读取数据的时候先获得相关信号量,此时协议转换进程由于在等待该信号量的释放而处于休眠状态。当数据读取完成,该信号量被释放后,协议转换进程被唤醒并进行 杭州电子科技大学硕士学位论文协议帧的转换。获取信号量$emDpReadJ歌取信号tsereBufDp写协议缓冲区l释放信号量semBufD口J释放信号量$emConvertDvJ释放信号量IemDpRead被阻塞.进入体眠状态.等待下个接收中断释放信号量试图获取信号量聪mConvcnDp键阻塞获取信号量semConvenDp执行转换任务J获取信号量SeWIBufDp读写缓冲区Jr释放信号量5cmBut'DpJ释放信号量semConvertDp程图4.12任务的同步与互斥操作因为各个数据读写进程和协议转换进程都使用同一个协议数据缓冲区,如果不对该缓冲区进行保护,则可能会发送访问冲突,数据的完整性也会受到破坏。这里采用信号量机制实现对缓存取访问的并发控制。本系统使用了互斥信号量semButDp、semBufCan、semBufEth和semBufRs232对协议数据缓存进行保护。以pDpdata协议帧数据读取进程为例,任务在信号量下进行互斥和同步的操作如图4.12所示。4.6小结本章重点介绍了现场总线多协议转换网关的软件实现,具体包括Linux下各总线模块的驱动实现,协议转换任务的设计,任务优先级的划分和任务间的通信。其中协议转换任务的实现是在总线应用层协议帧设计的基础上完成的。6l 杭州电子科技大学硕士学位论文第5章多协议转换网关的测试5.1测试环境介于实验室条件的限制,这里使用了模拟环境对网关的数据收发功能进行了测试。在一台PC机上用PbScript软件模拟了PROFIBUS.DP主站环境:在另一台PC机上使用CANmini接口卡连接并口,可以将PC机作为一个CAN设备节点,并使用zlgCANtestCAN测试软件对该接口卡进行数据发送、接收等测试;将第三台PC机作为以太网的服务器端,使用以太网线与多协议转换网关的以太网网口相连,利用wireshark以太网侦听软件检测从网关发来的数据;再将一台PC作为RS232设备,用PC机上的RS232串口与网关相连,利用串口调试工具进行数据的收发。如图5.1所示为整个网关的测试平台。图5.1协议转换网关测试平台5.2测试过程和结果在进行数据收发测试之前,先要对PROFIBUS.DP的主从站进行组态和参数配置,在本测试中,通过导入相关的GSD文件完成配置。GSD文件一般包括三部分:总规范、与DP主站有关的规范和从站规范。为了方便GSD文件的编写,这里使用了由官方提供的GSD编辑器GSD.Editor。编辑环境如图5.2所示。5.2.1从站状态机的测试完成GSD文件的编写以后,向主站导入该配置文件。本测试平台使用主站模拟软件PbScript导入GSD文件。为了判断从站是否能正常工作,需要测试从站的状态机。根据GSD中的相关信息,使用PbScript组态从站模件,配置从站 杭州电子科技大学硕士学位论文设备级和模件级参数化数据,并设置V0测试参数,这些配置信息保存为脚本文件TCl.pbs,并编译该脚本文件。打开从站接1:3,设置要测试的从站地址,然后设置主站串1:3号和波特率。运行测试脚本,自动开始状态机的测试。测试结果如图5.3所示。图5.2GSD编辑环境图5.3测试脚本的测试结果从测试结果看从站的状态机正常,接下来进行各总线设备数据收发的测试。5.2.2CAN总线设备数据收发测试在完成CANmini接口卡硬件、驱动以及zlgCANTestCAN测试软件的安装以后,就可以用zlgCANTest软件进行CAN设备数据收发的测试了。打开zlgCANTest后在设备中选择CANmini设备,选择端口并设置波特率。启动CAN设备,并根据之前定义的CAN协议帧结构设置CAN帧的各项参数。这里将发送帧的ID设为00000000,发送的数据长度为8字节,发送的数据内容为000l020304050607。图5.4为数据的发送画面。 图5.4zlgCANTest的数据帧发送5.2.3以太网接口的数据发送测试在测试之前,先要设置服务器和协议转换网关的IP地址和物理地址,使它们处在一个网段中。先利用PbScript将包含以太网信息的数据帧发到网关,网关中的协议转换进程提取以太网信息后,以太网数据发送进程同过socket通信机制将数据发往以太网服务器。在服务器端使用以太网侦听软件wireshark对收到的数据进行监测,观察来自协议转换网关的数据包。如图5.5所示为wireshark的侦听状态图。874.86粥锚1.15.235.55.12560.176.46.79TcP62http>rhttP【^c刈.915.4406船.∞.186.87.2匏60.176.46.79伸P“950urce阱:4466-_J.:i.............................。..................,............................J.:j::j::j0::斋:?;:二:!甜:I⋯.o.r⋯oro...63oo17nclOb2⋯⋯.■1.c..1..2f7603021610⋯..⋯..,v⋯.ol21c,s020300●h⋯⋯⋯!.⋯2e了1382e3235.。.169.254.1鲁.25720602∞00000.⋯r.⋯r.....瑟器器瑟嚣暨:..,60.⋯.177::?:j?::-_J厢i面磊百——————一b瞬函丽磊丽面磊硪赫磊话i£蓐蟊函函画葫而西i菇r5.2.4RS232数据收发测试图5.5wireshark的侦听状态图在RS232数据收发的测试中,使用PC机模拟RS232总线连接的监控机PC和工控机和PROFIBUS.DP主站进行通信。这里使用RS232串口调试工具进行数据的收发。将符合RS232帧格式要求的数据填入数据发送窗口,可以进行数据∞n卯∞∞uh∞∞∞M∞陀∞”私∞nm¨呻惦陀∞∞Ⅺnn"缸出肝酐∞h∞∞弘n弘∞m弛以∞n∞∞弘:金抛∞∞的∞芑}“∞∞站娃M∞盯k∞∞∞∞∞珏∞”nn蚰∞∞∞缸∞挣勉n“∞"∞∞∞∞∞弘nh∞甜h钙∞∞""丑仪的∞旺k曲∞∞吐叱蚀娃M花k弛n缸∞∞:窨∞∞%n:g船辐∞∞曲;号∞Ⅺ∞∞埒∞如∞如的加∞吣∞∞ 到网关所总线模块和数据通 杭州电子科技大学硕士学位论文第6章总结与展望6.1总结介于现场总线领域多种标准并存的局面,本课题从现场总线协议转换的方向出发,研究不同标准的现场总线之间的互联问题。利用嵌入式开发平台进行协议转换网关的开发,设计出了基于PROFIBUS.DP从站的多现场总线协议转换网关,实现了几类不同总线设备在PROFIBUS.DP总线上的接入。本课题所做的工作为进一步研究打下了基础,具有一定的实际意义。本课题的主要完成的工作有:1)对PROFIBUS—DP、CAN、以太网和RS232的总线协议进行了分析和研究,考虑到PROFIBUS.DP总线使用的广泛性和具有的技术优势,将PROFIBUS.DP总线作为主网络。结合协议转换实现的目标和各自协议的特点,对CAN总线和RS232总线的应用层协议帧进行设计,使它们和PROFIBUS.DP协议帧转换的实现更为简单。2)对Linux下驱动的实现进行了分析,在协议转换网关软件部分的设计中,实现了各总线接口模块在Linux下具有可移植性的设备驱动,并为其他总线设备的添加提供了设计思路。3)利用Linux系统的多任务和优先级机制设计协议转换任务,并使用信号量进行进程间的同步,提高了网关的整体可靠性和实时性。6.2展望现场总线多协议转换网关涉及到各类不同标准的总线、网络通信以及Linux操作系统等多方面的知识,而由于个人的知识和能力有限,加上受到实验条件的制约,网关在设计过程中遇到了一些问题,原先设计的功能并没有完全实现,许多方面有待深化和完善。下一步要做的工作有:1)对总线支持类型和互联程度的深化。本网关中并没有涉及像LonWorks、Modbus等总线,由于不同总线间的巨大差异,这就要求对总线技术进行更深入的研究,和协议转换方法的设计。在本课题中仅仅实现了其他总线设备在一个特定总线中的接入,而没有对两个总线网络的互联进行研究,这正是进一步研究时所要关注的。2)实时性和可靠性的提高。Linux系统虽然具有比较好的实时性,但和VxWorks等实时性操作系统相比,还是有一些差距,所以如何提高系统的实时性也是一个值得研究的方面。由于现场总线需要比较高的可靠性,在这方面的研究 杭州电子科技大学硕士学位论文可以从硬件和软件的层次上入手,对网关的整体可靠性进行提升。3)提高网关的安全性。在将现场总线通过协议转换网关与以太网互联的时候,需要考虑到外部网络的复杂性,提高网关的安全性,和抵御网络攻击的能力。67 杭州电子科技大学硕士学位论文致谢时光荏苒,光阴如梭,转眼间,在杭州电子科技大学的学习和生活已经经历了将近七个春秋,回想起这段求学历程,我感慨万千。期间有成功的喜悦,也有失败的落寞,付出了汗水,也收获了果实。研究生毕业论文的完成标志着这段经历即将结束,也预示着新历程的开始。在这里我首先要特别感谢我的家人,没有他们给我创造学习和生活的条件,这一切都是不可能实现的,在他们的关怀和支持下,我才能潜心地学习和工作,并顺利完成学业。本文是在我的导师薛安克老师和邹洪波老师的悉心指导和热诚关怀下完成的。两位老师严谨的治学态度、渊博的学识、丰富的科研经验以及对我们无限的关怀,对我顺利地完成论文研究起了非常关键的作用,也时刻督促我们去学习、去探索。从论文的选题到完成无不凝聚着导师们的心血。从他们的言传身教中不仅养成了严谨的科研习惯、正确的科研方法,更是学到了做人的道理,这些都将激励我在今后的人生中一如既往地去进取、拼搏。同时感谢在课题进行中关心和帮助过我的老师和同学,感谢你们在我遇到困难的时候及时给予我鼓励和帮助,给了我战胜困难的勇气和决心;在论文研究设计过程中以给予我许多有益的建议和帮助。在此向宋华华等同学表示我深切的谢意!最后感谢所有关心、支持、帮助、鼓励我的亲友、师长、同学和朋友! 杭州电子科技大学硕士学位论文【1】【2】【3】【4】【5】【6】【7】【8】【9】参考文献阳宪惠.现场总线技术与应用[M】.北京:清华大学出版社,2008.王锦标.现场总线综述【J】.冶金自动化,1998,6:1—6.王黎明,夏立,邵英,闫晓玲.CAN现场总线系统的设计与应用[M】.北京:电子工业出版社.2008.周志敏,纪爱华.Profibus总线系统设计与应用[M】.北京:中国电力出版社,2009.RichardPiggin,KenYoung,RichardMcLaughlin.Thecurrentfieldbusstandardssituation-aEuropeanview[J].AssemblyAutomation,1999,19(4):286-289.Jean-PierreThomesse.FieldbusTechnologyinIndustrialAutomation[C].ProceedingsoftheIEEE,2005,93(6):1073-l101.GG.Wood.Currentficldbusactivities[J].CompmerCommunications,1988,11(3):118-123.MaxFelser.TheFieldbusStandards:HistroryandStructures[C].TechnologyLeadershipDay2002,2002.Felser,M.,Sauter,T..Thefieldbuswar:historyorshortbreakbetweenbattlcs?[C].4thIEEEInternationalWorkshoponFactoryCommunicatonSystems,2002:73-80.[10】FangYanjun,XuJun.Anapproachforinteroperationbetweenheterogeneousfieldbussystems[C].10thIEEEConferenceonEmergingTechnologiesandFactoryAutomation,2005(2):239—243.【11】LvYong,YuHai·bin,WangTian-ran,Yangzhi-jia.FieldbusImeroperationTechnologies[C].Proceedingsofthe5thWorldCongressonImelligemControlandAutomation,2004(4):3620-3623.【12】J01111D.Day,HubertZimmermann.TheOSIReferenceModel[C].ProceedingsoftheIEEE,1983,71(12):1334·1340.【13】Meyer,D.,Zobrist,Q.TCP/IPversusOSI叨.IEEEPotentials,1990,9(1):16·19.【14】PaulE.Green,JR..ProtocolConversion[C].IEEETransactionsonCommunications,1986,34(3):257-268.【15】CarlA.SunShine.NetworkInterconnectionandGateways[j].IEEEJournalonSelectedAreasinCommunications,1990,8(1):4-11.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭