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