基于CAN總線的隧道環(huán)境監(jiān)控系統(tǒng)的研究
由于隧道的相對封閉性和其中行車環(huán)境的復雜性,要保障其安全運營存在一定的復雜性。尤其對于高速公路中的長隧道(長度介于1 km和3 km之間)和超長隧道(長度高于3 km),由于車速高、流量大以及通風等問題的存在,隧道中容易累積汽車尾氣中的CO、氮氧化物等有害氣體。另外,隧道中還可能因為照明故障、能見度低等問題的產(chǎn)生導致交通事故的發(fā)生。為保證隧道的運營安全,避免造成安全事故和重大經(jī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)的交通燈、應急燈、LED交通指示牌、限速牌以及報警裝置。然后通過現(xiàn)場總線將各節(jié)點的參數(shù)和報警信號發(fā)送至本地監(jiān)控中心,由本地控制中心對各區(qū)域控制模塊進行調(diào)度。本地控制中心還將這些參數(shù)通過以太網(wǎng)發(fā)送至遠程監(jiān)控終端處,在終端上遠程監(jiān)控隧道的環(huán)境參數(shù)。
1 系統(tǒng)總體結(jié)構(gòu)
系統(tǒng)的總體結(jié)構(gòu)如圖1所示。系統(tǒng)主要包括區(qū)域控制部分、本地控制中心和遠程監(jiān)控終端。
安裝在隧道中的區(qū)域控制部分采用CAN總線分布式數(shù)據(jù)采集控制方式。當系統(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ū)域控制部分做出控制,提前預警車輛隧道前方通行環(huá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ū)域控制模塊選用意法半導體公司的STM32F105RCT6為控制核心,它是采用ARM Cortex-M3為內(nèi)核的32位高性能嵌入式微處理器。它集成了兩個CAN控制器,并為每個CAN控制器分配了256 B的SRAM,每個CAN控制器有三個發(fā)送郵箱和兩個接收FIFO[1]。模塊的其他外設(shè)包括用于CAN總線信號收發(fā)的CAN收發(fā)器,用于顯示當前環(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總線中。
[next]
能見度測量模塊由能見度檢測儀和控制模塊組成。能見度檢測儀能將檢測到的能見度值通過RS232發(fā)送至控制模塊。當區(qū)域控制模塊向能見度測量模塊中的控制模塊請求數(shù)據(jù)時,控制模塊會使能見度檢測儀通過RS232向控制模塊發(fā)送數(shù)據(jù),并轉(zhuǎn)換成CAN數(shù)據(jù)包發(fā)送至CAN總線。其他測量模塊工作模式與能見度測量模塊相同。
3 區(qū)域控制模塊軟件設(shè)計
由于區(qū)域控制部分在測量環(huán)境參數(shù)以及控制相應設(shè)施方面對實時性和穩(wěn)定性要求,區(qū)域控制模塊選擇使用μC/OS-II管理控制任務(wù)的調(diào)度。μC/OS-II是一個專為嵌入式應用設(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)中應實現(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ōu)先級。系統(tǒng)啟動流程圖如圖3所示。
硬件初始化程序負責初始化芯片的系統(tǒng)時鐘、中斷向量、I/O配置、CAN配置等。操作系統(tǒng)初始化程序負責初始化任務(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個共享的可配置標識符過濾器組。通過過濾器組的設(shè)置,配合使用不同的接收FIFO寄存器,可以在硬件上設(shè)置區(qū)分不同標識符的報文。每收到一幀報文,首先與過濾器組中設(shè)置的報文ID進行比較。報文如果與過濾器組中設(shè)置的環(huán)境參數(shù)報文的ID匹配則將報文送入接收FIFO0寄存器,如果與過濾器組中控制報文的ID匹配則將報文送入接收FIFO1寄存器,如果都不匹配,則認定此報文為垃圾報文,直接丟棄。
環(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)將當前任務(wù)掛起,并延時時鐘節(jié)拍1 s,然后調(diào)用OSSched()進行任務(wù)重新調(diào)度。在指定的時鐘節(jié)拍到來之后,當前任務(wù)會被恢復為就緒狀態(tài)。環(huán)境參數(shù)采集任務(wù)流程圖如圖4所示。
控制設(shè)備任務(wù)的優(yōu)先級僅次于環(huán)境參數(shù)采集任務(wù),在環(huán)境參數(shù)采集任務(wù)被掛起后運行??刂圃O(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),當接收到調(diào)度命令和按鍵中斷以后,才會通過調(diào)用OSTaskResume()函數(shù)恢復任務(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)控需求。
評論