微波EDA网,见证研发工程师的成长! 2025年02月21日 星期五
首页 > 研发问答 > 测试测量 > Labview > LabVIEW中的延時

LabVIEW中的延時

时间:10-02 整理:3721RD 点击:
請教大家一個問題,在一個程序框圖中:假如在一個While循環中,程序執行的時間需要100ms,且我在該while循環中加了一個500ms的延時程序,那么程序執行一次while循環用的時間是500ms還是600ms呢?多謝指教。那如果我加的延時不是500ms,而是50ms,那執行一次循環所用的時間是100ms還是150ms呢?為什麽?多謝指教

延时时间是指程序完成一次后才执行延时,那么程序執行一次while循環用的時間是100ms  加500ms延时 显示到结果输出是:程序开始执行到输出显示结果是600ms

循环延时是指从上一次循环开始到下一次循环开始之间所用的时间,所以你设的500ms,在一次循环里执行完你的程序100ms后,剩余的400ms变为等待,直到下一次循环开始;若设的50ms,程序执行100ms,运行一个循环时间以50ms计,但CPU利用率会变高,你可以打开任务管理器自己试一下。

这就是等待和等待到下一个整倍数毫秒数的区别:
1. 等待:如果连入vi的输入为10ms,如果循环运行时间是3ms,那么每次循环时间是10ms;如果循环运行时间是14ms(大于10ms),那么每次循环的时间是14ms。
2.等待到下一个整数倍毫秒:比如设定1000ms,对于第一次运行,无论当前时间是50ms还是850ms,都将在下一次1000ms的整数倍时间第二次运行该代码,那么实际间隔的时间分别为950ms和150ms

和樓下有衝突,剛好相反

和樓上有衝突,我該信誰啊?

个人认为答案是500ms和100ms。延时有什么特殊的的么,不就是多线程?将多个线程框起来,结果当然是运行时间较长的。再加一个线程-时间函数中的已经运行时间,就可以知道一个循环的时间了

你拿一个“已用时间”模块试试就知道了

多謝指教!那么如果我將時間分成多片,假如吧:我將1 Sec分成3份,然後在每個時間片裡面執行不同程序,如1sec中前0.5S采集數據,再0.2S數據處理,后0.3S控制儀器。由於較難確定執行程序需用多少時間,故也較難確定延時多少時間?那么我要實現上述功能,該如何做呢?多謝您的指教!

在每个程序中都加一个“已用时间”,不加延时,看每个程序运行需要多少时间 然后再处理。

謝謝!多謝指教了!

这种思想 采集,太不好了

你这样实验了吗?cup占用率会不会很高。

請多指教!

小编这问题我也非常困惑,我自己单步执行了一下,感觉延时应该是指第一次循环结束至下一次循环开始中间等待的时间,3楼纯属误认子弟

问题得到解决了吗?

请不要在自己没有亲自验证过的情况下下结论,这是我测试的结果

加等待50ms


加载中...

加等待100ms


加载中...

加等待200ms


加载中...

未加等待


加载中...

labview程序是靠数据流运行的,但未连线的程序是并行运行,所以循环内的代码和延时VI是同时开始运行,所有线程运行结束,才是一个while循环,所以循环时间由并行任务中最长的时间决定。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top