


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