壩體監控系統技術說明書

目 錄 前端

第一部分 概 述... web

1、項目說明... 數據庫

1.1使用技術... 後端

1.2開發工具... 設計模式

1.3架構設計... api

1.4編碼結構... 瀏覽器

1.5核心類體結構... 安全

2、儀器數據規範... 服務器

第二部分 系統總體設計... 架構

2.1 系統模塊設計...

2.2 系統架構設計...

第三部分 系統模塊設計...

3.1用戶管理...

3.2圖表模塊...

3.3地圖設計...

3.4綜合分析...

3.5浸潤線設計...

3.6報警設計...

3.7 3D壩區...

3.8系統配置...

3.9日誌管理...

3.10天氣設計...

3.11主界面...

第四部分 關鍵技術詳解...

4.1數據庫WCF服務...

4.2推送服務...

 

 

第一部分 概 述

1、項目說明

系統是一款B/S架構的多工程瀏覽、查詢與管理系統。它容許用戶在已經接入互聯網的計算機的瀏覽器中登陸到監測服務器上,查看監測現場信息(監測區域地圖、監測點分佈列表、監測工程信息、3D效果)、監測位移變化趨勢、水位數據、雨量數據、浸潤線等等其它不一樣的監測數據圖表及變化趨勢,可設置報警閾值與報警方式等,瀏覽報警日誌與操做日誌以及生成報表等。

1.1使用技術

Silverlight 5.一、MVVM、XNA、Net4.0、C#3.0、WCF

1.2開發工具

VS20十、Blend5 / 四、SketchUp、FireWorks

1.3架構設計

clip_image002[8]

1-1 架構圖

系統採用典型的MVVM設計模式來進行,將前端顯示與後端邏輯分離。前端的使用XAML標記語言進行並利用Microsoft Expression Blend進行設計,即分層模型中的視圖層,後端邏輯則混合了模型層、視圖模型層、WCF數據服務層。視圖層和視圖模型層則經過數據綁定的方式徹底將二者聯繫了起來。

1.4編碼結構

clip_image004[9]

1-2 系統項目設計

表:項目設計

項目名稱

描述

MTSys

Silverlight主程序

SLVisifireCharts

基於Visifire Chart開發的圖表控件

MTSys.Common.SL

Silverlight項目調用的公用類庫

MTSys.Tools

Silverlight的自定義控件(重用性較高的控件)

Silverlight3dAppContent

3D項目

MTSys.Web

Web站點,包含WCF和手機端

MTSys.Web.Log

日誌

MTSys.Common

Wap+Web項目訪問的公用類庫

1.5核心類體結構

clip_image006[6]

1-3 類體結構圖

2、儀器數據規範

儀器類型

數據類型

單位

備註

GPS

X方向偏移值

MM

 

Y方向偏移值

MM

 

垂直方向偏移值

MM

 

水平方向偏移值 及 角度

MM

由x和y計算得來

浸潤線

降深

M

孔口高程減去水位值

庫水位與幹灘

庫水位

M

 

幹灘

M

 

內部位移

X方向偏移值

MM

0.02-0.05

Y方向偏移值

MM

 

降雨量

雨量

MM

累加值

滲流量

流量

M3/S

 

流速

M3/S

 

裂縫計

裂縫程度

M

 

第二部分 系統總體設計

2.1 系統模塊設計

clip_image008[7]

2-1 系統功能設計

2.2 系統架構設計

系統採用典型的MVVM設計模式來進行,將前端顯示與後端邏輯分離。前端的使用XAML標記語言進行並利用Microsoft Expression Blend進行設計,即分層模型中的視圖層,後端邏輯則混合了模型層、視圖模型層、WCF數據服務層。視圖層和視圖模型層則經過數據綁定的方式徹底將二者聯繫了起來。

系統層

功能項

描述

備註

數據模型層

屬性定義

提供與數據綁定相關的屬性的定義及通知機制、錯誤機制、顯示控制相關的實現

以特性的方式提供相應的機制

通知機制

提供屬性改變時的通知機制,能夠在屬性改變時添加其餘的輔助操做

實現INotifyPropertyChanged接口

WCF數據服務層

推送服務

提供以數據爲中心的服務實現,在服務數據改變時主動將數據推送到相應的客戶端

實時數據得提供實現了這種方式

經典服務

提供典型的從數據庫中提取數據的方式

經典的SOA服務

視圖模型層

對象實例化

將多個模型以視圖需求爲依據而進行數據的組織以提供子對象的實例化

 

命令驅動

提供與UI交互的子系統,並經過驅動與數據服務層進行通信

調用WCF服務

視圖模型層

數據綁定

提供各類視圖模型層的對象與UI控件的數據服務的綁定

 

狀態控制

提供輔助的方式實現對UI邏輯的動畫效果的控制

提供動畫的控制

Ø 模型層的設計:

以數據爲中心是模型層設計的基本原則,在模型層徹底使用了面向對象的概念,對每一個對象使用獨立的數據屬性來描述,即對對象特徵的現實描述,同時儘可能避免方法的使用,這些模型層分立於各個功能模塊的而有所不一樣,在系統中的模型層包括如下幾個大的模型:

模塊名

主要功能描述

備註

報警

提供與報警信息相關的模型設計,包括聯繫人信息、報警分類、報警信息等模型

 

綜合分析

包括儀表盤信息、報警值信息等模型

 

系統設置

包括站點信息、地圖配置、基本設置等模型

 

獨立存儲

包括與座標軸設置、相關的讀取及寫入操做等模型

 

3D模型

包括攝像機信息、設備信息、壩體信息等模型

 

用戶管理

包括用戶、角色、權限、註冊等模型

 

設備類型

包括站點數據、數據類型等模型

每種類型站點均提供相應的數據模型[目前設計到]7種類型的站點

其餘模型

包括座標軸、時間軸、工程信息、登錄信息、動態菜單、統計數據等模型

 

Ø 視圖模型層

該層經過將模型層定義的模型與WCF服務層進行聯繫而向視圖層提供數據服務,該層主要的功能是準備視圖層所須要的各類呈現數據,提供一種相對耦合性較強的設計來提供各類服務。

模塊名

主要功能描述

備註

報警

提供報警設置頁面數據、報警聯繫等功能

 

綜合分析

提供儀表盤呈現的數據服務及儀器列表數據等功能

 

系統設置

提供站點設置、地圖設置、顯示設置等功能相關的數據服務

 

日誌管理

提供日誌瀏覽、修改日誌等功能

 

3D模型

提供與模型相關的數據服務,如模型對象、壩體對象及鍵盤和鼠標事件等的處理

目前僅提供固定模型的顯示

用戶管理

包括分配工程與用戶和角色的關聯及用戶註冊等功能

 

主頁面管理

提供初始化的頁面數據、菜單數據及主框架頁面的數據

 

基站點數據

提供全部站點相關的數據準備及相應的基本操做、也包括提供座標軸設置等應用

是全部站點視圖模型的基類,以泛型的方式實現以提供給實體站點繼承

子站點

包括與本站點類型緊密耦合的數據服務,主要是如何提供相應的WCF服務來取得數據

 

第三部分 系統模塊設計

3.1用戶管理

用戶管理須要存儲一些關鍵的信息,這些信息存儲在相應的數據庫表中,這些表包括用戶表、權限表、角色表、工程信息表以及對應的關聯表。具體的表結構設計如圖3-1所示。其E-R圖如3-2所示,在每一個實體集都加入一個關係表負責聯繫實體。

clip_image010[6]

3-1 用戶管理數據庫表結構

clip_image012[6]

3-2 用戶管理實體-關係圖

3.1:權限表數據表

標識

名稱

說明

1

mapSet

地圖設置

2

report

報表操做

3

security

安全管理

4

alarm

報警設置

5

journal

日誌管理

6

other

其餘設置

7

super

超級權限

3.2 角色表數據

標識

名稱

說明

1

administrator

超級用戶

2

manager

管理員

3

guest

普通用戶

目前大體的角色分配以下所示:

clip_image014[6]

3-3 角色-權限分配

3.1.1 系統登錄流程設計

用戶登陸的主要思想是保證某個時刻只有一個活動用戶,若是有相同的用戶登陸時系統會將另外一個同名用戶踢出系統,繼而新的用戶將能夠繼續使用系統。其整個流程如圖所示:

clip_image016[6] 3-4 系統登陸流程

3.1.2 安全管理模塊

clip_image018[6]

3-5 安全管理模塊

安全管理模塊是系統正常運行的關鍵,同時也能夠對系統的訪問進行控制,防止非法用戶對整個系統進行不合理的更改和操做。整個系統的安全管理主要包括三個方面的模塊:用戶登錄、用戶管理、認證管理。這個三個模塊分別在系統初始化、運行中進行處理。

3.1.3. 安全配置模塊

安全配置包括項目管理和安全管理兩部分,其中項目管理負責對項目相關的用戶、角色、工程進行關聯的配置和訪問控制,而安全管理則是配置角色及相應的權限。

表:項目管理

功能項名稱

主要功能描述

備註

新建用戶

添加一個新的用戶並關聯工程和角色

初始化一個管理項

刪除用戶

刪除用戶及所管理的全部的工程

 

更改密碼

能夠修改舊的密碼

影響全部的工程

添加關聯

配置用戶與其餘的工程的關聯及角色設置

 

刪除關聯

刪除當前的一個關聯

 

表:安全關聯

功能項名稱

主要功能描述

備註

新建角色

添加一個新的角色

 

刪除角色

刪除系統中存在的某個角色

刪除角色會刪除全部的該角色相關的項目關聯表

分配權限

對某個角色的權限進行關聯和刪除關聯操做

 
3.1.4認證管理模塊

認證管理負責系統中各功能模塊的權限認證管理,對於頁面的某個模塊的所須要的特殊權限進行管理,當某個模塊須要特定的權限時,能夠經過認證管理進行權限的匹配而決定是否有相應的操做權限,其流程如圖所示:

clip_image020[6] 3-6 認證模型

表:認證功能描述

功能項名稱

主要功能描述

備註

認證上下文

負責保存當前登陸用戶的角色權限

會將數據庫中的權限列表轉換成系統中的字節列表

權限驗證

對系統中須要的某個特定的權限進行驗證並返回驗證的結果

 

3.2圖表模塊

圖表的使用了開源項目:VisifireChart,因爲項目在2010年進入商業化版本。因此本項目使用了最新一個開源版本,並在此基礎上進行二次開發。此開源版本有許多不成熟的地方,爲了適應本項目的須要,對許多的地方作了一系列的改進,具體體如今如下幾個方面:

一、增長了時間軸的設置,改進後的座標軸可使用時間的自定義實現;

二、改進選中點的提示顯示類別,提示點能夠顯示例外數據;

三、對多數據列的顯示進行的控制,能夠顯示進行數據列圖的顯示控制;

四、可控制的座標軸設置,動態設置座標軸的範圍並持久化;

五、座標軸的報警範圍動態改變,在圖表顯示階段性的報警級別;

六、對斷點數據的可視化支持;

七、多個數據列的提示的集中化;

八、雙縱座標軸的支持。

對每類儀器提供該類型下的圖表的實現,目前系統實現了七種類型的實現,這些類型均經過改進的VisifireChart控件實現。下圖是給出了圖表功能分配:

模塊名

主要功能模塊

備註

GPS位移

實時曲線、歷史曲線、位移趨勢、星空圖、數據表

 

內部位移

實時曲線、歷史曲線、數據表

 

浸潤線

實時曲線、歷史曲線、剖面圖、數據表

 

降雨量

實時曲線、歷史曲線、數據表

 

裂縫計

實時曲線、歷史曲線、數據表

 

庫水位和幹灘

實時曲線、歷史曲線、數據表

 

滲流量

實時曲線、歷史曲線、數據表

 

l 實時圖表

經過兩種方式來實現實時數據的獲取,一種是經過推送服務實時從後端軟件取得設備發送的數據,第二種方式則是經過定時器定時從數據庫中獲取實時的數據,須要經過定時器的時間間隔來保證明時性。在獲取到新的數據後將同時顯示在實時圖表上。系統同時提供對該類型站點的變幻功能,能夠更改顯示的站點從而提供多個站點的實時數據的監測。

l 歷史圖表

歷史圖表提供一樣也提供多個站點的數據查看功能,這兒主要提供三個功能的的實現:一是按時間類型進行數據的統計[包括小時、天、月、年]的查詢以及全部數據的查詢,另外一種方式提供統計數據的查詢,在查詢數據是同時提供該查詢下的最大值、最小值和平均值的呈現;第三個功能則是提供數據的報表功能,包括數據列表和處處數據圖表功能。

l 位移趨勢

經過對錶面位移的計算獲得相應的位移及高程值的變化狀況,其相應的位移計算公式使用了典型的距離公式,即:

clip_image022[6]

對每一個點的位移的方向也以儀表盤方式提供給用戶,這些是經過當前選中的點的座標與第一個點的座標的比較角度來獲得相應的角度值並在儀表盤上以指針的方式顯示給用戶。

l 星空圖

星空僅僅提供定時器的方式從數據庫中獲取當前可視衛星的數據狀態的方式來提供諸如L一、L2信噪比並經過顏色的區分來標示衛星當前的運行狀態,提供給客戶對當前座標的是否可信賴的說明,同時提供柱狀圖的方式來提供給客戶一個數值上的直觀顯示。

3.3地圖設計

clip_image024[6]圖3-7 地圖組成

表:命名空間:MTSys.Tools.Map

文件

做用

備註

MapDropList.cs

按鈕列表控件

 

MapMain.xaml(.cs)

地圖主控件

 

MapMark.xaml(.cs)

錨點

 

MapTools.xaml(.cs)

地圖工具欄

 

MarkClickEventArgs.cs

錨點點擊事件的數據

 

MoveButtonClickEventArgs.cs

平移事件的數據

 

RightMenuForMap.cs

地圖上的右鍵菜單

 

ZoomChangedEventArgs.cs

縮放事件的數據

 

3.4綜合分析

l 數據列表

針對專業用戶開發的功能,目的是用戶打開時能夠一眼看到全部儀器的運行情況,包括實時的數據及報警狀況。

l 綜合圖表

設計採用了自定義的控件來實現,整個界面對每一類設備動態生成一個相應的儀表盤,每一個儀表盤根據類型設備的份量數設置相應的控件數目。其中每一個份量的儀表盤根據相應的類別取得當前時刻的最大值並將相應的報警級別標示在刻度盤上,並根據報警級別設置變化的顏色,能夠直觀地看到該類設備是否異常。也能夠經過儀表盤導航到相應的曲線圖看到該站點的詳細的數據呈現。其流程以下:

clip_image026[6]圖3-8 儀表盤實現原理圖

3.5浸潤線設計

clip_image028[6]

圖3-9 浸潤線剖面設計

浸潤線剖面經過將壩體的橫斷面做爲一個平面來顯示相應的滲壓計的工做狀態,這個功能主要體如今浸潤線的繪製上,經過將儀器及水位高程經過圖示的方式直觀地呈現給用戶,能夠明顯看到目前壩體的工做狀態。在這兒壩體及設備須要經過後端軟件將相應的信息配置在文件中。其相應流程如圖所示:

clip_image030[6]圖3-10 浸潤線流程圖

3.6報警設計

Ø 流程

clip_image032[6]

圖3-11 報警流程圖

Ø 報警值獲取與設置

clip_image034[6]

圖3-12 設置報警值流程圖

3.7 3D壩區

clip_image036[6]

圖3-13 3D實際效果

使用3d建模工具(目前使用Sketchup)製做3D模型,導出爲fbx格式,嵌入到解決方案中。

經過使用Silverlight5固有的3D模型框架來進行相應的3D模型的呈現,使用XNA遊戲開發的類庫進行3D模型的呈現和控制,其中3D模型則使用了第三方的軟件來進行相應模型的建模,經過Silverlight5 3D模板將模型導入到內容庫中,而後經過DrawingSurface進行模型的繪圖和2D控制。

因爲XNA的繪圖操做與傳統的繪圖操做有較大的區別,他採用幀繪製,因此在繪圖操做中須要在實時進行實時性的控制,在繪圖方法中須要以幀方式進行思考,在本系統設計中考慮到了這個方面的需求,在進行模型的控制時並無採用對攝像機旋轉或平移的方式,而是使用了對3D模型依賴的繪圖面[2D]面進行平移及縮放的功能等,提升了控制的效率。

目前提供的3D模型的操做包括鍵盤的平移,鼠標的縮放等功能。

clip_image038[6]

3.8系統配置

發佈系統中的配置功能與後端桌面軟件不一樣,和發佈系統的定位同樣,都是針對普通的用戶,主要用戶可能配置較多、和發佈系統耦合性較高的功能。現有的配置項有:地圖配置、壩區信息配置、顯示設置。

l 地圖配置

在MTSys.Tools.Map.MapMain中把屬性IsAdmin=true,便可啓用地圖控件的配置功能,包括上傳底圖、設置比例尺、移動儀器在地圖上的位置、以及保存功能。

l 壩區信息配置

可配置三項:壩區名稱、壩區所在區域、壩區簡介。

壩區名稱顯示在主界面的左上角;壩區所在區域用於主界面右上角天氣顯示的依據,因使用的國內有限制的api,全部常常會獲取不到或獲取信息不完整的問題,系統已給出相應提示。(流程詳見 3.10 天氣設計)

l 顯示設置

可設置默認的首頁及語言。

3.9日誌管理

clip_image040[6]

3-14 日誌數據獲取流程圖

l 系統日誌

用戶管理、登錄/登出、系統配置都會調用到wcf把記錄寫入到數據庫中。

l 報警日誌

後端軟件報警的時候會向數據庫中添加記錄,因數據量可能較大,會有10秒的延遲寫入時間。

3.10天氣設計

clip_image042[6]

圖3-15 天氣信息獲取流程圖

備註:天氣的web服務api詳見官方的《天氣預報WEB服務接口說明》

3.11主界面

Ø 導航

clip_image044[6]

Ø 保存提示

clip_image046[6]

圖3-16 保存提示流程圖


第四部分 關鍵技術詳解

系統提供兩個分立的WCF服務,一個是提供數據庫服務的WCF服務[DBMangerServer];另外一個是提供實時數據的推送數據WCF服務[PollingServer]。

4.1數據庫WCF服務

該服務除了提供向數據庫取得相應數據的服務以外,還提供了諸如文件操做的服務[主要表如今報表服務、浸潤線壩體數據服務等]。對每一類站點均提供相應的操做。這些操做主要包括:

模塊名

主要功能描述

備註

獲取實時數據

提供從數據庫過濾表中提取數據的功能,每類儀器一個方法

 

獲取歷史數據

提供從數據庫過濾表中的以時間類型的功能

 

文件服務

提供文件的存取和寫入的功能

 

clip_image048[6]

圖 4-1 數據庫WCF服務

4.2推送服務

該服務主要提供三個方面的內容:登錄服務(只容許一個用戶在線,經過該服務將已在線的同名用戶下線);報警服務(將後端的獲得的報警信息推進到客戶端);數據服務(將從設備接收到的數據從後端推送到前端並呈現給用戶)。

clip_image050[6]

圖4-2 推送服務流程圖

推送服務採用典型的長鏈接機制來實現,經過WCF雙通道服務來達到與兩種不一樣客戶端的鏈接,這兩種客戶端包括網頁客戶端和傳統的Winform客戶端,網頁客戶端使用Silverlight的DuplexPollingService服務實現長鏈接服務,而客戶端則經過雙通道與推送服務鏈接。他們使用了同一個推送的服務端。爲了存儲客戶端的鏈接信息,不能使用傳統的WCF機制。鑑於推送服務的特殊性要求,在實現時使用了WCF的單實例對象來提供這樣的服務。其傳輸示意如圖所示:

clip_image052[6]

圖4-3 推送服務傳輸過程

推送服務的傳輸過程解析:

1) 客戶端經過網頁登錄系統;

2) 推送服務保存客戶端的會話鏈接列表,這樣就接能夠取得一個全局的接收(如報警信息、客戶登錄信息等);

3) 網頁客戶端註冊相應類型設備的數據接收事件,而後等待相應類型數據的接收處理;

4) 數據發送客戶端一樣在儀器設備數據到達時根據類型生成相應的數據類型[包括報警等]並組織相應的數據發送到推送服務;

5) 推送服務根據客戶端的註冊分別將相應的數據類型有選擇的發送到網頁客戶端,若是是報警和登陸信息則會發送到全部鏈接的客戶端。

6) 重複此過程進行數據的傳輸。

相關文章
相關標籤/搜索