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

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

非实时系统如何实现高于1kHz的定时循环

已解决!
转到解答

没有装实时模块(real-time module),想在labview普通DAQ系统下实现10kHz左右的高频率PID控制。

硬件是pci 6229 DAQ卡,ai最高250kS/s,ao最高833kS/s。也就是说连续状态下的输入输出的采样率是够了。

但问题就是怎样让运行PID算法的定时循环也达到10kHz以上?
即:采集来一个采样点,通过PID算法运算,然后输出一个采样点,完成一个循环,周期控制在0.1ms以内(对应频率10kHz)。经过测试,PID算法运行一次的时间远远少于0.1ms,就是说算法运行频率可以达到10kHz以上,可是定时循环结构不知该怎么设置

windows系统下最高定时精度就是1ms(1kHz),没有装实时模块,无法用1MHz时钟。

可不可以用外部接线的10kHz时钟?该如何设置

谢谢

帖子被Physicist.hz在 03-24-2010 10:46 PM
时编辑过了
0 项奖励
1 条消息(共 7 条)
5,439 次查看

这种情况,软件定时肯定无法满足要求,必须采用硬件定时。

 

有朋友实际测试过,RT系统下,30K左右的循环速度可以保证。

 

使用1采样(硬件定时)采集模式来控制PID循环是比较合适的方式,10K左右应该可以,太高了CPU的开销旧太大了,WINDOWS可能无法稳定的响应。

陈树学
QQ:276509891 .
EMAIL:CSXCS_366@126.COM
qq群:78561268 80754347 37591940
http://labview.weebly.com/
新书《LabVIEW实用工具详解》已经发售,敬请关注。
0 项奖励
2 条消息(共 7 条)
5,377 次查看

 

恩,您说的“使用1采样(硬件定时)采集模式来控制PID循环是比较合适的方式,10K左右应该可以”的这个方式,具体有哪些要设置的?

 

这里我采用了pid toolkit里自带的例程,硬件定时,单点采样。但是rate设为10kHz时是很不稳定的,延时太多且不恒定,只有在rate设为2kHz时才基本稳定。

 

不知您对这个程序有什么修改意见,能否稳到10kHz?或者有什么别的不同的程序架构?

 

 

 

0 项奖励
3 条消息(共 7 条)
5,367 次查看
解答
已被主题作者 Physicist.hz 接受

1采样(硬件定时)就是您用的单点采样,硬件定时方式,这个例程就是典型应用。

 

在高于2K采样率的情况下,如果数据没有来得及读取,提示错误或者警告?

 

试试下面的方法:

1、优先级为实时(最高)

2、首选执行系统为数据采集。

 

3、默认情况下,等待下一个采样时钟采用的是中断的方式,采用中断CPU利用虽然效率很高,但是采样率很低。

 

4、试验一下轮询(polling)方式,轮询方式虽然CPU开销比较大,但是可以实现比较高的采样率,在等待下一个采样时钟相同的函数选板中,有个DAQ实时属性,在等待模式中,选择轮询方式。

陈树学
QQ:276509891 .
EMAIL:CSXCS_366@126.COM
qq群:78561268 80754347 37591940
http://labview.weebly.com/
新书《LabVIEW实用工具详解》已经发售,敬请关注。
4 条消息(共 7 条)
5,357 次查看

既不提示也不出错,毫无影响的一直执行下去,看上去没问题。但是用高精度物理示波器检查波形,才发现有明显延时。

 

非常感谢,我试验一下看,有不懂还将请教您

帖子被Physicist.hz在 03-29-2010 05:20 AM
时编辑过了
0 项奖励
5 条消息(共 7 条)
5,353 次查看

我试验了,10kHz时效果确实明显好多了,波形稳定多了,但是在循环里用精确次数检查还是不时有延时发生,且大约有5%的循环次数是延时的,用示波器基本看不出来,但用于精密控制有这么多延时是不够的,在2kHz时才能保证长期稳定,几乎没有一个延时发生,看来只能用2kHz的频率来控制。

 

非常感谢您,实时效果有了明显改善,不知您是否还有其他高级建议没有?

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

楼主你好,我也在做类似的事情,需要使用硬件定时精度到微秒级,WINDOWS系统只能到毫秒,使用DLL调用WIN32的函数到微秒也不稳定。

不知道楼主试过LINUX系统下LABVIEW不使用实时系统是否能达到微秒级?

0 项奖励
7 条消息(共 7 条)
4,128 次查看