对于LabVIEW中用于定时的两个最常用的vi就是Waitmsvi以及Wait.doc

对于LabVIEW中用于定时的两个最常用的vi就是Waitmsvi以及Wait.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LabVIEW关于定时的研究 对于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。 ? 二.Wait Until Next ms Multiple ?????? ???????要比较好的解释这个vi,需要知道系统(至少Windows里有)中有一个millisecond timer这样一个计时器,这个vi跟这个计时器有着千丝万缕的关系。 ???????简单来说,这个vi将一直等到ms timer得到输入值的整数倍才结束,通过下面的example,将会更好的理解(Wait Until Demo 1.vi)。程序中,首先输入50ms给Wait Until,计算第一次Wait Until花的时间,再输入50ms,同样地计算出第二次Wait Until花的时间。 ? ? ???????运行完程序后,得到大致下面的结果: ?????? ????????每次运行的结果都不相同,但是可以看到,第一次Wait Until所花的时间总不是50ms,而第二次花的时间肯定是50ms,并且Timer Value两次一般都是50ms的倍数;出现这样的情况是这样来解释:首先,在程序运行的时候,系统的Timer值并不会正好是50的倍数,假设那么程序在运行了15ms后Timer达50的倍数)从而结束第一个Wait Until;在之后又进入第二个Wait Until,在达到后一

您可能关注的文档

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档