真的不得不稱讚一下,你很適合做DAQ這方面的事情,包含資訊的蒐集,實際的執行效率,以及測試問題的方式。
說明幾個項目
[1] 我先前提及AI比AO早開始,應該是建立在「AI與AO都是Software Trigger」(而非使用External Digital Trigger的情形)。我的文章有時候不夠精簡。
因為AI Start Task的三角形一執行,就同時進行了「所有的設定+Software Trigger」了,然後才傳出Error Line。
緊接著才輪到AO Start Task。這時候的時間差距最短會是AI Start Task=>AO Start Task的LabVIEW工作時間,最長則隨著電腦CPU不同而不一樣。
[2] 測試項目
這個程式在External Digital Trigger後,AO有沒有正確到達+1V,並且停止在+1V? 這是一個雖然簡單但必須要測試的關鍵。
建議在Read.vi執行後,AI Clear Task與AO Clear Task之前,加一個空的等待while迴圈,直到User按下一個stop按鈕。
因為Read.vi原本在等待Trigger,一被Trigger之後,抓滿AI[0]~AI[4],傳出Error Line,會立即去執行AO Clear Task。
AO被Clear Task之後,有可能停在最後的電壓0.8V or 1.0V,也可能被拉到接近0V。
[3] 上述內容也可改用另一種方法達成。承[2]觀念,
「單獨」增加AI的Sample per channel到5->6或5->10,雖然AO硬體的5個點應該已經打完了,但AI硬體還會繼續多抓幾個點。
DAQ卡片自然會等到AI抓完,才讓Read.vi送出Error Line並進行後面AO Clear Task這些事。
這也是一個觀察AO到底後來有沒有達到1.0V的方式。
[4] (試一下)嘗試同時增加AI與AO Sample per channel,例如增加到10000或上限,看看是不是如你所觀察的,始終只有第一個點會浮動。
這些結果已經暗示著,硬體設計上,同樣一個外部數位觸發進來,AO很可能就是慢一個Sample點開始。但是不知道為什麼硬體上他要等這麼一下。
[5] (試一下)逐步(大量)增加Sampling Rate,應該可以觀察出誤差量是一個固定時距(Hardware時間誤差),還是一律是一個採樣點 (Firmware與Driver的控制行為)。
目前看起來,很可能是後者,也就是也許即便Firmware知道AO吃了Trigger,「如果同時有AI的任務在進行」,AO就是愛晚一個Sample的時間才送資訊。
正常的DAQ卡片設計AI與AO頂多相差幾個On-Board Clock for FPGA(Firmware)。
以80MHz on-board clock為例,FPGA的一個指令度過的clock才1.25ns,同樣接到觸發後,AI與AO的處理頂多相差幾個指令的時間。而不該是1個Sample的時距。
[6] 把你的Trigger訊號送給AI看,同時比對AO0/AI0/AI1(Trigger時間)
增開一個AI1通道,方法應該是修改 ai0 => ai0:1。把你的Trigger訊號同時接給ai1去給他顯示。
注意單通道改成多通道,可能有幾個地方要留意。例如Analog Wfm 1Chan NSamp可能需要改成NChan。
這個目前預期會看到AI0第一個點是隨機電壓,第二個點拉下來是0V。
AI1第一個點應該是已經過rising edge觸發後的TTL High,
這樣比對起來,就可以指出rising edge都已經發生之後,還要隔一個採樣點,AO0=>AI0才真正看到AO輸出。
[7]
可以嘗試把你的AI設定回Software Trigger,2個通道
(AI0與AI1,然後採樣時間長一點,例如3倍於AO採樣點數,甚至可以久到夠等你的手動外部數位觸發完成,或是用連續擷取的AI)。
AI的採樣率可以考慮高一些,這個測試可以在AI盡可能最大化採樣率的條件下做。
這個測試可以確認前面一直暗示的某個假設:
「同一張卡片的AI與AO都吃到外部數位觸發的情況下,這張DAQ卡片的設計,會發生某個偏長的時間延遲(遠長於幾個板卡Clock)。」
因為這時候AI已經不跟著AO一起等外部數位觸發了,AO應該要有自己的主見,吃了觸發,就該辦事。沒理由有偏長的時間延遲。
2通道AI會因為是Software Trigger,所以會先跑,這時候要做的目標是觀察「吃了Trigger後,觀察到底AO0跟Trigger訊號,會相差多少」。
也說不定會意外發現AO其實是吃Falling Edge什麼的特殊硬體規格。
[8]
最後,是連我也還有些不確定的部分。一般說來,為了符合Nyquist定理,在同一張卡片上做AI與AO觸發同動,可能得把AI的Sampling Rate提高為AO Updating Rate的兩倍或以上。雖然這個對於觸發了AI後,為什麼AO硬是要慢1 sample = 0.001s,不一定能有所幫助,但這個部分是後續需要找人討論且注意的。
MingYen42968.7668287037