薛開(kāi)伍 湖南師范大學(xué) 410081
解決城市主干道擁堵問(wèn)題,行之有效的方法是搭建交通綠波帶,讓車(chē)輛盡快通過(guò),從而提高單位時(shí)間內(nèi)車(chē)輛通行效率。對(duì)此,需要先設(shè)計(jì)出各個(gè)路口合適的交通燈模式,測(cè)算和獲取設(shè)計(jì)所需的交通參數(shù)和信號(hào)燈參數(shù),測(cè)算出最人性化的行人綠燈時(shí)間,選擇合適的交通燈變換周期。本文選擇某城市WY大道上的三個(gè)路口,利用VHDL硬件描述語(yǔ)言進(jìn)行綠波帶交通燈系統(tǒng)設(shè)計(jì),具有很強(qiáng)的移植性,稍作改編,可用于更大更復(fù)雜的交通綠波帶設(shè)計(jì)。
在設(shè)計(jì)一條在主干線上的交通綠波帶時(shí),主要原則利用優(yōu)化算法對(duì)各種參數(shù)進(jìn)行處理,從而確定出一條延誤時(shí)間最短的干線綠波帶。有很多參數(shù)需要實(shí)地考察或者建模計(jì)算來(lái)確定。
路段選擇以WY大道牌樓口為起點(diǎn)A,其與WY大道桃子湖路口B相距476米,而B(niǎo)與WY大道新民路口C相距924米。從起點(diǎn)A到終點(diǎn)C總長(zhǎng)達(dá)1.4公里。
經(jīng)實(shí)地考察,南北走向車(chē)輛速度一般為60Km/h,而東西走向直行都是行人和非機(jī)動(dòng)車(chē),東西左轉(zhuǎn)的車(chē)流量較小。
為了干線上的各交叉口的信號(hào)燈能協(xié)調(diào)統(tǒng)一,各個(gè)信號(hào)燈的周期必須相同。一般情況下,信號(hào)燈周期不能小于一分鐘,否則會(huì)出現(xiàn)車(chē)輛和行人無(wú)法及時(shí)通過(guò)路口以致交叉路口堵塞。周期也不能太長(zhǎng),因?yàn)锳路口到B路口的距離只有四百多米,在車(chē)流速度平均為50-60Km/h的情況下,只需半分鐘車(chē)輛就可以穿過(guò),若周期時(shí)長(zhǎng)大于三分鐘,就會(huì)造成較長(zhǎng)放入延誤時(shí)間,甚至?xí)?dǎo)致延誤放入車(chē)輛由第一個(gè)路口延伸到下一路口。本文將A、B、C三個(gè)路口的信號(hào)燈周期都定為180秒。
綠信比定義為:在一個(gè)周期下,一個(gè)路口的綠燈時(shí)長(zhǎng)與總周期時(shí)長(zhǎng)的比率。綠信比是調(diào)節(jié)其所在路口的通行能力的重要參數(shù)。在交叉路口中,一個(gè)方向的綠信比增加必須是以減少另一方向的綠信比為代價(jià),所以在確定綠信比時(shí)一定要如實(shí)反映路口的車(chē)流量,以達(dá)到各個(gè)方向的通行能力一致。
一個(gè)路口的交通燈相位設(shè)置要兼顧各個(gè)方向車(chē)輛通行的需求,不合理的相位設(shè)置會(huì)導(dǎo)致交通混亂及交通堵塞。
本文所實(shí)現(xiàn)的交通綠波帶主要靠調(diào)節(jié)相位差,使相位差的時(shí)間剛好是車(chē)流通過(guò)這些交叉口的時(shí)間差。這樣,當(dāng)車(chē)輛從路口出發(fā)到達(dá)下一路口時(shí),剛好是綠燈。由于三個(gè)路口的信號(hào)燈周期一致,只要實(shí)現(xiàn)第一次信號(hào)燈相位差優(yōu)化成綠波帶,接下來(lái)每個(gè)周期的相位差就固定下來(lái)了,從而實(shí)現(xiàn)一條持續(xù)的綠波帶。
在測(cè)得各路口的車(chē)流速度和路段距離的情況下,可依據(jù)公式pn=sn/v求得相位差。
其中pn為相位差,單位是秒,sn為路段的長(zhǎng)度,單位是米,v是平均車(chē)流速度,單位是m/s。實(shí)際中不同方向的平均車(chē)速是一個(gè)不定值,它會(huì)隨著上下班高峰期、節(jié)假日出城高峰或返程高峰、上下學(xué)時(shí)間變動(dòng)。為了工程上的簡(jiǎn)便,讓相位差是整數(shù),取v=57Km/h,s1=476m,s2=924m代入上式,得p1=30s,p2=60s。
本文采用雙向綠波帶模式進(jìn)行設(shè)計(jì),可以全時(shí)段地實(shí)現(xiàn)干線的上行和下行無(wú)滯留調(diào)制。對(duì)于兩個(gè)端口,要求當(dāng)其開(kāi)放主干線的通行權(quán)時(shí),既要作為入口去放行一波將駛?cè)刖G波帶的車(chē)流,同時(shí)要作為出口去精準(zhǔn)無(wú)滯留地放行一波已駛過(guò)綠波帶的車(chē)流。對(duì)于路段中間的交叉口,由于上下游的路口距離不同,很難做到每次放行都是剛好囊括兩個(gè)方向的綠波帶,所以其主干線的通行時(shí)間較長(zhǎng),同時(shí)綠信比增大、效率下降。這是無(wú)法避免卻可以通過(guò)系統(tǒng)設(shè)計(jì)來(lái)優(yōu)化的問(wèn)題。
2.1.1 綠波系統(tǒng)框架的設(shè)計(jì)
在一個(gè)周期中A、C路口相位1的通行權(quán)時(shí)間為80s,其他相位的總通行時(shí)間為100s,而B(niǎo)路口的相位1通行時(shí)間為140s,其他相位的總通行時(shí)間為40s。對(duì)于A、C路口,其綠信比是能夠忠實(shí)反映個(gè)方向的車(chē)流量的,在對(duì)其進(jìn)行信號(hào)燈設(shè)計(jì)時(shí),按照正常的相位依次轉(zhuǎn)換模式設(shè)計(jì)即可。而對(duì)于B路口,顯然其主干線的綠信比過(guò)大,留給其他的相位的通行權(quán)時(shí)間總共只有40s,再采用上述模式是行不通的,需要適當(dāng)權(quán)衡和改變。
假設(shè)0s時(shí)刻C點(diǎn)交叉口調(diào)制出80s主干道的通行權(quán),那么大概在60s的時(shí)刻,放行的這一波車(chē)流開(kāi)始通過(guò)B點(diǎn)交叉口,大概在90s時(shí)刻開(kāi)始通過(guò)A點(diǎn)交叉口。在A點(diǎn)交叉口開(kāi)放80s通行權(quán)時(shí),也有自A至C的車(chē)流駛?cè)?,這時(shí)候反向推算上述綠波即可。A、B、C交叉口的信號(hào)周期皆為180s,其中C路口的綠波帶從0s開(kāi)始,B路口的綠波帶從60s開(kāi)始,A路口的綠波帶從90s開(kāi)始。值得注意的是:由于雙向綠波帶的特性,B路口的相位1的綠信比要大于A、C兩路口的,故對(duì)其要單獨(dú)設(shè)計(jì)。
對(duì)于C路口,主干線綠波帶從0s開(kāi)始,持續(xù)80s,所以在0-80s,主干線直行綠燈亮,其他方向紅燈亮,爾后跳轉(zhuǎn)到其他相位通行;如果選擇相位2通行,會(huì)造成支干線的紅燈大于100s,由于交通燈的計(jì)時(shí)顯示設(shè)計(jì)大多兩位數(shù),產(chǎn)生計(jì)時(shí)溢出;如果選擇相位3通行,就可以完美避免這種問(wèn)題。所以在80-110s,相位3獲得通行權(quán),支干線直行綠燈亮,其他方向紅燈亮。在110-150s,相位2獲得通行權(quán),主干線左轉(zhuǎn)綠燈亮,其他方向紅燈亮。在150-180s,相位4獲得通行權(quán),支干線左轉(zhuǎn)綠燈亮,其他方向紅燈亮。至此,一個(gè)周期完畢,進(jìn)入下一個(gè)周期循環(huán)。
對(duì)于A路口,其相位1的綠信比與C路口一樣,但是其綠波帶開(kāi)始時(shí)間要滯后于C路口90s。為了工程簡(jiǎn)便,A、C路口交通燈設(shè)計(jì)一樣。
B路口的情況要復(fù)雜一些,140s的相位1需轉(zhuǎn)換成70s的相位1通行權(quán)加上70s的相位1和相位2的通行權(quán)。在前70s,自C至A方向的綠波帶所帶來(lái)的車(chē)流差不多都通行完畢,而后70s的車(chē)流量主要是自A至C方向的車(chē)輛,再結(jié)合WY大道特殊的T字型路口,這時(shí)候主干線的直行和左轉(zhuǎn)(也就是相位1和相位2)一起進(jìn)行,不會(huì)給B路口帶來(lái)大的交通混亂。所以B路口可以實(shí)行以下信號(hào)燈模式:從C路口周期時(shí)間的60s起,前70s相位1獲得通行權(quán),主干線直行綠燈亮,其他方向紅燈亮。接下來(lái)70s里,相位1和相位2獲得通行權(quán),主干線直行和主干線左轉(zhuǎn)綠燈亮,其他方向紅燈亮。然后是20s的相位3獲得通行權(quán),支干線直行綠燈亮,其他方向紅燈亮。最后是20s的相位4獲得通行權(quán),支干線左轉(zhuǎn)綠燈亮,其他方向紅燈亮。至此一個(gè)180s為周期的信號(hào)燈設(shè)計(jì)完畢。
2.1.2 單個(gè)交通燈的程序設(shè)計(jì)
本文只采用紅綠兩種燈色和兩位LED倒計(jì)時(shí)顯示器來(lái)設(shè)計(jì)。根據(jù)系統(tǒng)框架所設(shè)計(jì)的四種相位,狀態(tài)機(jī)也應(yīng)有四種狀態(tài):zz、zl、cz、cl,分別代表相位1、相位2、相位3、相位4。采用TYPE類(lèi)型(用戶(hù)自定義的數(shù)據(jù)類(lèi)型)來(lái)定義這些狀態(tài)。
type states is (zz,zl,cz,cl);
variable change0,change1,change2:states;
然后再具體的狀態(tài)下進(jìn)行減數(shù)計(jì)時(shí)和狀態(tài)判斷轉(zhuǎn)換。
其中要注意存儲(chǔ)倒計(jì)時(shí)的變量是8位二進(jìn)制,要轉(zhuǎn)換成8為BCD碼,以便于顯示模塊的表達(dá)。轉(zhuǎn)換方法是遇到第四位全為0且減數(shù)計(jì)時(shí)上升沿發(fā)生時(shí),整個(gè)向量減去7,其他情況均是減去1。
設(shè)計(jì)時(shí)鐘計(jì)時(shí)模塊時(shí),假設(shè)外部時(shí)鐘源的頻率是10MHZ,要利用其生成一個(gè)頻率為1HZ的一位字,以供減數(shù)計(jì)時(shí)參考。這個(gè)模塊需要用進(jìn)程子程序來(lái)實(shí)現(xiàn),優(yōu)勢(shì)是只要外部時(shí)鐘源有變動(dòng),進(jìn)程就會(huì)順序執(zhí)行一次內(nèi)部命令。
2.1.3 程序設(shè)計(jì)
VHDL語(yǔ)言IF語(yǔ)句是并行執(zhí)行的,而三個(gè)路口聯(lián)動(dòng)需要順序判斷。首先在系統(tǒng)剛開(kāi)始就讓C路口進(jìn)入工作狀態(tài),任一工作狀態(tài)皆可。如果計(jì)時(shí)所用存儲(chǔ)變量超過(guò)正常的數(shù)值,就強(qiáng)制其進(jìn)入周期的開(kāi)始階段。
接著是判斷C路口的狀態(tài)從而讓B路口適時(shí)進(jìn)入新的周期循環(huán),綠波系統(tǒng)設(shè)計(jì)指明在C路口開(kāi)始計(jì)數(shù)60s后B路口開(kāi)始新的周期,這就需要if判斷語(yǔ)句:
b的作用有兩個(gè),一個(gè)是起始標(biāo)記向量,當(dāng)周期開(kāi)始條件滿足時(shí),b為1,表示B路口交通燈程序已經(jīng)在運(yùn)行,b為0時(shí),表示B路口交通燈程序還未開(kāi)始。另一個(gè)是狀態(tài)機(jī)轉(zhuǎn)換標(biāo)記向量,在程序運(yùn)行中,要不停的判斷是否進(jìn)行狀態(tài)轉(zhuǎn)換,b=0時(shí),表示正在轉(zhuǎn)換,b=1時(shí),表示無(wú)需轉(zhuǎn)換。
最后是A路口的交通燈聯(lián)動(dòng),A路口的程序設(shè)計(jì)與B路口類(lèi)似,只是觸發(fā)周期條件不同,A路口是在C路口交通燈周期開(kāi)始后的90s開(kāi)始循環(huán)。
三個(gè)交通燈的周期時(shí)長(zhǎng)都是180s,可以很完美的嵌合循環(huán)。
頭文件中需引用std_logic_unsigned程序包文件,便于不同的數(shù)據(jù)類(lèi)型相互賦值和計(jì)算。分別用Process進(jìn)程語(yǔ)句構(gòu)建時(shí)鐘計(jì)時(shí)模塊和交通狀態(tài)機(jī)模塊。
為了方便仿真,將f分配為一組每2ns改變一次電平的方波,選擇QuartusⅡ Simulator下的功能仿真。
仿真結(jié)果表明,在外部時(shí)鐘源跳變的開(kāi)始,C路口就進(jìn)入了工作狀態(tài)的相位1并且開(kāi)始倒數(shù)計(jì)時(shí),對(duì)應(yīng)的存儲(chǔ)倒計(jì)時(shí)變量zhu0和zhi0一起從10000000開(kāi)始減數(shù)變化,代表著從80s開(kāi)始倒計(jì)時(shí)。
在C路口開(kāi)始工作后的60s之內(nèi),B路口的交通燈一直處于待機(jī)狀態(tài),各種變量持續(xù)為0。從60s時(shí)起,B路口開(kāi)啟工作狀態(tài),進(jìn)入以180s為周期的交通燈循環(huán)。
在C路口的80s倒計(jì)時(shí)結(jié)束時(shí),C路口的交通燈模式便發(fā)生了轉(zhuǎn)換。zhu0和zhi0計(jì)時(shí)寄存器重載數(shù)值為30s倒計(jì)時(shí),而且led0的數(shù)值變?yōu)?01010,標(biāo)志著相位2獲得通行權(quán)。
從90s時(shí)起,zhu0和zhi0寄存器數(shù)值為00100000,A路口開(kāi)始進(jìn)入工作狀態(tài),工作模式和運(yùn)作流程與C路口一樣,只是在周期上延遲了90s。結(jié)果表明這些波紋圖形和數(shù)據(jù)表明仿真結(jié)果與預(yù)期一致。
本文通過(guò)VHDL語(yǔ)言設(shè)計(jì)交通綠波帶,并通過(guò)QuartusⅡ的編譯仿真功能來(lái)解決WY大道存在的擁堵問(wèn)題,通過(guò)交通燈所需的各種參數(shù)分析,比如岔路口形狀、相位差、綠信比、平均車(chē)速等,根據(jù)測(cè)算出的數(shù)據(jù)構(gòu)建出綠波帶系統(tǒng)的框架,然后根據(jù)硬件描述語(yǔ)言的特性去編寫(xiě)程序,選擇芯片,編譯分析與仿真。仿真結(jié)果表明本設(shè)計(jì)能很好地達(dá)到預(yù)期效果。