劉 宇,蔡俊濤,賴順橋,肖熠琳
(1.廣州市光機(jī)電技術(shù)研究院,廣東 廣州 510663;2.廣州市智慧感知重點實驗室,廣東 廣州 510663)
城市市政建設(shè)日新月異,寬闊的街道,各種各樣的路燈給城市帶來了光明的同時也增添了城市夜間的魅力。但是由于道路、路燈眾多,傳統(tǒng)的人工管理模式已經(jīng)和快速、現(xiàn)代化的城市建設(shè)不相適應(yīng)。
目前,國內(nèi)城市路燈運(yùn)行的主要控制方式有專用控制線、帶負(fù)荷控制線、時控、光控以及模擬日照開關(guān)等。它們共同的缺點有:只有控制功能,并且是對整條線路進(jìn)行控制,不能對具體的路燈節(jié)點進(jìn)行控制;沒有精確檢測功能,道路照明管理部門無法做到隨時掌握全市路燈的運(yùn)行狀況;不具備遠(yuǎn)程故障報警功能,管理部門只有通過不斷派人派車巡回檢查或群眾報警才能知道路燈大致故障情況[1]。
LED 技術(shù)、信息通信技術(shù)和計算機(jī)信息技術(shù)的快速發(fā)展,給城市路燈照明系統(tǒng)帶來了發(fā)展的契機(jī)。城市道路照明智能管理系統(tǒng)是現(xiàn)代計算機(jī)技術(shù)運(yùn)用于城市市政建設(shè)中有效、必然的產(chǎn)物。本文利用ASP.NET MVC 4 框架和Entity Framework 以及MS SQL Server 2008 數(shù)據(jù)庫系統(tǒng),設(shè)計并開發(fā)一套實用的道路照明智能管理系統(tǒng),實現(xiàn)對城市道路路燈的計算機(jī)集中控制、檢測和管理[2]。
系統(tǒng)主要實現(xiàn)對城市道路路燈的遠(yuǎn)程控制及各參數(shù)數(shù)據(jù)的遠(yuǎn)程采集,實現(xiàn)智能照明、節(jié)能統(tǒng)計分析和智能管理。
1)智能控制功能:在瀏覽器客戶端實現(xiàn)對道路照明系統(tǒng)的統(tǒng)一控制、單燈控制、分路段控制和分時控制等功能。并且當(dāng)路燈出現(xiàn)故障時,系統(tǒng)能夠進(jìn)行及時的報警提示。
2)數(shù)據(jù)采集功能:系統(tǒng)需對路燈的實時電流、電壓、功率、功率因素、電量及開關(guān)燈狀態(tài)的采集和存儲,并在瀏覽器客戶端以曲線、柱狀圖和餅圖等方式展現(xiàn)。用戶可以通過不同路燈的曲線圖,來統(tǒng)計分析不同類型路燈的節(jié)能效果。
3)信息錄入及查詢功能:在瀏覽器客戶端對城市道路信息、道路路燈的檢測信息和路燈信息等進(jìn)行錄入編輯。道路信息主要包括道路名稱、路燈數(shù)量、燈距和道路拍攝圖等;道路路燈的檢測信息主要包括道路的平均照度、照度均勻度和平均功率等;LED 路燈信息主要包括燈具名稱、燈具型號、工作額定電壓、額定電流、額定功率、總通光量、初始光效、顯色指數(shù)和燈具實物圖等。
4)權(quán)限控制功能:針對不同的用戶,分配不同的角色,以對系統(tǒng)進(jìn)行權(quán)限控制。主要分為:系統(tǒng)管理員、道路照明管理中心管理員和道路照明管理中心操作員。
本系統(tǒng)的整體架構(gòu)設(shè)計借鑒了三層架構(gòu)設(shè)計的思想,主要分為表現(xiàn)層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層和服務(wù)層等[3]。系統(tǒng)架構(gòu)如圖1 所示。
圖1 系統(tǒng)架構(gòu)圖
1)表現(xiàn)層:負(fù)責(zé)系統(tǒng)與客戶的交互。視圖層采用微軟的新一代MVC 視圖引擎Razor,通過在控制器動作中調(diào)用View 方法來進(jìn)行渲染,是模型的可視化表示。該層將后臺的道路路燈數(shù)據(jù)等信息讀取并顯示在網(wǎng)頁上,同時接收用戶的操作請求,與業(yè)務(wù)邏輯層交互處理用戶事件,以達(dá)到控制路燈的目的[4-5]。
2)業(yè)務(wù)邏輯層:負(fù)責(zé)處理系統(tǒng)的業(yè)務(wù),連接展示層和數(shù)據(jù)訪問層。當(dāng)接受用戶請求后,對相關(guān)的業(yè)務(wù)邏輯進(jìn)行處理,根據(jù)不同的業(yè)務(wù)需求調(diào)用數(shù)據(jù)層的相應(yīng)方法,并將處理結(jié)果返回給表現(xiàn)層。比如,當(dāng)系統(tǒng)接收到用戶的開燈請求后,會調(diào)用相關(guān)的業(yè)務(wù)邏輯,調(diào)用服務(wù)層相應(yīng)的服務(wù),進(jìn)行開燈操作。
3)數(shù)據(jù)訪問層:負(fù)責(zé)處理數(shù)據(jù)和建立實體模型。采用Entity Framework 建立的實體數(shù)據(jù)模型,直接建立數(shù)據(jù)庫的數(shù)據(jù)到業(yè)務(wù)邏輯中所需要的實體對象的映射關(guān)系。
4)服務(wù)層:該層主要負(fù)責(zé)與其他系統(tǒng)進(jìn)行數(shù)據(jù)交互和業(yè)務(wù)集成。當(dāng)用戶對路燈進(jìn)行控制的時候,系統(tǒng)會調(diào)用相應(yīng)的WCF 服務(wù),發(fā)送相應(yīng)的控制指令,由WCF 服務(wù)和底層平臺進(jìn)行業(yè)務(wù)通信,并返回相應(yīng)的處理結(jié)果。
從功能模塊上劃分,該系統(tǒng)可劃分為智能控制、信息錄入、數(shù)據(jù)統(tǒng)計和系統(tǒng)管理等模塊,如圖2 所示。
圖2 系統(tǒng)功能模塊圖
1)智能控制子模塊包含路燈配置、模式配置和實時控制等功能。在路燈配置界面,用戶可以根據(jù)道路的地理位置和路燈數(shù)量,在地圖上對道路路燈進(jìn)行模擬標(biāo)注;在模式配置界面,用戶可以設(shè)置道路路燈運(yùn)行的不同模式,包括路燈開關(guān)燈時間和初始化功率等;在實時控制界面,系統(tǒng)通過讀取底層傳輸?shù)膶崟r數(shù)據(jù),動態(tài)模擬該道路路燈的實際運(yùn)行情況,包括單燈的開關(guān)燈狀態(tài)、實時電壓、實時電流和實時功率等參數(shù)。用戶還可以對道路路燈進(jìn)行實時控制,道路路燈的控制模式有手動控制和自動控制2 種。自動控制包括統(tǒng)控、分控和光控等3 種自控模式。統(tǒng)控是指對道路路燈進(jìn)行統(tǒng)一控制;分控是指分路段對路燈進(jìn)行控制;光控是指道路路燈通過檢測外界的亮度和系統(tǒng)設(shè)置的參數(shù),進(jìn)行調(diào)光控制。
2)信息錄入子模塊包含道路信息、路燈信息和檢測信息等信息管理功能。此模塊主要提供用戶對道路信息、路燈信息和檢測信息的添加和編輯功能。
3)數(shù)據(jù)統(tǒng)計模塊包含歷史數(shù)據(jù)、電量統(tǒng)計、節(jié)能統(tǒng)計、工程統(tǒng)計和故障統(tǒng)計等功能。該模塊主要是對道路路燈的各種參數(shù)進(jìn)行分析和統(tǒng)計,并以曲線和柱狀圖等方式呈現(xiàn)。
4)系統(tǒng)管理子模塊包含用戶信息管理、權(quán)限管理和日志管理等功能。系統(tǒng)用戶按角色進(jìn)行管理,包括:管理員、用戶和操作員等。管理員可以對用戶信息進(jìn)行添加和編輯。管理員擁有系統(tǒng)所有的操作權(quán)限,用戶和操作員只有部分操作權(quán)限。日志管理功能,為系統(tǒng)的運(yùn)行提供了有力保障[6]。
使用Microsoft Visio 對系統(tǒng)的數(shù)據(jù)庫邏輯模型進(jìn)行設(shè)計,其中主要的實體模型如圖3 所示。
圖3 數(shù)據(jù)庫主要模型圖
1)路燈基本信息表,用于存儲路燈的基本物理信息。
2)道路信息表,用于存儲道路的基本信息。
3)控制指令記錄表,用于存儲系統(tǒng)發(fā)送的控制指令。
4)實時狀態(tài)信息表,用于存儲道路路燈的實時信息。
5)道路檢測信息表,用于存儲道路路燈檢測數(shù)據(jù)。
6)采集信息記錄表,用于存儲道路路燈的運(yùn)行數(shù)據(jù)。
7)故障信息表,用于記錄道路路燈運(yùn)行中所發(fā)生的故障信息。
8)路段信息表,用于存儲道路基站基本信息。
本系統(tǒng)基于Entity Framework 實現(xiàn)數(shù)據(jù)訪問層,Entity Framework 可以采用Code First、Database First和Model First 這3 種方式來構(gòu)造模型層,這里采用Database First 方式[7]。首先使用SQL Server 2008 創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表,然后在Visual Studio 2012 項目中添加ADO.NET 實體數(shù)據(jù)模型,就會在數(shù)據(jù)訪問層的工程中添加一個edmx 文件,這個文件用于保存實體關(guān)系模型。當(dāng)數(shù)據(jù)庫發(fā)生改變的時候,也可以直接更新edmx 文件來更改模型屬性[8]。
為了更好地服務(wù)業(yè)務(wù)邏輯層的業(yè)務(wù)處理,在該層采用工廠模式,遵循依賴倒置原則實現(xiàn),對數(shù)據(jù)訪問層進(jìn)行進(jìn)一步的封裝,只提供數(shù)據(jù)訪問接口供外部訪問,降低了和業(yè)務(wù)邏輯層之間的耦合度。在Entity Framework 實體對象模型的基礎(chǔ)上,使用了Lambda表達(dá)式,使得代碼更加簡潔、易懂[9]。
部分代碼如下所示。
首先,定義數(shù)據(jù)層接口父類:
然后在數(shù)據(jù)層中實現(xiàn)父類接口,以新增實體代碼為例:
業(yè)務(wù)邏輯層實現(xiàn)系統(tǒng)的核心處理邏輯,封裝相關(guān)的業(yè)務(wù)實現(xiàn),與系統(tǒng)所對應(yīng)的領(lǐng)域邏輯有關(guān)。該層處于數(shù)據(jù)訪問層和表示層中間,在數(shù)據(jù)交換中起承上啟下的作用[10]。
首先,定義業(yè)務(wù)邏輯層的父接口類:
然后,再實現(xiàn)該父接口:
視圖(View)是用戶看到并與之交互的界面,本系統(tǒng)采用Razor 視圖引擎結(jié)合jQuery EasyUI 框架實現(xiàn)。Razor 是ASP.NET MVC 4 內(nèi)置的視圖引擎之一,它提供了流暢的專注于代碼的模板方案,富有表現(xiàn)力的同時,還提升了代碼的可讀性。jQuery EasyUI是一組基于jQuery 的UI 插件集合體,可以幫助Web開發(fā)者更輕松地打造出功能豐富并且美觀的UI 界面[11]。
在視圖層和控制層數(shù)據(jù)的數(shù)據(jù)交互過程中,主要采用Ajax 技術(shù)實現(xiàn)網(wǎng)頁異步更新,交換的數(shù)據(jù)格式主要采用JSON 數(shù)據(jù)格式。如下代碼通過jQuery 實現(xiàn)對路燈信息的異步請求,并返回JSON 數(shù)據(jù)格式[12]。
控制層主要負(fù)責(zé)響應(yīng)來自用戶的請求,所有和視圖相關(guān)的邏輯都是在這里進(jìn)行處理的,當(dāng)接收到視圖層的請求時,調(diào)用業(yè)務(wù)邏輯層進(jìn)行業(yè)務(wù)處理,并把結(jié)果返回給視圖層。在MVC 4 框架中,控制器都繼承自Controller 基類,一個控制器類一般包括多個Action 動作。用戶的每一個URL 請求,經(jīng)路由規(guī)則,調(diào)用相應(yīng)的Action,從Model 中取出數(shù)據(jù),并綁定到相應(yīng)的View。
如下代碼中,InfoInputController 繼承Controller基類實現(xiàn)控制器,并自定義一個RoadInfo 動作,返回給默認(rèn)的View[13]。
3.5.1 系統(tǒng)權(quán)限功能的實現(xiàn)
在本系統(tǒng)的權(quán)限功能設(shè)計中,采用角色控制的方法,擁有不同角色的用戶,有不同的權(quán)限。在控制層的Controller 和Action 中,可以結(jié)合MVC 框架提供的AuthorizeAttribute 類實現(xiàn)系統(tǒng)權(quán)限控制。當(dāng)使用AuthorizeAttribute 標(biāo)記一個Action 時,則限制只有經(jīng)過身份驗證和授權(quán)的用戶才能訪問該操作方法。如果使用該特性標(biāo)記Controller,則限制該控制器中的所有操作方法[14]。通過設(shè)置該特性,超級管理員擁有操作系統(tǒng)的一切權(quán)限,包括查閱信息、編輯信息和操控路燈等功能;路燈管理員擁有操作路燈開關(guān)和設(shè)置路燈控制模式的權(quán)限;一般用戶只能查看路燈當(dāng)前的狀態(tài),不能進(jìn)行控制操作[15]。
3.5.2 路燈智能控制的實現(xiàn)
為了更加直觀地顯示路燈實時狀態(tài),本系統(tǒng)與地理信息系統(tǒng)相結(jié)合,在獲取了道路、路燈的位置等特征信息后,設(shè)計以路燈為主體的信息地圖,在網(wǎng)頁上動態(tài)顯示道路路燈的照明效果,并可以通過平移、放大、縮小等幾何變換,觀察整個城市、街道的每一盞路燈的照明情況。路燈標(biāo)注采用不同的顏色,如路燈的開燈狀態(tài)為綠色標(biāo)注,故障狀態(tài)為紅色標(biāo)注,關(guān)燈狀態(tài)為灰色標(biāo)注。
本系統(tǒng)對路燈的智能控制主要分為無級調(diào)光控制、分路段控制、分時段控制和光控等功能[16]。
當(dāng)用戶登錄該系統(tǒng)網(wǎng)頁后,可以對不同路段的路燈選擇不同的控制模式,服務(wù)端接收到相應(yīng)的請求后,會發(fā)送相應(yīng)的控制指令給終端,并改變數(shù)據(jù)庫里面的控制模式字段值,當(dāng)模式設(shè)置成功后,終端會返回相應(yīng)的代碼,從而實現(xiàn)對路燈控制模式的設(shè)置。同時也可以對選中的路燈進(jìn)行開關(guān)操作,當(dāng)點擊路燈開關(guān)時,客戶端通過Ajax 技術(shù)向服務(wù)器發(fā)出請求,服務(wù)端接收到客戶端的請求命令后,就調(diào)用相應(yīng)的WCF服務(wù),以達(dá)到控制的目的[17]。
圖4 道路路燈模擬地圖
3.5.3 路燈故障報警的實現(xiàn)
本系統(tǒng)實現(xiàn)了對道路路燈故障的自動報警功能,主要可分為以下幾種故障信息:路燈出現(xiàn)故障,當(dāng)路燈1 損壞的時候,該路燈所在的基站會發(fā)出“編號1路燈損壞”的故障信息;基站出現(xiàn)故障,當(dāng)服務(wù)器不能接收到基站1 的信息時,自動發(fā)出“基站1 出現(xiàn)故障”信息。
當(dāng)用戶打開系統(tǒng)客戶端,后臺就會運(yùn)行一個定時程序,通過Ajax 異步查詢道路路燈的故障信息,在接收到服務(wù)器端的故障信息后,就會實時地推送給用戶,并在數(shù)據(jù)庫中保存故障信息記錄,方便維護(hù)人員查閱和處理相應(yīng)的故障信息[18]。
隨著計算機(jī)技術(shù)和通信網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,社會信息化和智能化的程度不斷提高。本文結(jié)合城市道路照明的現(xiàn)實情況,設(shè)計并實現(xiàn)了一套道路照明智能管理系統(tǒng),該系統(tǒng)具有良好的擴(kuò)展性、實用性和穩(wěn)定性,實現(xiàn)了城市道路照明智能化管理,節(jié)省了人力物力,起到了良好的城市道路照明示范作用,推動智慧城市的發(fā)展。目前,該系統(tǒng)已經(jīng)在廣州智能照明示范道路進(jìn)行試用。
[1]陳曉艷,高偉,秦歡,等.基于GPRS 與ZigBee 的LED 路燈智能監(jiān)控系統(tǒng)設(shè)計[J].電子測量技術(shù),2013,36(10):62-66.
[2]閆齊陽,彭龑.ZigBee+GPRS 的LED 路燈監(jiān)控系統(tǒng)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2012,12(12):68-70.
[3]丁勇,儲久良,張飛.基于MVC 框架的畢業(yè)設(shè)計管理系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機(jī)與現(xiàn)代化,2014(3):65-68.
[4]Lerman J.Programming Entity Framework[M].2nd Edition.O’Reilly,2012.
[5]李志,賈克斌,李真真,等.基于NET.MVC 架構(gòu)的網(wǎng)上珠寶銷售系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機(jī)應(yīng)用與軟件,2013,30(3):186-189.
[6]仰燕蘭,金曉雪,葉樺.ASP.NET Ajax 框架研究及其在Web 開發(fā)中的應(yīng)用[J].計算機(jī)應(yīng)用與軟件,2011,28(6):195-198.
[7]Freeman A.Pro ASP.NET MVC 4[M].Apress,2012.
[8]Palermo J,Bogard J,Hexter E,et al.ASP.NET MVC 4 in Action[M].北京:人民郵電出版社,2014.
[9]丁士鋒.亮劍ASP.NET 項目開發(fā)案例導(dǎo)航[M].北京:電子工業(yè)出版社,2012.
[10]苑慶濤,張新柱,馬博,等.基于ASP.NET MVC 的數(shù)字化管理平臺[J].計算機(jī)技術(shù)與發(fā)展,2013,23(12):164-167.
[11]周玲余.基于jQuery 框架的頁面前端特效的設(shè)計與實現(xiàn)[J].計算機(jī)與現(xiàn)代化,2013(1):61-63.
[12]何麗,龔?fù)?jQuery 在Ajax 技術(shù)框架中頁面加載的應(yīng)用[J].計算機(jī)時代,2011(8):25-26.
[13]林勤花.基于.NET 的MVC+LINQ 框架的應(yīng)用[J].信息技術(shù),2013(7):167-168.
[14]馬玉波,張培劍.基于物聯(lián)網(wǎng)的智能城市(照明)管理系統(tǒng)[J].信息技術(shù)與信息化,2014(1):49-52.
[15]高宏,王婷婷.基于MVC 和Entity Framework 的團(tuán)餐系統(tǒng)[J].計算機(jī)與現(xiàn)代化,2014(12):64-68.
[16]劉蘊(yùn).LED 智能照明控制系統(tǒng)的研究與設(shè)計[D].西安:陜西科技大學(xué),2013.
[17]羅樂霞.基于ASP.NET MVC 人事信息管理系統(tǒng)設(shè)計[J].電腦編程技巧與維護(hù),2012(24):52-53.
[18]張海華.基于LED 的智能照明系統(tǒng)的設(shè)計與實現(xiàn)[D].廣州:華南理工大學(xué),2013.