1.引言
現代科技的發展日新月異。計算機技術則尤為如此。計算機強大的處理能力,使得它成為一種很好的工具,其應用范圍也越來越廣泛。在工業自動化和測試及測量領域,傳統的方法有許多重復建設,顯然已經不能適應時代發展的需要了。如何利用先進的計算機技術提高效率則成為該領域迫切需要解決的問題。1986年,美國NI公司(Nation Instrument)提出了虛擬儀器的概念,提出了"軟件即儀器"的口號,徹底打破了傳統儀器只能由生產廠家定義,用戶無法改變的局面,從而引起儀器和自動化工業的一場革命。隨著現代軟件和硬件技術的飛速發展,儀器的智能化和虛擬化已經成為未來各級實驗室以及研究機構發展的方向。虛擬儀器,顧名思義,它應具有傳統儀器的功能,又有別于其傳統儀器。它的特點體現在其靈活性上,它能夠充分利用和發揮現有計算機先進技術,使儀器的測試和測量及自動化工業的系統測試和監控變得異常方便和快捷。
該環境包含前面板、流程圖、圖標和連接。在軟件啟動時,系統會建立一個缺省名為Untitled.1的文件(VI)。該文件包含兩個窗口,一個用以編輯前面板,另一個用作編輯流程圖。前面板就象是虛擬儀器的用戶接口,尤如實際儀器的面板。前面板基本上是控制和顯示對象的集合。用以控制模擬儀器輸入設備,為虛擬儀器的流程圖提供數據。顯示模擬儀器的輸出設備及流程圖中獲得或產生的數據 。
流程圖窗口用以編輯虛擬儀器的圖形化源代碼。通過連線將輸出、接收數據的對象連接起來創建流程圖,就能實現特定的功能,控制執行的流程。需特別指明的是:LabVIEW運行是數據流驅動的。簡單地說,就是只有當所有的輸入數據都準備好的時候,一個節點才能執行其功能,當節點執行完后,它所有的輸出端口都會產生一個數據值。數據都是從源端流到目的端。數據流不同于執行一個傳統程序的控制流方法(通過執行一系列的指令來實現的)。控制流執行是指令驅動。而數據流執行是數據流驅動或依賴數據的。這里提到的節點是程序執行的元素。它們類似于傳統編程語言中的狀態、操作、函數和子程式。LabVIEW包含廣泛用于數學計算、比較、轉換、輸入/輸出的函數庫。另一類節點類型是結構。結構就是傳統編程語言的循環、條件描述的圖形表示,不斷的重復和執行代碼。 LabVIEW也提供了用于連到外部基于文本的代碼和用于計算基于文本的公式的特殊節點。
圖標和連接--當一個虛擬儀器的圖標被放置在另一個虛擬儀器的流程圖中時,它就是一個子儀器或說是LabVIEW的一個子程序。子儀器的控制和顯示對象從調用它的儀器流程中獲得數據,然后將處理后的數據返回給它。連接是對應于子儀器控制和顯示對象的一系列連線端子。圖標既包含虛擬儀器用途的圖形化描述,也包含儀器連線端子的文字說明。連接更象是功能調用的參數列表。連線端子就是類似于參數。每個終端都對應于前面板的一個特別的控制和顯示對象。連接從它的輸入連線端子接收數據,然后通過子儀器的控制對象將數據傳輸給子儀器的代碼。每個虛擬儀器都有一個缺省的圖標,位于兩個窗口的右上角。當然,圖標可根據用戶的需要進行修改。每個虛擬儀器都有一個連接。在前面板的儀器圖標上右擊鼠標,選擇Show Connector,即可看到該儀器的具體連接。第一次顯示時,會有缺省的模式。若用戶想修改,則可選擇Pattern或Use/Remove Terminal來進行新的模式設置。
2.3 編程工具介紹
LabVIEW提供了三個模板來編輯虛擬儀器:工具模板(Tools Palettes)、控制模板(Controls Palettes)、功能模板(Functions Palettes)。工具模板提供用于圖形操作的各種工具,諸如移動,選取,設置卷標、斷點,文字輸入等等。控制模板則提供所有用于前面板編輯的控制和顯示對象的圖標以及一些特殊的圖形。功能模板包含一些基本的功能函數,也包含一些已做好的子儀器。這些子儀器能實現一些基本的信號處理功能,具有普遍性。其中控制、功能模板都有預留端,用戶可將自己制做的子儀器圖標放入其中,便于日后調用。
3 儀器的開發
熟悉了環境之后,便可以來開發自己的虛擬儀器了。由于實驗條件的限制,本實驗只做虛擬儀器的后兩部分,實驗中所采用的信號不是來自外部采集所得,而是通過軟件的方法獲得,也就是在流程圖中編制一個簡單的信號發生器,產生一些周期信號,沖激波及一些虛擬數據(用于擬合)。前面板的設計分為兩部分--顯示部分和控制部分,并以左右形式排列在前面板編輯窗口中。其中顯示部分包含原始信號的顯示和信號處理后的結果顯示。控制部分包含一些參數的設置,功能的選擇,還有系統控制。為了便于用戶使用該虛擬儀器,發揮虛擬儀器的特點,在前面板上加了一個More Info的控制鈕,當運行時,點擊該按鈕即可看到該儀器使用的詳細說明,類似于傳統儀器的說明書。另外,為了使面板更接近于真實的儀器面板,利用控制模板中Decorations>> Recessed box實現凸凹的效果;為了使控制部分和顯示部分一一對應起來,防止用戶的誤操作,對于某些暫不使用的按鈕,利用屬性Visible、 Disable來實現按鈕的隱藏、灰顯效果。
至于流程圖,它是和前面板一一對應的。整體上采用一個While Loop結構,由系統控制按鈕來控制。其內部大體包含兩部分:信號發生器和信號處理部分。這兩部分均用Case窗來實現。信號處理部分的功能實現較多,因而對每一個功能采用定制子儀器的方法將其做成一個個子儀器,用特定的圖標表示。此法可減少流程圖的復雜程度,便于數據流的跟蹤和調試。