高德欣,劉 芳,張如耀
(青島科技大學(xué) 自動化與電子工程學(xué)院,青島 266042)
輪胎模具對輪胎外觀質(zhì)量有著舉足輕重的作用,溫度和濕度是在輪胎模具存儲過程中影響其品質(zhì)的2個重要外因,青島地區(qū)夏季氣候比較潮濕,輪胎模具容易受潮生銹,所以需要對存放輪胎模具的倉庫進(jìn)行溫濕度監(jiān)控,以確保模具的正常存放。
本文針對這一情況,設(shè)計(jì)了基于Android的倉庫溫濕度無線監(jiān)控系統(tǒng),該系統(tǒng)結(jié)合了傳統(tǒng)工業(yè)的控制、移動互聯(lián)網(wǎng)技術(shù)、Android應(yīng)用軟件開發(fā)等技術(shù),實(shí)現(xiàn)了溫濕度的現(xiàn)場監(jiān)控和遠(yuǎn)程無線監(jiān)控。該系統(tǒng)上位機(jī)采用串口,使用RS232-485模塊,通過Modbus協(xié)議采集現(xiàn)場的溫濕度傳感器的數(shù)據(jù);在遠(yuǎn)程無線監(jiān)控中,通過架設(shè)移動終端服務(wù)器,使用Socket通訊協(xié)議實(shí)現(xiàn)服務(wù)器和手機(jī)客戶端的通訊,并且基于Android平臺開發(fā)了溫濕度移動終端監(jiān)控軟件[1-3]。該系統(tǒng)不僅可以在現(xiàn)場監(jiān)控溫濕度,而且可以在任意有網(wǎng)絡(luò)的地方通過手機(jī)上網(wǎng)查看現(xiàn)場的情況,極大地方便了工作人員的操作,提高了工作效率。
基于Android的輪胎模具倉庫溫濕度無線監(jiān)控系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 輪胎模具倉庫溫濕度系統(tǒng)總體結(jié)構(gòu)Fig.1 Tire mold warehouse temperature and humidity control system structure
系統(tǒng)包含輪胎模具倉庫監(jiān)控系統(tǒng)和移動監(jiān)控系統(tǒng)兩部分。輪胎模具倉庫監(jiān)控系統(tǒng)包含上位機(jī)PC及移動終端服務(wù)器,上位機(jī)PC由控制模塊和通訊模塊組成,移動終端服務(wù)器實(shí)時發(fā)送現(xiàn)場數(shù)據(jù)并且通過動態(tài)域名解析服務(wù)客戶端軟件固定IP;移動監(jiān)控系統(tǒng)的Android客戶端接收服務(wù)器發(fā)送的數(shù)據(jù)。系統(tǒng)的工作包含以下過程:
(1)PC的通訊模塊通過RS232-485轉(zhuǎn)換器接收溫濕度1~6變送器傳來的數(shù)據(jù),并將數(shù)據(jù)保存到SQL數(shù)據(jù)庫中,傳輸協(xié)議采用Modbus-RTU協(xié)議[4];
(2)控制模塊根據(jù)通訊模塊得到的數(shù)據(jù)與設(shè)定的溫濕度值,判斷是否有某臺除濕機(jī)需要開啟,并進(jìn)行相關(guān)啟停操作;
(3)移動終端服務(wù)器模塊通過Socket協(xié)議,向Android手機(jī)客戶端實(shí)時發(fā)送當(dāng)前溫濕度數(shù)據(jù)及操作信息。本文采用動態(tài)域名解析服務(wù)客戶端軟件作為中轉(zhuǎn)站,移動終端服務(wù)器通過TCP/IP協(xié)議向通過動態(tài)域名解析服務(wù)客戶端軟件申請的IP地址發(fā)送數(shù)據(jù),Android手機(jī)客戶端通過GPRS或WiFi從相同IP地址接收數(shù)據(jù),從而實(shí)現(xiàn)遠(yuǎn)程監(jiān)控功能。
控制模塊接收到輪胎模具倉庫6臺溫濕度變送器傳來的數(shù)據(jù),與模塊中的各部分溫濕度設(shè)定值比較,判斷是否有超限數(shù)值并通過三菱FX2N系列PLC啟動超限數(shù)值對應(yīng)的除濕機(jī),并確保設(shè)定值范圍內(nèi)位置除濕機(jī)是否關(guān)閉。
因倉庫較大且各個位置的工況不同,采用6臺溫濕度變送器組網(wǎng)的方式,對車間進(jìn)行較為精準(zhǔn)的監(jiān)測,這也決定了RS232的通訊距離難以達(dá)到要求,需要利用RS232-485轉(zhuǎn)換器。系統(tǒng)采用泰勒士FTWI5溫濕度變送器,采用標(biāo)準(zhǔn)Modbus RTU通信規(guī)約傳遞二進(jìn)制通信數(shù)據(jù)。Modbus通訊數(shù)據(jù)格式為“設(shè)備地址(1 byte)功能碼(1 byte)數(shù)據(jù)(n byte)CRC校驗(yàn)(2 byte)”。上位機(jī)通過設(shè)備地址來辨別6臺溫濕度變送器,通過功能碼完成讀/寫功能。6臺溫濕度變送器通過一個RS232-485轉(zhuǎn)換器經(jīng)由Modbus協(xié)議傳送數(shù)據(jù)到上位機(jī),使用COM1串行通訊接口。
另一方面,控制模塊與三菱PLC的通訊也是采用Modbus通訊協(xié)議,三菱提供的MX控件使得通訊的設(shè)計(jì)較為簡單,使用COM2串行通訊接口。
服務(wù)器模塊的主要功能如下:
(1)服務(wù)器模塊實(shí)時全面監(jiān)視倉庫溫濕度,并通過PLC啟停除濕機(jī)來確保倉庫各個測點(diǎn)溫度保持在系統(tǒng)的設(shè)定值。數(shù)據(jù)及操作記錄存入SQLite數(shù)據(jù)庫中,并通過動態(tài)域名解析服務(wù)客戶端軟件服務(wù)器發(fā)送到手機(jī)客戶端;
(2)計(jì)算機(jī)可以記錄并以動態(tài)曲線方式顯示各個測點(diǎn)當(dāng)前溫濕度數(shù)據(jù),并可查看歷史曲線;
(3)實(shí)現(xiàn)過程報警與系統(tǒng)報警。當(dāng)控制現(xiàn)場中某個測點(diǎn)數(shù)據(jù)低于或高于某個設(shè)定的閾值時,能夠產(chǎn)生報警源,產(chǎn)生報警,以便現(xiàn)場工作人員及時得到報警通知并做出相應(yīng)動作,同時記錄相關(guān)報警信息及操作信息;
(4)系統(tǒng)需要正確登陸,并且能夠?qū)ο蚴謾C(jī)客戶端發(fā)送的數(shù)據(jù)進(jìn)行加密。
圖2所示為系統(tǒng)的主界面,圖3所示為系統(tǒng)的Socket通訊設(shè)置界面。
圖2 服務(wù)器端主界面Fig.2 Server main interface
圖3 Socket通訊設(shè)置Fig.3 Socket communication settings
Android通信流程如圖4所示。首先,上位機(jī)作為服務(wù)器端創(chuàng)建ServerSocket,監(jiān)聽某個端口(本文使用6666),調(diào)用Socket socket=main Socket.BeginAccept()方法,等待用戶連接,最大連接5臺手機(jī)。用C#編寫的服務(wù)器端Socket通信部分關(guān)鍵代碼如下:
圖4 Android socket通信流程Fig.4 Android socket communication flow chart
然后,作為客戶端的Android用戶創(chuàng)建Socket,通過WiFi或GPRS請求與服務(wù)器連接。最后,當(dāng)服務(wù)器接受請求后,2個Socket在同一線程對話[5]。此時,上位機(jī)將輪胎模具倉庫現(xiàn)場的數(shù)據(jù)通過動態(tài)域名解析服務(wù)客戶端軟件實(shí)時發(fā)送給Android客戶端,Android客戶端開啟后,會將接收到的溫濕度數(shù)據(jù)、操作日志及報警信息通過insert語句插入到SQLite數(shù)據(jù)庫中,并能夠定期對其備份。
本文設(shè)計(jì)的移動監(jiān)控系統(tǒng),其Socket客戶端需要接受固定IP地址的數(shù)據(jù),而一個固定IP地址的租用費(fèi)是十分昂貴的,因此需要使用動態(tài)域名解析服務(wù)客戶端軟件構(gòu)成移動監(jiān)控服務(wù)器與客戶端之間的鏈路。該軟件的服務(wù)商主機(jī)提供DNS服務(wù),能夠?qū)⒂脩魟討B(tài)IP地址映射到固定域名解析服務(wù)器DDNS上,解決了域名與動態(tài)IP間的綁定問題。常見的動態(tài)域名解析服務(wù)客戶端軟件有科邁、金萬維、花生殼等,其中花生殼軟件是免費(fèi)使用的。因此,從經(jīng)濟(jì)方面考慮,本文設(shè)計(jì)的移動監(jiān)控系統(tǒng)采用“花生殼”固定IP地址,使得手機(jī)可以通過GPRS及WiFi接收數(shù)據(jù)。
Android是一個開放的平臺,基于Linux內(nèi)核,用戶可利用其提供的開發(fā)環(huán)境進(jìn)行針對性的開發(fā),節(jié)約開發(fā)成本。
Android SDK是Android專屬軟件開發(fā)工具包,采用Java語言,本文采用Eclipse開發(fā)平臺[6]。其搭建步驟為安裝JDK,配置環(huán)境變量;運(yùn)行Eclipse,安裝ADT插件;配置Eclipse參數(shù),使其指向SDK根目錄。
搭建Andriod開發(fā)環(huán)境后,在Eclipse中選擇File>New>Android Project,完成項(xiàng)目的創(chuàng)建。開發(fā)輪胎模具倉庫溫濕度無線監(jiān)控客戶端軟件首先需要定義應(yīng)用程序的用戶界面[7]。Andriod項(xiàng)目的layout目錄下有一個main.xml文件,使用該文件定義Andriod的界面布局作為用戶界面。其次在該界面的控制面板中拖入任意所需控件,在Mainactivity.java文件中通過findViewById()方法即可獲取指定ID的界面控件。而通過調(diào)用Activity的setContentView(View)來顯示指定控件,最后用setOnClickListener()方法來綁定監(jiān)聽點(diǎn)擊事件監(jiān)聽器。在圖5的界面中為6個RadioButton類型控件綁定監(jiān)聽器。當(dāng)用戶點(diǎn)擊按鈕發(fā)生觸發(fā)事件時,對應(yīng)的按鈕監(jiān)聽器執(zhí)行界面切換,可以查看6個不同監(jiān)測點(diǎn)的溫濕度情況。
該溫濕度無線監(jiān)控系統(tǒng)客戶端軟件不僅能實(shí)時接收數(shù)據(jù),還能對接收到的數(shù)據(jù)進(jìn)行存儲[8]。Google為Andriod數(shù)據(jù)處理提供了SQLite數(shù)據(jù)存儲機(jī)制,在數(shù)據(jù)存儲、管理、維護(hù)等方面都相當(dāng)出色。SQLiteDatabase類為我們提供了很多方法,調(diào)用insert(),delete(),update(),query()這些方法,可以實(shí)現(xiàn)數(shù)據(jù)庫的增、刪、改、查等操作。
在Java代碼中編寫所有業(yè)務(wù)實(shí)現(xiàn)完成后,選中要運(yùn)行的Andriod項(xiàng)目,單擊鼠標(biāo)右鍵,然后在彈出的菜單中單擊“Run As→Andriod Application”菜單項(xiàng)即可運(yùn)行,同時AAPT工具將編譯好的代碼及應(yīng)用程序打包成擴(kuò)展名為.apk的文件,其作為應(yīng)用程序,用戶只需手機(jī)下載安裝此文件即可應(yīng)用。Java編寫客戶端部分關(guān)鍵代碼如下:
倉庫溫濕度實(shí)時顯示及操作記錄查詢。軟件能夠查看溫濕度實(shí)時曲線,并可查看當(dāng)日的報表及除濕機(jī)啟停等操作信息。
報警推送功能。當(dāng)倉庫中某處測量點(diǎn)的數(shù)據(jù)超出限定值時,手機(jī)響鈴報警,此功能可選擇是否開啟[9]。
服務(wù)器端可監(jiān)控連接到的手機(jī)客戶端,并可強(qiáng)制斷開不明客戶端的連接。
圖5所示為手機(jī)數(shù)據(jù)傳輸界面,選擇2號監(jiān)測點(diǎn),溫濕度曲線圖可以直觀地反映出24 h內(nèi)的溫度起伏變化。SQLite數(shù)據(jù)庫存儲了溫濕度的歷史數(shù)據(jù),方便查詢。
移動服務(wù)器終端只能夠?qū)I(yè)數(shù)據(jù)讀取,無法進(jìn)行更改[10]。
設(shè)計(jì)了軟件登陸認(rèn)證過程,服務(wù)器發(fā)送的數(shù)據(jù)是經(jīng)過加密的數(shù)據(jù),只有正確登陸,客戶端軟件才會運(yùn)行相應(yīng)的解密程序,看到正確的信息。
圖5 客戶端主界面Fig.5 Clien main interface
本文在輪胎模具倉庫溫濕度監(jiān)控系統(tǒng)的基礎(chǔ)上,實(shí)現(xiàn)了基于Android平臺的移動監(jiān)控功能。管理員既可以在現(xiàn)場也可以通過遠(yuǎn)程監(jiān)視現(xiàn)場狀況,并進(jìn)行指揮。該監(jiān)控軟件的應(yīng)用可以極大降低工人的勞動強(qiáng)度,保護(hù)倉庫存放輪胎模具,并能夠通過手機(jī)實(shí)時掌握輪胎模具倉庫狀態(tài),方便企業(yè)管理。
[1]李鵬.倉庫無線監(jiān)控系統(tǒng)的研究與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2012.
[2]郭志濤,郭忠,王振.基于Android平臺的智能醫(yī)療系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].鄭州大學(xué)學(xué)報,2014,35(6):60-63.
[3]趙萌,崔剛.基于WiFi的Android移動設(shè)備導(dǎo)航系統(tǒng)的設(shè)計(jì)開發(fā)[J].智能計(jì)算機(jī)與應(yīng)用,2013,3(3):60-64.
[4]曹慶才,高德欣.基于力控的溫濕度遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)[J].自動化技術(shù)與應(yīng)用,2014,32(3):91-95.
[5]張瑞卿.基于Android手機(jī)客戶端的中央空調(diào)遠(yuǎn)程數(shù)據(jù)監(jiān)控系統(tǒng)研究[D].福建:廈門大學(xué),2014.
[6]周國祥,劉成良.基于無線Java的遠(yuǎn)程監(jiān)控系統(tǒng)研究[J].自動化儀表,2006(2):18-21.
[7]闕斌生.面向Android應(yīng)用程序行為的安全監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2014.
[8]楊露霖,徐立鴻,林維威,等.基于Android的溫室移動端檢測監(jiān)控系統(tǒng)設(shè)計(jì)[J].機(jī)電一體化,2013(6):52-57.
[9]彭鑫.基于Android的工業(yè)控制監(jiān)控軟件的設(shè)計(jì)和開發(fā)[D].浙江:浙江大學(xué),2013.
[10]張娜娜.基于局域網(wǎng)的數(shù)據(jù)安全傳輸組件的設(shè)計(jì)與實(shí)現(xiàn)[D].陜西:西安電子科技大學(xué),2014.