基于CAN總線的隧道環(huán)境監(jiān)控系統(tǒng)的研究
由于隧道的相對(duì)封閉性和其中行車環(huán)境的復(fù)雜性,要保障其安全運(yùn)營(yíng)存在一定的復(fù)雜性。尤其對(duì)于高速公路中的長(zhǎng)隧道(長(zhǎng)度介于1 km和3 km之間)和超長(zhǎng)隧道(長(zhǎng)度高于3 km),由于車速高、流量大以及通風(fēng)等問(wèn)題的存在,隧道中容易累積汽車尾氣中的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ù)警車輛隧道前方通行環(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總線中。
[next]
能見(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)控需求。
評(píng)論