《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于CAN總線的隧道環(huán)境監(jiān)控系統(tǒng)的研究
基于CAN總線的隧道環(huán)境監(jiān)控系統(tǒng)的研究
來源:電子技術(shù)應(yīng)用2011年第2期
徐 前, 孫志鋒
浙江大學(xué) 電氣工程學(xué)院, 浙江 杭州 310027
摘要: 提出一種通過CAN總線實現(xiàn)隧道環(huán)境監(jiān)控系統(tǒng)的設(shè)計方案,重點討論了監(jiān)控系統(tǒng)的總體構(gòu)成以及軟、硬件設(shè)計方法。監(jiān)控系統(tǒng)中的區(qū)域控制部分采用ARM Cortex-M3作為主控芯片,結(jié)合嵌入式實時操作系統(tǒng),保證了系統(tǒng)的高可靠性和高實時性。
中圖分類號: TP277
文獻標(biāo)識碼: A
文章編號: 0258-7998(2011)02-0085-03
The research of tunnel monitoring system based on CAN bus
Xu Qian, Sun Zhifeng
College of Electrical Engineering, Zhejiang University, Hangzhou 310027, China
Abstract: The research of tunnel monitoring system is based on CAN bus. The main function of the system, hardware structure and software design are discussed in detail. The regional control blocks use ARM Cortex-M3 as their control chip, and adopt embedded RTOS as their operating system. All these ensure the system’s high reliability and real-time performance.
Key words : CAN bus; tunnel; monitoring system


    由于隧道的相對封閉性和其中行車環(huán)境的復(fù)雜性,要保障其安全運營存在一定的復(fù)雜性。尤其對于高速公路中的長隧道(長度介于1 km和3 km之間)和超長隧道(長度高于3 km),由于車速高、流量大以及通風(fēng)等問題的存在,隧道中容易累積汽車尾氣中的CO、氮氧化物等有害氣體。另外,隧道中還可能因為照明故障、能見度低等問題的產(chǎn)生導(dǎo)致交通事故的發(fā)生。為保證隧道的運營安全,避免造成安全事故和重大經(jīng)濟損失,應(yīng)對隧道配備完善的環(huán)境參數(shù)監(jiān)控系統(tǒng)。
 本文介紹的隧道環(huán)境監(jiān)控系統(tǒng),利用區(qū)域控制部分的實時監(jiān)控技術(shù)對各監(jiān)控點的照明亮度、能見度、CO濃度、煙霧濃度等參數(shù)進行采集、監(jiān)測,并根據(jù)這些參數(shù)控制相關(guān)的交通燈、應(yīng)急燈、LED交通指示牌、限速牌以及報警裝置。然后通過現(xiàn)場總線將各節(jié)點的參數(shù)和報警信號發(fā)送至本地監(jiān)控中心,由本地控制中心對各區(qū)域控制模塊進行調(diào)度。本地控制中心還將這些參數(shù)通過以太網(wǎng)發(fā)送至遠(yuǎn)程監(jiān)控終端處,在終端上遠(yuǎn)程監(jiān)控隧道的環(huán)境參數(shù)。
1 系統(tǒng)總體結(jié)構(gòu)
   系統(tǒng)的總體結(jié)構(gòu)如圖1所示。系統(tǒng)主要包括區(qū)域控制部分、本地控制中心和遠(yuǎn)程監(jiān)控終端。

   安裝在隧道中的區(qū)域控制部分采用CAN總線分布式數(shù)據(jù)采集控制方式。當(dāng)系統(tǒng)啟動后,各環(huán)境參數(shù)監(jiān)測點開始采集環(huán)境參數(shù),并在接收到發(fā)送數(shù)據(jù)命令后將數(shù)據(jù)傳送至CAN總線。在區(qū)域控制模塊接收處理數(shù)據(jù)后會控制報警器等相關(guān)設(shè)備。
 由于CAN總線協(xié)議不對節(jié)點進行地址編碼,而是采用對通信數(shù)據(jù)塊進行編碼的方式,這使得CAN總線上的節(jié)點數(shù)量理論上幾乎不受限制[2]。然而實際上,由于存在電氣特性上的限制,CAN總線上節(jié)點數(shù)量不宜超過100個。因此各個區(qū)域控制模塊與本地控制中心使用另一條CAN總線進行數(shù)據(jù)通信。區(qū)域控制模塊在采集到環(huán)境參數(shù)并做出控制動作后會將參數(shù)打包通過CAN總線發(fā)送至本地控制中心的工控機。本地控制中心如收到某個區(qū)域控制部分的報警信號,會根據(jù)報警信號類型對該區(qū)域控制部分前方的各區(qū)域控制部分做出控制,提前預(yù)警車輛隧道前方通行環(huán)境存在問題。
 遠(yuǎn)程控制終端通過客戶端的顯示程序顯示出由本地控制中心發(fā)送的隧道環(huán)境參數(shù),并將參數(shù)保存在數(shù)據(jù)庫,以實現(xiàn)歷史數(shù)據(jù)的存儲。
2 系統(tǒng)硬件設(shè)計
    整個系統(tǒng)硬件部分包括由區(qū)域控制模塊和各環(huán)境參數(shù)測量模塊組成的區(qū)域控制部分、本地控制中心的工控機以及監(jiān)控終端。其中關(guān)鍵部分為區(qū)域控制部分,本文將對這部分進行重點介紹。
  區(qū)域控制模塊選用意法半導(dǎo)體公司的STM32F105RCT6為控制核心,它是采用ARM Cortex-M3為內(nèi)核的32位高性能嵌入式微處理器。它集成了兩個CAN控制器,并為每個CAN控制器分配了256 B的SRAM,每個CAN控制器有三個發(fā)送郵箱和兩個接收FIFO[1]。模塊的其他外設(shè)包括用于CAN總線信號收發(fā)的CAN收發(fā)器,用于顯示當(dāng)前環(huán)境參數(shù)的點陣液晶,用于實現(xiàn)基本控制功能的按鍵等。區(qū)域控制模塊的硬件框圖如圖2所示。

    區(qū)域控制模塊中CAN總線接口電路由STM32F105RCT6中內(nèi)置的CAN控制器和CAN收發(fā)器SN65HVD230D組成。STM32F105RCT6的PA11/CAN1_RX和PA12/CAN1_TX為CAN1控制器接口,將其與CAN收發(fā)器連接后接入與各測量模塊相連的CAN總線中;PB12/CAN2_RX和PB13/CAN2_TX為CAN2控制器接口,將其與CAN收發(fā)器連接后接入與其他區(qū)域控制部分及本地控制中心相連的CAN總線中。
  能見度測量模塊由能見度檢測儀和控制模塊組成。能見度檢測儀能將檢測到的能見度值通過RS232發(fā)送至控制模塊。當(dāng)區(qū)域控制模塊向能見度測量模塊中的控制模塊請求數(shù)據(jù)時,控制模塊會使能見度檢測儀通過RS232向控制模塊發(fā)送數(shù)據(jù),并轉(zhuǎn)換成CAN數(shù)據(jù)包發(fā)送至CAN總線。其他測量模塊工作模式與能見度測量模塊相同。
3 區(qū)域控制模塊軟件設(shè)計
  由于區(qū)域控制部分在測量環(huán)境參數(shù)以及控制相應(yīng)設(shè)施方面對實時性和穩(wěn)定性要求,區(qū)域控制模塊選擇使用μC/OS-II管理控制任務(wù)的調(diào)度。μC/OS-II是一個專為嵌入式應(yīng)用設(shè)計,基于優(yōu)先級調(diào)度的搶占式實時操作系統(tǒng)內(nèi)核,它包含了任務(wù)調(diào)度、任務(wù)管理、時間管理/任務(wù)間通信與同步等功能。各任務(wù)之間通過信號量、郵箱和消息隊列實現(xiàn)相互間的數(shù)據(jù)交換和同步[3]。
  根據(jù)區(qū)域控制模塊在系統(tǒng)中的作用,嵌入式操作系統(tǒng)中應(yīng)實現(xiàn)多個不同優(yōu)先級的控制任務(wù)。這些任務(wù)按照優(yōu)先級由高到低分別為:接收本地控制中心調(diào)度;接收按鍵控制;采集環(huán)境參數(shù);控制相關(guān)設(shè)備;顯示環(huán)境參數(shù);發(fā)送數(shù)據(jù)到本地控制中心。對于區(qū)域控制系統(tǒng)來說,本地控制中心的調(diào)度命令決定著它的系統(tǒng)設(shè)置,因此需要把接受本地控制中心調(diào)度任務(wù)分配到相對最高的優(yōu)先級。其他任務(wù)也根據(jù)相對的重要性和執(zhí)行順序分配相應(yīng)的優(yōu)先級。系統(tǒng)啟動流程圖如圖3所示。

    硬件初始化程序負(fù)責(zé)初始化芯片的系統(tǒng)時鐘、中斷向量、I/O配置、CAN配置等。操作系統(tǒng)初始化程序負(fù)責(zé)初始化任務(wù)的空閑鏈表和使用鏈表、時鐘管理等。在啟動任務(wù)調(diào)度之前需利用OSTaskCreate()函數(shù)創(chuàng)建需要使用的任務(wù),設(shè)置不同任務(wù)的堆棧區(qū)和優(yōu)先級。然后使用OSStart()函數(shù)開始多任務(wù)調(diào)度。多個任務(wù)之間需要共享環(huán)境參數(shù),因此在任務(wù)創(chuàng)建之前分配一塊共享內(nèi)存以供任務(wù)間數(shù)據(jù)通信。以下重點介紹環(huán)境參數(shù)采集任務(wù)和控制設(shè)備任務(wù)的軟件實現(xiàn)。
    環(huán)境參數(shù)采集任務(wù)和控制設(shè)備任務(wù)中CAN總線使用CAN 2.0B協(xié)議,波特率設(shè)置為250 kb/s。STM32F105RCT6的CAN控制器中包含28個共享的可配置標(biāo)識符過濾器組。通過過濾器組的設(shè)置,配合使用不同的接收FIFO寄存器,可以在硬件上設(shè)置區(qū)分不同標(biāo)識符的報文。每收到一幀報文,首先與過濾器組中設(shè)置的報文ID進行比較。報文如果與過濾器組中設(shè)置的環(huán)境參數(shù)報文的ID匹配則將報文送入接收FIFO0寄存器,如果與過濾器組中控制報文的ID匹配則將報文送入接收FIFO1寄存器,如果都不匹配,則認(rèn)定此報文為垃圾報文,直接丟棄。
 環(huán)境參數(shù)采集采用輪詢的方式,由區(qū)域控制模塊輪詢請求各數(shù)據(jù)采集點的數(shù)據(jù),輪詢時間間隔為1 s,輪詢由任務(wù)延時函數(shù)OSTimeDLY()實現(xiàn)。在接收到所有環(huán)境參數(shù)采集點的數(shù)據(jù)后,這些參數(shù)將被存入共享內(nèi)存。接著通過OSTimeDLY()函數(shù)的調(diào)用,實現(xiàn)將當(dāng)前任務(wù)掛起,并延時時鐘節(jié)拍1 s,然后調(diào)用OSSched()進行任務(wù)重新調(diào)度。在指定的時鐘節(jié)拍到來之后,當(dāng)前任務(wù)會被恢復(fù)為就緒狀態(tài)。環(huán)境參數(shù)采集任務(wù)流程圖如圖4所示。

  控制設(shè)備任務(wù)的優(yōu)先級僅次于環(huán)境參數(shù)采集任務(wù),在環(huán)境參數(shù)采集任務(wù)被掛起后運行。控制設(shè)備任務(wù)首先訪問讀取共享內(nèi)存區(qū)的環(huán)境參數(shù),根據(jù)閾值判斷是否對各控制設(shè)備做出動作。在結(jié)束動作之后,本任務(wù)也會調(diào)用OSTimeDLY()函數(shù)掛起自己以實現(xiàn)下一優(yōu)先級任務(wù)的運行。
  接收本地控制中心調(diào)度任務(wù)和按鍵控制任務(wù)在創(chuàng)建之后就通過調(diào)用OSTaskSuspend()函數(shù)進入掛起狀態(tài),當(dāng)接收到調(diào)度命令和按鍵中斷以后,才會通過調(diào)用OSTaskResume()函數(shù)恢復(fù)任務(wù),實現(xiàn)任務(wù)的執(zhí)行。
    本文給出了基于CAN總線的隧道環(huán)境監(jiān)控系統(tǒng)的軟硬件設(shè)計方法。系統(tǒng)中區(qū)域控制模塊采用高性能嵌入式微處理器和嵌入式實時操作系統(tǒng)為核心,并使用穩(wěn)定的工業(yè)現(xiàn)場總線,保證了系統(tǒng)的高可靠性和高實時性,滿足了隧道環(huán)境的監(jiān)控需求。
參考文獻
[1] 王永虹,徐煒,郝立平.STM32系列ARM Cortex-M3微控制器原理與實踐[M].北京:北京航空航天大學(xué)出版社,2008.
[2] 饒運濤,鄒繼軍,鄭勇蕓.現(xiàn)場總線CAN原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2003.
[3] 肖圣兵,肖紅菊.μC/OS-II 在ARM Cortex-M3處理器上的移植[J].電子技術(shù),2010(7):54-55,51.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。