王慶勝,杜建新,朱 罕,張興超
(上海富欣智能交通控制有限公司,上海 201203)
軌道交通軟件開發(fā)中的數(shù)據(jù)結(jié)構(gòu)定義方法
王慶勝,杜建新,朱 罕,張興超
(上海富欣智能交通控制有限公司,上海 201203)
本文介紹一種軌道交通軟件開發(fā)中的數(shù)據(jù)結(jié)構(gòu)定義方法,步驟包括:形成設(shè)備基礎(chǔ)信息表;形成設(shè)備對(duì)象到邊及控制區(qū)域的第二索引表。采用這種數(shù)據(jù)描述方法能減少映射表的使用,使數(shù)據(jù)操作簡(jiǎn)單、一致和方便,符合軌道交通軟件開發(fā)對(duì)數(shù)據(jù)的實(shí)時(shí)性和安全性的要求。
數(shù)據(jù)結(jié)構(gòu);軌道交通;實(shí)時(shí)性
在軟件開發(fā)過程中,數(shù)據(jù)結(jié)構(gòu)是軟件成功的關(guān)鍵,軌道交通中數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)需要符合一定的標(biāo)準(zhǔn),如EN50128標(biāo)準(zhǔn)。EN50128中的安全規(guī)則具有數(shù)據(jù)安全、無動(dòng)態(tài)內(nèi)存等特點(diǎn),它強(qiáng)制不能使用動(dòng)態(tài)分配內(nèi)存,減少指針的使用及盡量提高軟件的實(shí)時(shí)性。
軌道交通中線路數(shù)據(jù)需要存儲(chǔ)到軟件內(nèi)部,供軟件在特定條件下進(jìn)行線路數(shù)據(jù)的查找、排序及計(jì)算使用,軌道交通軟件開發(fā)中的數(shù)據(jù)結(jié)構(gòu)通常由兩種用途的表組成:
(1)基礎(chǔ)信息表:設(shè)備(信號(hào)機(jī),信標(biāo),站臺(tái),計(jì)軸區(qū)段等)或邏輯元素(限速區(qū)段,坡度等)的屬性信息;
(2)設(shè)備索引表:設(shè)備在邊(Edge),控制區(qū)域(ZC, Zone Control)的范圍表。
前者主要是設(shè)備及邏輯元素的各類信息,包括位置,方向,屬性值。后者主要是通過邊,控制區(qū)域?qū)υO(shè)備及邏輯元素進(jìn)行查找。
軌道交通中的線路拓?fù)鋱D如圖1所示。為有向圖且包括一系列的節(jié)點(diǎn)和具有方向的邊,圖1中的節(jié)點(diǎn)都用“節(jié)點(diǎn)”加一個(gè)數(shù)字表示,邊都用“邊”加一數(shù)字表示。每個(gè)邊和節(jié)點(diǎn)在系統(tǒng)中獨(dú)一無二地定義,用這種方式來描述軌道的連接關(guān)系和朝向;每個(gè)節(jié)點(diǎn)都有一個(gè)物理的約束來限制可以穿越它的路徑的數(shù)量,有向圖會(huì)保存從指定的邊沿著指定的方向到達(dá)的下一條邊。典型的數(shù)據(jù)結(jié)構(gòu)(設(shè)備基礎(chǔ)信息)是表達(dá)設(shè)備(或者邏輯元素)在線路上的具體位置的,可以是一個(gè)坐標(biāo)點(diǎn)或者標(biāo)明起始點(diǎn)及終點(diǎn)的區(qū)域信息。
圖2說明了一個(gè)典型的數(shù)據(jù)結(jié)構(gòu)定義方式。表(Elem Record Array)由多個(gè)設(shè)備對(duì)象組成,設(shè)備對(duì)象對(duì)應(yīng)于設(shè)備基礎(chǔ)信息表的一行,每個(gè)設(shè)備對(duì)象定義了設(shè)備或邏輯元素的屬性,圖中每個(gè)設(shè)備對(duì)象的含義是:{設(shè)備ID,{方向,所在邊的ID,起始點(diǎn),終點(diǎn)}},如圖2第1行的設(shè)備對(duì)象為{1,{ORIENT_POSITIVE_common,1,0,168499 }},其中設(shè)備ID為1,ORIENT_POSITIVE_common表示正方向,邊的ID為1;區(qū)域表示設(shè)備在所對(duì)應(yīng)的邊上的占用區(qū)域,用在設(shè)備在邊上的一個(gè)起點(diǎn)和一個(gè)終點(diǎn)表示,如圖2第1行的設(shè)備對(duì)象的區(qū)域的起始點(diǎn)為0,區(qū)域的終點(diǎn)為168499。這樣就由多個(gè)所述設(shè)備對(duì)象形成一個(gè)數(shù)組,每個(gè)所述設(shè)備對(duì)象為該數(shù)組的一個(gè)元素。
圖1 線路拓?fù)鋱D
圖2 設(shè)備基礎(chǔ)信息表
為了方便在邊及控制區(qū)域上查找到對(duì)應(yīng)的設(shè)備信息,需要對(duì)邊或者控制區(qū)域上的設(shè)備進(jìn)行索引。如圖3所示,是現(xiàn)有設(shè)備對(duì)象到邊/控制區(qū)域的索引表示意圖。以圖3(a)為例,設(shè)備對(duì)象到邊的索引表(Elem in Edge)由多個(gè)行組成,每一個(gè)行的含義為對(duì)應(yīng)邊上的設(shè)備索引號(hào)即{設(shè)備索引號(hào)起點(diǎn),設(shè)備索引號(hào)終點(diǎn)}。如行中的第一行為{0,3},對(duì)應(yīng)于圖2中的邊的ID為1的4個(gè)所述設(shè)備對(duì)象,設(shè)備索引號(hào)起點(diǎn)0對(duì)應(yīng)于設(shè)備ID1,設(shè)備索引號(hào)終點(diǎn)3對(duì)應(yīng)于設(shè)備ID4。區(qū)域控制索引表也是如此。
圖3 (b)設(shè)備在控制區(qū)域中的索引表
圖3 (a)設(shè)備在邊上的索引表
但在實(shí)際線路中,往往還有更加復(fù)雜的情況,例如各設(shè)備對(duì)象的設(shè)備ID并不是按照邊的ID,區(qū)域的ID來進(jìn)行排序的,這樣就出現(xiàn)了另外兩張映射表,如圖4所示,是現(xiàn)有設(shè)備對(duì)象到邊的索引關(guān)系示意圖;在圖2所示的設(shè)備基礎(chǔ)信息表和圖3(a)所示的設(shè)備對(duì)象到邊的索引表之間還增加了一個(gè)索引表即Map Index in Edge,索引表顯示了設(shè)備基礎(chǔ)信息表的設(shè)備ID和索引表的設(shè)備索引號(hào)之間的映射關(guān)系,相互對(duì)應(yīng)的設(shè)備基礎(chǔ)信息表的設(shè)備ID和索引表的設(shè)備索引號(hào)之間用虛線相連,索引表中的前4行對(duì)應(yīng)到索引表的第1行中,索引表中的后2行對(duì)應(yīng)到索引表的第2行中。
圖4 設(shè)備信息對(duì)應(yīng)到邊的關(guān)系說明圖
如圖5所示,是現(xiàn)有設(shè)備對(duì)象到區(qū)域的索引關(guān)系示意圖;在圖2所示的設(shè)備基礎(chǔ)信息表和圖3(b)所示的設(shè)備對(duì)象到區(qū)域的索引表之間還增加了一個(gè)索引表即Map Index in ZC,索引表顯示了設(shè)備基礎(chǔ)信息表的設(shè)備ID和索引表的設(shè)備索引號(hào)之間的映射關(guān)系,相互對(duì)應(yīng)的設(shè)備基礎(chǔ)信息表的設(shè)備ID和索引表的設(shè)備索引號(hào)之間用虛線相連,索引表中的前3行對(duì)應(yīng)到索引表的第1行中,索引表中的后3行對(duì)應(yīng)到索引表的第2行中。
由上可知,當(dāng)實(shí)際線路比較復(fù)雜時(shí),各設(shè)備對(duì)象的設(shè)備ID并不是按照邊的ID或區(qū)域的ID來進(jìn)行排序的,這會(huì)使得映射關(guān)系變得復(fù)雜,索引表增多。而索引表的增多,會(huì)使得軟件中指針的使用增多,軟件的實(shí)時(shí)性較差,安全性也較差與軌道交通軟件開發(fā)的要求不相符。隨著后期數(shù)據(jù)的刪減,也將帶來數(shù)據(jù)表維護(hù)過多,容易出現(xiàn)錯(cuò)誤的問題。
圖5 設(shè)備信息對(duì)應(yīng)到控制區(qū)域的關(guān)系說明圖
圖6 設(shè)備信息對(duì)應(yīng)到邊/控制區(qū)域的關(guān)系說明圖
本文采用的設(shè)備信息與邊/控制區(qū)域?qū)?yīng)的關(guān)系說明如圖6所示。具體的查找方式是:
(1) 根據(jù)軌道交通中所采用的真實(shí)設(shè)備、由行車需要而劃分的虛擬區(qū)域及信息形成相對(duì)應(yīng)的設(shè)備對(duì)象,由各所述設(shè)備對(duì)象組成設(shè)備基礎(chǔ)信息表,所述設(shè)備基礎(chǔ)信息表的各所述設(shè)備對(duì)象的屬性信息包括設(shè)備ID、邊、方向和區(qū)域,所述設(shè)備ID為對(duì)應(yīng)的所述真實(shí)設(shè)備、所述虛擬區(qū)域或所述信息的標(biāo)識(shí)符,所述邊和所述真實(shí)設(shè)備、所述虛擬區(qū)域或所述信息所處的邊相對(duì)應(yīng),所述方向?yàn)樗鲞叺姆较颍鰠^(qū)域和所述真實(shí)設(shè)備、所述虛擬區(qū)域或所述信息所處的區(qū)域相對(duì)應(yīng)。
(2)形成所述設(shè)備對(duì)象到所述邊的第一索引表,方法為:遍歷所述設(shè)備基礎(chǔ)信息表中的每一個(gè)所述設(shè)備對(duì)象,將所述設(shè)備基礎(chǔ)信息表中所述邊和所述方向相同的所述設(shè)備對(duì)象篩選出來、將所篩選出來的所述設(shè)備對(duì)象的所述設(shè)備ID進(jìn)行排序并寫入到所述第一索引表中并形成所述第一索引表中的一行。
(3)形成所述設(shè)備對(duì)象到所述控制區(qū)域的第二索引表,方法為:遍歷所述設(shè)備基礎(chǔ)信息表中的每一個(gè)所述設(shè)備對(duì)象,將所述設(shè)備基礎(chǔ)信息表中所述區(qū)域相同的所述設(shè)備對(duì)象篩選出來、將所篩選出來的所述設(shè)備對(duì)象的所述設(shè)備ID進(jìn)行排序并寫入到所述第二索引表中,形成所述第二索引表中的一行。
本方法在軌道交通的一個(gè)子系統(tǒng)的軟件中實(shí)施后,將原來數(shù)據(jù)結(jié)構(gòu)中定義的56張數(shù)據(jù)表結(jié)構(gòu)減少到了37張,同時(shí)也減少了處理數(shù)據(jù)表的函數(shù)數(shù)量及復(fù)雜度,數(shù)據(jù)定義的代碼行數(shù)減少了25%。在減少了操作的復(fù)雜度的同時(shí)增加了操作的一致性,對(duì)于理解和維護(hù)數(shù)據(jù)表結(jié)果有現(xiàn)實(shí)意義。
[1]嚴(yán)蔚敏,吳偉民. 數(shù)據(jù)結(jié)構(gòu)(C語言版)[M]. 北京:清華大學(xué)出版社,2011.
[2]朗宗棪,曾小清,姜季生. 軌道交通信號(hào)控制基礎(chǔ)[M].上海:同濟(jì)大學(xué)出版社,2007.
責(zé)任編輯 方 圓
Data structure def i nition in software development of Urban Transit
WANG Qingsheng, DU Jianxin, ZHU Han, ZHANG Xingchao
( Shanghai Fuxin Intelligent Traff i c Control Co., LTD, Shanghai 201203, China )
This paper introduced a method of data structure definition in software development of Urban Transit, which included the following step, such as building up the device basic information table, forming up the map table from device object to edge or zone control. The table usage could be reduced by using this method. It was simplicity, consistently and conveniently in operating. This method could meet the requirement of real-time and safety in software development of Urban Transit.
data structure; Urban Transit; real-time
U2∶TP39
A
1005-8451(2014)12-0046-03
2014-06-01
上海市科學(xué)技術(shù)委員會(huì)軌道交通運(yùn)控系統(tǒng)定位技術(shù)研究及驗(yàn)證(13511503100)。
王慶勝,高級(jí)工程師;杜建新,工程師。