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