衛(wèi)晴雯
(西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院, 成都 611756)
區(qū)間綜合監(jiān)控系統(tǒng)(QJK)按照安全完整性等級(SIL)4級的要求設(shè)計,在安全性、可靠性、可用性和可維護(hù)性方面都有較高要求,為了保證列車的安全運(yùn)行,在工程實施前必須對其進(jìn)行嚴(yán)格的測試。工程數(shù)據(jù)的正確性和可靠性是保證QJK安全使用的前提和基礎(chǔ)。QJK的工程數(shù)據(jù)和驅(qū)采配線表的數(shù)據(jù)應(yīng)該保持一致,但進(jìn)行測試時使用的是配置文件,難免有驅(qū)采配線表和配置文件信息不一致的情況。因此,對工程數(shù)據(jù)的校驗已成為必不可少的環(huán)節(jié)。
2015年,中國鐵道科學(xué)研究院的陳倩佳學(xué)者設(shè)計出一種對列控數(shù)據(jù)自動審核的工具[1],通過將列控工程數(shù)據(jù)表導(dǎo)入到自動審核工具中,利用數(shù)據(jù)審核邏輯模塊,對原始數(shù)據(jù)進(jìn)行審核,減少了人為錯誤,提高了審核效率。2017年,許風(fēng)偉工程師提出列控數(shù)據(jù)審核方法[2],分別對基礎(chǔ)數(shù)據(jù)、工程數(shù)據(jù)表、列控配置數(shù)據(jù)制定了審核流程,對實際問題進(jìn)行了分析,并提出了審核方法,幫助工作人員及時有效發(fā)現(xiàn)問題。
本文提出的校驗方法是從讀取數(shù)據(jù)到核對數(shù)據(jù)的方法集合,包括:(1)分析驅(qū)采配線表的編制規(guī)則并確定讀取數(shù)據(jù)方式(2)根據(jù)數(shù)據(jù)結(jié)構(gòu)確定核對順序以及期間名稱處理問題(3)通過統(tǒng)計大量繼電器名稱類型確定對應(yīng)關(guān)系得到核對方法。本文利用上述校驗方法設(shè)計并實現(xiàn)了基于Python的QJK工程數(shù)據(jù)自動校驗工具。和人工核對數(shù)據(jù)相比,顯著提高了數(shù)據(jù)核對速度、覆蓋率以及準(zhǔn)確率。
普速線路信號控制系統(tǒng)主要由車站聯(lián)鎖、區(qū)間閉塞電路、軌道電路、區(qū)間信號機(jī)等設(shè)備組成。除了車站聯(lián)鎖外,其他組成部分都是自動閉塞區(qū)間的信號設(shè)備。自動閉塞區(qū)間信號設(shè)備主要存在問題有:電纜施工成本高、繼電器電路自身缺陷和限制、區(qū)間分路不良、信號設(shè)備缺乏監(jiān)測等。QJK適用于普速鐵路,采用安全計算機(jī)技術(shù)和安全通信技術(shù)[3],具有站間安全信息傳輸、區(qū)間方向控制和區(qū)間占用邏輯檢查等功能,各功能之間相互獨(dú)立,可獨(dú)立在現(xiàn)場運(yùn)用,也可組合運(yùn)用[4-5],能夠有效解決自動閉塞區(qū)間信號設(shè)備的上述問題。
QJK設(shè)備硬件基于二乘二取二冗余安全平臺,具有較高的可靠性和安全性,并滿足SIL4級的要求,車站之間依據(jù)RSSP-I安全通信協(xié)議來保障信息交互安全。QJK對外接口如圖 1所示,QJK通過驅(qū)動采集單元與繼電器接口來采集繼電器狀態(tài)并輸出繼電器驅(qū)動信息,采用光纖進(jìn)行站間通信,與相鄰QJK交互站間復(fù)示、區(qū)間運(yùn)行方向控制、區(qū)間占用檢查等信息。系統(tǒng)可通過通信或繼電接口方式實現(xiàn)解鎖盤(RJP)的表示燈和按鈕狀態(tài)的驅(qū)動和采集,實時向集中監(jiān)測設(shè)備傳輸QJK的狀態(tài)信息、報警信息和區(qū)間閉塞分區(qū)的邏輯狀態(tài)。聯(lián)鎖和CTC接口為預(yù)留接口。一般一個車站配備一個QJK。
(1)站間安全信息傳輸功能。
通過采集本站站聯(lián)繼電器,將繼電器狀態(tài)轉(zhuǎn)化為數(shù)字信號通過光纖傳輸?shù)洁徴?,并在鄰站?qū)動相應(yīng)的復(fù)示繼電器,完成站聯(lián)繼電器狀態(tài)的透明傳輸功能。鐵路線路車站與車站之間需要進(jìn)行信息交互才能實現(xiàn)列車從一個車站到下一個車站的連續(xù)運(yùn)行。
圖 1 QJK系統(tǒng)接口示意圖
(2)區(qū)間方向控制功能。
在自動閉塞線路上,普速線一般采用四線制方向電路實現(xiàn)站間的方向控制和閉塞控制。站間采用4芯的電纜傳遞方向控制信息。QJK采用軟件邏輯和通信的方式實現(xiàn)區(qū)間的方向控制和閉塞控制。
(3)區(qū)間占用邏輯檢查控制功能。
區(qū)間占用邏輯檢查控制功能以區(qū)間閉塞分區(qū)為邏輯檢查單位,根據(jù)列車在區(qū)間占用出清閉塞分區(qū)的順序,對閉塞分區(qū)的占用和出清進(jìn)行邏輯檢查,邊界區(qū)段與普通區(qū)段處理邏輯相同,當(dāng)發(fā)現(xiàn)不符合列車正常運(yùn)行的出清邏輯時,將該閉塞分區(qū)判為失去分路,對外提供故障區(qū)段的防護(hù)條件,并進(jìn)行報警。通過信號許可對區(qū)間運(yùn)行的列車進(jìn)行區(qū)域跟蹤,提高區(qū)間占用邏輯檢查的準(zhǔn)確性,減少誤報和漏報。
QJK在投入現(xiàn)場使用前,需要結(jié)合線路上各個車站的實際工程數(shù)據(jù)和環(huán)境加以配置,并進(jìn)行測試。測試通過方可投入使用,否則需要進(jìn)行修改、變更、升級等操作,直到測試通過。QJK配置的工程數(shù)據(jù)叫維護(hù)終端數(shù)據(jù),其正確性十分重要,校驗依據(jù)是設(shè)計院提供的驅(qū)采配線表(IO配線表),前者是可擴(kuò)展標(biāo)記語言(xml,Extensible Markup Language)文件,后者是計算機(jī)輔助設(shè)計(CAD,Computer Aided Design)文件。在進(jìn)行QJK工程數(shù)據(jù)測試之前要進(jìn)行維護(hù)終端數(shù)據(jù)校驗,校驗通過,才能進(jìn)行后續(xù)工作。
驅(qū)采配線表是設(shè)計院根據(jù)實際情況編制的繼電器信息表,用于做為信號設(shè)備研發(fā)的數(shù)據(jù)來源,表中存儲著繼電器的驅(qū)動采集數(shù)據(jù),用來保存與繼電器驅(qū)動采集電路相關(guān)的各項信息。QJK需要采集現(xiàn)場繼電器實時信息進(jìn)行分析判斷,進(jìn)而根據(jù)相應(yīng)的邏輯關(guān)系對繼電器進(jìn)行驅(qū)動,因此繼電器既需要采集電路又需要驅(qū)動電路。驅(qū)采配線表中有采集表和驅(qū)動表,兩表的格式保持一致。
驅(qū)采配線表的數(shù)據(jù)主要包括驅(qū)動采集類型、控制柜端子名稱、碼位名稱(繼電器名稱)、組合端子和接口柜端子等。不同設(shè)計院提供的驅(qū)采配線表數(shù)據(jù)內(nèi)容不完全相同,但都包括驅(qū)動采集類型、控制柜端子名稱和碼位名稱(繼電器名稱)。在QJK已有的驅(qū)采配線表中,將編制規(guī)則分為3類。
2.2.1 一行一點位
圖2中的驅(qū)采配線表顯示采集板的表頭和1行繼電器信息。這種驅(qū)采配線表編制規(guī)則是1個繼電器信息占用1行。控制柜端子名稱中包含板號和點位,由AC01-1可知板號為1且點位為1,碼位名稱0931G-QGJ也就是繼電器名稱。每1塊采集板上有32個點位,在此格式下每1行是1個點位,放置1個繼電器的信息。
圖 2 一行一點位編制規(guī)則的驅(qū)采配線表示意圖
2.2.2 三行兩點位
圖3、圖4和圖5中的驅(qū)采配線表顯示采集板的表頭加2個繼電器信息。這種驅(qū)采配線表的編制規(guī)則是2個繼電器占用3行。圖3中,由JKD-305可知板號為5,1和19分別表示點位1和點位19,7783G-FHJ和7896G-FHJ分別是與這2個點位相對應(yīng)的繼電器名稱。圖 3和圖 4中的驅(qū)采配線表編制規(guī)則都是普通的三行兩點位,雖然圖 3中3行的中間行為空,但和圖 4一樣,都是只讀取3行中的第1行作為繼電器名稱。圖5中,繼電器的名稱分別是XG1LQGG-FHJ(1)-1和7144G-FHJ(10)-1。與圖3、圖4相比,這種特殊的三行兩點位讀取繼電器名稱的方式不同,這種繼電器名稱需要讀取三行中的第一行和第二行。
圖 3 普通二行三點位編制規(guī)則的驅(qū)采配線表示意圖(1)
圖 4 普通二行三點位編制規(guī)則的驅(qū)采配線表示意圖(2)
圖 5 特殊二行三點位編制規(guī)則的驅(qū)采配線表示意圖
自動校驗工具在Wing IDE 6.0的集成開發(fā)環(huán)境下,使用Python2.7 進(jìn)行開發(fā)。Python是高層次的結(jié)合了解釋性、編譯性、互動性和面向?qū)ο蟮哪_本語言。Python可以很容易地從文件讀取數(shù)據(jù),可以選擇與數(shù)據(jù)匹配的數(shù)據(jù)結(jié)構(gòu)[6-10]。Wing IDE是適用于Python語言的集成開發(fā)環(huán)境,具有良好的命令自動完成功能、編輯功能和調(diào)試功能。同時,為了方便工作人員使用自動校驗工具,本文使用Python的wxpython圖形庫創(chuàng)建了用戶界面。
本文設(shè)計、開發(fā)的自動校驗工具的功能主要包括:讀取維護(hù)終端數(shù)據(jù)、讀取驅(qū)采配線表數(shù)據(jù)、執(zhí)行工程數(shù)據(jù)校對以及輸出記錄,具體工作流程如圖6所示。
3.2.1 讀取維護(hù)終端數(shù)據(jù)
維護(hù)終端數(shù)據(jù)有設(shè)備邏輯信息、通信接口信息和顯示信息,3種配置文件。設(shè)備邏輯信息描述功能邏輯相關(guān)的配置,通信接口信息描述與維護(hù)終端通信的所有設(shè)備的通信接口信息,顯示信息描述界面需要顯示的所有設(shè)備信息。配置文件為xml格式。用Python編碼時要先導(dǎo)入xml.dom.minidom模塊,用該模塊來讀取xml文檔。從3個配置文件中獲取運(yùn)用處理函數(shù)、自定義類型、實例化對象以及存儲數(shù)據(jù)等,將數(shù)據(jù)存儲在實例化后的自定義類型中。
設(shè)置Python自定義類型,包括:車站、區(qū)間、閉塞分區(qū)、區(qū)段等。從設(shè)備邏輯信息配置文件中讀取區(qū)間信息、采集板繼電器信息、驅(qū)動板繼電器信息以及通信車站信息,并將它們分別存儲到對應(yīng)的實例中。例如,區(qū)間信息存儲在區(qū)間實例中,與閉塞分區(qū)有一一對應(yīng)關(guān)系的采集板繼電器信息存儲在閉塞分區(qū)實例中,與端口一一對應(yīng)關(guān)系的采集板繼電器信息存儲在端口實例中。從通信接口信息配置文件中讀取車站名和車站ID,將它們存儲到車站實例中。從顯示信息配置文件中讀取車站類型、站內(nèi)軌信息、區(qū)間方向信息,并存儲在對應(yīng)的實例中。
3.2.2 讀取驅(qū)采配線表數(shù)據(jù)
讀取驅(qū)采配線表數(shù)據(jù)的主要功能包括:將驅(qū)采配線表CAD文件轉(zhuǎn)換為Excel文件、讀取信息并確定編制規(guī)則、讀取數(shù)據(jù)、運(yùn)用處理函數(shù)以及存儲數(shù)據(jù)等。
(1)驅(qū)采配線表格式轉(zhuǎn)換
CAD格式的驅(qū)采配線表如圖7所示,表中包含多個采集板和驅(qū)動板。需要將CAD文件格式轉(zhuǎn)換為Excel文件格式,Python語言無法讀取CAD文件,但是可以使用openpyxl模塊來讀取Excel文件。
運(yùn)用CAD-Excel轉(zhuǎn)換插件先將1個CAD文件中的所有采集板,轉(zhuǎn)換到Excel文件的1個sheet頁中,然后將所有驅(qū)動板轉(zhuǎn)換到另1個sheet頁中。
驅(qū)采配線表格式轉(zhuǎn)換過程中有時會出現(xiàn)格式變化問題,因此自動校驗工具需要對格式問題進(jìn)行報錯,方便人員根據(jù)報錯信息手動去調(diào)整Excel文件格式。
圖7 驅(qū)采配線表CAD文件示意圖
由于每塊采集板或驅(qū)動板在Excel文件中的位置不固定,所以需采用一定的方法對每塊板進(jìn)行定位。本文的定位方法是根據(jù)端子號的位置來確定板的位置(即Excel中的列數(shù))。自動校驗工具對驅(qū)采配線Excel表,如圖8所示,進(jìn)行按列讀取,若某列的數(shù)據(jù)連續(xù)出現(xiàn)1、2、3,則存儲該列列數(shù),最后得到多少個這樣的列就有多少塊板,每個列數(shù)代表每塊板在Excel中的位置。
圖 8 驅(qū)采配線表Excel文件示意圖
(2)讀取信息并確定編制規(guī)則
讀取信息是指讀取Excel文件的采集板或驅(qū)動板sheet頁的最大行數(shù)。如果最大行數(shù)小于48,則為一行一點位,否則為三行兩點位。由于有標(biāo)題行,三行兩點位的采集板或驅(qū)動板(32個點位)的行數(shù)一定大于48。如果三行中的第二行為空,或者第一行數(shù)據(jù)的前兩個字母為AC,則為普通三行兩點位,否則為特殊三行兩點位。然后按編制規(guī)則讀取數(shù)據(jù),采取不同的讀取方式,獲得完整的繼電器信息。存儲數(shù)據(jù)之前需要使用處理函數(shù)來去掉數(shù)據(jù)中的回車空格等字符。
本文沒有在讀取驅(qū)采配線表模塊編寫設(shè)計院提供數(shù)據(jù)文件的數(shù)據(jù)邏輯(即編制規(guī)則),而是將數(shù)據(jù)邏輯放在讀取方式上,若設(shè)計院文件的編制規(guī)則改變,只需增加對應(yīng)的讀取方式即可,增強(qiáng)了程序的可拓展性。
3.2.3 執(zhí)行工程數(shù)據(jù)校對
執(zhí)行工程數(shù)據(jù)校對時,將采集板和驅(qū)動板數(shù)據(jù)分別進(jìn)行核對,根據(jù)存儲數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),核對順序為板號、點位、繼電器名稱,核對繼電器名稱需要使用名稱核對方法來確定名稱是否可以判斷為相同。名稱核對方法需要通過大量繼電器名稱類型確定名稱對應(yīng)關(guān)系。該方法包括去除回車空格、拆分維護(hù)終端數(shù)據(jù)、拆分驅(qū)采配線表數(shù)據(jù)、排除數(shù)字、進(jìn)行一致性比較和進(jìn)行個別特殊對比。工程數(shù)據(jù)校對的另一個功能是校驗驅(qū)動板繼電器前后節(jié)點名稱,用于校驗驅(qū)采配線表數(shù)據(jù)自身有無錯誤。
3.2.4 輸出記錄
使用Python,根據(jù)需要向Log文件中寫入記錄,并寫入記錄時間。校驗之后報錯的類型有很多種,在輸出記錄中具體描述錯誤細(xì)節(jié)。
以自動校驗工具在敖力布告車站的應(yīng)用為例說明其中兩種校驗情況,例1是維護(hù)終端數(shù)據(jù)漏項的情況,例2是驅(qū)動板繼電器前后節(jié)點名稱不匹配的情況。
(1)維護(hù)終端數(shù)據(jù)漏項
維護(hù)終端數(shù)據(jù)漏項情況如圖 9~圖12所示,其中,圖9是驅(qū)采配線表CAD文件的部分信息,圖10是驅(qū)采配線表Excel文件的部分信息,圖11是維護(hù)終端數(shù)據(jù)配置文件的部分信息,圖12是輸出的Log文件的信息。
工程數(shù)據(jù)校驗是以驅(qū)采配線表為標(biāo)準(zhǔn)來校驗維護(hù)終端數(shù)據(jù)的正確性,由圖9~圖12可知,驅(qū)采配線表CAD文件中AC02-2對應(yīng)1074G-QGJ,轉(zhuǎn)換后的驅(qū)采配線表Excel文件AC02-2對應(yīng)1074G-QGJ,而維護(hù)終端數(shù)據(jù)配置文件沒有板號為2點位為2的1074G-QGJ信息。自動校驗工具將校驗結(jié)果輸出到Log文件中,Log文件顯示“維護(hù)終端 漏項 板號: 2通道號:2 IO表中名稱: 1074G-QGJ”,其中,通道號也稱為點位。提示工作人員,該配置文件維護(hù)終端數(shù)據(jù)中漏掉一個板上的一個點位的繼電器名稱。
圖 9 驅(qū)采配線表CAD文件部分信息示意圖(例1)
圖10 驅(qū)采配線表Excel文件部分信息示意圖(例1)
圖11 維護(hù)終端數(shù)據(jù)配置文件部分信息示意圖(例1)
圖12 Log文件信息示意圖(例1)
(2)驅(qū)動板繼電器前后節(jié)點名稱不匹配
驅(qū)動板繼電器前后節(jié)點名稱不匹配的情況如圖13~圖15所示,其中,圖13是驅(qū)采配線表CAD文件的部分信息,圖14是驅(qū)采配線表EXCEL文件的部分信息,圖15是輸出的Log文件的信息。
驅(qū)采配線表CAD文件中AQ02-1+對應(yīng)FHJ-1086G-1,AQ02-1-對應(yīng)FHJ-108G-2,經(jīng)工具轉(zhuǎn)換后的驅(qū)采配線表Excel文件是一樣的情況,通過自動校驗工具校驗得到結(jié)果輸出到Log文件中,Log文件中顯示“IO驅(qū)動板正負(fù)極繼電器名稱不匹配:板號: 2通道號:1 正極繼電器名稱 FHJ-1086G-1; 負(fù)極繼電器名稱 FHJ-108G-2”。提示工作人員,驅(qū)動板繼電器前后節(jié)點名稱不匹配。
圖 13 驅(qū)采配線表CAD文件部分信息示意圖(例2)
圖 14 驅(qū)采配線表Excel文件部分信息示意圖(例2)
圖 15 Log文件信息示意圖(例2)
自動校驗工具可以準(zhǔn)確有效地指出數(shù)據(jù)的缺失、冗余和不一致,有助于快速準(zhǔn)確定位錯誤位置,簡單直接指明錯誤原因,提高數(shù)據(jù)的可靠性,保證數(shù)據(jù)的準(zhǔn)確性。
本文分析QJK工程數(shù)據(jù)特性并通過基于Python編碼實現(xiàn)的校驗工具對QJK工程數(shù)據(jù)進(jìn)行校驗。以驅(qū)采配線表CAD文件數(shù)據(jù)為標(biāo)準(zhǔn),校驗維護(hù)終端數(shù)據(jù)配置文件的正確性,從而保證QJK工程數(shù)據(jù)的安全性。分析了驅(qū)采配線表的編制規(guī)則從而確定程序的讀取方式,使得自動校驗工具針對不同設(shè)計院CAD文件的不同編制規(guī)則具有靈活性和可擴(kuò)展性。本文設(shè)計與實現(xiàn)的自動校驗工具,已經(jīng)應(yīng)用于多個QJK項目的測試環(huán)節(jié)。實踐證明該工具提高了數(shù)據(jù)核對效率和數(shù)據(jù)核對覆蓋率,縮短了工程項目周期,可以適應(yīng)QJK項目工程數(shù)據(jù)的頻繁變化。但通過給AutoCAD軟件添加插件將CAD文件轉(zhuǎn)換成Excel文件,有時會出現(xiàn)格式變化問題,格式變化有幾種常見形式,但是沒有絕對規(guī)律,不能保證不會出現(xiàn)其他情況,所以這種文件轉(zhuǎn)換方式有待進(jìn)一步研究。