加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSSRSS-巴斯仪表网
您当前的位置:首页 > 电子发烧 > 技术文章

LabVIEW关于定时的研究

时间:2012-11-03  来源:123485.com  作者:9stone

    对于LabVIEW中用于定时的两个最常用的vi就是Wait (ms).vi 以及 Wait Until Next ms Multiple,本文将用实际例子来讲述这两个vi的区别。不想看后面的详细讨论的可以只看下面几个结论即可: 

  1. 如果想实现定周期While循环时,需要用Wait(ms).vi而不是Wait Until Next ms Multiple.vi
  2. Wait(ms).vi在与代码并行时可以保证整个运行时间为设定值,这个功能一般都会以为是Wait Until Next ms Multiple.vi的特性
  3. Wait Until Next ms Multiple.vi 并非想象中那么好用,它会造成不少的问题,至少第一次的运行时间无法保证为设定值。
  4. 在代码执行时间没超过设定值时,两者可以通过编程实现大致相同的功能,但是当代码执行时间很大时,两者的处理方法是截然不同的。

一.Wait (ms)
 
   对于Wait (ms) 这个vi来说需要分两部分来讨论,即它是被顺序地放入代码中还是并行地放入代码中,这两种方式的不同将导致它起的作用完全不同。
 (1)顺序模式
   看一下附带程序中的Wait Sequence Demo 1.vi ,在一个While循环中,首先用Time Delay.vi延时0.05s,然后顺序地使用Wait (ms).vi,设为20ms。
 
   最后运行后的结果如下图,循环的周期在70ms左右。
 
   从结果中可以得知,在顺序模式中,Wait (ms).vi是实打实地延时了所设定的时间,如果其他顺序中的代码耗了时间后,那整个循环的时间就是代码时间+延时的时间。即使在此例中将Time Delay换成一些其他消耗一定时间的code后结果也是一样。

 (2)并行模式
  当在并行模式时,在不是跑Real-Time时,Wait (ms)这个vi竟然是能保证整个循环周期是所设定的值,我们看下面的例子(Wait Parallel Demo 1.vi),程序如下:
 
    循环中有n多Wait(ms).vi,运行后的结果是循环周期是20ms,因此可以初步得出结论,对于Wait(ms).vi与其他代码并行时,它会保证整个部分的运行时间是所设定的值(millisecondes to wait)。
 
    如果还不很确定的话可以看下面一个例子(Wait Parallel Demo 2.vi):整个程序的循环中有一个Code.vi这样一个小vi,它的作用就是运行一堆代码从而占据一段时间(可调)。Results中有两条曲线,白线表示的是代码的运行时间,红线表示的是整个循环的运行时间。 
 
    运行后,我们将Loop Num设小一点,比如5,以保证代码的执行时间小于20ms,得到下面的结果曲线,可以看到,当代码时间不大于设定时间值时,整个循环周期保证为设定值。
 
    我们再将Loop Num增大,使代码执行时间大于20ms,从而得到下面的结果曲线,即循环周期跟着代码的时间走了。
 
    那么我们大致知道了Wait(ms).vi在并行时的特性了,那么在下面的框图中可以很明显地推断出循环周期是50ms。
 
 

分享到:
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
栏目导航->技术文章
  • 电子应用基础
  • 电源技术
  • 无线传输技术
  • 信号处理
  • PCB设计
  • EDA技术
  • 单片机学习
  • 电子工具设备
  • 技术文章
  • 精彩拆解欣赏
  • 推荐资讯
    使用普通运放的仪表放大器
    使用普通运放的仪表放
    3V与5V混合系统中逻辑器接口问题
    3V与5V混合系统中逻辑
    数字PID控制及其改进算法的应用
    数字PID控制及其改进
    恶劣环境下的高性价比AD信号处理数据采集系统
    恶劣环境下的高性价比
    栏目更新
    栏目热门