張騰飛 ,王 飛,馬福民
(1.南京郵電大學 自動化學院,南京 210023;2.南京財經大學 信息工程學院,南京 210023)
隨著社會的快速發展,現代建筑物的規模越來越大,建筑物內的人員密集度越來越高,發生火災、非法入侵等警情的可能性也隨之增加。相關數據顯示,2003年-2012年之間,我國平均每年發生火災18萬起,造成人員死亡1698人,因火災而導致的直接財產損失就高達16.26億元[1]。因此,通過有效的監控手段對建筑物內的火情、門禁入侵、環境情況等信息進行實時監控,及時上報警情信息,進而快速地采取應對措施降低因各種災情造成的損失,成為當前安防系統的發展趨勢。
目前,大多數的警情信息采集模塊采用工業現場總線Modbus協議傳輸警情信息,雖然其連接簡單、可靠性好,但是無法與采用通用分組無線服務技術的GPRS模塊和基于TCP/IP協議的以太網直接連接,獲取的警情信息無法直接傳遞到遠程服務器。通常的做法是警情信息采集現場增加主機,通過主機對數據進行轉換后再傳到遠程服務器,這就造成現場布線復雜、成本較高、主機不易維護等系列問題[2-3]。
為解決警情信息監控系統中不同協議傳輸信息的有效接入,本文給出了一種基于Modbus多協議轉換的警情信息遠程監控系統的設計,通過在警情信息采集端增加協議轉換模塊對Modbus協議的數據進行解析轉換,而后經GPRS或TCP/IP協議傳輸到遠程服務器,同時服務器留有用戶端接口,遠程用戶可通過接入設備及時獲取現場的警情信息并下發控制指令。
警情信息遠程監控系統的總體架構如圖1所示,其主要由協議轉換模塊、服務器/云平臺、遠程用戶端等部分組成。

圖1 系統總體結構Fig.1 System architecture
協議轉換模塊通過RS-232串行總線與采用Modbus協議標準的警情信息采集模塊連接,用于實現Modbus協議的解析和封裝;服務器/云平臺用于接收和存儲警情信息,并及時將警情信息推送給遠程智能手機用戶端,同時接收用戶端的控制指令并將其發送給協議轉換模塊;遠程用戶端用于接收警情信息并發送控制指令。
建筑物內常見的警情信息主要有火警信息、門禁入侵、監控信息以及室內環境信息等,因為涉及到安全因素,這些信息傳輸的可靠性要求相對較高。目前,大多數設備尤其是火警信息采集設備一般采用工業現場總線標準的Modbus協議傳輸。
Modbus協議是Modicon公司于1978年發明的一種用于現場控制總線的通訊協議。通過Modbus協議,控制器之間、控制器經由網絡和其它設備之間可以完成信息和數據的交換與傳送,其傳輸信息的可靠性高,可以支持包括RS-232、RS-485等多種電氣接口,由于幀格式簡單、緊湊,被廣泛應用于消防安全和工業控制現場。Modbus協議有美國標準信息交換代碼ASCII和遠程終端單元RTU 2種模式[4-5],本文采用RTU模式,其數據幀格式如圖2所示。

圖2 Modbus協議幀格式Fig.2 Frame format of modbus protocol
Modbus協議定義了一個與基礎通信層無關的簡單協議數據單元PDU。特定總線或網絡上的Modbus協議映射能夠在應用數據單元ADU上引入一些附加域。現場的警情信息采集模塊將采集到的警情信息封裝成RTU模式的Modbus協議數據幀之后通過RS-232接口送到協議轉換模塊。
協議轉換模塊一方面通過RS-232通信模塊與現場警情信息采集模塊連接,另一方面通過GPRS和TCP/IP與遠程服務器連接,主要負責現場到遠程服務器之間數據協議的轉換,其硬件結構如圖3所示。

圖3 協議轉換模塊硬件框圖Fig.3 Hardware diagram of protocol conversion
協議轉換模塊主要包含微控制器模塊、RS-232通信模塊、GPRS通信模塊、TCP/IP通信模塊、電源模塊、LCD顯示模塊等。其微控制器模塊采用高性能、低功耗的STM32系列嵌入式微處理器。
TCP/IP通信模塊采用Microchip的ENC28J60,該芯片支持全雙工和半雙工模式,采用3.3 V供電,最高速度可達10 Mb/s,板上通過SPI總線與網關主控芯片STM32連接,能夠滿足大量數據傳輸的需求。
GPRS通信模塊采用SIMCom的雙頻GSM/GPRS模塊SIM900A,其工作頻率為GSM/GPRS 850/900/1800/1900 MHz,采用工業標準接口,最大傳輸速度可達85.6 kb/s(下行速率),通過UART總線與微控制器通信[6]。
由于GPRS模塊工作時電流消耗較大,電源模塊采用DC-DC和LDO組合的模式為整個協議轉換模塊穩定供電。協議轉換模塊還配有LCD和聲光報警模塊,LCD模塊用于顯示警報信息、模塊信息和工作狀態;當模塊出現故障時可通過聲光報警模塊提醒檢修人員。
協議轉換模塊通過有線以太網TCP/IP協議和無線GPRS 2種方式連接到遠程服務器,根據應用場景的不同選擇不同的接入方式。當數據量較小或者布線不便時可以通過GPRS方式連接服務器;相反,當數據量較大或者布線比較容易時可以通過TCP/IP方式連接服務器。這樣不僅具有較強的靈活性,同時也保證了數據傳輸的可靠性。

圖4 協議轉換模塊工作流程Fig.4 Work flow chart of protocol conversion
協議轉換模塊作為系統的關鍵部分,對現場警情信息采集模塊和遠程服務器的不同數據傳輸協議進行轉換,實現二者的信息交互。
系統上電初始化并開中斷后,對Modbus協議棧進行初始化,然后根據網絡選通開關Slect_net的狀態選擇GPRS或TCP/IP方式連接到遠程服務器,其中網絡選通開關可軟件內部設定也可通過手動設置;連接服務器成功后啟動Modbus協議棧。
循環檢測微控制器的串行口UART1是否有數據送入,如果有,則開始接收數據并打開定時器;每接收完1個字節,判斷3.5個字符時間內UART1是否還有數據,如果有數據,則繼續接收,說明該幀數據尚未接收完成;接收完一幀數據后,將數據存入接收緩沖區MODBUS_RX_BUF[]并設置接收完成標志位MODBUS_RX_OK。使用校驗函數MODBUS_RX_CRC()對接收到的數據進行校驗,判斷數據是否正確,如果接收數據正確,調用Modbus協議解析函數MODBUS_DATA_PARSE()用于解析接收緩沖區MODBUS_RX_BUF[]中的數據,獲得Modbus從機的設備地址、功能碼和數據等信息存入發送緩沖區SEND_BUF[],然后根據網絡選通開關設置情況選擇調用GPRS協議封裝函數GPRS_PKT_TX()或TCP/IP協議封裝函數TCP/IP_PKT_TX()將其封裝成相應的數據幀后發送到服務器,其具體實現流程如圖4所示。
Modbus協議棧描述了一個狀態機,當UART1中斷有數據送入時通過調用此狀態機接收數據,該狀態機的狀態轉移如圖5所示。進入狀態機后,首先完成串口接收寄存器的讀取,然后判斷相應接收狀態eRcvState,實現接收。
在STATE_RX_INIT狀態,重置超時定時器,等待超時中斷(超時中斷會把eRcvState設為STATE_RX_IDLE狀態);在處于狀態STATE_RX_ERROR時,同樣會重置超時定時器等待超時中斷;在STATE_RX_IDLE狀態,會將接收字符個數置零,同時向緩存數組ucRTUBuf中存入接收到的字符,跳入狀態STATE_RX_RCV,并重置超時定時器;在STATE_RX_RCV狀態,不斷將接收到的字符存入緩存,并統計接收字符數,重置超時定時器,接收計數大于幀最大長度時,會跳入STATE_RX_ERROR狀態。在任何一處發生超時中斷,都會將狀態eRcvS-tate置為STATE_RX_IDLE。在接收過程中,即在狀態STATE_RX_RCV時,發生超時中斷,表示一幀數據接收完成。

圖5 Modbus協議棧數據接收狀態機Fig.5 State machine of Modbus data acceptance
服務器端采用分布式的B/S(browser/server)結構進行設計,B/S模式主要由瀏覽器、Web服務器和數據庫3層組成,具有維護和升級方式簡單、成本低等特點[7]。
協議轉換模塊與服務器建立連接后將現場的警情信息發送到服務器。服務器端通過Netty框架監聽協議轉換模塊的連接端口,在獲取數據后存入數據庫。數據經過解析后在瀏覽器中顯示或通過Jpush信息推送技術發送給移動終端,遠程用戶可通過不同的方式實時獲得現場的警情信息。
此外,當現場有警情發生時,遠程用戶可以根據獲取到的警情信息做出合理決策發送控制命令到服務器,服務器接收控制命令后通過協議轉換模塊傳輸到相關執行機構,以實現警情的及時有效處理。服務器和遠程用戶端的功能如圖6所示。

圖6 服務器和遠程用戶端功能框圖Fig.6 Function block diagram of server and remote client
服務器的數據庫采用Oracle公司的MySQL關系型數據庫。通過SQL非過程化編程語言,建立相關表格記錄已注冊的設備、控制命令、用戶權限等信息,服務器則采用面向對象的Java語言進行開發實現。
本文針對現有警情信息遠程監控所存在的實際問題,提出了一種基于Modbus多協議轉換的警情信息遠程監控系統實現方案。為解決警情信息采集模塊和遠程服務器由于數據傳輸協議不同而無法進行信息交互的問題,采用增加協議轉換模塊實現Modbus協議和GPRS、TCP/IP協議之間的轉換,為遠程用戶實時監控建筑物的警情信息提供了一種便捷的實現途徑。
[1]傅智敏.我國火災統計數據分析[J].安全與環境學報,2014,14(6):341-345.
[2]劉東曉,趙強,汪晉寬,等.基于MVI模塊嵌入式系統的Modbus協議開發[J].儀器儀表學報,2006,27(S1):701-703.
[3]梁偉.采用C51編寫智能設備的Modbus協議通訊軟件[J].化工自動化及儀表,2004,31(1):44-47.
[4]史運濤,孫德輝,李志軍,等.基于Modbus協議的通訊集成技術研究[J].化工自動化及儀表,2010,37(4):67-72.
[5]呂國芳,唐海龍,李進.基于Modbus RTU的串口調試軟件的實現[J].計算機技術與發展,2009,19(9):236-238.
[6]SIM900A_Specifiction_V1102[OL].http://wm.sim.com.
[7]李萬莉,項著廷.基于B/S結構遠程監測系統軟件設計[J].計算機技術與發展,2015,25(3):15-18.