AB Logix如何实现数字滤波功能

当使用低成本I/O模块,如1794(FLEX)或1734(点),模块配置内不可能进行低滤波。如果您的信号是来自嘈杂过程中的“干扰”信号且它影响着控制,您可能希望创建一个数字过滤器。

解决方案

在代码中创建一个数字滤波器算法,我们首先需要一个基于中断和标准数字滤波公式的例行程序(它必须可在非常具体时间内重复,且不取决于变量扫描时间): Y=(x(n)+Y(N-1))/((2n)-1) 

*其中n是一个恒量,x是实时信号反馈(即 模拟数据),y是过滤结果。

如果您在一个系统(其中x总是非零数)中实施此,你会发现y将上升并最终等于x,但伴有减弱的高频率振荡。 n的数量越小,衰减的频率更高、更具体。 将这个的数量变大(即 1000,或1秒)将创建一个低传递过滤迟缓反应)。

例如:

本地:3:I.Ch0Data上的一个模拟信号,并带有大量高频率噪音。 在ControlLogix/FlexLogix/CompactLogix在100ms上创建一个周期性任务设置和一个被称为FilteredSignal的过滤信号新标签。

然后我使用CPT指令进行代码梯级:

 
这将对模拟信号进行过滤并将处理过的结果放置在FilteredSignal中,即我将在程序中使用的标签以替代本地:3:I.Ch0数据。 (可选)的恒量“1000”、“999”和“1999”可用于在上面的示例可以用三个整数标签代替,以使第一个为用户进入变量,第二个始终为通过减去第一个进行计算,最后一个是前两个总和。 这种方式获取的过滤值可以通过编程方式更改,或通过HMI。

然后可通过改变除数来更改过滤器响应,较大的数字产生较慢的响应。