1
PLC编程实用指南
1.11.3 7.3  PLC输入程序可靠性
7.3 PLC输入程序可靠性

关键词:输入信号出错、防抖动、数字滤波、非法输入防止及报警、输入冗余及出错报警、输入容错及出错报警

虽然PLC有很高的可靠性,但如果输入信号出错,模拟量输入偏差较大,这些都可能使控制出错,造成损失。有人统计,一些自控系统,错误来源几乎90%以上就是它。

1.输入信号出错

输入出错常与输入元器件、接线及信号受干扰有关,如开关或继电器的机械触点接触不良或抖动;变送器不能正常工作或偏差大;传输信号线短路或断路,现场信号无法传送给PLC;现场干扰严重,信号失真等。

2.防输入出错处理方法

防止输入出错,有很多硬件的处理办法,如输入受干扰严重,可采取如下措施:

1)变频器和PLC分别接地;

2)动力线和信号线分开接;

3)把变频器的载波频率设低些;

4)在输入点COM端,接一个0.1mF的电容;

……

但软件怎么做?有防抖动、数字滤波、非法输入防止、输入冗余及输入容错。

(1)防抖动。一般讲,PLC的输入信号都有接通滤波,以防触点抖动。滤波时间常数为8ms,即只有当输入信号作用8ms以上,才算有了输入。这个值一般还可通过对PLC设定做改变。

有时通过设定还满足不了要求,也可用程序进行滤波。办法是用定时器。图7-3即为一例PLC程序。

978-7-111-39745-8-Chapter08-14.jpg

图7-3 输入信号滤波

从图7-3可知,当“输入”(图7-3d为A)ON时,只有超过300ms(图7-3d为PT1时间值),TIM0011、T101或T1才能ON,并自保持。接着,当“输入”(图7-3d为A)OFF时,也只有超过300ms(图7-3d为PT1时间值),TIM0012、T102或T2才能ON,进而才能使TIM0011、T101或T1 OFF。显然,TIM0011、T101或T1常开触点的通断,就相当滤波后的“输入”的通断。这里,接通进行滤波,断开也进行滤波。

提示:不少PLC也可以通过输入特性设定,利用硬件实现滤波,以达到防输入抖动。

(2)防输入脉冲丢失。采集脉冲量应避免丢失脉冲。其办法有:

1)用高速计数功能采集,只要确保高速计数最高工作频率高于脉冲频率,就不会丢失脉冲;

2)用定时中断及脉冲采集子程序采集,只要确保采集时间间隔小于脉冲频率的倒数,就不会丢失脉冲;

3)用外中断(有中断功能的输入点)及脉冲采集子程序采集,也要确保中断响应速度足够高,才不会丢失脉冲。

4)如果脉冲频率不高,如每秒在20次以下,一般的输入点直接进行采集,问题也不大。

(3)数字滤波。若采集的为模拟量,由于多数A/D单元自身有滤波功能,有的还可求平均值,作预处理。故进入PLC CPU的已是排除干扰后的信号。

有的A/D单元求平均数,如欧姆龙的CPM1A_MD002,则可用以滤波,可防干扰,其效果是较明显的。

若A/D单元没有防干扰措施,也可通过程序进行数字滤波,克服干扰。滤波的方法很多,可以求平均值,也可加权平均。此外还有中值法、抑制脉冲算术平均法、一阶惯性滤波法、程序判断滤波法和递推平均滤波法等。

有人总结出经典的数据滤波方法有10种:

1)限幅滤波法(又称程序判断滤波法)。根据经验判断,确定两次采样允许的最大偏差值(设为A)。每次检测到新值时判断:如果本次值与上次值之差小或等于A,则本次值有效;如果本次值与上次值之差大于A,则本次值无效,放弃本次值,用上次值代替本次值。

这种滤波的优点是能有效克服因偶然因素引起的脉冲干扰;缺点是无法抑制那种周期性的干扰,平滑度差。

2)中位值滤波法。连续采样N次(N取奇数),把N次采样值按大小排列,取中间值为本次有效值。

这种滤波的优点是能有效克服因偶然因素引起的波动干扰,对温度、液位的变化缓慢的被测参数有良好的滤波效果;缺点是对流量、速度等快速变化的参数不大好用。

3)算术平均滤波法。连续取N个采样值进行算术平均运算。N值较大时,信号平滑度较高,但灵敏度较低;N值较小时;信号平滑度较低,但灵敏度较高。N值的选择取决于采集对象。一般讲,如采集流量,N=12;采集压力:N=4。

这种滤波的优点是,它有一个平均值,信号在某一数值范围附近上下波动,适用于对一般具有随机干扰的信号的滤波。其缺点是,对于测量速度较慢或要求数据计算速度较快的实时控制不大适用,所占用的内部器件较多。

4)递推平均滤波法(又称滑动平均滤波法)。把连续取N个采样值看成一个队列,队列的长度固定为N。每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据(先进先出原则)。把队列中的N个数据进行算术平均运算,就可获得新的滤波结果。

N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4。

这种滤波的优点是,对周期性干扰有良好的抑制作用,平滑度高,适用于高频振荡的系统。其缺点是灵敏度低,对偶然出现的脉冲性干扰的抑制作用较差,不易消除由于脉冲干扰所引起的采样值偏差,不适用于脉冲干扰比较严重的场合,所占用的内部器件较多。

5)中位值平均滤波法(又称防脉冲干扰平均滤波法)。相当于“中位值滤波法”+“算术平均滤波法”。它连续采样N个数据,去掉一个最大值和一个最小值,然后计算N-2个数据的算术平均值。N值的选取为3~14。

这种滤波融合了以上两种滤波法的优点,对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差。其缺点是测量速度较慢,和算术平均滤波法一样,所占用的内部器件较多。

6)限幅平均滤波法。相当于“限幅滤波法”+“递推平均滤波法”。它每次采样到的新数据先进行限幅处理,再送入队列进行递推平均滤波处理。

这种滤波的优点是融合了以上两种滤波法的优点,对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差。其缺点是所占用的内部器件较多。

7)一阶滞后滤波法。取a=0~1,本次滤波结果=(1-a)∗本次采样值+a∗上次滤波结果。

这种滤波的优点是,对周期性干扰具有良好的抑制作用,适用于波动频率较高的场合。其缺点是,相位滞后,灵敏度低(滞后程度取决于a值大小),不能消除滤波频率高于采样频率的1/2的干扰信号。

8)加权递推平均滤波法。是对递推平均滤波法的改进,即不同时刻的数据加以不同的“权”,通常是越接近当前时刻的数据,这个“权”取得越大。给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低。

这种滤波适用于有较大纯滞后时间常数的对象和采样周期较短的系统。但对于纯滞后时间常数较小,采样周期较长,变化缓慢的信号,不能迅速反应系统当前所受干扰的严重程度,滤波效果差。

9)消除抖动滤波法。设置一个滤波计数器,将每次采样值与当前有效值比较:如果采样值等于当前有效值,则计数器清零;如果采样值不等于当前有效值,则计数器加1,并判断计数器是否大、等于上限N(溢出)。如果计数器溢出,则将本次值替换当前有效值,并使计数器清零。

这种滤波对于变化缓慢的被测参数有较好的效果,可避免在临界值附近控制器的反复开/关跳动或显示器上数值抖动。但它不宜用于采集快速变化的参数。而且如果在计数器溢出的那一次采样到的值恰好是干扰值,则会将干扰值当作有效值导入系统。

10)限幅消除抖动滤波法。相当于“限幅滤波法”+“消抖滤波法”。它先限幅,后消除抖动。

这种滤波具有“限幅”和“消除抖动”的优点。改进了“消除抖动滤波法”中的某些缺陷,可避免将干扰值导入系统。但它不宜用于采集快速变化的参数。

提示:还可能设计更多的软件滤波方法,但最有效的滤波还在硬件。在硬件上,采取有效的防干扰措施才是可靠的滤波,软件滤波只是硬件防干扰措施的补充。

图7-4所示为和利时LM机的一种递推平均滤波法程序。它为连续采集5次数,然后再对这5个数做平均,并以其值作为采集数。这5个数通过5个周期(长度可选定,该图中程序周期为100ms)进行采集。以下为它的变量声明:

978-7-111-39745-8-Chapter08-15.jpg

图7-4中节1用以生成100ms脉冲信号。节2进行数组a的下标j计算,存储模拟量%IW2,计算平均值,并把结果赋值给aW。

可知执行此程序,模拟量输入值先依次存入数组的各个单元,然后对数组的各个单元值求和,最后此和再被5除,并赋值给aW。显然这个aW就是滤波后的输入值。

978-7-111-39745-8-Chapter08-16.jpg

图7-4 递推平均滤波法程序

图7-5所示为欧姆龙等3种PLC程序。它为连续采集5次数,但剔除其中最高及最低两个数,然后再对其余的3个数做平均,并以其值作为采集数。这5个数通过5个周期(长度可选定,该图程序周期为1s)进行采集。

图7-5a、b、c有4个部分:

①用移位指令,产生自200.00~200.04、M0.0~M0.4或M0~M4轮流为ON的控制位;

②用200.00~200.04、M0.0~M0.4或M0~M4把A/D有关通道的内容(图为100通道或“采集数据”),分别存入D100~D104、VW0~VW8或D10~D14中。

③在200.04、M0.4或M4 ON时,进行一系列比较(图未详细列出具体指令),把D100~D104、VW0~VW8或D10~D14中的最大及最小数剔除,中间数存于D110~D112、VW110~VW114或D20~D22中。

978-7-111-39745-8-Chapter08-17.jpg

图7-5 滤波程序又例

④对D110~D112、VW10~VW14或D20~D22中的数求和并除以3,其结果存于D115、VD120或D26中。这里的D115(余数存于D115)、VW122(余数存于VW120)或D26(余数存于D27)即为滤波后的值。也可不用除3,直接用这个和,只是要清楚,这个数是被采集数的3倍。

(4)非法输入防止。利用信号之间关系来判断信号是否非法。如左右两个行程开关,绝对不可能两者同时处于ON状态。出现那样状态,即为非法输入,应报警,并禁止其起作用。再如进行液位控制,由于储罐的尺寸是已知的,进液或出液的阀门开度和压力是已知的,在一定时间里罐内液体变化高度大约在什么范围可预测的。如果液位计送给PLC的数据和估算液位的高度相差较大,判断可能液位计出错。对这个错误输入应报警,并予以拒绝。

又如各储罐有上下液位极限开关保护。如开关动作,可先判断这个信号是否正确?可将这信号和该罐液位计信号对比,如果液位计读数也在极限位置,说明该信号是正确的;如果液位计读数不在极限位置,则可能是液位极限开关错误或液位计读数错误。对此,也应报警,并应予拒绝。

再就是误操作避免的设计,如电动机正传、反转两个按钮,如同时按下,就是误操作。这时,应通过输入互锁使PLC对此不做任何反应。

也可使用连锁实现误操作避免,如当出现某种情况时,使有的输入被禁止(连锁),以防止非法输入,确保系统安全。

(5)输入冗余与出错检测。传感器有检测逻辑量与模拟量两种。对传感器监控,办法是冗余,用两个传感器。同时从它读信号,然后做比较。看其是否不一致。如不一致超过允许时间,即说明其中之一必有错误。图7-6所示即为输入冗余及出错报警逻辑的PLC程序。

978-7-111-39745-8-Chapter08-18.jpg

图7-6 输入出错报警

图7-6中,F1、F2为两个输入开关,用以检测同一对象。正常情况下,其结果应是相同的。所以,T002、T102或T3不会工作。若一个出现错误,则T002、T102或T3工作,当时间超过设定值(此次定为10s),则报警(如使用FAS指令代替FAL,则停机,下同)、或使PLC停机(三菱PLC特殊继电器M8037 ON,将强迫PLC停机),并记录出错号码1234、或在VW0或D01中写入1。

模拟量传感器的监控大致也相同。它靠对两个测量值进行比较。视其偏差是否在允许的范围内。若超过允许范围,再看是否处于允许的时间之内。只有超过允许误差范围,而又超过允许的超差时间,才视为出了错误。

(6)输入容错。对重要的输入,必要时也可作3选1配置,一旦一个出错,一方面报警,另一方面,可按三选二的原则,继续工作。当然,这么做代价是较高的。