[西门子] 几行代码搞定模拟量滤波程序

[复制链接]
查看225 | 回复0 | 2024-6-18 11:28:49 | 显示全部楼层 |阅读模式
导读:在实际的现场中,我们会采集外部模拟量数据用于显示或者控制某个设备,但是由于现场的工业环境可能会导致模拟量数据不稳定,这样我们就需要写模拟量滤波程序来使模拟量的数据更加稳定。

中位值滤波算法:是一种典型的非线性滤波器,它通过连续采集N个周期(N取奇数)的数据,去掉最大值和最小值后,取剩余数据的中位值作为滤波后的结果。这种算法运算简单,能有效滤除脉冲噪声,同时保护信号的细节信息,特别适用于会偶然出现异常值的系统。中位值滤波算法的优势在于能够过滤因偶然因素引起的波动干扰,对温度、液位等变化缓慢的被测参数有良好的滤波效果。然而,它也存在一些缺点,如反应速度慢、滞后,对流量、速度等快速变化的数据不宜使用该方法

中位值滤波算法的实现过程包括以下几个步骤:

1.连续采集N个周期的数据。

2.去掉N个周期数据中的最大值和最小值。

3.取剩下的数据的中位值作为滤波后的结果

一、程序设计

1.新建FB块,定义好接口变量



2.判断初始化触点是否接通,当接通了之后把采集的次数数据清零,同时也把采集数据的总和清零。

第10行至15行程序是将采集的数据存储到数组中,每次采集一个数据,依次放到数组的元素中。



3.程序行17至30是冒泡排序法(不清楚冒泡排序法的可以看之前的文章),将数据从小到大排列



4.程序行32至42是先将数据累加,然后减掉最小和最大值,求得平均值输出





写在最后:如果文章对您有所帮助,那帮忙点个“赞”和“在看”呗!!!

写在最后:如果文章对您有所帮助,那帮忙点个“赞”和“在看”呗!!!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则