劉艷昌,王娜
(1.河南科技學(xué)院,河南新鄉(xiāng)453003;2.濟(jì)源職業(yè)技術(shù)學(xué)院電氣工程系,河南濟(jì)源,454650)
近年來,隨著各類車輛特別是私家車的快速增長,由于大多中小城市高速公路收費(fèi)站仍采用人工收費(fèi)方式,使得車輛在交費(fèi)時需完全停止,引起的交通擁擠、延誤等問題不斷出現(xiàn),在交通高峰期擁堵現(xiàn)象尤為嚴(yán)重.在如何提高收費(fèi)結(jié)算率、避免擁堵方面,收費(fèi)站已成為高速公路的“瓶頸”問題.另外車輛頻繁的啟動、剎車也造成了能源浪費(fèi)和環(huán)境污染,同時也加快了車輛部件的磨損,帶來交通隱患.基于RFID技術(shù)的高速公路自動收費(fèi)系統(tǒng)采用無線方式,通過安裝在車輛前部的射頻卡(繳費(fèi)卡)和置于收費(fèi)站內(nèi)的讀卡器進(jìn)行信息交換,是一種全自動收費(fèi)方式.該系統(tǒng)的開發(fā)與實(shí)現(xiàn),可以消除人為因素帶來的影響,對于提高收費(fèi)效率,降低車輛擁堵率具有積極作用[1-2].
系統(tǒng)網(wǎng)絡(luò)總體結(jié)構(gòu)如圖1所示.該系統(tǒng)主要由現(xiàn)場收費(fèi)站,開戶、收費(fèi)中心和自動收費(fèi)控制中心3大部分組成.現(xiàn)場收費(fèi)站分為人工收費(fèi)和自動收費(fèi)兩個通道,自動收費(fèi)通道可以實(shí)現(xiàn)不停車自動收費(fèi),由射頻卡和讀卡器完成信息記錄并通過內(nèi)部局域網(wǎng)將車輛通過信息傳輸?shù)娇刂浦行腫3].開戶、收費(fèi)中心用來實(shí)現(xiàn)遠(yuǎn)程開戶,充值付費(fèi)功能.由自動收費(fèi)系統(tǒng)控制中心完成一切信息的處理,包括添加收費(fèi)站、設(shè)置價格表、自動收費(fèi)、記錄用戶信息等功能.
圖1 系統(tǒng)網(wǎng)絡(luò)總體結(jié)構(gòu)
該系統(tǒng)軟件模塊是在Linux操作系統(tǒng)下采用C語言編程來實(shí)現(xiàn)全自動車道收費(fèi)流程[4-6],具有系統(tǒng)長期穩(wěn)定、可移植性好、靈活等特點(diǎn).根據(jù)實(shí)際功能需要,該系統(tǒng)的應(yīng)用程序?qū)崿F(xiàn)主要分3個模塊:網(wǎng)絡(luò)傳輸模塊實(shí)現(xiàn)、收費(fèi)模塊實(shí)現(xiàn)和管理模塊實(shí)現(xiàn).功能模塊之間關(guān)系如圖2所示.
圖2 軟件功能模塊關(guān)系
由于要求入口線圈檢測到車輛時,系統(tǒng)立即響應(yīng)入口線圈的開關(guān)信號,將信息傳入網(wǎng)絡(luò)模塊,并在車輛通過收費(fèi)站出口前的短暫時間內(nèi)完成收費(fèi)過程.為了提高收費(fèi)可靠性,縮短信息傳輸時間,在網(wǎng)絡(luò)傳輸模塊應(yīng)用程序中創(chuàng)建一個子進(jìn)程,采用異步通知機(jī)制,用以執(zhí)行信息讀取和信息發(fā)送同時進(jìn)行,通過管道機(jī)制,實(shí)現(xiàn)進(jìn)程間的同步和通信.車輛控制網(wǎng)絡(luò)傳輸模塊軟件流程如圖3所示.
圖3 車道控制網(wǎng)絡(luò)傳輸模塊軟件流程
創(chuàng)建管道:程序開始時先從配置文件中讀取配置信息,包括服務(wù)器地址、生成操作日志文件的信息級別設(shè)置、基本的程序信息,并且通過調(diào)用pipe()函數(shù)創(chuàng)建管道為后面進(jìn)程間的通信做準(zhǔn)備.
調(diào)用fork()創(chuàng)建子進(jìn)程:一般情況下網(wǎng)絡(luò)傳輸只需要一個順序的流程,不需要創(chuàng)建多個進(jìn)程來完成數(shù)據(jù)傳輸任務(wù),但考慮到車流量不固定,網(wǎng)絡(luò)通信模塊實(shí)時性要求高,需要創(chuàng)建進(jìn)程來分別完成信息讀取和發(fā)送任務(wù).父進(jìn)程與讀卡器連接來讀取通行車輛的射頻標(biāo)簽,子進(jìn)程調(diào)用read()函數(shù)阻塞等待父進(jìn)程向管道中寫入信息,并將讀到的車輛信息通過內(nèi)部局域網(wǎng)絡(luò)發(fā)送給收費(fèi)模塊.
父子進(jìn)程中的異步通知:在沒有車輛通過時,系統(tǒng)處于休眠狀態(tài),當(dāng)入口或出口感應(yīng)線圈檢測到車輛來時,才執(zhí)行讀寫操作,因此應(yīng)采用中斷的方式來實(shí)現(xiàn).在Linux系統(tǒng)中,通常采用設(shè)備驅(qū)動的異步通知來實(shí)現(xiàn).在父進(jìn)程中,打開I/O接口設(shè)備文件,調(diào)用signal()為sigio信號安裝信號處理函數(shù),在信號處理函數(shù)中執(zhí)行讀寫模塊.
收費(fèi)模塊作為服務(wù)器端的后臺程序執(zhí)行,是前臺管理模塊的一個線程,通過公用的內(nèi)存和全局變量實(shí)現(xiàn)之間的信息同步.收費(fèi)模塊運(yùn)行開始時,先從配置文件中讀取配置信息,包括通信用的端口號、告警日志信息級別、路徑等信息.然后通過socket連接到網(wǎng)絡(luò),綁定監(jiān)聽端口[7].為了實(shí)現(xiàn)服務(wù)器能為多個收費(fèi)站路側(cè)設(shè)備服務(wù),還有來自網(wǎng)絡(luò)的充值信息,收費(fèi)模塊通過select機(jī)制實(shí)現(xiàn)多用戶操作.當(dāng)監(jiān)聽到收費(fèi)站設(shè)備的聯(lián)接時,通過信息對比和管理員事先設(shè)置好的收費(fèi)標(biāo)準(zhǔn)來對用戶的金額進(jìn)行修改,并生成操作日志.收費(fèi)系統(tǒng)流程如圖4所示.
圖4 收費(fèi)系統(tǒng)流程
系統(tǒng)在完成自動收費(fèi)功能的同時,還需要有管理員對系統(tǒng)進(jìn)行全面的管理.管理模塊和收費(fèi)模塊屬于同一個進(jìn)程,且兩模塊接收的數(shù)據(jù)是相同的,管理員通過對系統(tǒng)的操作可以查看整個系統(tǒng)的信息并進(jìn)行相應(yīng)的管理和修改.管理模塊由用戶信息管理、收費(fèi)站信息管理和查看收費(fèi)信息3部分組成,涵蓋了對整個系統(tǒng)所有信息的操作.管理模塊的實(shí)現(xiàn)主要采用service()函數(shù)處理來自不同收費(fèi)站或充值中心的信息,通過簡單的協(xié)議來區(qū)分這些信息,從而做到相應(yīng)的處理.service()函數(shù)采用非阻塞的方式得到收費(fèi)站信息,并對信息進(jìn)行實(shí)時的處理,具有遠(yuǎn)程用戶充值、記錄上下站用戶信息、自動按照價格表扣除經(jīng)過某段高速公路的金額和自動將操作信息、錯誤告警信息寫入操作日志的功能.service()函數(shù)的流程如圖5所示.
圖5 service()函數(shù)的流程
該系統(tǒng)仿真是在Linux系統(tǒng)下用C語言結(jié)合面向?qū)ο蟮膅tk庫函數(shù)及相關(guān)編程語言編寫.管理員在進(jìn)入管理系統(tǒng)執(zhí)行管理之前,身份驗(yàn)證成功后會自動跳轉(zhuǎn)到一個簡潔的管理界面,可以根據(jù)實(shí)際需要和系統(tǒng)的提示對用戶信息進(jìn)行添加、刪除、修改、充值和查找等操作.為了方便管理員對信息的查看、分析和記錄,管理系統(tǒng)沒有設(shè)置列表自動刷新,管理員可以通過刷新數(shù)據(jù)按鈕來查看用戶最新的動態(tài)信息.用戶管理界面如圖6所示.
圖6 用戶管理界面
圖6中的站點(diǎn)管理除了具有傳統(tǒng)操作外,管理員還能夠以表格的形式查看收費(fèi)站之間的價格表,以便于隨時了解相關(guān)信息;查看告警日志,便于提醒管理員對欠費(fèi)用戶采取必要措施;查看操作日志,使管理員能詳細(xì)了解記錄系統(tǒng)中的操作時間、信息等級(“info”、“warning”、“error”)和發(fā)生的事件.其站點(diǎn)管理和警告日志界面如圖7所示.
圖7 站點(diǎn)管理和告警日志界面
在實(shí)際高速公路自動收費(fèi)系統(tǒng)的應(yīng)用中,射頻卡與讀卡器之間無線數(shù)據(jù)傳輸?shù)目煽啃杂葹橹匾?為防止外界干擾等因素造成的通信死機(jī),在通信過程中加入了超時控制,并對此進(jìn)行了多次試驗(yàn),即若數(shù)據(jù)傳輸中斷超過規(guī)定的控制時間2 s時,系統(tǒng)會自動重新建立通信連接;若中斷不足2 s,則不需要重新建立通信連接即可成功實(shí)現(xiàn)數(shù)據(jù)通信.測試結(jié)果如表1所示.
表1 系統(tǒng)無線數(shù)據(jù)傳輸通信質(zhì)量
測試結(jié)果表明,讀卡器能夠迅速識別射頻卡,并能按照管理員事先設(shè)定的收費(fèi)標(biāo)準(zhǔn)進(jìn)行路段費(fèi)用收取.
本文主要在已有硬件平臺的基礎(chǔ)上,對系統(tǒng)軟件進(jìn)行了分析及實(shí)際測試,證實(shí)了該系統(tǒng)能夠可靠、穩(wěn)定地進(jìn)行無線數(shù)據(jù)通信并能夠高效地完成自動收費(fèi)功能.同時,該系統(tǒng)采用在Linux系統(tǒng)下用C語言結(jié)合面向?qū)ο蟮膅tk庫函數(shù)進(jìn)行相關(guān)軟件編程,可進(jìn)一步提高程序執(zhí)行速度,為提高收費(fèi)成功率提供了保障.
[1]黃偉華,楊建華,譚麗,等.基于無線射頻技術(shù)的高速公路自動收費(fèi)系統(tǒng)設(shè)計及軟件實(shí)現(xiàn)[J].電氣自動化,2010,32(3):72-73.
[2]閆群民.基于非接觸式IC卡的高速公路收費(fèi)系統(tǒng)設(shè)計[J].計算機(jī)測量與控制,2009,17(1):215-217.
[3]史緒蓬.高速公路電子收費(fèi)系統(tǒng)的設(shè)計[D].哈爾濱:哈爾濱理工大學(xué),2009:1-10.
[4]李波,楊紅.網(wǎng)絡(luò)管理必備工具軟件精講:Linux版[M].北京:人民郵電出版社,2009.
[5]陳立定,呂盛林.嵌入式Linux監(jiān)控終端的多進(jìn)程控制[J].自動化儀表,2011,32(1):13-15.
[6]孫新賀,王曉輝,于月森.一種嵌入式Linux操作系統(tǒng)的構(gòu)建方法[J].工業(yè)控制計算機(jī),2011,24(1):69-71.
[7]馮偉,王博.嵌入式Linux案例開發(fā)指南[M].北京:中國電力出版社,2008.