发表于:2005-11-04 18:45:00
楼主
摘 要:本文阐述了工业现场环境中干扰的特点,并详细介绍了工控软件抗干扰设计的方法。
关键词:工控软件、数据采集与处理、抗干扰、噪声。
一、 引言
随着计算机技术、电磁兼容技术、传感器技术和信息技术的飞速发展和普及,现场实时数据的的采集与处理也越来越重要,越来越得到了应用。例如,在生产过程中,应用这一技术可对生产现场的工艺参数进行采集、监视和记录,为提高产品质量,降低生产成本提供信息资源和手段保证,在科学研究中,应用这一技术可获得大量的动态信息,是研究瞬间物理过程的有力工具,也是获得科学奥秘的重要手段之一。然而,一般实时数据采集的工作现场较为恶劣,充斥着各种工业干扰(来自系统内部和外部的),这些干扰通常称之为噪声,当被测信号很微弱时,就会被噪声“淹没”掉,导致很大的数据采集误差,可靠性就会降低,可能造成系统失灵,甚至酿成重大事故。因此,噪声的有效处理在系统控制中至关重要。本文从软件的角度对系统中采集数据的抗干扰问题进行论述。
二、 干扰的表现
工业测控系统中的实时数据采集部分,由传感器、编码器、采集卡和测控软件组成。在没有经过处理的原始数据中,得到的数据无效数据太多,造成由实时数据而绘出的实时曲线上下、左右的波动非常大、线条乱,其原因是由于干扰信号的出现,主要表现:1、程序计数器PC值发生变化,破坏了程序的正常运行。PC值被干扰后的数据是随机的,因此引起程序执行混乱,在PC值的错误引导下,程序执行一系列毫无意义的指令,最后常常进入一个毫无意义的“死循环”中,使系统失去控制;2、数据采集误差加大,干扰侵入系统的前向通道,叠加在信号上,导致数据采集误差加大。特别是当前向通道的传感器接口是小电压信号输入时,此现象更加严重; 3、输入/输出接口状态受到干扰,破坏了工控软件的相关性和周期性,造成系统资源被某个任务模块独占,使系统发生“死锁”现象;4、控制状态失灵,在工业控制系统中,控制状态的输出常常是依据某些条件状态的输入和条件状态的逻辑处理结果而定。在这些环节中,由于干扰的侵入,会造成条件状态错误,致使输出控制误差加大,甚至控制失常。因此,为了使系统正常运行,为了得到有效的数据,使能绘出平滑的曲线,以提高采集数据的可靠性和稳定性,因此干扰信息的有效处理(从掺杂着干扰信号的采集信息中获取有效数据)是必不可少的。
三、 系统干扰的软件措施
a. 采用拦截失控程序的方法
主要有:1、在程序设计时应多采用单字节指令,并在关键处插入一些空操作指令,或将有效单字节指令重复几次,这样可保护其后的指令不被拆散,使程序运行走上正轨;
例如: for I=1 to 20 ‘重复采集
temp(i)=ad_read(ad_base) ‘采集数据语句
for j=1 to 10000 ‘空操作
next
next
Function ad_read( ch as integer) as single
vboout ad_basse,ch
temp=vbinp(ad_base+1) and 255
datah= vbinp(ad_base+1) and 15
datal= vbinp(ad_base+2) and 255
End Function
此例对基地址(ad_base)加1这个单个字节进行重复多次数的采集,然后对采集到的数据进行其它处理以使其后的语句指令不被拆散。
2、加入软件陷阱;当PC值失控使程序失控后,CPU进入非程序区,冗余指令便无法起作用,这时可用一条引导指令,强迫程序进入初始入口状态,进入程序区。可每隔一段设置一个陷阱。
例如:以国家汽车行业标准为依据,规定一个足够大的数据采集范围,如所采集到的数据超出了这个范围就会使程序无法正常运行,并且这些无效数据加重了系统的处理载荷,造成系统异常,严重时会出现系统“死锁”现象,这时这个导致系统无法运行的数据信号视为干扰信号叫做“噪声”。规定了“噪声”出现的范围,就便以加入软件陷阱。当每采集到一个数据信号时就进行判断,如果是“噪声”就进入引导指令处理,再强迫程序进入正规状态。
软件处理流程如右面所示:
3、设置监视跟踪定时器 ,使用定时中断来监视程序运行状态。定时器的定时时间稍大于主程序正常运行一个循环的时间,在主程序运行过程中执行一次定时器时间常数刷新操作。这样,只要程序正常运行,定时器不会出现定时中断。而当程序运行失常,不能及时刷新定时器时间常数而导致定时中断,利用定时中断服务程序将系统复位。在8031应用系统中作为软件抗干扰的一个事例,
具体做法是: 使用8155的定时器所产生的“溢出”信号作为8031的外部中断源INT1。用555定时器作为8155中定时器的外部时钟输入;
8155定时器的定时值稍大于主程序的正常循环时间;
在主程序中,每循环一次,对8155定时器的定时常数进行刷新;
在主控程序开始处,对硬件复位还是定时中断产生的自动恢复进行分类判断处理。
b. 设立标志判断
1、定义某单元为标志,在模块主程序中把该单元的值设为某个特征值,然后在主程序的最后判断该单元的值是否有所变化,不同了说明有误,程序就转入错误处理子程序中执行。
2、定义当前采集数据的前一个值或前第三或五个值都可(不宜太远)为标志判断值。将当前采集的数据与标志数据相比得到的差值如大于在没有出现干扰信号情况下的两数据相比的差值的最大范围就视为有效数据,其原因是产品试验中各项测试项目都要按照国家行业标准规定设计,即试验项目的试验数据定应在规定的范围内变化,并有一定的变化趋势,近而根据这一个变化趋势计算出相应的差数值最大范围,做为标志判断的条件之一。
c. 采用主动初始化及数据冗余化技术
对单位机及片外扩展器的各种功能端口或方式、状态进行设置,保证在上电或复位后软件能下确实现各级的初始代,且在程序每次使用某种功能前都再一次对相应的控制寄