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