目標介紹如何使用MCC數據采集設備和各種軟件平臺寫入單個數字I/O位。
適用人群
需要監測并控制數字狀態的數據采集系統開發人員,并希望了解其在不同軟件環境中的使用情況。
概述
數字信號,顧名思義,是只能表征兩種狀態的信號,比如“開”或“關”。類似的例子包括警示燈的亮或滅,門上鎖或沒有上鎖以及繼電器的閉合或斷開。這兩種狀態可表示成數字1和0或布爾值(真和假)。在多數硬件架構中,這些單獨位連接形成字節或字,用于高效地傳輸數據。類似上述用途的硬件IC被應用于現代DAQ設備。通常,輸入輸出信號以8位為一組,讀和寫都是8位并行操作。
在一些應用中,您可能需要在同一時刻準確無誤地控制或監測一組信號,那么請確保這些信號在同一個端口(Port)上。但對于某些信號,當您人為地將它們連接同一端口時,您也可以決定按順序對它們進行讀和寫。除端口操作之外,MCC還提供基于位(Bit)的操作。該操作會自動屏蔽其它無關位。
一個常見的問題是:“我應該以多快的速度對數字輸入進行采樣?”,回答總是:“頻率應該足夠快以免丟掉任何一次狀態改變”。請注意,數字輸入往往不具有自鎖功能,它們更不會自動檢測輸入的變化。您必須定期讀取(查詢),您的軟件決定當前讀數與先前相比是否發生改變。相反,由于輸出信號會被鎖存,所以除非您要求改變狀態,否則不必再次向端口進行寫操作。
現實世界中的數字信號往往是單向的,但DAQ設備通常會提供雙向功能,以適用于一系列廣泛應用。通常,DAQ設備在上電時會將數字端口配置為輸入模式。您應按需配置DAQ設備每個端口的方向。某些設備提供更為靈活的單獨位配置功能。程序啟動時,每個數字端口都將進行一次配置。
對于軟件控制的數字輸出操作(與軟件平臺無關),需要兩個步驟:設置端口方向為輸出,然后向端口或某一位寫入一個數值。前者只需執行一次,而后者可根據應用程序的需求重復執行。
必須指定以下信息:
端口編號
端口方向
輸出數據
以下信息將會返回:
錯誤代碼
以下示例展示了如何使用Universal LibraryTM、UL for AndroidTM、NI LabVIEWTM、DASYLab?和DAQami執行一次非連續的掃描。
Universal Library通用庫范例
以下示例展示了如何使用Universal Library和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配置并控制數字輸出。
DigitalPortType = AUXPORT; //定義使用哪一個數字端口
DigitalDirection = OUTPUT; //定義輸出方向
mDioDevice.dConfigPort(DigitalPortType, DigitalDirection); //配置端口
bitNum = 0; //定義端口的哪一個位用于控制
bitState = true; Specify the Boolean value to write mDioDevice.dBitOut(DigitalPortType, bitNum, bitState); //將數值輸出
NI LabVIEW
以下示例展示了如何使用LabVIEW控制一個數字位的輸出。以下接線圖展示了相關的VI和設置。在這里硬件設備#0中Auxport的第一位(Do0)被配置為輸出,然后負責輸出操作人員鍵入的true或false。

DASYLab
非編程人員可以使用受歡迎的DASYLab對數字信號進行監測和控制。以下展示了一個數字輸出模塊,其數據輸入端被連接至一個Switch Control模塊的輸出端。操作人員在運行時可以選擇開或關,使得DAQ硬件設備的數字輸出位D0在1或0之間反轉。

雙擊Switch模塊,您可以在選項菜單中配置開關變量頻率。通過下圖我們看到頻率被設置為1Hz,使得數字輸出位D0每秒更新一次以和操作人員的選擇保持一致。
