周承云
(廣西交通投資集團南寧高速公路運營有限公司,廣西 南寧 530022)
近年來,道路機動車數量急劇增長,交通事業發展速度跟不上,導致交通狀況日益惡化,而交通仿真系統的出現,對解決各種交通問題做出了巨大的貢獻。交通仿真系統[1]是模擬交通控制在城市道路交通中通過檢測參數設置的合理性、道路交通需求的適應性,及時地調整和控制交通信號的參數,避免因信號控制失誤造成交通混亂,以此來觀察系統的科學性和運行效率。其不僅可以為現實交通規劃提供參考,還可以為信號控制配時方案進行評估,達到節能減排、減少交通擁擠的效果,具有很強的現實意義。
早期的智能交通控制主要采用的是模糊邏輯的方法[2],但簡單的模糊處理會降低控制精度,導致規則難以總結。若采用湊試法,則量化因子等參數包含了過多的人為因素,造成設計過程缺乏系統性。目前,運用較多的是遺傳算法[3],然而隨著路由機制的導航系統變量增加,系統計算的成本也會成倍增加。
為此,本文設計了一種基于單片機的十字交叉道路交通信號控制仿真系統,采用模塊化思想對系統進行硬件與軟件設計,該系統能夠根據相應的按鍵來選擇十字交叉路口的交通信號控制策略的模擬及可視化,同時也可通過修改相應程序來調整交通流的流通速度、通行時間及車輛類型。
目前交通信號控制的設計多采用工控機[4]、可編程控制器(Programmable Logic Controller,PLC)[5]和FPGA半定制電路[6]。然而,工控機會隨著運行時間過長,導致系統運行速度和可靠性降低;PLC設計死板,結構過于封閉;FPGA成本較高,不建議多用。單片機具有集成度高、體積小、可靠性高、強大的控制功能、低電壓、低功耗、便攜式產品、易于生產、易于擴展等優點,故本文采用單片機控制技術[7-9]。
整個系統分為硬件和軟件兩個部分。硬件是由主控制模塊、車輛檢測模塊、倒計時模塊、流量檢測模塊、供電模塊和信號輸出模塊組成。軟件設計包括通訊程序設計、系統倒計時顯示設計、故障診斷及保護程序設計和Unity虛擬仿真程序設計。設計采用單片機STM32F103為核心元器件,通過程序實現控制通行時間,以數碼管倒計時顯示出來,若出現交通阻塞時,可通過按鍵延長通行時間,緩解交通壓力。
硬件系統是由系統供電模塊、流量檢測模塊、主控制模塊、車輛檢測模塊、倒計時模塊、信號輸出模塊等組成。本系統的主控芯片選擇了來自ARM公司的STM32F103C4芯片。STM32F103系列芯片采用了Cortex-M3內核,具有高性能和低功耗的特性。芯片本身還具有USB、CAN和7個DMA通道,以方便進行開發過程中的調試,這些特性使得這一系列芯片在嵌入式系統開發領域中受到了廣泛使用,系統整體結構如圖1所示,除了作為核心的STM32F103C4控制板外,系統共分6個模塊,各模塊功能如下:

圖1 系統整體結構示意圖
(1)系統供電模塊:為系統整體進行3.3 V和5 V直流供電。
(2)車流監視模塊:用以監視仿真過程中,不同道口方向的車輛流通情況,并將其量化,轉換為數字信號以輸入主控芯片。
(3)控制模塊:用以提供仿真設備的開啟、關閉和復位等基本操作,并能切換設備的不同工作模式。
(4)交通流顯示模塊:用以顯示系統檢測到的實時車流情況。
(5)倒計時模塊:用以顯示車流的剩余通行時間。
(6)信號輸出模塊:用以將控制信號發送至個人電腦。
系統軟件的形成是依靠硬件的,只有當二者兼容協調才能夠使得本系統穩定運行。為了滿足半實物仿真的實時性,讓系統在運行期間不發生延時,在本軟件設計中重點解決高速的信號仿真器與PC機的實時通信問題以及Unity3D平臺里三維虛擬視景的快速生成和顯示問題。同時,為了使得以后相應的程序可以更好進行調試與維護,對于本系統的軟件部分采用模塊化設計,其中系統的主程序通過調用各個子程序完成系統初始化、各種控制方式的實現及通訊控制等。
高速的信號仿真器采集到的控制信號主要存放在寄存器當中,本系統主要采取Modbus協議來對這些寄存器進行訪問,在IAR EWARM里搭建好固件庫后,編寫好相應的應用程序,使得數據按照Modbus RTU通信協議進行傳輸。串口采用的是RS485,其基本操作包括串口初始化、發送和接收數據,主要通過訪問寄存器來完成,具體如圖2所示。

圖2 串口通信程序流程圖
系統的時段主要分成平常時段與假日時段,同時根據不同的交通情況改變信號燈的狀態。在系統開始工作時,南北紅燈亮,同時東西綠燈亮。南北紅燈時間維持45 s程序,東西綠燈時間維持30 s程序。到30 s時,東西綠燈閃亮,綠燈閃亮時間5 s后熄滅,東西黃燈亮并維持10 s程序。到10 s時,東西黃燈熄滅且東西紅燈亮45 s程序,同時南北紅燈熄滅,南北綠燈亮30 s程序。東西紅燈維持時間45 s程序,南北綠燈維持30 s程序。到30 s時,南北綠燈閃亮后熄滅,南北黃燈亮且維持10 s程序。到10 s時,南北黃燈熄滅且其方向上的紅燈亮,接著就進行第二周期的運行。具體倒計時顯示程序流程圖如圖3所示。

圖3 倒計時顯示程序流程圖
本系統通過四相位交通控制,采集各個相位綠燈信號進行比對,對綠燈沖突故障進行檢測。若有故障信息,則通過串口將信息發送給單片機進行報警及故障顯示,具體如圖4所示。

圖4 故障診斷及保護電路程序流程圖
在虛擬仿真平臺中,本系統采用多線程的編程方式進行設計。整個Unity3D平臺的多線程流程圖如圖5所示。

圖5 Uniry3D平臺的多線程流程圖
其中線程1完成的是被控對象模型的執行動作顯示,每個采集到的信號會對應著一個被控對象的執行動作,被控對象的執行動作根據對應信號的變化而變化。而線程2完成的是采集高速信號仿真器里存儲的控制信號。但是線程1和線程2在同步運行時,會出現相互打斷的現象,不利于提高虛擬平臺的刷新頻率,為此,采用同步鎖來處理這種問題。同步鎖的程序流程圖如圖6所示。

圖6 同步鎖的程序流程圖
在交通信號燈的虛擬視景平臺里,分別截取了交通信號燈的控制面板和交通信號燈的視景效果圖,以此來展現交通信號燈的單片機控制半實物仿真系統的運行狀態和結果如圖7所示。

本文設置了一種基于單片機的十字交叉路口交通信號控制仿真器,并完成實物制作。該仿真器以STM32單片機為控制器,交通流顯示模塊由16×16點陣的LED模塊及7段數碼管組成,PC上位機與信號輸出模塊相連,將真實的控制信號與虛擬的控制信號相互轉化,使用移植性好的C語言編寫電源、車輛檢測、按鍵及倒計時模塊,同時還引入車輛檢測模塊優化配置信號。
本系統的PC端上位機的Unity視景圖像可以觀察交通流的狀況,采用按鍵方式實現不同的交通流模式的切換,也可修改軟件參數實現對通行時間的設置,且在這一過程中可采用紅外遙控代替按鍵鍵盤,使效果更加逼真。