回复:关于如何实现s7-300滤波功能

n次看你的背影

  • 帖子

    2321
  • 精华

    73
  • 被关注

    53

论坛等级:奇侠

注册时间:2008-03-11

普通 普通 如何晋级?

发布于 2009-01-17 22:46:59

0楼

在上面看到很多热爱PLC人们对虑波发表了很好的看法,也使我学习了不少。我个人认为,硬件虑波是根本,数字虑波不得已而为之!但数字虑波也有其本身独特的魅力!!是硬件虑波之外的一个补充。

quote:以下是引用yhgcqzd在2008-12-31 07:49:58的发言:
采用RC滤波(一阶惯性滤波)
Out=A×in+(1-A)×in_1
A:滤波系数,取值0-1,1表示不滤波。
in_1:前一个周期的in值。


yhgcqzd同志提供了经典RC虑波电路的数学模型。作为补充,在下用STL语言将其数学模型表达出来,写成一个FC(能n次调用),适用于S7-300、S7-400 PLC。我将代码提供给大家参考、分享;我希望我能对大家有一点帮助。
我将数学模型变换为: Out=A×(in-in_1)+in_1
我以前程序的数学模型为:XA=FAC×(XE-AUX)+AUX

STL语言的FC变量声明如下:
IN Name Data Tpye Comment
-------XE Real 数字虑波器的输入(工程量值)
-------FAC Real 虑波系数(范围0.0~100.0)
-------INIT Bool 程序初始化位,获取前一个周期的输入值

OUT
-------XA Real 数字虑波器的输出值
-------AUX Real 前一个周期的输入值

程序代码如下:
L #XE // read XE input
T LD 32
//;
AN #INIT // initialized Filter-FC
JC POS1
POS2: L #XE // load input value to output value
T #XA
L LD 32
T #AUX
JU ENDE
//;
POS1: L LD 32
L #AUX
==R // not used if
BEC // XE=XA
L #FAC
L 0.000000e+000 // XE=XA if FAC%<0
JC POS2
L #FAC
L 1.000000e+002 // FAC%>100
>R
JC POS2
//;
L LD 32 // (XE-AUX)=B
L #AUX
-R
T LD 04
L #FAC
T LD 12
//;
L LD 12
L LD 04
*R
T LD 16 // B*FAC%
//;
L LD 16
L 1.000000e+002
/R
T LD 20
L #AUX // B*FAC%/100
L LD 20 // AUX+(B*FAC%/100)=XAnew
+R
T #AUX
//; // AUXnew=XAnew
L #AUX
T #XA
ENDE: NOP 0
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54615条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。