展示如何使用 MCC 數據采集設備和各種軟件平臺寫入單個數字 I/O 位。
目標受眾
需要監視或控制數字狀態并尋求了解其在各種軟件環境中的實現的數據采集系統開發人員。
概述
根據定義,數字信號是那些只能表示兩種狀態的信號,例如開或關。示例包括警告燈亮或暗、門鎖上或開鎖以及繼電器關閉或打開。在數值上,這兩種狀態表示為 1 和 0,或布爾值(真和假)。與大多數硬件架構一樣,這些單獨的位連接在一起形成字節和字,以實現更高效的數據傳輸。現代 DAQ 設備中使用的硬件 IC 就是這種情況。通常,輸入和輸出能力以 8 位為一組提供,并且所有 8 位都以并行方式讀取或寫入。
在某些應用中,您可能希望完全同時控制或監視一組信號,因此請確保將這些信號分組到同一端口。但是對于某些信號,雖然您可以將它們物理連接到同一個端口,但您可以決定按順序讀取或寫入它們。除了按端口操作外,MCC 還提供按位操作,可自動從您要關注的單個位中屏蔽剩余位。
一個常見的問題是“我應該多快采樣我的數字輸入?”,答案總是:足夠頻繁,以免錯過狀態變化。請注意,數字輸入通常不是自鎖的,也不會自動檢測輸入變化。您必須定期閱讀(輪詢)它們,并且由您的軟件決定當前讀數是否代表與先前讀數的變化。對于輸出,由于它們是鎖存的,除非您需要更改狀態,否則無需再次寫入端口。
雖然現實世界的數字信號主要是單向的,但 DAQ 設備通常提供雙向功能,以便適應更廣泛的應用。通常,DAQ 設備的數字端口將作為輸入上電。您需要為所需的方向設置(即配置)DAQ 設備上每個端口的方向。一些設備是位可配置的,以獲得更大的靈活性。在程序開始時,對每個數字端口進行一次配置。
對于軟件步調的數字輸出操作,獨立于軟件平臺,需要兩個步驟:設置端口輸出的方向,然后向端口/位寫入值。前者只執行一次,而后者可以根據需要在整個應用程序中重復。
必須指定以下信息:
端口號
端口方向
要輸出的數據值
并返回以下信息:
錯誤代碼
下面的示例展示了如何使用 Universal Library?、UL for Android?、NI LabVIEW?、DASYLab? 和 DAQami 執行非連續掃描。
通用庫
以下示例顯示如何使用通用庫 (UL) 和 Visual Basic 首先配置,然后控制數字輸出:
PortType = MccDaq.DigitalPortType.AuxPort '指定哪個數字端口
Direction = MccDaq.DigitalPortDirection.DigitalOut '指定輸出方向
ULStat = DaqBoard.DConfigPort(PortType, Direction) '配置端口
BitNum = 0 '指定端口中的哪個位來控制
BitValue = 1 '指定寫入值
ULStat = DaqBoard.DBitOut(PortType, BitNum, BitValue) '將值寫入
UL for Android
以下示例顯示如何使用 UL for Android 和 Java 配置和控制數字輸出:
數字端口類型 = 輔助端口;//指定哪個數字端口
DigitalDirection = OUTPUT; //指定輸出方向
mDioDevice.dConfigPort(DigitalPortType, DigitalDirection); //配置端口
bitNum = 0; //指定端口中哪個位來控制
bitState = true; 指定布爾值寫入 mDioDevice.dBitOut(DigitalPortType, bitNum, bitState); //寫出值
NI LabVIEW
以下示例顯示如何使用 LabVIEW 控制數字輸出位。下面的接線圖顯示了相關的 VI 和設置。這里只是硬件設備 #0 上 Auxport 的第一位 (Do0) 被配置為輸出,然后它的任務是輸出操作員輸入的真/假值

DASYLab
使用數字信號進行監視和控制的非程序員可以考慮流行的 DASYLab 軟件包。數字輸出模塊如下所示,其數據輸入連接到開關控制模塊的輸出。在運行時,操作員可以選擇打開或關閉,從而導致 DAQ 硬件的數字輸出位 D0 切換為 1 或 0。

雙擊開關模塊可以訪問一個菜單,您可以在其中指定監控開關位置的頻率。下面我們看到選擇了 1 Hz,導致 DAQ 硬件上的數字輸出位 D0 每秒更新一次,以匹配操作員的選擇。
