模拟量滤波器(近似于PLC内置滤波器)

已锁定

凌飞翼

  • 帖子

    3395
  • 精华

    26
  • 被关注

    91

论坛等级:奇侠

注册时间:2007-11-11

普通 普通 如何晋级?

模拟量滤波器(近似于PLC内置滤波器)

5486

6

2010-11-08 17:40:01

研究并参照了西门子s7_200内置模拟量滤波的功能
编写出与之类似的、对大幅变化的模拟量也具有快速响应的滤波器。
"样本数"域中,指定用于计算平均值的数值的数目。样本数可以设置为下列数值:2、4、8、16、32、64、128 和 256。样本数多将使结果稳定但响应较慢,样本数少将使结果不稳定但响应较快。
死区定义了当前平均值周围的一个范围(当前平均值 +/- 死区值)。如果新的模拟数值位于该范围之外,则不进行平均计算。而是立即将平均值设置为新的模拟输入值。这样可使滤波器对于大幅改变的模拟输入值也有快速响应。
在系统块编辑器的输入滤波器分支的"模拟"标签的"死区"域中指定死区。可以将死区值设置为 0 来禁用死区。当死区被禁用后,不管输入值的变化有多大,平均值都将如上所述进行计算。要启用死区,可将该域的值设置为 16 - 4080 范围内的数值。

定义子程序符号表
输入 IN WORD
样本数 IN WORD
死区 IN WORD
输出 IN_OUT WORD

Network 1
// 样本限制必须≥2、≤256,死区≤4080
LD SM0.0
LPS
AW< LW2, 2
MOVW 2, LW2
LRD
AW> LW2, 256
MOVW 256, LW2
LRD
AW> LW4, 4080
MOVW 4080, LW4
LPP
AW< LW4, 16
MOVW 0, LW4
Network 2
// 死区区间计算
LD SM0.0
ITD LW6, LD8
ITD LW4, LD12
MOVD LD8, LD16
+D LD12, LD16
MOVD LD8, LD23
-D LD12, LD23
Network 3
// 死区开关赋值
LD SM0.0
LPS
ITD LW0, LD8
LDD> LD8, LD16
OD< LD8, LD23
ALD
= L20.0
LPP
ITD LW0, LD40
Network 4
// 计算输出
// 如果输入超出死区,直接将输入传给输出
// 否则:输出=(前次输出值*(样本数-1)+输入)/样本数
LDW>= LW4, 16
AN L20.0
OW= LW4, 0
LPS
MOVW LW2, LW21
-I 1, LW21
AW>= LW0, LW6
MOVW LW6, LW44
+I 1, LW44
NOT
MOVW LW6, LW44
LPP
MOVW LW44, LW14
MUL LW21, LD12
MOVD LD8, LD16
+D LD12, LD16
ITD LW2, LD12
MOVD LD16, LD40
/D LD12, LD40

Network 5
LD SM0.0
DTI LD40, LW6
模拟量滤波器(近似于PLC内置滤波器) 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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