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

发布者:平安心境最新更新时间:2011-06-25 关键字:ARM  开关量信号  采集模板 手机看文章 扫描二维码
随时随地手机看文章

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

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

1.4 硬件看门狗复位电路[page]

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

正常运行时,模板软件的看门狗定时器任务将定时(<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。[page]

    为了准确记录开关量变位的时间,通常情况下采用定时中断来扫描读取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板开关量信号采集的准确性、事件顺序记录分辨率与实时性等性能指标符合相关标准的要求,运行稳定可靠,达到了预期的设计目的。

关键字:ARM  开关量信号  采集模板 引用地址:基于ARM的开关量信号采集模板的设计

上一篇:基于ARM7与FPGA组成的可编程控制器
下一篇:ARM处理器的分散加载及特殊应用研究

推荐阅读最新更新时间:2024-03-16 12:37

ARM中关于CPSR_cxsf
msr cpsr_cxsf,r1 ;这里的cxsf表示从低到高分别占用的4个8bit的数据域 指令中有时还有出现cpsr_cf, cpsr_all, cpsr_c等,这里: c 指 CPSR中的control field ( PSR ) f 指 flag field (PSR ) x 指 extend field (PSR ) s 指 status field ( PSR ) 其中cpsr的位表示为: 31 30 29 28 --- 7 6 - 4 3 2 1 0 N Z C V
[单片机]
ARM的九种寻址方式
寻址方式就是CPU根据指令中的地址信息,找出物理地址也就是内存地址的方式,通俗理解就是ARM指出内存地址的方式。 寻址的目的就是找出操作数,比如ARM要做一个除法运算,就需要除数和被除数,除数和被除数都是除法指令的操作数,要找到这些操作数,可以有多种方法,寻找操作数的过程就叫做寻址。(我个人理解) ARM支持九种寻址方式: 立即数寻址 寄存器寻址 寄存器偏移寻址 寄存器间接寻址 寄存器基址变址寻址 多寄存器寻址 相对寻址 堆栈寻址 块拷贝寻址 1.立即数寻址 立即数寻址就是直接将内存中的数据发给CPU作为操作数。注意,由于ARM是32位指令集,所以立即数的范围不可以超出0255,也就是说立即数的范围只能是0255。
[单片机]
采用ARM芯片和LINUX嵌入式系统实现自主避障机器鱼的设计
随着科技的发展与进步,出现了具有特殊功能的智能机器,如索尼公司生产的能够以自我“意识”来“感觉”“学习”和“饲养”的宠物机器狗,以弗吉尼亚理工大学研制的CHARLI-L1机器人为基础进行升级改造的SAFFIR的消防机器人等。机器鱼作为一项比较新的产品,涉及到机器鱼的智能开发并不深,因此机器鱼的智能化程度并不高,但随着机器鱼研究的加深,相信机器鱼的智能度会大大提高,功能也会更趋完善。目前的机器鱼类型主要有遥控机器鱼和语音控制机器鱼,例如曾在德国汉诺威电子展上展现的通过机器鱼体内收缩来提供动力的遥控式机器鱼和在西南民族大学诞生的国内首个的声控机器鱼等。 据调查显示同内涉及到具有自主避障与自主视觉功能的智能机器鱼的研究与开发并不多。
[单片机]
采用<font color='red'>ARM</font>芯片和LINUX嵌入式系统实现自主避障机器鱼的设计
基于ARM控制器的渗炭炉温度控制系统的设计
渗碳过程工件质量主要取决于对温度的控制,当今市场中温度控制成型的产品均以单片机为控制器。由于一般单片机的速度比较慢,更重要的是其ROM和RAM空间比较小,不能运行较大程序,而基于多任务的操作系统需要的任务堆栈很多,需要的RAM空间很大,故其在发展上受到了很大限制。其欢在开发环境上,DSP需要开发用的仿真器,其价格比较贵,因此本设计排除了使用DSP。ARM系列的ARM7TDM1核嵌入式处理器目前应用得较多,价格比较低,性价比较好,还有免费的开发工具ARM SDT,再配以简单的JTAG仿真器,就可以运行嵌入式开发,因此本设计选用韩国三星公司的S3C44BOX芯片作为主控制器。 1 Samsung S3C4480X芯片简介 Samsu
[应用]
Cortex-M3 VS ARM7
要使用低成本的 32位处理器,开发人员面临两种选择,基于Cortex-M3内核或者ARM7TDMI内核的处理器。如何做出选择?选择标准又是什么?本文主要介绍了ARM Cortex-M3内核微控制器区别于ARM7的一些特点,帮助您快速选择。 1.ARM实现方法 ARM Cortex-M3是一种基于ARM V7架构的最新ARM嵌入式内核,它采用哈佛结构,使用分离的指令和数据总线;ARM7是冯诺伊曼结构 冯诺伊曼结构下,数据和指令共用一条总线 。从本质上来说,哈佛结构在物理上更为复杂,但是处理速度明显加快。根据摩尔定理,复杂性并不是一件非常重要的事,而吞吐量的增加却极具价值。 ARM公司对Cortex-M3的定位是:向专
[单片机]
基于ARM的电脑鼠控制系统研究
1 电脑鼠工作原理 电脑鼠周围安装六组红外传感器,分别感知左方、左前方、前方、右前方、右方,发射端发射一定频率的红外线,接收端通过六个方向的反射波来判断是否有障碍物,实时地储存单元格的资料,通过六组红外传感器反馈的迷宫信息,控制电脑鼠完成避障、转弯、加速等动作,运用智能算法对迷宫的部分单元格或全部单元格进行遍历,并将迷宫的信息以有效的数据结构存储,微控制器根据这些记录信息运用迷宫高效算法找到一条最优化路径,从而实现从起点到终点的最大化冲刺。 2 硬件电路设计 为完成迷宫探测和冲刺任务,电脑鼠需具备以下各功能模块:ARM微处理器作为控制核心协调各功能模块正常工作;电机及驱动模块实时控制电机启动、制动;红外检测模块负责红外线探测
[单片机]
基于<font color='red'>ARM</font>的电脑鼠控制系统研究
ARM核心板在脑电监测TCI注射泵中的应用
1.1背景事件 针对患者手术中麻醉剂的施用,当麻醉剂量超标时,容易造成患者心跳、呼吸骤停从而造成脑损伤。传统的麻醉剂注射依靠麻醉师的经验,而新型的脑电监测TCI注射泵则将BIS(脑电监测)与TCI(靶控输注)相结合,真正在医疗电子中实现个体化镇静麻醉,减少麻醉风险。 1.2脑电监测TCI注射泵控制主板功能需求 脑电监测TCI注射泵在常规注射泵基础上,通过接收“脑电分析仪”的数据来进行分析决策注射量和注射速度,使注射更加科学,更加安全。 控制主板主要功能需求 : 显示接口,外接7寸以上真彩液晶,支持触摸屏; RS-232接口,连接脑电分析仪; PWM,控制注射电机; ADC,采集注射管位置数据信息; 声卡,注射过程提示
[医疗电子]
<font color='red'>ARM</font>核心板在脑电监测TCI注射泵中的应用
基于嵌入式ARM-Linux无线ZigBee协调器驱动设计
农田中大范围的环境信息监测已成为网络应用范围重点之一。针对农田布线不便的特点,ZigBee无线节点网络成为农田信息采集系统的首选,可对其所分布区域内的各种环境和检测对象的信息进行实时的监控 。然而,控制下层整个网络状态的核心是上位机ARM处理器,而且上位机与下位机通信大多以串口模式来实现 。但串口通信模式存在串口传输速率低(波特率双方一致)、传送距离短 、数据冗余差(数据校验)以及设计串口协议繁琐(帧格式)等不足。因此本文研究了ZigBee在ARM9内核中的协调器字符驱动,利用I/O传输数据,控制具有协调器驱动的设备在农田任何位置即可组网,以减少协调器的布局,实现方便快捷的动态数据监测。 1 田间监测系统的要求  因监测节点需要
[工业控制]
基于嵌入式<font color='red'>ARM</font>-Linux无线ZigBee协调器驱动设计
热门资源推荐
热门放大器推荐
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved