如何控制迴圈執行時間

我想要設計一個能夠每隔一段時間,就記錄一段時間

打個比方,我想要每隔10秒就記錄10秒然後再隔10秒再記錄10秒,如此下去

此時如果我輸入一個頻率為0.05Hz的方波,那我經過這個就會變成一個DC值

 

以上只是舉例

 

目前我的想法是用兩個While loop,一個包著另一個

在小個外面(大的裡面)放一個Time Delay(設定10秒)

可是小的While loop裡面我就不知道該如設計讓它迴圈能夠執行10秒

不知道有沒有元件或方法能夠控制讓迴圈執行10秒

![](upload://tbctIt1UAWJFYoPwXKv0uVvjJvC.jpeg)

http://stdb.org/course/info.asp?TID=7998&FID=205

您可以參考這篇,它的用途是一定會讓迴圈執行到這個時間,不管裡面程式執行完了!就停止。

不過您的想法有點奇怪,外面的While loop為10ms,裡面也要10ms。

會打架吧!要用sequence的概念吧!

我不知道這元件我是使用上有問題還是這元件不符合我的需求

我這元件使用上是輸入1000,然後便成每秒輸出一個隨機數

並非一直產生值至10秒停止

![](upload://cWphkMfPu5GnKqFZghrVGp64usk.jpeg)

試試看這個

把你要做的事情放在Case 裡面

紀錄次數就是你的工作時間

總次數就是你整個回圈的時間(工作+休息)

以您提出的需求為例

如果sampling time = 1 sec

那紀錄次數 =10

總次數=20

這樣就會有紀錄10秒,休息10秒 再記錄10秒的功能

 

![](upload://pmzuXB69UamwnrdrOjk9o7MK39V.jpeg)

我終於搞懂意思了!

你可以試試看

![](upload://ctTc216NijI8z5aFczmCrpWKdHG.jpeg)

外面產生一個時間,記錄剛開始的時間,然後跑到裡面迴圈。

接下來裡面迴圈一直跑,跑到相減為10000ms則停止。

就可以達到你要的跑到10s的時候回圈停止

To:knightsoul

我按照你的方式去做,可是似乎有問題

以下是我接的圖

![](upload://AtR9m6NNQ9Rvoovk8hbypbyb1b8.jpeg)

我這樣接後,他會一直產生隨機數,不會停下來(我Time Delay設定10秒)

而且Tick Count (ms)好像不會自動reset歸零,這樣的話這程式會變成只有第一次會只執行10秒(如果可以如預期執行的話),之後都"瞬間"就又跳到外迴圈了

說的好複雜XD,你先把你外面那個淡藍色vi拿掉,單純執行我的看看

 

解釋一下我的程式,他就是裡面的迴圈用來產生資料,10s一直產生。

十秒一到,裡面的迴圈就會停止,然後執行外面的迴圈!

但是外面的迴圈,設定為一直執行,所以他就是每10s產生資料,一直循環下去。

但是你加的vi也是此功能,不過他吃資源比較大。(我曾經用亂數產生幾次來做判斷)

所以如果兩個放在一起會打架

你說的那個方法我在去試試看,但是我先問你一下其他的東西

就是Timed loop使用方法

沒用過Time loop,不過我們可以研究一下

今天晚上來研究一下好了

抱歉,晚回了

![](upload://oPhI6mQG3pPKmBBhBTRSFTBYLBR.jpeg)

這是我寫的測試程式,在period的地方,應該就是控制迴圈的時間。所以寫了此程式觀察。

![](upload://x13NmC26C4rCk3AAdnLKRRg5yAC.jpeg)

結果如上圖,

基本上 1   2.002

         2   4.002

            ....

以此類推,但是第一圈會有系統造成的delay,就像是單擺wait相同

這樣解釋不知道OK了嗎