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