楊 超 張冬泉
(北京交通大學(xué)機(jī)械與電子控制工程學(xué)院,100044,北京∥第一作者,工程師)
自動檢票機(jī)(AGM),也稱作閘機(jī),是自動售檢票系統(tǒng)(AFC)的重要組成部分,承擔(dān)者控制客流、提供客流基礎(chǔ)信息的任務(wù),是AFC系統(tǒng)重要的現(xiàn)場設(shè)備。ARM(Advanced RISC Machines,精簡指令集機(jī)器)架構(gòu),是一個(gè)32位元精簡指令集(RISC)中央處理器架構(gòu),在許多嵌入式系統(tǒng)設(shè)計(jì)中被廣泛使用,因而在自動檢票機(jī)控制系統(tǒng)的設(shè)計(jì)中選擇了ARM內(nèi)核的CPU作為微控制器(MCU)。本文在分析自動檢票機(jī)基本功能的基礎(chǔ)上,重點(diǎn)研究了基于ARM的自動檢票機(jī)的控制系統(tǒng)。
AGM是AFC系統(tǒng)的現(xiàn)場設(shè)備,設(shè)置于城市軌道交通車站的進(jìn)出站口。乘客進(jìn)出站時(shí),AGM根據(jù)車票介質(zhì)上存儲的信息完成對車票合法性檢查,統(tǒng)計(jì)進(jìn)出站信息和客流信息,同時(shí)達(dá)到提高通過效率、降低運(yùn)輸成本、減輕工作人員勞動強(qiáng)度、實(shí)現(xiàn)車站管理信息化等目的,最終實(shí)現(xiàn)提高城市軌道交通運(yùn)行效率的目的[4]。AGM的硬件部分主要包括機(jī)械殼體、門禁機(jī)構(gòu)、主控板、GPIO(數(shù)字量輸入輸出)單元、液晶顯示器、讀卡器等部分。AGM的內(nèi)部結(jié)構(gòu)如圖1所示。
圖1 AGM內(nèi)部結(jié)構(gòu)示意圖
目前,城市軌道交通的AFC系統(tǒng)已經(jīng)實(shí)現(xiàn)了通過非接觸式IC卡進(jìn)行自動檢票。AGM最主要的任務(wù)是判斷乘客票卡的合法性,開放或關(guān)閉閘門,以及回收票卡。需要回收的票卡指的是在車站臨時(shí)購買的乘車票卡而不是公交一卡通。
當(dāng)乘客進(jìn)站時(shí),乘客只需刷卡進(jìn)入,此時(shí)AGM不需要區(qū)分該卡是公交一卡通還是臨時(shí)購買的乘車票卡,只需要判斷票卡的合法性以及開放閘門,待乘客進(jìn)入后關(guān)閉閘門進(jìn)行下一次的操作。乘客進(jìn)站流程如圖2所示。
圖2 乘客進(jìn)站流程圖
當(dāng)乘客出站時(shí),持有公交一卡通的乘客只需要刷卡即可,AGM會自動判斷票卡的合法性,開放閘門,待乘客出去后關(guān)閉閘門進(jìn)行下一次的操作;持有臨時(shí)乘車票卡的乘客,需要將票卡插入AGM,進(jìn)行票卡合法性判斷并進(jìn)行票卡回收的操作,若票有效,乘客才能順利出站。乘客出站流程如圖3所示。
圖3 乘客出站流程圖
當(dāng)乘客持公交一卡通卡進(jìn)站時(shí),AGM只需要進(jìn)行讀卡的相關(guān)操作;當(dāng)乘客持車站購買的臨時(shí)乘車票卡出站時(shí),AGM需要進(jìn)行票卡合法性判斷并進(jìn)行票卡回收的相關(guān)操作。本文研究的AGM的功能主要是針對票卡回收的相關(guān)操作。為了完成一次票卡回收的操作,AGM的控制系統(tǒng)需要完成以下幾項(xiàng)操作:
(1)傳感器信息檢測。為了檢測票卡的位置,在票卡行經(jīng)的各個(gè)位置安裝了許多傳感器。主控系統(tǒng)通過從這些傳感器獲得的實(shí)時(shí)檢測信息,判斷票卡準(zhǔn)確的位置信息。這也是控制系統(tǒng)做出各種決策的直接信息來源。
(2)電磁鐵的控制。整個(gè)系統(tǒng)安裝了數(shù)量眾多的電磁鐵,通過電磁鐵的動作效應(yīng)可以控制票卡進(jìn)入哪個(gè)票箱。
(3)步進(jìn)電機(jī)控制。整個(gè)AGM安裝了3個(gè)步進(jìn)電機(jī)(票卡搬送部分1個(gè),票卡回收部分2個(gè))。步進(jìn)電機(jī)是整個(gè)AGM的動力來源,因而步進(jìn)電機(jī)的控制對票卡的回收起著決定性的作用。
(4)液晶顯示。用于用戶提示信息的顯示,增強(qiáng)了系統(tǒng)的交互性和友好性。
(5)和上層服務(wù)器通信。位于車站的AGM與上層的服務(wù)器是相互聯(lián)通的:一方面,AGM把記錄的客流基本信息傳給上層服務(wù)器用于客流信息的統(tǒng)計(jì)、分析,最終為客流調(diào)度服務(wù);另一方面,上層服務(wù)器將票卡的信息傳送給AGM,用于判斷乘客票卡的合法性。圖4為AGM控制系統(tǒng)的應(yīng)用功能框圖。
各種功能的傳感器主要用來檢測票卡的位置、狀態(tài),以及票箱中票卡是否已滿??刂葡到y(tǒng)就是通過檢測這些傳感器的狀態(tài)來獲知外部信息。這部分信息大多為I/O量,CPU通過GPIO來獲取這部分信息。同時(shí),CPU可以通過GPIO端口直接控制電磁鐵和步進(jìn)電機(jī),用于實(shí)現(xiàn)票卡的回收操作。系統(tǒng)的一些提示或者報(bào)警信息可以通過顯示器動態(tài)地告知乘客。可以采用TCP/IP協(xié)議與上層服務(wù)器之間進(jìn)行通信,實(shí)現(xiàn)和網(wǎng)絡(luò)的互聯(lián)。
圖4 AGM控制系統(tǒng)的應(yīng)用功能框圖
通過分析AGM控制系統(tǒng)的應(yīng)用功能,可以明確控制系統(tǒng)需要提供的資源和完成的任務(wù),便于系統(tǒng)方案設(shè)計(jì)。以51系列為代表的傳統(tǒng)單片機(jī)無論從資源還是運(yùn)算能力上已經(jīng)無法滿足AGM控制系統(tǒng)的功能要求,而工控機(jī)存在體積大,自身不提供直接的I/O端口,嵌入性較差等限制性因素,因此,選用S3C2440A作為AGM控制系統(tǒng)的微控制器。
S3C2440A是三星公司推出的一款32位的RISC處理器,主頻可達(dá)400MHz,資源豐富,可支持嵌入式操作系統(tǒng)如Windows CE。圖5所示為基于S3C2440設(shè)計(jì)的控制系統(tǒng)方案圖。
圖5 AGM控制系統(tǒng)方案設(shè)計(jì)
嵌入式系統(tǒng)可以根據(jù)系統(tǒng)的功能要求實(shí)現(xiàn)系統(tǒng)硬件功能的定制,將需要用到的資源從CPU中擴(kuò)展出來,而隱藏不需要用到的資源,從而實(shí)現(xiàn)系統(tǒng)的最簡潔化。引出的端口主要有:①GPIO——傳感器信息的采集、步進(jìn)電機(jī)的控制以及電磁鐵的驅(qū)動都需要用到大量的GPIO。GPIO是系統(tǒng)獲取外部信息的主要方式。②觸摸屏——用于提示信息和系統(tǒng)信息的顯示,增強(qiáng)系統(tǒng)的交互性。③以太網(wǎng)接口——AGM和上位機(jī)可以通過此端口實(shí)現(xiàn)互聯(lián)。④COM/JTAG/USB——系統(tǒng)調(diào)試用端口;⑤按鍵/蜂鳴器——可用于調(diào)試,也可用于交互。
引出的部分端口是考慮到了系統(tǒng)的調(diào)試。在調(diào)試好的系統(tǒng)上可以將此部分資源隱藏。至此,基于S3C2440A的嵌入式方案的硬件環(huán)境已經(jīng)建立。
Windows CE是一個(gè)多任務(wù)、實(shí)時(shí)的嵌入式操作系統(tǒng),可以提高系統(tǒng)資源的利用效率。但是,Windows CE是一個(gè)保護(hù)型的操作系統(tǒng),不允許直接訪問硬件的物理地址。主控系統(tǒng)對外圍傳感器信息的采集、步進(jìn)電機(jī)的控制、與上層服務(wù)器通信等均用到大量的GPIO的操作,因此,需要直接訪問CPU的物理地址?,F(xiàn)以步進(jìn)電機(jī)的控制為例介紹在Windows CE系統(tǒng)環(huán)境下對GPIO的操作。
步進(jìn)電機(jī)的控制通常需要3根線:使能信號線(EN)、方向信號線(DIR)和時(shí)鐘信號線(CLK);為了給出控制信號,還需要用到S3C2440A的GPIO端口。在 Windows CE系統(tǒng)環(huán)境下,為了完成GPIO的操作,首先需要將S3C24402440A的GPIO端口的物理地址塊映射成操作系統(tǒng)可以訪問的虛擬地址空間。如下所示:
函數(shù)VirtualAlloc用于在用戶的進(jìn)程空間中為要映射的物理地址保存一塊虛擬地址空間。這塊空間的大小由sizeof(GPIO_RES)定義。如果虛擬地址空間申請成功,函數(shù)的返回值是虛擬地址空間的基地址,存儲在v_pGPIO_REGS中。
函數(shù)VirtualCopy用于將實(shí)際的物理地址對應(yīng)給VirtualAlloc剛才保留的虛擬地址空間,以完成物理地址與虛擬地址空間的綁定。這里的操作完成了GPIO的物理地址塊GPIO_PHY_BASE與剛申請的虛擬地址空間v_pGPIO_REGS的綁定。函數(shù)的返回值是布爾量,表征了此次地址綁定是否成功,從而在Windows CE系統(tǒng)環(huán)境下就可以通過操作虛擬地址空間v_pGPIO_REGS來實(shí)現(xiàn)對硬件地址的操作。
用完的內(nèi)存可通過函數(shù)VirtualFree將其釋放。用法如下:
Virtual(v_pGPIO_REGS,sizeof(GPIO_REGS),MEM_DECOMMIT)
完成了物理地址的動態(tài)綁定后,就可以通過訪問虛擬地址來給出步進(jìn)電機(jī)的控制信號。例如步進(jìn)電機(jī)的初始化就可以通過如下方式實(shí)現(xiàn):
v_pGPIO_REGS->GPGCON_VIRTUAL=
(01<<06)|∥電機(jī)使能信號設(shè)置
(01<<10)|∥電機(jī)時(shí)鐘信號設(shè)置
(01<<12);∥電機(jī)方向信號設(shè)置
在Windows CE系統(tǒng)環(huán)境下對GPIO的操作均可以通過這種方式實(shí)現(xiàn)。
[1]寧斐,滑蓉,周子社.鐵路客運(yùn)專線自動檢票機(jī)關(guān)鍵技術(shù)研究[J].鐵路信息系統(tǒng),2008,18(8):18.
[2]張彥.AFC技術(shù)及鐵路自動售檢票系統(tǒng)研究[J].中國鐵路,2009(3):50.
[3]Ampelas A.Automatic fare collection[C]∥ 2001IEEE Intelligent Transportation Systems Conference Proceedings.Oakland:IEEE,2001:1164.
[4]陳勇.地鐵自動售檢票系統(tǒng)[J].鐵道通信信號,2002(3):17.
[5]張冬泉.Windows CE實(shí)用開發(fā)技術(shù)[M].2版.北京:電子工業(yè)出版社,2008.
[6]Microsoft.Microsoft windows CE device driver kit[M].北京:北京希望電子出版社,2000.