0 引言
隨著我國經(jīng)濟的迅猛發(fā)展,私家車的保有量呈爆炸性增長,而對應(yīng)的停車位數(shù)量卻增長緩慢,其中涉及到城市規(guī)劃、交通等諸多方面的問題。大力推廣和應(yīng)用立體停車庫是解決此問題的有效途徑之一 [1]。進入 21 世紀以來,微電子技術(shù)和控制技術(shù)不斷發(fā)展,立體停車庫的自動化程度也越來越高,并朝著智能化和網(wǎng)絡(luò)化的方向發(fā)展?,F(xiàn)在的立體停車庫通常由專業(yè)的工業(yè)控制器如PLC 來控制 [2]。目前,無論是立體停車庫的生產(chǎn)企業(yè)還是使用機構(gòu),使用的控制系統(tǒng)都是本地化的,絕大多數(shù)設(shè)備的檢修和維護工作仍然依靠人工完成,這不僅需要大量的人力物力而且長時間的維護也給車庫的正常運營帶來負面的影響 [3,4]。構(gòu)建支持遠程監(jiān)控和設(shè)備信息管理功能的立體停車庫遠程監(jiān)控系統(tǒng)可有效解決此類問題。2017 年 3 月,西門子的 S7-200 Smart 系列 PLC 已完全支持開放式以太網(wǎng)通信,使利用小型 PLC 建立智能化和網(wǎng)絡(luò)化的控制系統(tǒng)成為現(xiàn)實,進而可以建立一套針對立體停車設(shè)備的遠程監(jiān)控系統(tǒng)。本文從系統(tǒng)整體出發(fā),介紹了立體停車庫遠程監(jiān)控系統(tǒng)的整體框架和結(jié)構(gòu),闡述了上層兩個核心軟件的架構(gòu),并針對建立此系統(tǒng)的兩個難點提出了解決方案。
1 遠程監(jiān)控系統(tǒng)的整體方案
建立遠程監(jiān)控系統(tǒng)是為了針對分布在各地的立體停車設(shè)備難以高效維護的問題,致力于將分布在各地的立體停車庫統(tǒng)一管理,實現(xiàn)對立體停車設(shè)備的遠程監(jiān)控、診斷維護及安全管理。
1.1 系統(tǒng)功能及目標
建立遠程監(jiān)控系統(tǒng)是為了做到設(shè)備的集中化管理與運營,其具體功能及目標為數(shù)據(jù)采集、數(shù)據(jù)傳輸、數(shù)據(jù)處理、數(shù)據(jù)存儲以及針對工作人員的遠程服務(wù)。
其中,經(jīng)過處理后的數(shù)據(jù)用來實現(xiàn)對設(shè)備的狀態(tài)檢測和故障診斷等。針對工作人員的遠程服務(wù)是指工作人員能夠遠程訪問監(jiān)控系統(tǒng),查看各個車庫的位置、運行狀態(tài)、收入情況等。
從系統(tǒng)的結(jié)構(gòu)和原理來說,前四個功能是一體的, 數(shù)據(jù)由 PLC 采集,傳輸?shù)奖镜胤?wù)器,由本地服務(wù)器初步處理后上傳到監(jiān)控中心的數(shù)據(jù)庫服務(wù)器,最后數(shù)據(jù)庫服務(wù)器上的數(shù)據(jù)解析程序?qū)?shù)據(jù)進行分析處理并存入數(shù)據(jù)庫,是針對數(shù)據(jù)的操作,是遠程監(jiān)控系統(tǒng)的基本功能。而針對工作人員的遠程服務(wù),則是在 WEB 服務(wù)器上建立一個與數(shù)據(jù)庫進行交互的 CURD 系統(tǒng)。
1.2 系統(tǒng)整體架構(gòu)
根據(jù)系統(tǒng)功能需求所制定的系統(tǒng)整體架構(gòu)如圖 1 所示。從層次上劃分,整個系統(tǒng)自底向上可以分為設(shè)備控制層、現(xiàn)場監(jiān)控層和遠程監(jiān)控與管理層。
設(shè)備控制層的主要功能是通過安裝在設(shè)備電氣控制柜中的 PLC 來控制設(shè)備并采集設(shè)備信息,其組成如圖 2 所示。
現(xiàn)場監(jiān)控層是由本地服務(wù)器對信息進行預(yù)處理和與監(jiān)控中心建立網(wǎng)絡(luò)連接來實現(xiàn)的。整個現(xiàn)場監(jiān)控層由兩部分組成:
1)本地服務(wù)器,負責采集現(xiàn)場 PLC 中的數(shù)據(jù)、數(shù)據(jù)預(yù)處理和暫存并將數(shù)據(jù)上傳到監(jiān)控中心;
2) 路由器,為本地設(shè)備之間提供局域網(wǎng)內(nèi)通信功能,并實現(xiàn)接入外網(wǎng)與監(jiān)控中心通信功能。
遠程監(jiān)控與管理層實現(xiàn)數(shù)據(jù)存儲、數(shù)據(jù)顯示、數(shù)據(jù)挖掘等多種功能。遠程監(jiān)控中心主要由數(shù)據(jù)庫服務(wù)器、WEB 服務(wù)器、網(wǎng)絡(luò)設(shè)備(路由器與交換機等)組成。遠程監(jiān)控中心系統(tǒng)的主要功能如下:
1) 數(shù)據(jù)接收、處理、存儲與管理
實時接收、處理、存儲立體停車庫運行狀態(tài)信息, 實現(xiàn)數(shù)據(jù)管理功能,同時對數(shù)據(jù)庫進行良好的維護。
2) 界面顯示與狀態(tài)監(jiān)控
在車庫正常工作的情況下,工作人員登陸系統(tǒng)后可通過 GIS 系統(tǒng)點擊地圖上的立體停車庫,即可查看該立體停車庫的當前狀態(tài):是否處于運行狀態(tài)、托車架所處位置、剩余車位數(shù)等。監(jiān)控系統(tǒng)具有故障報警功能,如果車庫發(fā)生故障,根據(jù)設(shè)備上傳的故障編號,工作人員即可知道故障信息,做出針對性的維護。
3) 系統(tǒng)操作
即使工作人員不在監(jiān)控中心也可以遠程通過 WEB 瀏覽器實時查看設(shè)備信息,并將工作人員按照角色劃分, 賦予不同的操作權(quán)限。數(shù)據(jù)庫服務(wù)器用于立體停車庫信息數(shù)據(jù)的存儲,而WEB 服務(wù)器則用于發(fā)布、管理和維護監(jiān)控中心的網(wǎng)站后臺, 監(jiān)控中心用戶可遠程通過網(wǎng)絡(luò)服務(wù)器訪問監(jiān)控網(wǎng)站。網(wǎng)絡(luò)設(shè)備部分主要包括交換機和路由器,它主要實現(xiàn)監(jiān)控中心內(nèi)部、監(jiān)控中心和中層(本地監(jiān)控層), 監(jiān)控中心和遠程用戶之間的通信。
遠程監(jiān)控中心系統(tǒng)的軟件結(jié)構(gòu)及信息交互如圖 3 所示,由兩個系統(tǒng)組成:數(shù)據(jù)通信管理系統(tǒng)和設(shè)備監(jiān)控系統(tǒng)。
其中,數(shù)據(jù)通信管理系統(tǒng)由實時通信及數(shù)據(jù)解析程序?qū)崿F(xiàn),負責與本地服務(wù)器通信、收發(fā)數(shù)據(jù)、數(shù)據(jù)解析、數(shù)據(jù)庫管理以及設(shè)備管理等;設(shè)備監(jiān)控系統(tǒng)由網(wǎng)站程序?qū)崿F(xiàn),主要以地圖的形式,集中顯示各地設(shè)備的總體狀態(tài)和單獨設(shè)備的實時運行狀態(tài),可進行具體的歷史數(shù)據(jù)查詢。
2 遠程監(jiān)控與管理層軟件架構(gòu)
遠程監(jiān)控與管理層有兩臺服務(wù)器:WEB 服務(wù)器和數(shù)據(jù)庫服務(wù)器,分別運行遠程監(jiān)控系統(tǒng)兩個上層核心程序——網(wǎng)站后臺程序和實時通信及數(shù)據(jù)解析程序。
2.1 網(wǎng)站后臺程序架構(gòu)
網(wǎng)站后臺架構(gòu)采用 B/S 模式,即瀏覽器 / 服務(wù)器模式,這種模式可統(tǒng)一客戶端,盡可能地將系統(tǒng)功能的核心部分放在服務(wù)器上運行,簡化了系統(tǒng)的開發(fā)、維護和使用。客戶機上只要安裝了瀏覽器,便能通過 WEB 服務(wù)器上的后臺程序與數(shù)據(jù)庫進行數(shù)據(jù)交互。網(wǎng)站后臺主要用來響應(yīng)用戶的HTTP 請求,在Tomcat 中發(fā)布并運行。
本研究基于 SSH 框架對系統(tǒng)進行層次劃分, 將層次間的耦合降到最 低。SSH 由 Struts、Spring、Hibernate 3 個開源框架組成。其中,Spring 是一個輕量級框架,旨在簡化 JAVA 開發(fā),其核心思想是通過依賴注入和面向切面編程類之間的耦合,支持集成第三方框架,整合為一個復(fù)雜系統(tǒng),實現(xiàn)對象生命周期的管理。
Struts 基于 MVC 模式, 對 Model、View 和 Controller 都提供了對應(yīng)的組件。Struts 通過控制器攔截來自用戶的請求,調(diào)用由用戶提供的實現(xiàn)業(yè)務(wù)邏輯的對應(yīng)的Action,將處理結(jié)果返回給前端頁面顯示。Hibernate 則是一個數(shù)據(jù)持久層框架,可使用配置文件或注解配置原始映射,將接口和 Java 對象映射成數(shù)據(jù)庫中的記錄。SSH 框架的應(yīng)用使得服務(wù) 器開發(fā)變得方便快捷,且具有優(yōu)良的拓展性 [5]。采用 SSH 框架后,服務(wù)器程序?qū)哟谓Y(jié)構(gòu)如圖 4 所示。
2.2 遠程監(jiān)控層實時通信及數(shù)據(jù)解析程序架構(gòu)
通信程序自底向上分為網(wǎng)絡(luò)層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層。
網(wǎng)絡(luò)層主要基于 Socket 編寫,Socket 最早是 Unix 上推出的一種操作系統(tǒng)調(diào)用, 應(yīng)用程序使用它來訪問通信協(xié)議。Socket 的種類很多, 如伯克利 Socket、Windows Socket 等。Socket 通常也稱為“套接字”,用于綁定 IP 地址和端口,使進程間能夠相互通信。進程在通信前各自建立一個 Socket,完成準備工作后,通過對 Socket 緩沖區(qū)的讀寫操作實現(xiàn)網(wǎng)絡(luò)通信的功能 [6]。
一個完整的 Socket 服務(wù)端程序一般包括以下步驟:
1) 創(chuàng)建套接字 (socket());
2) 將一個 IP 地址和一個端口綁定到套接字上(bind());
3) 將套接字設(shè)置為監(jiān)聽模式等待連接請求 (listen());
4) 接受到來的連接請求,返回一個新的對應(yīng)的套接字 (accept());
5) 利用上一步返回的套接字和客戶端通信 (send()/ recv());
6) 關(guān)閉套接字 (closesocket())。
以上每一步驟中括號內(nèi)部是 Linux 操作系統(tǒng)中的 C 語言庫函數(shù)的調(diào)用,目前的后臺開發(fā)語言都支持 Socket 通信程序的開發(fā),各步驟調(diào)用的函數(shù) / 方法名均大同小異,選定開發(fā)語言后查找 API 即可完成此程序。
業(yè)務(wù)邏輯層的主要任務(wù)是對數(shù)據(jù)包解析,具體操作是在 Socket 服務(wù)端程序第 6 步后增加一個判斷,每當recv() 函數(shù)接收到的數(shù)據(jù)組成一個完整的數(shù)據(jù)包后,即調(diào)用相應(yīng)的業(yè)務(wù)邏輯處理函數(shù)來對數(shù)據(jù)進行解析。
數(shù)據(jù)訪問層的主要任務(wù)是將解析后的數(shù)據(jù)存入數(shù)據(jù)庫等 CURD 的任務(wù),后臺開發(fā)語言都有相應(yīng)成熟的與數(shù)據(jù)庫連接的庫,如 JDBC、ADO 等,調(diào)用相應(yīng)的庫函數(shù)即可與數(shù)據(jù)庫交互。
軟件的程序架構(gòu)如圖 5 所示。
3 關(guān)鍵技術(shù)難點及解決方案
兩個上層核心程序中的實時通信及數(shù)據(jù)解析程序通常是遠程監(jiān)控系統(tǒng)的性能瓶頸。隨著數(shù)據(jù)流量的增加, 信息的交互越來越頻繁,既要保證數(shù)據(jù)實時傳輸?shù)目煽啃裕忠WC數(shù)據(jù)接收和解析足夠快,以免造成數(shù)據(jù)堆積甚至程序崩潰。
3.1 保證實時傳輸?shù)目煽啃?/p>
傳統(tǒng)的小型 PLC 通訊方式為基于 RS485 的自由口通信,此種通信方式在高速大流量網(wǎng)絡(luò)中,很容易出現(xiàn)數(shù)據(jù)丟失、順序混亂等問題。鑒于 S7-200 Smart 系列 PLC 已完全支持開放式 TCP 通信,利用 Micro Step7Smart 編程軟件中的庫, 即可調(diào)用 TCP 的 Connect、Send 和 Recv 函數(shù)。因此本系統(tǒng)所有設(shè)備間的通信在傳輸層均可采用基于 TCP 面向可靠連接、按字節(jié)傳輸并帶有擁塞控制和流量控制的協(xié)議。
應(yīng)用層也需要制定自定義協(xié)議,該協(xié)議主要完成客戶端 / 本地服務(wù)器和遠程服務(wù)器之間的數(shù)據(jù)傳輸、命令應(yīng)答任務(wù)。通信協(xié)議將消息分為請求行、首部和消息體。請求行有兩部分組成:第一部分是 Command,Command 可以是命令,也可以是應(yīng)答,該字段長度為1 字節(jié);第二部分是 Version,也就是版本號,為版本升級兼容協(xié)議。使用 TotalLen 來表示消息的總長度, 可在應(yīng)用中解決數(shù)據(jù)傳輸粘包/ 拆包的問題;使用Type 來區(qū)分不同類型的立體停車庫,進而使用不同的業(yè)務(wù)邏輯來解析數(shù)據(jù);使用 EquiNum 即設(shè)備編號來區(qū)分不同設(shè)備;通過對消息的編號,可進一步排除數(shù)據(jù)混亂、丟失等錯誤。
3.2 保證實時傳輸?shù)目煽啃?/p>
提高實時通信及數(shù)據(jù)解析程序的性能主要針對以下兩點分別采取措施:
1) 實時通信。應(yīng)用層采用 socket 編程,利用Linux 內(nèi)部的 I/O 多路復(fù)用機制,調(diào)用 epoll 函數(shù)輪詢與遠程服務(wù)器相連接的客戶端,并采用非阻塞 socket,能大大提高程序的運行效率。
2) 數(shù)據(jù)的解析和存儲。若將數(shù)據(jù)通信接收與數(shù)據(jù)解析處理串行置于同一線程中,當解析處理速率無法跟上通信接收數(shù)據(jù)包的速率時,會造成數(shù)據(jù)包大量積壓最終導(dǎo)致程序崩潰。現(xiàn)代計算機發(fā)展歷程已經(jīng)由串行計算時代過渡到了并行計算時代,服務(wù)器中更是采用性能強勁的多核CPU。采用多線程技術(shù)可以大大提高實時通信及數(shù)據(jù)解析程序的性能進而解決上述問題 [7]。每組數(shù)據(jù)采用單獨的線程解析,并行計算。使用異步調(diào)用將原始數(shù)據(jù)和解析后的數(shù)據(jù)存于數(shù)據(jù)庫中。關(guān)系型數(shù)據(jù)庫具有原子性、一致性、隔離性、持久性四個特性,不需要考慮多線程同時與數(shù)據(jù)庫交互的問題。
以上兩個措施相輔相成,利用操作系統(tǒng)自帶的系統(tǒng)調(diào)用,并采用多線程編程能將計算機的性能最大程度地發(fā)揮,系統(tǒng)開發(fā)者需要結(jié)合具體任務(wù)將其分解,以開發(fā)出卓越的多線程程序。
4 結(jié)論和展望
本文建立了一整套遠程立體停車 - 庫監(jiān)控系統(tǒng), 介紹了三層架構(gòu)間以及各個模塊間相互作用的方式和方法,這是對傳統(tǒng)的立體停車庫監(jiān)控系統(tǒng)的一個較大的改進。解釋了網(wǎng)站后臺程序和實時通信與數(shù)據(jù)解析程序的主要架構(gòu),指出提高監(jiān)控系統(tǒng)性能的關(guān)鍵技術(shù)。
如果車庫的數(shù)量足夠多,數(shù)據(jù)量足夠大,則需要建立服務(wù)器集群,并用相應(yīng)的框架管理集群。還可以利用Hadoop、Spark 等大數(shù)據(jù)框架管理數(shù)據(jù),采用數(shù)據(jù)挖掘與機器學(xué)習(xí)的算法分析用戶習(xí)慣、車位的緊張程度分布等,為交通調(diào)度、城市規(guī)劃等提供寶貴的參考意見。
來源:浙江機房監(jiān)控 http://qdlanhai.cn/news/3070.html 本文采集于網(wǎng)絡(luò),如有問題有聯(lián)系刪除
北京金恒智能系統(tǒng)工程技術(shù)有限責任公司 版權(quán)所有 Copyright 2007-2020 by Create-china.com.cn Inc. All rights reserved.
法律聲明:未經(jīng)許可,任何模仿本站模板、轉(zhuǎn)載本站內(nèi)容等行為者,本站保留追究其法律責任的權(quán)利!
電話:86+10-62104277/2248/4249 傳真:86+10-62104193-819 京ICP備10010038號-2網(wǎng)站XML
智慧機房
在線體驗