工控软件的抗干扰设计

供稿:深圳市中达优控科技有限公司

  • 摘要:软件抗干扰问题的研究愈来愈引起人们的重视

软件抗干扰问题的研究愈来愈引起人们的重视。 
一、工控软件的结构特点及干扰途径
在不同的工业控制系统中,工控软件虽然完成的功能不同,但就其结构来说,一般
具有如下特点:
  * 实时性:工业控制系统中有些事件的发生具有随机性,要求工控软件能够及时地
处理随机事件。
  * 周期性:工控软件在完成系统的初始化工作后,随之进入主程序循环。在执行主
程序过程中,如有中断申请,则在执行完相应的中断服务程序后,继续主程序循
环。
  * 相关性:工控软件由多个任务模块组成,各模块配合工作,相互关联,相互依
存。
  * 人为性:工控软件允许操作人员干预系统的运行,调整系统的工作参数。
在理想情况下,工控软件可以正常执行。但在工业现场环境的干扰下,工控软件的
周期性、相关性及实时性受到破坏,程序无法正常执行,导致工业控制系统的失
控,其表现是:
  * 程序计数器PC值发生变化,破坏了程序的正常运行。PC值被干扰后的数据是随机
的,因此引起程序执行混乱,在PC值的错误引导下,程序执行一系列毫无意义的指
令,最后常常进入一个毫无意义的“死循环”中,使系统失去控制。
  * 输入/输出接口状态受到干扰,破坏了工控软件的相关性和周期性,造成系统资源
被某个任务模块独占,使系统发生“死锁”。
  * 数据采集误差加大。干扰侵入系统的前向通道,叠加在信号上,导致数据采集误
差加大。特别是当前向通道的传感器接口是小电压信号输入时,此现象更加严重。
  * RAM数据区受到干扰发生变化。根据干扰窜入渠道、受干扰数据性质的不同,系统
受损坏的状况不同,有的造成数值误差,有的使控制失灵,有的改变程序状态,有
的改变某些部件(如定时器/计数器、串行口等)的工作状态等。笔者在研制电力远
程抄表系统时就曾遇到因现场强电磁干扰而造成RAM数据经常性被破坏的情况。
  * 控制状态失灵。在工业控制系统中,控制状态的输出常常是依据某些条件状态的
输入和条件状态的逻辑处理结果而定。在这些环节中,由于干扰的侵入,会造成条
件状态错误,致使输出控制误差加大,甚至控制失常。
  二、程序运行失常的软件对策
系统受到干扰侵害致使PC值改变,造成程序运行失常。对于程序运行失常的软件对
策主要是发现失常状态后及时引导系统恢复原始状态。
  1.设置监视跟踪定时器
使用定时中断来监视程序运行状态。定时器的定时时间稍大于主程序正常运行一个
循环的时间,在主程序运行过程中执行一次定时器时间常数刷新操作。这样,只要
程序正常运行,定时器不会出现定时中断。而当程序运行失常,不能及时刷新定时
器时间常数而导致定时中断,利用定时中断服务程序将系统复位。在8031应用系统
中作为软件抗干扰的一个事例,具体做法是:
  * 使用8155的定时器所产生的“溢出”信号作为8031的外部中断源INT1。用555定时
器作为8155中定时器的外部时钟输入;
  * 8155定时器的定时值稍大于主程序的正常循环时间;
  * 在主程序中,每循环一次,对8155定时器的定时常数进行刷新;
  * 在主控程序开始处,对硬件复位还是定时中断产生的自动恢复进行分类判断处
理。
  2.设置软件陷井
当PC失控,造成程序“乱飞”而不断进入非程序区,只要在非程序区设置拦截措
施,使程序进入陷井,然后强迫使程序进入初始状态。例如Z80指令系统中数据FFH
正好对应为重新起动指令RST 56,该指令使程序自动转入0038H入口地址。因此,在
Z80 CPU构成的应用系统中,只要将所有非程序区全部置成FFH用以拦截失控程序。
并在0038H处设置转移指令,使程序转至抗干扰处理程序。
  三、系统“死锁”的软件对策
在工业控制系统中,A/D、D/A,显示等输入/输出接口电路是必不可少的。这些接口
与CPU之间采用查询或中断方式工作,而这些设备或接口对干扰很敏感,干扰信号一
旦破坏了某一接口的状态字后,就会导致CPU误认为该接口有输入/输出请求而停止
现行工作,转去执行相应的输入/输出服务程序。但由于该接口本身并没有输入/输
出数据,从而使CPU资源被该服务程序长期占用,而不释放,其它任务程序无法执
行,使整个系统出现“死锁”。对这种干扰造成的“死锁”问题,在软件编程中,
可采用“时间片”的方法来解决。其具体步骤为:
  * 根据不同的输入/输出外设对时间的要求,分配相应的最大正常的输入/输出时
间。
  * 在每一输入/输出的任务模块中,加入相应的超时判断程序。这样当干扰破坏了接
口的状态造成CPU误操作后,由于该外设准备好信息长期无效,经一定时间后,系统
会从该外设的服务程序中自动返回,保证整个软件的周期性不受影响,从而避免
“死锁”情况的发生。
  四、数据采集误差的软件对策
根据数据受干扰性质及干扰后果的不同,采取的软件对策各不相同,没有固定的模
式。对于实时数据采集系统,为了消除传感器通道中的干扰信号,在硬件措施上常
采取有源或无源RLC网络,构成模拟滤波器对信号实现频率滤波。同样,运用CPU的
运算、控制功能也可以实现频率滤波,完成模拟滤波器类似的功能,这就是数字滤
波。在许多数字信号处理专著中都有专门论述,可以参考。随着计算机运算速度的
提高,数字滤波在实时数据采集系统中的应用将愈来愈广。
在一般数据采集系统中,可以采用一些简单的数值、逻辑运算处理来达到滤波的效
果。下面介绍几种常用的方法。
  1.算术平均值法
对于一点数据连续采样多次,计算其算术平均值,以其平均值作为该点采样结果。
这种方法可以减少系统的随机干扰对采集结果的影响。一般3~5次平均即可。
  2.比较取舍法
当控制系统测量结果的个别数据存在偏差时,为了剔除个别错误数据,可采用比较
取舍法,即对每个采样点连续采样几次,根据所采数据的变化规律,确定取舍,从
而剔除偏差数据。例如,“采三取二”即对每个采样点连续采样三次,取两次相同的
数据为采样结果。
  3.中值法
根据干扰造成采样数据偏大或偏小的情况,对一个采样点连续采集多个信号,并对
这些采样值进行比较,取中值作为该点的采样结果。
  4.一阶递推数字滤波法
这种方法是利用软件完成RC低通滤波器的算法,实现用软件方法代替硬件RC滤波
器。一阶递推数字滤波公式为Yn=QXn+(1-Q)Yn-1
式中Q -数字滤波器时间常数;
Xn-第n次采样时的滤波器输入;
Yn-第n次采样时的滤波器输出。
采用软件滤波器对消除数据采集中的误差可以获得满意的效果。但应注意,选取何
种方法应根据信号的变化规律选择。
  五、RAM数据出错的软件对策
在实时控制过程中,干扰造成比较严重的危害之一就是冲毁RAM中的数据,由于RAM
中保存的是各种原始数据、标志、变量等,如果被破坏,会造成系统出错或无法运
行,根据数据被冲毁的程度,一般可分为三类:
  * 整个RAM数据被冲毁;
  * RAM中某片数据被冲毁;
  * 个别数据被冲毁。
  在工业控制系统中,RAM的大部分内容是为了进行分析、比较而临时存放的,不允许
丢失的数据只占极少部分。在这种情况下,除了这些不允许丢失的数据外,其余大
部分内容允许短时间被破坏,最多只引起系统的一个很短时间的波动,很快能自动
恢复正常。因此,在工控软件中,只要注意对少数不允许丢失的数据保护,一般常
用的方法有“校验法” 和“设标法”。这两种方法各有千秋,校验法比较繁锁,但
查错的可信度高。设标法简单,但对数据表中个别数据冲毁的情况,查错则无难为
力。在编程中一般应综合使用,其具体做法为:
  * 将RAM工作区重要区域的始端和尾端各设置一个标志码“0” 或“1”;
  * 对RAM中固定不变的数据表格设置校验字。
在程序的执行过程中,每隔一定的时间通过事先设计的查错程序来检查其各标志码
是否正常,如果不正常,则利用数据冗余技术通过抗干扰处理程序来进行修正;冗
余数据表的一般设计原则是:
  * 各数据表应相互远离分散设置,减少冗余数据同时被冲毁的概率。
  * 数据表应尽可能远离栈区,减少由于操作错误造堆栈被成数据冲的可能 。
上述对RAM区域的恢复处理方法,在不同的应用系统中应根据的具体情况进行取舍。
  六、控制状态失常的软件对策
在条件控制系统中,人们关注的问题是能否确保正常的控制状态。如果干扰进入系
统,会影响各种控制条件、造成控制输出失误。为了确保系统安全可以采取下述软
件抗干扰措施:
  1.软件冗余
对于条件控制系统,将控制条件的一次采样、处理控制输出,改为循环采样、处理
控制输出。这种方法具有良好的抗偶然因<

发布时间:2010年7月13日 22:28  人气:  
更多内容请访问(深圳市中达优控科技有限公司
相关链接

我有需求