光伏電站資訊管理論文

才智咖 人氣:2.41W

1光伏電站系統架構

光伏電站資訊管理論文

1.1光伏電站客戶端模組

客戶端模組主要包括集團/分公司概覽、集團/分公司電站資訊、集團/分公司效率、電站預判分析(持續零電流、直流過低、直流偏低)4個模組。其中集團/分公司概覽模組包括集團按年概覽、集團按月概覽、分公司按年概覽、分公司按月概覽、集團歷年年報表資訊、集團月報表資訊、分公司年報表資訊、分公司月報表資訊;集團/分公司電站資訊模組包括查詢集團下分公司下所有電站資訊、電站按年概覽、電站按月概覽;集團/分公司效率模組包括集團效率(按年排行)、集團效率(按月排行)、分公司效率(按年排名)、分公司效率(按月排名);電站預判分析模組包括某電站組串、匯流箱、逆變器的持續零電流查詢、直流過低查詢和直流偏低查詢,以及當天的預判分析。

1.2光伏電站客戶端系統架構

在Cocoa框架中,MVC設計模式被用到了極致,CoreData簡化了很多應用程式的Model部分的設計;ApplicationKit包含了View,Controller通用的一些類。Foundation提供了對作業系統介面,NSObject基類,指令碼支援以及其他特性的訪問。本客戶端應用在框架的基礎上也採用了MVC的開發思想。

1)模型(Model)。模型用於封裝與應用程式的業務邏輯相關的資料以及對資料的處理方法。“模型”有對資料直接訪問的權利。首先是本地資料儲存模型,包括對SQLite資料庫的查詢、更新、刪除等操作,使用NSUserdefaults和CoreData存取資料。其次是與伺服器端進行互動的網路通訊模型,它把相應的引數封裝起來發送給伺服器端,在收到伺服器端返回的資料後,將json字串解析,返回相應的物件給客戶端。

2)檢視(View)。以一定的形式向用戶呈現資料並允許使用者對資料進行操作。

3)控制器(Controller)。控制器主要負責對整個系統的流程進行排程,管理使用者介面的邏輯流程以及使用者互動如何影響資料模型。在Model和View之間加入Controller的主要目的就是消除Model和View之間的耦合性。使用者和View互動時,View會通知Controller在View中有資料發生了變化,而Controller則會將這個資料的改變反映到Model中。系統實現過程中完全遵守MVC設計模式的原則,檢視控制器ViewController、檢視View、單元格TableViewCell、資料Data拆分開,後臺資料的處理和介面的操作與顯示獨立開來,整個工程邏輯結構清晰,模組之間耦合度低,程式碼能夠充分複用,將介面更改所帶來的程式碼改動降到最低。

1.3客戶端包圖

根據客戶端架構設計和客戶端功能需求,給出客戶端包圖設計。General包中包括了集團/分公司概覽頁面、以及集團/分公司報表頁面,其中GeneralViewCon-troller類為概覽類,MoreDetailViewController類為報表詳情類;Station包中包含了集團/分公司電站資訊頁面,以及電站詳情(電站按年概覽、電站按月概覽),其中StationViewController類為電站資訊類,StationDataViewController類為電站詳情類;Efficien-cy包中包括集團/分公司效率頁面,其中Efficien-cyViewController類為效率頁面類;Predict包中包括電站預判分析頁面,其中PredictViewController類為預判頁面類,DetailViewController類為當天預判分析詳情頁面類。Tool包種包括應用的一些工具類,如,FMDB、ASI-HTTPRequest、URLHelper、PowerStationDB以及Sta-tionListDBProvider類。此外,CorePlotHeaders包為繪製圖表工具包,AKTabBarController包為選單欄工具包。

1.4客戶端工具類

URLHelper類為客戶端與伺服器端互動的介面類,呼叫該類中的方法返回伺服器端介面字串。PowerStationDB類是資料庫的單例類,應用只需要一個PowerStationDB例項。StationListDBProvider類,可以提供建立sqlite表,查詢、更新的功能。

1.5客戶端與伺服器端互動模組

客戶端通過此模組與伺服器端互動,是其他模組的底層基礎,上層模組通過此模組向伺服器做請求訊息等互動實現相應的功能。下面給出這些類的各個介面以及其對應的Servlet,IOS客戶端使用ASIHTTPRequest框架與伺服器端進行互動,ASIHTTPRequest對CFNetworkAPI進行了封裝,可以很好地應用在MacOSX系統和IOS平臺的應用程式中。首先是用requestWithURL方法獲取ASIHTTPRequest的一個例項,傳遞的引數即為伺服器端對應的介面。當需要傳遞引數時,通過sePostValue方法將引數傳遞給伺服器。然後設定代理,並指定資料請求成功時和資料請求失敗時所呼叫的'方法。最後呼叫startAsynchronous方法發起非同步請求。當客戶端收到伺服器端返回的資料時,通過SBJson庫的JSONValue方法,將JSON格式的字串轉化為需要的格式進行進一步處理。

2光伏電站客戶端系統實現

2.1客戶端資料庫相關操作實現

SQLite資料庫是一種小型的輕量級關係型資料庫,適合在移動裝置上使用,無論是Android還是IOS,都內建了SQLite資料庫。在IOS上使用SQLiteSDK方法的話比較麻煩,使用起來很不方便。所以,客戶端實現時使用第三方庫FMDB,它對SQLiteSDK中的API進行一層封裝,使用比較方便。使用FMDB時主要涉及到FMDatabase和FM-ResultSet兩個類。FMDatabase代表一個SQLite資料庫,用於執行SQL命令。FMResult則代表在FM-Database資料庫中執行查詢的結果集。此外,如果應用需要多執行緒操作資料庫,則需要使用FMDatabaseQueue來保證執行緒安全,但不能在多個執行緒中共同一個FMDatabase物件且在多個執行緒中同時使用,因為這個類本身不是執行緒安全的,這樣用會造成資料混亂等問題。使用FMDatabaseQueue時,首先用一個數據庫檔案地址初始化FMDatabaseQueue,然後將一個block傳入inDatabase方法中,那麼FMDatabase-Queue就會按序列化的佇列來執行,當多個執行緒同時呼叫其方法時,它們會按指定的順序執行。使用FMDB時首先將FMDB類庫檔案新增到工程中,並匯入sqlite支援庫libsqlite3.dylib。

1)通過單例模式構建PowerStationDB類,獲取Dociment資料夾下的資料庫檔案,沒有則建立,併為資料庫設定快取,提高查詢效率。

2)查詢資料

2.2客戶端與伺服器端互動實現

IOS客戶端使用ASIHTTPRequest實現客戶端與伺服器端的互動。首先將ASIHTTPRequest相關檔案、連結類庫新增到專案中,包括CFNetwork.framework,System-Configuration.framework,MobileCoreServices.frame-work,CoreGraphics.framework和libz.1.2.3.dylib這幾個類庫。以下是使用ASIHTTPRequest向伺服器端搜尋活動的實現。

1)首先獲得請求的伺服器端servlet介面的url,在通過url構造ASIFormDataRequest例項。通過setPostValue方法向伺服器端傳遞引數,並設定代理,最後開啟非同步請求。

2)然後實現ASIHTTPRequest的代理方法。通過ASIHTTPRequest的responseString方法獲得返回的資料,並通過JSONValue方法解析JSON字串,得到返回結果的NSMutableDictionary,最後再對結果進行相應的處理。請求失敗則呼叫requestFailed代理方法。

2.3圖表繪製

2.3.1繪製圖表框架主要涉及CPTGraphHostingView類。

2.3.2繪製畫布主要涉及CPTGraph類、CPTTheme類、CPTXY-PlotSpace類。

1)建立Graph;

2)配置畫布,設定邊框、留白、繪圖區留白;

3)設定文字樣式CPTMutableTextStyle;

4)設定標題;

5)主題CPTTheme;

6)設定繪圖空間CPTXYPlotSpace。

2.3.3繪製柱狀圖與折線圖

1)建立柱狀圖、折線圖;

2)設定圖表樣式,將圖表新增到畫布中。

2.3.4繪製座標軸

1)設定座標軸樣式;

2)獲得畫布座標軸集;

3)設定x軸樣式;

4)設定y軸樣式;

5)繪製x軸刻度值。

2.3.5繪製圖例

3結束語

隨著網際網路和智慧手機的不斷髮展,電站相關工作人員對電站資訊概覽和異常情況的分析需要實時地在智慧裝置上檢視。既實現了基於IOS平臺的電站資訊管理系統,又滿足了電站相關工作人員對電站資訊實時監控的需求,極大地提高了工作效率。