■ 楊耕田 黃尊濤
軌道交通已成為人們在日常生活中離不開的重要出行方式,軌道交通具有運(yùn)量大、運(yùn)行時間穩(wěn)定、安全環(huán)保等眾多優(yōu)點(diǎn),是整個交通體系的重要組成部分。乘客信息系統(tǒng)(Passenger Information System,PIS)作為軌道交通中為乘客提供豐富資訊的載體,可以提供列車運(yùn)營信息、網(wǎng)絡(luò)運(yùn)營信息、政府公告、便民信息、廣告以及在火災(zāi)等突發(fā)狀況下的緊急疏散信息等。隨著智慧出行理念的漸入人心,PIS必將承載更多信息的發(fā)布與傳播,以便滿足人們各種出行需求及對實(shí)時資訊的掌握。
在正常情況下,PIS既可以提供列車運(yùn)行時間、列車到站信息、換乘信息、車站周邊信息等各種輔助人們出行的信息,也可以提供政府公告、新聞、廣告等多媒體資訊的發(fā)布及推廣;而在遇到火災(zāi)或其他災(zāi)害等緊急事件時,PIS還可以提供緊急疏散通告及提示信息等[1]。
(1)時間信息顯示[2]。PIS能夠?qū)崟r地與時鐘系統(tǒng)進(jìn)行時間同步,以保證PIS時間的準(zhǔn)確性,同時PIS的播控器還可以在屏幕上為乘客提供實(shí)時的系統(tǒng)時間顯示,以便于乘客能夠了解具體時間。
(2)列車運(yùn)行時間、到站信息及換乘信息的顯示。PIS可以通過與自動列車監(jiān)控系統(tǒng)(Automatic Train Supervision,ATS)的對接獲取線路上列車的實(shí)時運(yùn)行情況,通過簡單的處理即可以為乘客提供列車運(yùn)行時間、到站信息及換乘信息等,這些信息都可以在播控器及相應(yīng)的廣播設(shè)備上提供給乘客,以便乘客可以更安全、快速地候車、換乘或出站。
(3)天氣預(yù)報信息等各類生活資訊顯示。PIS可以通過與天氣服務(wù)器連接,將天氣信息顯示到播控器屏幕的指定區(qū)域上,給乘客的出行提供參考,另外PIS還可以在播控器屏幕上為乘客提供車站周邊的景點(diǎn)及各種商場等信息。
(4)多媒體直播信息的顯示。相關(guān)的直播信息經(jīng)視頻服務(wù)器處理后可以在播控器上進(jìn)行實(shí)時播放,播放內(nèi)容包括數(shù)字電視、實(shí)時新聞及重大賽事等。直播內(nèi)容將以插播的形式打斷正在進(jìn)行的播放列表,以保證實(shí)時播放的及時性。
(5)廣告、電視節(jié)目等多媒體信息的顯示[3]。經(jīng)過相關(guān)業(yè)務(wù)人員對錄播的電視節(jié)目、宣傳片、公益廣告及商業(yè)廣告等視頻內(nèi)容進(jìn)行編播后,可以由相關(guān)人員將整個播放列表發(fā)送至播控器,此時播控器可按照編播的順序依次播放相關(guān)內(nèi)容,乘客即可通過播控器的視頻播放獲取相關(guān)資訊。播放列表中內(nèi)容的播放優(yōu)先級別較低,當(dāng)有直播內(nèi)容或者緊急信息時,都有可能打斷列表中內(nèi)容的正常播放。
(6)緊急信息的通告及提示[2]。當(dāng)發(fā)生火災(zāi)或其他緊急事件時,PIS既可以使用預(yù)制的緊急信息,又可以即時編播更加準(zhǔn)確的緊急信息進(jìn)行通告,通告方式包括在播控器顯示屏上滾動播放醒目的提示語、使用廣播設(shè)備進(jìn)行及時告警等,以此來實(shí)現(xiàn)對乘客的告警,幫助安全、快速地疏導(dǎo)人流。緊急信息內(nèi)容的播放優(yōu)先級具有最高等級,播控器將優(yōu)先播放緊急信息內(nèi)容。另外,緊急信息級別可分為緊急一級、緊急二級、緊急三級,其中緊急三級為最高等級。
PIS可以分為2個層級,即控制中心層和車站/車輛層(見圖1)。其中,控制中心負(fù)責(zé)制定播放版式和播放列表內(nèi)容,發(fā)布和解除運(yùn)營信息,對相關(guān)設(shè)備進(jìn)行監(jiān)控等;車站/車輛層主要是由各種設(shè)備組成,負(fù)責(zé)控制中心下發(fā)信息的處理和播放[4-5]。車站/車輛層的可用于處理乘客服務(wù)信息的設(shè)備包含播控器、視頻服務(wù)器、廣播板卡、車載CCTV服務(wù)器、乘客報警器、接警終端、廣播控制終端、攝像頭、視頻直播服務(wù)器、廣播控制盒和車載廣播主機(jī)等。
目前,現(xiàn)有的乘客服務(wù)信息分發(fā)技術(shù)很多是基于套接字(Socket)通信來實(shí)現(xiàn),而Socket通信會存在以下不足之處:
(1)消息傳輸可靠性較消息隊(duì)列遙測傳輸(Message Queuing Telemetry Transport,MQTT)協(xié)議差,可能會存在消息丟失的情況;
(2)當(dāng)網(wǎng)絡(luò)出現(xiàn)問題時,無法進(jìn)行離線消息的緩存;
(3)對服務(wù)器壓力較大,當(dāng)連接終端數(shù)量較大時,很難橫向擴(kuò)展;
圖1 PIS的層級結(jié)構(gòu)
(4)會使得控制中心和播控器的耦合性高,不利于后期維護(hù)。
相較之下,MQTT作為控制中心和各個設(shè)備之間的通信協(xié)議,既能降低各個模塊之間的耦合性,又能保證整個系統(tǒng)的穩(wěn)定性,同時又具有高可用性、高擴(kuò)展性,能夠解決在網(wǎng)絡(luò)不可靠的情況下出現(xiàn)的消息丟失問題和高并發(fā)情景下的性能瓶頸問題。
MQTT協(xié)議是一種基于發(fā)布和訂閱模式的“輕量級”通信協(xié)議(見圖2)[6],是建立在TCP/IP協(xié)議之上的,其在移動互聯(lián)網(wǎng)及物聯(lián)網(wǎng)領(lǐng)域有著相當(dāng)廣泛的應(yīng)用。
MQTT協(xié)議的實(shí)現(xiàn)需要2個主要角色,即客戶端和服務(wù)器端,其中客戶端又可分為發(fā)布者(Publish)和訂閱者(Subscribe),服務(wù)器端又被稱為代理(Broker)。MQTT傳輸?shù)南?nèi)容可以分為2部分:主題(Topic)和負(fù)載內(nèi)容(Payload)。訂閱者可以根據(jù)自身需求到服務(wù)器端訂閱自己所關(guān)注的主題,這樣可以保證在發(fā)布者發(fā)送相關(guān)主題消息時,服務(wù)器端可以及時地將對應(yīng)的消息推送到訂閱者端。
MQTT協(xié)議傳輸消息的服務(wù)質(zhì)量(QoS)可分為3個等級[6]:
(1)QoS0最多分發(fā)1次,這一級別可能會發(fā)生消息丟失或重復(fù)情況,消息發(fā)布依賴于底層TCP/IP;
(2)QoS1至少到達(dá)1次,這一級別會確保消息到達(dá),但消息可能會重復(fù);
(3)QoS2僅分發(fā)1次,這一級別會確保消息只有1次到達(dá),在一些要求比較嚴(yán)格的計(jì)費(fèi)系統(tǒng)中,可以使用此類級別。
以控制中心下發(fā)運(yùn)營信息到播控器為例,說明乘客服務(wù)信息通過MQTT進(jìn)行分發(fā)的完整流程(見圖3):
(1)上傳訂閱關(guān)系??刂浦行暮筒タ仄髟趩右院笮枧cMQTT服務(wù)器建立長連接,并將相關(guān)的Topic訂閱關(guān)系上傳到MQTT服務(wù)器。
圖2 MQTT協(xié)議
圖3 控制中心下發(fā)運(yùn)營信息到播控器的流程
(2)發(fā)送運(yùn)營信息??刂浦行慕M織需要下發(fā)的運(yùn)營信息并生成相應(yīng)的下發(fā)計(jì)劃,在進(jìn)行審核后將該下發(fā)計(jì)劃發(fā)送到MQTT服務(wù)器端的消息隊(duì)列。
(3)根據(jù)訂閱關(guān)系推送。MQTT服務(wù)器根據(jù)播控器端的訂閱關(guān)系將消息隊(duì)列中的消息推送到指定的播控器。
(4)消息解析和處理。播控器在收到消息后進(jìn)行解析,然后根據(jù)消息類型進(jìn)行相應(yīng)操作,如將運(yùn)營信息顯示到屏幕上。
(5)發(fā)送反饋消息。播控器在接收到MQTT消息后或在執(zhí)行相應(yīng)操作后,根據(jù)不同的業(yè)務(wù)指令可能存在不同的需求,封裝1條針對此消息的結(jié)果反饋消息,并將反饋消息發(fā)回給MQTT服務(wù)器。
(6)推送反饋消息。MQTT服務(wù)器根據(jù)消息類型將反饋消息推送回控制中心。
(7)更新下發(fā)消息狀態(tài)。控制中心將原下發(fā)消息的狀態(tài)由“下發(fā)中”更新為“已下發(fā)”,并記錄下發(fā)成功時間。
為了實(shí)現(xiàn)PIS中控制中心與車站/車輛設(shè)備端的點(diǎn)對點(diǎn)通信,將Topic定義為三級:一級Topic指定了消息的類型;二級Topic為固定字符串“p2p”,表示進(jìn)行的是點(diǎn)對點(diǎn)通信;三級Topic為設(shè)備端的ClientId,由GroupId和DeviceId組成。
根據(jù)消息的通信方向,可以將MQTT消息分為2類:一類為控制中心下發(fā)給設(shè)備端的消息,另一類為設(shè)備端上報給控制中心的消息。其中,控制中心下發(fā)的消息根據(jù)內(nèi)容可分為信息和指令2類;而設(shè)備端上報給控制中心的消息根據(jù)上報類型可以分為主動上報和結(jié)果反饋2類。一級Topic命名示例見圖4。
一級Topic命名規(guī)則如下:第1部分為能力中心標(biāo)識,此處表示該Topic為PIS能力中心所關(guān)注的Topic;第2部分為標(biāo)識符,此處固定為“_Topic”;第3部分為通信方向,“SO”表示Server Originate,即控制中心下發(fā)給設(shè)備端的消息,“ST”表示Server Terminated,即設(shè)備端上報給控制中心的消息;第4部分為消息類型,若此消息為下行數(shù)據(jù),則可分為信息類“INF”和指令類“CMD”,若此消息為上行數(shù)據(jù),則可分為主動上報類“REPORT”和結(jié)果反饋類“RESULT”。
為兼容使用阿里云的MQ消息隊(duì)列服務(wù)器發(fā)送MQTT消息的機(jī)制,設(shè)計(jì)中參照阿里云標(biāo)準(zhǔn)將二級Topic定義為固定字符串“p2p”,即“peer to peer”。
設(shè)備端的ClientId由GroupId和DeviceId組成,其中GroupId的命名規(guī)則為字符串“GID_”加上設(shè)備類型,如播控器的GroupId為“GID_PIPD”,設(shè)備端的DeviceId表示設(shè)備ID,由運(yùn)營人員統(tǒng)一命名規(guī)則,在GroupId和DeviceId之間加上分隔符“@@@”即為ClientId。因此,每個設(shè)備監(jiān)聽的完整Topic都是與該設(shè)備的設(shè)備ID進(jìn)行過綁定,這樣即可達(dá)到MQTT消息點(diǎn)對點(diǎn)通信的目的。
對于QoS級別的選擇,考慮PIS的乘客信息對于設(shè)備端是不可丟失的,但是信息重復(fù)又不會引起什么問題,另外由于阿里云的MQTT組件暫不能支持QoS2級別的消息,最終將QoS級別選定為QoS1。
負(fù)載內(nèi)容為JSON格式,分為2層封裝,第1層封裝為通用字段,包括指令I(lǐng)D、設(shè)備ID、設(shè)備類型、指令名稱和指令明細(xì)等,而具體的指令參數(shù)等會在指令明細(xì)字段進(jìn)行第2層的封裝。指令I(lǐng)D是由系統(tǒng)自動生成的、具有唯一性的字符串,主要作用是將控制中心下發(fā)的消息與設(shè)備端的結(jié)果反饋類消息進(jìn)行一一對應(yīng);設(shè)備ID是由運(yùn)營人員為每個設(shè)備分配的、具有唯一性的ID,主要用于區(qū)分各個設(shè)備;設(shè)備類型為各種設(shè)備類型的縮寫,如“PIPD”表示播控器;指令名稱主要用于區(qū)分該條MQTT消息的指令類型,如“ATS”表示該條消息為ATS類消息;指令明細(xì)字段用于具體參數(shù)的第2層封裝,如“ATS”消息的具體內(nèi)容會被封裝為JSON字符串,然后賦值到指令明細(xì)字段。
圖4 一級Topic命名示例
各種設(shè)備作為車站/車輛層的基礎(chǔ)設(shè)備,是車站/車輛層PIS子系統(tǒng)的重要組成部分。作為控制中心和設(shè)備端之間的通信協(xié)議,MQTT協(xié)議具有如下優(yōu)點(diǎn):
(1)采用MQTT可以將控制中心級PIS與設(shè)備端之間的直接耦合減??;
(2)MQTT消息隊(duì)列中間件可以為PIS分布式應(yīng)用提供異步可靠的通信機(jī)制,提高應(yīng)用的可擴(kuò)展性、可用性和吞吐量,同時利用消息隊(duì)列中間件的高可用性還可以保證數(shù)據(jù)的完整性和可靠性,以及解決PIS大量設(shè)備同時在線時信息可靠收發(fā)的問題;
(3)設(shè)備端可以預(yù)先在消息隊(duì)列中間件訂閱自己關(guān)注的消息主題,這樣可以保證相關(guān)消息的及時推送以及設(shè)備及時地接收所關(guān)注的數(shù)據(jù),也就保證了PIS消息收發(fā)的及時性。
對于MQTT服務(wù)器的使用共分為2個階段:測試階段和商用階段。
在測試階段中,采用開源的Mosquitto進(jìn)行服務(wù)器搭建。目前各種平臺上對于MQTT協(xié)議進(jìn)行實(shí)現(xiàn)的代理有很多,其中Mosquitto是一個開源的輕量級的實(shí)現(xiàn)(C語言),而且比較完整的實(shí)現(xiàn)了MQTT V3.1協(xié)議中的消息推送基本功能[6],同時還能夠完全兼容MQTT V3.1.1協(xié)議[7],可以提供輕量級的消息推送模式。另外,為了支持高并發(fā)的數(shù)據(jù)量,Mosquitto還能夠通過橋接的方式進(jìn)行集群的搭建,即1個主服務(wù)器,多個從服務(wù)器,這樣當(dāng)有大量消息需要進(jìn)行收發(fā)處理時,就可以將請求分散到集群內(nèi)的多臺服務(wù)器上,降低單個服務(wù)器的負(fù)載,提高消息收發(fā)處理的高效性。
在商用階段中,可以采用阿里云的LMQ消息隊(duì)列等互聯(lián)網(wǎng)中間件進(jìn)行消息的可靠性傳輸,這些消息中間件同樣支持分布式部署。
隨著人們出行的智能化發(fā)展,作為公共交通重要組成部分的軌道交通出行方式更需要大量運(yùn)用云計(jì)算、大數(shù)據(jù)、物聯(lián)網(wǎng)等互聯(lián)網(wǎng)技術(shù)使出行更加快捷方便,用技術(shù)創(chuàng)新滿足人們對美好生活的向往。PIS需要分發(fā)的信息類型也將伴隨著軌道交通的快速發(fā)展而變得更加多種多樣,且在軌道交通運(yùn)營過程中變得越來越重要。對于PIS信息分發(fā)的設(shè)計(jì)還可應(yīng)用于軌道交通相關(guān)各種設(shè)備信息及其他信息的數(shù)據(jù)采集領(lǐng)域,通過對采集到的數(shù)據(jù)進(jìn)行大數(shù)據(jù)分析處理后,即可更加有效地組織公共交通的運(yùn)行計(jì)劃安排,更加準(zhǔn)確地進(jìn)行相關(guān)資訊的傳播,更加快速地處置突發(fā)狀況,使人們的出行更加高效。