華寅飛,高 昕
(1.南瑞集團公司(國網電力科學研究院),江蘇 南京 210003;2.國電南瑞科技股份有限公司,江蘇 南京 210061)
城市軌道交通綜合調度指揮系統(TIDS)是基于系統工程理論,將信號、通信、機電、供電等各種監控系統集成于一體化的自動化平臺,從而實現在一個調度平臺上對車、機、電的統一監控和管理。 TIDS 集成了列車自動監控系統(ATS)、電力監控系統(PSCADA)、環境與設備監控系統(BAS)、網絡管理、仿真及培訓管理等業務功能,可以為用戶提供集運營監控、運營管理、調度指揮為一體的運營調度指揮平臺,近年來常應用于有軌電車及地鐵監控項目。
TIDS 系統對事故反演提出了較高的要求,其中,調度員的所有操作、列車運行狀況、設備工作狀態能自動或按調度員的指令進行回放。 回放數據需包括已記錄的軌道、道岔、信號機等信號設備的狀態信息,列車位置信息,中央調度員執行的各種操作命令和各種報警信息。 同時,在回放過程中對回放軟件進行的各種操作不能對正在運營的線路和TIDS 的各種既有功能產生影響,即用戶可在監控工作站對正常監控狀態和反演回放狀態一鍵切換。 為滿足上述需求,需要搭建全景化事故反演回放系統[1]。
系統具備全部采集數據(模擬量、開關量、設備狀態信息、列車位置信息等)的追憶能力,可以全方位地記錄、保存系統監視對象的事故狀態,并且能夠真實、完整地反演系統監視對象事故過程,即使系統監視對象已經發生了很大的變化,也能夠真實地反映當時的情況。
系統根據給定的事故反演時刻自動匹配并調出相應的系統模型斷面,再調出事故發生前的數據斷面以重構當時的場景,在此基礎上反演當時發生的事件序列,并由用戶控制反演的進度。 事故反演數據能在工作站屏幕上重放整個事件過程,并能以圖表等多種方式重新顯示擾動數據的變化。 事故反演能夠以設定的刷新周期在人機界面上一步一步重新顯示,并能由操作員任意控制[2]。
全景化事故反演回放系統主要依賴“回放態”設計與切換,全景采樣數據存儲和高效的全景數據查詢與數據斷面獲取,實現事故錄制和事故反演過程,具體內容如下。
為了保證用戶監控的應用數據可在正常監控狀態和反演回放狀態之間切換,當某一個應用如列車自動監控(ATS)需要反演時,需要建立一個新的應用名為“ATS_PDR”,這個應用即稱為列車自動監控“回放態”應用。 回放狀態下的所有監控的設備都屬于這個“ATS_PDR”的應用。
當用戶在工作站人機界面內切換到反演回放狀態時,該工作站監控畫面的所有數據聯點自動切換到“ATS_PDR”回放狀態應用下,接收回放數據;當用戶在人機界面內切換到正常監控狀態時,監控畫面的所有數據聯點自動切換回ATS 應用下,接收實時數據。 這樣既實現了正常監控狀態和反演回放態的一鍵切換,又不會在回放過程中影響正常實時數據的處理與TIDS系統正在運營線路的各種既有功能[3]。
Bekeley DB 可簡稱為bdb,是一種以key-value 為結構的嵌入式數據庫,介于關系數據庫與內存數據庫之間,使用方式與內存數據庫類似,它有以下兩個基本特征。
(1)嵌入式:bdb 提供了一系列應用程序API 接口,調用這些接口很簡單,應用程序和bdb 所提供的庫一起編譯/鏈接成為可執行程序。
(2)NOSQL:bdb 不支持SQL 語言,它對數據的管理很簡單,bdb 數據庫包含若干條記錄,每條記錄由關鍵字和數據(key-value)兩部分構成。 數據可以是簡單的數據類型,也可以是復雜的數據類型,例如C 語言的結構體,bdb 對數據類型不作任何解釋,完全由程序員自行處理。
TIDS 系統依賴Bekeley DB 的上述特性,構建全景采樣數據庫。 在TIDS 系統中,點(point)是數據管理的基本單元,任何專業可測量的設備屬性都可以被定義成point,點類型主要包括數字量和模擬量。 TIDS 系統的各監控專業變化數據都可以存儲在全景采樣數據庫中,在全景采樣數據庫中,對數據的各種操作都是以點為單位進行的,任何采樣點都進行了變化采樣,以“點標簽+時間戳”為key,采樣值和狀態為value,數據點變化后實時存入bdb 數據庫。
由于全景采樣數據存儲的是點在最近某一時刻的瞬時值,是與時間有關的數據。 每一個數據記錄上都有一個時間戳,記錄實時數據變化的采樣時間。 一條采樣數據記錄包括點標簽、時間戳、狀態、數值4 個組成部分。 為了方便采樣點查詢,全景采樣數據庫采用了HASH 表的索引方式進行點查詢,并設計了緩存機制,可以快速高效地查找到指定點信息,支持數據斷面獲取。 即用戶想要獲得某一時刻的TIDS 系統的數據斷面,可以通過獲取所有采樣數據點在該時刻或該時刻之前最近的一個時刻的變化采樣值,快速構建成為數據斷面。
全景化事故反演回放系統包括事故錄制和事故反演兩個過程。
事故錄制過程比較簡單,即用戶指定了某個時間段(如A 時刻至B 時刻)的事故錄制任務,后臺回放服務接收到命令后從全景采樣數據庫中獲取A 時刻數據斷面,獲取A 時刻到B 時刻所有數據點的變化采樣值和時間戳,以及獲取A 時刻到B 時刻歷史數據庫所有的歷史事件,以文件方式錄制保存,如圖1 所示。 用戶可選擇任意時間段進行事故錄制,生成不同的錄制文件。

圖1 錄制操作
在事故反演過程中,用戶通過人機界面可以看到之前所有錄制的文件記錄,當用戶選擇某個錄制文件下達反演回放命令后,人機界面首先切換至“回放態”,后臺回放服務從錄制文件中讀取數據斷面、數據變化記錄、歷史事件記錄,先發送數據斷面,然后按照時間戳間隔和指定的播放速度發送變化報文、報警信息、事件信息給人機界面HMI、報警窗和事件窗,仿真真實的數據變化過程,實現全景化事故反演,如圖2 所示。

圖2 回放操作
全景化事故反演回放系統由事故錄制、事故反演操作人機界面和后臺回放服務replay_server 組成,回放服務承載了主要的事故錄制與反演功能。 由于系統要求操作人員能夠任意控制回放過程,隨時啟動、暫停、倍速觀看回放過程,使回放服務面臨很多的人機交互,設計更為靈活,回放服務的功能設計如下[4-7]。
回放服務replay_server 包含回放主線程和事故錄制子線程、錄制文件管理子線程和心跳子線程,實現功能分別如下。
(1)事故錄制子線程:與事故錄制界面的交互,實現事故錄制過程。
(2)錄制文件管理子線程:與錄制文件管理界面的交互,處理錄制文件的顯示、刪除。
(3)心跳子線程:維護回放管理的回放進度。
(4)回放主線程:與回放管理界面的交互,處理事故反演過程。
事故錄制與錄制文件管理界面如圖3 所示。

圖3 錄制操作界面
用戶打開【數據管理】TAB 頁,向后臺回放服務錄制文件管理子線程請求并獲取錄制文件列表,可以手動刪除任意錄制文件。 用戶在該界面點擊【新建】按鈕,選擇【新建名稱】【開始時間】與【結束時間】,向后臺回放服務事故錄制子線程發送了錄制命令,錄制子線程向全景采樣數據庫和歷史數據庫獲取該時間段內的數據斷面、采樣數據和歷史事件,完成后生成新命名的錄制文件,顯示在錄制文件列表中。
事故反演操作界面如圖4 所示。

圖4 回放操作界面
用戶打開【回放管理】TAB 頁,向后臺回放服務錄制文件管理子線程請求并獲取錄制文件列表,可以選擇任意錄制文件進行事故反演,點擊【開始】按鈕,即向后臺回放服務回放主線程發送了回放命令,后臺回放服務從錄制文件中讀取數據斷面、數據變化記錄、歷史事件記錄,先發送數據斷面,然后按照時間戳間隔和指定的播放速度發送回放變化報文、報警信息、事件信息給人機界面。 人機界面切至“回放態”接收所有的回放數據,回放數據包括系統已記錄的軌道、道岔、信號機等信號設備的狀態信息、列車位置信息、中央調度員執行的各種操作命令和各種報警信息,回放流程如圖5所示。

圖5 回放流程
后臺回放服務的心跳子線程向回放管理界面持續發送心跳報文,用于顯示回放進度。 用戶可以隨時暫停回放,以及修改倍速加速回放或減慢回放,后臺回放服務隨時響應界面操作,直到回放結束[8]。
本文介紹了一種在城市軌道交通綜合指揮調度系統(TIDS)中進行全景化事故反演的實現方式,針對該系統對事故反演的要求,介紹了一種基于Bekeley DB的全景采樣數據庫,將TIDS 系統的各監控專業變化數據都存儲在全景采樣數據庫中,該全景采樣數據庫支持基于時間戳的數據存儲,高效的數據查詢、數據斷面獲取以及“回放態”的概念和切換過程,并據此設計完善的事故錄制與事故反演實現方案。 本方案能夠讓用戶在正常監控過程中隨時切換至回放狀態,查看以前任意時間斷面的列車運行情況,設備工作狀態以及調度員的所有操作、歷史事件,方便操作員反演事故過程,且回放過程中對回放的各種操作對正在運營的線路和TIDS 的各種既有功能不產生任何影響。 目前,該設計方案已經安全穩定的運行在蘇州有軌電車2 號線綜合指揮調度系統中。