最近在做了一个程序,是实现采集之后把数据保存下来,我把采集和保存放在一个循环里面,循环时间最慢是0.2-0.3秒,包括数据采集和运动控制的时间,采集没有定时,是按照最快速度采集,然后想定时保存,用的是elapsed time函数,到了设定的时间就把它保存下来,但是保存的时间不准确,比如我设定的保存时间是1秒,有可能1.1或1.2秒才会保存一次。我想是因为循环的时间太长所致,比如循环时间是0.3秒,设定保存时间是1秒,就要到1.2秒的时候才能保存一次。我想过用队列输入输出的办法来实现较精确定时,把采集和控制放在队列输入的循环里面,把保存单独用一个定时循环,作为队列输出,但效果还是不行,因为这样一来采集的时间就会变慢,和设定的保存一样了。请问各位老师,有什么办法能实现比较精确的定时吗?或者数据采集循环时间太长就没有办法了呢?
已解决! 转到解答。
使用两个独立的循环,采集循环和存储循环是完全可以的,关键是两个循环如何传递数据的问题。
1、使用队列肯定可以,但是不能使用出对列函数,应该在时间到时刷新队列,一次取出所有数据。
2、使用Function Global建立数据缓冲区,采集循环写入缓冲区,时间到后,存储循环取出所有数据。