工业以太网讲义_第1页
工业以太网讲义_第2页
工业以太网讲义_第3页
工业以太网讲义_第4页
工业以太网讲义_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

工业以太网,周纯杰教授华中科技大学控制系,内容介绍:,为什么工业领域需要以太网以太网技术的基本原理工业以太网与商业以太网的区别几种主流的工业以太网标准嵌入式工业以太网协议栈的设计总结,为什么工业领域需要以太网,原因一:现场总线标准难以统一,带来系统复杂性1999年现场总线技术标准IEC61158终于尘埃落定,有8种总线成为国际电工委员会(IEC)现行的现场总线技术标准。它们分别是:基金会现场总线FF(fundationfieldbus);ControlNet;Profibus;P-Net;FF(fieldbusfundation)高速以太网HSE;SwiftNet;WorldFIP;Inter-bus.从用户应用的角度来看,多种现场总线标准并立导致在一个具体应用中可能会涉及多种不同标准的现场总线仪表,需要解决不同标准系统之间的互连接和互操作的问题,这必然会增加用户的投资和使用维护的复杂性。,原因二:信息集成有新的要求带宽问题:一般地来说,现场总线标准的特点是通信协议比较简单,通信速率比较低。如基金会总线FF的H1和PROFIBUS-PA的传输速率只有31.25Kbps。但随着仪器仪表智能化的提高,传输的数据也必将趋于复杂,未来传输的数据可能已不满足于几个字节,甚至是WEB网页,所以网络传输的高速性在工业控制中越来越重要。与商业网集成问题:在制造加工工业中,能够走出办公室,在任何地方对企业生产进行实时监控,无疑是各个企业提高生产效率、增强竞争力的有效方法。如此一来,现场总线的底层信息必然要和上层的通用局域网连接,将底层信息集成到车间、公司级的数据库中,通过WEB方式浏览和交互控制。现有现场总线标准大都无法直接与互联网连接,需要额外的网络设备才能完成通信。,原因三:工业以太网的技术优势(1)解决协议的开放性和兼容性问题。工业以太网因为采用由IEEE802.3所定义的数据传输协议,它是一个开放的标准,从而为PLC厂家和DCS厂家广泛接受。与现场总线相比,以太网还具有向下兼容性。快速以太网是在双绞线连接(10BaseT)的传统以太网标准的基础上发展起来的,但它的传输速度从10Mbps提升到了100Mbps。在大多数场合,它还可以使用已有的布线。此外,以太网还允许逐渐采用新技术。也就是说,没必要一下子改变整个网络,可以一步步将整个网络升级。(2)解决带宽需求问题。以太网最初的数据传输速度只有10Mbit/s,随着1996年快速以太网标准的发布。以太网的速度提高到了100Mbit/s。1998年,千兆以太网标准的发布将其速度提高到最初速度的100倍。最初的以太网需要1.2毫秒才能传送一个1518字节大小数据;现在,快速以太网已经将这一时间减少到120秒;如果采用千兆以太网,这一时间只需12微秒。,(3)解决与商用以太网集成问题。以太网作为现场总线,尤其是高速现场总线结构的主体,可以避免现场总线技术游离于计算机网络技术的发展之外,使现场总线技术与计算机网络技术很好地融合而形成相互促进的局面。(4)以太网适配器的价格大幅度下跌以及各产品和标准对以太网的支持是其成功的重要因素。,什么是以太网?,1980年DEC(digitalequipmentcorporation)、Intel和Xerox三大公司发布了DIX版以太网1.0规范,其传输速度为10Mb/S,所支持的唯一物理介质为粗同轴电缆。1982年,发布了DIX2.0版,这就是通常所说的Ethernet。与DIX同步的是IEEE成立的至今闻名的802.3委员会。1985年,IEEE802.3委员会发布了CSMA/CD访问方法和物理层规范。尽管其帧的定义与DIX2.0不尽相同,但是现在更多的人认为它就是以太网。以太网标准包括:physicallayer:media,configurationdatalinklayer:MACprotocol,CSMA/CD,以太网帧结构,EverydevicehasuniqueaddressMulticasting,broadcastingsupported,PA,SFD,DA,SA,Length,802.3HeaderandDataPacket,FCS,7,1,6,6,2,46-1500bytes,4,An802.3frame,SOF,1,CSMA/CD,CarrierSense(CS)“侦听”在发送信息帧之前是否有网络传输。一旦侦听到信道空闲,等待一个IFG(46bit时间)后便立刻发送信息帧MultipleAccess(MA)“多点接入”如果多个节点同时发送信息,此时就会发生冲突CollisionDetect(CD)“冲突检测”CSMA/CD协议中采用重传机制重新执行信息帧的发送操作,直到该信息帧成功发送或重传次数n达到上限(attempLimit)而终止发送,IntelDemo2,CSMA/CD,ExponentialBack-offAlgorithm“二进制指数回避算法,BEB”每次检测到冲突,CSMA/CD采用BEB算法随机地计算出下一次重传需要等待的时间,即帧重传时延。帧重传时延的大小为时隙时间(slotTime,512bit的传输时间)的整数倍r。r为随机整数,其取值为:0r2r,k=min(n,10),其中,n为重传次数,最大值为16.对于10Mbit/s网络,一个时隙时间为51.2us。因此冲突所导致的等待时间最长可以达到51ms。,重传时延的不确定性,不能满足工业系统的实时性,工业以太网与商业以太网的区别,1、工业以太网的基本体系结构2、改进的实时工业以太网体系结构3、工业以太网的实时通信技术4、工业以太网的设备环境适应性和可靠性要求,1、工业以太网基本体系结构,工业以太网在商用以太网基础上发展而来,它的体系结构基本上采用了以太网的标准结构。对应于ISO/OSI通信参考模型,工业以太网协议在物理层和数据链路层均采用了802.3标准,在网络层和传输层则采用被称为以太网“事实上标准”的TCP/IP协议簇,在高层协议上,工业以太网通常省略了会话层、表示层,而定义了应用层,有的工业以太网还定义了用户层。,根据实时以太网实时扩展的不同技术方案,可将实时以太网通信协议模型分为5类,是经过常规最大努力提高实时性,一般工业以太网的通信协议模型;采用在TCP/IP之上进行实时数据交换方案;采用经优化处理和提供旁路实时通道的通信协议模型;采用集中调度提高实时性的解决方案;采用类似Interbus现场总线“集总帧”通信方式和在物理层使用总线拓扑结构提升以太网实时性能。,2、改进的实时工业以太网体系结构,3、工业以太网的实时通信技术,采用以太网与TCP/IP相结合的方法直接修改传统以太网MAC协议(CSMA/CD)方式数据链路层增加实时调度层的方式网络节点间的时间同步机制也是实现确定性实时调度的必要手段之一,采用以太网与TCP/IP相结合的方法,标准:HSE、EtherNET/IP和Modbus/TCP说明:它们是建立在以太网和TCP/IP协议基础上的数据传递。提高实时性的主要手段包括提高通信速率,控制网络负荷以及采用全双工交换技术。然而,交换式以太网并不是实时通信最终的解决方案,当多个数据流同时到达交换机时,需要将其缓存后从目的端口顺序输出,此时多路转换和缓存的时间取决于不同交换机的具体实现方式和网络的负载情况,其值仍是一个不确定的数值。在许多工业应用环境中,需要一个设备同时向多个设备发送数据(如广播或发布/预定关系)。交换式以太网更适合于点对点的数据交换,当广播或多播报文同时传递到一个端口时会造成数据传递的时延。,采用以太网与TCP/IP相结合的方法,标准:HSE、EtherNET/IP和Modbus/TCP说明:它们是建立在以太网和TCP/IP协议基础上的数据传递。提高实时性的主要手段包括提高通信速率,控制网络负荷以及采用全双工交换技术。然而,交换式以太网并不是实时通信最终的解决方案,当多个数据流同时到达交换机时,需要将其缓存后从目的端口顺序输出,此时多路转换和缓存的时间取决于不同交换机的具体实现方式和网络的负载情况,其值仍是一个不确定的数值。在许多工业应用环境中,需要一个设备同时向多个设备发送数据(如广播或发布/预定关系)。交换式以太网更适合于点对点的数据交换,当广播或多播报文同时传递到一个端口时会造成数据传递的时延。,采用以太网与TCP/IP相结合的方法,另外,HSE,Ethernet/IP和ModbusTCP都没有在实质上解决以太网的通信不确定性问题,而是采取了一种比较折衷的方案,即传输层、数据链路层和物理层沿用以太网的原有机制,在用户层或应用层对数据的传输进行控制。而对于应用层以下的报文是不能控制的,如ARP(AddressResolutionProtocol)、ICMP(InternetControlMessagesProtocol)等协议所产生的报文。这种折衷的方案不能满足实时性要求很高的场合。,直接修改CSMA/CD方式,由于导致不确定性通信的CSMA/CD机制位于以太网MAC层,所以最直接的方法是修改以太网的MAC层协议。采用这种方式中,加州大学开发的CSMA/DCR协议影响较为广泛,它保持了与标准CSMA/CD的兼容,该协议在未发生冲突的情况下,采用CSMA/CD协议,当发生冲突时,采用一种确定性的冲突解决算法(二叉树遍历算法)来保证一个确定性数据的最坏信道访问时间。但由于以太网的MAC协议是固化在硬件芯片中的,要修改MAC层协议,就必须对相关硬件进行改动;其次,该类只能保证确定时间内解决冲突,往往最坏冲突解决时间通常远大于平均冲突解决时间,而实时系统中最关注的正是系统在最坏条件下的表现。因此此类方案多见于学术文章,没有相应的工业标准采用。,数据链路层增加实时调度层的方式,在MAC层之上增加一个实施确定性调度的软件层.现有的几种方案的共同思想是,网段内的实时报文和非实时报文将分时发送,协议栈中实时通信报文经过数据链路层传递后,不经过网络层和传输层而直接传递给应用层,同时非实时报文仍然要通过TCP/IP协议来传递.典型的有下列几种:(1)基于带宽预留方式的调度(2)基于时间片的分时调度方式(3)EtherCAT方式,(1)基于带宽预留方式的调度,标准:RETHER,Ethereal说明:RETHER是一个在传统总线共享式以太网上实现确定性调度的协议,该协议在MAC层之上的调度层中采用了一种增强型的分布式令牌传递机制来控制各个节点的数据发送,以冲突避免的方式来保证数据发送的确定性。Ethereal协议也是一个采用带宽预留方式来保证数据传送实时性的协议。该协议的特点是为保证实时性所增加的实时控制逻辑位于交换机的软件中,而对于网络中各节点的网络硬件甚至运行于其上的操作系统几乎不做任何特殊要求,即网络节点所处的软硬件环境是透明的。在交换机上运行的调度软件以带宽预留的方式保证实时数据的确定性,同时以最大努力方式进行非实时数据的传送。带宽预留式调度方式的缺点是,当现场环境中一个网段包含大量的网络节点,节点间随机性通信频繁时,调度算法的效率不高。,(2)基于时间片的分时调度方式,标准:Powerlink,Profinet,EPA说明:Powerlink是由奥地利B&R公司开发的以太网控制协议,该方案在MAC层之上实现了一个基于主从式轮询机制的调度策略,使用时间槽来分配发送许可。该机制在网络上定义一个网络站点来担当管理者,配置其它站点的时间槽,其它节点以从站方式运行,只有在收到主站的发送许可时才能发送数据。站点之间的数据交换是在一个固定的时间间隔内循环执行的,这个时间周期由管理者进行配置。管理者在为各站点分配时间槽时,也为普通的非实时数据预留了时间槽。为了提高实时数据的传输效率,该方案在与TCP/IP协议对等的层次上开发自定义的实时数据封装协议,而对于非实时性数据,仍采用普通的TCP/IP协议传输。,西门子公司的Profinet与Powerlink相象,它们都是基于时间片机制,并把通信周期分为实时部分和非实时部分。在一个通信周期中首先进行实时通信,然后传递非实时信息(如TCP/IP报文),两者的区别在于通信周期的同步方式。Profinet用特殊的以太网交换机实现网络的时间同步,Powerlink则应用轮询的方式,由主站来设置网络时钟。EPA在网络层(即IP层)与数据链路层(或MAC层)之间定义了通信调度接口,用于有网络层到MAC层的实时数据和非实时数据包的传输调度,以满足EPA周期与非周期信息传输的实时性。,(3)EtherCAT方式,EtherCAT是Beckhoff开发的一种实时以太网现场总线系统。EtherCAT主站传递的以太网帧包含了所有的I/O从站数据,报文在I/O从站间传递,每个从站用极短的时间获取数据并将发出数据写入到相应位置,然后将报文传递给下一个从站。最后一个从站处理结束后,将报文传递回EtherCAT主站EtherCAT充分利用了I/O层的带宽,使得其处理1000个数字量I/O只需30s,处理200个16位模拟量信号只需50s,即取样频率达到20kHz。EtherCAT适合处理具有大量I/O节点且报文简单的系统。,网络节点间的时间同步机制,由于以太网的不确定性源于网络中不同节点同时发送数据而引起的碰撞,因而只有对网络中的节点进行高精度的时钟同步,把网络节点上的数据发送实现为同步时钟的函数,才能规划各网络节点的数据发送时隙起点和时隙长度,从而避免网络中有一个以上的节点同时发送数据.IEEE1588-PRECISIONTIMEPROTOCOL定义了一个在分布式网络中进行亚微秒级时钟同步的方法,从而使其成为目前一个较被看好的、可用于实现实时以太网解决方案的时间协议,该标准在2002年11月被IEEE批准。现已用与EPA、EtherCAT协议中。,4、工业以太网设备环境适应性和可靠性要求,几种主流的工业以太网标准,EPAEtherCATProfinetHSEModbusTCPEthernetPowerlinkEthernet/IP,EPA,EPA是一种用于过程行业中确定性以太网通讯的中国提案。它也是浙大中控的商业名称,无集团支持,尚未在市场中推广。方案:在MAC层中,达到实时的时间分割。通过常规TCPIP和或采用Modbus,完成所有其他传输。实时性:循环通讯为1O100ms,无同步。功能:通过TCPIP的常规lT和过程通讯。在慢实时中的分布式功能块之间的确定性通讯的额外功能。,EtherCAT,2003年,由倍福公司(Beckhoff)开发。由EtherCATETG的140名成员支持。方案:使用以太网物理层将闭环段内的主站连接到环内的从站。任何单一个报文以主站传递到每个从站,并从此处再回到主站。该报文具有一个以太网结构,但协议完全不同。每个从站拥有一个可在线读写的信箱。每台设备集成门列阵或处理实时解码的专用集成电路硅。常规TCP/IP设备必须通过网关连接,之后小型TCP/IP数据包能够嵌入在EtherCAT报文内,打开包装并在主站内组合在一起,因此到达外部设备,用于TCP/IP的带宽为1。实时性:循环时间从30us起。100个轴为100us,同步1us。功能:主要用于运动控制,I/O和编码器。,Profinet,由PROFlBus国际组织1200多名成员以及五大洲125个国家的区域组织共同定义。多于25家公司及1OO多种产品。公司涉及:倍福,HMS,西门子等,德国汽车行业宣布采用Profinet的公司包括Audi,BMW等。方案:主要功能采用了常规TCP/IP。这包括组态,参数化及CBA(ComponentBasedAutomation基于组件的自动化),在TCP/lP传输上无限制。对于l/0和达到1ms的其他,实时功能,使用直接寻址和优先级报文(RT信道)。TCP/IP传输无限定,但由于优先级,会发生交换桐内的较短的延迟。对要求低于1ms的实时并且同步1uS,Profinet报文使用基于专用集成电路的交换机以菊花链或环形方式连接,来控制段中的传输。同步符合IEC61588并且组态循环时间从250us起。实时性:对于30个轴,循环时间从250s起,及50的TCP/lP。对于15O个轴为1ms,同步1us。功能:CBA用于Profibus(已安装有1,300万个节点)和Interbus(已安装有700万个节点)的透明移植。,HSE,由FieldbusFoundation定义,为通过网关将FF网络连接到以太网。由FieldbusFoundation支持。唯一的产品是连接FoundationFieldbus网络的连接设备。艾默生过程管理公司,Endress+Hauser和Smar国际组织是连接设备的制造商。方案:以太网报文中嵌入现场总线(FF)协议,无TCP/IP传输。实时性:无。功能:使DCS能够跳变接口并且仅使用以太网作为通讯网络。,ModbusTCP,由施耐德电气公司定义,由用户组织Modbus-IDA支持。自1979年开始使用初始的Modbus协议(如RS485)。轻松实现向以太网迁移,并广泛的推广。迄今为止,可能是最多使用的以太网解决方案。大约9O个产品主要来自有多接口选择的远程I/O供应商。方案:基于嵌入Modbus的常规TCP/IP,种使用请求/应答模式的非常简单的协议。此方案为非确定性,反应时间最佳20ms。可增加带有RTPS(RealtimePublisherSubscriber)实时性。这是使用UDP/IP来改善性能,但没有达到真正的实时标准,用于TCP/IP的带宽为90100。实时性:循环通讯为2O100ms,无同步。功能:将Modbus和以太网连接,用于I/O和在寄存器中读写的简单协议。,EthernetPowerlink,Powerlink于2001年,由Bernecker+Rainer(B&R)开发,并由EPSG(EPL标准化组织)支持。Power-link早期以运动控制产品的形式推向市场,并在这种市场中占有份额,已安装60,000多个节点。方案:带有提供同步及肘间槽主站的闭环段。其中一个时间槽面向小型TCP/lP报文开放(1带宽)。实时性:对应于八个轴循环时间为0.2ms。主站与驱动之间1O个网络集线器,最大量限定为2O个轴,同步1us。功能:主要用于运动控制。,Ethernet/IP,由罗克韦尔公司定义。有ODVA的250名成员支持。主要产品是罗克韦尔,菲尼克斯及万可等,大约21个认证产品。2004年春天,通用汽车宣布,它将为其自动化程序标准化为Ethernet/IP。方案:通过常规以太网,基于常规TCP/IP,并带有可选UDP/IP对象嵌入协议,CIP经由常规以太网(公用接口协议),传输I/O数据,组态与诊断。非确定性响应时间将至10ms。可添加同步(CIPsynq-IEC61588),用于TCP/IP的带宽为9O100。实时性:循环通讯为10100ms,同步时间大约为10us。功能:用于ControlNet和DeviceNet(安装了base2.5m的节点)通过桥路,实现到现场总线的迁移。驱动控制带有适度范围的循环时间及同步。,嵌入式工业以太网协议栈的设计,总体设计方案精简的TCP/IP协议栈实现工业以太网实时通信的解决,总体设计方案,嵌入式工业以太网节点就是在原有的控制节点设备上实现了工业以太网功能的系统,综合之前各主流工业以太网协议的体系结构和设计思想,总结工业以太网协议栈应该具备以下部分:(1)精简的TCP/IP协议栈,支持程序下载、组态更新等非实时数据传输,方便与企业上层管理系统的集成。(2)保证实时数据通信的解决方案,嵌入式工业以太网协议栈的设计,总体设计方案精简的TCP/IP协议栈实现工业以太网实时通信的解决,精简的TCP/IP协议栈实现,其中,如何实现TCP/IP协议是嵌入式网络系统的关键技术之一,在嵌入式系统中应用TCP/IP协议的关键是,如何设计出精简、高效的TCP/IP协议子集,以此来减少对系统资源的占用。目前,在嵌入式工业以太网节点设计方面,主流的技术方案有两种:(1)使用嵌入式实时操作系统(RTOS)(2)是直接对单片机编程,自行编制TCP/IP协议栈,1、方案讨论,(1)使用嵌入式实时操作系统(RTOS)嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源:能够提供库函数、驱动程序、工具集以及应用程序。目前市场上的嵌入式实时操作系统,如WindowsCE,VxWork,uCLinux等,都集成了TCP/IP协议栈。因此,使用嵌入式操作系统,只需完成操作系统代码的剪裁以及硬件驱动程序的移植,而对TCP/IP协议栈小必有深度的了解,将大大减少软件编写的工作量。(2)是直接对单片机编程,自行编制TCP/IP协议栈采用这种方法,需要对TCP/IP协议栈有深刻的理解,工作量较大,但可以为更好的理解以太网通信原理、开发其它协议的通信软件打下良好的基础。,选用第一种方案工作量小,设计成功率较高,但是市而上的嵌入式操作系统都价格不菲。如果选择自由软件Linux,一方面其实时性不好,做到微秒级的响应需要代价大,另一方而熟悉Linux操作系统需要相当长的时间。另外,使用嵌入式操作系统,将会占用大量的存储空间,把它移植入8位单片机,需要开发人员对系统移植有深入的理解,否则效果适得其反,如果选用通用的ARM平台,往往需要增加很多外围接口电路,无论从人力还是物力讲,都不利于节点成本控制。因此针对控制网络节点,节点任务简单,通信量小的特点,下面主要讨论基于单片机直接编程方案的实现。,2、硬件平台设计,硬件平台的整体框图如图所示。由于51系列单片机的内部RAM空间有限,必须扩展外部SRAM。以太网控制器接收到以太网数据包后,暂存到外部SRAM的缓冲区中等待单片机处理:单片机在外部SRAM中将以太网数据包封装好后,通过以太网控制器发送出去。,以太网控制器选型:RTL8019asVS.CP2200,(1)电源电压CP2200:3.13.6VRTL8019as:5v(2)封装CP2200采用精巧的55毫米封装,有28脚QFN和48脚TQFP两种封装。28脚QFN封装只支持复用方式寻址。有方式选择引脚,用于选择总线接口方式。被宣称是,业界体积最小和效能最高的单芯片。RTL8019as只有100pinPQFP封装方式。(3)内部资源CP2200组件还内含IEEE802.3兼容的10Base-T以太网媒体存取控制器(MAC)和实体层(PHY)以及8kB闪存,它已由工厂预先设定一组独一无二的48位MAC地址,故能省下多数嵌入式系统在产品制造过程中所需执行的编序步骤,(serializationstep)。芯片内建的闪存可用来储存使用者常数和网站服务器内容或作为通用的资料非挥发性内存。另外,8192字节非易失性数据存储空间(RAM)专门提供2K的发送缓冲区,4K的接收缓冲区。CPU通过8根地址总线可以实现对CP2200内部全部存储区域的操作。RTL8019AS内部没有FLASH,对外提供16k,32k,和64k字节BROM和闪存接口。一般使用外扩9346(6416-bitEEPROM)存储资源配置和ID参数。为了制造便利有规划空白9346的能力。RTL8019AS用16k字节SRAM,可以由用户自由配置。同样寄存器的基地址也可自由配置,个人认为这种自由性对该模块设计没有很大意义。而且增加复杂性。RTL8019as提供16条基本地址总线为大资源情况下提供了宽松的环境。,(4)支持的通信网络CP2200集成的IEEE802.3MAC和10BASE-TPHY,完全兼容100/1000BASE-T网络。RTL8019as支持以太网II和IEEE802.310Base5,10Base2,10BaseT,仅支持10M带宽。(5)CP2200的特色业界体积最小能在-40到+85温度范围操作电流消耗仅70mA,相当于其它产品的1/3,RTL8019as优势在于很早就进入市场,网络上各个方面成熟的应用很多,因为文档不成熟的情况下,因为适合8019as的源代码已经可以获得。CP2200虽然无论是体积,在缩减PCB尺寸方面,易用性和整体性能等方面都远远强于早期推出的RTL8019as。从长远利益考虑,PCB版的尺寸,抗干扰性等等,选择专门为8位单片机量身定做的CP2200是替代RTL8019as很好的选择。,RTL8019asVS.CP2200选型小结,3、TCP/IP协议栈实现,应用层网络应用层要有一个定义清晰的对话过程传输层传输层让网络程序通过明确定义的通道及某些特性获取数据,如定义网络连接的端口号等,实现该层协议的传输控制协议TCP和用户数据报协议UDP。网络层(IP层)网络层让信息可以发送到相邻的TCP/IP网络上的任一主机上。IP层的代码有两个功能:验证到来的IP报文报头的正确性,并且对TCP和ICMP报文实行分流。为了能够测试系统与网络的连接,系统需要实现ICMP协议中的Ping应答协议,Ping应答协议主要是检查网络是否连通。同时为建立网络间的互连应提供ARP地址解析协议,实现从IP地址到数据链路物理地址的映像。因为不考虑IP的分片和重组,所以IP层的代码非常的精简。链路层由控制同一物理网络上的不同机器间数据传送的底层协议组成,主要是IEEE802.3规定的CSMA/CD协议。实现这一层协议的协议并不属于TCPIP协议组。该部分由以太网控制器CP2200完成。,4、协议栈实现主要思路,实现过程中的一个总目标是系统开销要少,每一层之间要相互独立,内存操作简单。为了实现每一层的独立,实现上下层之间的数据透明传输。每层之间应通过一系列的函数进行数据传递,同时为了减少由于数据拷贝引入的系统开销,系统应通过指针操作,而不是数据拷贝方式,将缓冲区中的数据沿协议栈向上传递。由于TCP/IP的各层协议的各种数据格式,在各种资料中都有详细说明,这里就不再一一介绍。只详细介绍总的结构、各层的功能及实现过程。,4.1链路层的实现思想,1)首先公共数据结构的定义:如各种报文(IP、MAC、ARP、TCP等)的报文头,IP和MAC地址格式、节点的地址配置、缓冲区格式及大小等。2)网络驱动接口,由于网络驱动自己编制的,所以与上层结合起来很顺利,接收时采用中断机制,当收到网络中断就读取数据,根据包的种类分别传给ARP或IP协议,由每一层自行处理数据。发送时采用查询方式,应用层准备好数据,一层层封装并向下传递,最后经由网络驱动程序发送。右图是CP2200的驱动程序初时化流程。该流程完成之后,表示节点网络连接成功。,4.2网络层的实现思想,1)ARP的实现首先定义ARP数据结构,根据相应的标准来定。主要工作有:ARP为IP地址到对应的硬件地址之间提供动态映射,当主机要找出另一主机的物理地址时,它就发送一个ARP查询分组,这个分组包括发送站的物地址和IP地址,查询采取在网络上广播的方式,目的主机的ARP层收到这份播报文后,识别出这是发送端在寻问它的IP地址于是发送一个ARP应答。主要函数有:voidarp_send(UCHAR*hwaddr,ULONGipaddr,UCHARmsg_type)发送ARP数据包voidarp_rcve(UCHARxdata*inbuf)接收ARP数据包voidage_arp_cache(void)ARP高速缓存超时函数voidarp_retransmit(void)重发ARP数据包UCHARxdata*arp_resolve(ULONGdest_ipaddr)ARP地址解析,2)IP协议的实现:首先定义数据结构IP根据标准来定义。主要工作是对上一层传下来的数据包,加上IP首部和IP校验和,发往下一层。以及对下一层传上来的数据包,进行校验和检查,若正确去掉IP首部,送往上一层。主要函数:voidip_send(UCHARxdata*outbuf,ULONGipaddr,UCHARproto_id,UINTlen)发送IP数据voidip_rcve(UCHARxdata*inbuf)接收IP数据,3)ICPM的实现(Ping应答的实现)首先定义数据结构ICMP数据帧格式,根据标准来定义。主要工作有:为了便于测试要响应主机的PING程序,即如收到ICMP的回显请求包,则按照格式组装一个ICMP的回显应答包并发送主要函数有:voidping_send(UCHARxdata*inbuf,ULONGipaddr,UINTlen)发送ICMP回显请求给目的主机并等待返回ICMP回显应答voiddest_unreach_send(UCHARxdata*inbuf,ULONGipaddr)目的主机无法达到处理函数voidicmp_rcve(UCHARxdata*inbuf,UINTlen)接收ICMP回显数据,4.3传输层的实现思想,1)TCP的实现首先定义数据结构TCP数据帧格式,根据标准来定义。主要工作有:TCP提供一种面向连接的、可靠的字节流传送服务,它具有5个特征:面向数据流、虚电路连接、有缓冲的传送、无结构的数据流和全双工连接一旦数据报被破坏或丢失,则由TCP将其重新传输。主要函数有:init_tcp(void)初始化TCP协议tcp_send(UINTflags,UINThdr_len,UCHARnr)发送TCP数据Tcp_retransmit(void)重发TCP数据Tcp_inactivity(void)停止TCPtcp_rcve(UCHARxdata*inbuf,UINTlen)接收TCP数据,2)UDP的实现根据标准定义UDP数据帧格式。这一部分的主要工作有:对应用层传下来的数据包,加上UDP首部和UDP校验和,发往下一层。以及对下一层传上来的数据包,进行校验和检查,若正确去掉UDP首部,提出数据送给应用层。需注意的是,要产生一个伪首部用于UDP数据检验和计算。主要函数有:voidudp_send(UCHARxdata*inbuf,UINTport,UINTlen)发送UDP数据报voidudp_rcve(UCHARxdata*inbuf,UINTlen)接收UDP数据报voidudp_echo_service(UCHARxdata*inbuf,UINTlen)一个简单的处理UDP协议的函数将接收到的字符再发送回源IP地址,4.4协议栈的用户接口,分布于各个层次的协议功能函数共同完成一个通信的过程,最终这些函数的执行结果,映射成各类事件,通过事件触发来进行协议栈的管理,保证通信的可靠进行。我们将其称为基于事件驱动机制的用户接口。系统初始化完成后,进入事件循环体,不断查询C8051F040的事件队列是否有事件。一旦事件队列非空,则读取事件标志字,判断事件类型,而后调用对应事件处理了程序。处理了程序执行完毕后,仍然返回到事件循环体中。事件标志字由中断直接或者间接驱动,当某个事件发生后,只需在中断服务程序中将状态字的对应位置位。中断小断向事件队列中添加事件,而C8051F040处理程序则小停地从事件队列中读取事件标志字,处理事件。,事件驱动机制的特点有:由于在中断处理程序中,仅执行了改变事件标志字这样的简单程序语句,把事件添加到C8051F040的事件队列中后就立即返回,所以系统关闭中断的时间很短,从而增强了系统对中断处理的实时性。C8051F040根据当前读取的事件,进行相应事件处理或者向事件队列中添加进一步处理所需的事件。这实际上是对任务都进行了分步处理,在执行一步某一任务的同时,也可以执行一步其他任务。这样,在不影响主程序流程的情况下,提高了系统的实时性。,事件循环体的简要流程,各事件的含义:EVENT_ETH_ARRIVED:有待处理的以太网帧事件。检测到此事件,C8051F040会调用读CP2200接收缓冲区程序,然后对帧进行解包处理。EVENT_TCP_RETRAN:TCP重传事件。若TCP定时器超时,则触发该事件。EVENT_TCP_INACTIVITY:关断小活动连接事件。若某连接超过0.5s没有收发数据,则触发此事件。EVENT_ARP_RETRAN:A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论