• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種基于Qt的遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)

      2020-08-04 10:43:36湯春球莫易敏蔣亞華
      數(shù)字制造科學(xué) 2020年2期
      關(guān)鍵詞:安卓上位車間

      湯春球,王 達(dá),莫易敏,韓 輝,蔣亞華

      (武漢理工大學(xué) 機(jī)電工程學(xué)院,湖北 武漢 430070)

      在國(guó)內(nèi)大多數(shù)企業(yè)中,生產(chǎn)線設(shè)備信息化集成度并不高,車間各個(gè)設(shè)備單元多為獨(dú)立個(gè)體,信息交互比較少,設(shè)備故障信息及工作狀態(tài)信息缺乏相應(yīng)的監(jiān)控。智能手機(jī)作為一種通用的通信工具,具有小巧,便攜,可隨時(shí)無(wú)線接入互聯(lián)網(wǎng)的特點(diǎn)。采用智能手機(jī)作為終端,設(shè)計(jì)一種移動(dòng)遠(yuǎn)程監(jiān)控系統(tǒng),使得操作人員可隨時(shí)隨地通過手機(jī)連接WIFI進(jìn)行遠(yuǎn)程監(jiān)控,方便工廠生產(chǎn)人員對(duì)車間內(nèi)充電加熱設(shè)備的工作狀況及運(yùn)行情況實(shí)現(xiàn)有效實(shí)時(shí)監(jiān)管,提升車間工作效率。

      1 Qt開發(fā)平臺(tái)

      Qt是基于C++跨平臺(tái)的UI和應(yīng)用軟件開發(fā)框架[1],使用特殊的代碼生成擴(kuò)展(稱其為源對(duì)象編譯器)以及一些宏。Qt擁有良好的擴(kuò)展功能,當(dāng)Qt自帶控件功能無(wú)法滿足使用要求時(shí),可重寫其方法,實(shí)現(xiàn)自定義功能。Qt集成Qt Designer工具,可方便程序編寫者設(shè)計(jì)美觀易用的界面。Qt具有優(yōu)秀的跨平臺(tái)特性,可支持Windows、Linux、Mac OS X、Android、iOS、Windows Phone和嵌入式系統(tǒng)。

      車間設(shè)備監(jiān)控系統(tǒng)通過Qt開發(fā)桌面程序,移動(dòng)監(jiān)控終端為安卓APP。利用Qt良好的擴(kuò)展功能,設(shè)計(jì)自定義控件進(jìn)行添加,優(yōu)化程序顯示界面,實(shí)現(xiàn)上位機(jī)監(jiān)控應(yīng)用程序。通過Qt跨平臺(tái)特點(diǎn),將上位機(jī)監(jiān)控程序功能代碼進(jìn)行修改移植,編譯形成安卓客戶端APP。

      2 系統(tǒng)通信框架設(shè)計(jì)

      遠(yuǎn)程監(jiān)控體系由車間設(shè)備監(jiān)控系統(tǒng)、移動(dòng)監(jiān)控終端、服務(wù)器和MySQL數(shù)據(jù)庫(kù)組成。車間設(shè)備監(jiān)控系統(tǒng)與下位機(jī)采用CAN總線連接,CAN總線采用擴(kuò)展幀[2]格式,根據(jù)自定義的CAN應(yīng)用層協(xié)議,將獲取的下位機(jī)數(shù)據(jù)進(jìn)行解析。車間設(shè)備監(jiān)控系統(tǒng)通過QMySQL驅(qū)動(dòng)與MySQL數(shù)據(jù)庫(kù)連接,對(duì)重要信息進(jìn)行存儲(chǔ)。服務(wù)器集成在車間設(shè)備監(jiān)控系統(tǒng)中,對(duì)解析后的數(shù)據(jù)進(jìn)行封裝處理,采用UDP通信協(xié)議發(fā)送至以太網(wǎng),監(jiān)控終端通過WIFI連入以太網(wǎng),采用UDP通信協(xié)議獲取數(shù)據(jù),顯示到界面上。不同區(qū)域的車間設(shè)備監(jiān)控系統(tǒng)形成組播,實(shí)現(xiàn)設(shè)備數(shù)據(jù)共享,安卓監(jiān)控終端加入組播,獲取實(shí)時(shí)設(shè)備數(shù)據(jù),主要通信框架如圖1所示。

      圖1 監(jiān)控系統(tǒng)通信框架

      3 監(jiān)控系統(tǒng)總體設(shè)計(jì)

      遠(yuǎn)程監(jiān)控系統(tǒng)以車間設(shè)備監(jiān)控系統(tǒng)作為上位機(jī),安卓客戶端作為移動(dòng)終端來實(shí)現(xiàn)對(duì)車間設(shè)備數(shù)據(jù)傳輸?shù)墓δ堋_h(yuǎn)程監(jiān)控系統(tǒng)具備數(shù)據(jù)的存儲(chǔ)、處理和查詢功能。需要上位機(jī)服務(wù)器接收下位機(jī)數(shù)據(jù), MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)對(duì)重要數(shù)據(jù)的管理、存儲(chǔ)。

      3.1 MySQL數(shù)據(jù)庫(kù)

      MySQL由于其性能卓越,服務(wù)穩(wěn)定,開放源代碼無(wú)版本制約,自主性及使用成本低,體積小,安裝簡(jiǎn)單易維護(hù)的優(yōu)勢(shì)倍受開發(fā)者的青睞[3-4]。

      移動(dòng)遠(yuǎn)程監(jiān)控系統(tǒng)采用MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)設(shè)備信息、計(jì)劃信息、操作人員信息和設(shè)備工作信息的存儲(chǔ)。車間設(shè)備監(jiān)控系統(tǒng)通過QMySQL驅(qū)動(dòng)MySQL數(shù)據(jù)庫(kù),QSqlDatabase與數(shù)據(jù)庫(kù)進(jìn)行連接,QSqlQuery執(zhí)行SQL語(yǔ)句,對(duì)數(shù)據(jù)庫(kù)內(nèi)容進(jìn)行增刪改查操作,QSqlRecord將封裝數(shù)據(jù)庫(kù)記錄。

      3.2 上位機(jī)服務(wù)器設(shè)計(jì)

      上位機(jī)服務(wù)器作為監(jiān)控系統(tǒng)中數(shù)據(jù)的傳遞者,需要接收CAN總線的數(shù)據(jù),再將數(shù)據(jù)發(fā)送給監(jiān)控終端,同時(shí)接收來自監(jiān)控終端的指令,并將控制數(shù)據(jù)傳遞給下位機(jī),實(shí)現(xiàn)監(jiān)控終端對(duì)下位機(jī)設(shè)備的遠(yuǎn)程控制。

      由于監(jiān)控終端需對(duì)不同區(qū)域設(shè)備進(jìn)行監(jiān)控,故上位機(jī)服務(wù)器通信采用UDP協(xié)議實(shí)現(xiàn)傳輸。考慮到設(shè)備量較多,數(shù)據(jù)量較大,為優(yōu)化網(wǎng)絡(luò)性能,減少其他區(qū)域服務(wù)器的負(fù)載,服務(wù)器采用組播方式。本區(qū)域上位機(jī)監(jiān)控系統(tǒng)服務(wù)器獲取數(shù)據(jù)后,將數(shù)據(jù)進(jìn)行處理,設(shè)計(jì)好數(shù)據(jù)結(jié)構(gòu)后,封裝成數(shù)據(jù)報(bào),往組播地址IP發(fā)送,實(shí)現(xiàn)共享本區(qū)域數(shù)據(jù)。也可接受來自其他區(qū)域的數(shù)據(jù),完成跨區(qū)域監(jiān)控。將監(jiān)控終端加入以太網(wǎng)組播地址,即可接收到所有區(qū)域設(shè)備實(shí)時(shí)數(shù)據(jù)。當(dāng)安卓客戶端需要查詢數(shù)據(jù)庫(kù)內(nèi)容時(shí),向服務(wù)器發(fā)出查詢報(bào)文,服務(wù)器響應(yīng)后,從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù),發(fā)送給監(jiān)控客戶端。設(shè)備實(shí)時(shí)數(shù)據(jù)中部分?jǐn)?shù)據(jù)結(jié)構(gòu)如表1所示。

      表1 設(shè)備信息數(shù)據(jù)結(jié)構(gòu)

      4 移動(dòng)監(jiān)控終端設(shè)計(jì)

      在安卓移動(dòng)遠(yuǎn)程監(jiān)控系統(tǒng)中,移動(dòng)監(jiān)控終端主要是安卓客戶端通過UDP網(wǎng)絡(luò)通信獲取車間設(shè)備監(jiān)控系統(tǒng)的實(shí)時(shí)設(shè)備數(shù)據(jù)。安卓客戶端作為整個(gè)系統(tǒng)手機(jī)移動(dòng)終端部分,由用戶選擇工作區(qū)域,驗(yàn)證信息登錄后,獲取監(jiān)控權(quán)限,接收并顯示來自網(wǎng)絡(luò)中設(shè)備的數(shù)據(jù),將其顯示在客戶端界面中,具體功能如下:

      (1)工作區(qū)域選擇功能;

      (2)人員信息登錄功能;

      (3)設(shè)備工作參數(shù)實(shí)時(shí)顯示功能;

      (4)設(shè)備狀態(tài)、故障信息、工作計(jì)劃等重要信息的查詢功能;

      (5)遠(yuǎn)程控制功能。

      4.1 Qt開發(fā)Android APP的工作機(jī)制

      通過Qt開發(fā)安卓APP,應(yīng)該考慮兩個(gè)部分[5]。第一個(gè)是基于Qt類庫(kù)的C/C++程序部分,這個(gè)部分是APP實(shí)現(xiàn)圖像顯示,數(shù)據(jù)操作以及事件響應(yīng)。第二個(gè)部分則是基于Java的Android底層資源調(diào)用API部分,這部分是與Android底層硬件通信和調(diào)用的功能。通過JNI[6](Java Native Interface)實(shí)現(xiàn)這兩部分的協(xié)同工作,基于Qt的安卓APP封裝模型如圖2所示。

      圖2 基于Qt的安卓APP封裝模型

      在此模型中,模塊①里,Qt編譯平臺(tái)會(huì)利用抽象層QPA(Qt Platfrom Abstaction)對(duì)所有的操作系統(tǒng)進(jìn)行統(tǒng)一化支持,使得Qt類庫(kù)程序可以運(yùn)行在其他操作系統(tǒng)中,包括Android平臺(tái);模塊②是Qt中的事件循環(huán)與Android里的事件循環(huán)通過線程發(fā)生交互;模塊③中Qt編寫的安卓程序利用JNI反向調(diào)用Java代碼,實(shí)現(xiàn)調(diào)用安卓系統(tǒng)功能,諸如判斷網(wǎng)絡(luò)連接、獲取外部存儲(chǔ)或者緩存文件目錄等。

      4.2 界面設(shè)計(jì)

      主界面及子模塊界面均采用C++代碼進(jìn)行設(shè)計(jì),界面均是基于Qt類庫(kù)實(shí)現(xiàn),用戶對(duì)界面的操作均是轉(zhuǎn)化為事件的形式。當(dāng)用戶在屏幕上按下按鈕、在編輯框輸入數(shù)字,都會(huì)發(fā)出一個(gè)相應(yīng)的事件。對(duì)事件進(jìn)行響應(yīng)則是通過信號(hào)與槽的機(jī)制來實(shí)現(xiàn)的。信號(hào)和槽機(jī)制是Qt的核心機(jī)制,主要應(yīng)用于對(duì)象之間的通信。它是Qt對(duì)象間通信的一種機(jī)制,也是Qt的核心特性,它替代了回調(diào)函數(shù)。MOC(Meta Object Compiler)是Qt的一種工具,它本質(zhì)上是C++預(yù)處理程式,可在編譯前將擴(kuò)展語(yǔ)法如宏Q_OBJECT去掉,生成附加代碼,幫助Qt處理信號(hào)與槽。

      每個(gè)Qt對(duì)象均有若干個(gè)定義好的信號(hào)和槽,當(dāng)對(duì)象狀態(tài)發(fā)生變化時(shí)(如發(fā)生一個(gè)事件),一個(gè)信號(hào)則被發(fā)送,與信號(hào)相關(guān)聯(lián)的槽則會(huì)響應(yīng)信號(hào)并進(jìn)行響應(yīng)的處理。當(dāng)一個(gè)類被繼承時(shí), 子類將會(huì)繼承父類的信號(hào)與槽,同時(shí)也可根據(jù)需要自定義信號(hào)與槽。信號(hào)與槽是一個(gè)十分強(qiáng)大的組件編程機(jī)制[7-8],如圖3所示。

      圖3 信號(hào)與槽

      客戶端界面設(shè)計(jì)采用樹狀界面??蛻舳私缑姘ǎ汗ぷ鲄^(qū)域選擇界面、登陸界面、主界面、設(shè)備實(shí)時(shí)信息界面、工作信息界面、用戶界面、故障信息界面以及計(jì)劃信息界面??蛻舳瞬僮髁鞒倘鐖D4所示。

      圖4 安卓客戶端操作流程圖

      (1)工作區(qū)域選擇界面。該界面獲取指定區(qū)域設(shè)備工作數(shù)據(jù),方便工作人員從一個(gè)監(jiān)控區(qū)域轉(zhuǎn)換到另一個(gè)監(jiān)控區(qū)域時(shí),只需切換工作區(qū)域即可實(shí)現(xiàn)設(shè)備監(jiān)控切換。

      (2)登錄界面。該界面進(jìn)行監(jiān)控人員信息驗(yàn)證。與數(shù)據(jù)庫(kù)信息進(jìn)行驗(yàn)證,通過后不同人員擁有不同操作權(quán)限,分為操作人員和管理人員權(quán)限,權(quán)限不同客戶端局部功能也不同,驗(yàn)證失敗則無(wú)法獲取監(jiān)控頁(yè)面信息。

      (3)主界面。該界面對(duì)區(qū)域內(nèi)所有設(shè)備的工作狀態(tài)進(jìn)行顯示,主要包括設(shè)備工作輸出功率,設(shè)備運(yùn)行工作狀態(tài)如開機(jī)、關(guān)機(jī)或故障。方便操作人員能直觀地看到區(qū)域內(nèi)所有設(shè)備的工作狀態(tài)。

      (4)設(shè)備實(shí)時(shí)信息界面。該界面對(duì)區(qū)域內(nèi)每臺(tái)設(shè)備具體的輸入輸出工作參數(shù)進(jìn)行顯示以及設(shè)備工作狀態(tài)、故障狀態(tài)進(jìn)行實(shí)時(shí)顯示,工作人員通過查看客戶端上設(shè)備實(shí)時(shí)工作信息、設(shè)備狀態(tài)即可判斷設(shè)備是否存在故障及故障類型,方便進(jìn)行高效處理。

      (5)工作信息界面。該界面查看區(qū)域內(nèi)各設(shè)備處于何種工作狀態(tài),以及設(shè)備歷史工作記錄。其中設(shè)備歷史工作記錄包括開機(jī)時(shí)間,關(guān)機(jī)時(shí)間以及工作總時(shí)長(zhǎng)。

      (6)故障信息界面。該界面用于查看設(shè)備故障歷史記錄。其中包括設(shè)備名稱、故障時(shí)間、狀態(tài)、故障類型、恢復(fù)類型和恢復(fù)狀態(tài)等。

      (7)計(jì)劃信息界面。該界面用于查看計(jì)劃任務(wù)信息,管理人員可進(jìn)行作業(yè)計(jì)劃下達(dá)。管理人員可對(duì)任務(wù)執(zhí)行人員、作業(yè)位置、作業(yè)設(shè)備進(jìn)行選擇,對(duì)具體作業(yè)內(nèi)容進(jìn)行編輯后進(jìn)行下達(dá),計(jì)劃任務(wù)將存儲(chǔ)于數(shù)據(jù)庫(kù)中,現(xiàn)場(chǎng)操作人員根據(jù)計(jì)劃執(zhí)行,實(shí)現(xiàn)遠(yuǎn)程控制功能。

      4.3 UDP通信

      安卓客戶端與上位機(jī)服務(wù)器通信采用UDP[9]通信方式,UDP是輕量的、不可靠的、面向數(shù)據(jù)報(bào),無(wú)連接的協(xié)議。由于不同上位機(jī)之間通過組播方式形成網(wǎng)絡(luò),安卓客戶端則采用加入組播的方式,可獲取其他上位機(jī)往組播所發(fā)送的數(shù)據(jù)包。在監(jiān)控不同區(qū)域時(shí),根據(jù)不同區(qū)域IP地址進(jìn)行選擇性接收,監(jiān)控系統(tǒng)網(wǎng)絡(luò)拓?fù)鋱D如圖5所示。

      圖5 監(jiān)控系統(tǒng)網(wǎng)絡(luò)拓?fù)鋱D

      在Qt中,采用QUdpSocket類實(shí)現(xiàn)UDP通訊。在上位機(jī)服務(wù)器端需要實(shí)例化一個(gè)QUdpSocket對(duì)象來創(chuàng)建一個(gè)通信套接字,并采用bind()函數(shù)去綁定地址和端口號(hào),來監(jiān)聽指定客戶端的請(qǐng)求,當(dāng)套接字接收到客戶端數(shù)據(jù),則會(huì)發(fā)出readyRead()信號(hào),將此信號(hào)關(guān)聯(lián),在槽函數(shù)中使用readDatagram()讀取數(shù)據(jù)。進(jìn)行數(shù)據(jù)反饋時(shí),發(fā)送數(shù)據(jù)采用writeDatagram()函數(shù),指定手機(jī)終端IP和端口號(hào)進(jìn)行發(fā)送。

      安卓客戶端同樣需要實(shí)例化QUdpSocket[10]對(duì)象創(chuàng)建通信套接字,可使用writeDatagram()函數(shù)往組播中發(fā)送數(shù)據(jù)包。同時(shí)使用joinMulticastGroup()函數(shù)加入一個(gè)多播組,leaveMulticastGroup()函數(shù)離開一個(gè)多播組,關(guān)鍵函數(shù)語(yǔ)句如下:

      m_UdpSocket->bind(address,port);

      m_UdpSocket->writeDatagram(data,size,address,port);

      m_UdpSocket->readDatagram(data,size,address,port);

      connect(m_UdpSocket,SIGNAL(readyRead()),this,SLOT(read_data()));

      其中read_data()為自定義函數(shù)。

      5 結(jié)論

      針對(duì)傳統(tǒng)工業(yè)車間環(huán)境,通過Qt良好的跨平臺(tái)性能,結(jié)合C++編程和互聯(lián)網(wǎng)通信開發(fā)移動(dòng)監(jiān)控客戶端。移動(dòng)客戶端基于上位機(jī)程序編寫移植,省去二次學(xué)習(xí)Java的時(shí)間成本,降低了學(xué)習(xí)成本。同時(shí)克服監(jiān)控地點(diǎn)限制,使用戶通過手機(jī)即可檢測(cè)車間設(shè)備工作狀態(tài),無(wú)需再去現(xiàn)場(chǎng)查看設(shè)備信息,提高了工作效率。

      猜你喜歡
      安卓上位車間
      100MW光伏車間自動(dòng)化改造方案設(shè)計(jì)
      智能制造(2021年4期)2021-11-04 08:54:28
      文物表情包
      招工啦
      特斯拉 風(fēng)云之老阿姨上位
      車迷(2018年12期)2018-07-26 00:42:22
      “扶貧車間”拔窮根
      把農(nóng)業(yè)搬進(jìn)車間
      “三扶”齊上位 決戰(zhàn)必打贏
      一種基于安卓系統(tǒng)的手機(jī)側(cè)抓包分析方法
      基于ZigBee和VC上位機(jī)的教室智能監(jiān)測(cè)管理系統(tǒng)
      以新思路促推現(xiàn)代農(nóng)業(yè)上位
      逊克县| 沂水县| 龙山县| 洛扎县| 西乡县| 金秀| 大荔县| 临潭县| 赤城县| 峨山| 泗阳县| 马边| 子洲县| 昌江| 宜宾市| 广汉市| 蒲江县| 清流县| 郓城县| 邛崃市| 马边| 河源市| 贡觉县| 大悟县| 铁岭市| 新闻| 三明市| 突泉县| 庆阳市| 略阳县| 瑞安市| 什邡市| 万全县| 班玛县| 多伦县| 光山县| 汾阳市| 普安县| 乌拉特中旗| 阿合奇县| 洱源县|