王志文, 錢松榮
(復(fù)旦大學(xué) 信息科學(xué)與工程學(xué)院, 上海 200433)
在我國現(xiàn)代化建設(shè)的過程中,基礎(chǔ)建設(shè)是很關(guān)鍵的一個部分。在基礎(chǔ)建設(shè)中,無論是高鐵、橋梁還是高架等大型建筑,都需要用到預(yù)應(yīng)力預(yù)制構(gòu)件。作為可以防止混凝土過早開裂的一項有效技術(shù),雖然預(yù)應(yīng)力構(gòu)件早已在各類大型建筑中被廣泛使用,但是預(yù)應(yīng)力構(gòu)件內(nèi)部應(yīng)力會隨著時間增加而減小,這種被稱為應(yīng)力松弛[1]的現(xiàn)象迄今為止還沒有一個很好的系統(tǒng)或軟件可以做到長期有效監(jiān)控預(yù)應(yīng)力的大小。文章[2]提供了一種很好的思路:在預(yù)制構(gòu)件制作時加入一個無線無源傳感器,這樣就可以實現(xiàn)長期采集預(yù)應(yīng)力數(shù)據(jù)。本文在這基礎(chǔ)上設(shè)計了一套預(yù)應(yīng)力采集管理系統(tǒng)。
考慮到實際的運(yùn)用場景:數(shù)據(jù)采集是需要在橋梁、高架等構(gòu)件部署現(xiàn)場完成的,重點為軟件的簡易性、硬件便攜性;而傳感器的出場設(shè)置、傳感器管理、員工管理、以及預(yù)應(yīng)力數(shù)據(jù)管理等可以在瀏覽器端完成。所以我們把整個采集管理系統(tǒng)分成3部分,如圖1所示。
圖1 系統(tǒng)整體架構(gòu)圖
因為預(yù)應(yīng)力數(shù)據(jù)是需要去實地采集的,為方便施工人員攜帶、操作,我們選用Surface Pro作為智能便攜終端,而WPF(Windows Presentation Foundation)作為微軟開發(fā)的運(yùn)行于.NET Framework之上的語言[3],所設(shè)計的桌面程序在Windows系統(tǒng)的電腦上有很好的兼容性。
網(wǎng)頁前端需要實現(xiàn)除了采集數(shù)據(jù)之外的所有功能,我們不僅可以用它在進(jìn)行傳感器、預(yù)應(yīng)力的管理,更可以將它拓展為一個企業(yè)管理軟件。我們采用現(xiàn)在十分流行的Bootstrap框架。
服務(wù)器端我們采用Tomcat作為Web應(yīng)用服務(wù)器,它輕量級、開源以及對Servlet/JSP良好的支持使得它在一些中小型系統(tǒng)中非常受歡迎[4]。 服務(wù)端的框架使用的是SpringMVC。
App端是使用WPF實現(xiàn)的。WPF是微軟新一代的圖形桌面API,它具有豐富的UI控件,為用戶界面、2D/3D圖形、文檔和媒體、動畫的開發(fā)帶來了極大的便利[5]。
2.1.1 功能分析
如圖2所示。
圖2 系統(tǒng)的功能模塊圖
App端要實現(xiàn)的功能有用戶(員工)的登陸,預(yù)應(yīng)力采集(包括校驗和入庫)以及傳感器和預(yù)應(yīng)力信息的查詢與展示。
App一共涉及到4個頁面:登陸界面、首頁、預(yù)應(yīng)力采集界面、預(yù)應(yīng)力展示界面。
其中首頁分為地址模塊、天氣模塊和信息模塊三個主要部分。地址模塊會根據(jù)用戶上網(wǎng)的IP地址大概得出用戶當(dāng)前所在的位置;天氣模塊是去中國天氣網(wǎng)的公開API上獲取當(dāng)前所在地的一周天氣信息并顯示。因為我們采集預(yù)應(yīng)力是必須是室外,天氣因素對于室外作業(yè)影響還是很大的。信息模塊是通過公司服務(wù)器的接口獲取公司的通知、公告等信息并在界面輪播。
預(yù)應(yīng)力采集頁面是App端最核心的部分,如圖3所示。
它的左邊實現(xiàn)了類似串口助手的模塊,用于讀取讀卡器獲得的預(yù)應(yīng)力數(shù)據(jù)。右邊是分析存儲模塊,點擊分析數(shù)據(jù)就可以從數(shù)據(jù)庫獲取該ID的傳感器的基本信息并根據(jù)模型計算預(yù)應(yīng)力大小。點擊保存數(shù)據(jù)就可以將最新的預(yù)應(yīng)力數(shù)據(jù)可狀態(tài)保存至數(shù)據(jù)庫。
預(yù)應(yīng)力展示界面提供了根據(jù)傳感器ID或者預(yù)制構(gòu)件查詢預(yù)應(yīng)力趨勢走向圖的功能。并根據(jù)回歸分析預(yù)測可能偏離的正常值范圍的傳感器以及時間,做到提前預(yù)警。
另外,由于App端是在室外通過無線網(wǎng)絡(luò)或者3G/4G網(wǎng)絡(luò)上網(wǎng)的,所以涉及到用戶賬號密碼以及其他一些敏感數(shù)據(jù)請求和傳輸需要加密。登陸流程如圖4所示。
圖3 預(yù)應(yīng)力檢測界面
服務(wù)器隨機(jī)產(chǎn)生RSA密鑰對,登陸時App先從服務(wù)器獲取公鑰,然后將數(shù)據(jù)進(jìn)行加密發(fā)送,服務(wù)器將加密的數(shù)據(jù)進(jìn)行解密,然后再判斷密碼是否正確并返回結(jié)果。
2.1.2 插件與接口分析
天氣模塊使用的是中國天氣網(wǎng)提供的免費接口。訪問該API將返回Json格式的一周的天氣信息。
定位服務(wù)使用百度地圖開放平臺,百度地圖開發(fā)者平臺是國內(nèi)最全面的地圖開發(fā)平臺之一,具有IP地位、精確坐標(biāo)拾取、生成嵌入式小地圖等常用的開發(fā)功能。對于室外傳感器的定位、建筑定位有很好的幫助
預(yù)應(yīng)力數(shù)據(jù)進(jìn)行展示我們使用Visifire控件進(jìn)行繪圖。Visifire是專為WPF、SliverLight開發(fā)人員定制的一套圖標(biāo)控件,可以實現(xiàn)柱狀圖、點狀圖、雷達(dá)圖、餅狀圖、直方圖、K線圖等多種專業(yè)圖的繪制。
Bootstrap是現(xiàn)在非常流行的響應(yīng)式的前端框架。所謂響應(yīng)式就是指它會根據(jù)用戶行為以及所采用的硬件環(huán)境、分辨率自動調(diào)節(jié)頁面布局。所以不論是PC還是Pad,都可以有很好的前端展示。
2.2.1 功能分析
Web端是這個系統(tǒng)最核心的部分,需要實現(xiàn)除了信息采集以外所有的功能,如圖5所示。
圖4 登陸流程圖
如圖5中網(wǎng)頁采用Bootstrap左邊導(dǎo)航右邊顯示的經(jīng)典風(fēng)格,導(dǎo)航欄分為首頁、郵箱、個人管理、組織管理、傳感器管理、預(yù)應(yīng)力管理6個基本功能。
2.2.2 插件和接口分析
包括員工管理和傳感器管理在內(nèi)的系統(tǒng)中所有的列表我們都采用JQuery的DataTable表格插件,這是一個十分強(qiáng)大又簡單易用的插件。它具有自動分頁、即時數(shù)據(jù)過濾、數(shù)據(jù)排序以及數(shù)據(jù)類型自動檢測、自動處理列寬度、動態(tài)創(chuàng)建表格、可擴(kuò)展等諸多優(yōu)點。
網(wǎng)站中繪制各類圖表使用JQuery的Flot的插件,F(xiàn)lot是基于canvas進(jìn)行圖表的繪制,可以在IE6+/Firefox2+/Safari3+/Opera9.5+/Chrome等主流瀏覽器上運(yùn)行。如圖6所示。
圖5 Web首頁
圖6 預(yù)應(yīng)力查詢、展示頁面
SpringMVC是在Spring框架的基礎(chǔ)上實現(xiàn)了MVC(Model-View-Controller)設(shè)計模式,這樣的架構(gòu)可以幫助開發(fā)人員搭建結(jié)構(gòu)清晰、可復(fù)用性好、維護(hù)方便的Web應(yīng)用[6]。
服務(wù)器的總體工作流程是:當(dāng)接受到一個來自App端或者Web端的請求時,根據(jù)不同請求調(diào)用controller相應(yīng)的方法,然后在Service層完成業(yè)務(wù)邏輯處理,如果需要與數(shù)據(jù)庫交互則通過DAO層進(jìn)行增刪查改。最后如果以JSP頁面或者Json字符串的形式將最終結(jié)果返回給用戶。
2.3.1 模型(Model)
Model層由POJO類組成,我們這個系統(tǒng)最重要的兩個對象分別是員工User和傳感器Sensor。
Public class UserPO{
private Integer employee_id;
private String employee_name;
private String employee_pwd;
private String gender;
private String phone;
private String birthday;
private String department;
private String email;
private String address;
private String lever;
//相應(yīng)的getter、setter方法
}
Public class SensorPO{
private String sensor_id;
private String conver_radio;
private String railway_name;
private String sensor_location;
private String sensor_state;
private String stress_state;
private String stress_init;
private String stress_recent;
private Integer sensor_SN;
//相應(yīng)的getter、setter方法
}
這里的私有變量分別對應(yīng)數(shù)據(jù)庫相應(yīng)的字段。
2.3.2 視圖(View)
View負(fù)責(zé)渲染模型數(shù)據(jù)。將最后的JSP或者HTML在瀏覽器端呈現(xiàn)出來就是View層要做的事。為了簡化開發(fā),減少不必要的代碼重復(fù),我們一般在配置文件中加入以下代碼:
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
這樣,在我們controller層有如下代碼時:
public String mainPage(){
return "mainPage";
}
Web容器回去自動尋找 "/WEB-INF/jsp/mainPage.jsp"文件并返回。
2.3.3 控制器(controller)
控制器負(fù)責(zé)從視圖讀取數(shù)據(jù),控制用戶輸入,并向模型發(fā)送數(shù)據(jù)。
只要在配置文件中加入
通過如下方式定義對攔截下的不同的URL,分別調(diào)用不同的函數(shù)并返回響應(yīng)結(jié)果。
@RequestMapping(value="/getInfo")
Public String yourMethod (Model model, HttpServletRequest request){
//…
return "userInfo";
}
在工業(yè)4.0和物聯(lián)網(wǎng)的概念逐漸成熟技術(shù)逐漸完善的基礎(chǔ)上,本文設(shè)計了一套大型預(yù)制構(gòu)件預(yù)應(yīng)力采集管理系統(tǒng),用來對正在服役的大型預(yù)制構(gòu)件進(jìn)行長期有效的監(jiān)控,并且提前預(yù)測報警,有效防止各類重要基礎(chǔ)構(gòu)件的開裂或者出現(xiàn)其它安全事故。迄今為止尚沒有在預(yù)制構(gòu)件鋼絞線中安裝傳感器并可以進(jìn)行長期監(jiān)控管理的系統(tǒng)。本文是對物聯(lián)網(wǎng)和互聯(lián)網(wǎng)技術(shù)融合的一個很好的嘗試,在物聯(lián)網(wǎng)快速發(fā)展以及我國基礎(chǔ)建設(shè)積極走出國外的今天又很廣闊的前景。