0 引言
隨著我國(guó)經(jīng)濟(jì)的迅猛發(fā)展,私家車的保有量呈爆炸性增長(zhǎng),而對(duì)應(yīng)的停車位數(shù)量卻增長(zhǎng)緩慢,,其中涉及到城市規(guī)劃,、交通等諸多方面的問(wèn)題,。大力推廣和應(yīng)用立體停車庫(kù)是解決此問(wèn)題的有效途徑之一 [1],。進(jìn)入 21 世紀(jì)以來(lái),微電子技術(shù)和控制技術(shù)不斷發(fā)展,,立體停車庫(kù)的自動(dòng)化程度也越來(lái)越高,,并朝著智能化和網(wǎng)絡(luò)化的方向發(fā)展。現(xiàn)在的立體停車庫(kù)通常由專業(yè)的工業(yè)控制器如PLC 來(lái)控制 [2],。目前,,無(wú)論是立體停車庫(kù)的生產(chǎn)企業(yè)還是使用機(jī)構(gòu),使用的控制系統(tǒng)都是本地化的,,絕大多數(shù)設(shè)備的檢修和維護(hù)工作仍然依靠人工完成,,這不僅需要大量的人力物力而且長(zhǎng)時(shí)間的維護(hù)也給車庫(kù)的正常運(yùn)營(yíng)帶來(lái)負(fù)面的影響 [3,4]。構(gòu)建支持遠(yuǎn)程監(jiān)控和設(shè)備信息管理功能的立體停車庫(kù)遠(yuǎn)程監(jiān)控系統(tǒng)可有效解決此類問(wèn)題,。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ā),介紹了立體停車庫(kù)遠(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ù)的問(wèn)題,,致力于將分布在各地的立體停車庫(kù)統(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)營(yíng),,其具體功能及目標(biāo)為數(shù)據(jù)采集、數(shù)據(jù)傳輸,、數(shù)據(jù)處理,、數(shù)據(jù)存儲(chǔ)以及針對(duì)工作人員的遠(yuǎn)程服務(wù)。
其中,,經(jīng)過(guò)處理后的數(shù)據(jù)用來(lái)實(shí)現(xiàn)對(duì)設(shè)備的狀態(tài)檢測(cè)和故障診斷等,。針對(duì)工作人員的遠(yuǎn)程服務(wù)是指工作人員能夠遠(yuǎn)程訪問(wèn)監(jiān)控系統(tǒng),查看各個(gè)車庫(kù)的位置,、運(yùn)行狀態(tài),、收入情況等。
從系統(tǒng)的結(jié)構(gòu)和原理來(lái)說(shuō),,前四個(gè)功能是一體的,, 數(shù)據(jù)由 PLC 采集,傳輸?shù)奖镜胤?wù)器,,由本地服務(wù)器初步處理后上傳到監(jiān)控中心的數(shù)據(jù)庫(kù)服務(wù)器,,最后數(shù)據(jù)庫(kù)服務(wù)器上的數(shù)據(jù)解析程序?qū)?shù)據(jù)進(jìn)行分析處理并存入數(shù)據(jù)庫(kù),是針對(duì)數(shù)據(jù)的操作,,是遠(yuǎn)程監(jiān)控系統(tǒng)的基本功能,。而針對(duì)工作人員的遠(yuǎn)程服務(wù),則是在 WEB 服務(wù)器上建立一個(gè)與數(shù)據(jù)庫(kù)進(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è)備控制層的主要功能是通過(guò)安裝在設(shè)備電氣控制柜中的 PLC 來(lái)控制設(shè)備并采集設(shè)備信息,其組成如圖 2 所示,。
現(xiàn)場(chǎng)監(jiān)控層是由本地服務(wù)器對(duì)信息進(jìn)行預(yù)處理和與監(jiān)控中心建立網(wǎng)絡(luò)連接來(lái)實(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ù)庫(kù)服務(wù)器、WEB 服務(wù)器,、網(wǎng)絡(luò)設(shè)備(路由器與交換機(jī)等)組成,。遠(yuǎn)程監(jiān)控中心系統(tǒng)的主要功能如下:
1) 數(shù)據(jù)接收、處理,、存儲(chǔ)與管理
實(shí)時(shí)接收,、處理、存儲(chǔ)立體停車庫(kù)運(yùn)行狀態(tài)信息,, 實(shí)現(xiàn)數(shù)據(jù)管理功能,,同時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行良好的維護(hù)。
2) 界面顯示與狀態(tài)監(jiān)控
在車庫(kù)正常工作的情況下,,工作人員登陸系統(tǒng)后可通過(guò) GIS 系統(tǒng)點(diǎn)擊地圖上的立體停車庫(kù),,即可查看該立體停車庫(kù)的當(dāng)前狀態(tài):是否處于運(yùn)行狀態(tài),、托車架所處位置、剩余車位數(shù)等,。監(jiān)控系統(tǒng)具有故障報(bào)警功能,,如果車庫(kù)發(fā)生故障,根據(jù)設(shè)備上傳的故障編號(hào),,工作人員即可知道故障信息,,做出針對(duì)性的維護(hù)。
3) 系統(tǒng)操作
即使工作人員不在監(jiān)控中心也可以遠(yuǎn)程通過(guò) WEB 瀏覽器實(shí)時(shí)查看設(shè)備信息,,并將工作人員按照角色劃分,, 賦予不同的操作權(quán)限。數(shù)據(jù)庫(kù)服務(wù)器用于立體停車庫(kù)信息數(shù)據(jù)的存儲(chǔ),,而WEB 服務(wù)器則用于發(fā)布,、管理和維護(hù)監(jiān)控中心的網(wǎng)站后臺(tái), 監(jiān)控中心用戶可遠(yuǎn)程通過(guò)網(wǎng)絡(luò)服務(wù)器訪問(wèn)監(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ù)庫(kù)管理以及設(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ù)庫(kù)服務(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)行,,簡(jiǎn)化了系統(tǒng)的開發(fā)、維護(hù)和使用??蛻魴C(jī)上只要安裝了瀏覽器,,便能通過(guò) WEB 服務(wù)器上的后臺(tái)程序與數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交互。網(wǎng)站后臺(tái)主要用來(lá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í)框架,,旨在簡(jiǎn)化 JAVA 開發(fā),,其核心思想是通過(guò)依賴注入和面向切面編程類之間的耦合,支持集成第三方框架,,整合為一個(gè)復(fù)雜系統(tǒng),,實(shí)現(xiàn)對(duì)象生命周期的管理。
Struts 基于 MVC 模式,, 對(duì) Model,、View 和 Controller 都提供了對(duì)應(yīng)的組件。Struts 通過(guò)控制器攔截來(lái)自用戶的請(qǐng)求,,調(diào)用由用戶提供的實(shí)現(xiàn)業(yè)務(wù)邏輯的對(duì)應(yīng)的Action,,將處理結(jié)果返回給前端頁(yè)面顯示。Hibernate 則是一個(gè)數(shù)據(jù)持久層框架,,可使用配置文件或注解配置原始映射,,將接口和 Java 對(duì)象映射成數(shù)據(jù)庫(kù)中的記錄。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èn)層。
網(wǎng)絡(luò)層主要基于 Socket 編寫,,Socket 最早是 Unix 上推出的一種操作系統(tǒng)調(diào)用,, 應(yīng)用程序使用它來(lái)訪問(wèn)通信協(xié)議。Socket 的種類很多,, 如伯克利 Socket,、Windows Socket 等。Socket 通常也稱為“套接字”,,用于綁定 IP 地址和端口,,使進(jìn)程間能夠相互通信,。進(jìn)程在通信前各自建立一個(gè) Socket,完成準(zhǔn)備工作后,,通過(guò)對(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) 接受到來(lái)的連接請(qǐng)求,返回一個(gè)新的對(duì)應(yīng)的套接字 (accept()),;
5) 利用上一步返回的套接字和客戶端通信 (send()/ recv()),;
6) 關(guān)閉套接字 (closesocket())。
以上每一步驟中括號(hào)內(nèi)部是 Linux 操作系統(tǒng)中的 C 語(yǔ)言庫(kù)函數(shù)的調(diào)用,,目前的后臺(tái)開發(fā)語(yǔ)言都支持 Socket 通信程序的開發(fā),,各步驟調(diào)用的函數(shù) / 方法名均大同小異,選定開發(fā)語(yǔ)言后查找 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ù)來(lái)對(duì)數(shù)據(jù)進(jìn)行解析,。
數(shù)據(jù)訪問(wèn)層的主要任務(wù)是將解析后的數(shù)據(jù)存入數(shù)據(jù)庫(kù)等 CURD 的任務(wù),后臺(tái)開發(fā)語(yǔ)言都有相應(yīng)成熟的與數(shù)據(jù)庫(kù)連接的庫(kù),,如 JDBC,、ADO 等,調(diào)用相應(yīng)的庫(kù)函數(shù)即可與數(shù)據(jù)庫(kù)交互,。
軟件的程序架構(gòu)如圖 5 所示,。
3 關(guān)鍵技術(shù)難點(diǎn)及解決方案
兩個(gè)上層核心程序中的實(shí)時(shí)通信及數(shù)據(jù)解析程序通常是遠(yuǎn)程監(jiān)控系統(tǒng)的性能瓶頸。隨著數(shù)據(jù)流量的增加,, 信息的交互越來(lái)越頻繁,,既要保證數(shù)據(jù)實(shí)時(shí)傳輸?shù)目煽啃裕忠WC數(shù)據(jù)接收和解析足夠快,,以免造成數(shù)據(jù)堆積甚至程序崩潰,。
3.1 保證實(shí)時(shí)傳輸?shù)目煽啃?/p>
傳統(tǒng)的小型 PLC 通訊方式為基于 RS485 的自由口通信,此種通信方式在高速大流量網(wǎng)絡(luò)中,,很容易出現(xiàn)數(shù)據(jù)丟失,、順序混亂等問(wèn)題。鑒于 S7-200 Smart 系列 PLC 已完全支持開放式 TCP 通信,,利用 Micro Step7Smart 編程軟件中的庫(kù),, 即可調(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)答,,該字段長(zhǎng)度為1 字節(jié),;第二部分是 Version,也就是版本號(hào),,為版本升級(jí)兼容協(xié)議。使用 TotalLen 來(lái)表示消息的總長(zhǎng)度,, 可在應(yīng)用中解決數(shù)據(jù)傳輸粘包/ 拆包的問(wèn)題,;使用Type 來(lái)區(qū)分不同類型的立體停車庫(kù),進(jìn)而使用不同的業(yè)務(wù)邏輯來(lái)解析數(shù)據(jù),;使用 EquiNum 即設(shè)備編號(hào)來(lái)區(qū)分不同設(shè)備,;通過(guò)對(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)解析處理速率無(wú)法跟上通信接收數(shù)據(jù)包的速率時(shí),,會(huì)造成數(shù)據(jù)包大量積壓最終導(dǎo)致程序崩潰。現(xiàn)代計(jì)算機(jī)發(fā)展歷程已經(jīng)由串行計(jì)算時(shí)代過(guò)渡到了并行計(jì)算時(shí)代,,服務(wù)器中更是采用性能強(qiáng)勁的多核CPU,。采用多線程技術(shù)可以大大提高實(shí)時(shí)通信及數(shù)據(jù)解析程序的性能進(jìn)而解決上述問(wèn)題 [7]。每組數(shù)據(jù)采用單獨(dú)的線程解析,,并行計(jì)算,。使用異步調(diào)用將原始數(shù)據(jù)和解析后的數(shù)據(jù)存于數(shù)據(jù)庫(kù)中。關(guān)系型數(shù)據(jù)庫(kù)具有原子性、一致性,、隔離性,、持久性四個(gè)特性,不需要考慮多線程同時(shí)與數(shù)據(jù)庫(kù)交互的問(wèn)題,。
以上兩個(gè)措施相輔相成,,利用操作系統(tǒng)自帶的系統(tǒng)調(diào)用,并采用多線程編程能將計(jì)算機(jī)的性能最大程度地發(fā)揮,,系統(tǒng)開發(fā)者需要結(jié)合具體任務(wù)將其分解,,以開發(fā)出卓越的多線程程序。
4 結(jié)論和展望
本文建立了一整套遠(yuǎn)程立體停車 - 庫(kù)監(jiān)控系統(tǒng),, 介紹了三層架構(gòu)間以及各個(gè)模塊間相互作用的方式和方法,,這是對(duì)傳統(tǒng)的立體停車庫(kù)監(jiān)控系統(tǒng)的一個(gè)較大的改進(jìn)。解釋了網(wǎng)站后臺(tái)程序和實(shí)時(shí)通信與數(shù)據(jù)解析程序的主要架構(gòu),,指出提高監(jiān)控系統(tǒng)性能的關(guān)鍵技術(shù),。
如果車庫(kù)的數(shù)量足夠多,數(shù)據(jù)量足夠大,,則需要建立服務(wù)器集群,,并用相應(yīng)的框架管理集群。還可以利用Hadoop,、Spark 等大數(shù)據(jù)框架管理數(shù)據(jù),,采用數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)的算法分析用戶習(xí)慣、車位的緊張程度分布等,,為交通調(diào)度,、城市規(guī)劃等提供寶貴的參考意見。
來(lái)源:浙江機(jī)房監(jiān)控 http://youring.cn/news/3070.html 本文采集于網(wǎng)絡(luò),,如有問(wèn)題有聯(lián)系刪除
專線:劉剛 13911133352
E-mail:[email protected]
北京金恒智能系統(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)