基于FPGA的交通系統遠程網(wǎng)絡(luò )控制設計
摘要 為了緩解城市交通擁堵問(wèn)題,提出一種基于FPGA平臺遠程網(wǎng)絡(luò )控制的城市交通控制系統設計。系統采用TCP/IP傳輸協(xié)議實(shí)現控制中心發(fā)送控制信息給交通系統??刂浦行牟捎?a class="contentlabel" href="http://dyxdggzs.com/news/listbylabel/label/Qt">Qt圖形化界面實(shí)現,清楚直觀(guān);交通系統依據控制信息選擇相應配時(shí)方案進(jìn)行顯示。經(jīng)測試,該系統工作穩定、控制精確、可靠性高,且成本較低。
本文引用地址:http://dyxdggzs.com/article/201610/306122.htm關(guān)鍵詞 FPGA;TCP/IP;Qt;交通系統;遠程控制;車(chē)流量
隨著(zhù)社會(huì )經(jīng)濟的快速發(fā)展和人民生活水平的不斷提高,城市中車(chē)流量呈現出急劇增長(cháng)的趨勢,導致城市交通出現了巨大的壓力。因此,改善十字路口的交通信號燈運行模式,提高十字路口的通行效率,對緩解城市交通堵塞有著(zhù)重要的現實(shí)意義。而目前城市的交通控制,是固定的紅綠燈轉換周期,不靈活,在不同的時(shí)間段,十字路口的兩個(gè)方向會(huì )出現車(chē)流量大小不平衡的情況,同時(shí)白天與夜間的車(chē)流量相差也較大,如采用固定的定時(shí)機制將嚴重降低實(shí)際十字路口的通行效率。由此,有人提出使用地感線(xiàn)圈檢測車(chē)流量,根據車(chē)流量自動(dòng)配時(shí),但鋪設地感線(xiàn)圈成本過(guò)高,且容易出現誤差,公路網(wǎng)的現有網(wǎng)絡(luò )資源也未得到充分利用。
鑒于以上原因,本文提出了基于FPGA的遠程控制交通系統,能有效地利用公路網(wǎng)現有的網(wǎng)絡(luò )資源,動(dòng)態(tài)調節交通系統中車(chē)輛的通行時(shí)間,既提高了十字路口的車(chē)輛通行效率,又降低了成本。
1 系統總體設計與架構
該系統主要由交通系統自動(dòng)配時(shí)模塊、顯示模塊和控制中心遠程控制模塊組成,如圖1所示。
交通系統自動(dòng)配時(shí)模塊采用50 MHz時(shí)鐘源按照不同的配時(shí)方案進(jìn)行定時(shí)計數,采用Altera公司的Cyclone IV代系列EP4CE15F17C8芯片作為主控芯片,利用Verilog HDL硬件語(yǔ)言完成整個(gè)交通燈定時(shí)配時(shí)控制模塊的設計;交通系統顯示模塊是根據配時(shí)模塊選擇的方案對交通燈運行狀態(tài)和數碼管數字顯示進(jìn)行控制顯示;控制中心遠程控制模塊使用Qt界面編程技術(shù)和TCP/IP傳輸協(xié)議,使得遠程操作方便直觀(guān)且控制信息傳輸可靠。
2 交通系統自動(dòng)配時(shí)模塊
此部分主要包括配時(shí)模塊設計和定時(shí)計數模塊設計兩部分,主要實(shí)現配時(shí)方案的預存與計時(shí)。
2.1 交通系統自動(dòng)配時(shí)模塊設計
十字路口的交通分為主干道和副干道兩個(gè)方向。主干道方向具有紅燈(R1)、黃燈(Y1)、直行綠燈(G1)和左轉綠燈(L1),副干道方向也具有紅燈 (R2)、黃燈(Y2)、直行綠燈(G2)和左轉綠燈(L2)。在交通高峰時(shí)期,十字路口兩個(gè)方向的燈必須按照合理的順序亮滅,根據十字路口的實(shí)際交通運行情況,此時(shí)系統的工作情況如下:
主干道方向的交通燈工作順序為:綠燈→黃燈→左轉綠燈→黃燈→紅燈→黃燈。
副干道方向的交通燈工作順序為:紅燈→黃燈→綠燈→黃燈→左轉綠燈→黃燈。
在實(shí)際交通中,兩個(gè)方向交通信號燈的狀態(tài)有著(zhù)密切的聯(lián)系,一個(gè)方向的交通信號燈狀態(tài)影響著(zhù)另一個(gè)方向的交通信號燈狀態(tài),只有這樣才能協(xié)調好兩個(gè)方向的車(chē)流,若兩個(gè)方向的交通信號燈都各自獨立變化,交通系統則會(huì )產(chǎn)生混亂。
其一個(gè)周期的交通狀態(tài)對應情況如表1所示,狀態(tài)從S0~S7,其中1表示燈亮,0表示燈滅。在文中編程實(shí)現時(shí),可將主干道和副干道的狀態(tài)分開(kāi)進(jìn)行,所以針對主干道S4~S7狀態(tài)可合并,針對副干道S0~S3狀態(tài)可合并。
實(shí)際交通中,白天和夜間的車(chē)流量相差較大,同時(shí)白天期間的主副干道車(chē)流量也會(huì )出現不均衡的現象,這就要求準備多套配時(shí)方案,以適應不同的需求。針對白天正常情況下,主干道車(chē)流量大于副干道車(chē)流量時(shí),配時(shí)時(shí)間設置如表2所示,視為方案1;針對白天主干道車(chē)流量小于副干道車(chē)流量時(shí),配時(shí)時(shí)間如表3所示,視為方案2;針對夜間車(chē)流量較小的情況下,配時(shí)時(shí)間可如表4所示設置,視為方案3;當發(fā)生交通事故或者有救護車(chē)、消防車(chē)等應急車(chē)輛需要優(yōu)先通行時(shí),所有路口均將紅燈置亮,保證應急車(chē)輛的通行。這3種配時(shí)方案的選擇是由控制中心綜合所得到的交通信息之后,通過(guò)網(wǎng)絡(luò )遠程控制選擇。
2.2 定時(shí)計數模塊設計
系統使用50MHz時(shí)鐘晶振,所以1 s對應50 000 000個(gè)時(shí)鐘節拍,每過(guò)50 000 000個(gè)時(shí)鐘節拍清零再重新計數,之后根據各盞燈的持續時(shí)間作為預置數按照1 s為一個(gè)單位遞減計數,減到1以后再根據運行狀態(tài)和配時(shí)時(shí)間重新預置數,依次循環(huán)。此模塊無(wú)需設計單獨的分頻模塊,整個(gè)系統可采用同一時(shí)鐘信號,設計上更統一且不會(huì )出現時(shí)鐘不匹配的問(wèn)題。
3 交通系統顯示模塊
顯示模塊部分主要涉及交通紅綠燈的顯示和數碼管的顯示兩部分,其中交通紅綠燈的顯示比較簡(jiǎn)單,FPGA以4位Alamp變量控制主干道上的4盞燈,其中Alamp[0]控制左轉綠燈,Alamp[1]控制黃燈,Alamp[2]控制紅燈,Alamp[3]控制綠燈,其值為1則表示相應的燈亮,如Alamp為4’b0001表示左轉綠燈亮;同時(shí)以4位Blamp變量控制副干道上的4盞燈,其設置與Alamp類(lèi)似。每個(gè)燈的亮滅持續時(shí)間都是按照配時(shí)模塊設置的。
數碼管的顯示相比于交通紅綠燈的顯示更復雜,因為需要加上加碼、動(dòng)態(tài)掃描等部分。整個(gè)交通信號燈系統實(shí)際需要4對共8個(gè)數碼管,由于相對的路口倒計時(shí)完全相同,所以為了節省邏輯資源,簡(jiǎn)化設計,可讓相對路口共用一對數碼管,所以只需對2對共4個(gè)數碼管。數碼管是共陽(yáng)的,4個(gè)數碼管的段選信號均共用同樣的引腳,且均為低電平有效。文中主干道的倒計時(shí)時(shí)間設置為Number_Data1,副干道的倒計時(shí)時(shí)間設置為Number_Data2,數碼管的顯示設計思路如圖2所示。
由圖中可看出,通過(guò)“十位取位模塊”分別對Number_Data1和Number_Data2進(jìn)行取位的操作,將其十位和個(gè)位劃分;之后通過(guò)“SMG加碼模塊”,即數碼管顯示加碼模塊,轉換成數碼管顯示碼;最后由“同步動(dòng)態(tài)掃描模塊”驅動(dòng)點(diǎn)亮數碼管?,F針對每一個(gè)模塊進(jìn)行分析。
(1)十位取位模塊。就是利用數學(xué)運算符“%”和“/”分別取得主副干道計時(shí)時(shí)間的十位和個(gè)位,將十位和個(gè)位分開(kāi)進(jìn)行處理。
(2)SMG加碼模塊。就是分別將兩個(gè)路口倒計時(shí)時(shí)間的十位與個(gè)位的數字轉換成數碼管可顯示的碼型,每一個(gè)數字均是7段數碼管a,b,c,d,e,f,g每段置亮置滅組合而成的,數碼管顯示示意圖如圖3所示。
(3)同步動(dòng)態(tài)掃描模塊。同步動(dòng)態(tài)掃描模塊利用時(shí)分原理和人類(lèi)的視覺(jué)暫留效應,由于每個(gè)數碼管點(diǎn)亮時(shí)間為1 ms,輪流驅動(dòng)點(diǎn)亮4個(gè)數碼管,人眼無(wú)法識別,所以目測為4個(gè)數碼管同時(shí)點(diǎn)亮。此模塊由兩部分組成,分別為行掃描模塊和列掃描模塊,由于FPGA是可并行操作的,所以這兩個(gè)模塊可并行執行,達到真正的同步。列掃描模塊相當于對數碼管進(jìn)行片選,每隔1 ms就使能不同的數碼管;而行掃描模塊是輸出不同的SMG碼,根據列掃描對數碼管的片選使能,輸出當前數碼管的SMG碼。
4 控制中心遠程監控模塊
此模塊采用以太網(wǎng)技術(shù)將接收到的交通信息分析處理后,通過(guò)TCP/IP傳輸協(xié)議將控制信息發(fā)送給FPGA,FPGA根據控制信息選擇配時(shí)模塊當中的一套配時(shí)方案,將顯示模塊中的交通紅綠燈和數碼管按照配時(shí)方案顯示出來(lái)。其中,FPGA控制整個(gè)交通系統作為服務(wù)端,控制中心作為客戶(hù)端,其界面采用Qt編程技術(shù)。
4.1 服務(wù)端設計
服務(wù)端采用SOPC技術(shù)構建軟核,移植TCP/IP協(xié)議棧實(shí)現網(wǎng)絡(luò )通信。TCP/IP協(xié)議較為復雜,內容較多,主要是適合PC機的通信,針對FPGA服務(wù)端設計,文中采用精簡(jiǎn)的TCP/IP協(xié)議,既能達到設計要求,也能簡(jiǎn)化設計的復雜程度,其傳輸流程圖如圖4所示。
此協(xié)議棧中,需使用以下幾個(gè)主要函數,實(shí)現數據接收:
(1)void init_ip_arp_udp_tcp(unsigned char * mymac,unsigned char * myip,unsigned char wwwp)。
此函數為初始化傳輸,主要用于填寫(xiě)MAC、IP、端口參數。函數返回值為空。
(2)unsigned char eth_type_is_arp_and_my_ip(unsigned char * buf,unsigned int len)。
此函數為數據包解析,是否接收到指向本地IP的ARP請求,若是返回值為1,若不是則返回值為0。
(3)chareth_type_is_ip_and_my_ip(unsigned char* buf,unsigned int len)。
此函數為數據包解析,是否接收到發(fā)送給本地IP的IP數據包,若是返回值為1,若不是則返回值為0。
(4)unsigned int get_tcp_data_pointer(void)。
此函數為獲取有效數據位置,若有數據返回值為有效數據位置,若無(wú)數據則返回值為0。
4.2 客戶(hù)端設計
Qt是一款跨平臺的C++用戶(hù)界面應用程序框架(C++GUI),能為應用程序開(kāi)發(fā)者提供藝術(shù)級圖形用戶(hù)界面所需的所有功能,可以在不同的系統平臺下使用,通用性好,具有良好的信號/槽封裝機制,還有豐富的API函數,能夠降低用戶(hù)開(kāi)發(fā)難度,其豐富的可擴展性使得圖形化界面更加直觀(guān)。在客戶(hù)端設計中,為了能直觀(guān)地顯示IP地址、端口號以及接收到的交通信息等參數,同時(shí)能更加方便地發(fā)送控制信息,控制中心客戶(hù)端采用Qt Creator工具實(shí)現了Qt界面設計。
這里使用QTextBrowser控件作為交通信息顯示框,QLineEdit控件輸入IP地址和端口號,QPushButton控件觸發(fā)網(wǎng)絡(luò )連接和相關(guān)控制信息的發(fā)送。由于設計中需要使用QTcp So cket網(wǎng)絡(luò )套接字編程實(shí)現網(wǎng)絡(luò )通信傳輸,所以需要在工程的pro文件中添加“QT+=network”,并添加QTcpSocket頭文件,之后需要設置連接的IP地址和端口號,創(chuàng )建QTcpSocker對象tcpclient,連接服務(wù)器語(yǔ)句為:tcpclient.connectToHost(* ip,port)。連接成功后,需點(diǎn)擊控制信息按鈕,發(fā)射信號,從而觸發(fā)數據發(fā)送槽函數的執行,其發(fā)送函數語(yǔ)句為:tcpclient.write(msg.toLoca18Bit())??刂浦行牡木W(wǎng)絡(luò )傳輸流程如圖5所示。
為了實(shí)現更友好的界面顯示,這里在Qt程序中添加了中文顯示,具體設置語(yǔ)句如下:
QTextCodec::setCodecForLocale(QTextCodec::codecForName(“UTF-8”));
QTextCodec::setCodecForTr(QTextCodec::codec ForName(“UTF-8”));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName(“UTF-8”)。
5 系統調試
將所有模塊搭建連接好之后,在控制中心界面處,輸入FPGA的IP地址及其間的端口號,點(diǎn)擊“連接”,就建立起了FPGA與控制中心的通信,控制中心的圖形化界面如圖6所示。圖中左邊的文本框顯示的是交通信息,根據圖中交通信息可知先前主干道車(chē)流量大于副干道車(chē)流量,所以這里需要點(diǎn)擊“日間模式1”按鈕,FPGA控制交通系統選用方案1,其運行結果如圖7所示。之后,圖中出現一個(gè)車(chē)輛的呼救信息,所以需點(diǎn)擊“緊急停止”按鈕,終止交通系統的運行,處理事故,其運行結果如圖8所示。
“日間模式2”按鈕對應配時(shí)方案2的運行效果,“夜間模式”按鈕對應配時(shí)方案3的運行效果,其實(shí)際測試結果正常,運行穩定,達到了控制中心遠程精確控制交通系統的目的。
6 結束語(yǔ)
本設計以FPGA作為開(kāi)發(fā)平臺,使用Verilog HDL語(yǔ)言完成了交通系統自動(dòng)配時(shí)模塊和顯示模塊的設計,同時(shí)采用SOPC技術(shù)在FPGA上構建軟核實(shí)現控制中心通過(guò)網(wǎng)絡(luò )控制交通系統,控制中心的界面采用Qt設計,美觀(guān)、操作方便且通用性好。整個(gè)設計較好地利用了現有公路的網(wǎng)絡(luò )資源,配合智能車(chē)載系統車(chē)輛信息遠程發(fā)送技術(shù),能精確有效地控制整個(gè)交通系統,相比于其他依靠傳感器,控制交通系統運行情況的設計,其可靠性更高,然而成本卻相對較低。
評論