周承云
(廣西交通投資集團南寧高速公路運營有限公司,廣西 南寧 530022)
近年來,道路機動車數(shù)量急劇增長,交通事業(yè)發(fā)展速度跟不上,導(dǎo)致交通狀況日益惡化,而交通仿真系統(tǒng)的出現(xiàn),對解決各種交通問題做出了巨大的貢獻。交通仿真系統(tǒng)[1]是模擬交通控制在城市道路交通中通過檢測參數(shù)設(shè)置的合理性、道路交通需求的適應(yīng)性,及時地調(diào)整和控制交通信號的參數(shù),避免因信號控制失誤造成交通混亂,以此來觀察系統(tǒng)的科學(xué)性和運行效率。其不僅可以為現(xiàn)實交通規(guī)劃提供參考,還可以為信號控制配時方案進行評估,達到節(jié)能減排、減少交通擁擠的效果,具有很強的現(xiàn)實意義。
早期的智能交通控制主要采用的是模糊邏輯的方法[2],但簡單的模糊處理會降低控制精度,導(dǎo)致規(guī)則難以總結(jié)。若采用湊試法,則量化因子等參數(shù)包含了過多的人為因素,造成設(shè)計過程缺乏系統(tǒng)性。目前,運用較多的是遺傳算法[3],然而隨著路由機制的導(dǎo)航系統(tǒng)變量增加,系統(tǒng)計算的成本也會成倍增加。
為此,本文設(shè)計了一種基于單片機的十字交叉道路交通信號控制仿真系統(tǒng),采用模塊化思想對系統(tǒng)進行硬件與軟件設(shè)計,該系統(tǒng)能夠根據(jù)相應(yīng)的按鍵來選擇十字交叉路口的交通信號控制策略的模擬及可視化,同時也可通過修改相應(yīng)程序來調(diào)整交通流的流通速度、通行時間及車輛類型。
目前交通信號控制的設(shè)計多采用工控機[4]、可編程控制器(Programmable Logic Controller,PLC)[5]和FPGA半定制電路[6]。然而,工控機會隨著運行時間過長,導(dǎo)致系統(tǒng)運行速度和可靠性降低;PLC設(shè)計死板,結(jié)構(gòu)過于封閉;FPGA成本較高,不建議多用。單片機具有集成度高、體積小、可靠性高、強大的控制功能、低電壓、低功耗、便攜式產(chǎn)品、易于生產(chǎn)、易于擴展等優(yōu)點,故本文采用單片機控制技術(shù)[7-9]。
整個系統(tǒng)分為硬件和軟件兩個部分。硬件是由主控制模塊、車輛檢測模塊、倒計時模塊、流量檢測模塊、供電模塊和信號輸出模塊組成。軟件設(shè)計包括通訊程序設(shè)計、系統(tǒng)倒計時顯示設(shè)計、故障診斷及保護程序設(shè)計和Unity虛擬仿真程序設(shè)計。設(shè)計采用單片機STM32F103為核心元器件,通過程序?qū)崿F(xiàn)控制通行時間,以數(shù)碼管倒計時顯示出來,若出現(xiàn)交通阻塞時,可通過按鍵延長通行時間,緩解交通壓力。
硬件系統(tǒng)是由系統(tǒng)供電模塊、流量檢測模塊、主控制模塊、車輛檢測模塊、倒計時模塊、信號輸出模塊等組成。本系統(tǒng)的主控芯片選擇了來自ARM公司的STM32F103C4芯片。STM32F103系列芯片采用了Cortex-M3內(nèi)核,具有高性能和低功耗的特性。芯片本身還具有USB、CAN和7個DMA通道,以方便進行開發(fā)過程中的調(diào)試,這些特性使得這一系列芯片在嵌入式系統(tǒng)開發(fā)領(lǐng)域中受到了廣泛使用,系統(tǒng)整體結(jié)構(gòu)如圖1所示,除了作為核心的STM32F103C4控制板外,系統(tǒng)共分6個模塊,各模塊功能如下:
圖1 系統(tǒng)整體結(jié)構(gòu)示意圖
(1)系統(tǒng)供電模塊:為系統(tǒng)整體進行3.3 V和5 V直流供電。
(2)車流監(jiān)視模塊:用以監(jiān)視仿真過程中,不同道口方向的車輛流通情況,并將其量化,轉(zhuǎn)換為數(shù)字信號以輸入主控芯片。
(3)控制模塊:用以提供仿真設(shè)備的開啟、關(guān)閉和復(fù)位等基本操作,并能切換設(shè)備的不同工作模式。
(4)交通流顯示模塊:用以顯示系統(tǒng)檢測到的實時車流情況。
(5)倒計時模塊:用以顯示車流的剩余通行時間。
(6)信號輸出模塊:用以將控制信號發(fā)送至個人電腦。
系統(tǒng)軟件的形成是依靠硬件的,只有當二者兼容協(xié)調(diào)才能夠使得本系統(tǒng)穩(wěn)定運行。為了滿足半實物仿真的實時性,讓系統(tǒng)在運行期間不發(fā)生延時,在本軟件設(shè)計中重點解決高速的信號仿真器與PC機的實時通信問題以及Unity3D平臺里三維虛擬視景的快速生成和顯示問題。同時,為了使得以后相應(yīng)的程序可以更好進行調(diào)試與維護,對于本系統(tǒng)的軟件部分采用模塊化設(shè)計,其中系統(tǒng)的主程序通過調(diào)用各個子程序完成系統(tǒng)初始化、各種控制方式的實現(xiàn)及通訊控制等。
高速的信號仿真器采集到的控制信號主要存放在寄存器當中,本系統(tǒng)主要采取Modbus協(xié)議來對這些寄存器進行訪問,在IAR EWARM里搭建好固件庫后,編寫好相應(yīng)的應(yīng)用程序,使得數(shù)據(jù)按照Modbus RTU通信協(xié)議進行傳輸。串口采用的是RS485,其基本操作包括串口初始化、發(fā)送和接收數(shù)據(jù),主要通過訪問寄存器來完成,具體如圖2所示。
圖2 串口通信程序流程圖
系統(tǒng)的時段主要分成平常時段與假日時段,同時根據(jù)不同的交通情況改變信號燈的狀態(tài)。在系統(tǒng)開始工作時,南北紅燈亮,同時東西綠燈亮。南北紅燈時間維持45 s程序,東西綠燈時間維持30 s程序。到30 s時,東西綠燈閃亮,綠燈閃亮?xí)r間5 s后熄滅,東西黃燈亮并維持10 s程序。到10 s時,東西黃燈熄滅且東西紅燈亮45 s程序,同時南北紅燈熄滅,南北綠燈亮30 s程序。東西紅燈維持時間45 s程序,南北綠燈維持30 s程序。到30 s時,南北綠燈閃亮后熄滅,南北黃燈亮且維持10 s程序。到10 s時,南北黃燈熄滅且其方向上的紅燈亮,接著就進行第二周期的運行。具體倒計時顯示程序流程圖如圖3所示。
圖3 倒計時顯示程序流程圖
本系統(tǒng)通過四相位交通控制,采集各個相位綠燈信號進行比對,對綠燈沖突故障進行檢測。若有故障信息,則通過串口將信息發(fā)送給單片機進行報警及故障顯示,具體如圖4所示。
圖4 故障診斷及保護電路程序流程圖
在虛擬仿真平臺中,本系統(tǒng)采用多線程的編程方式進行設(shè)計。整個Unity3D平臺的多線程流程圖如圖5所示。
圖5 Uniry3D平臺的多線程流程圖
其中線程1完成的是被控對象模型的執(zhí)行動作顯示,每個采集到的信號會對應(yīng)著一個被控對象的執(zhí)行動作,被控對象的執(zhí)行動作根據(jù)對應(yīng)信號的變化而變化。而線程2完成的是采集高速信號仿真器里存儲的控制信號。但是線程1和線程2在同步運行時,會出現(xiàn)相互打斷的現(xiàn)象,不利于提高虛擬平臺的刷新頻率,為此,采用同步鎖來處理這種問題。同步鎖的程序流程圖如圖6所示。
圖6 同步鎖的程序流程圖
在交通信號燈的虛擬視景平臺里,分別截取了交通信號燈的控制面板和交通信號燈的視景效果圖,以此來展現(xiàn)交通信號燈的單片機控制半實物仿真系統(tǒng)的運行狀態(tài)和結(jié)果如圖7所示。
本文設(shè)置了一種基于單片機的十字交叉路口交通信號控制仿真器,并完成實物制作。該仿真器以STM32單片機為控制器,交通流顯示模塊由16×16點陣的LED模塊及7段數(shù)碼管組成,PC上位機與信號輸出模塊相連,將真實的控制信號與虛擬的控制信號相互轉(zhuǎn)化,使用移植性好的C語言編寫電源、車輛檢測、按鍵及倒計時模塊,同時還引入車輛檢測模塊優(yōu)化配置信號。
本系統(tǒng)的PC端上位機的Unity視景圖像可以觀察交通流的狀況,采用按鍵方式實現(xiàn)不同的交通流模式的切換,也可修改軟件參數(shù)實現(xiàn)對通行時間的設(shè)置,且在這一過程中可采用紅外遙控代替按鍵鍵盤,使效果更加逼真。