-1-基于CAN网采用滑动窗口技术传输电网故障信息的方案实现唐喜1孟岩1(北京四方继保护自动化股份有限公司研发中心北京100085)摘要:针对CAN(ControllerAreaNetwork)网传输智能电子设备IED(IntelligentElectronicDevice,以下简称IED)信息速度慢的现状,提出基于CAN网结构采用滑动窗口技术实现IED内部各通信插件之间信息交换的方法,将以太网TCP/IP协议中的“一问多答”、“断点续传”等先进技术应用到CAN网,可使IED大量的描述信息准确、快速交换,尤其是IED长时间故障录波后,可快速上传到分析终端进行故障诊断,缓解IED嵌入式系统的缓冲压力,提高IED长时间故障录波次数,满足国内外市场对IED连续故障录波能力的高要求。对比试验发现,与传统的“停止-等待协议”相比,“滑动窗口协议”传输电网故障信息更加高效,同时“滑动窗口协议”配置灵活,通过设变窗口尺寸,即可兼容“停止-等待协议”。此技术也可用于IED其它信息要求快速交换的场合。关键词:IED;滑动窗口;停止-等待协议;嵌入式系统0引言电力行业正在飞速发展,电力系统不断壮大,快速、准确定位电网故障显得尤为重要,从而用户对IED故障录波[1]能力要求也不断提高,迫使各大IED生产厂家不断推出新的硬件、软件平台,随着近几年电子工业的发展,硬件不断网络化,软件网络化也有了新的进展,但出于对IED实时性的特殊要求,保护软件直接借用TCP/IP协议[2]显然不能满足快速性要求,为此需要采用简单、可靠协议,通常各IED生产厂家对IED内部各插件之间的通信协议均是自己制订,没有统一的标准,在对故障录波能力要求不高的情况下,都可以满足要求。但随着国内外市场对IED故障录波能力要求的不断提高,传统的软件协议已不能满足要求。故障录波存储容量、传输速度、打印速度等已成为衡量IED能力的一个重要指标。以往电网出现大扰动时,故障复杂,再加上连续故障,大多数IED的故障录波并不理想,有的因为故障录波超过存储容量,更多的还是因为IED嵌入式系统[3]缓冲受限,故障录波后不能及时存储、上传至远方,造成录波数据丢失,即使不丢失,想及时查看故障波形也需要等待好长时间,原因就在于大多数IED对于录波处理采用传统的“停止-等待协议”[4],不能满足录波容量大、快速传输的要求,成为IED录波处理能力的瓶颈。本文提出的滑动窗口技术可以打破此瓶颈,提高IED录波处理能力的性能指标,并给出基于CAN网的实现方案及对比试验。1原理CAN[5]属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。CAN已经形成国际标准,并已被公认为几种最有前途的现场总线之一。CAN具有十分优越的特点,使人们乐于选择。这些特性包括:低成本极高的总线利用率很远的数据传输距离(长达10Km)高速的数据传输速率(高达1Mbit/s)可根据报文的ID决定接收或屏蔽该报文可靠的错误处理和检错机制[6]发送的信息遭到破坏后,可自动重发节点在错误严重的情况下具有自动退出总线的功能报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息CAN网上对于一些简单应用,可以采用“停止-等待协议”,即传统意义上的“一问一答式协议”,(主要流程如图1所示)。但-2-对于数据量大、实时性要求高的场合,“停止-等待协议”不能满足要求,本文提出“滑动窗口协议”,对比二者原理上的优缺点后,即可以发现“滑动窗口协议”的优势。1.1停止-等待协议停止-等待(stop-and-wait)的思想:发送方传输一帧之后,在传输下一帧之前等待一个确认。如果在某段时间之后确认没有到达,则发送方超时,重发原始帧。介绍两个专有名词:确认(acknowledgement)和超时(timeout)确认[4](简称ACK):协议发给它的对等实体的一个小的控制帧,告知它已收到刚才的帧。控制帧是一个无任何数据的头部,但是一个协议也可以将一个ACK捎带在一个恰好要发向对方的数据帧上。发送方收到一个确认,表明帧发送成功。如果发送方在合理的一段时间后未收到确认,那么它重发(retransmit)原始帧。等待一段合理的时间的这个动作称为超时[4](timeout)使用确认和超时实现可靠传输的策略有时称为自动请求重发(AutomaticRepeatRequest,ARQ)。发送端接收端帧0ACK0帧1ACK1帧NACKN……时间线图1停止-等待协议正常情况下的流程图Fig.1Stop-waitprotocolflowchartundernormalconditions上述可以发现停止-等待算法的主要缺点:允许发送方每次在链路上只有一个未确认的帧,这可能远远低于链路的容量。1.2滑动窗口协议滑动窗口[2](slidewindow)技术主要用于信息流量控制,协调改善发送端和接收端的工作速度,广泛使用于Internet和其它网络之间的通信,一个好的实现既可以提高网络通信的数据流量,同时又能提高通信质量和解决拥塞控制问题。简要描述一下该算法:1、将需要传递的信息编码为一个有序的帧序列;2、发送方设置一个滑动窗口(缓冲区),该窗口大小为最大发送帧数(N)。该缓冲区采用先进先出队列机制,首先发送N帧信息,每帧都有一个定时器,当超时还没有收到接收方的应答帧时,则重发该帧;3、接收方设置一接收队列,对接收到的每帧入队列。如果该帧是编号最小的帧,则发送该帧收到的应答帧给发送方;4、发送方如果收到接收方的某帧的应答消息,则判断,如果是队列的第一个帧,则该帧出列。队列空出一位,再发送一帧,否则记录其为可出列标记。利用滑动窗口算法原理,可以保证数据在有序发送的情况下,顺利达到接收方。(1)窗口机制滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。发送方窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。下面举一个例子(假设发送窗口尺寸为2帧,接收窗口尺寸为1帧)。①初始态,发送方没有帧发出,发送窗口前后沿相重合。接收方0号窗口打开,等待接收0号帧。②发送方打开0号窗口,表示已发出0帧但尚确认返回信息。此时接收窗口状态不变。-3-③发送方打开0、1号窗口,表示0、1号帧均在等待确认之列。至此,发送方打开的窗口数已达规定限度,在未收到新的确认返回帧之前,发送方将暂停发送新的数据帧。接收窗口此时状态仍未变。④接收方已收到0号帧,0号窗口关闭,1号窗口打开,表示准备接收1号帧。此时发送窗口状态不变。⑤发送方收到接收方发来的0号帧确认返回信息,关闭0号窗口,表示从重发表中删除0号帧。此时接收窗口状态仍不变。⑥发送方继续发送2号帧,2号窗口打开,表示2号帧也纳入待确认之列。至此,发送方打开的窗口又已达规定限度,在未收到新的确认返回帧之前,发送方将暂停发送新的数据帧,此时接收窗口状态仍不变。⑦接收方已收到1号帧,1号窗口关闭,2号窗口打开,表示准备接收2号帧。此时发送窗口状态不变。⑧发送方收到接收方发来的1号帧收毕的确认信息,关闭1号窗口,表示从重发表中删除1号帧。此时接收窗口状态仍不变。若从滑动窗口的观点来统一看待1比特滑动窗口、后退n及选择重传三种协议,它们的差别仅在于各自窗口尺寸的大小不同而已。1比特滑动窗口协议:发送窗口=1帧,接收窗口=1帧;后退n协议:发窗口1帧,接收窗口1帧;选择重传协议:发送窗口1帧,接收窗口1帧。(2)1比特滑动窗口协议[13]当发送窗口和接收窗口的大小固定为1时,滑动窗口协议退化为停等协议(stop-and-wait)。该协议规定发送方每发送一帧后就要停下来,等待接收方已正确接收的确认(acknowledgement)返回后才能继续发送下一帧。由于接收方需要判断接收到的帧是新发的帧还是重新发送的帧,因此发送方要为每一个帧加一个序号。由于停等协议规定只有一帧完全发送成功后才能发送新的帧,因而只用一比特来编号就够了。(3)后退n协议由于停等协议要为每一个帧进行确认后才继续发送下一帧,大大降低了信道利用率,因此又提出了后退n协议。后退n协议中,发送方在发完一个数据帧后,不停下来等待应答帧,而是连续发送若干个数据帧,即使在连续发送过程中收到了接收方发来的应答帧,也可以继续发送。且发送方在每发送完一个数据帧时都要设置超时定时器。只要在所设置的超时时间内未收到确认帧,就要重发相应的数据帧。如:当发送方发送了N个帧后,若发现该N帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重新发送出错帧及其后的N帧。从这里不难看出,后退n协议一方面因连续发送数据帧而提高了效率,但另一方面,在重传时又必须把原来已正确传送过的数据帧进行重传(仅因这些数据帧之前有一个数据帧出了错),这种做法又使传送效率降低。由此可见,若传输信道的传输质量很差因而误码率较大时,连续测协议不一定优于停止-等待协议。此协议中的发送窗口的大小为k帧,接收窗口仍是1帧。(4)选择重传协议[14]在后退n协议中,接收方若发现错误帧就不再接收后续的帧,即使是正确到达的帧,这显然是一种浪费。另一种效率更高的策略是当接收方发现某帧出错后,其后继续送来的正确的帧虽然不能立即递交给接收方的高层,但接收方仍可收下来,存放在一个缓冲区中,同时要求发送方重新传送出错的那一帧。一旦收到重新传来的帧后,就可以原已存于缓冲区中的其余帧一并按正确的顺序递交高层。这种方法称为选择重发(SELECTICEREPEAT)。显然,选择重发减少了浪费,但要求接收方有足够大的缓冲区空间。利用滑动窗口算法原理,可以保证一堆数据在有序发送的情况下,顺利的达到接收方。滑动窗口技术具备以下优缺点:优点:a)滑动窗口有利于提高带宽利用率,传输效率高b)滑动窗口使主机在等待确认消息的同时,可以发送多个字节或数据包c)滑动窗口的大小以字节数表示-4-d)滑动窗口的大小在连接建立阶段指定e)滑动窗口的大小随数据的发送而变化f)滑动窗口可以提供流量控制缺点:控制复杂。2应用实现系统平台架构如图2所示,系统主要由两大部分组成,一部分是电网故障信息采集及处理单元,由保护插件负责;另一个部分为电网故障信息管理单元,由信息管理插件负责。系统采用双CAN网[7]结构,一个CAN网用于与信息管理插件实时通信[8],另一个CAN网用于与开入、开出插件实时通信,总线不出芯片[2],有利于保护装置的高可靠性。大容量的故障录波,可以保存不少于24次事故录波。完整的事件记录和动作报告,可保存不少于2000条动作报告和2000次操作记录,停电不丢失。后台终端信息管理插件人机对话MMI显示打印机CT/PT交流插件nCPU保护插件nDIn开入插件DOn开出插件POWER电源插件CT/PT交流插件1CPU保护插件1DI1开入插件DO1开出插件IED设备内部通信架构光/电以太网CAN总线数据网控制网485网CAN总线PC终端CAN总线图2系统通信平台[9]架构Fig.2Structureofsystemcommunication软件主要结构体实现:滑动窗口数据传输结构体:typedefstruct_SLIDEWIN_TRANSMIT{//以下为主控方信息boolbIsUsedFlag;//是否使用滑动窗口技术传输WORDwStBarNo;//起始条序号BYTEBStSubBarNo;//起始子条序号WORDwWinSize;//窗口尺寸WORDwMaxFrmLen;//最大帧长度//以下是被控方信息WORDwRealWinSize;//由被控方实际上送的窗口尺寸intnRealBarNum;//由被控方实际上送的实际报文数boolbIsStartTimeOut;//是否启动超时定时器的处理}StruSlideWinTransmit;IED通信平台[15]:所有CA