quote:以下是引用划痕在2012-06-01 20:08:09的发言:
将开关量信号采样n+1次,将前n次采样信号进行分别进行与运算和或运算,可以得到以下3中逻辑结果(已给出滤波算法):
[color=blue][b]与结果=0,滤波输出信号0;
或结果=1,滤波输出信号1;
与结果=0,或结果=1,此时信号处于过度状态,滤波输出保持上一次输出值不变。[/b][/color]
运算完成后将第n+1采样值送入队列中等待下一次运算。
<同样在系统重启后,建议有2n个扫描周期的准备时间,这样也不用区分是常开或常闭点了>
这下应该满足没有定时、也没有计数,只有逻辑运算,达到滤波的功能。
Zane版的要求是“不用计数器,或者说计数方式”
我有个疑问要求教,不用计数方式如何实现划痕大侠的滤波?
不计数如何得知采样的次数,如何让PLC知道已经采样的N次?
不用计数器是可以,可以用个变量来计数。可是不用计数方式,我就没招了。
比较采样值存储区域的第N个值的数据是1或0来判断是否已经采样了N次?好像也不靠谱,就算可以实现也很费事,尤其是如果N值需要变化时(相当于修改滤波时间),还要用间接寻址,程序就有些长了。
如此就违背了Zane版节省系统资源的初衷,还不如上个定时器划算。
P.S.如果只考虑不影响系统资源,可以用带硬件滤波的DI模块(当然这样就不节省money了)。