目的
展示如何使用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'指定哪個數字端口
方向= MccDaq.DigitalPortDirection.DigitalOut'指定輸出方向
ULStat = DaqBoard.DConfigPort(PortType,Direction)'配置端口
BitNum = 0'指定端口中要控制的位
BitValue = 1'指定要寫入的值
ULStat = DaqBoard.DBitOut(PortType,BitNum,BitValue)'將值寫出
適用于Android的UL以下示例顯示了如何使用適用于Android和Java的UL來配置和控制數字輸出:
DigitalPortType = AUXPORT;//指定哪個數字端口
DigitalDirection = OUTPUT; //指定輸出方向
mDioDevice.dConfigPort(DigitalPortType,DigitalDirection); //配置端口
bitNum = 0; //指定要控制端口中的哪個位
bitState = true; 指定布爾值以寫入mDioDevice.dBitOut(DigitalPortType,bitNum,bitState); //將值寫出
NI LabVIEW
以下示例顯示了如何使用LabVIEW控制數字輸出位。下面的接線圖顯示了相關的VI和設置。此處僅將硬件設備#0上輔助端口的第一位(Do0)配置為輸出,然后負責輸出操作員輸入的真/假值

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

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

更多內容請關注君億道