?

實驗水箱水位移動在線監測APP研制

2017-11-23 08:36郭一楠
電氣電子教學學報 2017年5期
關鍵詞:水箱水位終端

程 健, 郭一楠, 林 偉

(中國礦業大學 信息與控制工程學院, 江蘇 徐州 221116)

實驗水箱水位移動在線監測APP研制

程 健, 郭一楠, 林 偉

(中國礦業大學 信息與控制工程學院, 江蘇 徐州 221116)

考慮到過程控制實驗裝置和實驗時間的局限性,為提高學生的實驗參與度和操作效果,構建了基于Android的水箱水位移動在線監測APP系統。它采用客戶/服務器模式,實現水箱水位在任意移動終端的實時數據獲取及其趨勢顯示。該APP系統能夠提供多人同時訪問接口,符合實驗過程中學生和教師的多移動終端訪問和監測要求;其多線程調用方式還可以提高實驗效率,方便實驗者及時觀察實現現象,從而提升學生的實踐創新能力。

水位;在線監測; Android;移動終端

0 引言

“過程控制”是一門典型的理論與實踐緊密結合的專業方向課程,該課程要求學生掌握工業生產過程中液位、壓力、溫度量等被控量的控制方法和實現技術。在該課程教學中,能夠滿足相關過程控制理論實現方法的配套實驗設施,對于增強學生的理論掌握和創新實踐能力至關重要。目前,已采用的過程控制實驗設備主要以三階水箱為被控對象,實現單容或多容液位控制,支持PLC、單片機和計算機實施控制功能,從而支持“過程控制”課程的學生綜合實訓和“微機原理”等相關課程的創新實驗。但是,有限的實驗裝置和實驗時間迫使多名學生集合完成一次實驗過程,實驗參與度和實驗效果顯著降低,不利于學生深入觀察實驗現象,不能充分發揮實驗實踐對課堂教學的輔助推動作用。

近幾年,智能手機等移動終端已經逐漸成為人們日常學習工作中不可或缺的一部分。在眾多的智能手機操作系統中,具有免費、開放、網絡接入自由、硬件支持豐富等優點的Android操作系統,占據了智能手機操作系統市場的很大份額[1-4]。然而,智能手機目前主要用于社交平臺和各類商務娛樂活動,如果能將過程控制實驗教學環節與智能手機終端應用相結合,把實驗過程中的實驗現象和實驗結果展現和分享給每一位實驗參與者,就可以提高學生的實驗交互程度,改善現有實驗實踐的不足,彌補實驗室有限條件,為實驗研究增添便利。

我們基于智能手機的Android操作系統和已有的水箱過程控制實驗設備,研制出一款水箱水位在線監測APP。該APP具備服務器連接、數據在線傳輸、水位實時趨勢顯示、參數計算等功能,能夠滿足教學研究多方面的要求,給學生提供一個高參與度的實驗環境。此外,該系統具有友好的用戶界面,能在不同品牌的智能手機上穩定運行。學生和教師都可以通過該APP系統觀察實驗過程中水箱液位的實時變化情況,監測控制效果,提高實驗數據的共享性和實時性。

1 功能需求分析

水箱水位在線監測APP系統的核心功能是能夠實現對響應過程實時數據的監測和顯示。一方面,移動終端實時獲取和顯示監測數據;另一方面,PC端作為服務器,實現與移動終端的可靠數據鏈接。因此,該系統包含移動終端和服務器端兩大部分。

1.1移動終端功能需求

如圖1所示,參與過程控制實驗的學生和教師的移動終端應具有實時數據顯示、用戶連接登錄、實時曲線生成和其他輔助功能。

實時數據顯示采用趨勢圖形式,顯示來自服務器的水位實時數據,便于學生直觀觀察水箱水位的實時和歷史變化趨勢,監測控制效果和實驗過程。為方便多尺度觀察和查詢數據,使用者可以任意改變圖形大小、橫縱坐標顯示范圍和位置。該顯示功能還可以實時刷新數據,并保留預設時間段內的曲線,直到與服務器的連接斷開或者停止監測。

圖1 移動終端功能需求

在移動終端打開該APP系統后,需要登錄用戶信息,以獲得訪問服務器的操作權限。只有登錄成功的用戶,才能連接服務器,得到實時監測數據,從而保障實驗操作的安全性、保密性和獨立性。連接界面要求用戶輸入與所用實驗儀器相對應的數據發送服務器,確保觀測數據的正確性。

其他輔助功能包括曲線刷新復位、軟件更新和退出等。

曲線刷新復位采用兩種方式實現:其一,通過點擊“刷新”按鈕,刪除圖表中的歷史水位數據,并復位圖表配置,初始化繪圖引擎;其二,通過軟件自動刷新,在保留的歷史數據基礎上逐步刷新。

軟件更新功能可以自動推送軟件更新通知。通過下載最新APK安裝包文件,覆蓋移動終端上原有的舊版軟件。

退出功能是實現軟件自動退出,關閉所有Activity,并清除所有緩存。

1.2服務器功能需求

如圖2所示,服務器通過“實時數據獲取功能”獲得水位檢測模塊上傳的數據采集終端信息,并將水位信息傳送到服務器主機的數據庫保存。水位信息由固定的特殊區分符分隔。根據該分隔符區分和判斷正確數據。

圖2 服務器端功能需求

“實時數據發送功能”用于實現服務器與移動終端之間的實時通訊,將實時數據獲取模塊發送過來的信息流轉發到移動終端。數據發送過程中,需要監聽數據獲取模塊是否已刷新,并實時更新數據輸出流。當數據獲取模塊接收到數據為空時,數據發送模塊仍要向移動終端發送數據,默認發送數據為0。

服務器通過“移動終端連接監聽功能”監聽是否有移動終端連接了本服務器。服務器程序初始化后,連接監聽模塊立即打開,并處于監聽狀態。一旦有移動終端要求連接服務器,則啟動數據發送線程。由于連接監聽在服務器運行過程中一直打開,會造成主線程阻塞,所以需要在新線程中啟用該功能。

“其他輔助功能”包含多用戶連接和關閉功能。多用戶連接功能單獨為連接服務器的客戶端開啟一個線程,實現數據傳輸。關閉功能可以斷開其與客戶端的連接,關閉所有線程,停止數據獲取。

2 在線監測APP系統功能設計與實現

系統功能設計遵循穩定性、易用性、可擴展性,以及功能需求和運行環境。首先,通過對比目前市場上主流的Android、iOS等智能手機操作平臺,選取采用Java技術,以易于初學者上手,并以在非蘋果電腦平臺上也可以操作的Android研發該APP系統[5]。這符合學生群體使用Android手機的高占有率的需求。

2.1用戶界面的設計與實現

用戶界面由主界面、登錄界面、歡迎界面、數據接收界面,以及圖表繪制界面組成。

水箱水位在線監測APP系統的移動終端部分采用Tabhost格式實現所有界面之間的交互切換,如圖3所示。TabHost是面向用戶的接口,通過添加Tab實現界面切換。將Intent作為一個Tab。當把一個Activity作為內容嵌入View中時,Tab標簽下方的動畫圖片會自動跳到加載,從而實現切換動畫。相應的核心代碼如下:

在打開該APP系統軟件后,采用異步線程的方式顯示3秒圖4所示的歡迎界面動畫,隨后進入主界面。

圖3 界面框架 圖4歡迎界面

下列的核心代碼中的SPLASH_DISPLAY_LENGTH表示延時時間,設置為3000表示3秒延時。Handle對象用于根據匹配ID確定需要跳轉的界面。

用戶在圖5所示主界面上實現用戶登錄,以及實驗選擇的操作。在圖6所示用戶登錄界面,登錄按鈕始終處于監聽狀態。一旦動作發出,則調用相應的信息判斷程序。僅當賬戶密碼與預設匹配時,才給用戶分配操作權限。相應的核心代碼如下:

圖5主界面 圖6登錄界面

在圖7所示數據接收界面中,用戶需要輸入對應的服務器主機IP和端口號(默認設置為12345)來實現服務器連接,并在發送數據請求后,不斷刷新從服務器中接收到的信息。數據接收界面有EditText、Button和TextView三個組件。EditText用于輸入服務器主機IP地址,并通過input.getText()封裝發送給連接線程。根據主線程傳遞過來的服務器IP和端口號,調用connect構造Socket。通過調用br,獲取并封裝Socket數據輸入流。當讀取到來自服務器的數據后,線程就會通過handler.sendMessage(msg)發送消息通知,Show.append則在TextView中刷新顯示從服務器端接收到的信息[6-7]。

msg.obj=input.getText().toString();connect.revHandler.sendMessage(msg);input.setText(“”);handler=newHandler(){publicvoidhandleMessage(Messagemsg){if(msg.what==0x123){senddata=msg.obj.toString();try{addY=Integer.parseInt(senddata);catch(NumberFormatExceptione){e.printStackTrace();}show.append(“ ”+“客戶端已在“+Pic.addX+”接收數據:”+senddata);}s=newSocket();s.connect(newInetSocketAddress(“192.168.253.1”,12345),12345);br=newBufferedReader(newInputStreamReader(s.getInputStream()));os=s.getOutputStream();newThread().start;

圖7 數據接收界面

數據接收界面獲得的水位數據,采用谷歌的AchartEngine繪圖引擎,繪制生成水位實時趨勢曲線。系統時間利用語句Date().getTime()獲??;水位信息則利用Intent,從數據獲取界面傳送到曲線生成界面的縱軸數據緩存數組(int[] ycache = new int[600])中;再在循環體中將坐標變換后的一系列點重新加入到點集中;根據setPanEnabled設定的顯示范圍、橫縱坐標范圍,以及曲線大小等關鍵格式顯示實時曲線。

2.3服務器功能的設計與實現

服務器主要是從數據庫文件讀取水位數據,并向客戶端發送水位數據。

采用BufferedReader從Socket中循環讀取數據庫的數據,遍歷socketList中的每個Socket,將讀取到的內容向Socket發送一次。成功讀取數據庫文件后,服務器還需將讀取到的數據分類和發送。在數據讀取過程中,根據空格符號“ ”,將讀取到的數據分開,再逐個添加到數據傳送緩存區中。此時,服務器會輸出“服務器已發送數據+內容”進行反饋。當服務器沒有從數據庫文件讀取到數據時,系統默認向客戶端發送數據“0”。當有客戶連接到服務器時,服務器會啟用一個新getOutputStream線程,用于處理Socket所對應的輸入輸出流。

服務器與移動終端的穩定有效數據傳輸采用基于TCP鏈接的Socket建立。服務器通過ServerSocket對Socket配置端口號,隨后開始監聽。一旦接收到客戶端的connect連接請求,便開啟新線程實現握手[7]。如果創建的ServerSocket沒有指定IP地址,則綁定本機默認IP地址;端口號通常使用大于10000的非固定端口號。當服務器的ServerSocket創建成功后,系統會輸出“等待連接”。一旦接收到客戶端的連接請求,服務器就會返回對應的Socket,輸出“有客戶端連接”;若沒有監聽到客戶端連接,則會一直處于監聽等待狀態,這可能會導致進程阻塞。因此,服務器要為每個Socket單獨啟用一個線程new Thread(new serverThread(s)).start(),實現數據獲取、寫入數據輸出流和刷新頁面等功能[8-9]。

3 結語

本文針對“過程控制”課程實驗中,實驗裝置和實驗時間的局限性,構建了基于Android的水箱水位移動在線監測APP系統,用于實現水箱水位在任意移動終端的實時數據獲取及其趨勢顯示。通過分析服務器和移動終端的功能需求,詳細闡述了基于Socket通信的數據連接、監測數據獲取與傳輸和基于AChartEngine繪圖引擎的實時趨勢曲線生成方法。系統的多線程調用方式和多終端訪問接口可以提高實驗效率,方便實驗者及時觀察實現現象,提高學生的實驗參與度和實踐創新能力。

[1] 孫光宇,張玲玲.Android物聯網開發從入門到實戰.北京:清華大學出版社,2015l.

[2] 高彩麗,許黎民,袁海.Android應用開發范例精解.北京:清華大學出版社,2012.

[3] 趙旭.基于安卓的石油防盜系統數據監測APP設計.北京:通訊世界.2015,(2):55-60.

[4] 李霞.基于智能手機的血壓監測系統實現.山東:魯東大學學報,2015,31(3):221-225.

[5] 陳甫.Android Studio應用.北京:電腦知識與技術.2014,24:5659-5661.

[6] 劉爽,史國友,張遠強.基于TCP/IP協議和多線程的通信軟件的設計與實現.安徽:計算機工程與設計.2010,7:1417-1420.

[7] 欒麗麗.基于Android的視頻數據采集與處理.山東:青島科技大學.2014.

[8] 劉暢.基于Android系統的移動監測平臺的設計與實現.西安:西安石油大學.2015.

[9] 皮成.基于Android平臺的即時通信中間件的研究與實現. 西安:西安電子科技大學.2014.

TheDevelopmentofAppSysteminMobileTerminalsforLabWaterLevel′sOnlineMonitoring

CHENGJian,GUOYi-nan,LINWei

(SchoolofInformationandControlEngineering,ChinaUniversityofMining&Technology,Xuzhou221116,China)

The equipments and time in process control experiment are limit. In order to improve the experimental effect and make more students participated in the experiments, the water level′s online monitoring APP system based on Android is constructed. The real-time monitoring data of water tank are acqusited to the serve and transferred to mobile terminals so as to display their changing trends. This monitoring APP system can provide access interface to many students at the same time, which accords with the monitoring requirements from many mobile terminals in the experiments. The multi-threading process method can improve the efficiency of experiments and conveniently observe the experimental phenomenon in time, which promotes the students′ practical innovation ability.

water level; online monitoring; Android; mobile terminals

2016-10-22;

2017-01-12

中國礦業大學研究生教育教學改革研究與實踐項目(20150518083703496,YJSJG2016Y01-2)

程 健(1974-),男,博士,副教授,主要從事先進控制方法相關的科研教學工作,E-mail:chengjian@cumt.edu.cn 郭一楠(1975-),女,博士,教授,主要從事過程控制的教學科研工作。

TP29

A

1008-0686(2017)05-0066-05

猜你喜歡
水箱水位終端
X美術館首屆三年展:“終端〉_How Do We Begin?”
通信控制服務器(CCS)維護終端的設計與實現
一種太陽能熱水器水箱的控制系統
多功能北斗船載終端的開發應用
PLC組態控制在水箱控制系統的應用
基于MFAC-PID的核電站蒸汽發生器水位控制
水箱出水
ABB Elastimold 10kV電纜終端及中間接頭
基于PLC的水位控制系統的設計與研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合