本文件說明在 LabVIEW ADE 中使用 NI-DAQ™mx 進行時序與同步化的基本概念。 當中所討論的主題尤其包含進行混合模式量測、超越類比功能的同步化作業,以及在資料採集 (DAQ) 裝置之間共用時序訊號。
純文字程式設計環境內的資料摘取作業,與 LabVIEW NI-DAQmx 程式設計作業非常相似,因為前者的函式呼叫方式與 NI-DAQmx VI 完全相同。 在文字架構的程式設計環境中使用 NI-DAQmx。
許多應用皆需要精確控制時序與同步作業的功能。舉例來說,當您負責量測與分析大量的高動態訊號時,任何程度的相位失配都可能無法接受。請務必了解,在同一個時間點對某個訊號進行的量測作業可以根據同一個時間點的另一個訊號進行評估,因此,進行這類量測作業必須採用某種同步機制。NI-DAQmx 與 LabVIEW 圖形化程式設計環境,可讓您輕鬆建構這類型態的系統。
NI-DAQmx 提供多種功能強大的解決方案,可滿足您的時序與同步化需求。其在 LabVIEW 中採用原生功能,可示範新一代的資料採集程式設計。在定義裝置之間的訊號接線路徑之前,NI-DAQmx 已自動找到合適的方法,讓您順利取得所需的訊號。您只需要指定目的地即可。在這種情況下,驅動程式就能以智慧化方式在幕後操作,避免複雜的設定作業。不過,這只是時序與同步化冰峰的尖端...
由於大多數的 E 系列資料獲取裝置都具備類比輸入、類比輸出、計數器/計時器與數位輸入/輸出功能,因此,挑戰通常是要將裝置程式化,以便在某些程度上確實地運用各類型的量測作業進行同步。部分使用案例包含:
1) 同步開始類比輸入與類比輸出
作業會同時開始但不同步
同步化的類比輸入與類比輸出
作業可同時開始與設定以相同速率執行
作業可共用取樣時脈
2) 使用觸發器同步化類比輸入與類比輸出
分享硬體觸發器與取樣時脈
3) 同步化的類比與計數器作業
4) 計數器會建立脈波列作為時脈,以進行類比作業
5) 類比時脈門計數器作業
在 NI-DAQmx API 中,您可以使用極少數的 VI 來完成大多數的時序與同步化需求。尤其是,DAQmx Timing.vi 與 DAQmx Trigger.vi 可讓您指定應掃描通道的間隔,以及通道的開始 (或停止) 時間。這兩個 VI 充分運用 LabVIEW 的多型特性,不僅能定義類比輸入訊號的時序與觸發,還能定義上述類比輸出、計數器/計時器與數位輸入/輸出 (如圖 1)。
常見的使用案例,就是想要使用相同時脈進行類比輸入與類比輸出作業。在此情況下,您需要 2 組程式碼鏈:1 組用於類比輸入,1 組則用於類比輸出。在各個項目中,請使用 DAQmx Timing VI 來指定所需的連續作業。針對類比輸出時序,請將「源極」輸入保留為預設值,這表示類比輸出作業將根據內部時脈的預設類比輸出時脈運作。在類比輸入 DAQmx Timing VI 中,您只需要指定「源極」為類比輸出樣本時脈。如此可設定類比輸入與類比輸出作業,以操作類比輸出的時序訊號 (見圖 2)。
上一個範例示範如何連結類比時序訊號。當您想要處理混合類比與數位訊號時會發生什麼事?您是否仍然希望能達到相同程度的流暢整合?答案是,是。
假設您的類比量測取決於外部或非傳統時脈訊號,例如:每毫秒取樣一次,持續 10 毫秒、等待 3 毫秒,再重複一次。在此情況下,您可以使用 E 系列介面卡的計數器功能來產生所需的時序訊號,但該如何要求類比端將其當做時脈?答案就是 DAQmx Timing VI。只要將「源極」指定為計數器的內部輸出針腳,計數器輸出就會成為類比輸入時脈,不需使用外部接線來連接接線塊的針腳 (請參閱圖 3)。
同步化作業顯示的簡單易用性,也延伸到觸發。使用 DAQmx Trigger VI,即可輕鬆設定作業以等待內部或外部觸發訊號 (類比或數位)。一個實用範例,就是事件觸發的解決方案。在事件觸發的情況下,裝置在啟動網絡收發前,就會忽略第一個 N 個觸發。若要完成這項作業,則會使用計數器來建立單一脈衝,以開始進行類比輸入封裝。計數器會使用第一個 N 個觸發器來建立脈衝的低部分,並使用有效觸發器來啟動脈衝的高部分,並觸發實際的收集。在下列範例中,有 2 組平行程式碼列;上方設定類比輸入作業,下方則設定計數器。觸發源為計數器 0 的輸出,計數器 0 已在輸入其「nth」脈衝後,設定為輸出觸發脈衝。在此情況下,可以選擇 100 kHz 的內部時基做為輸入來源,但也可以指定外部位置,讓您設定外部脈衝列延遲觸發器 (如圖 4)。
注意:在最後 2 個範例中,會將 Ctr0InternalOut 與 Crt0Out 列為時脈或觸發訊號的位置。Ctr0Internal Out 是適用於機板內部路由的訊號。將計數器輸出路由至 PFI 與 RTSI 時應使用 Crt0Out。圖 4 的範例可使用 CtrOInternal Out (而非 Ctr0Out)。
如同先前範例所示,若要將訊號從裝置的某個位置路由至另一個位置,您需要考量幾點。首先,NI-DAQmx 是否配置為這些訊號的路由?第二,可以路由哪些訊號?由於傳送這些訊號的能力需仰賴中介通訊路徑,因此應使用 Real-Time System Integration (RTSI) 匯流排。
RTSI 匯流排 (以 PCI 裝置的 34 針腳接頭形式提供,或是 PXI 背板接頭所含) 可提供 7 個針腳,讓您從一台裝置傳送時序訊號至另一台裝置 (或從單一裝置內部傳送)。在您可以使用此通訊路徑之前,請告知驅動程式系統中的裝置連接方式。針對 PCI 裝置,請使用 RTSI 連接線連接合適的裝置,並在 Measurement & Automation Explorer (MAX) 中進行登記。在 MAX 3.0 中,只要以滑鼠右鍵按一下 NI-DAQmx 裝置,並選擇「建立新的 NI-DAQmx 裝置 >> RTSI 連接線」。如此將會將 RTSI 連接線新增至您的 NI-DAQmx 裝置清單中。針對 PXI 系統,只要以滑鼠右鍵按一下「PXI 系統 >>「識別為」即可識別 PXI 系統。RTSI 匯流排在 PXI 系統中稱為 PXI Trigger 匯流排。(圖 5 顯示連接至單一 DAQ 裝置的 RTSI 連接線。)
若要查看單一 DAQ 裝置可在何處路由哪些訊號,可查看 MAX 的「裝置路由」(Device Routes) 分頁。點擊 MAX 中的 DAQ 裝置時,您會看到裝置屬性出現在設定樹狀結構右側的視窗中。若在該視窗下方選擇「裝置路由」(Device Routes) 分頁,則會列出每個可用的訊號路由。綠色方塊代表可以直接連接的路由,而黃色方塊則代表必須通過某一類型子系統的路由。當您橫跨黃色方塊時,子系統「使用」方塊中會列出完成路由所需的中間子系統。由於間接路由有時會干擾您所執行的其他作業,因此這項做法很有用 (圖 6)。
DAQmx Timing 與 DAQmx Trigger VI 提供高階功能,有助於設定作業,但在某些情況下,低階資訊就變得格外重要。假設您需要了解類比輸出作業正在更新的時基,或是已設定類比邊緣觸發器的等級。此資訊會透過 DAQmx Timing 與 DAQmx Trigger Property Node 顯示 (見圖 7)。您可以從這些屬性節點存取所有相關設定的值,以設定或檢視這些值。
DAQmx Trigger Property Node 能發揮複雜功能的其中一個範例,就是可重新觸發的計數器選項。在先前的 API 中,建立可重新觸發的計數器,完全改變了計數器作業的程式碼。透過 NI-DAQmx API,只要簡單納入 DAQmx Trigger Property Node (設定為 Start.Retriggerable),就能將計數器從單一觸發條件轉換成可重新觸發的作業 (參閱圖 8)。
上述範例示範可透過相同裝置 (透過觸發或時序) 連結作業的部分方式。但如果單一裝置的功能無法完整進行系統的特性分析,該怎麼辦?有時候,系統的純通道數必須結合多個裝置。如果每個裝置都具備 RTSI 連線功能,我們就能使用與單一裝置相同的同步化選項。
若要顯示裝置之間的連線,請以滑鼠右鍵按一下 MAX 中的 RTSI 連接線,並在「新增裝置至連接線」下選擇每個合適的裝置。一旦新增了每個裝置,NI-DAQmx 就會妥善利用裝置之間的所有可用路由路徑 (同步化將流暢無礙)。若是 PCI 裝置,則需要在裝置之間實際新增 RTSI 連接線。
現在,您可以將其他裝置的合適時序或觸發針腳做為 DAQmx Timing and Trigger VI 的「來源」。(預設使用者無法管理 RTSI 匯流排,不過可以使用 Export Signal.vi 將特定訊號明確路由至特定 RTSI 針腳。」下列範例示範如何在不同裝置之間共用時序訊號,以進行類比輸入作業 (見圖 10)。
請注意,這裡使用 2 個不同的裝置進行 2 次不同的作業。只需要讓 NI-DAQmx 使用 Dev1/ai/SampleClock 做為裝置 2 的取樣時脈,即可將裝置 1 的取樣時脈設定為裝置 2 的取樣時脈。NI-DAQmx 會找出如何確實讓路由發生,以確保在 2 組資料採集裝置上以相同速率接收資料。
大多數的 NI DAQ 裝置都包含可分享時序與觸發的功能。為了妥善利用這項功能,NI-DAQmx 具備易於使用的特性、簡化的分析功能,以及更高的效能,可提供多項工具,確保量測作業在相同時域內進行。