原创 如何精确定时存储

2011-6-14 17:56 2151 9 9 分类: 测试测量
 

最近在做了一个程序,是实现采集之后把数据保存下来,我把采集和保存放在一个循环里面,循环时间最慢是0.2-0.3秒,包括数据采集和运动控制的时间,采集没有定时,是按照最快速度采集,然后想定时保存,用的是elapsed time函数,到了设定的时间就把它保存下来,但是保存的时间不准确,比如我设定的保存时间是1秒,有可能1.1或1.2秒才会保存一次。我想是因为循环的时间太长所致,比如循环时间是0.3秒,设定保存时间是1秒,就要到1.2秒的时候才能保存一次。我想过用队列输入输出的办法来实现较精确定时,把采集和控制放在队列输入的循环里面,把保存单独用一个定时循环,作为队列输出,但效果还是不行,因为这样一来采集的时间就会变慢,和设定的保存一样了。请问各位老师,有什么办法能实现比较精确的定时吗?或者数据采集循环时间太长就没有办法了呢?

 

问题内容较多,实质上就是采集循环与存储循环交换数据的问题,采用队列肯定是可以的,所谓速度变慢的问题,肯定是队列的用法存在问题。

 

使用队列解决上述问题是队列的非常规用法,是把队列当作数据缓冲区来用,而不是常规的同步。恰恰相反,为保证存储循环每秒存储一次,是不能采用同步方式的,因为采集和存储要求就是不同步的。

 

这种情况下,不能采用出队列函数,而应该采用清空队列函数。

 

 

 

 

如果使用数据缓冲区,也可以实现相同效果,LV的例子程序中提供了类似的例子。





zoom.gif

下面的循环稍加修改就可以作为存储逊循环

文章评论0条评论)

登录后参与讨论
我要评论
0
9
关闭 站长推荐上一条 /2 下一条