无码中文字幕色专区_91av俱乐部_无码人妻h动漫_26uuu成人_91九色丨porny丨国产jk_青青视频在线播放_国内自拍第二页_国产又粗又长又爽又黄的视频_色哟哟免费网站_久久出品必属精品_a级黄色一级片_99日在线视频

首頁 新聞 工控搜 論壇 廠商論壇 產品 方案 廠商 人才 文摘 下載 展覽
中華工控網首頁
  P L C | 變頻器與傳動 | 傳感器 | 現場檢測儀表 | 工控軟件 | 人機界面 | 運動控制
  D C S | 工業以太網 | 現場總線 | 顯示調節儀表 | 數據采集 | 數傳測控 | 工業安全
  電 源 | 嵌入式系統 | PC based | 機柜箱體殼體 | 低壓電器 | 機器視覺
C#之Delta并聯機械手的視覺同步分揀
深圳市正運動技術有限公司
收藏本文     查看收藏

0.png

VPLC711硬件介紹

VPLC711是正運動推出的一款基于x86平臺和Windows操作系統的高性能機器視覺EtherCAT運動控制器,具備強大的運算能力和靈活性。它具有出色的實時性能和多路高速硬件輸入與多路高速PSO輸出,能夠精準控制多軸同步運動,并與外部設備實現多協議的高速通信。

VPLC711機器視覺運動控制一體機.png

VPLC711支持多種硬件接口和通信協議,方便與其他設備的連接和集成。除此之外,VPLC711還具備視覺處理功能,能夠實時處理圖像數據,實現視覺檢測、測量和定位等應用。

VPLC711架構圖.png

VPLC711內置Windows運動控制實時內核MotionRT7,形成一種開放式IPC形態實時軟控制器/軟PLC,為用戶提供靈活集成的運動控制+視覺一體化解決方案。

VPLC711優勢.png

VPLC711硬件參數

1.采用x86高性能CPU,EtherCAT可支持1ms 64軸同步運行;

2.板載RS232,RS485, EtherNet *5,EtherCAT,USB3.0*4硬件接口;

3.板載20DI,其中4個高速色標鎖存,2組高速單端編碼器;

4.板載20DO,其中4個高速單端脈沖軸,4組高速PWM;

5.支持DVI-D,HDMI顯示,支持雙網口不同IP設置。

想要了解更多關于VPLC711的詳情介紹,可以點擊“ x86平臺實時Windows機器視覺EtherCAT運動控制器VPLC711”查看。

一、C#語言進行Delta并聯機械手的開發之運動庫和視覺庫的添加

1.在VS2010菜單“文件”→“新建”→“項目”,啟動創建項目向導。

3.png

2.選擇開發語言為“Visual C#”和.NET Framework 4以及Windows窗體應用程序。

4.png

3.找到廠家提供的光盤資料里面的C#函數庫,路徑如下(32位庫為例)。

1)進入廠商提供的光盤資料找到“04PC函數”文件夾,并點擊進入。

5.png

2)選擇“函數庫2.1”文件夾。

6.png

3)選擇“Windows平臺”文件夾。

7.png

4)根據需要選擇對應的函數庫,這里選擇32位庫。

8.png

5)解壓C#壓縮包,里面有C#對應的函數庫。

9.png

6)函數庫具體路徑如下。

10.png

4. 將廠商提供的C#庫文件以及相關文件復制到新建的項目中(注意這里面的PC函數庫默認提供的是運動庫,如果使用視覺功能還需要獲取視覺庫,視覺庫可以找廠商的相關銷售或技術人員獲取)。

1) 將Zmcaux.cs(運動庫)和Zvision.cs(視覺庫)文件復制到新建的項目里面中。

11.png

2) 將zauxdll.dll、zmotion.dll和zvision.dll文件放入bin\debug文件夾中。

12.png

5. 用vs打開新建的項目文件,在右邊的解決方案資源管理器中點擊顯示所有文件,然后鼠標右擊Zmcaux.cs與 Zvision.cs文件,點擊包括在項目中。

13.jpg

6. 雙擊Form1.cs里面的Form1,出現代碼編輯界面,在文件開頭寫入using cszmcaux,using ZVision并聲明控制器句柄g_handle 。

14.png

二、PC函數介紹

1.鏈接控制器,獲取鏈接句柄。
1.png

2.皮帶同步指令。

2.png

三、Basic腳本快速驗證指令用法

1. 編寫Basic測試腳本進行MoveSync指令的用法測試。

'**************************************************************************************
'背景:假設有一對對射型的光電傳感器固定在流水線的兩端,來實時檢測流水線上的產品到位情況
'MOVESYNC指令參數填寫說明:
'syncposition:物體到感應點時皮帶軸的位置,需要通過編碼器鎖存把產品的對應位置記錄下來。
'pos1:跟隨軸1原點到光電傳感器感應點的位置,對于每個產品都是固定的。
'**************************************************************************************
GLOBAL CONST BeltAxis=4  '皮帶軸是軸4
GLOBAL CONST FollowAxis1=0  '跟隨軸1是軸0
GLOBAL CONST InducPos1=30  '跟隨軸1原點到光電傳感器感應點的位置
GLOBAL CONST StandbyPos1=50'跟隨軸1的待機位
GLOBAL CONST EmptyPos1=400  '跟隨軸1的放料位
'停止所有軸
RAPIDSTOP(2)
WAIT IDLE     
'初始化相關軸的軸參數
BASE(FollowAxis1, BeltAxis)
ATYPE = 1,1
UNITS = 1000,1000
SPEED = 50,100
DPOS = 0,0
'觸發示波器采集波形
TRIGGER
DELAY(1000)
'跟隨軸先運動到待機位
BASE(FollowAxis1)
MOVEABS(StandbyPos1)
'皮帶軸開始運動
VMOVE(1)  AXIS(BeltAxis)
'假設皮帶運動到200的位置時,有一個產品被檢測到
BASE(FollowAxis1)
Wait UNTIL MPOS(BeltAxis)> 200
MOVESYNC(0, 2000, 200, BeltAxis, InducPos1) '跟隨軸加速同步段該指令執行完后將同步上產品
MOVE_OP(0, ON)                               '同步上后打開真空吸          
MOVESYNC(0, 1000, 200, BeltAxis, InducPos1)  '繼續同步1s
MOVESYNC(-1, 0, 0, -1, EmptyPos1)            '走到放料位置
MOVE_OP(0, OFF)                              '到放料位后關閉真空吸

2.通過RTSys軟件的示波器觀察波形,分析同步過程。

15.png

16.png

根據示波器的數據分析

1、產品剛剛被檢測到時,皮帶的位置是200,跟隨軸的位置是50。

2、跟隨軸追上產品,并保持速度和皮帶軸同步時皮帶的位置是400,跟隨軸1的位置是230。

3、由1和2可知,產品在同步過程中前進了200(400-200)。

4、因為跟隨軸1原點到光電傳感器感應點的位置InducPos1我們給的數據是30,所以在跟隨軸1和皮帶平行的情況下,皮帶帶著產品往前跑了200后,此時此刻跟隨軸1原點到光產品的實際距離是230(200+30)。

5、那么第4點計算的結果和第2的同步完成后跟隨軸1的實際位置是一致的,所以流水線同步指令測試正常。

四、C#例程建設之視覺流水線同步分揀

1.皮帶同步指令關鍵參數詳細介紹。

ZAux_Direct_MoveSync(ZMC_HANDLE handle,float imode,int synctime,float syncposition,int syncaxis,int imaxaxises,int *piAxislist,float *pfDisancelist).

(1)參數imode:

imode = 0+angle,表示同步模式,如果皮帶和X軸平行,填0即可。

imode = -1,表示結束同步模式,可運動到指定的絕對位置,一般同步上抓取完物料后運動到放料位使用。

(2)參數synctime:同步時間,ms單位.運動在指定時間內完成,完成時軸跟皮帶軸上物體保持速度一致。0表示根據運動軸的速度加速度來估計同步時間。

(3)參數syncposition:視覺或傳感器識別到皮帶是的產品時,皮帶此時此刻的位置信息MPOS。

(4)參數pfDisancelist:如果是視覺定位產品時,這個參數直接填視覺識別到產品時產品的世界坐標。

如果用光電傳感器檢測產品時,這個參數是固定的,在傳感器剛剛好感應到產品時,產品當前位置的絕對坐標。可以在此時此刻手動運動從軸來定位到產品處來獲取位置信息。

2.視覺流水線同步分揀流程圖。

17.png

(1)視覺匹配定位代碼詳情。

/************************************************************************************
'任務編號:     無
'函數功能:     視覺定位產品
'Input:        無
'Output:       無 
'返回值:       子線程---進行視覺定位             
**************************************************************************************/
public void RunSubTaskVisua()
{
    int TempArrid = 0;
    float TempVar = 0;
    WriteLog("視覺功能正常啟動");
    while (SysRunFlag > 0)
    {
        //暫停按鈕沒有按下時
        while (SysRunFlag == 1) 
        {
            //采集圖像
            VisuaOper.CameAcquisition();
            //進行模板匹配
            RTDisplay.Image = VisuaOper.ShapeFind();
            if (MainWindows.BeltMpos != 0)//如果采集照片的時候皮帶編碼器位置獲取正常
            {
                //操作MoveSyncBuff數據先加鎖
                while (true)
                {
                    if (MainWindows.SetMoveSyncFlag == 0)
                    {
                        MainWindows.SetMoveSyncFlag = 1;
                        break;
                    }
                }
                //找到可以存儲數據的數組起始下標
                int ArrId = 0;
                for (int i = 0; i < 50; i++)
                {
                    if (MainWindows.MoveSyncBuff[i, 0] == 0)
                    {
                        ArrId = i;
                        break;
                    }
                }
                //開始存儲數據  一次匹配最多10個結果
                TempArrid = ArrId;
                for (int i = 0; i < 10; i++)
                {
                    //如果分數滿足要求
                    if (MainWindows.VisionRst[i, 0] >= MainWindows.VisionScore)
                    {
                        int j;
                        //如果有重復的目標需要剔除
                        for (j = 0; j < TempArrid; j++)
                        {
                            TempVar = MainWindows.VisionRst[i, 1] - MainWindows.BeltMpos - MainWindows.MoveSyncBuff[j, 1] + MainWindows.MoveSyncBuff[j, 4];
                            if (((TempVar) = -10))
                            {
                                j = -10;
                                break;
                            }
                        }
                        if (j >= 0)
                        {
                            MainWindows.MoveSyncBuff[ArrId, 0] = 1;
                            MainWindows.MoveSyncBuff[ArrId, 1] = MainWindows.VisionRst[i, 1];   //存儲匹配結果的X坐標
                            MainWindows.MoveSyncBuff[ArrId, 2] = MainWindows.VisionRst[i, 2];   //存儲匹配結果的Y坐標
                            MainWindows.MoveSyncBuff[ArrId, 3] = MainWindows.VisionRst[i, 3];   //存儲匹配結果的角度偏移
                            MainWindows.MoveSyncBuff[ArrId, 4] = MainWindows.BeltMpos;          //存儲匹配到產品時,傳送帶的位置信息
                            ArrId = ArrId + 1;
                            IdentiNum.Text = (Convert.ToInt32(IdentiNum.Text) + 1).ToString();
                            WriteLog("視覺目標:" + "(" + MainWindows.VisionRst[i, 1].ToString("0,0") + "," + MainWindows.VisionRst[i, 2].ToString("0,0") + ")");
                        }
                    }
                    //分數清空
                    MainWindows.VisionRst[i, 0] = 0;
                }
                //解鎖
                MainWindows.SetMoveSyncFlag = 0;
            }
        }
        Thread.Sleep(100);
    }
}

(2)流水線同步分揀代碼詳情。

/************************************************************************************
'任務編號:     無
'函數功能:     流水線同步分揀
'Input:        無
'Output:       無 
'返回值:       無             
**************************************************************************************/
public void RunSubTaskMotion()
{
    float[] MoveSyncTemp = new float[5];
    float TempMpos = 0;
    while (SysRunFlag > 0)
    {
        while (SysRunFlag == 1)
        {
            if (MainWindows.MoveSyncBuff[0, 0] == 1)
            {
                MainWindows.ZauxErr = zmcaux.ZAux_Direct_GetMpos(MainWindows.g_Handle, MainWindows.ConveyorAxisId, ref TempMpos);
                //如果編碼器位置抓取正確
                if (0 == MainWindows.ZauxErr) 
                {
                    //編碼器往前運動了多少
                    TempMpos = TempMpos - MainWindows.MoveSyncBuff[0, 4];


                    //判斷是否處于同步起始區
                    if (((MainWindows.MoveSyncBuff[0, 1] + TempMpos) >= MainWindows.SyncReX[0]) && ((MainWindows.MoveSyncBuff[0, 1] + TempMpos) <= MainWindows.SyncReX[1]))
                    {
                        WriteLog("開始同步抓取");
                        //取一組數據
                        MoveSyncTemp[0] = MainWindows.MoveSyncBuff[0, 1] ;    //X
                        MoveSyncTemp[1] = MainWindows.MoveSyncBuff[0, 2] ;    //Y  
                        MoveSyncTemp[2] = MainWindows.GetBinHigt;            //取料高度
                        MoveSyncTemp[3] = MainWindows.MoveSyncBuff[0, 3];    //Aanle
                        MoveSyncTemp[4] = MainWindows.MoveSyncBuff[0, 4];    //Mpos
                       //下發同步運動的指令
                       //0、復位輸出口
                        zmcaux.ZAux_Direct_MoveOp(MainWindows.g_Handle, MainWindows.gVAxisList[0], MainWindows.VacSucIo, 0);
                        //1、先同步上傳送帶
                        zmcaux.ZAux_Direct_MoveSync(MainWindows.g_Handle, 0, 0, MainWindows.MoveSyncBuff[0, 4], MainWindows.ConveyorAxisId, 4, MainWindows.gVAxisList, MoveSyncTemp);
                        //2、同步一段時間(關節軸有滯后) 50ms
                        zmcaux.ZAux_Direct_MoveSync(MainWindows.g_Handle, 0, 50, MainWindows.MoveSyncBuff[0, 4], MainWindows.ConveyorAxisId, 4, MainWindows.gVAxisList, MoveSyncTemp);
                        //3、打開真空吸嘴
                        zmcaux.ZAux_Direct_MoveOp(MainWindows.g_Handle, MainWindows.gVAxisList[0], MainWindows.VacSucIo, 1);
                        //4、同步一段時間 1500ms
                        zmcaux.ZAux_Direct_MoveSync(MainWindows.g_Handle, 0, 700, MainWindows.MoveSyncBuff[0, 4], MainWindows.ConveyorAxisId, 4, MainWindows.gVAxisList, MoveSyncTemp);
                        //5、同步段把Z軸提升到安全高度,選擇軸到放料角度
                        MoveSyncTemp[2] = MainWindows.StandPos[2];             //取料高度
                        zmcaux.ZAux_Direct_MoveSync(MainWindows.g_Handle, 0, 100, MainWindows.MoveSyncBuff[0, 4], MainWindows.ConveyorAxisId, 4, MainWindows.gVAxisList, MoveSyncTemp);
                        //4、解除同步去放料點
                        MoveSyncTemp[0] = MainWindows.EmptPos[0];    //X
                        MoveSyncTemp[1] = MainWindows.EmptPos[1];    //Y  
                        MoveSyncTemp[2] = MainWindows.EmptPos[2];    //放料高度
                        MoveSyncTemp[3] = MainWindows.EmptPos[3];    //Aanle
                        zmcaux.ZAux_Direct_MoveSync(MainWindows.g_Handle, -1, 0, 0, -1, 4, MainWindows.gVAxisList, MoveSyncTemp);
                        //5、關閉真空吸嘴放料,Delay100ms
                        zmcaux.ZAux_Direct_MoveOp(MainWindows.g_Handle, MainWindows.gVAxisList[0], MainWindows.VacSucIo, 0);
                        zmcaux.ZAux_Direct_MoveDelay(MainWindows.g_Handle, MainWindows.gVAxisList[0], 100);
                        //6、去安全高度
                        MoveSyncTemp[0] = MainWindows.EmptPos[0];    //X
                        MoveSyncTemp[1] = MainWindows.EmptPos[1];    //Y  
                        MoveSyncTemp[2] = MainWindows.StandPos[2];    //放料高度
                        MoveSyncTemp[3] = MainWindows.EmptPos[3];    //Aanle
                        zmcaux.ZAux_Direct_MoveAbs(MainWindows.g_Handle, 4, MainWindows.gVAxisList, MoveSyncTemp);


                        //操作MoveSyncBuff數據先加鎖
                        while (true)
                        {
                            if (MainWindows.SetMoveSyncFlag == 0)
                            {
                                MainWindows.SetMoveSyncFlag = 1;
                                break;
                            }
                        }
                        //視覺匹配緩沖區數據往前覆蓋
                        for (int k = 0; k < 49; k++)
                        {
                            MainWindows.MoveSyncBuff[k, 0] = MainWindows.MoveSyncBuff[k + 1, 0];
                            MainWindows.MoveSyncBuff[k, 1] = MainWindows.MoveSyncBuff[k + 1, 1];
                            MainWindows.MoveSyncBuff[k, 2] = MainWindows.MoveSyncBuff[k + 1, 2];
                            MainWindows.MoveSyncBuff[k, 3] = MainWindows.MoveSyncBuff[k + 1, 3];
                            MainWindows.MoveSyncBuff[k, 4] = MainWindows.MoveSyncBuff[k + 1, 4];
                        }
                        //解鎖
                        MainWindows.SetMoveSyncFlag = 0;
                        //等待輸出口打開
                        int TimeOut = 10000;
                        TimeOut = 100000;
                        //等待軸停止
                        int AxisIdle = 0;                 //軸停止狀態
                        while (TimeOut > 0)
                        {
                            zmcaux.ZAux_Direct_GetIfIdle(MainWindows.g_Handle, MainWindows.gVAxisList[0], ref AxisIdle);
                            if (AxisIdle == (-1))
                            {
                                break;
                            }
                            Thread.Sleep(10);
                            TimeOut = TimeOut - 10;
                        }
                        if (TimeOut  MainWindows.SyncReX[1])
                    {
                        //操作MoveSyncBuff數據先加鎖
                        while (true)
                        {
                            if (MainWindows.SetMoveSyncFlag == 0)
                            {
                                MainWindows.SetMoveSyncFlag = 1;
                                break;
                            }
                        }
                        //視覺匹配緩沖區數據往前覆蓋
                        for (int k = 0; k < 49; k++)
                        {
                            MainWindows.MoveSyncBuff[k, 0] = MainWindows.MoveSyncBuff[k + 1, 0];
                            MainWindows.MoveSyncBuff[k, 1] = MainWindows.MoveSyncBuff[k + 1, 1];
                            MainWindows.MoveSyncBuff[k, 2] = MainWindows.MoveSyncBuff[k + 1, 2];
                            MainWindows.MoveSyncBuff[k, 3] = MainWindows.MoveSyncBuff[k + 1, 3];
                            MainWindows.MoveSyncBuff[k, 4] = MainWindows.MoveSyncBuff[k + 1, 4];
                        }
                        //解鎖
                        MainWindows.SetMoveSyncFlag = 0;
                        //如果視覺匹配緩沖區沒有數據了
                        if (MainWindows.MoveSyncBuff[0, 0] == 0)
                        {
                            //Delta去待機位
                            zmcaux.ZAux_Direct_MoveAbs(MainWindows.g_Handle, 4, MainWindows.gVAxisList, MainWindows.StandPos);
                            WriteLog("去待機位");
                        }
                    }
                }
            }
            else
            {
                //Delta去待機位
                zmcaux.ZAux_Direct_MoveAbs(MainWindows.g_Handle, 4, MainWindows.gVAxisList, MainWindows.StandPos);
            }
            Thread.Sleep(50);
        }
        //停止傳送帶
        zmcaux.ZAux_Direct_Single_Cancel(MainWindows.g_Handle, MainWindows.ConveyorAxisId, 2);
    }
}

本次,正運動技術C#之Delta并聯機械手的視覺同步分揀,就分享到這里。

更多精彩內容請關注“ 正運動小助手 ”公眾號,需要相關開發環境與例程代碼,請咨詢正運動技術銷售工程師。

本文由正運動技術原創,歡迎大家轉載,共同學習,一起提高中國智能制造水平。文章版權歸正運動技術所有,如有轉載請注明文章來源。

正運動技術專注于運動控制技術研究和通用運動控制軟硬件產品的研發,是國家級高新技術企業。正運動技術匯集了來自華為、中興等公司的優秀人才,在堅持自主創新的同時,積極聯合各大高校協同運動控制基礎技術的研究,是國內工控領域發展最快的企業之一,也是國內少有、完整掌握運動控制核心技術和實時工控軟件平臺技術的企業。主要業務有:運動控制卡_運動控制器_EtherCAT運動控制卡_EtherCAT控制器_運動控制系統_視覺控制器__運動控制PLC_運動控制_機器人控制器_視覺定位_XPCIe/XPCI系列運動控制卡等等。

企業微信截圖_20240321153031.png


 

狀 態: 在線

公司簡介
產品目錄

公司名稱: 深圳市正運動技術有限公司
聯 系 人: 戴德弟
電  話: 0755-32976042
傳  真: 0755-2606 6955
地  址: 深圳市寶安區西鄉洲石路陽光工業園A1棟5樓
郵  編: 518100
主  頁:
 
該廠商相關技術文摘:
全國產EtherCAT運動控制邊緣控制器(二):統一的上位機API接口
全國產EtherCAT運動控制邊緣控制器(一):ZMC432H硬件接口
經濟型EtherCAT運動控制器(四):ModbusRTU或ModbusTcp與觸摸屏通訊
推薦 | 8通道PSO的高性能EtherCAT總線運動控制器
正運動技術運動控制器如何快速實現單軸/多軸同步跟隨功能?
VPLC系列機器視覺運動控制一體機快速入門(八)測量點/線/圓
VPLC系列機器視覺運動控制一體機快速入門(五)尺寸測量
經濟型EtherCAT運動控制器(三):PLC實現多軸直線插補與電子凸輪
經濟型EtherCAT運動控制器(二):ZBasic實現多軸直線插補運動
經濟型EtherCAT運動控制器(一):功能簡介與應用場景
VPLC系列機器視覺運動控制一體機快速入門(九)劃痕檢測
VPLC系列機器視覺運動控制一體機快速入門(六)標定功能
更多文摘...
立即發送詢問信息在線聯系該技術文摘廠商:
用戶名: 密碼: 免費注冊為中華工控網會員
請留下您的有效聯系方式,以方便我們及時與您聯絡

關于我們 | 聯系我們 | 廣告服務 | 本站動態 | 友情鏈接 | 法律聲明 | 不良信息舉報
工控網客服熱線:0755-86369299
版權所有 中華工控網 Copyright©2022 Gkong.com, All Rights Reserved

无码中文字幕色专区_91av俱乐部_无码人妻h动漫_26uuu成人_91九色丨porny丨国产jk_青青视频在线播放_国内自拍第二页_国产又粗又长又爽又黄的视频_色哟哟免费网站_久久出品必属精品_a级黄色一级片_99日在线视频
高清在线一区| 久久精品影视| 亚洲日产国产精品| av在线日韩| 国产精品久久| 国产日韩亚洲欧美精品| 免费在线日韩av| 青青在线精品| 国产一区二区三区日韩精品| 国产精品欧美三级在线观看 | 奇米色欧美一区二区三区| 日韩在线一二三区| 中文欧美日韩| 亚洲免费成人av在线| 日韩精品高清不卡| 精品美女视频| 国产精品中文字幕亚洲欧美| 99久久夜色精品国产亚洲狼| 欧美.日韩.国产.一区.二区 | av一区二区高清| 青青在线精品| 中文字幕中文字幕精品| 最新日韩av| 日本少妇一区| 国产探花在线精品一区二区| 久久福利在线| 91精品二区| 麻豆成人91精品二区三区| 日韩二区三区四区| 青青草国产精品亚洲专区无| 国产h片在线观看| 国产中文在线播放| 在线人成日本视频| 一本大道色婷婷在线| 亚洲福利免费| 88久久精品| 日韩大片在线播放| 综合国产在线| 亚洲黄色免费av| 国产精品午夜av| 国产日韩免费| 国产毛片一区| 在线午夜精品| 蜜桃视频一区二区三区 | 国产精品视频一区视频二区| 久久久精品五月天| 国产999精品在线观看| 午夜国产精品视频| 999精品在线| 午夜精品成人av| 国产成人黄色| 日韩视频一二区| 日本一区中文字幕| 日韩视频1区| 香蕉成人久久| 亚洲精品电影| 精品国产美女a久久9999| 日韩精品一卡| 成人日韩精品| 日韩一区二区免费看| 福利一区在线| 国产婷婷精品| 国产精品激情| av一区二区高清| 亚洲国产不卡| 视频一区视频二区中文| 毛片不卡一区二区| 国产精品久久观看| 日本不卡一区二区| 国产高清一区二区| 激情久久婷婷| 日韩精品一卡二卡三卡四卡无卡| 91成人福利| 午夜在线一区| 精品国产第一福利网站| 高清不卡一区| 精品国产99| 亚洲专区一区| 天堂俺去俺来也www久久婷婷| 亚洲一级少妇| 国产91在线播放精品| 超碰在线99| 视频一区二区三区在线| 国产欧美午夜| 蜜桃视频欧美| 国产精品草草| 国产理论在线| 国产精品一区高清| 黄色在线网站噜噜噜| 日韩免费小视频| 99国产精品| 夜久久久久久| 国产精品网在线观看| 国产精品免费99久久久| 国产精品视频一区二区三区综合| 福利一区二区免费视频| 日韩视频精品在线观看| 日韩va亚洲va欧美va久久| 91成人网在线观看| 日本精品不卡| 日韩高清一区二区| 成人片免费看| 一区在线免费观看| 日韩视频在线一区二区三区 | 亚洲一区二区三区免费在线观看| 欧美亚洲免费| 久久aⅴ国产紧身牛仔裤| 亚洲特色特黄| 麻豆国产欧美一区二区三区| 国产精品久久久久久久久久10秀 | 欧美性感美女一区二区| 亚洲欧美视频一区二区三区| 精品亚洲美女网站| 欧美另类综合| 日韩在线播放一区二区| 国产精品久久久亚洲一区| 欧美丰满日韩| 伊人精品久久| 日韩中文视频| 国产探花在线精品| 欧美日韩第一| 日韩av福利| 日韩av午夜在线观看| 国产精久久久| 麻豆精品av| 丝袜美腿一区二区三区| 国产欧美三级| 精品在线网站观看| 日本aⅴ免费视频一区二区三区| 欧美韩日一区| 日韩二区三区在线观看| 免费av一区| 久热综合在线亚洲精品| 久久亚洲风情| 日本精品另类| 亚洲精品成人| 亚洲天堂黄色| 日韩精品亚洲专区| 性欧美长视频| 亚洲一区有码| 黄在线观看免费网站ktv| 伊人精品视频| 亚洲午夜精品久久久久久app| 欧美a级片一区| 国产一区二区三区网| 久久香蕉精品| 精品免费av在线| 中文字幕在线视频久| 亚洲欧美日韩国产一区| 国产精品亚洲综合色区韩国| 日韩一级不卡| 国产成人调教视频在线观看| 亚洲视频国产精品| 91精品推荐| 久久国产免费| 九九久久国产| 日韩深夜视频| 欧美日韩伊人| 首页国产欧美久久| 日韩在线高清| 国产成人免费| 国产日韩亚洲| 久久国产欧美日韩精品| 日韩国产一区| 日韩高清不卡在线| 精品网站999| 四虎精品永久免费| 色在线视频观看| 免费在线欧美视频| 最近国产精品视频| 日韩激情av在线| 国产精品日本一区二区不卡视频| 99成人在线| 日韩中文字幕一区二区高清99| 日韩美女精品| 欧美精品一区二区三区精品| 日韩国产成人精品| 国产二区精品| 中文字幕系列一区| 91av亚洲| 麻豆久久久久久| 中文在线资源| 精品91福利视频| 国产精品极品在线观看| 亚洲尤物av| 久久99精品久久久野外观看| 精品伊人久久久| 99在线精品免费视频九九视| 日韩va亚洲va欧美va久久| 视频小说一区二区| 91精品91| 国产精品精品| 日韩精品一区二区三区中文| 日韩国产欧美| 婷婷激情一区| 婷婷亚洲成人| 一区二区国产在线观看| 久久精品72免费观看| 精品国产中文字幕第一页| 午夜欧美精品|