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