《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于ARM 的火災信息傳輸網關設計
基于ARM 的火災信息傳輸網關設計
中電網
摘要: 針對城市消防遠程監(jiān)控系統(tǒng)中火災自動報警系統(tǒng)的聯(lián)網問題,提出一種利用Internet實現(xiàn)火災自動報警系統(tǒng)與城市監(jiān)控中心的聯(lián)接方案,設計了系統(tǒng)的關鍵設備——基于ARM的嵌入式網關。設備中采用經過剪裁、內核版本2.6的linux系統(tǒng),提高了信息處理和傳輸的實時性和可靠性,并在嵌入式操作系統(tǒng)的基礎上,利用多線程及管道編程,實現(xiàn)了火災探測信息的處理傳輸及上層監(jiān)控中心和下層網關的信息交互。設備實際運行后的結果表明,該火災
Abstract:
Key words :

0   引  言

火災是城市災害中的一種主要形式,它已經日益成為影響社會經濟發(fā)展和人民生活的一個重要災害,而目前城市在預防火災方面主要采用的就是在建筑物內安裝火災自動報警系統(tǒng)及其聯(lián)動消防裝置,雖然這種裝置在及早發(fā)現(xiàn)火情和控制火勢方面發(fā)揮了重要作用,但是在目前這種消防設備管理和監(jiān)督體系下,很多建筑物的所有方不能夠及時地對建筑物內的消防設施進行檢查維修,導致很多火災自動報警系統(tǒng)故障誤報頻發(fā),極大地影響了建筑物內的人員的工作和生活; 同時,大部分消防主控室主要通過人工值班、電話報警方式,因受到電話線路、報警方式方法以及報警人情緒的影響,往往造成接警調度處理速度較慢; 消防部門在接警時也是依靠電話來傳遞信息的,極易受到報警人或值班員聽覺的影響而導致接傳火警信息有誤,造成不應有的錯誤和無法估量的損失,所以建立基于互聯(lián)網的城市消防監(jiān)控系統(tǒng)具有很重要的實踐意義。在這項工程中,最關鍵的就是處于網絡與自動報警聯(lián)動裝置之間的接入網關的設計和研制。利用這種專門的硬件設備以及在這之中的程序,可以把各個建筑物的消防自動化及其聯(lián)動裝置接入Internet,通過互聯(lián)網連接到城市中的監(jiān)控中心。

1   基于互聯(lián)網的城市消防遠程監(jiān)控系統(tǒng)結構

該系統(tǒng)由三層組成,系統(tǒng)框圖如圖1 所示。第一層是建筑物內的消防自動報警及其聯(lián)動裝置以及其他一些用戶的消防設施,它們由很多不同廠家和類型的火災探頭、消防主機、手動消防設備組成; 第二層是火災信息收集管理處置中心、政府消防部門信息接口、互聯(lián)網普通用戶查詢接口等信息使用單位 。

2   火災信息傳輸網關的硬件設計

該嵌入式網關的中央處理單元采用三星公司的16/ 32 位RISC 處理器S3C2440A,它基于ARM920T內核,運算速度高達400 MHz,適用于需要聯(lián)網應用的嵌入式電子設備。其中的NOR FLASH 用于存儲bo ot loader 啟動代碼,NAND FLASH 用于存儲操作系統(tǒng)的內核映像和根文件系統(tǒng)映像,SDRAM 用于加載操作系統(tǒng)內核及應用程序等可執(zhí)行代碼和數據,為其運行提供空間。外圍電路包括以太網模塊、串口模塊、人機接口模塊等,如圖2 所示。

基于網絡的城市火災信息傳輸系統(tǒng)

圖1   基于網絡的城市火災信息傳輸系統(tǒng)

嵌入式網關的硬件結構

圖2   嵌入式網關的硬件結構

3   火災信息傳輸網關的軟件設計

3. 1   軟件總體設計

軟件總體設計如圖3 所示。

軟件基本框架

圖3  軟件基本框架

3. 2   總體概述

網關軟件系統(tǒng)按照功能分為4 個模塊。

( 1) 網絡通信模塊

主要負責信息往網絡上的傳遞,將該網關獲取的火警,故障等信息依照特定的網絡協(xié)議準確無誤地傳遞給上層的應用服務器,同時還要負責接收來自服務器的數據,如配置信息,控制指令等。具體來說,網絡通信模塊又可以分為兩個子模塊: 數據通信和數據處理。數據通信的工作只是負責從網絡上獲取數據或者將數據發(fā)送到網絡。數據處理主要負責組包和解包,涉及到通信協(xié)議。當數據區(qū)有數據需要網絡通信模塊處理時,數據處理子模塊會首先從數據區(qū)取出數據,并分析、判斷數據類型,根據數據類型組包,然后將包交給數據通信子模塊發(fā)送。

( 2) 串口采集模塊

主要負責通過串口獲取消防主機的狀態(tài),并進行分析,分離出有用信息,并將其寫入數據區(qū),供其他模塊使用,它是信息傳輸網關的核心。

由于消防主機眾多,而且協(xié)議又各不相同,因此串口采集模塊需要根據消防主機定制。在此,同樣將串口采集模塊分為兩個子模塊: 數據采集和數據加工。數據采集通過特定的對話方式( 和具體的消防主機有關) 從消防主機獲取數據,數據加工讀取這些數據,并按照消防主機協(xié)議進行解析,提取初步的信息,如消息類型( 火警還是故障) ,探頭地址( 內部編碼地址) 。然后依照內部協(xié)議組包,并寫入數據區(qū),以后的工作就交由網絡通信模塊。

( 3) 系統(tǒng)控制模塊

主要用于控制信息傳輸網關的硬件設備,如指示燈、按鍵、燈等。它從數據區(qū)讀取控制指令,根據控制指令執(zhí)行特定的硬件控制??刂浦噶羁赡苡删W絡通信模塊產生,如上層服務器發(fā)送查崗請求,網絡通信模塊經過數據處理轉化為響喇叭指令,寫入數據區(qū)。當然,控制指令可以由任何模塊產生。系統(tǒng)控制模塊可以返回硬件狀態(tài)信息,也是通過寫狀態(tài)信息到數據區(qū)來實現(xiàn)信息傳遞的。

( 4) 系統(tǒng)維護模塊

主要負責確保系統(tǒng)各個模塊的正常運行,同時記錄及上傳工作日志,供系統(tǒng)維護人員參考,同時收集上來的數據經過分析和挖掘,可以作為產品性能指標制定的依據。各模塊在建立之初將會在數據區(qū)注冊,維護模塊通過這個注冊信息實現(xiàn)心跳應答機制來判斷各個模塊的工作狀態(tài)。同時,還將數據區(qū)中的日志信息提取出來寫入日志文件,并提出發(fā)送日志文件請求給網絡通信模塊。

每個模塊依照分工完成職能之內的工作,不屬于職能內的工作通過寫入數據區(qū)交由職能模塊去完成。數據區(qū)是各個模塊傳遞信息的媒介,通過格式化的數據寫入和讀取,實現(xiàn)模塊間的信息共享和職能分工。

3. 3   各模塊詳細設計

3. 3. 1   流程分析

核心管理模塊是嵌入式網關入口,當嵌入式網關加電啟動,嵌入式網關的操作系統(tǒng)負責啟動核心管理模塊。此時,其他模塊還未啟動。核心模塊首先為其他模塊啟動初始化系統(tǒng)環(huán)境,如創(chuàng)建管道,共享內存等。接著,核心模塊啟動其他模塊。這時,系統(tǒng)將啟動完成。

接著,核心模塊建立定時器,創(chuàng)建定時器是為了定時地檢測其他模塊,以判斷其他模塊的狀態(tài),稱這個過程為“心跳”。

當以上過程完成后,核心管理模塊開始監(jiān)視所有管道,當管道有數據時,他讀取定長的數據并分析,找出源地址、目的地址及命令字。根據命令字類型的不同做不同的處理。程序流程圖如圖4 所示。

程序啟動過程

圖4   程序啟動過程

( 1) 初始化。初始化的主要工作是為模塊間的通信建立有名管道,每個與核心模塊通信的進程有一個管道。當前系統(tǒng)需要創(chuàng)建四個管道。其他模塊如果想要使用管道,必須首先打開管道。所有與管道的通信都有API 供其他用戶使用。

( 2) 啟動其他模塊。核心模塊通過子進程調用execl( ) 來啟動其他模塊。每個其他模塊都是一個可執(zhí)行程序,通常位于一個固定的路徑及固定的文件名。每個模塊在啟動之后需要向核心模塊發(fā)送注冊信息,這些信息包括模塊標識、進程ID、進程狀態(tài)等。登記信息由核心模塊保留,供以后使用。

( 3) 創(chuàng)建定時器。核心模塊需要定時地檢測其他模塊的生存狀況,通過注冊一個定時器,可以定時地觸發(fā)檢測功能。

( 4) 開始*。當所有初始化工作完成以后,核心模塊開始進入工作狀態(tài)。它的主要工作就是負責處理管道信息。通過使用select ( ) 函數可以實現(xiàn)同時*多個管道。當某個管道有數據,核心模塊讀取數據包( 格式詳見后文) ,并解析出包頭,得到包的源地址,目的地址,及控制字并加以分析,選擇處理流程。處理流程包括: 數據中轉,巡檢,系統(tǒng)維護等。當該數據包處理完成以后,核心模塊返回繼續(xù)等待下一個數據包。

( 5) 處理數據中轉。其他模塊間無法直接通信,都必須通過核心模塊進行中轉。數據包中指明了包的源地址,目的地址及控制字。這里的控制字說明數據需要中轉,核心模塊解析到數據包需要中轉,就將包寫入到給定目的地址的模塊管道。

( 6) 處理巡檢。服務器需要定時地檢測前置機各個模塊的狀態(tài),于是發(fā)送巡檢請求給網絡模塊,網絡模塊解析后組包發(fā)送給核心模塊,核心模塊在分析包發(fā)現(xiàn)該包是巡檢請求,于是通過kil l( ) 函數及注冊記錄信息,判斷各個模塊的狀態(tài),并組包發(fā)送給服務器。

( 7) 處理系統(tǒng)維護。系統(tǒng)維護的主要任務是為了保證系統(tǒng)所有模塊的正常運行。前面初始化了一個定時器,通過定時器,可定時地查詢其他模塊的狀態(tài)。當發(fā)現(xiàn)某個模塊異常,核心模塊將重啟該模塊。

3. 3. 2   關鍵數據結構

( 1) 包格式

( 2) 模塊ID 定義

如表1 所示:

表1   模塊ID 定義

模塊ID 定義

# defineID_CORE0x0001

# defineID_NET WORK0x0002

# define ID_COM0x0004

# defineID_CT L0x0008

# define ID_LOG0x0010

( 3) 控制字定義

如表2 所示:

 表2   控制字定義

控制字定義

( 4) 管道初始化

首先,用戶必須選擇正確地管道初始化函數,通過初始化函數,用戶正確的建立與管道的連接。初始化函數如表3 所示。

表3   初始化函數

 初始化函數

( 5) 管道寫操作

一旦管道創(chuàng)建完成,用戶就可以通過調用管道寫函數來寫數據。用于必須調用和初始化一致的寫函數。

如網絡模塊調用pipe_init_ netw o rk 函數初始化管道,必須通過調pipe_w rite_netw ork 來寫,若調用其他函數寫入將失敗,如表4 所示。

表4   管道寫函數

管道寫函數

表4 中目的模塊ID 和控制字在conf ig . h 文件中定義。msg 是要發(fā)送數據的首地址,必須注意的是msg所指向的數據必須是字符串類型,必須以“ 0”結束,否則發(fā)送函數無法確定msg 數據包的長度。對于不是以msg 結尾的數據包,必須字符串化,否則發(fā)送函數的行為未定義。

( 6) 管道讀操作管道讀操作從管道讀取一個固定長度的數據包,并解析數據包,從數據包中分離信息。管道的讀操作可以是阻塞模式和非阻塞模式。在阻塞模式下,讀操作將阻塞直到有數據返回。用戶通過設置讀操作中的參數f lag 可以實現(xiàn)模式選擇。當f lag= 0 時,表示為阻塞模式; 當f lag= 1 時,表示為非阻塞模式。管道讀操作也要求管道必須正確的初始化,否則讀失敗,同時也要求必須選擇正確的管道讀函數,如表5 所示。

表5 

表5

表5 中,src 是unsigned shor t * 類型,如果不要求獲取源地址,可以傳遞NU LL。msg 用于存放接收數據的內存首地址,msg 必須大于或等于251 B??臻g必須由用戶分配。函數假定msg 的空間已分配且空間足夠大 。

( 7) 基于TCP/ IP 的網絡通信

裝置采用串口采集消防主機上的數據,并且把數據轉換成TCP/ IP 協(xié)議能識別的數據包,因此串口采集的數據源要作為以太網幀的一部分。為了向設備提供透明的接口并區(qū)分數據源,需要制定統(tǒng)一的幀格式。幀格式如下:

其中,串*字段用來區(qū)分數據源; 幀頭、幀尾作為一個串口幀的起始分界( 可自定義) ; 數據部分是來自串口的原始數據流。

以太網方面采用面向連接的網絡通信,采用TCP/ IP網絡通信協(xié)議。數據包結構描述中控制單元格式如下:

應用數據單元基本格式如下:


消防主機發(fā)送的信息一般在10~ 100 B 之間,若選擇T CP 協(xié)議,會使協(xié)議開銷在網絡的吞吐量中占有很大的比例。U DP 協(xié)議支持實時多播通信,保證了網關向監(jiān)控中心實時發(fā)送火警情報,并能有效地減少用戶信息傳輸裝置的開銷和網絡資源。UDP 協(xié)議的數據可靠性和完整性問題由應用程序來解決,因此在該系統(tǒng)中使用UDP 更合理。

TCP/ IP 通信模塊采用SOCKET 套接字編程實現(xiàn)。本系統(tǒng)采用服務器/ 客戶端編程模型,服務器和客戶端分別對應監(jiān)控中心工作站服務器和用戶信息傳輸裝置。

4   結  語

本文詳細剖析了利用Internet 實現(xiàn)火災自動報警系統(tǒng)與城市遠程消防監(jiān)控中心的連接及相關信息的交互,并設計了該系統(tǒng)的關鍵設備——嵌入式信息傳輸網關,采用已經移植有Linux 2. 6 內核操作系統(tǒng)的ARM9單片機,在此基礎上進行了應用程序的開發(fā),實現(xiàn)了火災探測信息的處理轉發(fā)功能和上位機與嵌入式網關的信息交互功能。設備在實際環(huán)境中安裝后的測試結果表明,該嵌入式系統(tǒng)對火災探測數據及交互信息的處理和轉發(fā)穩(wěn)定可靠、實時性好,不僅適用于基于IP 的火災信息傳輸網絡中,同時還可應用于其串口和以太網通信的場合中,應用前景廣闊。

此內容為AET網站原創(chuàng),未經授權禁止轉載。