是这样,我对PLC200不是很熟悉,现在需要一个滤波程序。
大致想法是用平均值的方法,比如,采样10个周期,取这10个周期的采样平均值,再输出到某个地址,供程序调用。
最好能封装成一个子函数的形式,方便。。
谢谢大侠们。。
最佳答案
程序转载:
主程序:
LD SM0.1
CALL SBR_0
LD SM0.0
CALL SBR_1
子程序SBR_0
//定于采样次数(次数×采样时间=平均值输出时间)
LD SM0.0
MOVW +10, VW0
//采样值存储器清零
LD SM0.0
FILL +0, VW2, 11
//这些都是对应的地址清零
LD SM0.0
MOVD +0, VD200
MOVD +0, VD204
MOVD +0, VD208
MOVD +0, VD212
MOVD +0, VD216
MOVD +0, VD308
MOVD +0, VD224
子程序SBR_1
//调出模拟信号
LD SM0.0
MOVW AIW0, VW200
//定义采样时间
LD SM0.0
AN T37
TON T37, 1
//将模拟量值存入表格
LD T37
ATT VW200, VW0
//将值转化为实数
LD SM0.0
ITD VW200, VD204
DTR VD204, VD208
MOVW VW2, VW300
//求采样和
LD T37
+R VD208, VD212
//采样次数到,求平均值,采样和减去采样第一次值
LDW> VW300, +9
ITD VW300, VD216
DTR VD216, VD220
MOVR VD212, VD224
/R VD220, VD224
FIFO VW0, VW306
ITD VW306, VD308
DTR VD308, VD312
-R VD312, VD212
//转换为整数输出
LD SM0.0
ROUND VD224, VD228
DTI VD228, VW232
仅供参考学习。
提问者对于答案的评价:
本程序完全符合我的想法。。
多谢多谢。。
不过用上系统自带的滤波功能,效果也不错的。。
最佳答案作者回复:
这个就是所谓条条大路通罗马,思路有多种,目的只有一个。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc209119.html