在 NI LabWindows™/CVI™ 中使用 DAQ Assistant (DAQ小幫手)

更新 Dec 28, 2023

環境

軟體

  • LabWindows/CVI
  • Measurement & Automation Explorer (MAX)

驅動程式

  • NI-DAQmx

本文章是NI-DAQmx 系列入門指南的一部分。

NI-DAQmx 系列入門指南可幫助您學習 NI-DAQmx 程式設計的基礎知識。透過影片與文件教學,本系列將帶您從在 NI Measurement & Automation Explorer (MAX) 中驗證設備的操作到以程式化方式使用 LabVIEW 資料擷取(DAQ)應用程式。它適用於想要學習如何使用 DAQ 小幫手 (DAQ Assistant) 的初學者,以及希望學習 NI-DAQmx 進階功能有經驗的使用者。

本教學介紹如何使用 DAQ 小幫手在 LabWindows/CVI 中快速開發和部署資料擷取 (DAQ) 應用程式。 DAQ 小幫手是一個易於使用的圖形化界面,用於配置測量task(任務)和通道以及自定義Timing (定時)、Triggering(觸發)和scales(縮放),而無需額外撰寫程式。您可以使用 DAQ 小幫手為所有 DAQ 應用配置量測task,並生成程式碼以在應用程式中配置和使用該task。

注: 您也可在DAQ Help文件中找到本文以下的內容。

準備階段

本教學需要您在電腦上安裝及準備以下軟體和硬體:

  • LabWindows/CVI 7.0 或以上版本。
  • NI-DAQmx 7.0.1 或以上版本。
  • 支持NI-DAQmx 的 DAQ 硬體裝置。 (您可參考NI-DAQ 7.x Readme中 NI-DAQmx 支援的裝置清單)


有關安裝和配置軟體和硬體的資訊,請參閱DAQ Quick Start Guide 以及裝置文檔。

建立task

您可以使用 DAQ 小幫手快速建立 DAQ task(任務)。task是一個或多個具有timing、triggering和其他屬性的虛擬通道的集合。從概念上來說,task代表您要執行的measurement(量測)或generation(生成)。您可以在task中設置和保存所有設定資訊,並在應用程式中使用該task。

要從 LabWindows/CVI 啟動 DAQ 小幫手,請選擇 Tools»Create/Edit DAQmx Tasks。出現如圖 1 的對話框。


圖1

建立用於 LabWindows/CVI 專案的task時有兩個選擇:

  • 基於 MAX 的tasks: 特點是可以被同一電腦上的其他程式所使用。您可以直接從 MAX 中查看、編輯和測試此類task。您可以在多個專案中使用基於 MAX 的task,甚至那些不是在 LabWindows/CVI 中建立的task。
  • 基於專案的task: 儲存在專案中。儲存在專案中的task是該專案的本地task。如果您需要在多個開發人員之間共享task定義或將task定義儲存在版本控制系統中,則基於專案的task會更加方便。
以下分別介紹此兩種方式:


基於 MAX 的task

  1. 從Create/Edit DAQmx task對話框中選擇在Create New Task in MAX
  2. 點擊“OK啟動 DAQ 小幫手。
  3. 接著選擇您的task選擇量測種類,然後點擊Next
  4. 選擇virtual channel (虛擬通道)並點擊Next
  5. 輸入task的名稱,然後點擊Finish
  6. 接著在如圖 2 的 DAQ 小幫手面板中,您可以配置特定於通道的設定,例如scaling(縮放)、輸入限制和終端配置。您還可以配置特定於task的設定,例如timing和triggering。

圖2
  1. 當您指定各種設定後,您可以測試task。點擊“Test”按鈕以驗證task是否正常工作。
  2. 完成後點擊“OK”。 DAQ 小幫手將task保存到 MAX。
關於使用 DAQ 小幫手設定task的更多資訊,請參考DAQ Assistant Help,它已隨著 NI-DAQmx 一起被安裝至您的電腦中了。

基於專案的task

  1. 從Create/Edit DAQmx task對話框中選擇Create New Task in Project
  2. 點擊“OK”啟動 DAQ 小幫手。
  3. 根據您的需求為您的task選擇量測類型,然後點擊Next
  4. 選擇virtual channel(虛擬通道)並點擊Next
  5. 接著在如圖 3 所示的 DAQ 小幫手面板中,您可以配置特定於通道的設定,例如scaling(縮放)、輸入限制和終端配置。您還可以配置特定於task的設定,例如timing(計時)和triggering(觸發)。
  6. 當您指定各種設置時,您可以測試task。點擊“Test”按鈕以驗證task是否正常工作。
  7. 最後在圖 3 所示的 DAQ 小幫手面板下方區域輸入以下資訊:
  • Task Name - task的名稱以及將建立的 .c.h.mxb 文件的前綴。例如,使用DAQTaskInProject作為task名稱。
  • Create Task Function - 讓您呼叫用來建立和配置task的函式名稱。例如,使用CreateDAQTaskInProject作為task建立函式。
  • Target Directory - 生成的三個文件將被儲存的路徑位置。

圖 3
  1. 點擊“OK”以生成task。
DAQ 小幫手生成三個文件來描述 LabWindows/CVI 中的task:source( .c )、header( .h ) 和task描述文件
( .mxb ) 。 LabWindows/CVI 會自動地將這些文件加到專案中。生成的source和header文件定義了task建立函式,其中包含以程式方式建立和配置指定task所需的程式碼。生成的task描述文件 ( .mxb ) 包含在 DAQ 小幫手中編輯task時使用的task的二進制描述。雙擊.mxb檔案會在DAQ 小幫手打開該task。這些文件都連結到建立的task,因此您在 DAQ 小幫手對task所做的任何更改都會自動反應到生成的程式碼中。

關於使用 DAQ 小幫手配置task的更多資訊,請參考DAQ assistant help,它已隨著 NI-DAQmx 一起被安裝至您的電腦中了。
 

在 LabWindows/CVI 專案中使用task

完成建立task後,您可以在 LabWindows/CVI 專案中使用它。

基於 MAX 的task

要使用基於MAX的task,呼叫DAQmxLoadTask,如圖4中最後一段code。
DAQmxLoadTask
功能面板包含您電腦中的所有"基於MAX-DAQmx 的task"清單。在此功能面板中的Task Name 控件上按 <Enter> 可查看task 清單。

#include <NIDAQmx.h>
#include <cvirte.h>

static int32 samplesPerChan;
staticfloat64 data[1000];
staticTaskHandle daqTask;

int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* 記憶體不足 */

/* 下方函式呼叫加載 "基於 MAX 的task"  */
DAQmxLoadTask("MyVoltageTask", &daqTask);
DAQmxReadAnalogF64 (daqTask, DAQmx_Val_Auto, 10.0,
DAQmx_Val_GroupByChannel, data, 1000, &samplesPerChan, 0);
DAQmxClearTask(daqTask);
return 0;
}
圖 4
 

基於專案的task

要使用基於專案的task,請呼叫在生成的header文件中聲明task creation function (函式)(本範例中為 CreateDAQTaskInProject)。
您還必須將其header文件include (包含)在您的主專案文件中。請參考圖 5。
#include <NIDAQmx.h>
#include <cvirte.h>
/* include生成的header文件 */
#include "DAQTaskInProject.h"

static int32 samplesPerChan;
static float64 data[1000];
static TaskHandle daqTask;

int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* 記憶體不足 */

/* 下方函式呼叫加載 "基於專案的task"*/
CreateDAQTaskInProject(&daqTask);
DAQmxReadAnalogF64 (daqTask, DAQmx_Val_Auto, 10.0,
DAQmx_Val_GroupByChannel, data, 1000, &samplesPerChan, 0);
DAQmxClearTask(daqTask);
return 0;
}
圖 5
基於專案和基於 MAX 的task

在呼叫DAQmxLoadTask或task建立函式後,增加執行所需操作所需的其他函式。
舉例來說,如果您從模擬輸入通道讀入資料,您可能需要使用DAQmxReadAnalogF64函式。

完成task後呼叫之後記得呼叫DAQmxClearTask函式以停止task並從記憶體中中清除該task。

生成範例程式碼

您還可以使用 DAQ 小幫手生成執行task所需的程式碼。

  • 為 "基於 MAX 的task" 生成範例程式碼——在Source視窗中,右鍵點擊對DAQmxLoadTask的調用並選擇 Generate DAQ Example Code
  • 為 "基於專案的task" 生成範例程式碼——在Source視窗中,右鍵點擊對task建立函式的呼叫(例如CreateDAQTaskInProject ),然後選擇Generate DAQ Example Code


當您為基於專案或基於 MAX 的task點選 Generate DAQ Example Code 時,將出現 Generate DAQ Example Code 對話框,如圖 6 所示。


圖 6

在對話框中,指定執行task的函式名稱和包含生成的範例程式碼的文件,然後點擊OK 。生成的程式碼包括定義執行task函式的source和header文件。 LabWindows/CVI 會自動地將這些文件增加到專案中並修改當前source文件以呼叫並執行task函式。呼叫時,執行task函式以程式化方式建立一個使用者界面以啟動task並顯示資料。

下圖顯示 "基於專案的task" 選擇生成 DAQ 範例程式碼後的範例source code。

#include <NIDAQmx.h>
#include <cvirte.h>
#include "DAQTaskInProject.h"
/* 範例程式的header文件 */
#include "DAQTaskInProjectExampleCode.h"

static int32 samplesPerChan;
static float64 data[1000];
static TaskHandle daqTask;

int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* 記憶體不足 */

CreateDAQTaskInProject(&daqTask);
/* 執行task的函式呼叫 */
RunDAQTaskInProject(daqTask);
return 0;
}
圖 7
 

編輯現有task

建立task後,您可以透過多種方式開啟 DAQ 小幫手來編輯task。您可以透過點擇Tools » Create/Edit DAQmx task來編輯任何類型的task。此命令啟動Create/Edit DAQmx task對話框,您可以在其中選擇要編輯的task。

您可以直接透過選擇My System » Data Neighborhood » NI-DAQmx task 以編輯基於 MAX 的task

您可以透過雙擊 LabWindows/CVI 專案樹中的 .mxb文件來編輯基於專案的task。

當您完成task的編輯時,LabWindows/CVI 會根據您所做的任何更改自動更新 MAX task或專案中的配置文件。但是,您生成的範例程式碼不會自動更新。由於範例程式碼未直接連接到task,因此如果對task進行任何修改,則必須重新生成task的範例程式碼以反應所做的更改。

將 MAX task複製到專案
您可以建立一個新的基於專案的task,它是基於 MAX 的task的copy。在 Source 窗口中,右鍵點擊對DAQmxLoadTask的調用並選擇Copy DAQ Task to Project 。在出現的對話框中,您必須指定task名稱、task建立函式和目標目錄,就像您在 DAQ 小幫手中為基於專案的task指定的一樣。點擊“OK”後,LabWindows/CVI 生成source ( .c )、header( .h ) 和task描述文件 ( .mxb ) 並將這些文件增加到專案中;將呼叫 DAQmxLoadTask替換為呼叫新task建立函式;並include生成的header文件。

注意:MAX task與您建立的新專案task之間沒有連接。您對 MAX task所做的任何更改都不會自動反應在新專案task中。

額外資訊

關於 NI-DAQmx 的更多資訊以及使用 DAQ 小幫手配置task的更多資訊,請參考以下文件。

DAQ Quick Start Guide,位於開始»...»National Instruments»NI-DAQ
NI-DAQmx Help,位於開始»...»National Instruments»NI-DAQ
DAQ Assistant Help,可在 DAQ 小幫手的右側窗格中訪問
LabWindows/CVI Help,位於開始»...»National Instruments»LabWindows/CVI