liaohp
级别: 略有小成
精华主题: 0
发帖数量: 113 个
工控威望: 202 点
下载积分: 612 分
在线时间: 113(小时)
注册时间: 2011-09-28
最后登录: 2024-10-31
查看liaohp的 主题 / 回贴
楼主  发表于: 2021-10-19 22:20
描述:主程序
图片:
描述:子程序
图片:
应用背景:采集到的模拟量 总是变化很大,我想做一个相当于滤波的程序,原理就是把 数据data_in  累加比如1000次,然后 再求平均值,但是我怀疑在  for next循环 执行过程中,外部的数据改变了,可能不会对for next内部 生效,又或者 基于PLC的原理,会不会在执行for next内部程序的时候,根本就不会去 处理 for next外部的其他程序。所以想请教各位。
枫落云端
施主,脚抬一下
级别: 略有小成

精华主题: 0
发帖数量: 341 个
工控威望: 465 点
下载积分: 1548 分
在线时间: 416(小时)
注册时间: 2017-10-10
最后登录: 2025-04-04
查看枫落云端的 主题 / 回贴
1楼  发表于: 2021-10-20 11:45
一般PLC的扫描周期在10ms内吧(不排除步数大的程序超过10ms,毕竟少数,就先不讨论),你能确定10ms内模拟量波动值非常大?还是说模拟量模块的采集周期比PLC的10ms扫描周期小得多,按1000份算,至少0.01ms也就是10μs的采样频率,模拟量模块有这么快的速度吗?就算有这么快,模拟量到PLC是否也能这个快给你接收1000份采样值。
如果以上都没有,那么10ms内累计的这个采样值的就会都是一个数值,你再怎么累计1000份再平均都是没有用的。
枫落云端
施主,脚抬一下
级别: 略有小成

精华主题: 0
发帖数量: 341 个
工控威望: 465 点
下载积分: 1548 分
在线时间: 416(小时)
注册时间: 2017-10-10
最后登录: 2025-04-04
查看枫落云端的 主题 / 回贴
2楼  发表于: 2021-10-22 12:46
其实我想说你的程序里算法已经有问题了,程序里逻辑就是一个PLC扫描周期里用FOR循环采集N次,再平均。
跟你实际需求的长时间多次采集求平均已经不同了。