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

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

怎样获得比较准确的 保存时间间隔

问一个程序性能方面的问题

选择通道保存,  保存设定一个大的周期, 每个周期中间只有一个小段在记录数据,   而两个记录数据点之间还有一个时间间隔,

现在保存采用了一个状态机来实现,  用事件结构控制到底保存那些通道, 记录数据的时间间隔等等,


我的问题,现在的定时不大准确, 我想要实现最低100ms的比较精确的定时,但是, 如果把保存状态机中间的延时去掉,CPU占用率会很高,将两个都改为5ms延时的话,我得到的结构也是相对的很不精确,  还有一个就是说,计算出来要保存10个数据的话,有时只有9条数据,

我知道condense array这个vi调用时候占用资源比较大,但是不知道怎么修改,请教下各位吧,

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

能简化一下您的问题并解释一下您附件中的VI的关系吗?

Regards
0 项奖励
2 条消息(共 5 条)
4,780 次查看
是这样,在 state simulation.vi中选择要保存的数据通道,按下Log setting,开始保存,保存执行是在Time sequence eee.vi这个vi中实现的,     保存的方式是 选定一段时间(Time between logs group), 比如1分钟,在这1分钟之间,只保存前4秒(Log time)的数据点,而这前4秒之间的记录间隔设定为0.1秒Time between two log points.0.
,   

 

我的问题是这样记录下来的时间间隔不准, 我最低要求实现比较准确的100ms的时间间隔,文件格式请见附件

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

首先建议你先将程序结构进行优化和调整,个人觉得现在的程序结构并不是很好,另外,Time sequence eee.vi中状态机的移位寄存器也没有初始化(可能是您所需的?)

 

关于精确定时,您需要在循环结构中放置“等待.vi”来实现,一方面运行CPU有时间“休息”,降低CPU使用率;另一方面,也能实现ms精度的定时

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

你说的等待.vi是不是就是 延时函数?    这个我上面说过了,就是如果把保存状态机中间的延时去掉,CPU占用率会很高,将两个都改为5ms延时的话,我得到的结果也是相对的很不精确,

至于移位寄存器初始化,这个在我这里不能初始化,不然状态基本上就切换不了了。

 

至于你说的程序结构问题,我承认是不好,但是具体怎么改,也不大清楚;

 

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