• <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网站| 2021少妇久久久久久久久久久| 七月丁香在线播放| 一本色道久久久久久精品综合| 中文字幕色久视频| 国产精品亚洲av一区麻豆 | 秋霞在线观看毛片| 夜夜骑夜夜射夜夜干| 欧美人与性动交α欧美软件| av电影中文网址| 中文字幕精品免费在线观看视频| 国产老妇伦熟女老妇高清| 好男人视频免费观看在线| 国产精品熟女久久久久浪| 啦啦啦视频在线资源免费观看| 精品少妇内射三级| 国产免费视频播放在线视频| 曰老女人黄片| 国产精品蜜桃在线观看| 久久久国产欧美日韩av| 一级爰片在线观看| 80岁老熟妇乱子伦牲交| 亚洲成av片中文字幕在线观看| 大香蕉久久网| 欧美最新免费一区二区三区| videosex国产| 天天添夜夜摸| 丝袜美腿诱惑在线| 欧美精品人与动牲交sv欧美| 亚洲av电影在线进入| 国产男女超爽视频在线观看| 亚洲av日韩在线播放| 亚洲一区二区三区欧美精品| 亚洲成色77777| 香蕉丝袜av| 99re6热这里在线精品视频| 丝袜美腿诱惑在线| 亚洲精品久久久久久婷婷小说| 极品人妻少妇av视频| 夫妻午夜视频| 99久久综合免费| 国产片特级美女逼逼视频| 久久 成人 亚洲| 一区二区三区四区激情视频| 国产高清国产精品国产三级| 久久午夜综合久久蜜桃| 欧美另类一区| 日本av手机在线免费观看| 亚洲色图综合在线观看| 丁香六月欧美| √禁漫天堂资源中文www| 国产精品欧美亚洲77777| 久久午夜综合久久蜜桃| 精品少妇久久久久久888优播| 午夜福利视频精品| 少妇猛男粗大的猛烈进出视频| 99九九在线精品视频| a级毛片黄视频| 黄网站色视频无遮挡免费观看| 欧美 日韩 精品 国产| 亚洲少妇的诱惑av| 亚洲第一av免费看| 亚洲精品久久成人aⅴ小说| 久热这里只有精品99| 亚洲男人天堂网一区| 国产又色又爽无遮挡免| 人人妻,人人澡人人爽秒播 | 亚洲欧美精品自产自拍| 永久免费av网站大全| 国产精品久久久久久人妻精品电影 | 午夜福利影视在线免费观看| 一边摸一边抽搐一进一出视频| 国产亚洲av高清不卡| 99热全是精品| 精品亚洲乱码少妇综合久久| 国产亚洲av片在线观看秒播厂| 少妇被粗大的猛进出69影院| 人人妻人人爽人人添夜夜欢视频| 色网站视频免费| 国产av码专区亚洲av| 国产精品久久久久久人妻精品电影 | 免费在线观看视频国产中文字幕亚洲 | 最近2019中文字幕mv第一页| 麻豆精品久久久久久蜜桃| 午夜91福利影院| 欧美日韩视频高清一区二区三区二| 国产片内射在线| 亚洲精品国产av成人精品| 亚洲专区中文字幕在线 | av网站在线播放免费| 久久 成人 亚洲| 在现免费观看毛片| 日本欧美国产在线视频| 久久久久久久大尺度免费视频| 亚洲精品久久成人aⅴ小说| 女性生殖器流出的白浆| 中文天堂在线官网| 日本av免费视频播放| 欧美日韩亚洲国产一区二区在线观看 | 天堂俺去俺来也www色官网| 丝瓜视频免费看黄片| 国产av一区二区精品久久| 国产精品一区二区在线观看99| 国产精品 国内视频| 欧美日韩福利视频一区二区| 日韩av免费高清视频| 啦啦啦在线免费观看视频4| 在线 av 中文字幕| 国产成人欧美| 999精品在线视频| 女人高潮潮喷娇喘18禁视频| 国产淫语在线视频| 欧美激情 高清一区二区三区| 18禁动态无遮挡网站| 国产精品一区二区在线不卡| 国产精品女同一区二区软件| 王馨瑶露胸无遮挡在线观看| 99热全是精品| 日韩一区二区三区影片| 纯流量卡能插随身wifi吗| 国产成人欧美| 国产一区有黄有色的免费视频| 伊人久久大香线蕉亚洲五| 免费少妇av软件| 一级爰片在线观看| www.自偷自拍.com| 伊人久久国产一区二区| 九九爱精品视频在线观看| 熟妇人妻不卡中文字幕| 极品少妇高潮喷水抽搐| 久久久精品免费免费高清| 在线精品无人区一区二区三| 一本一本久久a久久精品综合妖精| 欧美日本中文国产一区发布| 色精品久久人妻99蜜桃| 久久久精品国产亚洲av高清涩受| 美女扒开内裤让男人捅视频| 99九九在线精品视频| 亚洲欧美一区二区三区国产| 国产亚洲精品第一综合不卡| 日本黄色日本黄色录像| 久久精品国产亚洲av高清一级| av免费观看日本| 一级毛片电影观看| 精品一区二区三区av网在线观看 | 午夜日本视频在线| 亚洲欧洲国产日韩| 天堂8中文在线网| 免费日韩欧美在线观看| 久久精品亚洲熟妇少妇任你| 午夜精品国产一区二区电影| 国产乱人偷精品视频| 18禁国产床啪视频网站| 天天添夜夜摸| 叶爱在线成人免费视频播放| 男的添女的下面高潮视频| 婷婷色综合大香蕉| xxx大片免费视频| 久久综合国产亚洲精品| netflix在线观看网站| 久久人人爽人人片av| 搡老岳熟女国产| 99re6热这里在线精品视频| 国产欧美亚洲国产| 最近最新中文字幕大全免费视频 | 亚洲人成77777在线视频| 久久久久久久久久久久大奶| 国产熟女午夜一区二区三区| 国产精品久久久久久人妻精品电影 | 飞空精品影院首页| 无遮挡黄片免费观看| 黄色 视频免费看| 欧美日韩亚洲高清精品| 久久久久久人人人人人| 丁香六月天网| 久久av网站| 日韩熟女老妇一区二区性免费视频| 亚洲伊人色综图| 精品一区二区三卡| 久久久久精品人妻al黑| 最近最新中文字幕大全免费视频 | 伊人亚洲综合成人网| 黄频高清免费视频| 中文字幕人妻丝袜制服| 男女边摸边吃奶| 亚洲天堂av无毛| 一本—道久久a久久精品蜜桃钙片| 亚洲精品国产色婷婷电影| 亚洲美女黄色视频免费看| 日韩一卡2卡3卡4卡2021年| 2018国产大陆天天弄谢| 丰满乱子伦码专区| 国产精品人妻久久久影院| 搡老乐熟女国产| 一级毛片我不卡| 在线 av 中文字幕| 欧美成人精品欧美一级黄| 亚洲国产毛片av蜜桃av| 伊人久久国产一区二区| 国产精品国产av在线观看| 老司机影院毛片| 电影成人av| 久久久精品国产亚洲av高清涩受| 国产片内射在线| 久久久久久久久免费视频了| 一级毛片我不卡| 激情视频va一区二区三区| 无遮挡黄片免费观看| 亚洲第一青青草原| 香蕉丝袜av| 国产 一区精品| 爱豆传媒免费全集在线观看| 在线观看国产h片| 咕卡用的链子| 国产亚洲av高清不卡| 精品亚洲成国产av| 国产精品久久久av美女十八| 久久狼人影院| 精品人妻熟女毛片av久久网站| 国产精品一区二区在线观看99| a级毛片在线看网站| av在线观看视频网站免费| 国产97色在线日韩免费| 9色porny在线观看| 热99国产精品久久久久久7| 亚洲三区欧美一区| 人人妻,人人澡人人爽秒播 | 熟女少妇亚洲综合色aaa.| 成人影院久久| 咕卡用的链子| 黄色 视频免费看| 日韩精品免费视频一区二区三区| videosex国产| videosex国产| 亚洲精品,欧美精品| 国产成人免费观看mmmm| av天堂久久9| 天堂8中文在线网| 一区二区三区乱码不卡18| 最近2019中文字幕mv第一页| 十八禁高潮呻吟视频| 巨乳人妻的诱惑在线观看| 国产精品久久久人人做人人爽| 狠狠婷婷综合久久久久久88av| 极品人妻少妇av视频| 少妇猛男粗大的猛烈进出视频| 国产成人欧美| 老汉色av国产亚洲站长工具| 日本av免费视频播放| 久久久久久久久免费视频了| 秋霞在线观看毛片| 国产免费又黄又爽又色| 国产有黄有色有爽视频| 精品国产乱码久久久久久小说| av一本久久久久| 五月天丁香电影| 乱人伦中国视频| 国产一区二区三区综合在线观看| 男的添女的下面高潮视频| 日韩制服骚丝袜av| 久久人人爽av亚洲精品天堂| 成年人午夜在线观看视频| 极品少妇高潮喷水抽搐| 久久久久精品人妻al黑| 国产福利在线免费观看视频| 国产欧美日韩综合在线一区二区| 久久久久精品国产欧美久久久 | 丝袜在线中文字幕| 在线观看人妻少妇| 国产午夜精品一二区理论片| 欧美日韩一区二区视频在线观看视频在线| 超色免费av| 精品国产一区二区久久| 欧美中文综合在线视频| 午夜福利影视在线免费观看| 免费看av在线观看网站| 午夜福利视频在线观看免费| 国产在线视频一区二区| 电影成人av| 日韩大片免费观看网站| 丁香六月欧美| 天堂俺去俺来也www色官网| tube8黄色片| 99国产精品免费福利视频| 满18在线观看网站| 日韩精品有码人妻一区| 伦理电影免费视频| 欧美日韩亚洲高清精品| 国产高清不卡午夜福利| 日韩av在线免费看完整版不卡| 日本色播在线视频| 亚洲综合色网址| 亚洲色图综合在线观看| 97在线人人人人妻| 大香蕉久久成人网| 午夜91福利影院| 午夜福利一区二区在线看| 国产男人的电影天堂91| 亚洲精品日本国产第一区| 深夜精品福利| 精品午夜福利在线看| 另类精品久久| 亚洲,欧美,日韩| 精品午夜福利在线看| 亚洲国产成人一精品久久久| 日韩 欧美 亚洲 中文字幕| 国产精品 国内视频| 亚洲 欧美一区二区三区| 少妇精品久久久久久久| videosex国产| 在线观看免费午夜福利视频| av天堂久久9| 91成人精品电影| 90打野战视频偷拍视频| 国产精品一国产av| 91精品国产国语对白视频| 中文字幕亚洲精品专区| 国产女主播在线喷水免费视频网站| 国产99久久九九免费精品| 嫩草影视91久久| 成年美女黄网站色视频大全免费| 久久久久精品久久久久真实原创| 久久 成人 亚洲| 久久久久久人妻| 男女之事视频高清在线观看 | 美女中出高潮动态图| 天天操日日干夜夜撸| 高清av免费在线| 亚洲一区中文字幕在线| 免费少妇av软件| 亚洲精品aⅴ在线观看| av网站在线播放免费| 97精品久久久久久久久久精品| 两个人免费观看高清视频| 天天躁夜夜躁狠狠久久av| av福利片在线| 国产成人a∨麻豆精品| 九九爱精品视频在线观看| 看十八女毛片水多多多| 亚洲美女视频黄频| 亚洲国产最新在线播放| 欧美成人精品欧美一级黄| 啦啦啦 在线观看视频| av福利片在线| 卡戴珊不雅视频在线播放| 成年av动漫网址| 老司机影院毛片| 少妇人妻久久综合中文| 亚洲综合精品二区| 欧美97在线视频| 美女大奶头黄色视频| 欧美另类一区| 精品少妇一区二区三区视频日本电影 | 最近手机中文字幕大全| 亚洲欧美色中文字幕在线| 一级,二级,三级黄色视频| 久久久久精品国产欧美久久久 | 天天影视国产精品| 国产福利在线免费观看视频| 又粗又硬又长又爽又黄的视频| 下体分泌物呈黄色| 无遮挡黄片免费观看| 99国产综合亚洲精品| 一本—道久久a久久精品蜜桃钙片| 老司机影院成人| 黄色一级大片看看| 日韩制服骚丝袜av| 久久 成人 亚洲| 精品视频人人做人人爽| 欧美亚洲 丝袜 人妻 在线| 精品少妇内射三级| 欧美在线黄色| 国产一区二区在线观看av| 97人妻天天添夜夜摸| 亚洲成色77777| 欧美国产精品一级二级三级| 人人妻,人人澡人人爽秒播 | 精品国产一区二区三区久久久樱花| 制服人妻中文乱码| 国产在线一区二区三区精| av在线观看视频网站免费| 国产精品久久久久久精品电影小说| 国产毛片在线视频| 亚洲一级一片aⅴ在线观看| 天堂俺去俺来也www色官网| 成人免费观看视频高清| 熟女少妇亚洲综合色aaa.| 在线免费观看不下载黄p国产| 久久婷婷青草| 国产 一区精品| 中文字幕精品免费在线观看视频| 亚洲第一青青草原| 十分钟在线观看高清视频www| 在线免费观看不下载黄p国产| www.av在线官网国产| 国产激情久久老熟女| 熟妇人妻不卡中文字幕| 天天躁夜夜躁狠狠久久av| 校园人妻丝袜中文字幕| 亚洲第一av免费看| 欧美精品一区二区免费开放| 最近手机中文字幕大全| 精品少妇黑人巨大在线播放| 欧美日韩亚洲国产一区二区在线观看 | 精品亚洲成国产av| 男女边摸边吃奶| 嫩草影院入口| 另类亚洲欧美激情| 国产97色在线日韩免费| 韩国高清视频一区二区三区| 久久久国产精品麻豆| 高清av免费在线| 亚洲专区中文字幕在线 | 国产精品熟女久久久久浪| 国产毛片在线视频| 性少妇av在线| 在线 av 中文字幕| 久久国产精品大桥未久av| 久久久国产一区二区| 丝袜在线中文字幕| 亚洲av欧美aⅴ国产| 国产成人免费无遮挡视频| 考比视频在线观看| 日韩伦理黄色片| 老司机在亚洲福利影院| 免费高清在线观看日韩| 精品第一国产精品| 精品一区二区三卡| 日本午夜av视频| 一二三四在线观看免费中文在| 国产精品久久久久久人妻精品电影 | 母亲3免费完整高清在线观看| 亚洲欧美一区二区三区久久| 精品酒店卫生间| 日韩成人av中文字幕在线观看| 欧美变态另类bdsm刘玥| 国产一区亚洲一区在线观看| 欧美成人精品欧美一级黄| 制服诱惑二区| 在现免费观看毛片| 欧美日韩综合久久久久久| 免费观看性生交大片5| 久久精品熟女亚洲av麻豆精品| 99久久精品国产亚洲精品| 999精品在线视频| 丝袜人妻中文字幕| 下体分泌物呈黄色| 最近中文字幕2019免费版| 国精品久久久久久国模美| 国产免费又黄又爽又色| 性少妇av在线| 另类精品久久| 交换朋友夫妻互换小说| 天天躁日日躁夜夜躁夜夜| 亚洲在久久综合| 黑人猛操日本美女一级片| 国产亚洲精品第一综合不卡| 亚洲一卡2卡3卡4卡5卡精品中文| 亚洲欧美精品综合一区二区三区| 亚洲国产精品一区二区三区在线| 9热在线视频观看99| 十八禁网站网址无遮挡| 男女边吃奶边做爰视频| 国产精品麻豆人妻色哟哟久久| 欧美日韩视频精品一区| 9热在线视频观看99| 国产成人精品久久久久久| 王馨瑶露胸无遮挡在线观看| 国产欧美亚洲国产| 观看美女的网站| 亚洲精品一二三| 久久久国产一区二区| 亚洲国产毛片av蜜桃av| 色婷婷av一区二区三区视频| 国产精品久久久久久久久免| 亚洲av国产av综合av卡| 国产黄色视频一区二区在线观看| 国产精品久久久久久人妻精品电影 | 亚洲国产欧美一区二区综合| 又黄又粗又硬又大视频| 欧美日韩综合久久久久久| 黄色毛片三级朝国网站| 国产探花极品一区二区| 久久久国产一区二区| 一级爰片在线观看| 亚洲美女视频黄频| 婷婷色av中文字幕| 人成视频在线观看免费观看| 亚洲,一卡二卡三卡| 亚洲欧美成人精品一区二区| 最近最新中文字幕免费大全7| 亚洲av成人不卡在线观看播放网 | 啦啦啦中文免费视频观看日本| 男女无遮挡免费网站观看| 视频区图区小说| 国产日韩欧美视频二区| 在线精品无人区一区二区三| 99精品久久久久人妻精品| 国产精品一区二区精品视频观看| 久久亚洲国产成人精品v| 少妇被粗大猛烈的视频| 国产乱来视频区| 高清黄色对白视频在线免费看| 日韩免费高清中文字幕av| 久久国产精品大桥未久av| av在线播放精品| 亚洲精华国产精华液的使用体验| 国产男人的电影天堂91| 亚洲伊人色综图| 亚洲激情五月婷婷啪啪| www日本在线高清视频| 国产精品.久久久| xxxhd国产人妻xxx| 午夜免费男女啪啪视频观看| 性少妇av在线| 青春草国产在线视频| 永久免费av网站大全| 日日爽夜夜爽网站| 人妻一区二区av| 久久久久精品国产欧美久久久 | 亚洲精品美女久久久久99蜜臀 | 在线观看三级黄色| 亚洲成人免费av在线播放| 日韩制服骚丝袜av| 人人妻,人人澡人人爽秒播 | 黄色一级大片看看| 久久综合国产亚洲精品| 国产午夜精品一二区理论片| 国产精品女同一区二区软件| 91精品三级在线观看| 久久人人爽av亚洲精品天堂| 午夜免费男女啪啪视频观看| 啦啦啦在线观看免费高清www| av在线app专区| 亚洲免费av在线视频| 嫩草影视91久久| 99精品久久久久人妻精品| 午夜精品国产一区二区电影| 99精品久久久久人妻精品| 国产无遮挡羞羞视频在线观看| 大香蕉久久成人网| 秋霞在线观看毛片| 一级,二级,三级黄色视频| 色视频在线一区二区三区| 免费看不卡的av| 精品一区在线观看国产| 精品一品国产午夜福利视频| 精品午夜福利在线看| 成年动漫av网址| √禁漫天堂资源中文www| 赤兔流量卡办理| 久久久精品94久久精品| 午夜福利一区二区在线看| 久久影院123| 亚洲成人国产一区在线观看 | 777米奇影视久久| 国产免费又黄又爽又色| 可以免费在线观看a视频的电影网站 | 久久亚洲国产成人精品v| 国产日韩一区二区三区精品不卡| 宅男免费午夜| 成人18禁高潮啪啪吃奶动态图| 免费看不卡的av| av一本久久久久| 欧美变态另类bdsm刘玥| 久久午夜综合久久蜜桃| 久久婷婷青草| 男女高潮啪啪啪动态图| 1024香蕉在线观看| 久久综合国产亚洲精品| 亚洲在久久综合| netflix在线观看网站| 国产av码专区亚洲av| 婷婷色综合www| 高清黄色对白视频在线免费看| 在现免费观看毛片| 亚洲av欧美aⅴ国产| 777久久人妻少妇嫩草av网站| 久久天躁狠狠躁夜夜2o2o | 老司机亚洲免费影院| 亚洲第一区二区三区不卡| 国产精品久久久久成人av| 欧美xxⅹ黑人| 丝袜脚勾引网站| 麻豆av在线久日| 国产乱来视频区| 日本av免费视频播放| 中文字幕制服av| 一区二区av电影网| 精品亚洲成a人片在线观看| 大码成人一级视频| 日韩一区二区视频免费看| 男女高潮啪啪啪动态图| 亚洲精华国产精华液的使用体验| 青春草亚洲视频在线观看| 欧美人与善性xxx| 黄色毛片三级朝国网站| 国产高清不卡午夜福利| 日韩免费高清中文字幕av| 亚洲国产精品一区二区三区在线| a级毛片黄视频| 久久久亚洲精品成人影院| 日韩中文字幕欧美一区二区 | 亚洲av国产av综合av卡| 一区二区三区激情视频| 国产 一区精品| 久久精品国产a三级三级三级| 桃花免费在线播放| 精品一区二区三卡| 在线观看国产h片| 国产一区二区三区综合在线观看|