摘要:根據(jù)車號識別系統(tǒng)的功能設(shè)計(jì)了基于多串口的嵌入式鐵路車號識別系統(tǒng),系統(tǒng)通過串口通信集成射頻模塊、車輪傳感器模塊以及CPS模塊。根據(jù)模型-試圖-控制(MVC)模式,抽象了系統(tǒng)的對象類圖;根據(jù)車號識別系統(tǒng)的工作流程建立了車號識別啟動(dòng)工作的對象順序圖和車號識別過程對象順序圖。通過程序詳細(xì)說明了在串口接收數(shù)據(jù)時(shí)對端口模塊進(jìn)行識別的方法。
關(guān)鍵詞:多串口;鐵路車號識別;嵌入式系統(tǒng)
中圖分類號:TP274文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2009)25-7127-02
Design of Embedded Train Identification System Based on Multi-Serial Ports
GUAN Chen-xi1, YE Jian-ping2
(1.School of Electronics Information and Control Engineering, Beijing University of Technology, Beijing 100124, China;2.Department of Mechanic Engineering, Wuhan Polytechnic University, Wuhan 430023, China)
Abstract: The embedded train identification system based on multi-serial ports was designed. The system communicates with RF module, wheel sensor module and CPS by serial ports. The class view was created according to Model-View-Control (MVC). The sequence diagrams of start-up and the process of identifying were created according to work flows. The method of identifying the port and module was introduced by program.
Key words: multi-serial ports; train identification; embedded system
鐵路車號識別系統(tǒng)是實(shí)現(xiàn)鐵路物流過程數(shù)字化、信息化的重要環(huán)節(jié),同時(shí)也是智能交通系統(tǒng)的重要組成部分[1]。隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)及智能化系統(tǒng)的研究和發(fā)展,鐵路車號識別系統(tǒng)技術(shù)朝智能化、網(wǎng)絡(luò)化及集成化方向發(fā)展。鐵路車號識別系統(tǒng)涉及到多個(gè)方面的技術(shù),它往往由多個(gè)不同的功能模塊組成如RF射頻模塊,磁鋼傳感模塊等,因此作為鐵路車號識別系統(tǒng)控制中心的MCU往往需要和多個(gè)系統(tǒng)模塊進(jìn)行通信集成,這可以采用系統(tǒng)總線的方式來解決,但系統(tǒng)總線的兼容性比較復(fù)雜。對于車號識別系統(tǒng)的模塊來說一般都帶有串口,而RS232串口是一種標(biāo)準(zhǔn)的通信接口,因此應(yīng)用非常廣泛。隨著嵌入式技術(shù)的發(fā)展,很多嵌入式芯片都帶有3-5個(gè)RS232串口,因此可以非常方便地對多個(gè)不同的車號模塊進(jìn)行集成[2]。
雖然在硬件電路上可以方便地對多個(gè)模塊通過RS232接口連接,但是在嵌入式系統(tǒng)的軟件設(shè)計(jì)上需要考慮到幾個(gè)方面的問題,一是端口模塊的識別,二是實(shí)時(shí)性。由于通過MCU通過多個(gè)串口同時(shí)監(jiān)控多個(gè)模塊,而對不同模塊的數(shù)據(jù)接收和發(fā)送的處理流程不同,因此在接收數(shù)據(jù)后需要對端口模塊進(jìn)行識別。根據(jù)車號識別系統(tǒng)的功能需求以及系統(tǒng)結(jié)構(gòu)特點(diǎn),本文設(shè)計(jì)了基于ARM9及WinCE嵌入式系統(tǒng)的鐵路車號識別系統(tǒng)。
1 系統(tǒng)設(shè)計(jì)
1.1 系統(tǒng)工作流程
車號識別的工作原理是:系統(tǒng)首先接收磁鋼脈沖信號,然后打開RF射頻裝置的功放,鐵路旁的天線發(fā)射微波信號;帶有標(biāo)簽的車廂經(jīng)過天線時(shí),列車上的標(biāo)簽對微波信號進(jìn)行調(diào)制后反射,天線接收到調(diào)制信號后傳送到RF射頻裝置,RF射頻裝置對信號進(jìn)行解調(diào)處理后把標(biāo)簽數(shù)據(jù)傳送到識別主機(jī);主機(jī)對車號進(jìn)行識別收集最后集中送到集中管理系統(tǒng)(CPS)[3]。根據(jù)工作流程以及串口通信方法建立了系統(tǒng)的原理圖,如圖1所示,根據(jù)原理圖采用ARM9芯片AT91SAM9260設(shè)計(jì)了嵌入式鐵路車號系統(tǒng)的硬件系統(tǒng)。
1.2 軟件系統(tǒng)設(shè)計(jì)
針對嵌入式操作系統(tǒng)WinCE,本文采用面向?qū)ο蠹夹g(shù)和EVC4.0集成開發(fā)環(huán)境對系統(tǒng)進(jìn)行設(shè)計(jì)和開發(fā)。在工程實(shí)踐中為了提高系統(tǒng)的可靠性,需要借鑒前人的成功工程經(jīng)驗(yàn),而軟件工程中的成功經(jīng)驗(yàn)是設(shè)計(jì)模式。在系統(tǒng)整體結(jié)構(gòu)方面應(yīng)用比較廣泛的設(shè)計(jì)模式是MVC模式,即模型/視圖/控制器(Model/View/Controller)三元素[4]。在MVC模式中模型負(fù)責(zé)系統(tǒng)數(shù)據(jù)的管理,控制負(fù)責(zé)系統(tǒng)的管理控制以及調(diào)度,視圖負(fù)責(zé)系統(tǒng)的顯示及用戶界面。雖然對于很多實(shí)時(shí)控制系統(tǒng)沒有要求高的用戶交互界面,但對于實(shí)時(shí)控制系統(tǒng)有許多指示燈和蜂鳴器,因此對于此類系統(tǒng)我們?nèi)匀豢梢圆捎眠@種模式對系統(tǒng)進(jìn)行設(shè)計(jì)開發(fā),實(shí)時(shí)控制系統(tǒng)的指示燈和蜂鳴器等可以按照MVC模式中的視圖處理。依照MVC模式抽象出嵌入式鐵路車號識別系統(tǒng)的對象類圖,如圖2所示。
在系統(tǒng)中CRailRFIDDoc對應(yīng)于MVC模式中的模型,它負(fù)責(zé)對數(shù)據(jù)進(jìn)行管理,以及對接收的數(shù)據(jù)進(jìn)行解析,當(dāng)向其他模塊發(fā)送數(shù)據(jù)時(shí)它負(fù)責(zé)根據(jù)不同的通信協(xié)議組織數(shù)據(jù),對數(shù)據(jù)的解析以及數(shù)據(jù)的組織是通過它私有的成員變量(通信協(xié)議類對象)來實(shí)現(xiàn)的。CMainFrame對應(yīng)于MVC模式中的控制類,它負(fù)責(zé)系統(tǒng)流程的控制以及調(diào)度,由于不同模塊的處理流程不同,因此系統(tǒng)中定義了流程控制基類(CFlowControl),對于不同模塊的處理流程類都從這個(gè)基類繼承。CLight和CBuzzer對應(yīng)于MVC模式中的視圖,主要起到提示工作人員的作用。
定義了基類和類的繼承之后,通過采用迭代增量開發(fā)方式,可以得到系統(tǒng)啟動(dòng)工作的對象順序圖和車號識別過程對象順序圖,如圖3和圖4所示。
2 系統(tǒng)實(shí)現(xiàn)
在系統(tǒng)實(shí)現(xiàn)中為了實(shí)現(xiàn)實(shí)時(shí)性,在串口程序中使用守護(hù)線程接收來自串口的數(shù)據(jù),在主系統(tǒng)中由于需要接收來自不同串口的數(shù)據(jù),因此在接收到串口數(shù)據(jù)后需要識別數(shù)據(jù)的發(fā)送源。為了解決這個(gè)問題本文制定了模塊和端口之間的映射表,通過CComPort類中m_byModule變量來實(shí)現(xiàn)模塊和端口之間映射,當(dāng)串口接收到數(shù)據(jù)后把數(shù)據(jù)傳遞給主控系統(tǒng)是同時(shí)指明模塊信息,具體實(shí)現(xiàn)如下:
#define SENSOR_MODULE 0X10
#define RF_MODULE 0X20
#define CPS_MODULE0X40
DWORD CComPort::ReadThreadFunc(LPVOID lparam)
{
CComPort *pComPort = (CComPort *)lparam;
……
pBuff = new BYTE[len];
ReadFile(pComPort ->m_hCom, pBuff, length, readLen,0);
pComPort ->m_OnComRead(pComPort ->m_pOwner, pBuff, Length, pComPort->m_byModule);
/* m_OnComRead為讀取數(shù)據(jù)回調(diào)函數(shù)*/
……
}
由于在有多個(gè)串口,同時(shí)每個(gè)串口的工作參數(shù)如波特率等不同,因此在設(shè)計(jì)時(shí)我們采用類工廠的模式,在CMainFrame生成串口對象時(shí)調(diào)用靜態(tài)函數(shù)CComPort::CreatePort,具體如下。
Static CComPort* CComPort::(int baudRate, CString strPortNo, BYTE byModule)
{
CComPort* pComPort = new CComPort;
pComPort->m_byModule = byModule;
pComPort->Init(baudRate, strPortNo);
……
return pComPort;}
3 結(jié)論
根據(jù)對鐵路車號識別系統(tǒng)的分析,采用ARM9嵌入式芯片設(shè)計(jì)了鐵路車號識別系統(tǒng),設(shè)計(jì)的嵌入式實(shí)時(shí)系統(tǒng)能夠通過多個(gè)串口和傳感器模塊、射頻模塊以及集中管理模塊進(jìn)行無縫集成。通過分析抽象的車號識別系統(tǒng)對象類圖具有很好的層次結(jié)構(gòu),因此系統(tǒng)不僅具有很好實(shí)時(shí)性,還具有很好的配置性和擴(kuò)展性。
參考文獻(xiàn):
[1] 李平,張莉艷,賈利民,等.鐵路智能運(yùn)輸系統(tǒng)的研究[J].中國鐵道科學(xué),2004,25(1):62-66.
[2] 胡奕明.ARM7串口9位方式多機(jī)通信的編程技術(shù)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2009(1):79-81.
[3] 沈海燕,史宏.鐵路車號自動(dòng)識別系統(tǒng)的實(shí)現(xiàn)及關(guān)鍵技術(shù)[J].鐵路計(jì)算機(jī)應(yīng)用,2005,14(1):19-22.
[4] Jain H, Vitharana P, Zahedi F M. An Assessment Model for Requirements Identification in Component-based Software Development[J]. ACM SIGMIS Database, 2003,34(4):48-63.
[5] 周立功.ARM嵌入式系統(tǒng)基礎(chǔ)教程[M].北京: 北京航空航天大學(xué)出版社,2005.
[6] Boggs W, Boggs M.UML與Rational Rose 2002從入門到精通[M].北京:電子工業(yè)出版社,2002.