基于信號(hào)校驗(yàn)技術(shù)的單片機(jī)交通燈控制終端
摘要:根據(jù)區(qū)域協(xié)調(diào)型智能交通系統(tǒng)的要求,設(shè)計(jì)了基于單片機(jī)控制的交通燈控制終端。交通燈控制終端與智能協(xié)調(diào)中樞控制系統(tǒng)進(jìn)行通信,反饋車流量信息,并按照中樞系統(tǒng)的要求來(lái)控制紅綠燈的工作。本終端采用雙單片機(jī)信號(hào)校驗(yàn)的方式,配合看門狗的使用,糾正終端運(yùn)行過(guò)程中可能發(fā)生的錯(cuò)誤,并加入警報(bào)和自投入備用模塊,在運(yùn)行出錯(cuò)情況下發(fā)出警報(bào),在設(shè)備故障情況下自投入備用控制器,保證路口交通安全穩(wěn)定。
本文引用地址:http://www.ex-cimer.com/article/201610/307243.htm關(guān)鍵詞:信號(hào)校驗(yàn);單片機(jī);看門狗;備用模塊
智能交通系統(tǒng)一直是交通系統(tǒng)研究的一個(gè)重要方向,智能交通系統(tǒng)研究中一個(gè)重要的分支是統(tǒng)籌各路段的車流量信息,統(tǒng)一規(guī)劃調(diào)控各路口的紅綠燈時(shí)間來(lái)控制車輛通行,達(dá)到智能交通所需要的目的。
現(xiàn)階段的交通燈控制終端一般采用PLC作為控制器,PLC穩(wěn)定性好,編程和操作簡(jiǎn)單,在信號(hào)燈亮燈時(shí)長(zhǎng)不變的交通燈控制中得到廣泛應(yīng)用。但是PLC通信復(fù)雜,參數(shù)更改不方便,靈活性差,并不能很好的滿足智能交通系統(tǒng)對(duì)于交通燈控制終端的要求。
基于智能交通系統(tǒng)對(duì)于交通燈控制終端的特殊要求,提出了以單片機(jī)為控制核心的交通燈控制終端。單片機(jī)可編程性強(qiáng),靈活性好,而且價(jià)格便宜,可以隨時(shí)與智能協(xié)調(diào)中樞控制系統(tǒng)進(jìn)行通信,并能在極短的時(shí)間內(nèi)響應(yīng)智能協(xié)調(diào)中樞控制系統(tǒng)的控制要求,實(shí)現(xiàn)交通燈控制時(shí)長(zhǎng)的變化。
1 系統(tǒng)總體概況
智能交通系統(tǒng)的結(jié)構(gòu)如圖1所示,智能協(xié)調(diào)中樞控制系統(tǒng)(以下簡(jiǎn)稱“智能控制系統(tǒng)”)與交通燈控制終端進(jìn)行實(shí)時(shí)通信,交換紅綠燈時(shí)長(zhǎng)和車流量信息等數(shù)據(jù),交通燈控制終端根據(jù)智能控制系統(tǒng)的要求來(lái)控制紅綠燈工作。
本文設(shè)計(jì)的以單片機(jī)為控制核心的交通燈控制終端能夠?qū)崟r(shí)響應(yīng)智能控制系統(tǒng)發(fā)出的信號(hào),隨時(shí)調(diào)整紅綠燈時(shí)間,并能將車流量統(tǒng)計(jì)信息實(shí)時(shí)反饋給智能控制系統(tǒng)。智能控制系統(tǒng)發(fā)送給單片機(jī)的時(shí)間信號(hào)以及單片機(jī)輸出的交通燈顯示信號(hào)都會(huì)經(jīng)過(guò)合理性校驗(yàn),確保信息的合理性,保證交通路口通行安全。如控制單片機(jī)出現(xiàn)運(yùn)行錯(cuò)誤,系統(tǒng)可自復(fù)位并發(fā)出警報(bào);如系統(tǒng)發(fā)生永久性故障,系統(tǒng)可自動(dòng)切換備用控制器。
1.1 運(yùn)行要求
十字路口交通燈系統(tǒng)中,每個(gè)路口有4個(gè)信號(hào)燈,分別為紅、黃、直行、左行。十字路口的交通放行方式會(huì)隨路口要求不同而不同,一般情況下,對(duì)側(cè)路口紅綠燈信號(hào)相同,整個(gè)路口紅綠燈按照既定的工作順序周期循環(huán)工作。
本系統(tǒng)采用最為典型的工作方式,其它情況只需要改變對(duì)應(yīng)控制的燈即可。
1)每個(gè)方向的交通燈按智能控制系統(tǒng)設(shè)定的方式周期循環(huán)工作。
2)東西(南北)信號(hào)燈為黃燈或綠燈時(shí),南北(東西)方向必須是紅燈。
3)黃燈固定的工作時(shí)長(zhǎng)為3 s;綠燈的工作時(shí)長(zhǎng)由智能控制系統(tǒng)控制,單片機(jī)根據(jù)智能控制系統(tǒng)發(fā)送的綠燈時(shí)長(zhǎng)來(lái)實(shí)時(shí)更改綠燈時(shí)長(zhǎng),在兩組信號(hào)發(fā)送的間隔時(shí)間內(nèi)按照上一組時(shí)間信號(hào)工作;每組紅燈時(shí)長(zhǎng)為另一只的綠燈時(shí)長(zhǎng)加黃燈時(shí)長(zhǎng)。
1.2 安全性要求
考慮到交通系統(tǒng)中,安全穩(wěn)定是第一位,所以對(duì)于交通燈控制系統(tǒng)需滿足安全要求;
1)如果智能控制系統(tǒng)遭到入侵或者癱瘓,交通燈控制系統(tǒng)必須保證交通燈能正常工作,不出現(xiàn)錯(cuò)誤。
2)信號(hào)燈顯示必須確保不會(huì)出現(xiàn)錯(cuò)誤,如兩個(gè)方向同時(shí)綠燈的情況。
3)如果單片機(jī)出現(xiàn)故障,必須保證交通燈信號(hào)不出現(xiàn)紊亂,并在短時(shí)間內(nèi)投入備用控制終端,同時(shí)發(fā)出警報(bào)通知相關(guān)值班人員。
2 設(shè)計(jì)方案
雖然現(xiàn)在技術(shù)成熟,單片機(jī)抗干擾能力較強(qiáng),但是單片機(jī)在實(shí)際工作中還是有一定幾率出錯(cuò),如程序跑飛,還有曾經(jīng)遇到過(guò)的I/O口輸出紊亂等問(wèn)題。為了系統(tǒng)的安全穩(wěn)定性,調(diào)用看門狗寄存器來(lái)糾正程序跑飛,同時(shí)加入一片單片機(jī)作為信號(hào)校驗(yàn)單片機(jī)來(lái)糾正I/O輸出紊亂問(wèn)題。故本系統(tǒng)采用兩片AT89C51單片機(jī)作為核心器件,其中一片負(fù)責(zé)控制交通燈信號(hào)顯示,另一片負(fù)責(zé)對(duì)顯示信號(hào)進(jìn)行校驗(yàn)。
控制單片機(jī)(U1)負(fù)責(zé)接收輸入的綠燈時(shí)長(zhǎng)信號(hào)和車流量計(jì)數(shù)信號(hào),對(duì)綠燈時(shí)長(zhǎng)進(jìn)行合理性判斷,進(jìn)行車流量脈沖計(jì)數(shù),輸出控制信號(hào)燈的電平,并在收到智能控制系統(tǒng)請(qǐng)求車流量數(shù)據(jù)的信號(hào)后,將車流量數(shù)據(jù)反饋給智能控制系統(tǒng)。信號(hào)校驗(yàn)單片機(jī)(U2)負(fù)責(zé)對(duì)控制信號(hào)燈的顯示信號(hào)進(jìn)行合理性校驗(yàn),包括校驗(yàn)兩個(gè)路口的紅綠燈是否矛盾以及綠燈時(shí)長(zhǎng)是否合理,校驗(yàn)無(wú)誤后允許信號(hào)燈接收電平信號(hào)做出改變;如果校驗(yàn)不通過(guò),則保持之前信號(hào)燈信號(hào)不變,復(fù)位控制單片機(jī),同時(shí)發(fā)出警報(bào),如多次校驗(yàn)不通過(guò),則斷開當(dāng)前整個(gè)系統(tǒng)(包括控制和校驗(yàn)),投入備用信號(hào)燈控制器。
3 硬件設(shè)計(jì)
整個(gè)控制終端要和智能控制系統(tǒng)進(jìn)行有線或無(wú)線通信,然后將數(shù)據(jù)發(fā)送給信號(hào)燈,信號(hào)校驗(yàn)單片機(jī)對(duì)信號(hào)進(jìn)行校驗(yàn)后判斷是否讓信號(hào)燈變化,警報(bào)系統(tǒng)需要在收到警報(bào)信號(hào)后發(fā)出警報(bào)并持續(xù)一段時(shí)間,而且在重復(fù)收到警報(bào)信號(hào)后要啟動(dòng)備用控制器。
3.1 核心模塊
核心模塊包含兩片單片機(jī),其中單片機(jī)U1為主控制單片機(jī),單片機(jī)U2為信號(hào)校驗(yàn)單片機(jī),主控制單片機(jī)負(fù)責(zé)通信、顯示等功能,信號(hào)校驗(yàn)單片機(jī)負(fù)責(zé)校驗(yàn)主控制單片機(jī)的信號(hào)是否合理(詳見(jiàn)本文5軟件設(shè)計(jì)一節(jié))。U1的信號(hào)燈顯示信號(hào)通過(guò)P2口輸出,輸出的信號(hào)同時(shí)接入鎖存器74HC573的輸入端和U2的P2口中,U2的P2口作為輸入口,讀取U1輸出的交通燈顯示信號(hào),對(duì)其進(jìn)行合理性校驗(yàn)。鎖存器74HC573的鎖存控制端LE接U2的P1.0口,如果U2校驗(yàn)了U1輸出的信號(hào)沒(méi)有問(wèn)題后,P1.0會(huì)輸出高電平并延時(shí)一段時(shí)間以打開74HC5 73鎖存端,讓顯示信號(hào)輸入鎖存器。同時(shí),U2的P1.1口經(jīng)非門接U1的復(fù)位引腳,如信號(hào)校驗(yàn)不通過(guò),則在P1.1口輸出低電平復(fù)位U1,如U2復(fù)位則不會(huì)造成U1誤復(fù)位。鎖存器的輸出端接信號(hào)燈,這里用16個(gè)發(fā)光二極管模擬信號(hào)燈,對(duì)側(cè)信號(hào)燈分為一組,兩組信號(hào)燈八個(gè)引腳分別接入鎖存器的八個(gè)輸出端。鎖存器的輸出端同時(shí)又接U1的P0口,如果U1因?yàn)檫\(yùn)行的問(wèn)題復(fù)位后,在程序初始化后通過(guò)讀取P0口狀態(tài)獲取當(dāng)前信號(hào)燈顯示的狀態(tài),然后從當(dāng)前狀態(tài)開始循環(huán)運(yùn)行,不至于造成信號(hào)燈顯示混亂。U1的串口通信引腳P3.0和P3.1可根據(jù)實(shí)際運(yùn)用接外部通信模塊,包括串口通信模塊或藍(lán)牙通信模塊,實(shí)現(xiàn)通信功能。核心模塊電路圖如圖2所示。
3.2 警報(bào)模塊
為保證系統(tǒng)的穩(wěn)定性,警報(bào)模塊運(yùn)用最簡(jiǎn)單的RC延時(shí)電路,以實(shí)現(xiàn)在收到持續(xù)時(shí)間很短的單片機(jī)警報(bào)信號(hào)后,能夠保持發(fā)出警報(bào)。模塊設(shè)計(jì)延時(shí)為5 s,此處用LED代替警報(bào)燈及時(shí)間繼電器等警報(bào)器件。若警報(bào)模塊收到警報(bào)信號(hào),則會(huì)持續(xù)報(bào)警5 s;如單片機(jī)出現(xiàn)故障持續(xù)輸出警報(bào)信號(hào),兩次信號(hào)的時(shí)間間隔小于5 s,則模塊持續(xù)報(bào)警,報(bào)警持續(xù)設(shè)定時(shí)間后時(shí)間繼電器動(dòng)作,跳開當(dāng)前系統(tǒng),切換備用交通燈控制器。警報(bào)模塊電路圖如圖3所示。
4 軟件設(shè)計(jì)
根據(jù)方案設(shè)計(jì)要求和硬件電路,單片機(jī)1中為控制程序,單片機(jī)2為信號(hào)校驗(yàn)程序,采用C語(yǔ)言為單片機(jī)編寫程序。
4.1 控制程序
為了防止程序跑飛,啟用單片機(jī)的看門狗寄存器,單片機(jī)在初始化或復(fù)位后,會(huì)向智能控制系統(tǒng)發(fā)送信號(hào)來(lái)獲取當(dāng)前的綠燈時(shí)長(zhǎng)信號(hào)。單片機(jī)通過(guò)讀取P0口的狀態(tài),確定當(dāng)前信號(hào)燈運(yùn)行的狀態(tài)系數(shù)a,然后跳轉(zhuǎn)到相應(yīng)狀態(tài)開始循環(huán)運(yùn)行,如果信號(hào)燈處于初始狀態(tài)時(shí),則順序運(yùn)行,這樣可保證單片機(jī)復(fù)位后立刻返回當(dāng)前狀態(tài)繼續(xù)循環(huán)運(yùn)行。流程圖如圖4。
在一個(gè)周期內(nèi)交通燈信號(hào)變化6次,每種狀態(tài)根據(jù)相應(yīng)時(shí)長(zhǎng)用嵌套延時(shí)語(yǔ)句進(jìn)行延時(shí),同時(shí),在每秒的嵌套語(yǔ)句開始都對(duì)看門狗計(jì)時(shí)器清0(喂狗)。
單片機(jī)和智能控制系統(tǒng)的通信包括發(fā)送車流量信息和接收綠燈時(shí)長(zhǎng)。單片機(jī)在收到智能控制系統(tǒng)的請(qǐng)求數(shù)據(jù)信號(hào)0xff后,會(huì)將T0計(jì)數(shù)器記錄的車流量數(shù)據(jù)發(fā)送給智能控制系統(tǒng)。如果單片機(jī)收到的數(shù)據(jù)不是0xff,則識(shí)別此數(shù)據(jù)為綠燈時(shí)長(zhǎng)數(shù)據(jù)。每次智能控制系統(tǒng)會(huì)發(fā)送4個(gè)綠燈的時(shí)長(zhǎng)數(shù)據(jù),單片機(jī)接到全部4個(gè)數(shù)據(jù)后對(duì)其合理性進(jìn)行校驗(yàn)。如果4個(gè)數(shù)據(jù)都在預(yù)設(shè)的范圍內(nèi),則為合法數(shù)據(jù),單片機(jī)將其裝入顯示時(shí)間數(shù)組中;如果存在非法數(shù)據(jù),則將4個(gè)數(shù)據(jù)全部舍棄。這樣設(shè)計(jì)是為了防止智能控制系統(tǒng)紊亂或者被入侵而造成交通癱瘓等嚴(yán)重后果。如單片機(jī)一直不收到數(shù)據(jù)請(qǐng)求信號(hào)或時(shí)長(zhǎng)數(shù)據(jù),則交通燈控制終端會(huì)一直按照現(xiàn)有的時(shí)長(zhǎng)數(shù)據(jù)正常循環(huán)運(yùn)行。
4.2 信號(hào)校驗(yàn)程序
信號(hào)校驗(yàn)單片機(jī)是為了防止主單片機(jī)的I/O口輸出紊亂造成交通燈信號(hào)錯(cuò)誤而設(shè)置的,主要是對(duì)控制單片機(jī)輸出信號(hào)進(jìn)行有效性校驗(yàn),校驗(yàn)無(wú)誤后再顯示。同時(shí)為了防止信號(hào)校驗(yàn)單片機(jī)出錯(cuò),啟動(dòng)看門狗寄存器,并且在單片機(jī)初始化時(shí)會(huì)置P1.2高電平延時(shí)0.5 s來(lái)啟動(dòng)警報(bào)電路,這樣如果信號(hào)校驗(yàn)單片機(jī)跑飛復(fù)位,警報(bào)信號(hào)亦會(huì)動(dòng)作。信號(hào)校驗(yàn)流程圖如圖5。
信號(hào)校驗(yàn)單片機(jī)只有在檢測(cè)到顯示信號(hào)發(fā)生變化后才會(huì)去判斷信號(hào)是否正常,由于兩次信號(hào)變化的時(shí)間間隔很長(zhǎng),這樣可以保證信號(hào)變化時(shí)單片機(jī)U2正處于判斷信號(hào)相同循環(huán)中,74HC573處于不可寫入狀態(tài),防止未經(jīng)校驗(yàn)的信號(hào)寫入鎖存器。
當(dāng)單片機(jī)校驗(yàn)到顯示信號(hào)不正常時(shí),會(huì)輸出低電平復(fù)位控制單片機(jī),并啟動(dòng)警報(bào)電路。如果顯示信號(hào)一直不正常,則警報(bào)電路會(huì)持續(xù)收到警報(bào)信號(hào)報(bào)警,持續(xù)一段時(shí)間后時(shí)間繼電器動(dòng)作切換備用控制器。如果控制單片機(jī)因?yàn)榭撮T狗復(fù)位,則信號(hào)校驗(yàn)單片機(jī)同樣會(huì)檢測(cè)到然后啟動(dòng)警報(bào)電路。
5 系統(tǒng)調(diào)試
按設(shè)計(jì)把硬件環(huán)境搭建出來(lái)后,通過(guò)在正確程序中加入while(1)語(yǔ)句模擬單片機(jī)跑飛,單片機(jī)I/O口飛線高低電平來(lái)強(qiáng)制拉高或拉低單片機(jī)I/O電平模擬單片機(jī)I/O口輸出紊亂,進(jìn)行實(shí)物硬件調(diào)試。
經(jīng)多次修改調(diào)試,系統(tǒng)在長(zhǎng)時(shí)間運(yùn)行中能夠保持穩(wěn)定;在模擬故障環(huán)節(jié)中,復(fù)位功能及警報(bào)功能均正常動(dòng)作,系統(tǒng)功能達(dá)到預(yù)定要求。
6 結(jié)束語(yǔ)
本文采用單片機(jī)作為交通燈控制終端的控制核心,采用信號(hào)校驗(yàn)的方式,彌補(bǔ)了PLC控制器運(yùn)用于智能交通系統(tǒng)中的不足,同時(shí)保證系統(tǒng)運(yùn)行的穩(wěn)定性,更方便的滿足智能交通系統(tǒng)對(duì)于通信和控制的要求。在本系統(tǒng)的基礎(chǔ)上,亦可通過(guò)更換不同種類和功能的單片機(jī),滿足更多不同的交通控制要求。
評(píng)論