rms_host.vi
求求各位高手,幫我看看程式哪裡出錯了呢?
暫存器的初始值THD now 我放1000,是故意要讓後端一定會小於6個值,程式就會繼續動作。
每60個值,就會產生一個新的THD,先暫時放著。這60個值和THD now比大小,60個值裡面,不超過6個值比THD now大,則新的THD就要取代變為THD now,如果超過,則程式停止。
但為什麼跑起來,我的THD新值和THD now值會同步呢?不應該同步才對,拜託大家幫幫我,看哪裡寫錯了?
(我的程式,左上方的骰子是我摸擬fpga傳過來的信號用的,每一秒取一個值。因為我是新手,還不太會用fpga寫,我在fpga每16筆data算出一個rms值,但發現,在fpga底下,當新的rms還沒被算出來前,上個值還是會一直被輸出,所以我就在fpga將rms值存進DMA FIFO,然後從RT 抓出來,但因為每16筆的值一樣,所以才會作個陣列處理,每16筆抓一個值出來,不知大家懂我的意思嗎?如果大家知道在fpga怎麼寫rms,也請教我,就是我要怎樣,才能讓60個rms值,送到下一步,而不是會抓出960個rms,但每16個值都是重複的。)
1.Wait Until Next ms Multiple的單位是ms也就是0.001秒不是1秒.
2.程式中每960ms就會改變"新的THD"然後放入Shift中立即改變"THD now"
因為我不了解你的訴求,只能點出我看到的問題
不好意思,我昨天說錯了,對,是每1ms抓一次值。
我想請問說,每960ms改變"新的THD"然後放入Shift中,是多久才會改變"THD now"?
是1ms就改變了嗎?還是960ms才會改變?
因為我本來以為是960ms,想說這樣不就"新的THD"產生後,要960ms才丟到"THD now",這樣應該要看到的值是不一樣,但怎麼我看到的值是一樣。
我再說一下我的程式,請大家看看有沒有問題。因為我怕比大小時,是比錯的值。
這麼說好了流程:
1、我每一組進來的"stored array"裡的60個值,會產生一個"新的THD"值,但都先放著。
2、每組進來的"stored array"裡的60個值要和上一組產生的"新的THD"比大小,只要沒超過6個值比上一組產生的"新的THD"大,則現在這"stored array"產生的"新的THD"則要取代變為新的"THD now",供下一組比大小用。
我現在看到的"新的THD"和"THD now"的數值是一樣,所以我不知到底是不是和上一組產生的"新的THD"比到大小?如果是本身這組和自己產生的"新的THD"比大小的話,就會錯了。
不知這樣形容,您們懂嗎?
"每960ms改變"新的THD"然後放入Shift中,是多久才會改變"THD now"?"答案是"立即",如果你希望960ms就必須用Sequence Structure將程式區隔出順序.

請問,如果是立刻,那我比到的大小值,到底是和上一組產生的"新的THD"比到大小?( 這樣是對的結果)
還是和自己本身產生的"新的THD"比到大小呢?(這樣是錯的結果)
因為是立即就丟過去"THD now"了,所以我不知在比大小的瞬間,是和哪個值比到。
謝謝您唷,因為我才接觸到Labview不到二個月,但因為論文要用到,所以滿急的,不知該怎麼設計才對。
謝謝你,
加了你說的Sequence Structure將程式區隔出順序,
看起來的答案就是我要的了,
真的很謝謝你唷。