DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 123|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 18:46:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                      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所示。






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






  正常运行时,模板软件的看门狗定时器任务将定时(<1.6秒)清除SP706S的延时计数器,SP706S不会产生复位模板的信号。软件“走死”后,由于该任务不再清WDT计数器,1.6秒之后,SP706S产生复位模板的信号,模板重新启动运行。
  模板软件运行过程中,软件的其它任务和异步串行通信收发器也可能局部“走死”,对于这种局部“走死”的情况,最好是局部恢复而不是模板复位。为此,看门狗定时器任务设计时采用了软硬看门狗级联工作的模式,即硬件看门狗监视WDT任务的运行,同时设计多个软件看门狗定时器监视其它任务的运行和异步串口的收发,WDT任务“走死”后复位模板,其它监视对象“走死”后进行局部初始化恢复处理,从而实现软件的可靠性设计。
  2 软件设计
  模板软件采用μC/OS—II作为操作系统,软件的层次结构如图5所示。模板的应用软件设计主要工作包括目标板底层驱动程序的编写和模板I/O功能的设计编程两部分工作。






  比较带抖动功能和不带抖动功能的开关量采集算法,增加去抖动功能时,只增加了一个抖动计数器变量,在记录开关量变位信息之前,对该变位信息进行延时确认,增加的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板开关量信号采集的准确性、事件顺序记录分辨率与实时性等性能指标符合相关标准的要求,运行稳定可靠,达到了预期的设计目的。
            
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-7-28 04:27 , 耗时 0.109806 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表