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