叢 林,楊 虹,毛 瑞
(山西電力科學研究院,山西太原 030001)
在目前的智能傳感器網絡里,由于現場總線接口標準繁多,各廠商之間的傳感器很難實現互操作性和互換性,從而增加了網絡化智能傳感器系統的研發、集成和維護難度。為了統一總線接口標準,從1997年開始,國際電子電氣工程師協會IEEE(Institute of Electrical and Electronics Engineers)與美國國家標準總局NIST(National Institute of Standards and Technology)陸續推出了IEEE1451網絡化智能傳感器接口標準,解決了不同網絡化智能傳感器之間互不兼容的問題[1]。
整個智能變送器STIM(Smart Transducer Interface Module)完成后,在與網絡適配器NCAP(Network Capable Application Processor)統一在一起構成完整的網絡化智能傳感器系統之前,需要一個測試系統對所設計的STIM模塊進行測試,而測試的思路就是以ADuC812做為從機,當主機發送數據采集指令時,從機通過串口將采集到的數據發送給主機。主機就可以很容易地將得到的數據轉化成直觀的圖表形式方便用戶閱讀,從而形成一個友好的人機對話界面。所以,必須在計算機上構建一個智能變送器測試平臺,除了可以將數據轉化成圖表的形式外,還應當包括美觀、便捷的用戶界面,既可以了解STIM模塊的主要性能指標,也增強了實驗平臺的人性化設計。
測試平臺采用可視化Basic語言VB(Visual Basic)來編寫,而用于界面的其他語言還有很多,包括:可視化編程VC(Microsoft Visual C++)、數字圖像處理MatLab、虛擬儀器LabView等,這些語言各有優點和不足。VC編制的界面靈活、具體,窗體美觀大方,但編程語言復雜,初學者難以熟練掌握,在通信中需要書寫大量應用程序編程接口API(Application Programming Interface)函數,這就大大增加了工作量和編寫難度;MatLab的圖形用戶界面GUI(Graphical User Interface)直觀方便,很容易實現圖表的實時顯示,但缺點是畫面粗糙,且必須依托MatLab應用程序才能運行;VB則集成了兩者的優點,編寫的程序通俗易懂,移植性較強,開發周期短,繪圖功能強大,且編程簡單,易學、易用,內嵌專用通信控件Mscomm,使通訊過程方便快捷,從而成為理想的編程語言;LabView作為一款圖形化編程語言,以其專業性和集成化受到電子電氣類學科人士的青睞,也是一種可取的設計方案[2]。
測試平臺程序使用Microsoft Visual Basic開發,提供了開發Windows應用程序的最迅速、最簡捷的方法。Visual Basic既適合用于資深專業開發人員,也適合初學者,為使用者提供了整套工具,以便開發應用程序。
Visual Basic中的 “Visual” 指的是開發圖形用戶界面GUI的方法。不需編寫大量代碼去描述界面元素的外觀和位置,而只要把預先建立的對象添加到屏幕上即可。 “Basic”指的是Beginners All-Purpose Symbolist Instruction Code語言,一種在計算機技術發展歷史上應用的最為廣泛的語言。Visual Basic在原有Basic語言的基礎上進一步發展,至今包含了數百條語句、函數及關鍵詞,其中很多和Windows GUI有直接關系。專業人員可以用Visual Basi實現其他任何Windows編程語言的功能,而初學者只要掌握幾個關鍵詞就可以建立實用的應用程序[2]。
Microsoft Communication 6.0控件簡稱MSComm控件,通過串行端口傳輸和接收數據,為應用程序提供全雙工串行通訊功能,并提供兩種處理通訊的方式。
a)事件驅動通訊。是處理串行端口交互作用的一種非常有效的方法。在許多情況下,事件發生時需要得到通知,可以利用MSComm控件的On-Comm事件捕獲并處理這些通訊事件。OnComm事件還可以檢查和處理通訊錯誤。用戶可以通過檢查CommEvent的屬性,來處理所有通訊事件和通訊錯誤。
b)查詢方式通訊。在程序的每個關鍵功能之后,可以通過檢查CommEvent的屬性來處理事件和通訊錯誤。
使用控件時,首先要把CommPort屬性設置為一個合法的端口號,其次要為Settings屬性設置一個通訊格式字。InputMode屬性確定Input屬性如何取回數據:當InputMode=0時,數據取回的格式是字符串;InputMode=1時,數據取回的格式是數據組的二進制數據的數組。然后用PortOpen=True打開通訊端口,這樣就可以發送和接受數據了,完成發送和接收數據后,用PortOpen=False關閉通訊端口。部分初始化原代碼如下。


在通訊中若接收到數據,控件會把它存入輸入緩沖區,同時產生OnCome事件,通過設置InputLen屬性確定要讀取的字節數,應用程序可以從Input屬性中讀取并刪除接收緩沖區中的數據流。若設置InputLen為0,則會在Input屬性中讀取接收緩沖區中的全部數據。數據發送時,只需向Output屬性寫入數據流,MSComm控件就會自動傳輸文本數據或二進制數據。用Output屬性傳輸文本數據,必須定義一個包含一個字符串的Variant類型變量。發送二進制數據,必須傳遞一個包含字節數組的Variant類型變量到Output屬性。
Windows的工作機制簡單地說就是3個關鍵的概念,即窗口、事件和消息。Microsoft Window s操作系統通過給每一個窗口指定1個唯一的標示號來管理所有的窗口,操作系統連續地監視每一個窗口的活動或事件的信號。事件可以通過諸如單擊鼠標或按下按鍵的操作而產生,也可以通過程序的控制而產生,甚至可以由另一個窗口的操作而產生。每發生一次事件,將引發一條消息發送至操作系統。操作系統處理該消息并廣播給其他窗口。然后,每一個窗口才能根據自身處理該條消息的指令而采取適當的操作。在傳統的或 “過程化”應用程序中,應用程序自身控制了執行哪一部分代碼和按何種順序執行代碼。從第一行代碼執行程序并按應用程序中預定的路徑執行,必要時調用過程。
在事件驅動的應用程序中,代碼不是按照預定的路徑執行,而是在響應不同的事件時執行不同的代碼片斷。事件可以由用戶操作出發,也可以由來自操作系統或其他應用程序的消息觸發,甚至由應用程序本身的消息觸發。這些事件的順序決定了代碼執行的順序,因此,應用程序每次運行時所經過的代碼的路徑都是不同的。
串行口通訊系統是由串行口通訊消息處理程序、文件操作程序等部分組成。串行口通訊程序由兩部分組成,一個部分為初始化程序,主要完成串行口通訊參數設置,開串行口功能;另一個部分為MSComm控件的OnComm事件響應程序,該程序是通訊程序的核心,主要完成與單片機的數據交換,通訊協議與單片機的協議相似。OnComm事件響應程序與單片機的串行口中斷服務程序類似。部分源代碼如下。

文件操作程序主要完成控制數據的管理,文件操作程序包括數據存儲程序和數據讀取程序。執行數據存儲程序時,程序會調用CommonDialog控件的ShowSave方法顯示 “另存為”對話框提示用戶輸入要保存的文件名,用Open語句打開該文件,然后是將各對應數組的值依次用Write語句寫入文件,用Close語句關閉文件。執行數據讀取程序時,程序會調用CommonDialog控件的ShowOpen方法顯示 “打開”對話框提示用戶輸入要打開的文件名,用Open語句打開該文件,然后依次用Read語句讀取文件內的數據,存入各對應數組,用Close語句關閉文件。
STIM測試平臺,其操作界面主要由通道名稱和測量數據兩部分組成。其中測量數據包括了溫度顯示、X方向加速度顯示、Y方向加速度顯示以及測量時間顯示?!帮@示測量時間”可以由時間函數直接實現,而 “重新測量”按鈕即為清空按鈕。
程序中使用了3個Mscomm控件來分別實現三路信號的采集,每個通道按鈕控制1個通信控件,依次將3個變量采集并恢復出來。當選中通道1時,COM1口打開,啟動Mscomm1實現溫度上傳;選中通道2時,COM2打開,啟動Mscomm2實現X方向加速度上傳;選中通道3時,COM3打開,啟動Mscomm3實現 Y方向加速度上傳。當所有Text清空后,則控制器再次啟動測量,得到另外一組測量數據。
智能變送器測試平臺與基于IEEE1451.2標準的網絡化智能傳感器一起,具有廣泛的應用領域。
a)基于IEEE1451.2標準的網絡化智能傳感器不僅包括各種現場總線,也包括Internet等網絡。
b)在IEEE1451.2標準中,創新地定義了電子數據表格 TEDS(Transducer Electronic Data Sheet),是一個通用變送器模型,可以支持很多種類的變送器,使得變送器具有自我描述和自我識別的能力,實現了變送器的即插即用。
c)在工業自動化領域,尤其是在工廠控制現場可以實現電廠、變電站等電力設施中對電氣設備運行環境的實時監測。由于 TEDS被嵌入智能變送器,使得測試平臺的數據采集通道數可以根據要求進行改變,因此,智能變送器測試平臺還可實現對電氣設備多項運行參數 (如溫度、濕度、壓力、流量等)的多通道采集,從而方便運行人員和數據終端采集人員對整套設備的遠程監控。
智能變送器測試平臺通過對溫度、X方向加速度、Y方向加速度3個數據的采集和顯示,表明以Visual Basic為基礎所設計的網絡化智能傳感器測試平臺可以正確、實時顯示傳感器所采集的數據,達到了實驗的預期目的。
[1] 吳仲城,戈瑜,虞承瑞,等.網絡化智能傳感器/執行器的設計及接口標準[J].儀表技術與傳感器,2000(7):1-3.
[2] 黎明,劉成安.Visual Basic程序設計教程[M].成都:電子科技大學出版社,2004:1-4.