-
-
shengjinli | 当前状态:离线
总积分:259 2024年可用积分:0
注册时间: 2007-12-07
最后登录时间: 2009-01-05
-
PLC程序抗干扰的几种对策
shengjinli 发表于 2007/12/14 12:11:20 910 查看 0 回复 [上一主题] [下一主题]
手机阅读
系统受到干扰侵害致使PC值改变,造成程序运行失常。对于程序运行失常的软件对策主要是发现失常状态后及时引导系统恢复原始状态。
(1) 设监视跟踪定时器
使用定时中断来监视程序运行状态。定时器的定时时间稍大于主程序正常运行一个循环的时间,在主程序运行过程中执行一次定时器时间常数刷新操作。这样,只要程序正常运行,定时器不会出现定时中断。而当程序运行失常,不能及时刷新定时器时间常数而导致定时中断,利用定时中断服务程序将系统复位。在8031应用系统中作为软件抗干扰的一个事例,具体做法是:
· 使用8155的定时器所产生的“溢出”信号作为8031的外部中断源INT1。用555定时器作为8155中定时器的外部时钟输入;
· 8155定时器的定时值稍大于主程序的正常循环时间;
· 在主程序中,每循环一次,对8155定时器的定时常数进行刷新;
· 在主控程序开始处,对硬件复位还是定时中断产生的自动恢复进行分类判断处理。
(2) 设置软件陷井
当PC失控,造成程序“乱飞”而不断进入非程序区,只要在非程序区设置拦截措施,使程序进入陷井,然后强迫使程序进入初始状态。例如Z80指令系统中数据FFH正好对应为重新起动指令RST 56,该指令使程序自动转入0038H入口地址。因此,在Z80 CPU构成的应用系统中,只要将所有非程序区全部置成FFH用以拦截失控程序。并在0038H处设置转移指令,使程序转至抗干扰处理程序。
2 系统“死锁”的软件对策
在工业控制系统中,A/D、D/A,显示等输入/输出接口电路是必不可少的。这些接口与CPU之间采用查寻或中断方式工作,而这些设备或接口对干扰很敏感,干扰信号一旦破坏了某一接口的状态字后,就会导致CPU误认为该接口有输入/输出请求而停止现行工作,转去执行相应的输入/输出服务程序。但由于该接口本身并沒有输入/输出数据,从而使CPU资源被该服务程序长期占用,而不释放,其它任务程序无法执行,使整个系统出现“死锁”。对这种干扰造成的“死锁”问题,在软件编程中,可采用“时间片”的方法来解决。其具体步骤为:
· 根据不同的输入/输出外设对时间的要求,分配相应的最大正常的输入/输出的时间。
· 在每一输入/输出的任务模块中,加入相应的超时判断程序。这样当干扰破坏了接口的状态造成CPU误操作后,由于该外设准备好信息长期无效,经一定时间后,系统会从该外设的服务程序中自动返回,保证整个软件的周期性不受影响,从而避免“死锁”情況的发生。
3 数据采集误差的软件对策
根据数据受干扰性质及干扰后结果的不同,采取的软件对策各不相同,沒有固定的模式。对于实时数据采集系统,为了消除传感器通道中的干扰信号,在硬件措施上常采取有源或无源RLC网络,构成模拟滤波器对信号实现频率滤波。同样,运用CPU的运算、控制功能也可以实现频率滤波,完成模拟滤波器类似的功能,这就是数字滤波。随着计算机运算速度的提高,数字滤波在实时数据采集系统中的应用将愈来愈广。在一般数据采集系统中,可以采用一些简单的数值、逻辑运算处理来达到滤波的效果。下面介绍几种常用的方法。
(1) 算术平均值法
对于一点数据连续采样多次,计算其算术平均值,以其平均值作为该点采样结果。这种方法可以减少系统的随机干扰对采集结果的影响。一般3~5次平均即可。
(2) 比较取舍法
当控制系统测量结果的个別数据存在偏差时,为了剔除个別错误数据,可采用比较取舍法,即对每个采样点连续采样几次,根据所采数据的变化规律,确定取舍,从而剔除偏差数据。例如,“采三取二”即对每个采样点连续采样三次,取两次相同的数据为采样结果。
(3) 中值法
根据干扰造成采样数据偏大或偏小的情况,对一个采样点连续采集多个信号,并对这些采样值进行比较,取中值作为该点的采样结果。
(4) 一阶递推数字滤波法
这种方法是利用软件完成RC低通滤波器的算法,实现用软件方法代替硬件RC滤波器。一阶递推数字滤波公式为Yn=QXn+(1-Q)Yn-1,式中Q为数字滤波器时间常数;Xn为第n次采样时的滤波器输入;Yn为第n次采样时的滤波器输出。
4 RAM数据出错的软件对策
在实时控制过程中,干扰造成比较严重的危害之一就是击毀RAM中的数据。由于RAM中保存的是各种原始数据、标志、变量等,如果被破坏,会造成系统出错或无法运行,根据数据被击毀的程度,一般可分为三类:
· 整个RAM数据被击毀;
· RAM中某片数据被击毀;
· 个別数据被击毀。
在工业控制系统中,RAM的大部分內容是为了进行分析、比较而临时存放的,不允许丟失的数据只占极少部分。在这种情况下,除了这些不允许丟失的数据外,其余大部分內容允许短时间被破坏,最多只引起系统的一个很短时间的波动,很快能自动恢复正常。因此,在工控软件中,只要注意对少数不允许丟失的数据保护,一般常用的方法有“校验法” 和“设标法”。这两种方法各有千秋,校验法比较繁琐,但查错的可信度高。设标法简单,但对数据表中个別数据击毀的情况,查错则无能为力。在编程中一般应综合使用,其具体做法为:
· 将RAM工作区重要区域的始端和尾端各设置一个标志码“0”或“1”;
· 对RAM中固定不变的数据表格设置校验字。
在程序的执行过程中,每隔一定的时间通过事先设计的查错程序来检查各标志码是否正常。如果不正常,则利用数据冗余技术通过抗干扰处理程序来进行修正,冗余数据表的一般设计原则是:
· 各数据表应相互远离分散设置,减少冗余数据同时被击毀的概率。
· 数据表应尽可能远离栈区,减少由于操作错误造成堆栈被当成数据击毁的可能。上述对RAM区域的恢复处理方法,在不同的应用系统中应根据具体情況进行取舍。
5 控制状态失常的软件对策
在条件控制系统中,人们关注的问题是能否确保正常的控制状态。如果干扰进入系统,会影响各种控制条件,造成控制输出失误。为了确保系统安全可以采取下述软件抗干扰措施:
(1) 软件冗余
对于条件控制系统,将控制条件的一次采样、处理控制输出改为循环采样、处理控制输出。这种方法具有良好的抗偶然因素干扰作用。
(2) 设置当前输出状态寄存单元
当干扰侵入输出通道造成输出状态破坏时,系统可以及时查寻当前输出状态寄存单元的输出状态信息,及时纠正错误的输出状态。
(3) 设置自检程序
在计算机系统內的特定部位或某些內存单元设状态标志,在运行中不断循环测试,以保证系统中信息存储、传输、运算的高可靠性。