• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于云平臺(tái)的機(jī)器人監(jiān)控系統(tǒng)設(shè)計(jì)①

    2020-10-19 13:28:48徐建明俞俊銘董建偉
    高技術(shù)通訊 2020年9期
    關(guān)鍵詞:客戶端服務(wù)器界面

    徐建明 俞俊銘 董建偉 俞 立

    (浙江工業(yè)大學(xué)信息工程學(xué)院 杭州 310023)

    0 引 言

    隨著德國(guó)“工業(yè)4.0”的推出,工業(yè)生產(chǎn)進(jìn)入到使用信息化技術(shù)促進(jìn)產(chǎn)業(yè)變革的時(shí)代,同時(shí)轉(zhuǎn)向云計(jì)算是互聯(lián)網(wǎng)發(fā)展面臨的一個(gè)重大改變,而云平臺(tái)則是該改變中重要的一個(gè)環(huán)節(jié),因此研究基于云平臺(tái)的機(jī)器人監(jiān)控系統(tǒng)顯得越來越重要。

    目前機(jī)器人監(jiān)控系統(tǒng)多數(shù)采用客戶端/服務(wù)端的模式進(jìn)行搭建,如張愛民等人[1]基于TCP/IP協(xié)議設(shè)計(jì)工業(yè)機(jī)器人遠(yuǎn)程監(jiān)控與診斷系統(tǒng)。這種模式下,遠(yuǎn)程端需要安裝客戶端,系統(tǒng)擴(kuò)展性降低;另一種模式是通過訪問瀏覽器獲取數(shù)據(jù)并查看設(shè)備運(yùn)行狀態(tài)。Sallinen等人[2]提出基于Web用戶界面的工業(yè)機(jī)器人遠(yuǎn)程監(jiān)控與維護(hù)的框架。駱曉娟等人[3]設(shè)計(jì)基于AJAX和瀏覽器/服務(wù)器(browser/server,B/S)構(gòu)架的實(shí)時(shí)監(jiān)測(cè)系統(tǒng)。徐建明等人[4]設(shè)計(jì)基于Web的工業(yè)機(jī)器人3D虛擬動(dòng)態(tài)監(jiān)控系統(tǒng)。同時(shí)隨著云平臺(tái)和云計(jì)算的發(fā)展,基于云平臺(tái)的機(jī)器人監(jiān)控系統(tǒng)成為物聯(lián)網(wǎng)未來的發(fā)展方向之一。Gubbi等人[5]研究物聯(lián)網(wǎng)未來的發(fā)展方向。Ji等人[6]提出基于云的物聯(lián)網(wǎng)城市停車系統(tǒng)。Douzis[7]提出基于云的模塊化和通用物聯(lián)網(wǎng)管理系統(tǒng)。Baker等人[8]研究基于云的物聯(lián)網(wǎng)系統(tǒng)的組合算法。Dinh等人[9]提出云與面向移動(dòng)云計(jì)算應(yīng)用的物聯(lián)網(wǎng)基于位置的交互模型。同時(shí),消息隊(duì)列遙測(cè)傳輸(message queuing telemetry transport, MQTT)作為即時(shí)消息協(xié)議逐漸被廣泛用于物聯(lián)網(wǎng)。Schmitt等人[10]提出通過MQTT協(xié)議作為物聯(lián)網(wǎng)數(shù)據(jù)交換的橋梁。在此基礎(chǔ)上,機(jī)器人3維展示被逐漸運(yùn)用于監(jiān)控系統(tǒng)中。Mostefa等人[11]設(shè)計(jì)一種基于虛擬現(xiàn)實(shí)的移動(dòng)機(jī)器人遠(yuǎn)程操作系統(tǒng)。楊碩等人[12]設(shè)計(jì)基于虛擬現(xiàn)實(shí)的一對(duì)多遠(yuǎn)程康復(fù)訓(xùn)練機(jī)器人監(jiān)控系統(tǒng)。

    隨著數(shù)據(jù)量不斷擴(kuò)大,基于本地服務(wù)器的監(jiān)控系統(tǒng)對(duì)硬件資源的需求會(huì)不斷增大,本文以客戶端/服務(wù)端(client/server,C/S)模式與B/S模式相結(jié)合的方式設(shè)計(jì)一種基于阿里云的機(jī)器人監(jiān)控系統(tǒng),相較于上述傳統(tǒng)方式,云平臺(tái)具有更好的穩(wěn)定性、容量擴(kuò)展性,可按照需求為用戶定制服務(wù)資源。本系統(tǒng)由本地客戶端和Web遠(yuǎn)程監(jiān)控端組成,其中本地客戶端基于TCP/IP協(xié)議和OPC統(tǒng)一架構(gòu)(OPC unified architecture,OPC UA)協(xié)議與機(jī)器人控制器進(jìn)行數(shù)據(jù)通訊,通過搭建MySQL客戶端存儲(chǔ)數(shù)據(jù),在此基礎(chǔ)上,基于MQTT協(xié)議與云端進(jìn)行數(shù)據(jù)交互。Web遠(yuǎn)程監(jiān)控端采用前后端分離的方式搭建,相較于傳統(tǒng)機(jī)器人監(jiān)控系統(tǒng)的開發(fā)方式,前后端分離的方式具有開發(fā)周期短暫的優(yōu)勢(shì),同時(shí)更容易發(fā)現(xiàn)系統(tǒng)運(yùn)行時(shí)出現(xiàn)的錯(cuò)誤。后端基于Django rest framework框架搭建,前端采用Vue框架搭建,大屏展示界面基于阿里云的DataV模塊搭建,3維畫面展示界面基于WebGL[13]和Three.js技術(shù)搭建[14]。

    1 系統(tǒng)整體框架

    本系統(tǒng)以基于CoDeSys開發(fā)的SCARA機(jī)器人控制系統(tǒng)為研究對(duì)象進(jìn)行搭建,包括本地客戶端和WEB遠(yuǎn)程監(jiān)控端,系統(tǒng)框架圖如圖1所示。

    圖1 系統(tǒng)框架圖

    圖1中的設(shè)備層與設(shè)備操作層通過機(jī)器人控制器進(jìn)行銜接,機(jī)器人控制器的運(yùn)動(dòng)控制程序以及OPC UA服務(wù)器由Codesys PLC軟件編程工具進(jìn)行編寫,通過工業(yè)以太網(wǎng)(EtherCAT)解決采集機(jī)器人相關(guān)物理數(shù)據(jù)[15],通過搭建OPC UA客戶端來解決SCARA機(jī)器人的數(shù)據(jù)交互。

    本地客戶端基于TCP/IP協(xié)議搭建,通過OPC UA協(xié)議解決與控制器的數(shù)據(jù)交互問題,基于MySQL的嵌入式應(yīng)用程序解決數(shù)據(jù)存儲(chǔ)問題,其中數(shù)據(jù)庫作為監(jiān)控系統(tǒng)前后端的信息載體,存儲(chǔ)SCARA機(jī)器人運(yùn)動(dòng)過程中產(chǎn)生的各種信息,同時(shí)基于MQTT協(xié)議解決與云端的數(shù)據(jù)交互問題,MQTT協(xié)議具有功耗低、輕量級(jí)及易于實(shí)現(xiàn)的優(yōu)點(diǎn),是物聯(lián)網(wǎng)的重要組成部分。

    WEB遠(yuǎn)程監(jiān)控端由圖1中的平臺(tái)服務(wù)層,應(yīng)用服務(wù)層和門戶層組成,采用nginx[16]與uwsgi技術(shù)將遠(yuǎn)程監(jiān)控程序部署于阿里云服務(wù)器,程序部署完成后,用戶可以通過瀏覽器隨時(shí)隨地查看機(jī)器人歷史數(shù)據(jù)并進(jìn)行實(shí)時(shí)監(jiān)控。

    2 本地客戶端設(shè)計(jì)

    本地監(jiān)控端采用C/S(客戶端/服務(wù)器端)模式進(jìn)行搭建,主要由3部分組成,即基于OPC UA Client[17]的數(shù)據(jù)采集模塊、基于MySQL的數(shù)據(jù)存儲(chǔ)模塊和基于MQTT與云平臺(tái)的數(shù)據(jù)交互模塊。

    2.1 基于OPC UA Client的數(shù)據(jù)采集模塊

    傳統(tǒng)的工業(yè)自動(dòng)化解決方案由于在設(shè)備間通信上采用不兼容和不可互操作的差別化標(biāo)準(zhǔn),因而存數(shù)據(jù)交互的困難。OPC UA架構(gòu)采用客戶端/服務(wù)器模式和發(fā)布者/訂閱者模式為數(shù)據(jù)交互提供框架,在地址空間定義節(jié)點(diǎn)類并實(shí)例化,通過層次結(jié)構(gòu)進(jìn)行訪問,以簡(jiǎn)化客戶端訪問。C#語言可以實(shí)現(xiàn)OPC UA的自動(dòng)化接口,提供自動(dòng)配置、過程控制和數(shù)據(jù)存取的接口,在窗口界面中搭建用戶輸入和響應(yīng)事件模塊,在工作線程中通過訂閱方式對(duì)數(shù)據(jù)進(jìn)行采集。在功能上實(shí)現(xiàn)瀏覽OPC UA服務(wù)器、修改數(shù)據(jù)、訂閱數(shù)據(jù),具體實(shí)現(xiàn)方式如下。

    (1)瀏覽OPC UA服務(wù)器。在窗口界面拖入panel容器控件,在主程序中引用“Opc.Ua.Client”庫,在工作線程中使用FormBrowseServer form = new FormBrowseServer()函數(shù),該函數(shù)通過結(jié)構(gòu)層次的方式訪問服務(wù)器,查看服務(wù)器的節(jié)點(diǎn)狀態(tài),從而獲取服務(wù)器的內(nèi)容,使用panel.Controls.Add(form)函數(shù),該函數(shù)是C#語言的內(nèi)置函數(shù),用于將服務(wù)器的內(nèi)容顯示在panel容器中,供用戶瀏覽和使用。

    (2)修改數(shù)據(jù)。在工作線程中使用private OpcUaClient opcUaClient= new OpcUaClient()函數(shù),該函數(shù)為opcua.dll函數(shù)庫的內(nèi)置函數(shù),用于將OPC UA客戶端實(shí)例化,工作線程根據(jù)該實(shí)例對(duì)象進(jìn)行節(jié)點(diǎn)操作、節(jié)點(diǎn)查閱、節(jié)點(diǎn)訂閱以及其他操作,線程中使用opcUaClient.writeNode(this.NodeId.Text,this.writeNodeId.Text)函數(shù),該函數(shù)通過結(jié)構(gòu)層次查找節(jié)點(diǎn),依賴TCP/IP協(xié)議修改節(jié)點(diǎn)數(shù)據(jù),從而實(shí)現(xiàn)修改機(jī)械臂運(yùn)動(dòng)參數(shù)等數(shù)據(jù),并控制機(jī)械臂。

    (3)訂閱數(shù)據(jù)。在工作線程中編寫SubCallback()函數(shù),該函數(shù)通過調(diào)用者(Caller)向回調(diào)函數(shù)(Callee)發(fā)出調(diào)用,被調(diào)用函數(shù)啟動(dòng)后,不需要被調(diào)函數(shù)執(zhí)行完畢,程序執(zhí)行流立即返回到調(diào)用者繼續(xù)執(zhí)行,從而實(shí)現(xiàn)節(jié)點(diǎn)訂閱,并對(duì)訂閱的節(jié)點(diǎn)綁定listView1_DragDrop()函數(shù),該函數(shù)根據(jù)C#控件內(nèi)容的可拖動(dòng)原理,實(shí)現(xiàn)對(duì)數(shù)據(jù)節(jié)點(diǎn)名稱的拖動(dòng),編寫AddSubscription()函數(shù),用于添加節(jié)點(diǎn),并將每個(gè)節(jié)點(diǎn)綁定上文中的SubCallback()函數(shù),實(shí)現(xiàn)對(duì)批量節(jié)點(diǎn)的訂閱。工作程序流程圖如圖2所示。

    圖2 數(shù)據(jù)訂閱程序流程圖

    2.2 基于MySQL的數(shù)據(jù)存儲(chǔ)模塊

    MySQL[18]是一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中以增加速度并提高靈活性,并為C#編程語言提供了API接口,同時(shí)能夠作為一個(gè)庫嵌入到其他軟件中,使嵌入客戶端的方式實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)得以實(shí)現(xiàn),不僅可以提高數(shù)據(jù)的實(shí)時(shí)性,也能降低本地客戶端的內(nèi)存空間。

    本數(shù)據(jù)存儲(chǔ)模塊通過C#語言進(jìn)行搭建,并嵌入到本地客戶端,數(shù)據(jù)庫表格采用樹狀關(guān)系圖的方法進(jìn)行設(shè)計(jì),使用多表關(guān)聯(lián)方式建立機(jī)器人對(duì)象表、設(shè)備表、采集點(diǎn)數(shù)據(jù)表,該設(shè)計(jì)方法優(yōu)勢(shì)在于擴(kuò)展性高,無需頻繁修改數(shù)據(jù)庫。在功能上實(shí)現(xiàn)數(shù)據(jù)解析,數(shù)據(jù)篩選和數(shù)據(jù)存儲(chǔ),如圖3所示,具體實(shí)現(xiàn)方式如下。

    圖3 數(shù)據(jù)存儲(chǔ)模塊功能圖

    (1)數(shù)據(jù)解析。將從控制器接收到的數(shù)據(jù)按照通訊協(xié)議解析成當(dāng)前系統(tǒng)實(shí)際的物理值,在工作線程中使用value.WrappedValue.TypeInfo.BuiltInType函數(shù),該函數(shù)有2個(gè)屬性,數(shù)組和基礎(chǔ)類型,通過返回值判斷數(shù)據(jù)類型、數(shù)據(jù)格式和數(shù)據(jù)量,從而得到該數(shù)據(jù)包含的物理量和數(shù)值單位。

    (2)數(shù)據(jù)篩選。在窗口界面中拖入comboBox控件和ListBox列表框控件,用于存放采集點(diǎn)信息,在工作線程中使用comboBox.Items.Add(sArray[s-1])函數(shù),該函數(shù)用于在comboBox控件中添加新的采集點(diǎn),同時(shí)使用infos.Add(new database(){data=""})函數(shù),該函數(shù)通過創(chuàng)建新的數(shù)據(jù)對(duì)象,將采集的數(shù)據(jù)篩選后添加至列表框控件中,便于用戶對(duì)數(shù)據(jù)的管理和分類。

    (3)數(shù)據(jù)存儲(chǔ)。在本地客戶端主程序中引用“MySQL.Data.DLL”庫,在工作線程中使用MySqlConnection conn = new MySqlConnection()函數(shù),該函數(shù)用于創(chuàng)建MySQL Client實(shí)例對(duì)象,對(duì)實(shí)例對(duì)象調(diào)用conn.Open()函數(shù)創(chuàng)建MySQL通道,編寫MySqlCommand cmd1 = new MySqlCommand(" select * from users_userprofile ", conn)函數(shù),該函數(shù)根據(jù)上文創(chuàng)建的實(shí)例對(duì)象(conn)連接MySQL數(shù)據(jù)庫,編寫MySqlCommand cmd1 = new MySqlCommand("select * from device_device order by id DESC limit 1", conn)函數(shù),該函數(shù)用于將數(shù)據(jù)存儲(chǔ)至云端MySQL數(shù)據(jù)庫,同時(shí)添加存儲(chǔ)時(shí)間,用戶信息等,函數(shù)內(nèi)部參數(shù)包括實(shí)例對(duì)象,采集點(diǎn)對(duì)象和采集點(diǎn)數(shù)據(jù)。

    2.3 基于MQTT與云平臺(tái)的數(shù)據(jù)交互模塊

    目前基于Http協(xié)議的物聯(lián)網(wǎng)系統(tǒng)開發(fā)的方式[19]被頻繁采用,但在嵌入式系統(tǒng)中或網(wǎng)絡(luò)帶寬昂貴的環(huán)境下,Http協(xié)議并不適用,MQTT做為一種低開銷、低帶寬占用的即時(shí)通訊協(xié)議,MQTT在工業(yè)物聯(lián)網(wǎng)、小型設(shè)備等方面有廣泛的應(yīng)用。因此本客戶端選擇采用MQTT協(xié)議搭建數(shù)據(jù)交互模塊,具體實(shí)現(xiàn)方式如下。

    (1)在云端搭建MQTT服務(wù)器,用于主題消息接收、發(fā)布。使用“apollo create brokerServer”創(chuàng)建服務(wù)器實(shí)例,使用“apollo-broker.cmd run”啟動(dòng)服務(wù)器,并且Apollo提供后臺(tái)管理頁面,方便管理和調(diào)試。

    (2)建立MQTT服務(wù),在客戶端程序中添加引用“MQTTnet”,用于激活MQTTnet功能。

    (3)在工作線程中使用private MqttClient mqttClient函數(shù),該函數(shù)用于創(chuàng)建MQTT實(shí)例對(duì)象,連接MySQL數(shù)據(jù)庫。

    (4)利用C#自帶控件庫在窗口界面中拖入textBox等控件,用于在客戶端中搭建MQTT用戶操作界面。

    MQTT模塊的后臺(tái)工作線程為編寫Task.Run(async()=>{awaitConnectMqttServerAsync();})函數(shù),該函數(shù)用于連接位于云端的MQTT服務(wù)器;通過編寫MqttApplicationMessage()函數(shù),該函數(shù)用于將采集到的數(shù)據(jù)實(shí)時(shí)地傳輸?shù)轿挥谠贫说腗QTT服務(wù)器;同時(shí)通過mqttClient.PublishAsync()函數(shù),該函數(shù)用于訂閱所需要的數(shù)據(jù),程序流程如圖4所示。

    圖4 MQTT程序流程圖

    整個(gè)工作流程如圖5所示,當(dāng)客戶端連接到機(jī)器人控制器后,通過OPC客戶端將采集到的數(shù)據(jù)以MQTT的形式實(shí)時(shí)地傳輸?shù)皆贫?,位于云端的MQTT服務(wù)器接收到數(shù)據(jù)后,做出處理,發(fā)布該主題,同時(shí)位于WEB端的MQTT客戶端訂閱該主題,獲取數(shù)據(jù)。

    圖5 MQTT工作流程圖

    3 Web遠(yuǎn)程監(jiān)控端設(shè)計(jì)

    Web遠(yuǎn)程監(jiān)控端采用B/S(瀏覽器、服務(wù)器)架構(gòu)的方式實(shí)現(xiàn),使用阿里云作為Web服務(wù)器。傳統(tǒng)的Web框架過于復(fù)雜,難以滿足快速開發(fā)的要求,而Django框架以其便捷、快速、高效的特點(diǎn)而深受好評(píng)。綜上所述,后端基于Django rest framework框架[20]進(jìn)行搭建,以JSON[21]的格式提供數(shù)據(jù)接口。前端基于Vue框架進(jìn)行搭建,Vue是一套用于構(gòu)建用戶界面的漸進(jìn)式JavaScript框架[22]。在此基礎(chǔ)上,Web遠(yuǎn)程監(jiān)控端針對(duì)SCARA機(jī)器人,搭建3維動(dòng)畫界面和繪制曲線圖。Web系統(tǒng)分為4個(gè)層面:

    (1)門戶層。即網(wǎng)頁瀏覽,通過統(tǒng)一認(rèn)證授權(quán)提供業(yè)務(wù)服務(wù)統(tǒng)一注冊(cè)、統(tǒng)一登錄入口。

    (2)API接口輸出層。該層主要包括設(shè)備資產(chǎn)管理,通過設(shè)備數(shù)據(jù)采集與建模,以API接口的形式提供給前端使用。

    (3)業(yè)務(wù)邏輯層。該層主要為各業(yè)務(wù)應(yīng)用系統(tǒng)的構(gòu)建和運(yùn)行提供技術(shù)支撐,并為各應(yīng)用服務(wù)提供計(jì)算、數(shù)據(jù)的調(diào)度及數(shù)據(jù)管理服務(wù)。

    (4)數(shù)據(jù)庫操作層。該層主要是獲取數(shù)據(jù)庫中的數(shù)據(jù)。通過Django框架中的model操作與MySQL數(shù)據(jù)庫進(jìn)行交互,使用ModelViewset類對(duì)數(shù)據(jù)庫進(jìn)行增刪改查操作。Web系統(tǒng)框架如圖6所示。

    圖6中的門戶層即前端可視化界面;圖6中的API接口輸出層、業(yè)務(wù)邏輯層和數(shù)據(jù)操作層組成后端服務(wù)程序,用于數(shù)據(jù)驗(yàn)證、數(shù)據(jù)查詢,用戶驗(yàn)證等操作。整個(gè)Web系統(tǒng)包括用戶管理功能塊,數(shù)據(jù)查詢功能塊,實(shí)時(shí)監(jiān)控功能塊和3維動(dòng)畫展示功能塊。

    圖6 Web系統(tǒng)框架圖

    3.1 用戶管理

    用戶管理采用目前較流行的session與token機(jī)制進(jìn)行驗(yàn)證,使用JSON Web Token(JWT)作為跨域身份驗(yàn)證的解決方案,在雙方之間使用JSON對(duì)象進(jìn)行數(shù)據(jù)傳輸,該種方式通過使用密鑰(HMAC算法),RSA或ECDSA 的公鑰/密鑰鍵值對(duì)進(jìn)行認(rèn)證和信任,具有較高的安全性,原理如圖7所示。用戶管理模塊實(shí)現(xiàn)用戶短信驗(yàn)證注冊(cè)和用戶驗(yàn)證登錄功能,具體實(shí)現(xiàn)方式如下。

    圖7 JWT原理圖

    (1)用戶短信驗(yàn)證注冊(cè)。后端Django程序中編寫YunPian()類方法,該函數(shù)調(diào)用底層數(shù)據(jù)傳輸協(xié)議,并依賴第3方短信服務(wù)商,實(shí)現(xiàn)短信發(fā)送功能,編寫generate_code()函數(shù),調(diào)用隨機(jī)數(shù)生成函數(shù),生成4位驗(yàn)證碼,編寫UserRegSerializer()類方法,該函數(shù)實(shí)現(xiàn)的原理是通過獲取用戶傳輸過來的驗(yàn)證碼,與上文中生成的驗(yàn)證碼作比較,從而驗(yàn)證短信驗(yàn)證碼和密碼格式的正確性,編寫SmsCodeViewset()類方法,將通過驗(yàn)證的用戶名和密碼存入數(shù)據(jù)庫;前端VUE程序[23]中編寫register組件,用于搭建用戶注冊(cè)界面,同時(shí)使用Html5, CSS3, JavaScript, jquery[24]美化界面。編寫register()函數(shù),通過后端生成的api接口,上傳數(shù)據(jù),實(shí)現(xiàn)用戶注冊(cè)功能。

    (2)用戶驗(yàn)證登錄。編寫UserViewset()類方法,用于獲取前端上傳的用戶名和密碼信息,編寫UserDetailSerializer()類方法,用于驗(yàn)證用戶名和密碼正確性,若正確,使用Response(re_dict)函數(shù)返回session與token給前端用戶界面,同時(shí)在settings配置文件中導(dǎo)入JWT,用于啟用該登錄驗(yàn)證功能塊,通過JWT自帶的登錄驗(yàn)證的api接口url(r'^login/', obtain_jwt_token)完成用戶登錄功能;前端Vue程序中編寫login組件,搭建用戶登錄界面,建立store狀態(tài)管理器,用于存儲(chǔ)用戶登錄的信息,如session與token,實(shí)現(xiàn)用戶登錄功能。

    3.2 數(shù)據(jù)查詢

    數(shù)據(jù)查詢頁面以節(jié)點(diǎn)樹的形式展現(xiàn),該方式可以簡(jiǎn)潔明了地展示所有設(shè)備和采集點(diǎn),頁面上通過查詢?cè)O(shè)備,查看設(shè)備下的所有采集點(diǎn)數(shù)據(jù),通過曲線圖的形式展示數(shù)據(jù)。數(shù)據(jù)查詢模塊在功能上設(shè)計(jì)實(shí)現(xiàn)用戶數(shù)據(jù)綁定,數(shù)據(jù)篩選和數(shù)據(jù)展示等3大功能,如圖8所示,具體實(shí)現(xiàn)方式如下。

    圖8 數(shù)據(jù)查詢模塊功能圖

    (1)用戶數(shù)據(jù)綁定。編寫DeviceViewset()類方法,該函數(shù)通過遍歷url配置中的as_view字典參數(shù),獲取元組類型的items(),從而獲取用戶信息,編寫SensorSerializer()類方法,該函數(shù)用于獲取該用戶下的設(shè)備數(shù)據(jù)和采集點(diǎn)數(shù)據(jù),以JSON格式提供給前端,同時(shí)在url.py文件使用路由注冊(cè)函數(shù),給前端提供api接口;前端VUE程序中編寫device組件,搭建用戶數(shù)據(jù)可視化界面,通過編寫getDeviceInfo()函數(shù),該函數(shù)用于獲取相關(guān)數(shù)據(jù),實(shí)現(xiàn)用戶數(shù)據(jù)綁定功能。

    (2)數(shù)據(jù)篩選。編寫CollectionPointViewset()類方法,該函數(shù)通過遍歷所有字典參數(shù)獲取所有采集點(diǎn)數(shù)據(jù),編寫collectionFilter()類方法,該函數(shù)通過接收"|"前的變量值(value)和":"后的參數(shù)(args),返回一個(gè)值。從而解決時(shí)間篩選的問題,在該基礎(chǔ)上,編寫filter_backends()類方法,用于實(shí)現(xiàn)數(shù)據(jù)排序,數(shù)據(jù)過濾和數(shù)據(jù)查詢等功能。前端VUE程序中編寫deviceBrowses組件,搭建用戶數(shù)據(jù)篩選界面,如時(shí)間段篩選,設(shè)備名稱篩選等,在此基礎(chǔ)之上編寫getCollectionName=params=>{return,axios.get(`${local_host}/collectionpoint/`, { params: params })}函數(shù),將篩選條件發(fā)送到后端程序,后端獲取篩選條件信息后,實(shí)現(xiàn)數(shù)據(jù)篩選功能。

    (3)數(shù)據(jù)展示。在Vue框架中引入jqplot功能包,該功能包用于在前端頁面繪制曲線圖,通過調(diào)用MYM.jqplot函數(shù),在該函數(shù)中添加數(shù)據(jù)列表,axes、axesDefaults、highlighter、cursor、title等參數(shù)來繪制曲線圖;服務(wù)端使用流行的rest api接口的形式給前端提供數(shù)據(jù)。前端頁面通過axios()函數(shù)向服務(wù)端請(qǐng)求數(shù)據(jù),服務(wù)端首先查看客戶端是否已經(jīng)登錄,如果有則提供對(duì)用戶開放的api接口。隨后繼續(xù)監(jiān)聽是否有具體請(qǐng)求某個(gè)api接口,如果有則將采集到的機(jī)器人最新數(shù)據(jù)封裝成JSON格式發(fā)送到客戶端,實(shí)現(xiàn)數(shù)據(jù)展示功能。

    3.3 數(shù)據(jù)實(shí)時(shí)監(jiān)控

    數(shù)據(jù)實(shí)時(shí)監(jiān)控展示主要分為自定義Web界面的數(shù)據(jù)監(jiān)控與阿里云DataV的數(shù)據(jù)監(jiān)控。

    自定義Web界面數(shù)據(jù)監(jiān)控是通過MQTT協(xié)議實(shí)現(xiàn),實(shí)現(xiàn)與MQTT服務(wù)器交互、采集點(diǎn)篩選和數(shù)據(jù)實(shí)時(shí)顯示等功能,如圖9所示,具體實(shí)現(xiàn)方式如下。

    圖9 數(shù)據(jù)監(jiān)控模塊功能圖

    (1)與MQTT服務(wù)器交互。在前端Vue項(xiàng)目中引入Paho功能包,用于實(shí)現(xiàn)MQTT客戶端功能,生成MQTT客戶端前先編寫用于連接MQTT服務(wù)器的參數(shù)列表,如服務(wù)器IP地址、端口號(hào)等,具體為ServerUri=’mq.tongxinmao.com’ServerPort=18832;TimeOut=5;KeepAlive=100;CleanSession=false;SSL=false;在此基礎(chǔ)上調(diào)用new Paho.MQTT.Client函數(shù),創(chuàng)建MQTT Client實(shí)例,編寫onConnect()函數(shù)和onConnectionLost()函數(shù)用于登錄和斷開MQTT服務(wù)器;編寫WriteToStatus()函數(shù),用于描述MQTT狀態(tài);編寫onMessageArrived()函數(shù),用于接收MQTT服務(wù)器的消息,實(shí)現(xiàn)與MQTT服務(wù)器數(shù)據(jù)交互功能。

    (2)采集點(diǎn)篩選。在前端Vue項(xiàng)目中編寫getChartAllData()函數(shù),從MQTT服務(wù)器獲取所有上傳的數(shù)據(jù),編寫editChartData()函數(shù),用于移除繪制到曲線圖上的部分曲線,編寫collectData:function()函數(shù),用于獲取實(shí)時(shí)數(shù)據(jù),實(shí)現(xiàn)采集點(diǎn)篩選功能。

    (3)數(shù)據(jù)實(shí)時(shí)顯示。搭建在數(shù)據(jù)采集客戶端的MQTT Client,不斷將數(shù)據(jù)以0.5 s間隔上傳到MQTT服務(wù)器,位于前端界面的MQTT客戶端訂閱MQTT服務(wù)器上該主題,獲取數(shù)據(jù),編寫this.plot= MYM.jqplot(‘UserChart’, SeriesData)函數(shù),將采集到的數(shù)據(jù)實(shí)時(shí)顯示在表格和曲線圖中,通過修改seriesDefaults、axes、legend、highlighter等參數(shù),更改曲線樣式,實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)顯示功能。

    阿里云DataV的數(shù)據(jù)監(jiān)控界面是通過使用阿里云DataV中的組件,搭建整個(gè)UI界面,DataV搭建頁面方便簡(jiǎn)潔,使用阿里云所提供的組件,拖拽到頁面即可形成一個(gè)界面,界面酷炫。數(shù)據(jù)接口有多種方式,比如api接口,靜態(tài)數(shù)據(jù)等。本方案使用最常見的api數(shù)據(jù)接口的形式。后端服務(wù)器只需要將數(shù)據(jù)以json的數(shù)據(jù)格式,以api接口方式開放,然后通過DataV獲取數(shù)據(jù),通過使用曲線表,數(shù)據(jù)列表等工具形成大屏界面,如圖10所示。

    圖10 DataV大屏展示圖

    3.4 三維動(dòng)畫展示

    本模塊使用soildworks對(duì)SCARA機(jī)器人進(jìn)行3D建模。soildworks[25]與其他主流的3維制圖軟件相比,做機(jī)械機(jī)構(gòu)設(shè)計(jì),鈑金設(shè)計(jì)等具有很大的優(yōu)勢(shì)。建模方案是將SCARA機(jī)器人分為5個(gè)部分進(jìn)行建模,如底座,連桿等。圖11所示是機(jī)器人底座3維模型圖。對(duì)機(jī)器人的各部件進(jìn)行建模后,將3D模型以stl的文件格式導(dǎo)出。

    圖11 底座3維模型圖

    在3D界面的開發(fā)中,需要使用到WebGL類庫three.js[26],three.js在WebGL的基礎(chǔ)上進(jìn)行了進(jìn)一步地封裝和簡(jiǎn)化開發(fā)過程。在此基礎(chǔ)上,需要導(dǎo)入STLLoader.js類庫,該庫功能是將stl文件導(dǎo)入到前端頁面當(dāng)中,具體實(shí)現(xiàn)方式如下。

    (1)初始化場(chǎng)景。場(chǎng)景是所有物體的容器,在Three.js中場(chǎng)景就只有一種,用Three.Scene來表示,要構(gòu)件一個(gè)場(chǎng)景需要new一個(gè)對(duì)象,代碼為var scene=new Three.Scene()。

    (2)初始化相機(jī)。相機(jī)類型選擇透視相機(jī),該類型所展示的效果更接近人眼視覺效果,代碼是This.camera=Three.PerspectiveCamera(70, 800/600, 0.1,10)。

    (3)初始化渲染器。渲染器決定了渲染的結(jié)果并且以怎樣的方式來繪制,代碼如下:

    var renderer=new Three.WebGLRenderer()

    renderer.setSize(800,600)

    this.renderer.render(this.scene, this.camera)

    在完成一個(gè)3維場(chǎng)景的基本框架后,添加3維物體、光源,實(shí)例化模型并加載對(duì)象,導(dǎo)入SCARA機(jī)器人各部件的3維模型,對(duì)模型對(duì)象的材質(zhì)、網(wǎng)格、大小等進(jìn)行定義,圖12為機(jī)器人3維展示界面。

    圖12 3維展示界面

    4 實(shí)驗(yàn)測(cè)試與分析

    通過實(shí)驗(yàn)驗(yàn)證本系統(tǒng)的可行性,首先測(cè)試本地客戶端的數(shù)據(jù)采集模塊,界面如圖13所示,上半部分用于設(shè)置機(jī)器人控制器的IP地址,連接控制器。下半部分用于查看節(jié)點(diǎn)樹數(shù)據(jù),數(shù)據(jù)操作和節(jié)點(diǎn)訂閱等。當(dāng)本地客戶端運(yùn)行時(shí)監(jiān)測(cè)診斷如圖14所示,從圖中可看出當(dāng)客戶端開始采集數(shù)據(jù)時(shí),進(jìn)程內(nèi)存會(huì)變大,但整個(gè)采集階段一直處于平穩(wěn)階段,其中CPU占有率一直處于低消耗狀態(tài),具有較高的效率。

    圖13 OPC UA數(shù)據(jù)采集界面

    圖14 客戶端運(yùn)行監(jiān)測(cè)診斷圖

    其次測(cè)試本地客戶端的數(shù)據(jù)存儲(chǔ)模塊,界面如圖15所示,從操作界面可知,數(shù)據(jù)有多種存儲(chǔ)路徑,用戶可對(duì)不同種類的機(jī)器人進(jìn)行數(shù)據(jù)采集以及存儲(chǔ),系統(tǒng)不需要額外設(shè)計(jì)數(shù)據(jù)庫表進(jìn)行數(shù)據(jù)存儲(chǔ),從而提高了系統(tǒng)的可擴(kuò)展性。同時(shí),通信效率達(dá)到每50 ms發(fā)送一個(gè)數(shù)據(jù)包,客戶端采集的數(shù)據(jù)量為2 000,經(jīng)過MySQL模塊存儲(chǔ)后,數(shù)據(jù)庫接收到的數(shù)據(jù)量為1 982,丟包率不超過1%。

    圖15 數(shù)據(jù)存儲(chǔ)模塊界面

    本地客戶端的MQTT數(shù)據(jù)交互模塊測(cè)試界面如圖16所示,從操作界面可知,用戶可根據(jù)自己的需求上傳數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行篩選。網(wǎng)頁端的MQTT客戶端測(cè)試界面如圖17所示,主要包括連接MQTT服務(wù)器,查看數(shù)據(jù)節(jié)點(diǎn),繪制波形圖,移除曲線等操作。其中本地客戶端的MQTT客戶端數(shù)據(jù)上傳間隔設(shè)置為25 ms,網(wǎng)頁端的MQTT客戶端運(yùn)行時(shí)監(jiān)測(cè)診斷如圖18所示,由圖可知,接收到數(shù)據(jù)的時(shí)間間隔在25~30 ms之間,延時(shí)較低,可以滿足系統(tǒng)實(shí)時(shí)性的要求。

    圖16 數(shù)據(jù)交互模塊界面

    圖17 用戶登錄界面

    圖18 MQTT客戶端運(yùn)行監(jiān)測(cè)診斷圖

    Web遠(yuǎn)程監(jiān)控端的用戶登錄測(cè)試界面如圖19所示,系統(tǒng)實(shí)現(xiàn)了用戶的登錄操作,與后端的數(shù)據(jù)交互信息如圖20所示,由圖可知,通過驗(yàn)證后只返回?zé)o規(guī)律的token值,保證了用戶個(gè)人信息與數(shù)據(jù)的安全性。

    圖19 用戶登錄界面

    圖20 數(shù)據(jù)交互信息圖

    Web遠(yuǎn)程監(jiān)控端的設(shè)備瀏覽測(cè)試界面如圖21所示,設(shè)備列表欄用來顯示設(shè)備以及采集點(diǎn)信息。設(shè)備瀏覽界面的右側(cè)是用戶所選擇的設(shè)備的所有數(shù)據(jù),該模塊上半部分顯示用戶選取的單設(shè)備下的所有采集點(diǎn)信息,包括采集點(diǎn)名稱,采集的數(shù)量,初次采集時(shí)間以及最后一次采集時(shí)間;下半部分顯示用戶選取的采集點(diǎn)的所有數(shù)據(jù),包括數(shù)據(jù)的名稱和采集時(shí)間。

    圖21 設(shè)備瀏覽測(cè)試界面

    Web遠(yuǎn)程監(jiān)控端的數(shù)據(jù)查詢測(cè)試界面如圖22所示,設(shè)備數(shù)據(jù)查詢界面的中間部分的頂部用來選擇篩選條件,后端系統(tǒng)根據(jù)前端提供的篩選條件返回采集點(diǎn)數(shù)據(jù)和信息;中間部分的中部用來顯示經(jīng)過篩選查詢后采集點(diǎn)信息,包括該采集點(diǎn)的名稱,采集點(diǎn)總數(shù),初次采集時(shí)間以及末次采集時(shí)間;中間部分的底部用來將采集點(diǎn)的數(shù)據(jù)曲線化的形式展示出來。頁面的右側(cè)部分用來顯示所選取的采集點(diǎn)的所有數(shù)據(jù)以及采集時(shí)間。

    圖22 數(shù)據(jù)查詢測(cè)試界面

    實(shí)驗(yàn)結(jié)果表明,系統(tǒng)分塊化設(shè)計(jì)有利于整個(gè)系統(tǒng)的穩(wěn)定性、高效性和可擴(kuò)展性,同時(shí)前后端分離的方式使系統(tǒng)出現(xiàn)的錯(cuò)誤更容易查找,維護(hù)更加容易。

    5 結(jié) 論

    本文研究了一種基于云平臺(tái)的機(jī)器人監(jiān)控系統(tǒng),基于OPC UA協(xié)議、MySQL數(shù)據(jù)庫技術(shù)及前后端分離技術(shù)相結(jié)合進(jìn)行搭建,同時(shí),該系統(tǒng)掛載于阿里云平臺(tái)。在數(shù)據(jù)采集過程中,不需要考慮底層系統(tǒng)的差異性,提高了開發(fā)效率,降低了開發(fā)成本。Web系統(tǒng)采用前后端分離的方式,該方式開發(fā)周期短,系統(tǒng)穩(wěn)定性高。系統(tǒng)針對(duì)SCARA機(jī)器人進(jìn)行實(shí)時(shí)采集數(shù)據(jù),通過MQTT客戶端將數(shù)據(jù)傳送到位于云端的MQTT服務(wù)器,位于可視化界面的MQTT客戶端將MQTT服務(wù)器接收到數(shù)據(jù)進(jìn)行實(shí)時(shí)展示和3維展示。目前市面上的機(jī)器人都具有以太網(wǎng)接口,且OPC UA協(xié)議使通訊有統(tǒng)一的標(biāo)準(zhǔn),因此本系統(tǒng)對(duì)于開發(fā)機(jī)器人監(jiān)控系統(tǒng),具有一定的參考價(jià)值。

    猜你喜歡
    客戶端服務(wù)器界面
    國(guó)企黨委前置研究的“四個(gè)界面”
    通信控制服務(wù)器(CCS)維護(hù)終端的設(shè)計(jì)與實(shí)現(xiàn)
    縣級(jí)臺(tái)在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶端
    孵化垂直頻道:新聞客戶端新策略
    基于Vanconnect的智能家居瘦客戶端的設(shè)計(jì)與實(shí)現(xiàn)
    基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
    人機(jī)交互界面發(fā)展趨勢(shì)研究
    得形忘意的服務(wù)器標(biāo)準(zhǔn)
    計(jì)算機(jī)網(wǎng)絡(luò)安全服務(wù)器入侵與防御
    手機(jī)界面中圖形符號(hào)的發(fā)展趨向
    新聞傳播(2015年11期)2015-07-18 11:15:04
    国产乱来视频区| 国产av码专区亚洲av| 深夜a级毛片| 国国产精品蜜臀av免费| 春色校园在线视频观看| 国产精品久久久久久久久免| 国产成人一区二区在线| 在线观看av片永久免费下载| 中文精品一卡2卡3卡4更新| 日本av手机在线免费观看| 国产片特级美女逼逼视频| 亚洲不卡免费看| 内射极品少妇av片p| 国产免费一级a男人的天堂| 国产成人免费观看mmmm| 能在线免费看毛片的网站| 女的被弄到高潮叫床怎么办| 免费大片黄手机在线观看| 2022亚洲国产成人精品| 国产精品爽爽va在线观看网站| 老司机影院成人| 观看免费一级毛片| 国产有黄有色有爽视频| 亚洲精品色激情综合| 国产免费一区二区三区四区乱码| 日日啪夜夜爽| 精品熟女少妇av免费看| 国产黄频视频在线观看| 99久久精品热视频| 国产av不卡久久| 欧美精品国产亚洲| 青青草视频在线视频观看| 嫩草影院新地址| 国精品久久久久久国模美| 久久6这里有精品| 亚洲国产精品成人综合色| av卡一久久| 一级毛片我不卡| 日本欧美国产在线视频| 国产精品国产三级国产专区5o| 热re99久久精品国产66热6| 欧美3d第一页| 中文在线观看免费www的网站| 在线观看人妻少妇| 人人妻人人看人人澡| 亚洲精品一二三| 免费av观看视频| kizo精华| .国产精品久久| 99精国产麻豆久久婷婷| 男人舔奶头视频| 国产黄频视频在线观看| 中国三级夫妇交换| 欧美一区二区亚洲| 国语对白做爰xxxⅹ性视频网站| 久久精品国产亚洲网站| 人人妻人人爽人人添夜夜欢视频 | 亚洲三级黄色毛片| 22中文网久久字幕| 中国国产av一级| 少妇人妻精品综合一区二区| 91精品一卡2卡3卡4卡| 国产乱人视频| 国产精品三级大全| 三级国产精品片| 97超碰精品成人国产| 男女啪啪激烈高潮av片| 欧美性感艳星| 亚洲美女搞黄在线观看| 欧美日韩综合久久久久久| 亚洲国产av新网站| 免费观看的影片在线观看| videos熟女内射| 国产成人精品福利久久| 免费不卡的大黄色大毛片视频在线观看| 国语对白做爰xxxⅹ性视频网站| av在线app专区| 亚洲经典国产精华液单| av又黄又爽大尺度在线免费看| 最近手机中文字幕大全| 成人一区二区视频在线观看| 亚洲精品自拍成人| 搡老乐熟女国产| 亚洲精品第二区| 亚洲人成网站在线观看播放| 国产精品国产三级专区第一集| 91久久精品国产一区二区三区| 亚洲欧美一区二区三区国产| 久久久久久久久久成人| 免费播放大片免费观看视频在线观看| 国产成人a∨麻豆精品| 丝瓜视频免费看黄片| 成年版毛片免费区| 亚洲一级一片aⅴ在线观看| 一本久久精品| 久久久精品免费免费高清| 国产永久视频网站| 观看美女的网站| 亚洲精品中文字幕在线视频 | 超碰97精品在线观看| 伦精品一区二区三区| 亚洲成人中文字幕在线播放| 国产免费视频播放在线视频| 国产色婷婷99| 22中文网久久字幕| 一区二区三区四区激情视频| 久久99热这里只频精品6学生| 欧美xxxx性猛交bbbb| 小蜜桃在线观看免费完整版高清| 欧美日韩视频精品一区| 欧美xxxx黑人xx丫x性爽| 精品人妻一区二区三区麻豆| 久久精品人妻少妇| 偷拍熟女少妇极品色| 美女高潮的动态| 一个人看视频在线观看www免费| 国产亚洲5aaaaa淫片| 成人漫画全彩无遮挡| 99热这里只有是精品在线观看| 麻豆成人av视频| 亚洲精品日韩av片在线观看| 色播亚洲综合网| 久久精品国产鲁丝片午夜精品| 人体艺术视频欧美日本| 男女国产视频网站| 一级av片app| 大香蕉久久网| 七月丁香在线播放| 免费黄色在线免费观看| 99久久九九国产精品国产免费| 亚洲欧美成人综合另类久久久| 丰满少妇做爰视频| 97超碰精品成人国产| 哪个播放器可以免费观看大片| 国产av国产精品国产| 欧美成人午夜免费资源| 日本免费在线观看一区| 国产av不卡久久| 久久久久性生活片| 国产精品一区二区在线观看99| 我的女老师完整版在线观看| 免费黄色在线免费观看| 大香蕉久久网| 麻豆国产97在线/欧美| 一级黄片播放器| 十八禁网站网址无遮挡 | 日产精品乱码卡一卡2卡三| 综合色丁香网| 夜夜爽夜夜爽视频| 日本色播在线视频| videossex国产| 国产探花在线观看一区二区| 日韩中字成人| av女优亚洲男人天堂| 欧美高清成人免费视频www| 亚洲欧美日韩无卡精品| 99久久精品国产国产毛片| 国产在线男女| 亚洲伊人久久精品综合| 99久国产av精品国产电影| 一级毛片aaaaaa免费看小| 午夜福利在线在线| 性色avwww在线观看| 午夜免费观看性视频| 2021天堂中文幕一二区在线观| av国产精品久久久久影院| 99久久人妻综合| 国产免费一级a男人的天堂| 嫩草影院精品99| 中文字幕制服av| 夜夜看夜夜爽夜夜摸| 欧美国产精品一级二级三级 | 乱系列少妇在线播放| 亚洲国产精品999| 日韩不卡一区二区三区视频在线| 一本一本综合久久| 精品少妇黑人巨大在线播放| 精品午夜福利在线看| 久久久久国产精品人妻一区二区| 亚洲欧美日韩东京热| 国产精品国产三级国产av玫瑰| 日韩 亚洲 欧美在线| 亚洲,欧美,日韩| 搡女人真爽免费视频火全软件| 国产亚洲精品久久久com| 赤兔流量卡办理| 日韩伦理黄色片| 日韩亚洲欧美综合| 岛国毛片在线播放| 97在线视频观看| 美女视频免费永久观看网站| 我的老师免费观看完整版| 18禁在线播放成人免费| 国产成人精品一,二区| 只有这里有精品99| 99久久精品国产国产毛片| 91精品一卡2卡3卡4卡| 亚洲美女视频黄频| 麻豆乱淫一区二区| 精品熟女少妇av免费看| 91久久精品国产一区二区成人| 在线观看一区二区三区激情| 美女主播在线视频| 国产精品99久久99久久久不卡 | 久久国内精品自在自线图片| 日本熟妇午夜| 久久久久久久午夜电影| 国产日韩欧美亚洲二区| 亚洲av中文av极速乱| 69av精品久久久久久| 亚洲人成网站高清观看| 久久精品久久久久久噜噜老黄| 大香蕉97超碰在线| 九草在线视频观看| 国产高清国产精品国产三级 | 国产精品一区二区在线观看99| 麻豆国产97在线/欧美| 午夜精品国产一区二区电影 | 免费不卡的大黄色大毛片视频在线观看| 国产成人免费无遮挡视频| 青春草国产在线视频| 亚洲av中文字字幕乱码综合| 亚洲真实伦在线观看| 一级a做视频免费观看| 国产亚洲精品久久久com| av黄色大香蕉| 午夜福利在线观看免费完整高清在| 久久久久精品久久久久真实原创| 成人无遮挡网站| 成人亚洲精品av一区二区| 搞女人的毛片| 视频区图区小说| 最近中文字幕高清免费大全6| 欧美丝袜亚洲另类| 高清视频免费观看一区二区| 亚洲精品日韩在线中文字幕| 99九九线精品视频在线观看视频| 国产一级毛片在线| 久久久久久久久久成人| 国产精品av视频在线免费观看| 国精品久久久久久国模美| 晚上一个人看的免费电影| 欧美人与善性xxx| 精品人妻视频免费看| 久久人人爽av亚洲精品天堂 | 国产在线男女| 亚洲av福利一区| 午夜精品国产一区二区电影 | 中文乱码字字幕精品一区二区三区| 午夜免费观看性视频| 亚洲精品,欧美精品| 777米奇影视久久| 看十八女毛片水多多多| 国内揄拍国产精品人妻在线| 一区二区三区乱码不卡18| 日韩一区二区视频免费看| 国产黄色免费在线视频| 在线观看美女被高潮喷水网站| 欧美极品一区二区三区四区| 成人亚洲欧美一区二区av| 欧美另类一区| 又爽又黄无遮挡网站| www.av在线官网国产| 国产伦精品一区二区三区视频9| 2021少妇久久久久久久久久久| a级一级毛片免费在线观看| 少妇被粗大猛烈的视频| 亚洲婷婷狠狠爱综合网| 99久久人妻综合| 国产有黄有色有爽视频| 一级毛片 在线播放| 婷婷色综合www| 国产日韩欧美在线精品| 国产爱豆传媒在线观看| 听说在线观看完整版免费高清| 国产精品伦人一区二区| 伦理电影大哥的女人| 亚洲美女视频黄频| 2021少妇久久久久久久久久久| 秋霞伦理黄片| 免费高清在线观看视频在线观看| 国精品久久久久久国模美| 中文字幕人妻熟人妻熟丝袜美| 国产高潮美女av| 色视频在线一区二区三区| 99热这里只有精品一区| 日本免费在线观看一区| 欧美性猛交╳xxx乱大交人| 亚洲av成人精品一区久久| 国内揄拍国产精品人妻在线| 成人亚洲精品av一区二区| 免费看a级黄色片| 亚洲欧美中文字幕日韩二区| 成人毛片60女人毛片免费| 好男人视频免费观看在线| 不卡视频在线观看欧美| 欧美日韩视频高清一区二区三区二| 国产欧美日韩精品一区二区| 欧美精品国产亚洲| 丝瓜视频免费看黄片| 成年女人看的毛片在线观看| 成人特级av手机在线观看| 啦啦啦啦在线视频资源| 岛国毛片在线播放| 国产成人福利小说| 国产欧美日韩一区二区三区在线 | 亚洲经典国产精华液单| 中文精品一卡2卡3卡4更新| 在线免费观看不下载黄p国产| 国产成人一区二区在线| 亚洲精品乱久久久久久| 国产视频内射| 黄色日韩在线| 欧美少妇被猛烈插入视频| 亚洲精品中文字幕在线视频 | 毛片一级片免费看久久久久| 大又大粗又爽又黄少妇毛片口| 亚洲精品亚洲一区二区| 亚洲婷婷狠狠爱综合网| 看黄色毛片网站| 国产黄色免费在线视频| av国产久精品久网站免费入址| 99热这里只有是精品50| 日韩欧美精品v在线| 男男h啪啪无遮挡| 真实男女啪啪啪动态图| 亚洲欧美精品专区久久| 国语对白做爰xxxⅹ性视频网站| 免费人成在线观看视频色| 亚洲欧美精品专区久久| 毛片女人毛片| 天天一区二区日本电影三级| 国产亚洲91精品色在线| 久久久久久久国产电影| 国内揄拍国产精品人妻在线| 高清毛片免费看| 黄片wwwwww| 久久精品久久久久久久性| 亚洲av中文av极速乱| 简卡轻食公司| 亚洲av欧美aⅴ国产| 毛片女人毛片| 国产免费一级a男人的天堂| 婷婷色综合www| 欧美日韩综合久久久久久| 欧美成人a在线观看| 欧美激情久久久久久爽电影| 久久韩国三级中文字幕| 亚洲av二区三区四区| 日日摸夜夜添夜夜爱| 欧美人与善性xxx| 欧美性感艳星| 日韩国内少妇激情av| 亚洲av电影在线观看一区二区三区 | 午夜福利在线在线| 成年免费大片在线观看| 国产精品成人在线| 女人被狂操c到高潮| 一区二区三区精品91| 最近的中文字幕免费完整| 亚洲欧美一区二区三区黑人 | 嫩草影院入口| 成人亚洲欧美一区二区av| 欧美成人a在线观看| 成人免费观看视频高清| 日日摸夜夜添夜夜爱| 国产欧美亚洲国产| 国产成人a∨麻豆精品| 亚洲色图av天堂| 亚洲国产精品成人综合色| 国产毛片a区久久久久| 嫩草影院新地址| 亚洲欧美日韩东京热| 国产黄片视频在线免费观看| 五月开心婷婷网| 久久精品久久精品一区二区三区| www.av在线官网国产| 欧美zozozo另类| 精品酒店卫生间| 一区二区三区四区激情视频| 黄色日韩在线| 午夜福利视频1000在线观看| 国产老妇女一区| 插阴视频在线观看视频| 日本-黄色视频高清免费观看| 性色avwww在线观看| 熟女电影av网| 99久久精品国产国产毛片| 欧美xxⅹ黑人| 国产成人aa在线观看| 男女边摸边吃奶| 韩国av在线不卡| 自拍偷自拍亚洲精品老妇| 久久精品久久久久久久性| 欧美日韩在线观看h| 嘟嘟电影网在线观看| 亚洲精品成人久久久久久| 香蕉精品网在线| 日本午夜av视频| 18禁动态无遮挡网站| 在线观看一区二区三区| 亚洲av在线观看美女高潮| 日本wwww免费看| 国产在线一区二区三区精| 九九爱精品视频在线观看| 欧美日韩精品成人综合77777| 中文字幕亚洲精品专区| 久久久久久伊人网av| tube8黄色片| 久久人人爽人人爽人人片va| 国产成人午夜福利电影在线观看| 超碰av人人做人人爽久久| 国产伦在线观看视频一区| 青青草视频在线视频观看| 99热网站在线观看| 亚洲av成人精品一区久久| 一级片'在线观看视频| 欧美潮喷喷水| 一级二级三级毛片免费看| 久久精品国产亚洲av涩爱| 欧美zozozo另类| 三级男女做爰猛烈吃奶摸视频| 亚洲国产最新在线播放| 一级毛片黄色毛片免费观看视频| 亚洲欧美中文字幕日韩二区| av在线观看视频网站免费| 一级av片app| 久久精品久久久久久噜噜老黄| 久久久久久久久久久丰满| 国产精品国产三级国产av玫瑰| 精品久久久噜噜| 国产男女内射视频| 久久亚洲国产成人精品v| 校园人妻丝袜中文字幕| 亚洲成人av在线免费| 国产在视频线精品| 欧美精品一区二区大全| 男人和女人高潮做爰伦理| 大香蕉久久网| av国产精品久久久久影院| 午夜免费男女啪啪视频观看| 日本猛色少妇xxxxx猛交久久| 亚洲天堂国产精品一区在线| 日本wwww免费看| 嘟嘟电影网在线观看| 久久久午夜欧美精品| 一本一本综合久久| 肉色欧美久久久久久久蜜桃 | 热99国产精品久久久久久7| 人妻制服诱惑在线中文字幕| 天美传媒精品一区二区| 欧美人与善性xxx| 国产一区二区亚洲精品在线观看| 免费人成在线观看视频色| 免费不卡的大黄色大毛片视频在线观看| 亚洲人成网站在线播| 久久国产乱子免费精品| 啦啦啦啦在线视频资源| 日本与韩国留学比较| 免费黄色在线免费观看| 99热国产这里只有精品6| av黄色大香蕉| 成人特级av手机在线观看| 国产探花极品一区二区| 亚洲精品国产av成人精品| 久久热精品热| 久热久热在线精品观看| 七月丁香在线播放| 国产午夜精品一二区理论片| 69人妻影院| 精品国产一区二区三区久久久樱花 | 亚洲国产精品成人综合色| 肉色欧美久久久久久久蜜桃 | 国产精品av视频在线免费观看| 天堂网av新在线| 我要看日韩黄色一级片| .国产精品久久| 男人和女人高潮做爰伦理| av在线观看视频网站免费| 蜜桃久久精品国产亚洲av| 大码成人一级视频| 亚洲,欧美,日韩| 嫩草影院入口| 日韩人妻高清精品专区| 午夜精品国产一区二区电影 | 欧美高清性xxxxhd video| 免费不卡的大黄色大毛片视频在线观看| 波多野结衣巨乳人妻| 啦啦啦中文免费视频观看日本| 成人亚洲欧美一区二区av| 精品人妻熟女av久视频| 3wmmmm亚洲av在线观看| 亚洲人成网站高清观看| 一级毛片久久久久久久久女| 国产av码专区亚洲av| 精品人妻熟女av久视频| 99热国产这里只有精品6| 黄色欧美视频在线观看| 亚洲精品久久午夜乱码| 你懂的网址亚洲精品在线观看| 亚洲精品成人av观看孕妇| 视频区图区小说| 成人一区二区视频在线观看| 一区二区三区四区激情视频| av在线蜜桃| 免费看日本二区| 99久久中文字幕三级久久日本| 国产精品国产av在线观看| 午夜福利视频精品| 亚洲欧美一区二区三区黑人 | 亚洲精品久久午夜乱码| 日韩国内少妇激情av| 国产成人免费无遮挡视频| 欧美日韩综合久久久久久| 午夜福利视频1000在线观看| 交换朋友夫妻互换小说| 国产乱来视频区| 2021天堂中文幕一二区在线观| 日韩 亚洲 欧美在线| 2022亚洲国产成人精品| 国产精品久久久久久精品古装| 日本色播在线视频| 99热这里只有精品一区| 免费电影在线观看免费观看| 大又大粗又爽又黄少妇毛片口| 我要看日韩黄色一级片| 九草在线视频观看| 亚洲精品国产av成人精品| 寂寞人妻少妇视频99o| 秋霞在线观看毛片| 日韩中字成人| 国产日韩欧美亚洲二区| 亚洲内射少妇av| 国产伦理片在线播放av一区| 深爱激情五月婷婷| 免费大片黄手机在线观看| 午夜老司机福利剧场| 国产免费一级a男人的天堂| 少妇熟女欧美另类| 哪个播放器可以免费观看大片| 九九爱精品视频在线观看| 黑人高潮一二区| 中文在线观看免费www的网站| 国产成人91sexporn| 国产日韩欧美在线精品| 嫩草影院精品99| www.av在线官网国产| 日韩免费高清中文字幕av| 久久精品人妻少妇| 晚上一个人看的免费电影| 亚洲怡红院男人天堂| 亚洲在线观看片| 国产一区二区亚洲精品在线观看| 91狼人影院| 天天躁日日操中文字幕| 国产有黄有色有爽视频| 丝袜脚勾引网站| 自拍偷自拍亚洲精品老妇| 嘟嘟电影网在线观看| 久久久成人免费电影| 国产成人a区在线观看| 91久久精品国产一区二区三区| 黄色一级大片看看| 亚洲欧美清纯卡通| 亚洲精品亚洲一区二区| 蜜桃亚洲精品一区二区三区| 免费av毛片视频| 国产淫语在线视频| 欧美日韩视频高清一区二区三区二| 黄色日韩在线| 久久久久九九精品影院| 午夜福利网站1000一区二区三区| 国产成人aa在线观看| 91aial.com中文字幕在线观看| 亚洲av不卡在线观看| 草草在线视频免费看| 99久久人妻综合| 国产男人的电影天堂91| 欧美变态另类bdsm刘玥| 欧美日韩视频高清一区二区三区二| 伦理电影大哥的女人| 春色校园在线视频观看| 男女边摸边吃奶| 国产成人aa在线观看| 亚洲欧美日韩无卡精品| 直男gayav资源| 少妇的逼好多水| 亚洲欧美成人精品一区二区| 亚洲精品久久午夜乱码| 99精国产麻豆久久婷婷| 午夜爱爱视频在线播放| 深夜a级毛片| 久久精品国产亚洲av天美| 亚洲精品乱久久久久久| 另类亚洲欧美激情| 久久精品久久精品一区二区三区| 欧美日韩综合久久久久久| 国产人妻一区二区三区在| 嫩草影院入口| 自拍偷自拍亚洲精品老妇| 成人综合一区亚洲| 久久午夜福利片| 久久国产乱子免费精品| 80岁老熟妇乱子伦牲交| 高清欧美精品videossex| 26uuu在线亚洲综合色| 欧美高清成人免费视频www| 国产精品熟女久久久久浪| 视频区图区小说| 麻豆成人av视频| 熟女人妻精品中文字幕| 免费电影在线观看免费观看| 日韩国内少妇激情av| 在线免费十八禁| 国产精品一及|