比较带抖动功能和不带抖动功能的开关量采集算法,增加去抖动功能时,只增加了一个抖动计数器变量,在记录开关量变位信息之前,对该变位信息进行延时确认,增加的CPU程序执行代价非常小,没有影响中断服务程序的正常运行。因此,该算法速度快,效果也十分理想。该算法的缺陷在于如果开关实际变位的过程中发生了抖动,将无法记录到准确的开关变位的开始时间。如果要达到这一目的,需要连续记录开关量变位的轨迹,然后再进行开关量变位开始时间的确定。不过这种算法的CPU开销比较大,B板的软件设计没有采用这种算法。考虑到干扰信号的偶然性,又有硬件滤波电路的配合,图6所示的算法是一种行之有效的好方法。
开关量信号采样数据处理任务主要完成将BI定时中断采集服务程序采集到的开关量变位信息转换成SOE记录,并添加到SOE队列之中,处理算法如图7所示。该算法主要实现了两项功能:SOE队列元素的时间修正和SOE队列操作。由于BI中断程序记录的BI变位时间是去抖动判别确认时的时间,因此生成SOE记录时要将该时间修正到BI开始变位的时间。SOE队列操作就是将SOE元素添加到SOE队列之中,在添加SOE元素时,如果队列已满,需要将最早的SOE元素删除,再将新生成的SOE元素添加到队列之中。正常情况下,M板每O.5秒与B通信一次,召唤B板采集生成的开关最信息,根据现场经验,即便开关量变位发生雪崩效应,16路BI在0.5秒之内也不会产生64个SOE记录,软件实现时设置的SOE队列的长度为64。当然,如果发生M板与B板的通信长期中断,SOE队列会有溢出发生,这种情况一般都是装置故障,需要检修予以排除。此外,BI变位信息和ISOE队列的访问操作与其它任务和中服务程序有互斥要求,需要使用临界区加以保护。
3 结论
装置定型开发完成之后,在国电北仑电厂三期、中山嘉明电厂二期UPS电源监控和户县惠安化工厂19口水井的马达自动控制中投入使用,运行结果表明,B板开关量信号采集的准确性、事件顺序记录分辨率与实时性等性能指标符合相关标准的要求,运行稳定可靠,达到了预期的设计目的。