已解决! 转到解答。
恩,您说的“使用1采样(硬件定时)采集模式来控制PID循环是比较合适的方式,10K左右应该可以”的这个方式,具体有哪些要设置的?
这里我采用了pid toolkit里自带的例程,硬件定时,单点采样。但是rate设为10kHz时是很不稳定的,延时太多且不恒定,只有在rate设为2kHz时才基本稳定。
不知您对这个程序有什么修改意见,能否稳到10kHz?或者有什么别的不同的程序架构?
1采样(硬件定时)就是您用的单点采样,硬件定时方式,这个例程就是典型应用。
在高于2K采样率的情况下,如果数据没有来得及读取,提示错误或者警告?
试试下面的方法:
1、优先级为实时(最高)
2、首选执行系统为数据采集。
3、默认情况下,等待下一个采样时钟采用的是中断的方式,采用中断CPU利用虽然效率很高,但是采样率很低。
4、试验一下轮询(polling)方式,轮询方式虽然CPU开销比较大,但是可以实现比较高的采样率,在等待下一个采样时钟相同的函数选板中,有个DAQ实时属性,在等待模式中,选择轮询方式。
既不提示也不出错,毫无影响的一直执行下去,看上去没问题。但是用高精度物理示波器检查波形,才发现有明显延时。
非常感谢,我试验一下看,有不懂还将请教您
我试验了,10kHz时效果确实明显好多了,波形稳定多了,但是在循环里用精确次数检查还是不时有延时发生,且大约有5%的循环次数是延时的,用示波器基本看不出来,但用于精密控制有这么多延时是不够的,在2kHz时才能保证长期稳定,几乎没有一个延时发生,看来只能用2kHz的频率来控制。
非常感谢您,实时效果有了明显改善,不知您是否还有其他高级建议没有?
楼主你好,我也在做类似的事情,需要使用硬件定时精度到微秒级,WINDOWS系统只能到毫秒,使用DLL调用WIN32的函数到微秒也不稳定。
不知道楼主试过LINUX系统下LABVIEW不使用实时系统是否能达到微秒级?