APP下载

基于μC/OS-II的开关量状态监视功能设计

2012-09-21刘世明呼文强王敬华许志成李森林闫磊

单片机与嵌入式系统应用 2012年9期
关键词:时标链表变位

刘世明,呼文强,王敬华,许志成,李森林,闫磊

(1.山东大学 电气工程学院,济南 250061;2.山东科汇电力自动化有限公司)

引 言

智能化的一次设备、网络化的二次设备,以及IEC61850标准是智能变电站的3大核心特征[1]。在智能变电站中,一、二次设备之间的连接方式已经由传统变电站的电缆连接转变为遵循IEC 61850-9-1、IEC 61850-9-2的采样值报文和GOOSE报文的以太网传输方式,而且,模拟量和开关量的采集功能会下放到过程层实现[2-3]。其中,开关量的采集应该由智能一次设备来完成,但是鉴于目前一体化智能一次设备技术尚未成熟,在工程应用实践中通常采用智能终端代替实现相应功能[4]。

根据《Q_GDW 428-2010智能变电站智能终端技术规范》的规定,智能终端不仅应具有跳合闸功能、开关量采集功能,以及GOOSE报文的上传和接收功能,还应实现在线监测等高级应用[5-6]。针对开关量采集功能,该标准还要求其输入点数可以灵活配置。

传统的开关量处理通常在定时扫描中断服务程序中实现。这种方法在采集开关量数量大、多开关量短时间内同时发生变位的情况下会对智能终端的实时性、多任务响应产生影响。针对上述问题,本文在对开关量处理的各个步骤(如采集、去抖动、SOE等)的实时性要求细化分析的基础上,提出了一种基于嵌入式实时操作系统μC/OS-II的实现方案。该方案大大简化了采集中断的任务量,即只进行开关量的采集和变位识别,而去抖动、SOE等实时性要求相对较低的步骤则放到优先级较低的操作系统任务中实现,从而提高了对开关量采集中断的响应速度,保证了整个系统的实时性能。

1 开关量状态监视功能分析

开关量的状态监视主要有两个目的:一是记录当前的状态,如开关位置;二是记录所发生的事件,供事后的事故分析。对于后者,常规变电站综合自动化系统要求时间标记的分辨度是1ms。这个时标是否精确主要依赖于以下两个方面:设备内部的时间精度和不同设备间时间同步的精度[7]。对于智能变电站,根据IEC 61850-5:2003标准,状态量瞬时变化的检测时间要求≤1ms[8]。

开关量信号的采集通常取自于触点,而触点经常发生抖动,短时间的机械振动也会引起触点的抖动。因此,开关量的状态监视功能还需要在不影响时标精度的前提下进行抖动处理。开关量抖动的处理方法主要有硬件去抖动和软件去抖动两种方式。

硬件去抖动是通过硬件电路完成开关量信号的去抖动,但这种方法无法记录SOE时标。软件去抖动主要是以第一次发生变位的时间为时标,在状态稳定并延时一段时间后观察是否在变位状态。如果在变位的状态,则认为发生真正变位,记录该时标和新状态用于SOE记录等功能;否则认为发生抖动[9],软件去抖动原理图如图1所示。

图1 软件去抖动原理图

在工程应用中,传统的处理方案是采用定时中断或原理与之类似的定时任务来实现。参考文献[10]提出了一种在定时扫描中断服务程序中实现开关量去抖动的方案。参考文献[11]提出了一种在定时器中断中使用保存的开关量状态进行逻辑判断的软件去抖方案。由于开关量的响应时间要求不大于1ms,因此中断或任务的间隔也应不大于1ms。

上述方案在智能终端中的实现主要存在如下问题:在相对较短的时间间隔内,如果监视的开关量数目较多,且短时间内发生变位的开关量也较多的情况下,装置中断的处理量会大大增加,从而占用较多的系统资源,以致影响对其他实时性要求更高的功能响应。解决这个问题的思路主要有:通过提高硬件运算速度来缩短中断的执行时间;缩减中断服务程序的处理内容。虽然前者可以解决问题,但是如果被监视开关量也要增加,装置硬件可能因吞吐能力不足而被迫升级,从而增加了成本,浪费了资源。

通过对开关量状态监视的整个过程:采集、变位识别、去抖动、SOE记录等的实时性分析可以发现,整个处理过程中只是采集和变位识别的实时性要求较高,其他步骤的要求相对较弱。因此,可以在开关量采集中断服务程序中只实现开关量的采集与变位识别,其他步骤则在优先响应其他较高实时性的任务后,利用系统空闲资源进行。这样既实现了整个功能,又能保证整个系统的实时性。

2 设计方案

2.1 总体设计

根据上述分析,开关量的状态监视功能的应用环境是一个多任务多功能的环境,且系统应优先响应实时性要求较高的功能或任务。对开关量的状态监视功能而言,根据实时性要求的高低,应该优先响应开关量的采集与变位识别,其他步骤则在优先级较低的任务中进行。因此,需要寻找一种机制实现多任务之间的调度,嵌入式操作系统可以提供较为理想的多任务调度实现方案。

其中,μC/OS-II是一个抢占式的实时多任务操作系统内核,具有简单、高效、开源、易移植、可裁减性好等特点[12]。基于该操作系统的开关量的状态监视实现方案主要包含两个部分:开关量接收中断、开关量处理任务。中断与任务之间的通信采用μC/OS-II的消息队列功能。

(1)开关量接收中断

该中断接收新的开关量状态数据并检测,找出发生变位的开关量。这样的设计大大减轻了中断的运算负担,增大了吞吐量,减少了中断的处理时间,符合集中式保护的要求。

(2)开关量处理任务

开关量处理任务可以设计为定间隔任务。但是变电站在正常运行时开关量的变位并不经常发生,定间隔任务会对系统资源造成浪费。而μC/OS-II的任务支持消息驱动,因此将任务设计为接收到新消息后启动可节省系统资源。

任务从消息中获取发生变位的开关量状态信息并立即启动去抖延时。延时过程中,任务挂起而不占用系统资源。延时结束后,根据抖动判断是否真正变位,并由此决定是否启动SOE等相关功能。如果同一开关量在去抖延时期间接收到变位消息,则重新开始延时并重复上述处理步骤。

针对短时间内多个开关量可能同时发生变位,且各个开关量的延时时间可以被用户自定义的情况,本方案采用一个带头节点的静态双向链表来管理发生变位的开关量。这种链表避免了通过遍历全部开关量状态信息查找最短延时,而是只遍历发生变位的开关量,从而减轻了程序运算量,提高了效率。同时,这种链表的管理操作也比较简单。

2.2 开关量接收中断设计

在开关量接收中断中,由于开关量状态信息以字为单位接收,每一个开关量的状态占一个比特位,通过判断每一个字前后是否一致即可检测出是否有变位发生。如果不一致,则说明存在发生变位的开关量,此时需要记录下该字的当前值及对应的时标等信息,然后将该信息以消息的形式发送给开关量处理任务,开关量采集中断处理流程如图2所示。

2.3 开关量处理任务设计

μC/OS-II提供的消息队列功能函数中的等待消息函数OSQPend()可以限时或无限时地等待消息,在消息队列为空时将任务挂起,直到有新消息或等待超时恢复任务运行。因此,利用这个函数可以实现任务的新消息启动和去抖动延时。不仅充分利用了操作系统的功能,而且延时的过程中还能始终保持对新消息的响应,保证了延时的有效性。

图2 开关量采集中断处理流程

图3为开关量处理任务流程。在消息队列中有新消息情况下,应逐一处理全部消息,找出发生变位的开关量,更新相应状态信息中的内容,如上一次的抖动时标、上一次值、当前值等。特别的,如果是初次变位,还应该记录初次变位时标、初始值等。然后,将该状态信息结构体添加到负责管理变位开关量的双向链表中。最后,遍历链表查找需要延时的开关量中的最短延时,以便下一次循环调用OSQPend()时启动去抖延时。如果正在延时而被新消息打断,在遍历链表时就必须先重新计算双向链表中所有等待延时的剩余时间,从而保证去抖延时的准确性。另外,对于遍历链表时发现延时已完成的情况也应处理,从而使逻辑更加准确。

图3 开关量处理任务流程

在等待超时即去抖延时完成情况下,应遍历双向链表,找到延时已完成的开关量,并判断该开关量是否发生真正变位。如果真正变位,则记录开关量编号、初始变位时标等信息,以用于事件顺序记录或其他相关功能。最后,将该延时完成开关量状态信息结构体从双向链表中删除。另外,查找延时已完成开关量的同时,也应该找出延时未完成开关量中的最短延时以启动下一次循环的去抖延时。

如果遍历链表时进行了删除操作,则在遍历链表后应判断链表是否为空。如果为空,则将OSQPend()的延时参数置0,即在下一次循环时进入到无限时的等待消息模式。

2.4 数据结构设计

2.4.1 状态信息记录结构体

本方案为每个被监视开关量建立一个状态信息记录结构体,保存当前值、前一次值、变位前值、当前状态、初始变位时标、上一次变位时标等信息。

2.4.2 带头节点的静态双向链表

在状态信息记录结构体基础上,每个结构体增加两个指针并增加一个只带双向指针的空结构体作为头节点就可以构建这种链表。链表的管理操作,如向头部增加节点、删除节点、遍历链表等如图4所示。链表的主要操作有向头部增加节点k、删除节点j,以及遍历链表等,只需对节点的双向指针操作即可编程实现。

图4 双向链表操作示意图

3 性能测试与分析

开关量状态监视功能的性能主要体现在去抖动可靠性和响应时间两方面。因此对本设计方案的性能进行了如下测试。

(1)去抖动性能测试

通过模拟开关发生抖动或变位时的采样波形,测试本方案对抖动尤其是多次反复抖动的识别能力。表1给出了测试采用的开关量的采样波形及测试结果。可以看出,本方案可以准确地识别开关的抖动,尤其是初次变位发生后,在小于去抖延时时间Td内,再次发生变位的多次反复抖动情况。结果证明去抖动可靠性良好。

(2)响应时间测试

为了测试本方案的时间响应性能,测试模拟了对256(16×16)路开关量的状态监视情况。所有开关量的去抖延时均定义为20ms。大量开关量同时发生变位时本方案的平均最大响应时间如表2所列。可以看出:随着发生变位的开关量数目的增多,平均最大响应时间逐渐增大。但是相较传统方案而言,本方案的响应时间大大缩短。

表1 去抖动性能测试结果

表2 响应时间测试结果

结 语

本方案已在一个具有开关量状态监视功能需求的智能变电站IED装置研发项目中得到了应用。通过应用本方案,该装置可以实现对全站开关量的状态监视,且SOE准确可靠。

本方案可以实现对变电站全部或部分开关量的状态监视。当故障发生时可以记录开关状态的变化及精确时标。通过与故障录波、相量测量等的配合,可以为故障信息综合分析决策提供更多分析依据。

通过对开关量的状态监视,可以获取所有开关的抖动数据,进而可以统计开关的抖动频率、抖动持续的时间等数据,为工作人员及时发现开关潜在的电磁故障、机械故障或回路故障等问题提供了重要参考数据。同时,通过可方便获得的开关分闸的持续时间和电弧电流数据可以计算出开关的切断电流容量,从而为开关的运行状态评估提供重要参考依据,为实现智能变电站设备状态的可视化、状态检修,以及今后要实现的变电站全周期管理提供必要的数据支撑。

[13]提出了一种采用A/D转换获取开关触点回路的直流电压,从而快速、可靠地识别触点抖动、开关切换感应瞬态、触点氧化程度,以及直流电源的接地故障等算法。对比参考文献[13],本方案不仅处理速度和可靠性可以进一步改善,而且功能可以扩展的更丰富,为实现设备状态的可视化及故障检测等应用提供更多技术支持。

参考文献

[1] 高翔.数字化变电站应用技术[M].北京:中国电力出版社,2008.

[2] 罗理鉴,黄少锋,江清楷.智能变电站智能一次设备框架设计[J].电力自动化设备,2011,31(11):120-124.

[3] 周晓龙.智能变电站保护测控装置[J].电力自动化设备,2010,30(8):128-133.

[4] 马辉.数字化变电站技术丛书设计分册[M].北京:中国电力出版社,2010.

[5] 国家电网公司.Q/GDW428-2010智能变电站智能终端技术规范[S].北京:中国电力出版社,2009.

[6] 马力,林瑞,王建勋.常规变电站数字化改造的关键技术分析[J].电力自动化设备,2011,31(9):104-107.

[7] Klaus Brand,Volker Lohmann,Wolfgang Wimmer,等.变电站自动化[M].景雷,等译.北京:中国电力出版社,2009.

[8] IEC.IEC61850-5—2003Communication networks and systems in substations-part 5:communication requirements for functions and device models[S].

[9] 郭建,鲁国刚,王显芹.变电站自动化系统遥信去抖方法分析[J].继电器,2007,35(1):47-50.

[10] 黄国兵,冯龙喜,王军平,等.基于ARM的开关量信号采集模板的设计[J].电子技术,2009,46(3):13-16.

[11] 何春华,鄢仁成.开关量的实用软件处理方法[J].计算机测量与控制,2005,13(4):339-400.

[12] Jean J Labrosse.嵌入式操作系统μC/OS-II[M].邵贝贝,等译.2版.北京:北京航空航天大学出版社,2003.

[13] Bogdan Kasztenny,Vijayasarathi Muthukrishnan,Tarlochan Singh Sidhu.Enhanced Numerical Breaker Failure Protection[J].IEEE TRANSACTIONS ON POWER DELIVERY,2008,23(4):1838-1845.

猜你喜欢

时标链表变位
二阶非线性中立型时标动态方程趋向于零的非振动解的存在性
时标上具非正中立项的二阶动力方程的动力学性质
基于二进制链表的粗糙集属性约简
跟麦咭学编程
基于链表多分支路径树的云存储数据完整性验证机制
浅析奶牛真胃变位与日粮精粗比关系
基于奇异扰动的永磁风力发电机组双时标控制
变位器在摊铺机车架焊接上的研究应用
奶牛真胃变位的诊断及手术治疗
奶牛真胃左方变位的诊治