摘 要:本文主要研究軌道交通檢票機(jī)底層軟件的智能化通行檢測(cè)技術(shù)方案,將理論與實(shí)踐相結(jié)合,在明確智能化通行監(jiān)測(cè)系統(tǒng)總體設(shè)計(jì)的基礎(chǔ)上,設(shè)計(jì)系統(tǒng)功能需求、架構(gòu)設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)以及通信協(xié)議等子系統(tǒng),進(jìn)而構(gòu)建虛擬環(huán)境進(jìn)行測(cè)試分析。由研究結(jié)果可知,本文提出的智能化通行檢測(cè)系統(tǒng)在運(yùn)行期間支持現(xiàn)金、IC卡和NFC等多種形式,并能將出現(xiàn)故障的位置及時(shí)上報(bào)上位機(jī)系統(tǒng),進(jìn)行智能化管控。智能化通行檢測(cè)系統(tǒng)具有良好的可操作性與可靠性,能夠提高軌道交通檢票機(jī)的智能化水平,能夠?yàn)槌丝吞峁┒嘣?、高效率的檢票服務(wù)。
關(guān)鍵詞:軌道交通;檢票機(jī);底層軟件;智能化;通行檢測(cè)
中圖分類號(hào):YP 368" " 文獻(xiàn)標(biāo)志碼:A
城市軌道交通是城市交通體系中的重要組成部分,為城市居民的出行提供了多樣化選擇。隨著大數(shù)據(jù)、物聯(lián)網(wǎng)等現(xiàn)代化技術(shù)發(fā)展,城市軌道交通需要進(jìn)行智能化升級(jí)規(guī)劃,需要利用智能技術(shù)提升軌道交通綜合服務(wù)效率與質(zhì)量[1]。檢票機(jī)是軌道交通體系中的初始環(huán)節(jié),對(duì)其進(jìn)行智能化升級(jí)設(shè)計(jì),有利于減少相關(guān)工作人員的任務(wù)量,減少運(yùn)行成本,提升軌道交通運(yùn)行效率,因此有必要對(duì)軌道交通檢票機(jī)底層軟件的智能化通行檢測(cè)進(jìn)行深入研究。
1 軌道交通檢票機(jī)底層軟件的智能化通行檢測(cè)系統(tǒng)總體設(shè)計(jì)
軌道交通檢票機(jī)底層軟件的智能化通行檢測(cè)系統(tǒng)在運(yùn)行期間需要滿足不同身份人員的需求,例如為乘客提供IC卡和NFC卡檢票功能,為維修人員提供身份認(rèn)證與維護(hù)測(cè)試等維修管理功能,并為設(shè)備運(yùn)營管理人員提供交易數(shù)據(jù)管理、遠(yuǎn)程通信管理以及身份認(rèn)證等功能[2]。
在設(shè)計(jì)期間,本文以軌道交通中的有軌電車為研究對(duì)象,以工控機(jī)、PLC以及微控制器等技術(shù)為主要手段,遵循標(biāo)準(zhǔn)化、模塊化、系列化、可維修性以及符合人體工學(xué)等原則,設(shè)計(jì)了檢票機(jī)智能化通行檢測(cè)系統(tǒng)結(jié)構(gòu),如圖1所示。
本文將軌道交通檢票機(jī)底層軟件的智能化通行檢測(cè)系統(tǒng)設(shè)計(jì)為7個(gè)模塊,分別是顯示模塊、通信模塊、電源模塊、IC/NFC模塊、現(xiàn)金處理模塊、掃碼模塊以及打印模塊。各功能模塊具有對(duì)應(yīng)的功能,可以為乘客提供全面的出行檢票服務(wù)。
2 軌道交通檢票機(jī)底層軟件的智能化通行檢測(cè)系統(tǒng)設(shè)計(jì)
2.1 系統(tǒng)功能需求
軌道交通檢票機(jī)的核心控制基于微控制單元(MCU),需要構(gòu)建一套匹配的嵌入式控制體系,以便對(duì)底層部件實(shí)施統(tǒng)一調(diào)度管理,并為上級(jí)計(jì)算機(jī)提供便捷的操作接口。底層部件與上級(jí)計(jì)算機(jī)并非直接連接,而是借助嵌入式軟件與上級(jí)軟件進(jìn)行交互,因此,嵌入式軟件的設(shè)計(jì)質(zhì)量直接關(guān)系上級(jí)軟件的任務(wù)處理效率和運(yùn)行穩(wěn)定性。此外,嵌入式軟件需要向底層部件發(fā)出驅(qū)動(dòng)指令,其性能同樣決定了部件動(dòng)作的效率和協(xié)同性。
在進(jìn)行編寫嵌入式軟件前,必須考慮是否在軟件中集成操作系統(tǒng)和軟件的整體框架設(shè)計(jì)等關(guān)鍵問題。本文在MCU中設(shè)計(jì)了輕量級(jí)操作系統(tǒng),以支持多任務(wù)處理需求,提高系統(tǒng)控制操作的多線處理效率。需要注意的是,在運(yùn)行期間,輕量級(jí)操作系統(tǒng)可能會(huì)對(duì)系統(tǒng)處理操作的時(shí)效性有一定干擾[3]。同時(shí),本文操作系統(tǒng)內(nèi)設(shè)計(jì)了內(nèi)存動(dòng)態(tài)分配與時(shí)間管理等功能。本次設(shè)計(jì)對(duì)復(fù)雜多線任務(wù)的需求不高,但是對(duì)系統(tǒng)操作與運(yùn)行的時(shí)效性具有較高要求,因此本文在設(shè)計(jì)環(huán)節(jié)提出了一套具有穩(wěn)定性與高效性的嵌入型控制系統(tǒng)。
2.2 系統(tǒng)架構(gòu)層次設(shè)計(jì)
在軌道交通檢票機(jī)底層軟件設(shè)計(jì)期間,需要結(jié)合不同功能模塊和系統(tǒng)層次的差異性,保證系統(tǒng)具有良好的層次化與模塊化。進(jìn)行綜合分析后,本文將系統(tǒng)設(shè)計(jì)為3個(gè)層次,分別為業(yè)務(wù)邏輯層、功能模塊層以及硬件驅(qū)動(dòng)層。業(yè)務(wù)邏輯層包括現(xiàn)金支付處理、通信業(yè)務(wù)和交易數(shù)據(jù)管理等模塊;功能模塊層包括傳感器、Flash模塊、Hopper驅(qū)動(dòng)模塊和電機(jī)驅(qū)動(dòng)模塊等;硬件驅(qū)動(dòng)層包括Clock、DMA、GPIO和Timer等。
硬件驅(qū)動(dòng)層的主要功能是對(duì)硬件資源操作進(jìn)行函數(shù)接口化封裝,為功能模塊層操作提供可用的API函數(shù)接口。該設(shè)計(jì)方法可以提高系統(tǒng)開發(fā)效率,同時(shí)為后續(xù)的系統(tǒng)改動(dòng)設(shè)計(jì)提供便捷,只需要對(duì)相應(yīng)的API函數(shù)進(jìn)行修正,即可實(shí)現(xiàn)功能更新[4]。
功能模塊層的主要功能是將已經(jīng)封裝處理的API接口進(jìn)行調(diào)用處理,以便進(jìn)行系統(tǒng)各項(xiàng)功能的開發(fā)設(shè)計(jì)。功能模塊層同樣需要進(jìn)行必要的接口化封裝,以便為業(yè)務(wù)邏輯層調(diào)用相關(guān)功能提供保障。
業(yè)務(wù)邏輯層的主要功能是對(duì)各項(xiàng)模塊功能具體化,使其形成可以具體操作的功能業(yè)務(wù)。例如,利用電機(jī)驅(qū)動(dòng)模塊啟動(dòng)電機(jī)并運(yùn)轉(zhuǎn),同時(shí)實(shí)現(xiàn)暫存區(qū)域翻轉(zhuǎn)功能。通信業(yè)務(wù)的主要作用是對(duì)下位機(jī)傳來的命令數(shù)據(jù)幀進(jìn)行解析處理,調(diào)用通信模塊接口完成相關(guān)操作。
2.3 底層硬件芯片設(shè)計(jì)
考慮軌道交通檢票機(jī)底層軟件的智能化通行檢測(cè)系統(tǒng)需要豐富的功能,對(duì)應(yīng)的接口數(shù)量較多,在以工控機(jī)為主控制單元的條件下無法滿足全部功能需求,因此需要設(shè)計(jì)芯片,將其作為輔助處理器。在綜合分析后,本文將意法半導(dǎo)體公司生產(chǎn)的STM32F429GT6作為微控制器(MCU)[5]。該型號(hào)控制器工作頻率為180 MHz,支持低功耗,內(nèi)核處理器為32位ARM Cortex-M4 CPU,設(shè)計(jì)6個(gè)串行外設(shè)接口(Serial Peripheral Interface,SPI)和176個(gè)I/O引腳。
2.4 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
設(shè)備核心層在執(zhí)行過程中會(huì)不斷接收來自上位機(jī)的新指令。鑒于中斷處理函數(shù)不具備重入性,如果在其中直接處理指令,將會(huì)阻塞中斷觸發(fā),進(jìn)而無法響應(yīng)上位機(jī)下達(dá)的新指令。針對(duì)該情況,本文開辟專用的內(nèi)存區(qū)域,用于暫存上位機(jī)傳輸?shù)闹噶?。在?shù)據(jù)傳輸環(huán)節(jié),可能會(huì)遇到連續(xù)2幀數(shù)據(jù)到達(dá)時(shí)間間隔過短的問題,會(huì)導(dǎo)致前一頓數(shù)據(jù)還沒有處理完畢,下一幀數(shù)據(jù)便接踵而至并覆蓋前一數(shù)據(jù)。在程序設(shè)計(jì)環(huán)節(jié),需要對(duì)上述情況造成的影響進(jìn)行具體分析,本文利用列隊(duì)數(shù)據(jù)結(jié)構(gòu)將上層傳輸?shù)闹噶钚畔⑦M(jìn)行緩存處理,使CPU在系統(tǒng)空閑階段執(zhí)行相關(guān)指令[6]。串口中斷處理函數(shù)能夠?qū)θ蝿?wù)指令相關(guān)信息進(jìn)行有效復(fù)制并將其添加到隊(duì)列中,整個(gè)環(huán)節(jié)消耗的時(shí)間較少,并不會(huì)影響任務(wù)執(zhí)行效率。此外,任務(wù)隊(duì)列主要采用環(huán)形列隊(duì)和靜態(tài)鏈表的方法完成底層處理。
系統(tǒng)利用鏈表數(shù)據(jù)結(jié)構(gòu)進(jìn)行任務(wù)節(jié)點(diǎn)信息存儲(chǔ),對(duì)底層眾多任務(wù)指令進(jìn)行分級(jí)處理,級(jí)別包括“很高”“高”和“低”。根據(jù)不同級(jí)別制定不同任務(wù)命令。鏈表定義過程如下所示。
//鏈表節(jié)點(diǎn)結(jié)構(gòu)
typedef struct istItem
{
ListData_t data;" " " " "http://節(jié)點(diǎn)數(shù)據(jù)
Volatile int inuse;" " " "http://節(jié)點(diǎn)存儲(chǔ)空間狀態(tài)
Steuct ListItem *next;" "http://指向后繼節(jié)點(diǎn)的指針
}ListItem_t, *ListItemPtr_t;
//鏈表定義
typedef struct List
{
ListItem_t list[LIST_SIZE];" " " " //用數(shù)組存儲(chǔ)鏈表的節(jié)點(diǎn)
ListItem_t head;" " " " " " " " "http://鏈表頭指針
ListItem_t tail;" " " " " " " " " //鏈表尾指針
}List_t, *ListPtr_t;
利用inuse標(biāo)志表示節(jié)點(diǎn)任務(wù)信息讀取狀態(tài),其中0代表已經(jīng)讀取,1代表未讀取。當(dāng)新的節(jié)點(diǎn)進(jìn)入任務(wù)時(shí),先標(biāo)記為“1”。找到可以操作的節(jié)點(diǎn)后,將具體內(nèi)容進(jìn)行封裝處理,裝入ListItem_t類型結(jié)構(gòu)中,再將其插入對(duì)應(yīng)的鏈表位置中。
本文將任務(wù)列隊(duì)設(shè)計(jì)為靜態(tài)鏈表結(jié)構(gòu),設(shè)定任務(wù)參數(shù)最大值為5字節(jié),添加并定義新節(jié)點(diǎn)時(shí)的情況如下所示。
Typedef struct
{
TaskEnum_t" " " " task;" " " //任務(wù)類型
Volatile uint8_t" " " param[5];" //任務(wù)參數(shù)
}ListData_t;
以現(xiàn)金功能模塊為例,任務(wù)類型設(shè)置情況見表1。
系統(tǒng)再運(yùn)行期間會(huì)不停發(fā)送指令,因此本文設(shè)計(jì)了循環(huán)列隊(duì)的數(shù)據(jù)結(jié)構(gòu),采用循環(huán)列隊(duì)形式能夠節(jié)省數(shù)據(jù)內(nèi)存空間,同時(shí)提升指令操作效率。循環(huán)列隊(duì)的定義情況如下所示。
typedef struct
{
volaitle int front;nbsp; " " " " " //頭部位置
volatile int fear;" " " " " " "http://尾部位置
int" " " "bufSize;" " " " " //常量
Byte_t*" "pData;" " " " " "http://指向一個(gè)全局?jǐn)?shù)組
}RingBuffer_t, *RingBufferPrt_t;
fornt指針為循環(huán)列隊(duì)的首部指針,在隊(duì)列中取出一個(gè)信息后,fornt指針后移一個(gè)位置;rear為尾部指針,當(dāng)在隊(duì)列中新加一個(gè)信息時(shí),rear指針會(huì)后移一個(gè)單位,當(dāng)指針處于最末尾時(shí)需要進(jìn)行更新。
在任務(wù)提取過程中,循環(huán)隊(duì)列能夠采用參數(shù)定位的方法存儲(chǔ)多個(gè)任務(wù)命令,參數(shù)分別為任務(wù)內(nèi)容長度和起始位置的偏移量。上述2個(gè)參數(shù)信息存放到一起后代表具體的任務(wù)命令,以此完成相關(guān)操作。
在設(shè)備運(yùn)行期間,上位機(jī)系統(tǒng)會(huì)發(fā)送優(yōu)先級(jí)較高的操作指令,需要下位機(jī)系統(tǒng)及時(shí)、正確地反饋信息。在循環(huán)隊(duì)列中,以“先進(jìn)先出”原則為第一原則,因此需要進(jìn)行適當(dāng)調(diào)整。采用3個(gè)相對(duì)獨(dú)立的循環(huán)隊(duì)列分別存儲(chǔ)不同優(yōu)先級(jí)的任務(wù)指令,可以有效解決上述問題。但是在實(shí)際操作中還需要對(duì)內(nèi)存變大的問題進(jìn)行具體分析。
2.5 通信協(xié)議設(shè)計(jì)
軌道交通檢票機(jī)的底層功能處理模塊主要利用RS232串口通信方法層與上位機(jī)間的通信功能。在通信過程中,數(shù)據(jù)信息以字節(jié)的形式進(jìn)行接收與發(fā)送,但是單一的字節(jié)無法表達(dá)全部信息,連續(xù)傳輸多個(gè)字節(jié)又會(huì)出現(xiàn)無法界定數(shù)據(jù)信息的問題,因此在系統(tǒng)運(yùn)行期間很容易出現(xiàn)數(shù)據(jù)亂碼等問題。針對(duì)上述問題,需要確定系統(tǒng)傳輸?shù)臉?biāo)準(zhǔn)通信協(xié)議,對(duì)不同子系統(tǒng)的數(shù)據(jù)進(jìn)行規(guī)范化處理,包括數(shù)據(jù)幀、數(shù)據(jù)形式等,以此簡化數(shù)據(jù)傳輸流程,保證數(shù)據(jù)傳輸過程的有效性、穩(wěn)定性以及可靠性。數(shù)據(jù)包結(jié)構(gòu)如圖2所示。
在一般情況下,計(jì)算機(jī)系統(tǒng)主要通過串行接口進(jìn)行通信傳輸,在實(shí)際應(yīng)用過程中主要利用單一的底線與信號(hào)線完成數(shù)據(jù)傳輸,具有較強(qiáng)的抗干擾性。并行通信會(huì)利用多個(gè)信號(hào)線完成多位數(shù)據(jù)信息傳輸,并保證傳輸?shù)耐叫耘c時(shí)效性,因此需要優(yōu)先設(shè)計(jì)傳輸速度,但是會(huì)使系統(tǒng)結(jié)構(gòu)會(huì)更復(fù)雜。在本次設(shè)計(jì)中,由于系統(tǒng)對(duì)傳輸效率和通信復(fù)雜性要求不高,因此本文選擇串行通信的方式。
串行通信可以分為異步與同步2種形式,其中異步通信方式在運(yùn)行期間不受數(shù)據(jù)傳輸時(shí)間影響,具有方法簡單、系統(tǒng)穩(wěn)定性較高的優(yōu)點(diǎn);同步通信需要根據(jù)時(shí)鐘信號(hào)完成傳輸,對(duì)系統(tǒng)時(shí)鐘頻率具有較高要求。綜合分析后,本文選擇異步串行通信模式。
在異步串行通信模式中,需要提前設(shè)定數(shù)據(jù)包相關(guān)因素的標(biāo)準(zhǔn)規(guī)范,包括有效數(shù)據(jù)、起始位、停止位以及校驗(yàn)位等,從而保證數(shù)據(jù)傳輸期間波特率和格式具有統(tǒng)一性,保證數(shù)據(jù)傳輸?shù)木珳?zhǔn)性與可靠性。
設(shè)計(jì)系統(tǒng)數(shù)據(jù)包格式如下:第1位為起始位,第2~9位為數(shù)據(jù)位,中間不涉及校驗(yàn)位,第10位為停止位,波特率設(shè)計(jì)為9 600 Bit/s。
在通信數(shù)據(jù)幀設(shè)計(jì)環(huán)節(jié),本文采用16進(jìn)制形式發(fā)送數(shù)據(jù),在有效內(nèi)容前、后設(shè)計(jì)幀頭、幀尾,幀頭為16進(jìn)制0x02,幀尾為16進(jìn)制0x03。數(shù)據(jù)內(nèi)容包括命令參數(shù)、模塊編號(hào)、出錯(cuò)碼以及命令碼等字段內(nèi)容,采用異或校驗(yàn)方法進(jìn)行數(shù)據(jù)校驗(yàn)。
2.6 檢票系統(tǒng)程序的設(shè)計(jì)與實(shí)現(xiàn)
檢票系統(tǒng)程序設(shè)計(jì)包括2種設(shè)計(jì)方式。第一種是利用IC卡進(jìn)行上、下車刷卡扣費(fèi),第二種是掃描紙質(zhì)票據(jù)上的二維碼以完成驗(yàn)票。IC卡方案直接集成。在現(xiàn)金或移動(dòng)支付的情況下,系統(tǒng)會(huì)輸出具有二維碼的實(shí)體票據(jù)。本文對(duì)二維碼票據(jù)的驗(yàn)票方式進(jìn)行了深入分析與設(shè)計(jì),將整個(gè)檢票過程劃分為待機(jī)、驗(yàn)票和驗(yàn)票成功等8個(gè)階段。驗(yàn)票核心涉及2個(gè)關(guān)鍵環(huán)節(jié),即掃碼模塊激活后,檢測(cè)是否存在票據(jù)。如果無票據(jù),那么提示乘客執(zhí)行驗(yàn)票;如果有票據(jù),那么進(jìn)入第二個(gè)決策環(huán)節(jié),即比較票據(jù)二維碼與系統(tǒng)存儲(chǔ)信息。如果匹配,那么顯示驗(yàn)票成功;如果不匹配,那么要求乘客重新驗(yàn)票。
3 軌道交通檢票機(jī)底層軟件的智能化通行檢測(cè)實(shí)踐應(yīng)用
在系統(tǒng)測(cè)試環(huán)節(jié),本文利用STM32開發(fā)環(huán)境Keil5、ST-Link仿真器、24V直流穩(wěn)壓電源以及萬用表等工具構(gòu)建測(cè)試環(huán)境,以此分析系統(tǒng)硬件電路、功能、性能以及異常情況處理效果。分析本文各項(xiàng)測(cè)試數(shù)據(jù)可知,可以確認(rèn)硬件電路板在電壓轉(zhuǎn)換方面達(dá)到應(yīng)用標(biāo)準(zhǔn),各個(gè)電路單元運(yùn)作狀況良好;本文系統(tǒng)通信協(xié)議數(shù)據(jù)傳輸正常,底層處理器能夠穩(wěn)定地與上層系統(tǒng)進(jìn)行數(shù)據(jù)交換。同時(shí),系統(tǒng)中的直流電動(dòng)機(jī)、傳感器和錢幣識(shí)別器等裝置的性能均符合標(biāo)準(zhǔn),可以利用傳感器和控制電機(jī)完成相關(guān)操作,并與其他系統(tǒng)模塊間進(jìn)行協(xié)同工作。智能化通行檢測(cè)系統(tǒng)在運(yùn)行期間支持對(duì)現(xiàn)金、IC卡、NFC以及相關(guān)智能設(shè)備的監(jiān)測(cè)與支付處理,并能將出現(xiàn)故障的位置及時(shí)上報(bào)上位機(jī)系統(tǒng),進(jìn)行智能化管控。綜上所述,本文設(shè)計(jì)的控制系統(tǒng)能夠達(dá)到既定的設(shè)計(jì)目標(biāo),并符合相關(guān)性能指標(biāo)。
4 結(jié)語
有軌電車是城市軌道交通中的重要交通方式之一,符合我國綠色生態(tài)、可持續(xù)發(fā)展的政策需求,進(jìn)而在越來越多的城市中得到快速發(fā)展。為進(jìn)一步提高軌道交通交票效率,本文對(duì)軌道交通檢票機(jī)底層軟件的智能化通行檢測(cè)進(jìn)行了實(shí)踐研究,對(duì)底層軟件系統(tǒng)各功能模塊設(shè)計(jì)進(jìn)行了深入探討,并提出具體設(shè)計(jì)方案。測(cè)試證明,本文設(shè)計(jì)系統(tǒng)具有可行性,能夠?yàn)檐壍澜煌òl(fā)展提供一定參考。
參考文獻(xiàn)
[1]甘露,張征.軌道交通無障礙快速檢票系統(tǒng)解決方案[J].鐵路通信信號(hào)工程技術(shù),2024,21(3):83-88.
[2]溫彤.上海軌道交通平開門式自動(dòng)檢票機(jī)模塊化統(tǒng)型方案研究[J].隧道與軌道交通,2023(2):44-48,70.
[3]徐余明,黎家靖,張寧,等.地鐵自動(dòng)檢票機(jī)故障分析及可靠性研究[J].大連交通大學(xué)學(xué)報(bào),2023,44(2):101-107.
[4]李曉紅,王珂.自動(dòng)檢票機(jī)通行傳感器的常見故障及處理[J].現(xiàn)代商貿(mào)工業(yè),2023,44(9):248-249.
[5]劉玉,趙耀,李金龍,等.淺談地鐵AFC自動(dòng)售檢票系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].中國設(shè)備工程,2022(12):110-112.
[6]權(quán)經(jīng)超.北京市軌道交通車站自動(dòng)檢票機(jī)配置優(yōu)化研究[J].現(xiàn)代城市軌道交通,2022(5):81-86.