叢 林,楊 虹,毛 瑞
(山西電力科學(xué)研究院,山西太原 030001)
在目前的智能傳感器網(wǎng)絡(luò)里,由于現(xiàn)場總線接口標(biāo)準(zhǔn)繁多,各廠商之間的傳感器很難實現(xiàn)互操作性和互換性,從而增加了網(wǎng)絡(luò)化智能傳感器系統(tǒng)的研發(fā)、集成和維護(hù)難度。為了統(tǒng)一總線接口標(biāo)準(zhǔn),從1997年開始,國際電子電氣工程師協(xié)會IEEE(Institute of Electrical and Electronics Engineers)與美國國家標(biāo)準(zhǔn)總局NIST(National Institute of Standards and Technology)陸續(xù)推出了IEEE1451網(wǎng)絡(luò)化智能傳感器接口標(biāo)準(zhǔn),解決了不同網(wǎng)絡(luò)化智能傳感器之間互不兼容的問題[1]。
整個智能變送器STIM(Smart Transducer Interface Module)完成后,在與網(wǎng)絡(luò)適配器NCAP(Network Capable Application Processor)統(tǒng)一在一起構(gòu)成完整的網(wǎng)絡(luò)化智能傳感器系統(tǒng)之前,需要一個測試系統(tǒng)對所設(shè)計的STIM模塊進(jìn)行測試,而測試的思路就是以ADuC812做為從機(jī),當(dāng)主機(jī)發(fā)送數(shù)據(jù)采集指令時,從機(jī)通過串口將采集到的數(shù)據(jù)發(fā)送給主機(jī)。主機(jī)就可以很容易地將得到的數(shù)據(jù)轉(zhuǎn)化成直觀的圖表形式方便用戶閱讀,從而形成一個友好的人機(jī)對話界面。所以,必須在計算機(jī)上構(gòu)建一個智能變送器測試平臺,除了可以將數(shù)據(jù)轉(zhuǎn)化成圖表的形式外,還應(yīng)當(dāng)包括美觀、便捷的用戶界面,既可以了解STIM模塊的主要性能指標(biāo),也增強(qiáng)了實驗平臺的人性化設(shè)計。
測試平臺采用可視化Basic語言VB(Visual Basic)來編寫,而用于界面的其他語言還有很多,包括:可視化編程VC(Microsoft Visual C++)、數(shù)字圖像處理MatLab、虛擬儀器LabView等,這些語言各有優(yōu)點和不足。VC編制的界面靈活、具體,窗體美觀大方,但編程語言復(fù)雜,初學(xué)者難以熟練掌握,在通信中需要書寫大量應(yīng)用程序編程接口API(Application Programming Interface)函數(shù),這就大大增加了工作量和編寫難度;MatLab的圖形用戶界面GUI(Graphical User Interface)直觀方便,很容易實現(xiàn)圖表的實時顯示,但缺點是畫面粗糙,且必須依托MatLab應(yīng)用程序才能運(yùn)行;VB則集成了兩者的優(yōu)點,編寫的程序通俗易懂,移植性較強(qiáng),開發(fā)周期短,繪圖功能強(qiáng)大,且編程簡單,易學(xué)、易用,內(nèi)嵌專用通信控件Mscomm,使通訊過程方便快捷,從而成為理想的編程語言;LabView作為一款圖形化編程語言,以其專業(yè)性和集成化受到電子電氣類學(xué)科人士的青睞,也是一種可取的設(shè)計方案[2]。
測試平臺程序使用Microsoft Visual Basic開發(fā),提供了開發(fā)Windows應(yīng)用程序的最迅速、最簡捷的方法。Visual Basic既適合用于資深專業(yè)開發(fā)人員,也適合初學(xué)者,為使用者提供了整套工具,以便開發(fā)應(yīng)用程序。
Visual Basic中的 “Visual” 指的是開發(fā)圖形用戶界面GUI的方法。不需編寫大量代碼去描述界面元素的外觀和位置,而只要把預(yù)先建立的對象添加到屏幕上即可。 “Basic”指的是Beginners All-Purpose Symbolist Instruction Code語言,一種在計算機(jī)技術(shù)發(fā)展歷史上應(yīng)用的最為廣泛的語言。Visual Basic在原有Basic語言的基礎(chǔ)上進(jìn)一步發(fā)展,至今包含了數(shù)百條語句、函數(shù)及關(guān)鍵詞,其中很多和Windows GUI有直接關(guān)系。專業(yè)人員可以用Visual Basi實現(xiàn)其他任何Windows編程語言的功能,而初學(xué)者只要掌握幾個關(guān)鍵詞就可以建立實用的應(yīng)用程序[2]。
Microsoft Communication 6.0控件簡稱MSComm控件,通過串行端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供全雙工串行通訊功能,并提供兩種處理通訊的方式。
a)事件驅(qū)動通訊。是處理串行端口交互作用的一種非常有效的方法。在許多情況下,事件發(fā)生時需要得到通知,可以利用MSComm控件的On-Comm事件捕獲并處理這些通訊事件。OnComm事件還可以檢查和處理通訊錯誤。用戶可以通過檢查CommEvent的屬性,來處理所有通訊事件和通訊錯誤。
b)查詢方式通訊。在程序的每個關(guān)鍵功能之后,可以通過檢查CommEvent的屬性來處理事件和通訊錯誤。
使用控件時,首先要把CommPort屬性設(shè)置為一個合法的端口號,其次要為Settings屬性設(shè)置一個通訊格式字。InputMode屬性確定Input屬性如何取回數(shù)據(jù):當(dāng)InputMode=0時,數(shù)據(jù)取回的格式是字符串;InputMode=1時,數(shù)據(jù)取回的格式是數(shù)據(jù)組的二進(jìn)制數(shù)據(jù)的數(shù)組。然后用PortOpen=True打開通訊端口,這樣就可以發(fā)送和接受數(shù)據(jù)了,完成發(fā)送和接收數(shù)據(jù)后,用PortOpen=False關(guān)閉通訊端口。部分初始化原代碼如下。
在通訊中若接收到數(shù)據(jù),控件會把它存入輸入緩沖區(qū),同時產(chǎn)生OnCome事件,通過設(shè)置InputLen屬性確定要讀取的字節(jié)數(shù),應(yīng)用程序可以從Input屬性中讀取并刪除接收緩沖區(qū)中的數(shù)據(jù)流。若設(shè)置InputLen為0,則會在Input屬性中讀取接收緩沖區(qū)中的全部數(shù)據(jù)。數(shù)據(jù)發(fā)送時,只需向Output屬性寫入數(shù)據(jù)流,MSComm控件就會自動傳輸文本數(shù)據(jù)或二進(jìn)制數(shù)據(jù)。用Output屬性傳輸文本數(shù)據(jù),必須定義一個包含一個字符串的Variant類型變量。發(fā)送二進(jìn)制數(shù)據(jù),必須傳遞一個包含字節(jié)數(shù)組的Variant類型變量到Output屬性。
Windows的工作機(jī)制簡單地說就是3個關(guān)鍵的概念,即窗口、事件和消息。Microsoft Window s操作系統(tǒng)通過給每一個窗口指定1個唯一的標(biāo)示號來管理所有的窗口,操作系統(tǒng)連續(xù)地監(jiān)視每一個窗口的活動或事件的信號。事件可以通過諸如單擊鼠標(biāo)或按下按鍵的操作而產(chǎn)生,也可以通過程序的控制而產(chǎn)生,甚至可以由另一個窗口的操作而產(chǎn)生。每發(fā)生一次事件,將引發(fā)一條消息發(fā)送至操作系統(tǒng)。操作系統(tǒng)處理該消息并廣播給其他窗口。然后,每一個窗口才能根據(jù)自身處理該條消息的指令而采取適當(dāng)?shù)牟僮鳌T趥鹘y(tǒng)的或 “過程化”應(yīng)用程序中,應(yīng)用程序自身控制了執(zhí)行哪一部分代碼和按何種順序執(zhí)行代碼。從第一行代碼執(zhí)行程序并按應(yīng)用程序中預(yù)定的路徑執(zhí)行,必要時調(diào)用過程。
在事件驅(qū)動的應(yīng)用程序中,代碼不是按照預(yù)定的路徑執(zhí)行,而是在響應(yīng)不同的事件時執(zhí)行不同的代碼片斷。事件可以由用戶操作出發(fā),也可以由來自操作系統(tǒng)或其他應(yīng)用程序的消息觸發(fā),甚至由應(yīng)用程序本身的消息觸發(fā)。這些事件的順序決定了代碼執(zhí)行的順序,因此,應(yīng)用程序每次運(yùn)行時所經(jīng)過的代碼的路徑都是不同的。
串行口通訊系統(tǒng)是由串行口通訊消息處理程序、文件操作程序等部分組成。串行口通訊程序由兩部分組成,一個部分為初始化程序,主要完成串行口通訊參數(shù)設(shè)置,開串行口功能;另一個部分為MSComm控件的OnComm事件響應(yīng)程序,該程序是通訊程序的核心,主要完成與單片機(jī)的數(shù)據(jù)交換,通訊協(xié)議與單片機(jī)的協(xié)議相似。OnComm事件響應(yīng)程序與單片機(jī)的串行口中斷服務(wù)程序類似。部分源代碼如下。
文件操作程序主要完成控制數(shù)據(jù)的管理,文件操作程序包括數(shù)據(jù)存儲程序和數(shù)據(jù)讀取程序。執(zhí)行數(shù)據(jù)存儲程序時,程序會調(diào)用CommonDialog控件的ShowSave方法顯示 “另存為”對話框提示用戶輸入要保存的文件名,用Open語句打開該文件,然后是將各對應(yīng)數(shù)組的值依次用Write語句寫入文件,用Close語句關(guān)閉文件。執(zhí)行數(shù)據(jù)讀取程序時,程序會調(diào)用CommonDialog控件的ShowOpen方法顯示 “打開”對話框提示用戶輸入要打開的文件名,用Open語句打開該文件,然后依次用Read語句讀取文件內(nèi)的數(shù)據(jù),存入各對應(yīng)數(shù)組,用Close語句關(guān)閉文件。
STIM測試平臺,其操作界面主要由通道名稱和測量數(shù)據(jù)兩部分組成。其中測量數(shù)據(jù)包括了溫度顯示、X方向加速度顯示、Y方向加速度顯示以及測量時間顯示?!帮@示測量時間”可以由時間函數(shù)直接實現(xiàn),而 “重新測量”按鈕即為清空按鈕。
程序中使用了3個Mscomm控件來分別實現(xiàn)三路信號的采集,每個通道按鈕控制1個通信控件,依次將3個變量采集并恢復(fù)出來。當(dāng)選中通道1時,COM1口打開,啟動Mscomm1實現(xiàn)溫度上傳;選中通道2時,COM2打開,啟動Mscomm2實現(xiàn)X方向加速度上傳;選中通道3時,COM3打開,啟動Mscomm3實現(xiàn) Y方向加速度上傳。當(dāng)所有Text清空后,則控制器再次啟動測量,得到另外一組測量數(shù)據(jù)。
智能變送器測試平臺與基于IEEE1451.2標(biāo)準(zhǔn)的網(wǎng)絡(luò)化智能傳感器一起,具有廣泛的應(yīng)用領(lǐng)域。
a)基于IEEE1451.2標(biāo)準(zhǔn)的網(wǎng)絡(luò)化智能傳感器不僅包括各種現(xiàn)場總線,也包括Internet等網(wǎng)絡(luò)。
b)在IEEE1451.2標(biāo)準(zhǔn)中,創(chuàng)新地定義了電子數(shù)據(jù)表格 TEDS(Transducer Electronic Data Sheet),是一個通用變送器模型,可以支持很多種類的變送器,使得變送器具有自我描述和自我識別的能力,實現(xiàn)了變送器的即插即用。
c)在工業(yè)自動化領(lǐng)域,尤其是在工廠控制現(xiàn)場可以實現(xiàn)電廠、變電站等電力設(shè)施中對電氣設(shè)備運(yùn)行環(huán)境的實時監(jiān)測。由于 TEDS被嵌入智能變送器,使得測試平臺的數(shù)據(jù)采集通道數(shù)可以根據(jù)要求進(jìn)行改變,因此,智能變送器測試平臺還可實現(xiàn)對電氣設(shè)備多項運(yùn)行參數(shù) (如溫度、濕度、壓力、流量等)的多通道采集,從而方便運(yùn)行人員和數(shù)據(jù)終端采集人員對整套設(shè)備的遠(yuǎn)程監(jiān)控。
智能變送器測試平臺通過對溫度、X方向加速度、Y方向加速度3個數(shù)據(jù)的采集和顯示,表明以Visual Basic為基礎(chǔ)所設(shè)計的網(wǎng)絡(luò)化智能傳感器測試平臺可以正確、實時顯示傳感器所采集的數(shù)據(jù),達(dá)到了實驗的預(yù)期目的。
[1] 吳仲城,戈瑜,虞承瑞,等.網(wǎng)絡(luò)化智能傳感器/執(zhí)行器的設(shè)計及接口標(biāo)準(zhǔn)[J].儀表技術(shù)與傳感器,2000(7):1-3.
[2] 黎明,劉成安.Visual Basic程序設(shè)計教程[M].成都:電子科技大學(xué)出版社,2004:1-4.