《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于CAN總線的隧道環(huán)境監(jiān)控系統(tǒng)的研究
基于CAN總線的隧道環(huán)境監(jiān)控系統(tǒng)的研究
來(lái)源:電子技術(shù)應(yīng)用2011年第2期
徐 前, 孫志鋒
浙江大學(xué) 電氣工程學(xué)院, 浙江 杭州 310027
摘要: 提出一種通過(guò)CAN總線實(shí)現(xiàn)隧道環(huán)境監(jiān)控系統(tǒng)的設(shè)計(jì)方案,重點(diǎn)討論了監(jiān)控系統(tǒng)的總體構(gòu)成以及軟、硬件設(shè)計(jì)方法。監(jiān)控系統(tǒng)中的區(qū)域控制部分采用ARM Cortex-M3作為主控芯片,結(jié)合嵌入式實(shí)時(shí)操作系統(tǒng),保證了系統(tǒng)的高可靠性和高實(shí)時(shí)性。
中圖分類號(hào): TP277
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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


    由于隧道的相對(duì)封閉性和其中行車(chē)環(huán)境的復(fù)雜性,要保障其安全運(yùn)營(yíng)存在一定的復(fù)雜性。尤其對(duì)于高速公路中的長(zhǎng)隧道(長(zhǎng)度介于1 km和3 km之間)和超長(zhǎng)隧道(長(zhǎng)度高于3 km),由于車(chē)速高、流量大以及通風(fēng)等問(wèn)題的存在,隧道中容易累積汽車(chē)尾氣中的CO、氮氧化物等有害氣體。另外,隧道中還可能因?yàn)檎彰鞴收?、能?jiàn)度低等問(wèn)題的產(chǎn)生導(dǎo)致交通事故的發(fā)生。為保證隧道的運(yùn)營(yíng)安全,避免造成安全事故和重大經(jīng)濟(jì)損失,應(yīng)對(duì)隧道配備完善的環(huán)境參數(shù)監(jiān)控系統(tǒng)
 本文介紹的隧道環(huán)境監(jiān)控系統(tǒng),利用區(qū)域控制部分的實(shí)時(shí)監(jiān)控技術(shù)對(duì)各監(jiān)控點(diǎn)的照明亮度、能見(jiàn)度、CO濃度、煙霧濃度等參數(shù)進(jìn)行采集、監(jiān)測(cè),并根據(jù)這些參數(shù)控制相關(guān)的交通燈、應(yīng)急燈、LED交通指示牌、限速牌以及報(bào)警裝置。然后通過(guò)現(xiàn)場(chǎng)總線將各節(jié)點(diǎn)的參數(shù)和報(bào)警信號(hào)發(fā)送至本地監(jiān)控中心,由本地控制中心對(duì)各區(qū)域控制模塊進(jìn)行調(diào)度。本地控制中心還將這些參數(shù)通過(guò)以太網(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)啟動(dòng)后,各環(huán)境參數(shù)監(jiān)測(cè)點(diǎn)開(kāi)始采集環(huán)境參數(shù),并在接收到發(fā)送數(shù)據(jù)命令后將數(shù)據(jù)傳送至CAN總線。在區(qū)域控制模塊接收處理數(shù)據(jù)后會(huì)控制報(bào)警器等相關(guān)設(shè)備。
 由于CAN總線協(xié)議不對(duì)節(jié)點(diǎn)進(jìn)行地址編碼,而是采用對(duì)通信數(shù)據(jù)塊進(jìn)行編碼的方式,這使得CAN總線上的節(jié)點(diǎn)數(shù)量理論上幾乎不受限制[2]。然而實(shí)際上,由于存在電氣特性上的限制,CAN總線上節(jié)點(diǎn)數(shù)量不宜超過(guò)100個(gè)。因此各個(gè)區(qū)域控制模塊與本地控制中心使用另一條CAN總線進(jìn)行數(shù)據(jù)通信。區(qū)域控制模塊在采集到環(huán)境參數(shù)并做出控制動(dòng)作后會(huì)將參數(shù)打包通過(guò)CAN總線發(fā)送至本地控制中心的工控機(jī)。本地控制中心如收到某個(gè)區(qū)域控制部分的報(bào)警信號(hào),會(huì)根據(jù)報(bào)警信號(hào)類型對(duì)該區(qū)域控制部分前方的各區(qū)域控制部分做出控制,提前預(yù)警車(chē)輛隧道前方通行環(huán)境存在問(wèn)題。
 遠(yuǎn)程控制終端通過(guò)客戶端的顯示程序顯示出由本地控制中心發(fā)送的隧道環(huán)境參數(shù),并將參數(shù)保存在數(shù)據(jù)庫(kù),以實(shí)現(xiàn)歷史數(shù)據(jù)的存儲(chǔ)。
2 系統(tǒng)硬件設(shè)計(jì)
    整個(gè)系統(tǒng)硬件部分包括由區(qū)域控制模塊和各環(huán)境參數(shù)測(cè)量模塊組成的區(qū)域控制部分、本地控制中心的工控機(jī)以及監(jiān)控終端。其中關(guān)鍵部分為區(qū)域控制部分,本文將對(duì)這部分進(jìn)行重點(diǎn)介紹。
  區(qū)域控制模塊選用意法半導(dǎo)體公司的STM32F105RCT6為控制核心,它是采用ARM Cortex-M3為內(nèi)核的32位高性能嵌入式微處理器。它集成了兩個(gè)CAN控制器,并為每個(gè)CAN控制器分配了256 B的SRAM,每個(gè)CAN控制器有三個(gè)發(fā)送郵箱和兩個(gè)接收FIFO[1]。模塊的其他外設(shè)包括用于CAN總線信號(hào)收發(fā)的CAN收發(fā)器,用于顯示當(dāng)前環(huán)境參數(shù)的點(diǎ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ā)器連接后接入與各測(cè)量模塊相連的CAN總線中;PB12/CAN2_RX和PB13/CAN2_TX為CAN2控制器接口,將其與CAN收發(fā)器連接后接入與其他區(qū)域控制部分及本地控制中心相連的CAN總線中。
  能見(jiàn)度測(cè)量模塊由能見(jiàn)度檢測(cè)儀和控制模塊組成。能見(jiàn)度檢測(cè)儀能將檢測(cè)到的能見(jiàn)度值通過(guò)RS232發(fā)送至控制模塊。當(dāng)區(qū)域控制模塊向能見(jiàn)度測(cè)量模塊中的控制模塊請(qǐng)求數(shù)據(jù)時(shí),控制模塊會(huì)使能見(jiàn)度檢測(cè)儀通過(guò)RS232向控制模塊發(fā)送數(shù)據(jù),并轉(zhuǎn)換成CAN數(shù)據(jù)包發(fā)送至CAN總線。其他測(cè)量模塊工作模式與能見(jiàn)度測(cè)量模塊相同。
3 區(qū)域控制模塊軟件設(shè)計(jì)
  由于區(qū)域控制部分在測(cè)量環(huán)境參數(shù)以及控制相應(yīng)設(shè)施方面對(duì)實(shí)時(shí)性和穩(wěn)定性要求,區(qū)域控制模塊選擇使用μC/OS-II管理控制任務(wù)的調(diào)度。μC/OS-II是一個(gè)專為嵌入式應(yīng)用設(shè)計(jì),基于優(yōu)先級(jí)調(diào)度的搶占式實(shí)時(shí)操作系統(tǒng)內(nèi)核,它包含了任務(wù)調(diào)度、任務(wù)管理、時(shí)間管理/任務(wù)間通信與同步等功能。各任務(wù)之間通過(guò)信號(hào)量、郵箱和消息隊(duì)列實(shí)現(xiàn)相互間的數(shù)據(jù)交換和同步[3]。
  根據(jù)區(qū)域控制模塊在系統(tǒng)中的作用,嵌入式操作系統(tǒng)中應(yīng)實(shí)現(xiàn)多個(gè)不同優(yōu)先級(jí)的控制任務(wù)。這些任務(wù)按照優(yōu)先級(jí)由高到低分別為:接收本地控制中心調(diào)度;接收按鍵控制;采集環(huán)境參數(shù);控制相關(guān)設(shè)備;顯示環(huán)境參數(shù);發(fā)送數(shù)據(jù)到本地控制中心。對(duì)于區(qū)域控制系統(tǒng)來(lái)說(shuō),本地控制中心的調(diào)度命令決定著它的系統(tǒng)設(shè)置,因此需要把接受本地控制中心調(diào)度任務(wù)分配到相對(duì)最高的優(yōu)先級(jí)。其他任務(wù)也根據(jù)相對(duì)的重要性和執(zhí)行順序分配相應(yīng)的優(yōu)先級(jí)。系統(tǒng)啟動(dòng)流程圖如圖3所示。

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

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