<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > 基于CAN總線交通信號燈動態(tài)調(diào)整系統(tǒng)的設(shè)計

          基于CAN總線交通信號燈動態(tài)調(diào)整系統(tǒng)的設(shè)計

          作者: 時間:2010-10-19 來源:網(wǎng)絡(luò) 收藏


          3.2 控制器軟件設(shè)計
          控制器軟件由主程序、中斷處理、數(shù)據(jù)上傳、擁堵判定、命令處理和紅綠燈控制模塊組成。
          3.2.1 主程序
          主程序根據(jù)中斷程序返回的狀態(tài)循環(huán)調(diào)用命令處理、交通狀態(tài)判定和紅綠燈控制模塊,并定時調(diào)用數(shù)據(jù)上傳模塊。其流程圖見圖5。


          3.2.2 交通狀態(tài)判定
          交通狀態(tài)的判定方法在第3.1節(jié)算法原理中已經(jīng)闡述,這里不再贅述。在該模塊中,系統(tǒng)若發(fā)現(xiàn)單位時間中通過不同方向的汽車相差較多或下游有發(fā)生擁堵的可能時,自動修改紅綠燈間隔,由紅綠燈控制模塊調(diào)用。
          3.2.3 中斷處理
          系統(tǒng)將環(huán)形線圈振蕩器所連接的STR7lO的4個外部中斷設(shè)置為FIQ,以降低中斷反應(yīng)時間。在車輛通過時,中斷子程序計數(shù)后退出,主要的計算在擁堵判定中完成,以提高系統(tǒng)響應(yīng)速度。系統(tǒng)以中斷方式接收控制中心的命令,在接收到命令時,只將命令轉(zhuǎn)存后退出,進一步的處理由命令處理程序執(zhí)行。由于STR710的CAN控制器只有AMR,沒有ACR,因此,STR710在接收到數(shù)據(jù)后需要根據(jù)ID判斷是否是發(fā)給自己的,只有在AMR和ID相同時,才開始接收命令。
          3.2.4 數(shù)據(jù)上傳
          程序先將數(shù)據(jù)打包成CAN幀格式,再寫入緩沖區(qū),由硬件自動發(fā)送出去。
          3.2.5 命令處理
          系統(tǒng)根據(jù)中斷處理程序設(shè)置的標記,對時間間隔緩沖區(qū)進行刷新。由紅綠燈控制模塊執(zhí)行調(diào)整。
          3.2.6 紅綠燈控制
          紅綠燈控制模塊框圖見圖6。該模塊根據(jù)命令處理或擁堵判定所做的標記,執(zhí)行調(diào)整紅綠燈間隔時間。

          4 結(jié)語
          根據(jù)交通擁擠和消散過程的特征,給出了利用微機技術(shù)自動判定道路交通狀況的算法,并試圖在此基礎(chǔ)上實時地控制紅綠燈的變換周期,實現(xiàn)在無人工干預(yù)情況下改善交通狀況,同時將路況信息通過CAN總線發(fā)送到控制中心,控制中心可以在特殊情況下進行遠距離人工干預(yù)。該系統(tǒng)具有高效、實時、客觀的特點,且簡單易于實現(xiàn),具有良好的應(yīng)用前景。


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: 收發(fā)器

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();