孫利斌,郎誠(chéng)廉
(同濟(jì)大學(xué) 電子與信息工程學(xué)院,上海 200331)
由于地鐵列車控制電路的龐大、分布性、封裝性和聯(lián)鎖性等因素,目前的仿真軟件還無(wú)法滿足其各項(xiàng)要求。文獻(xiàn)[1]中所提到的Proteus 是現(xiàn)在非常流行的電路仿真軟件,由于地鐵列車控制電路中獨(dú)特的封裝模塊原因,Proteus 也無(wú)法搭建完整的地鐵列車控制電路。對(duì)于城軌列車培訓(xùn)系統(tǒng),有許多學(xué)者做了此方向的研究。文獻(xiàn)[2]中提出了針對(duì)鐵路調(diào)度員的培訓(xùn)系統(tǒng),主要介紹了系統(tǒng)的硬件結(jié)構(gòu)和軟件模塊的劃分。文獻(xiàn)[3]中研究了適合企業(yè)發(fā)展的列車駕駛員培訓(xùn)路線。文獻(xiàn)[4]中研究了列車仿真的關(guān)鍵技術(shù)。文獻(xiàn)[5]中研究了列車駕駛培訓(xùn)系統(tǒng)的基本模塊組成。而文獻(xiàn)[6]和文獻(xiàn)[7]都對(duì)模擬駕駛裝置進(jìn)行了研究,根據(jù)需求對(duì)整個(gè)工程的設(shè)計(jì)思路都進(jìn)行了詳細(xì)的介紹。這些研究都為本文提供了很好的參考。本文研究的地鐵列車控制電路建模與仿真系統(tǒng)可以實(shí)現(xiàn)用戶自行繪制電路圖并仿真的功能。系統(tǒng)將電路原理圖中的電氣元件做成專門的電氣控件將電路中的集成封裝電控單元做成處理器模塊,按實(shí)際運(yùn)行邏輯定義其引腳的輸入輸出;將繪制完整的電路圖數(shù)據(jù)保存下來,搜索其所有回路;按照回路中各個(gè)開關(guān)元器件的狀態(tài)以及電源狀態(tài)進(jìn)行動(dòng)態(tài)顯示。地鐵列車控制電路建模與仿真系統(tǒng)不僅可以讓電路開發(fā)人員在開發(fā)中進(jìn)行仿真驗(yàn)證,還可以對(duì)列車相關(guān)工作人員進(jìn)行培訓(xùn)。
整個(gè)電路圖的繪制主要分為3 個(gè)步驟:添加與輸入元件,編輯圖紙和生成圖紙信息。電路的信息主要包括元件信息、節(jié)點(diǎn)信息和標(biāo)注信息。所以分別建立元件類、節(jié)點(diǎn)類和標(biāo)注類這3 種對(duì)圖紙信息進(jìn)行操作。所繪制的電路原理圖數(shù)據(jù)應(yīng)包含元件類型、元件標(biāo)識(shí)、元件物理狀態(tài)和電狀態(tài)、元件引腳之間的連接關(guān)系以及元件與元件之間的邏輯聯(lián)結(jié)關(guān)系(如繼電器與其觸點(diǎn)開關(guān))等。
電路原理圖中的電氣控件可以分為2 種類型。普通電氣元件和集成封裝電控單元。將這2 種元件都做成專門的電氣控件,普通電氣元件就按照其實(shí)際的功能邏輯做成控件;將電路中的集成封裝電控單元做成處理器功能模塊,按實(shí)際運(yùn)行邏輯定義其引腳的輸入輸出。每個(gè)電氣控件作為一個(gè)元件,元件庫(kù)應(yīng)包含以下信息:元件總數(shù)n,元件類型號(hào),元件名,矩形框的兩頂點(diǎn)參數(shù),點(diǎn)的個(gè)數(shù)和坐標(biāo),線段的條數(shù)和坐標(biāo),弧線的條數(shù)和參數(shù)以及引腳的個(gè)數(shù)和坐標(biāo)等。
繪圖模塊通過MFC[8]類函數(shù)實(shí)現(xiàn)通過鼠標(biāo)的點(diǎn)擊與拖動(dòng)等操作對(duì)圖形元素進(jìn)行插入、刪除、平移和旋轉(zhuǎn)等編輯功能。圖1 為繪圖時(shí)的界面,左邊為元件庫(kù),可以直接拖拽入畫板使用。
圖1 繪圖界面
在繪圖時(shí),直接訪問圖紙中圖形元素的屬性數(shù)據(jù)進(jìn)行元件的圖形數(shù)據(jù)、邏輯數(shù)據(jù)和標(biāo)注數(shù)據(jù)的修改,圖形元素的數(shù)據(jù)可分為類型、坐標(biāo)、圖形數(shù)據(jù)、邏輯連接數(shù)據(jù)和實(shí)體標(biāo)注數(shù)據(jù)。
類型為此圖形元素的類型,例如開關(guān)類、繼電器類、標(biāo)注類等。圖形數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)為:
圖形數(shù)據(jù)修改界面,如圖2 所示。
圖2 元件圖形數(shù)據(jù)修改界面
邏輯連接數(shù)據(jù)有2 種,導(dǎo)線連接數(shù)據(jù)和邏輯聯(lián)結(jié)數(shù)據(jù)。導(dǎo)線連接數(shù)據(jù)包含連接方式、元件引腳點(diǎn)、連接對(duì)象引腳點(diǎn)。邏輯聯(lián)結(jié)數(shù)據(jù)包含連接方式、聯(lián)結(jié)位置和聯(lián)結(jié)元件的標(biāo)注名。實(shí)體標(biāo)注數(shù)據(jù)包含標(biāo)注信息、對(duì)齊方式、標(biāo)注坐標(biāo)、字體、大小、顏色、方向和效果。
元件和標(biāo)注的設(shè)置界面都屬于圖形數(shù)據(jù),也歸納在圖2 中,詳細(xì)數(shù)據(jù)輸入時(shí)通過屬性頁(yè)切換輸入。連接線也屬于元件類,其圖形數(shù)據(jù)在連接2 元件后自動(dòng)生成,而其他元件的圖形數(shù)據(jù)在繪制元件時(shí)自動(dòng)生成,之后的拖拽修改操作都會(huì)使數(shù)據(jù)發(fā)生相應(yīng)變化,也可以進(jìn)入圖形數(shù)據(jù)界面手動(dòng)修改。元件的邏輯連接數(shù)據(jù)在連接兩元件后自動(dòng)生成。元件的標(biāo)注直接在其屬性數(shù)據(jù)中進(jìn)行添加。圖紙中的其他標(biāo)注直接右鍵進(jìn)行添加。
在圖紙繪制完畢保存時(shí),會(huì)對(duì)電路圖中的元件、節(jié)點(diǎn)、標(biāo)注及它們之間的關(guān)系進(jìn)行保存,生成圖紙信息文件。此外,圖紙信息還包括畫板的大小、坐標(biāo)及顯示坐標(biāo)間映射關(guān)系;所有元件的線性鏈表;節(jié)點(diǎn)的線性鏈表;標(biāo)注的線性鏈表等。圖紙數(shù)據(jù)結(jié)構(gòu),如圖3 所示。
圖3 圖紙數(shù)據(jù)結(jié)構(gòu)
電路中的元素是以鏈表的形式保存,并非單純的圖形坐標(biāo),這樣才便于回路搜索。電路圖是基于圖論的數(shù)學(xué)模型[9],在加載圖紙文件后,將電路鏈表數(shù)據(jù)轉(zhuǎn)化為節(jié)點(diǎn)與支路的有向圖模型,利用遍歷搜索算法搜索出每一條回路,再根據(jù)回路中各元件的狀態(tài)確定回路的通斷,便得到所有的回路信息。系統(tǒng)將搜索到的回路信息放入內(nèi)存,以便隨時(shí)進(jìn)行動(dòng)態(tài)仿真。
為了便于搜索,將電路轉(zhuǎn)化為節(jié)點(diǎn)與支路的模型。由于有二極管的存在,需要將支路分為2 個(gè)方向,建立有向圖模型。
節(jié)點(diǎn)屬于邏輯數(shù)據(jù),是沒有方向性的。所以可以直接根據(jù)前面繪圖得到的節(jié)點(diǎn)鏈表得到節(jié)點(diǎn)集合:
其中,n為節(jié)點(diǎn)個(gè)數(shù)。
支路是由元件組成的,或者說在有向圖中,元件就是支路,由于方向的限制,每個(gè)元件對(duì)應(yīng)2 條支路,可以得到支路的集合如下:
其中,B為含有2b個(gè)元素的集合,包含第1 方向支路和第2 方向支路各b條。
根據(jù)支路和節(jié)點(diǎn)的關(guān)系(每條支路對(duì)應(yīng)2 個(gè)節(jié)點(diǎn)),可以得到支路與節(jié)點(diǎn)的關(guān)聯(lián)矩陣:
將支路看作有向邊,節(jié)點(diǎn)看作頂點(diǎn)??梢缘玫接邢蜻吪c頂點(diǎn)間的完全關(guān)聯(lián)矩陣:
由于深度優(yōu)先遍歷搜索算法具有代碼簡(jiǎn)單,占內(nèi)存小的優(yōu)點(diǎn),所以本文采用深度優(yōu)先遍歷搜索算法。深度優(yōu)先遍歷搜索算法利用有向圖的鄰接表搜索出起點(diǎn)到終點(diǎn)間的所有單向通路。實(shí)際運(yùn)行時(shí)的鄰接表就是上一節(jié)得到的REV,將頂點(diǎn)放在第1 行,終點(diǎn)放置最后1 行。從第1 行搜索第1 個(gè)1,這就是起點(diǎn)出發(fā)的位置,然后在該列搜索第1 個(gè)?1,這就搜索完了第1 條支路。再?gòu)拇诵兴阉鞯? 個(gè)1,如此往復(fù)直到到達(dá)終點(diǎn),就找到了一條回路。然后再跳回至倒數(shù)第2 個(gè)節(jié)點(diǎn),繼續(xù)在那行向后找1。由于搜索的回路不能重復(fù),所以必須記錄每一個(gè)節(jié)點(diǎn)。當(dāng)搜索完首行對(duì)應(yīng)的所有1 時(shí)結(jié)束搜索。
深度優(yōu)先遍歷搜索通常是通過遞歸搜索實(shí)現(xiàn)的。先從首節(jié)點(diǎn)開始,保存此節(jié)點(diǎn)位置,搜索并判斷下一節(jié)點(diǎn)是否為尾節(jié)點(diǎn)。若是,保存回路,結(jié)束搜索;若不是,將此節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn),再搜索它的下一節(jié)點(diǎn)進(jìn)行判斷,直到結(jié)束。搜索流程,如圖4 所示。
電路回路的狀態(tài)分為電狀態(tài)和物理狀態(tài),確定邏輯為:當(dāng)回路中所有元件物理狀態(tài)為1 時(shí)(元件物理狀態(tài)代表元件的通斷,如開關(guān)斷開時(shí)物理狀態(tài)為0,閉合時(shí)為1),回路物理狀態(tài)為1;當(dāng)回路物理狀態(tài)為1 且電源狀態(tài)為1 時(shí),回路電狀態(tài)為1;當(dāng)回路電狀態(tài)為1 時(shí),所有元件的電狀態(tài)為1。元件的物理狀態(tài)和電狀態(tài)是動(dòng)態(tài)仿真的基本依據(jù)。
圖4 搜索流程
控制電路仿真模塊根據(jù)元件、回路及電源的狀態(tài)進(jìn)行動(dòng)態(tài)仿真。仿真電路按照上海地鐵3 號(hào)線的列車控制電路繪制。當(dāng)電路圖加載時(shí)會(huì)對(duì)電路元件進(jìn)行初始化,然后根據(jù)仿真界面輸入的信號(hào)對(duì)電路元件狀態(tài)進(jìn)行控制,根據(jù)各元件狀態(tài)的變化進(jìn)行邏輯運(yùn)算得到回路狀態(tài)。根據(jù)回路的狀態(tài)對(duì)回路和元件的顏色及位置進(jìn)行相應(yīng)的改變來達(dá)到仿真控制的效果。
為方便仿真演示和教學(xué)形象生動(dòng),系統(tǒng)提供了仿真控制面板供用戶操作。文獻(xiàn)[10]中設(shè)計(jì)的司機(jī)駕駛臺(tái)操作界面中顯示了城軌列車的基本屬性,最大化地利用了界面空間。本文為了讓用戶能夠更接近真實(shí)操作的環(huán)境,用戶仿真操作界面模仿實(shí)際司機(jī)駕駛臺(tái)繪制。圖5 為仿真操作界面局部圖。用戶可以直接點(diǎn)擊圖中旋鈕進(jìn)行仿真輸入,其中,有燈的旋鈕可以顯示輸出,操作界面上還配有壓力表、電壓表等顯示設(shè)備,使用戶能夠像駕駛員一樣進(jìn)行操作駕駛及仿真。
圖5 仿真操作界面局部
以列車激活電路為例,通過打開列車控制按鈕,對(duì)比打開按鈕前后的電路狀態(tài),演示電路動(dòng)態(tài)仿真過程。在仿真過程中,紅色的線路為得電狀態(tài),黑色的為非得電狀態(tài)。
在沒有按下按鈕時(shí),電路狀態(tài),如圖6 所示。當(dāng)按下列車控制按鈕時(shí),電路狀態(tài),如圖7 所示。
圖6 按下列車控制按鈕前電路狀態(tài)
由圖6 所知,在沒有按下按鈕時(shí),只有110 V永久列車線有電。當(dāng)列車控制按鈕按下后,列車控制延時(shí)繼電器通過列車控制按鈕得電,WUDYR/3.2觸點(diǎn)吸合,松開列車控制按鈕,列車控制延時(shí)繼電器通過WUDYR/3.2 觸點(diǎn)繼續(xù)得電。仿真結(jié)果與理論一致,滿足仿真要求。
圖7 按下列車控制按鈕后電路狀態(tài)
地鐵列車控制電路建模與仿真系統(tǒng)不僅能夠?qū)刂齐娐坊驹M(jìn)行建模,還能將電路中的集成封裝電控單元做成處理器模塊,這不僅能夠?qū)﹄娐穼?shí)現(xiàn)動(dòng)態(tài)仿真及驗(yàn)證,還能在未來地鐵列車不斷升級(jí)改動(dòng)后,將新的電路元件及封裝電控單元繼續(xù)添加到元件庫(kù)中供相關(guān)人員使用。而且動(dòng)態(tài)仿真功能可以對(duì)地鐵列車工作人員進(jìn)行培訓(xùn),使工作人員可以更直觀、有效地學(xué)習(xí)電路工作原理。