基于CAN總線交通信號(hào)燈動(dòng)態(tài)調(diào)整系統(tǒng)的設(shè)計(jì)
3.2 控制器軟件設(shè)計(jì)
控制器軟件由主程序、中斷處理、數(shù)據(jù)上傳、擁堵判定、命令處理和紅綠燈控制模塊組成。
3.2.1 主程序
主程序根據(jù)中斷程序返回的狀態(tài)循環(huán)調(diào)用命令處理、交通狀態(tài)判定和紅綠燈控制模塊,并定時(shí)調(diào)用數(shù)據(jù)上傳模塊。其流程圖見(jiàn)圖5。
3.2.2 交通狀態(tài)判定
交通狀態(tài)的判定方法在第3.1節(jié)算法原理中已經(jīng)闡述,這里不再贅述。在該模塊中,系統(tǒng)若發(fā)現(xiàn)單位時(shí)間中通過(guò)不同方向的汽車(chē)相差較多或下游有發(fā)生擁堵的可能時(shí),自動(dòng)修改紅綠燈間隔,由紅綠燈控制模塊調(diào)用。
3.2.3 中斷處理
系統(tǒng)將環(huán)形線圈振蕩器所連接的STR7lO的4個(gè)外部中斷設(shè)置為FIQ,以降低中斷反應(yīng)時(shí)間。在車(chē)輛通過(guò)時(shí),中斷子程序計(jì)數(shù)后退出,主要的計(jì)算在擁堵判定中完成,以提高系統(tǒng)響應(yīng)速度。系統(tǒng)以中斷方式接收控制中心的命令,在接收到命令時(shí),只將命令轉(zhuǎn)存后退出,進(jìn)一步的處理由命令處理程序執(zhí)行。由于STR710的CAN控制器只有AMR,沒(méi)有ACR,因此,STR710在接收到數(shù)據(jù)后需要根據(jù)ID判斷是否是發(fā)給自己的,只有在AMR和ID相同時(shí),才開(kāi)始接收命令。
3.2.4 數(shù)據(jù)上傳
程序先將數(shù)據(jù)打包成CAN幀格式,再寫(xiě)入緩沖區(qū),由硬件自動(dòng)發(fā)送出去。
3.2.5 命令處理
系統(tǒng)根據(jù)中斷處理程序設(shè)置的標(biāo)記,對(duì)時(shí)間間隔緩沖區(qū)進(jìn)行刷新。由紅綠燈控制模塊執(zhí)行調(diào)整。
3.2.6 紅綠燈控制
紅綠燈控制模塊框圖見(jiàn)圖6。該模塊根據(jù)命令處理或擁堵判定所做的標(biāo)記,執(zhí)行調(diào)整紅綠燈間隔時(shí)間。
4 結(jié)語(yǔ)
根據(jù)交通擁擠和消散過(guò)程的特征,給出了利用微機(jī)技術(shù)自動(dòng)判定道路交通狀況的算法,并試圖在此基礎(chǔ)上實(shí)時(shí)地控制紅綠燈的變換周期,實(shí)現(xiàn)在無(wú)人工干預(yù)情況下改善交通狀況,同時(shí)將路況信息通過(guò)CAN總線發(fā)送到控制中心,控制中心可以在特殊情況下進(jìn)行遠(yuǎn)距離人工干預(yù)。該系統(tǒng)具有高效、實(shí)時(shí)、客觀的特點(diǎn),且簡(jiǎn)單易于實(shí)現(xiàn),具有良好的應(yīng)用前景。
評(píng)論