秦宏,王皓,曲延華,張玉梅
(1.沈陽工程學(xué)院自動化學(xué)院,遼寧沈陽110136;2.遼寧移動通信公司網(wǎng)絡(luò)管理中心,遼寧沈陽110179)
實驗臺是虛擬電子實驗室的核心部件,所有的電子器件、儀器儀表、電源等構(gòu)件都放在實驗臺上,通過導(dǎo)線連接形成實驗電路,因此實驗臺必須具備以下基本功能:
1)為用戶提供可選擇的常用器件,并在實驗臺上安放、承載、移動.
2)能夠重復(fù)調(diào)用同一個器件,實現(xiàn)控件的動態(tài)加載.例如,電路中的多個電阻不可能都具有為自己單獨編寫的“方法”,而是按類劃分,將所有新增加的電阻控件都放在電阻集合類中.
3)各實驗器件、儀器儀表、電源等控件間的連接功能,即布線、刪除、移動等.
4)實驗器件與實驗電路的合法性檢查.
5)控件的刪除.
6)電路圖的保存、讀取.
7)器件節(jié)點號的自動賦值、排序與計算,建立客戶端表面圖形化的電路與服務(wù)器端實際電路拓?fù)浣Y(jié)構(gòu)的映射關(guān)系.
虛擬實驗室的部件設(shè)計成ActiveX控件,因為基于網(wǎng)絡(luò)的虛擬電子實驗室承載的平臺是B/S結(jié)構(gòu),利用ActiveX強大的可移植性,ActiveX能被B/S和C/S結(jié)構(gòu)的軟件隨意調(diào)用,因此能夠嵌入到IE瀏覽器中.
首先,采用Active Bar 2.0控件作為器件的選擇菜單,將所有的器件集成到菜單中,用Picture控件作為擺放平臺.實驗臺的程序開發(fā)要具有選擇電子器件并添加到實驗臺、動態(tài)加載重復(fù)添加的器件等功能.
例如,用戶點擊電阻后再添加另外一個電阻時,系統(tǒng)不僅要自動命名不同的名稱,還要對不同的電阻能夠執(zhí)行同樣的“方法”.考慮通過“類”的方法實現(xiàn)重復(fù)調(diào)用,將所有新增加的控件都放在同一個集合類中.
下面程序表示動態(tài)加載1個示波器SSS.sbq,并將它加到集合類CtrlItems中去,完成1個控件的動態(tài)加載,方法如下:
ControlItem為集合中的單個元素,是程序編寫的另一個類,此類中定義了針對集合里的不同控件進行響應(yīng)的事件.例如,當(dāng)用戶添加自定義的電阻控件的1個端子,會通過CLICK中的raise event方法調(diào)用類模塊ControlItem中的方法.
以畫圖(線)的方式實現(xiàn)電子器件之間的連接.電子器件之間的連線不是簡單的圖形,每條線都是一個自定義line控件,line控件要有記錄線兩端的端口信息的功能,這樣才能使服務(wù)器端知道控件間的連接關(guān)系.增加連線,將器件端口連接起來需要完成的工作有:
1)修改連線兩端點的端口信息,通知對方端口某控件的某端口與之發(fā)生了連接.
2)對允許空閑的端口,將其狀態(tài)設(shè)置為“已連接”.同時,設(shè)置實驗臺上的端口以紅色顯示,標(biāo)注其允許空閑,例如,示波器的未用通道.
3)重新計算端口的節(jié)點號.節(jié)點號的賦值與計算要滿足多項規(guī)則,最主要的是一定要保證同一條線兩端的節(jié)點號一致以及不相連的節(jié)點的號值必須不同.
4)線的刪除.線的刪除將按照圖1所示流程進行.
圖1 線的刪除
控件(器件)的刪除首先要保證沒有其他器件與其相連,也就是說,必須先刪除連接線才能刪除器件.刪除的同時,將該器件由集合中刪除以釋放資源.
實驗臺ActiveX控件必須要對電路的合法性進行檢查,才能保證提交到服務(wù)器解析的電路數(shù)據(jù)無誤,否則利用服務(wù)器糾錯將會極大加重服務(wù)器的負(fù)荷.總之,一切在客戶端完成的檢查一定要在客戶端完成,提交到服務(wù)器上的數(shù)據(jù)一定是規(guī)范并且滿足解析輸入條件的.
合法項檢查一般包括:有參數(shù)的器件必須有賦值、器件端口無空閑狀態(tài)、器件節(jié)點號符合規(guī)定、有示波器和電源等必要設(shè)備以及其他條件.
用戶在實驗進行中可能會中途停止轉(zhuǎn)而進行其他操作,因此實驗臺需要具有對當(dāng)前搭接的電路圖進行保存的功能,當(dāng)再次進入實驗時,用戶可以重新讀取原來的進度.需要注意的是,電路的保存和讀取不僅要保存電路的圖形和配置數(shù)值,更重要的是電路的拓?fù)浣Y(jié)構(gòu)、連接關(guān)系、節(jié)點關(guān)系等都要進行保存.重新開始實驗即重新從數(shù)據(jù)庫中讀取原來的進度時,實驗臺上現(xiàn)有的電路必須先清除然后才能加載新數(shù)據(jù),否則將造成器件同名問題,因此實驗臺讀取進度的程序中要預(yù)先判斷當(dāng)前實驗臺上是否有數(shù)據(jù),如果有數(shù)據(jù)需要預(yù)先清除.
程序除了通過器件種類、配置數(shù)據(jù)獲得實際電路結(jié)構(gòu)以外,電路的連接關(guān)系是極其重要的,如果連接關(guān)系錯誤將得到截然相反的結(jié)論,解析程序是根據(jù)器件的節(jié)點號碼區(qū)分電路之間的連接關(guān)系的.如圖2所示,其中圖a中是人工配置的節(jié)點號碼,對應(yīng)的電路文件如圖b所示.
圖2 電路的節(jié)點號配置與生成的CIR電路文件
例如,CIR電路文件中的第二行“rb1 5 4 220k”說明在節(jié)點5、4之間有1個阻值為220 k的電阻,“c1 1 2 47uf”則代表節(jié)點1、2之間存在的元件是47μF的電容.
程序需要得知如何為電路分配節(jié)點號碼,不同的用戶做的電路完全迥異,取用元件的順序、連接導(dǎo)線的順序都各不相同,就算是對同一個實驗也不可能預(yù)先規(guī)劃一個完全一致的模版.因此,以顏色來類比節(jié)點號,采用了以下的節(jié)點號(顏色)配置方案.
1)同色原則
與同一節(jié)點(顏色)相連的所有連線兩端的節(jié)點號碼(顏色)均相同.
2)染色原則
2個或2個以上不同節(jié)點(顏色)互連時,所有節(jié)點都配置相同的節(jié)點號碼(顏色),而不管原先的節(jié)點號碼(顏色)是什么,這稱為染色原理.至于2個節(jié)點相遇成為1個節(jié)點后,該節(jié)點最后會被統(tǒng)合成什么數(shù)字的節(jié)點號,為使程序簡便,遵循最小數(shù)字優(yōu)先的原則,即用小數(shù)字(淺顏色)覆蓋大數(shù)字(深顏色).
根據(jù)以上同色原則和染色原則,用戶在給實驗臺添加器件和連線時,每個器件的各個端口首先按照拿取順序被分配一個從小到大的、唯一不重復(fù)的ID號碼,在器件連接中根據(jù)連接關(guān)系,按照同色原則和染色原則不斷重新賦值器件端口的節(jié)點號碼.所有節(jié)點的拓?fù)淇捎枚鏄浔闅v的方法確定每個節(jié)點的最終號碼,或者說最終顏色.
如圖3所示,當(dāng)用戶將某綠色節(jié)點⑤與某器件端口的紅色節(jié)點④連接時,根據(jù)染色原理,程序?qū)IR文件中所有與④相連的節(jié)點號都染色為紅色節(jié)點號④.為了不遺漏,通過二叉樹遍歷的方法搜索,或者搜索集合中所有已出現(xiàn)的節(jié)點號,找出所有的⑤并以④替換.在客戶端最后提交到服務(wù)器前,實驗臺還要對每個器件的節(jié)點號進行分析,查找錯誤并互動提示給用戶,例如接地節(jié)點序號不為0、不允許的空閑端口等問題.直到用戶的CIR文件完全通過合法性規(guī)則的檢驗,方可提交到服務(wù)器.
圖3 同色原則與染色原則
CIR文件的生成是實驗臺要完成另一個主要功能,也是實驗臺在向服務(wù)器傳送數(shù)據(jù)之前完成的最后一個工作,實現(xiàn)將用戶設(shè)計的電路編譯成電路CIR文件的功能.
在用戶完成了器件選擇、擺放、電路連接等基本操作以后,客戶端就根據(jù)用戶的連接信息自動生成服務(wù)器端進行電路仿真需要的數(shù)據(jù)文件,即CIR文件,然后將該CIR文件送給服務(wù)器,這樣可以大大減輕服務(wù)器端的壓力,使虛擬實驗系統(tǒng)的實時、多用戶等目標(biāo)有實現(xiàn)的可能.
在電路CIR文件的生成過程中,不僅需要生成電路信息,還需要根據(jù)用戶的儀表擺放和連接情況生成分析語句.例如,某雙蹤示波器的雙通道分別測量節(jié)點③、①的對地電壓,則需要生成相應(yīng)的時域分析語句為“.plot tran V(3,0)V(1,0)”.
每個用戶的CIR文件要寫入服務(wù)器固定目錄,每個用戶的CIR要進行區(qū)分,作為臨時文件,實驗結(jié)束后將該CIR文件刪除.
利用核心的同色算法和染色算法,完成了虛擬電子實驗室核心部件虛擬實驗臺的規(guī)則設(shè)計和搭建,使得自主開發(fā)的虛擬電子實驗臺具有器件的選擇、承載、連接、編輯以及電路的合法性檢查、保存、讀寫等功能,尤其是給出了一種表面圖形化的電路與實際電路拓?fù)浣Y(jié)構(gòu)映射關(guān)系的建立方法,實現(xiàn)了對選取的器件形成的任意電路的仿真.
[1] 冼凱儀.虛擬電子實驗臺在電子技術(shù)基礎(chǔ)實驗教學(xué)中的應(yīng)用[J].中國現(xiàn)代教育裝備,2008(3):48-50.
[2] 馬海瑞,周愛軍.基于Data Socket技術(shù)的Lab VIEW遠(yuǎn)程測控.佳工機電網(wǎng)[DB/OL].[2013-04-10].http://www.newmaker.com/art_16615.htm l.
[3] 楊中華.LabW indows_CVI網(wǎng)絡(luò)化通信的研究與實現(xiàn)[J].深圳職業(yè)技術(shù)學(xué)院學(xué)報,2009,8(5):50-53.
[4] 謝維成,李富干.基于WEB的虛擬實驗室平臺設(shè)計及軟件實現(xiàn)[J].西北大學(xué)學(xué)報:自然科學(xué)版,2008,27(1):69-72.
[5] 夏驚濤,穆道生.基于ActiveX控件的視頻監(jiān)控系統(tǒng)客戶端編程[J].廣播與電視技術(shù),2006(1):83-85.
[6] 張世榮,唐玉玲.用DataSocket實現(xiàn)本地/遠(yuǎn)程進程間通信[J/OL].[2013-6-19].http://plc.ca800.com/detail.asp?id=962.