原创 基于ARM的开关量信号采集模板的设计

2014-4-22 10:23 911 21 21 分类: 处理器与DSP

  O 引言

  本文设计的开关量信号采集模板是一款嵌入式SCADA系统的一种插件,称为智能数字量采集板(IntelligentBinary Input Board,简称B板)。该装置主要用于电力系统等工业过程控制领域的实时数据采集与控制。

  在绝大多数工业测控系统中都不可避免地会涉及开关量采集的问题,开关量信号采样的准确可靠性对于整个测控系统能否正常稳定地工作,起着重要的作用。从以往的工作经验来看,开关量信号采集的关键问题就是去抖动,避免错误的开关量变位信号困扰系统的使用者。所谓开关量信号抖动就是由于开关量信号的采样通道受到干扰后装置采集到了错误的开关状态并上报给主站系统,产生许多莫须有的告警信息,让系统的使用者难以辨别事件的真伪,影响系统的实用性。在电力系统自动化行业,开关量的事件顺序记录分辨率的指标要求是1~2ms,繁琐的硬件去抖动电路和软件延时去抖动算法会破坏系统的实时性指标。为此,本文提出了一种快速的去抖动算法,与模板上硬件去抖动滤波电路配合,较好地解决的上述问题。

  本文主要就B板的软硬件设计原理与实现方法以及去抖动算法进行介绍。

  1 硬件设计

  1.1 总体设计

  B板以Philips LPC2138 32位ARM微控制器为核心,完成16通道开关量的数据采集。作为嵌入式SCADA系统的一种插件,板上设计了一路RS422异步串行通信接口,通过该接口与装置的通信与管理模板(Communication andManagement Board,简称M板)通信,将采集生成的实时开关量信息上报给M板。由于M板要通过RS422总线管理多块II0板工作,M板采用主从方式实现与II0板的通信连接,为此各IIO板都设计了ID标识地址进行身份确定。B板的ID标识地址采用8位双排跳线器设置,标识地址范围为0lH~FFH。此外,模板还设计了一路为RS232接口,用于模板的检测与调试,以及LPC2138的软件下载。调试RS232接口是一个标准的VTl00超级终端接口,通过该接口可以与PC机进行通信连接,使用Windows的超级终端仿真软件可以十分方便地对该模板进行调试和检测。同时该串口也是LPC2138软件的下载接口,将跳线JPl02和JPl03跳接上,即可通过专用软件将编译连接生成的软件下载到LPC2138的FLASH存储器。

  板上开关量过程通道包括BI回路信号调理与滤波电路、光电隔离电路、开关量状态访问电路。由于LPC2138的I/0引脚的数量有限,硬件设计时采用部分I/O引脚作为CS片选信号,部分I/O仿真8位数据总线对外部访问端口进行分时操作。

  为了保证模板运行的稳定可靠性,B板设计有硬件看门狗电路(HWDT),软件还设计了软看门狗定时监视器(SWDT)。软硬看门狗协同工作,在软件“走飞”或局部“走死”之后自动恢复模板运行。

  B板的工作原理如图1所示。

B板的工作原理

  1.2 LP02138的I/0扩展

  LPC2138是一款总线不出芯片的片上系统(SoC),主要通过I/O引脚对外部电路进行访问。本文设计的B板有16路BI输入状态、8位ID标识地址、异步串口和HWDT等都需要使用I/O资源,LPC2138的I/O引脚不够用。为此,硬件设计时通过对LPC2138的I/0引脚进行组合使用,实现了对外部电路的分时访问。具体实现方法是,采用部分I/O引脚作为CS信号,再用8个I/0模仿8位地址总线DBO~7对外部端口进行访问。这种方法的优点在于既可减少I/0资源的使用,PCB布线也容易许多。采用这种方法进行I/O扩展需要注意两个方面的问题:①由于LPC2138的I/0引脚在启动时多为低状态,此时会导致CS信号都使能,造成冲突,需要将用做CS信号的I/0引脚上拉;②软件访问外部电路时,要通过设置I/O状态模拟外部电路的访问时序。B板LPC2138的I/0扩展如图2所示。

B板LPC2138的I

  1.3 开关量输入过程设计

  开关量输入过程通道的设计相对简单,首先要根据光偶的驱动电流确定输入电阻的大小,并选择一个电容与该输入电阻构成一个RC滤波回路,过滤过程通道上的毛刺干扰;为了防止用户接线时把外部驱动回路的电源极性接反导致光偶烧坏,在回路上反向接入一个二极管对其进行保护;为了适应外部输入回路多样性(如有源脉冲信号和无源干接点信号不能共地),硬件设计时将16路开关量分为4组,每组一个公共端。开关量输入信号与LPC2138的接口采用HC245实现,软件设置片选使能,将BI状态放入数据总线,读取BI状态,然后设置片选禁止,完成BI的采集工作。开关量输入过程通道如图3所示。

开关量输入过程通道

  1.4 硬件看门狗复位电路

  LPC2138的内部本身集成有看门狗电路,但是根据作者多年从事电力系统自动化产品的设计经验,由于CPU内部WDT需要软件编程启动,在极端情况下,系统死机后该WDT不能对系统进行恢复。为此,在进行本模板设计时,没有使用LPC2138内部的WDT,而是采用SP706S芯片专门扩展了一个看门狗,用于系统“走死”后的自动恢复。SP706S是一款专门的看门狗复位电路,其定时器延时的时间为1.6秒。电路设计方法是将SP706S的复位输出引脚与LPC2138复位电路的人工复位引脚相连。由于LPC2138软件下载的时间要大于1.6秒,硬件设计时设置了一个跳线器用于看门狗的使能/禁止,软件下载时将跳线帽拔下,模板正常运行时将跳线帽插上。B板的看门狗复位电路如图4所示。

B板的看门狗复位电路

  正常运行时,模板软件的看门狗定时器任务将定时(<1.6秒)清除SP706S的延时计数器,SP706S不会产生复位模板的信号。软件“走死”后,由于该任务不再清WDT计数器,1.6秒之后,SP706S产生复位模板的信号,模板重新启动运行。

  模板软件运行过程中,软件的其它任务和异步串行通信收发器也可能局部“走死”,对于这种局部“走死”的情况,最好是局部恢复而不是模板复位。为此,看门狗定时器任务设计时采用了软硬看门狗级联工作的模式,即硬件看门狗监视WDT任务的运行,同时设计多个软件看门狗定时器监视其它任务的运行和异步串口的收发,WDT任务“走死”后复位模板,其它监视对象“走死”后进行局部初始化恢复处理,从而实现软件的可靠性设计。

  2 软件设计

  模板软件采用μC/OS—II作为操作系统,软件的层次结构如图5所示。模板的应用软件设计主要工作包括目标板底层驱动程序的编写和模板I/O功能的设计编程两部分工作。

软件的层次结构

  目标板底层驱动主要包括1ms开关量定时采集中断和两个异步串口中断的中断服务程序的编写,前者响应中断后读取16路开关量输入信号的状态,后者完成异步串行通信收发器的控制与数据收发。

  模板应用软件设计主要包括4个任务模块的编写,分别是看门狗定时器任务、开关量信号采样数据处理、与M板数据通信协议处理、VTlOO超级终端命令处理等。

  限于论文的篇幅,本文对模板软件实现的细节不作详细介绍,仅将带有去抖动功能的开关量采集算法提取出来进行介绍。

  开关量采集软件部分的主要任务是读取开关量当前的实时状态并记录开关量变位发生的时标。在电力系统自动化领域,带变位时标的开关信息称为事件顺序记录(SOE),主要用于判别开关量之间变位的先后顺序,分析事故发生的原因。软件实现时SOE记录保存在队列之中。

  为了保证系统时间的统一性,装置M板的时间由上位主站或GPS授时钟统一对时,M板再给各B板对时,然后M板和B板采用各自的定时器自动守时。B板的时间格式为“秒计数+毫秒计数”,秒计数是相对2000年0时0分O秒的计数值,毫秒计数的范围为0—999,达到1000时自动清零并向秒计数进位。由于装置晶振的守时精度较差,为了保证lms的SOE分辨率,每5分钟应进行一次对时操作。

  在开关量采集过程中,由于受到装置运行现场各种干扰源的影响,经常发生读到的开关量状态与监控对象运行状态不一致的情况,造成EMS主站监控系统产生大量的虚假告警信息,事件打印机不停地打印,严重影响了系统的实用化。因此剔除这些虚假的开关量抖动信息也是软件设计的一项重要的工作。

  针对工业现场监控对象开关量状态的特性以及干扰抖动的特点,开关量状态大都采用继电器的触点指示,开关量本身从0→1或从l→0的机械变位时间一般都比较长(≥80ms),而干扰抖动的时问非常短(一般<4ms),SOE又是用来判定不同开关量之间变位的先后顺序,因此,采用连续多次采集到的开关量状态来判定BI是否真正变位并不影响开关量采集的实时性和SOE分辨率。事实上,根据以往现场工程的经验,采用连续4次(4ms)采样进行抖动判断即可达到非常不错的效果,可以让EMS/SCADA系统的事件打印机安静下来。根据远动终端检测中心的建议,抖动延时判断的最大时间可以达到100ms。一般情况下,抖动延时判断时间取lO~20ms就可以了。由于B板开关量信号采样数据处理任务采用OS滴答(Tick)周期(10ms)启动执行,为了防止保存BI变位信息的缓冲区发生覆盖(overlap)访问冲突,抖动延时判断的取值应大于10ms,软件确省的取值为15ms。

  为了准确记录开关量变位的时间,通常情况下采用定时中断来扫描读取BI状态,B板的扫描周期为lms,并采用该中断进行SOE时钟的守时,扫描周期为1ms时SOE分辨率可达到2ms。没有去抖动功能常的开关量采集流程为:SOE时钟增长1ms;读取BI的状态;判断开关量是否变位,如果有变位,则记录变位信息,包括BI的点序号、状态、变位时间和变位标记等。为了判别开关量是否发生抖动,软件在变位信息结构体中增加了一个抖动计数器成员变量,如果开关量有变位,先不记录变位信息,而是将抖动计数器加1,判断是否达到抖动延时检测时间,如果达到,则确认开关量发生了变位;如果开关量没有变位,则将抖动计数器清零。这样如果一个开关量在抖动延时判别时间之内发生变位又恢复至原先的状态,软件将不记录其发生的变位信息,从而达到取抖动的目的。B板带有去抖动功能的1ms开关量定时扫描中断服务程序的算法如图6所示。

B板带有去抖动功能的1ms开关量定时扫描中断服务程序的算法

  比较带抖动功能和不带抖动功能的开关量采集算法,增加去抖动功能时,只增加了一个抖动计数器变量,在记录开关量变位信息之前,对该变位信息进行延时确认,增加的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板开关量信号采集的准确性、事件顺序记录分辨率与实时性等性能指标符合相关标准的要求,运行稳定可靠,达到了预期的设计目的。

文章评论0条评论)

登录后参与讨论
我要评论
0
21
关闭 站长推荐上一条 /2 下一条