基于ARM的开关量信号采集模板的设计
为了准确记录开关量变位的时间,通常情况下采用定时中断来扫描读取BI状态,B板的扫描周期为lms,并采用该中断进行SOE时钟的守时,扫描周期为1ms时SOE分辨率可达到2ms。没有去抖动功能常的开关量采集流程为:SOE时钟增长1ms;读取BI的状态;判断开关量是否变位,如果有变位,则记录变位信息,包括BI的点序号、状态、变位时间和变位标记等。为了判别开关量是否发生抖动,软件在变位信息结构体中增加了一个抖动计数器成员变量,如果开关量有变位,先不记录变位信息,而是将抖动计数器加1,判断是否达到抖动延时检测时间,如果达到,则确认开关量发生了变位;如果开关量没有变位,则将抖动计数器清零。这样如果一个开关量在抖动延时判别时间之内发生变位又恢复至原先的状态,软件将不记录其发生的变位信息,从而达到取抖动的目的。B板带有去抖动功能的1ms开关量定时扫描中断服务程序的算法如图6所示。
比较带抖动功能和不带抖动功能的开关量采集算法,增加去抖动功能时,只增加了一个抖动计数器变量,在记录开关量变位信息之前,对该变位信息进行延时确认,增加的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板开关量信号采集的准确性、事件顺序记录分辨率与实时性等性能指标符合相关标准的要求,运行稳定可靠,达到了预期的设计目的。
评论