張佩,汪鐳,康琦,吳啟迪
智能軌道交通系統(tǒng)中的檢票機(jī)設(shè)計(jì)
張佩,汪鐳,康琦,吳啟迪
首先,介紹了智能軌道交通系統(tǒng)的理念,根據(jù)檢票機(jī)在該系統(tǒng)的地位和作用,提出了智能化服務(wù)的業(yè)務(wù)需求;接著,分析了現(xiàn)有檢票機(jī)存在的問(wèn)題,提出了檢票機(jī)的智能化提升設(shè)想,并以嵌入式 Linux 操作系統(tǒng)為例實(shí)現(xiàn)了應(yīng)用層智能程序軟件的主要模塊。提出的4層軟件架構(gòu)有助于提高軟件的兼容性和可移植性,多進(jìn)程多線程方式提高了應(yīng)用軟件的自恢復(fù)性和智能化,SQLite 數(shù)據(jù)庫(kù)方式儲(chǔ)存數(shù)據(jù)有利于擴(kuò)展運(yùn)營(yíng)中對(duì)數(shù)據(jù)查詢的新需求。
智能軌道交通系統(tǒng);檢票機(jī)智能化;嵌入式 Linux;SQLite 數(shù)據(jù)庫(kù)
隨著我國(guó)軌道交通建設(shè)的巨額投資和大力開(kāi)發(fā),軌道交通系統(tǒng)發(fā)展快速,逐漸向智能化方向轉(zhuǎn)變,由此產(chǎn)生了智能軌道交通系統(tǒng)的理念。智能軌道交通系統(tǒng)是以有關(guān)軌道交通的規(guī)劃設(shè)計(jì)、建設(shè)、運(yùn)營(yíng)、控制和管理的理念和理論為指導(dǎo),以物聯(lián)網(wǎng)為信息采集、交換與服務(wù)的基礎(chǔ)支撐平臺(tái);以智能的信息化決策和處理技術(shù)為基本手段,通過(guò)對(duì)海量的軌道交通信息的過(guò)濾、挖掘和利用,構(gòu)建“高效、便捷、安全、可視、可預(yù)測(cè)和環(huán)保”的現(xiàn)代軌道交通系統(tǒng)。實(shí)現(xiàn)智能軌道交系統(tǒng),必須依靠智能信息化處理技術(shù),具體為數(shù)據(jù)智能采集、數(shù)據(jù)智能融合、數(shù)據(jù)智能挖掘、智能決策[1]。
檢票機(jī)作為智能軌道交通自動(dòng)售檢票系統(tǒng)(AFC: Automatic Fair Collection)的終端設(shè)備,是整個(gè)智能軌道交通系統(tǒng)的原始數(shù)據(jù)采集機(jī)構(gòu),同時(shí)也是智能決策后的執(zhí)行機(jī)構(gòu)。檢票機(jī)位于付費(fèi)區(qū)和非付費(fèi)區(qū)之間,通過(guò)對(duì)票卡的自動(dòng)查驗(yàn),記錄了乘客直接的檢票信息;按照業(yè)務(wù)規(guī)則處理后,管理和引導(dǎo)乘客的通行行為,為其提供智能化服務(wù)[2]。
自動(dòng)檢票機(jī)的智能化服務(wù)不僅對(duì)檢票機(jī)的硬件設(shè)備有了更高的要求,更對(duì)檢票機(jī)軟件的運(yùn)行性能、系統(tǒng)可靠性和后期的可維護(hù)性提出了苛刻的需求。需要具備大客流帶來(lái)的較大幅度的數(shù)據(jù)處理能力。本文針對(duì)現(xiàn)有檢票機(jī)系統(tǒng)存在的問(wèn)題進(jìn)行了分析,提出了對(duì)系統(tǒng)軟件的智能化提升設(shè)想。最后以嵌入式 Linux OS 環(huán)境為例,在現(xiàn)有設(shè)備的基礎(chǔ)上對(duì)檢票機(jī)主控應(yīng)用軟件進(jìn)行設(shè)計(jì)實(shí)現(xiàn)。
1.1 現(xiàn)有檢票機(jī)分析
自動(dòng)檢票機(jī)的最基本作用是實(shí)現(xiàn)乘客在非付費(fèi)區(qū)和付費(fèi)區(qū)之間的自助進(jìn)出站檢票交易,為乘客通行提供智能化服務(wù),對(duì)有效車(chē)票自動(dòng)開(kāi)啟通道阻擋裝置,允許乘客進(jìn)站或出站[3]。此外,自動(dòng)檢票機(jī)是整個(gè)智能軌道交通 AFC 系統(tǒng)中的終端設(shè)備,需要為軌道交通 AFC 系統(tǒng)的智能化管理和決策提供最原始的數(shù)據(jù)信息,因此檢票機(jī)的數(shù)據(jù)儲(chǔ)存安全性和系統(tǒng)的智能修復(fù)能力極為重要[4、5]。
現(xiàn)有檢票機(jī)的整個(gè)系統(tǒng)軟件設(shè)計(jì)上結(jié)構(gòu)層次關(guān)系模糊,對(duì)外設(shè)設(shè)備的通信控制程序部分與業(yè)務(wù)應(yīng)用部分耦合度較高。盡管目前 AFC 系統(tǒng)都有地方規(guī)范,但是硬件設(shè)備往往由各廠商自己選型設(shè)計(jì),這樣運(yùn)營(yíng)方在后期維護(hù)中更換外圍設(shè)備時(shí)需要重新調(diào)試主控軟件;目前檢票機(jī)軟件采用的嵌入式操作系統(tǒng)趨向多元化,包括 Dos、Windows XPE、Linux、ReWorks 等,針對(duì)特定操作系統(tǒng)開(kāi)發(fā)的應(yīng)用軟件在可移植性方面會(huì)很差[6]。
目前檢票機(jī)軟件設(shè)計(jì)上都采用單進(jìn)程多線程的方式,雖然單進(jìn)程內(nèi)可以共享數(shù)據(jù),減少進(jìn)程間的通信消耗,卻降低系統(tǒng)的可靠性和智能修復(fù)能力。一旦某個(gè)線程發(fā)生異常,很容易引起整個(gè)進(jìn)程全部意外退出或崩潰。單進(jìn)程也使得對(duì)各個(gè)模塊運(yùn)行情況的監(jiān)控和修復(fù)設(shè)計(jì)產(chǎn)生難度[7]。
檢票機(jī)的性能很大程度決定于票卡邏輯處理速度和數(shù)據(jù)儲(chǔ)存?,F(xiàn)有的功能模塊劃分也有其不合理的地方,可以適當(dāng)將票卡處理模塊的部分業(yè)務(wù)劃分到其他模塊,來(lái)減輕票卡處理模塊的工作量,以加快讀卡響應(yīng)。另外通過(guò)選取一種更好的數(shù)據(jù)儲(chǔ)存方式來(lái)加快數(shù)據(jù)讀寫(xiě)速度,同時(shí)能加強(qiáng)數(shù)據(jù)的保護(hù)措施。
1.2 現(xiàn)有檢票機(jī)框架介紹
自動(dòng)檢票機(jī)結(jié)構(gòu)上一般主要由以下部件組成:主控單元、讀寫(xiě)器及天線、三竿阻擋裝置、票卡回收裝置、乘客顯示器、方向指示器、警示燈及蜂鳴器、檢票機(jī)控制單元、維修鍵盤(pán)和 UPS 電源模塊。本文中使用的進(jìn)站檢票機(jī)設(shè)備總體框架如圖1所示:
圖1 現(xiàn)有進(jìn)站檢票機(jī)總體框架圖
目前大部分廠商的自動(dòng)檢票機(jī)使用486以上級(jí)別的X86通用工控機(jī)作為硬件平臺(tái),能方便地為今后備品備件的選型、采購(gòu)提供較大的自由度。本文中使用的現(xiàn)有檢票機(jī)設(shè)備仍然沿用這種工控機(jī)平臺(tái)方案,主控單元采用研祥SPC-0501 工控機(jī)作為硬件平臺(tái)。板載 1G 內(nèi)存,外接 1G CF卡和 512MDOM 電子盤(pán)。能夠適應(yīng)檢票機(jī)系統(tǒng)運(yùn)行和數(shù)據(jù)吞吐量及儲(chǔ)存的需求。
2.1 軟件架構(gòu)方案
針對(duì)現(xiàn)有檢票機(jī)系統(tǒng)軟件層次不清晰的問(wèn)題,也為了提高自動(dòng)檢票機(jī)軟件的可靠性和兼容性,以及在不同系統(tǒng)間的可移植性,本文對(duì)系統(tǒng)軟件架構(gòu)提出分層設(shè)計(jì)設(shè)想。引進(jìn)“虛擬層驅(qū)動(dòng)”理念,在操作系統(tǒng)上增加抽象層的結(jié)構(gòu)設(shè)計(jì),隔離操作系統(tǒng);為應(yīng)對(duì)外設(shè)功能需求的變化性,在與外設(shè)通信過(guò)程和應(yīng)用業(yè)務(wù)之間再增加一層。因此對(duì)整個(gè)軟件架構(gòu)體系提出四層架構(gòu)的設(shè)想方案,自下而上分別是嵌入式OS層、抽象層、設(shè)備層和應(yīng)用層。
嵌入式OS層是整個(gè)系統(tǒng)軟件的最底層,在本文中是嵌入式 Linux OS,當(dāng)然也可以根據(jù)項(xiàng)目的實(shí)際情況采用其他嵌入式系統(tǒng)。
在嵌入式 OS 層之上的是抽象層,即“虛擬層驅(qū)動(dòng)”。抽象層屏蔽不同操作系統(tǒng)的差異性,向上層提供一個(gè)與操作系統(tǒng)無(wú)關(guān)的開(kāi)發(fā)輔助環(huán)境。對(duì)不同操作系統(tǒng)的系統(tǒng)函數(shù)進(jìn)行接口參數(shù)提煉和封裝,從而提供統(tǒng)一的接口函數(shù),提升了應(yīng)用層和設(shè)備層程序的可移植性。
設(shè)備層用以隱藏檢票機(jī)主控單元與各個(gè)設(shè)備部件之間的交互細(xì)節(jié)以及與車(chē)站計(jì)算機(jī)系統(tǒng)的通信細(xì)節(jié)。該層僅提供交互的接口,將可能變化的系統(tǒng)細(xì)節(jié)都隱藏在各個(gè)模塊中。
最頂層是應(yīng)用層,根據(jù)業(yè)務(wù)需求來(lái)實(shí)現(xiàn)檢票機(jī)的應(yīng)用邏輯功能。每個(gè)業(yè)務(wù)功能設(shè)計(jì)成一個(gè)功能單一的模塊,對(duì)外僅提供接口,將具體的功能實(shí)現(xiàn)細(xì)節(jié)封裝在模塊內(nèi)部。模塊內(nèi)部實(shí)現(xiàn)時(shí)調(diào)用設(shè)備層的接口或直接使用抽象層接口來(lái)完成功能。
四層軟件架構(gòu)的設(shè)想使得整個(gè)系統(tǒng)軟件層次分明,耦合度大大降低,有利于開(kāi)發(fā)中的代碼重用,提高了后期的可維護(hù)性和不同系統(tǒng)之間的互聯(lián)互通,同時(shí)能增強(qiáng)了檢票機(jī)的智能化。四層系統(tǒng)軟件架構(gòu)設(shè)想如圖2所示:
圖2 四層系統(tǒng)軟件架構(gòu)
2.2 應(yīng)用層設(shè)計(jì)
應(yīng)用層軟件采用多進(jìn)程多線程設(shè)計(jì)方式,將功能類(lèi)似的模塊劃分進(jìn)同一個(gè)進(jìn)程。多進(jìn)程多線程不僅提高運(yùn)行并發(fā)度,更重要的是能夠方便監(jiān)控應(yīng)用軟件下的各個(gè)進(jìn)程的運(yùn)行情況,在出現(xiàn)意外狀況時(shí)可以進(jìn)行智能修復(fù),提高了軟件的可靠性。
為了達(dá)到軟件的智能監(jiān)控設(shè)想,應(yīng)用層設(shè)計(jì)上需要有兩個(gè)程序軟件同時(shí)運(yùn)行,一個(gè)是業(yè)務(wù)應(yīng)用軟件程序;另一個(gè)是智能監(jiān)控程序,實(shí)時(shí)監(jiān)控應(yīng)用軟件程序內(nèi)各任務(wù)進(jìn)程的運(yùn)行狀況并自動(dòng)恢復(fù)異常時(shí)的應(yīng)用業(yè)務(wù)進(jìn)程。例如有某個(gè)進(jìn)程異常退出時(shí),并不會(huì)引發(fā)應(yīng)用軟件內(nèi)其他進(jìn)程的退出,智能監(jiān)控程序會(huì)監(jiān)測(cè)到該異常情況,記錄該異常信息后重新啟動(dòng)該進(jìn)程,恢復(fù)應(yīng)用軟件的正常運(yùn)行。這樣的設(shè)計(jì),與單進(jìn)程多線程模式相比,能避免因一個(gè)線程意外崩潰而致使整個(gè)程序崩潰退出的情況。本文中完成了應(yīng)用軟件的主要模塊程序?qū)崿F(xiàn),還未實(shí)現(xiàn)智能監(jiān)控程序。
本文以 Linux 操作系統(tǒng)為例完成了檢票機(jī)應(yīng)用軟件主要業(yè)務(wù)的實(shí)現(xiàn),采用面向?qū)ο蟮脑O(shè)計(jì)思路。根據(jù)應(yīng)用層的功能需求來(lái)劃分模塊,將相對(duì)獨(dú)立的業(yè)務(wù)功能設(shè)計(jì)成一個(gè)模塊,模塊設(shè)計(jì)遵循低耦合高內(nèi)聚的原則。主要的模塊包括票卡交易智能處理模塊、數(shù)據(jù)智能管理模塊、網(wǎng)絡(luò)通信模塊、智能維護(hù)模塊、GUI模塊等。
票卡交易智能處理模塊負(fù)責(zé)票卡的邏輯處理,將生成的交易數(shù)據(jù)直接發(fā)送給數(shù)據(jù)智能管理模塊,以加快讀卡響應(yīng)速度;網(wǎng)絡(luò)通信模塊負(fù)責(zé)數(shù)據(jù)包的接收和發(fā)送,不對(duì)數(shù)據(jù)內(nèi)容作處理,將解析后的數(shù)據(jù)直接交給數(shù)據(jù)智能管理模塊處理;數(shù)據(jù)智能管理模塊根據(jù)收到的交易數(shù)據(jù)去更新收益寄存器,管理運(yùn)營(yíng)參數(shù)的儲(chǔ)存、生效和轉(zhuǎn)發(fā),以及定時(shí)發(fā)送本機(jī)產(chǎn)生的數(shù)據(jù)給網(wǎng)絡(luò)通信模塊。
檢票機(jī)應(yīng)用軟件實(shí)現(xiàn)中充分利用了多進(jìn)程多線程的設(shè)計(jì)方式。開(kāi)啟一個(gè)主進(jìn)程、3個(gè)子進(jìn)程,子進(jìn)程分別是票務(wù)邏輯智能處理進(jìn)程(包括票卡交易智能處理、智能維護(hù)管理、GUI 3 個(gè)模塊)、數(shù)據(jù)智能處理進(jìn)程、網(wǎng)絡(luò)通信進(jìn)程。各進(jìn)程間使用消息隊(duì)列方式通信。主進(jìn)程負(fù)責(zé)配置系統(tǒng)環(huán)境參數(shù),系統(tǒng)運(yùn)行初始化,創(chuàng)建并管理各個(gè)子進(jìn)程。子進(jìn)程內(nèi)部再根據(jù)具體實(shí)現(xiàn)需要?jiǎng)?chuàng)建多個(gè)線程。下面重點(diǎn)介紹票卡交易智能處理、數(shù)據(jù)智能處理、網(wǎng)絡(luò)通信3個(gè)模塊的實(shí)現(xiàn)。各進(jìn)程分布框圖如圖3所示:
圖3 檢票機(jī)應(yīng)用軟件框圖
3.1 票卡交易智能處理
票卡處理方面,為了加快對(duì)讀卡-驗(yàn)卡-放行流程的響應(yīng)速度,各串口外設(shè)接口程序都注冊(cè)一個(gè)接收線程用于接收串口數(shù)據(jù)。另外注冊(cè)一個(gè)消息接收線程用于接收數(shù)據(jù)管理進(jìn)程發(fā)送的參數(shù)和命令消息。讀卡響應(yīng)、交易響應(yīng)等操作作為回調(diào)函數(shù),由讀卡器接收線程調(diào)用。所有的交易記錄數(shù)據(jù)等都直接通過(guò)消息隊(duì)列發(fā)送給數(shù)據(jù)管理進(jìn)程,由后者保存并更新收益寄存器。
票卡交易處理類(lèi)型有進(jìn)站和出站兩種,兩種處理流程類(lèi)似,只是進(jìn)站交易少了車(chē)票回收步驟。首先,讀卡器有票卡時(shí)喚醒休眠中的讀卡器接收線程并讀取票卡數(shù)據(jù);其次,對(duì)票卡信息進(jìn)行有效性檢查;然后,根據(jù)當(dāng)前的業(yè)務(wù)規(guī)則更新票卡信息,再向 GUI模塊發(fā)送顯示信息,并將通行控制命令加入命令隊(duì)列發(fā)送給檢票機(jī)控制單元。最后,將票卡交易數(shù)據(jù)加入消息隊(duì)列,發(fā)送給數(shù)據(jù)管理模塊儲(chǔ)存。
進(jìn)站票卡信息的有效性檢查包括密匙安全、黑名單、票種合法性、票卡狀態(tài)、使用地點(diǎn)、余值、有效期、進(jìn)出站次序檢查。
3.2 數(shù)據(jù)智能管理
3.2.1 數(shù)據(jù)智能備份
為了保證自動(dòng)檢票機(jī)數(shù)據(jù)的安全性,利用現(xiàn)有檢票機(jī)儲(chǔ)存中的CF卡和DOM 電子盤(pán),對(duì)重要數(shù)據(jù)進(jìn)行智能雙備份。其中CF卡存放整個(gè)系統(tǒng)的所有數(shù)據(jù),包括操作系統(tǒng)、應(yīng)用程序、運(yùn)營(yíng)參數(shù)、交易記錄、寄存器數(shù)據(jù)、DOM 電子盤(pán)存放交易記錄、黑名單參數(shù)。
系統(tǒng)初始化狀態(tài)下,CF卡儲(chǔ)存操作系統(tǒng)、應(yīng)用程序、電子盤(pán)無(wú)數(shù)據(jù)。系統(tǒng)使用過(guò)程中,CF卡和電子盤(pán)對(duì)交易記錄、黑名單參數(shù)互做智能備份。如果系統(tǒng)在使用過(guò)程中 CF卡出現(xiàn)故障,此時(shí)將初始化狀態(tài)的 CF卡替換故障的CF卡,系統(tǒng)運(yùn)行后,將首先進(jìn)行數(shù)據(jù)的智能恢復(fù)。
3.2.2 數(shù)據(jù)儲(chǔ)存實(shí)現(xiàn)
本文的數(shù)據(jù)儲(chǔ)存采用 Sqlite 嵌入式數(shù)據(jù)庫(kù)保存數(shù)據(jù),包括運(yùn)營(yíng)參數(shù)、交易記錄、寄存器數(shù)據(jù)。SQLite 是關(guān)系型嵌入式數(shù)據(jù)庫(kù),支持大部分 SQL92 標(biāo)準(zhǔn),支持事務(wù)機(jī)制和 blob在內(nèi)的5類(lèi)數(shù)據(jù)類(lèi)型。該數(shù)據(jù)庫(kù)以文件方式保存在磁盤(pán)上,最大支持?jǐn)?shù)據(jù)量到 2TB。
根據(jù)檢票機(jī)的自身情況和上海的《城市軌道交通自動(dòng)售檢票系統(tǒng)通用技術(shù)規(guī)范》[8](以下簡(jiǎn)稱《規(guī)范》)的要求,檢票機(jī)中存放的大部分運(yùn)營(yíng)參數(shù)分當(dāng)前版本和未來(lái)版本。兩者能夠根據(jù)版本號(hào)和生效時(shí)間智能切換,兩者切換流程如圖4所示:
圖4 檢票機(jī)參數(shù)版本切換流程
為了實(shí)現(xiàn)參數(shù)的版本控制和智能切換機(jī)制,設(shè)計(jì)了兩張參數(shù)版本表來(lái)管理所有的參數(shù)表,分別是當(dāng)前參數(shù)版本表和未來(lái)參數(shù)版本表。兩個(gè)參數(shù)版本表設(shè)計(jì)相同,各字段分別是消息類(lèi)型碼(主鍵)、版本號(hào)、參數(shù)生效時(shí)間、參數(shù)表名字。對(duì)當(dāng)前版本參數(shù)或未來(lái)版本參數(shù)的更新,分別經(jīng)過(guò)查找當(dāng)前或未來(lái)參數(shù)版本表中的該類(lèi)參數(shù)信息記錄,檢查參數(shù)版本號(hào)后,將參數(shù)內(nèi)容更新到該記錄指向的表中。待生效的未來(lái)參數(shù)加入?yún)?shù)待生效鏈表,由定時(shí)事務(wù)管理線程定時(shí)檢查。
為了避免 SQLite 數(shù)據(jù)庫(kù)操作死鎖的可能性,包括運(yùn)營(yíng)參數(shù)和本機(jī)產(chǎn)生的數(shù)據(jù)在內(nèi)的所有數(shù)據(jù)的增刪查改操作均在同一個(gè)線程進(jìn)行。接收線程將接收到的交易數(shù)據(jù)、維護(hù)寄存器和審計(jì)寄存器數(shù)據(jù)放入 FIFO 隊(duì)列 1,接收到的運(yùn)營(yíng)參數(shù)放入 FIFO 隊(duì)列 2,接收到的其他命令請(qǐng)求放入 FIFO 隊(duì)列3。數(shù)據(jù)庫(kù)操作線程循環(huán)對(duì)這些隊(duì)列中的數(shù)據(jù)或命令進(jìn)行相應(yīng)操作。3個(gè)隊(duì)列的在兩個(gè)線程中的同步分別使用3個(gè)互斥量保證。
由于每種消息類(lèi)型的數(shù)據(jù)內(nèi)容均不相同,各自消息數(shù)據(jù)的具體操作都需要各自實(shí)現(xiàn)。但是可以根據(jù)傳入傳出參數(shù)的共性,提煉一個(gè)統(tǒng)一的操作接口。本文對(duì)所有數(shù)據(jù)的數(shù)據(jù)庫(kù)操作首先創(chuàng)建一個(gè)抽象類(lèi),包含通用的操作接口。然后每種消息類(lèi)型數(shù)據(jù)庫(kù)操作類(lèi)都從該抽象類(lèi)派生,在類(lèi)內(nèi)重寫(xiě)抽象類(lèi)的各個(gè)操作接口函數(shù)。
3.2.3 多定時(shí)器機(jī)制
由于各個(gè)定時(shí)事件需要多個(gè)定時(shí)器,而 linux 下同一個(gè)進(jìn) 程 中 所 有 線 程 共 享 POSIX 系 統(tǒng) 信 號(hào) 處 理 , 共 享SIGALARM 時(shí)鐘信號(hào),只能實(shí)現(xiàn)一個(gè)定時(shí)器,因此,需要應(yīng)用程序自己設(shè)計(jì)多定時(shí)器隊(duì)列機(jī)制。本文采用一個(gè)鏈表組織多個(gè)定時(shí)器,除鏈表頭定時(shí)器的超時(shí)時(shí)間是用絕對(duì)時(shí)間記錄外,其他定時(shí)器的超時(shí)時(shí)間都是相對(duì)時(shí)間(以前一個(gè)定時(shí)器為基點(diǎn)的相對(duì)時(shí)間)記錄。這樣每次以一個(gè)固定單元的時(shí)間間隔對(duì)多定時(shí)器鏈表檢查超時(shí)時(shí)間,一旦某個(gè)鏈表上的定時(shí)器超時(shí)時(shí)間減為0,則運(yùn)行該定時(shí)器注冊(cè)時(shí)的回調(diào)函數(shù),同時(shí)刪除該定時(shí)器。實(shí)現(xiàn)上,設(shè)計(jì)成一個(gè)多定時(shí)器類(lèi),在類(lèi)內(nèi)單獨(dú)創(chuàng)建一個(gè)線程管理多定時(shí)器鏈表。
使用時(shí),調(diào)用者只需實(shí)例化多定時(shí)器類(lèi)并注冊(cè)定時(shí)器及超時(shí)回調(diào)函數(shù),每次定時(shí)器生效后需要重新注冊(cè)。
3.3 網(wǎng)絡(luò)通信
根據(jù)《規(guī)范》,檢票機(jī)與車(chē)站計(jì)算機(jī)通信采用 TCP/IP 協(xié)議實(shí)現(xiàn)。通信線路上傳送的消息報(bào)文長(zhǎng)度限制為 8192 字節(jié),當(dāng)請(qǐng)求或應(yīng)答消息長(zhǎng)度大于此限制,需要拆分成多個(gè)報(bào)文傳送。當(dāng)檢票機(jī)收到多包請(qǐng)求時(shí),直到收完最后一包并處理后才能返回應(yīng)答。消息報(bào)文由包長(zhǎng)度、同步頭、包頭、包體、MAC 5 部分組成。通信程序?qū)崿F(xiàn)中遵循規(guī)定的消息報(bào)文格式。
3.3.1 報(bào)文通信
通信程序采用 socket技術(shù)編程實(shí)現(xiàn),通信規(guī)程使用同步短連接方式。程序?qū)崿F(xiàn)上采用報(bào)文分層處理思想,參照OSI七層模型的會(huì)話層、表示層和應(yīng)用層設(shè)計(jì),每一層的實(shí)現(xiàn)都封裝設(shè)計(jì)成一個(gè)類(lèi)。會(huì)話層類(lèi)負(fù)責(zé)發(fā)起連接請(qǐng)求、socket連接監(jiān)聽(tīng)、消息包發(fā)送/接收、斷開(kāi)連接等功能。表示層類(lèi)負(fù)責(zé)報(bào)文數(shù)據(jù)格式與本機(jī)內(nèi)部數(shù)據(jù)格式互相轉(zhuǎn)換,對(duì)會(huì)話層接收的消息包解析、多包包體重組,對(duì)應(yīng)用層的包體進(jìn)行拆包、報(bào)文封裝。應(yīng)用層類(lèi)負(fù)責(zé)包體數(shù)據(jù)上傳給表示層、包處理調(diào)度及應(yīng)答。3層關(guān)系如圖5所示:
圖5 通信程序?qū)哟侮P(guān)系
因?yàn)闄z票機(jī)的并行通信連接數(shù)不會(huì)很大,所以程序設(shè)計(jì)中采用多線程處理新連接。socket連接監(jiān)聽(tīng)線程只負(fù)責(zé)新連接的監(jiān)聽(tīng),當(dāng)有連接請(qǐng)求被接受后,新創(chuàng)建一個(gè)線程。由該新線程負(fù)責(zé)新連接的通信會(huì)話,直到該連接會(huì)話結(jié)束并斷開(kāi)socket連接后,該線程才返回結(jié)束。
因?yàn)?,檢票機(jī)的并行通信連接數(shù)不會(huì)很大,所以,程序設(shè)計(jì)中采用多線程處理新連接。socket連接監(jiān)聽(tīng)線程只負(fù)責(zé)新連接的監(jiān)聽(tīng),當(dāng)有連接請(qǐng)求被接受后,新創(chuàng)建一個(gè)線程。由該新線程負(fù)責(zé)新連接的通信會(huì)話,直到該連接會(huì)話結(jié)束并斷開(kāi) socket連接后,該線程才返回結(jié)束。
此外,通信程序需要實(shí)現(xiàn)定時(shí)與車(chē)站計(jì)算機(jī)進(jìn)行聯(lián)網(wǎng)狀態(tài)智能檢測(cè),如果3次連接測(cè)試均超時(shí)或沒(méi)有應(yīng)答,則認(rèn)為與車(chē)站計(jì)算機(jī)斷開(kāi)連接,檢票機(jī)進(jìn)入孤島模式,但連接測(cè)試一直繼續(xù)。另外,連接超時(shí)、發(fā)送超時(shí)和重發(fā)、接收超時(shí)以及等待應(yīng)答超時(shí)機(jī)制均有會(huì)話層保證。
3.3.2 智能時(shí)間同步
AFC 系統(tǒng)自線路中央主機(jī)以下所有節(jié)點(diǎn)計(jì)算機(jī)必須具有相同的系統(tǒng)時(shí)間,因此,檢票機(jī)必須不斷時(shí)間的智能同步。時(shí)間同步采用 NTP 協(xié)議(RFC1305)來(lái)實(shí)現(xiàn)。檢票機(jī)以車(chē)站計(jì)算機(jī)為 NTP服務(wù)器,在開(kāi)機(jī)時(shí)和每小時(shí)的 0分進(jìn)行系統(tǒng)時(shí)間同步。但當(dāng)兩者時(shí)間差過(guò)大時(shí),首先不更新本地時(shí)間,向車(chē)站中心發(fā)送警告,由維護(hù)人員手工調(diào)整。
本文根據(jù)檢票機(jī)在智能軌道交通系統(tǒng)中的作用和功能,描述并分析了檢票機(jī)的智能化服務(wù)需求。針對(duì)現(xiàn)有檢票機(jī)存在的問(wèn)題,提出了智能化提升設(shè)想,并在嵌入式 Linux 環(huán)境下實(shí)現(xiàn)了應(yīng)用軟件的主要模塊。4層軟件架構(gòu)設(shè)想有助于實(shí)現(xiàn)智能軌道交通 AFC 系統(tǒng)中不同系統(tǒng)的終端設(shè)備間無(wú)障礙的智能互聯(lián),符合智能軌道交通 AFC 系統(tǒng)的規(guī)范性發(fā)展方向。同時(shí)采用 SQLite 數(shù)據(jù)庫(kù)方式儲(chǔ)存數(shù)據(jù),加快了數(shù)據(jù)讀取速度,也方便安全備份,可輕易適應(yīng)今后軌道交通運(yùn)營(yíng)中提出的新的數(shù)據(jù)查詢要求,具有良好的可維護(hù)性。
[1] 楊燕,朱焱,戴齊.智慧軌道交通--更深入的智能化[J].計(jì)算機(jī)應(yīng)用,2012,32(5):1205-1207
[2] 趙時(shí)旻.軌道交通自動(dòng)售檢票系統(tǒng)[M].上海:同濟(jì)大學(xué)出版社,2007.
[3] 楊盛.AFC 感應(yīng)型檢票機(jī)嵌入式軟件架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)[D].上海:東華大學(xué),2010.
[4] 周向爭(zhēng).基于 Reworks 操作系統(tǒng)的檢票機(jī)設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(5):211-216.
[5] 于明.城市軌道交通自動(dòng)售檢票系統(tǒng)檢票機(jī)應(yīng)用軟件架構(gòu)設(shè)計(jì)與分析[J].城市軌道交通研究,2007,4:37-40.
[6] 楊超.基于 ARM 的地鐵自動(dòng)檢票機(jī)控制系統(tǒng)研究[J].城市軌道交通研究,2012,5:86-89.
[7] Gene Slly.linux 嵌入式系統(tǒng)高級(jí)程序設(shè)計(jì)[M].北京:人民郵電出版社,2010.
[8] DGJ08 - 1101 - 2007 上海市工程建設(shè)規(guī)范: 城市軌道交通自動(dòng)售檢票系統(tǒng)通用技術(shù)規(guī)范[S]. 2007.
Design of Gate Machine in Intelligent Mass Transit System
Zhang Pei, Wang Lei, Kang Qi, Wu Qidi
(College of Electronic and Information Engineering, Tongji University, Shanghai201804, China)
This paper introduces the concept of Intelligent Mass Transit System (ITMS) firstly.Then put forward the requirement of intelligent service according to the status and function in IMTS.Next, analyze some problems in the existing gate machine, and come up with the proposal of intelligent promotion for gate machine. After that, introduce the implementation of several key modules in intelligent software of application layer which is based on embedded Linux OS. It is the architecture of four layers that is beneficial to improve the compatibility and transportability. The development way of multi-process and multithreading could enhance the self-recovery and intelligence of system software. And the usage of SQLite database could expand the new demand to query the Data during the AGM operation.
Intelligent Mass Transit System; Gate Machine Intelligence; Embedded Linux; SQLite Database
TP311
A
1007-757X(2014)02-0001-04
2014.01.14)
基金項(xiàng)目:教育部博士點(diǎn)基金(20100072110038);教育部新世紀(jì)人才計(jì)劃項(xiàng)目(NECT-10-0633);國(guó)家自然科學(xué)基金項(xiàng)目(70871091,61075064,61034004,61005090);上海市金融信息技術(shù)研究重點(diǎn)實(shí)驗(yàn)室 開(kāi)放課題
張 佩(1987-),男,同濟(jì)大學(xué),碩士研究生,研究方向:智能算法及控制,上海,201804;汪 鐳(1970-),男,同濟(jì)大學(xué),教授,博士生導(dǎo)師,研究方向:智能算法及控制,上海,201804;康 琦(1980-),男,同濟(jì)大學(xué),副教授,博士,研究方向:智能算法及控制,上海,201804吳啟迪(1947-),女,浙江永嘉人,同濟(jì)大學(xué)電子與信息工程學(xué)院,教授,博士生導(dǎo)師,研究方向:智能控制、智能計(jì)算、CIMS 和管理科學(xué),上海,200092