From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

采集数据频率为1K,如何能每1分钟保存一次单点采样值?

已解决!
转到解答

因为采集的数据外界有干扰,跳动比较厉害,所以用了滤波让它看起来平滑一点,采集频率设为1K。

但是数据库内不需要保存那么多数据,1分钟保存一次当时滤波后的值就可以了。保存的数据库为mssql。

 

现在的问题是我不知道怎么处理:

如果设计成如图所示,会弹出错误,意思好像是数据过多,送不进去。

如果在采样的数据前加入“重采样”或者“平均值”等降低采样率,就提示“尝试读取的采样已不存在。请求的采样之前可用,但现已被覆盖。”。数据库进入的数据是空的。

 



 

0 项奖励
1 条消息(共 5 条)
6,978 次查看

每分钟是 60 秒, 每秒是 1000 毫秒 => 60,000

 

George Zou
0 项奖励
2 条消息(共 5 条)
6,962 次查看

您是说采样率和保存速度不匹配吧。

我又研究了下我的程序,发现我出错的原因是因为我没有弄清楚采集到的数据和SQL控件输入控件的数据是什么类型——“一个是数组,另外一个需要的是浮点值”

我重新修改了程序,将采集的数据送入数组,然后随便取一个出来再保存就可以了。

 

现在又出现了新的问题,提示“尝试读取的采样已不存在。请求的采样之前可用,但现已被覆盖。”

我知道错误的原因是,我设置的保存时间是每分钟一个,而实际采样是每秒1000个数据,经过压缩处理后,每分钟产生的数据量>实际读取的数据量。

 

我现在的新问题是“我希望能保存最后读取的数据,丢失的数据就丢失了好了。”这个怎么弄?

0 项奖励
3 条消息(共 5 条)
6,933 次查看
解答
已被主题作者 aquayhy 接受

终于解决了,解决方案是建立两个循环,一个是用于界面实时显示的,每秒在界面上更新一次数据。另外一个循环1分钟执行一次插入数据库操作。

数据同步是采用了一个长度为1的队列,进行有损插入,就是插一个就会丢一个。

我弄了好久,总是错,原因是我把实时显示那个循环里面的时间直接连接到执行插入数据库的循环中,总是提示队列失效。

我对labview不熟悉,以前都是用C的,逻辑思维方式完全不一样。

0 项奖励
4 条消息(共 5 条)
6,918 次查看

您好,我现在数据采集过程中也需要每隔10分钟存一次,利用tdms文件存储,请问应该怎么实现啊?

0 项奖励
5 条消息(共 5 条)
6,338 次查看