《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于ARM+Linux的直流伺服控制系統(tǒng)設計
基于ARM+Linux的直流伺服控制系統(tǒng)設計
來源:電子技術應用2012年第8期
張海波1,2,陳 濤1,王建立1,李洪文1,鄧永停1,2
1.中國科學院長春光學精密機械與物理研究所,吉林 長春130033; 2.中國科學院研究生院,北京100039
摘要: 目前大多伺服控制系統(tǒng)依賴計算機實現(xiàn),系統(tǒng)體積功耗大、成本高。針對此問題,以ARM9 S3C2440芯片和CPLD EPM570T144芯片為硬件平臺,在嵌入式Linux操作系統(tǒng)下設計了直流伺服控制系統(tǒng)。ARM實現(xiàn)控制算法,得出控制量給CPLD ,CPLD主要用作控制接口擴展和信號處理。詳細介紹了Linux設備驅動設計和伺服控制應用程序設計。實驗結果證明,系統(tǒng)能夠實現(xiàn)等速跟蹤、位置跟蹤和正弦跟蹤等控制功能,并能實現(xiàn)復雜控制算法,以滿足控制系統(tǒng)實時性和高速性要求。
中圖分類號: TP23
文獻標識碼: B
文章編號: 0258-7998(2012)08-0033-04
DC-servo control system design based on ARM and Linux
Zhang Haibo1,2,Chen Tao1,Wang Jianli1,Li Hongwen1,Deng Yongting1,2
1.Changchun Institute of Optics, Fine Mechanics and Physics ,Chinese Academy of Sciences, Changchun 130033,China; 2.Graduate College of the Chinese Academy of Sciences, Beijing 100039,China
Abstract: As most servo control systems depend on computers and have large size and high cost at present, the DC-servo control system is designed in embedded Linux operating system based on ARM9 S3C2440 chip and CPLD EPM570T144 chip. ARM is used to achieve the control algorithm and give control data to CPLD.CPLD is basically used to extend control interface and process signals. The Linux device driver design and servo control program design are discussed in detail. The experiment result proves that the system has functions of constant velocity tracking, position tracking, sine tracking and etc. It can achieve complicated control algorithm and satisfy the requirement of high speed and real-time control of control system.
Key words : ARM9;embedded Linux;CPLD;Linux device driver;servo control

    隨著數(shù)字信息技術的不斷發(fā)展,人們對伺服控制系統(tǒng)的實時性、穩(wěn)定性和復雜性的要求越來越高,單靠順序結構的軟件設計已經(jīng)不容易滿足上述要求。目前很多伺服控制系統(tǒng)的控制器采用PC/104結構或依賴上位計算機,根據(jù)實際的控制系統(tǒng)需要擴展相應的控制電路,使得系統(tǒng)體積大、成本高、可靠性不易保證,且用戶交互性不好。嵌入式Linux操作系統(tǒng)由于具有代碼開源、可移植性、軟硬件可裁剪性、資源豐富及支持多種硬件平臺和接口等特點,并且從2.6版本以后的Linux實時性有了很大的提高,正被越來越多地應用于伺服控制系統(tǒng)中。通過嵌入式Linux操作系統(tǒng)對控制系統(tǒng)的軟硬件資源進行分配、調度、控制和協(xié)調,能夠充分發(fā)揮控制系統(tǒng)的性能。ARM處理器以其體積小、低功耗、低成本、高性能、文檔豐富及嵌入式軟件多等優(yōu)點而得到廣泛的應用。因此,本文以ARM9CPLD為硬件平臺,在嵌入式Linux操作系統(tǒng)下設計了直流伺服控制系統(tǒng)。

1 硬件平臺
    系統(tǒng)原理框圖[1]如圖1所示。系統(tǒng)以ARM作為主控芯片,主要負責運行操作系統(tǒng)并實現(xiàn)控制算法、人機交互和多機通信等。CPLD EPM570T144主要負責從ARM接收數(shù)據(jù),產生相應的PWM波;接收編碼器輸出信號,并對其進行處理,得到編碼器的值,將其送給ARM,從而實現(xiàn)電機的閉環(huán)控制。CPLD和ARM之間通過地址總線(13根)、數(shù)據(jù)總線(16根)、控制總線(片選、讀寫使能信號等)與GPIO口(作為外部中斷使用)連接,即CPLD類似于ARM的一個外部存儲器(CPLD掛接在ARM的bank1存儲空間上,地址空間為0x08000000~0x10000000),ARM和CPLD的數(shù)據(jù)交換類似于對存儲器的讀寫操作。這種總線方式擴展,使得系統(tǒng)數(shù)據(jù)交換快速、操作簡單。控制板通過JTAG、UART、USB和網(wǎng)口與上位機連接,在目標板和上位機之間建立交叉開發(fā)環(huán)境,可在控制板和上位機之間實現(xiàn)程序下載調試、文件傳輸和通信等,便于系統(tǒng)軟件開發(fā)和調試。

2 CPLD程序設計
    CPLD程序分為電機辨向、四倍頻、編碼器脈沖計數(shù)、PWM波生成和總線數(shù)據(jù)讀寫5個模塊,如圖2所示。采用VHDL語言,依據(jù)自底向上設計的方法,以便于程序開發(fā)和移植。

    采用增量式編碼器,需對編碼器輸出的ABZ碼進行處理[2],經(jīng)過辨向、倍頻、計數(shù)后得到編碼器值。ARM與CPLD之間通過雙向總線交換數(shù)據(jù),CPLD讀取ARM寫入數(shù)據(jù)總線的數(shù)據(jù),產生對應的PWM波。當CPLD中的編碼器值可讀后,CPLD采用中斷方式通知ARM,然后將編碼器值寫到數(shù)據(jù)總線上供ARM讀取。由于CPLD與ARM的其他外設共用數(shù)據(jù)總線,所以在CPLD對總線進行操作時要特別注意,除了CPLD往總線上寫數(shù)據(jù)外,其他時刻都應該將總線置為高阻態(tài),以讓出總線的使用權,否則其他外設(如網(wǎng)口、ADC接口等)會因CPLD一直占用總線而不能正常工作。
    CPLD應用計數(shù)法產生PWM波[3],CPLD時鐘頻率為100 MHz,設置PWM總計數(shù)值為8 000。CPLD根據(jù)ARM給定的0~8 000的計數(shù)值對時鐘計數(shù),產生兩路反相的PWM波。為防止功率放大器的H橋同一側上下同時導通,一般設置有3~5 μs的死區(qū),本設計中設置為5 μs的死區(qū)。
3 設備驅動設計
3.1 設備驅動簡介

    設備驅動是連接應用程序與硬件設備的橋梁,驅動程序為應用程序提供了接口函數(shù),用戶在應用程序中調用相應的接口函數(shù)便可實現(xiàn)對硬件設備的操作,因此,驅動程序的開發(fā)是嵌入式系統(tǒng)開發(fā)的關鍵環(huán)節(jié)。Linux設備驅動分為字符設備驅動、塊設備驅動和網(wǎng)絡設備驅動[4]。本文中控制板上移植了Linux2.6操作系統(tǒng),該操作系統(tǒng)下需設計ARM讀寫CPLD的數(shù)據(jù)及對CPLD產生的中斷信號響應的驅動,這一要求采用字符設備驅動來實現(xiàn)。應用程序通過系統(tǒng)調用對設備文件進行諸如read、write等操作時,系統(tǒng)調用通過設備文件的主設備號找到相應的設備驅動程序,然后讀取設備驅動程序中初始化的file_operations結構體,獲取相應操作(read/write等)對應的函數(shù)指針,接著把控制權交給該函數(shù)。因此,編寫設備驅動程序的主要工作就是編寫這些文件操作的接口函數(shù),并填充file_operations的各個域。
3.2 設備驅動程序設計
    為便于開發(fā)和調試,設備驅動使用模塊的方式動態(tài)加載到內核中去。加載模塊的方式與以往的應用程序開發(fā)有很大的不同。以往在開發(fā)應用程序時都有一個main()函數(shù)作為程序的入口點,而在驅動開發(fā)時卻沒有main()函數(shù),模塊在調用insmod命令時被加載,此時的入口點為module_init()函數(shù),在該函數(shù)中完成設備的注冊、設備文件的創(chuàng)建和相關內存及寄存器的地址映射。同樣,模塊在調用rmmod命令時被卸載,此時的入口點為module_exit()函數(shù),在該函數(shù)中將不用的資源返還給操作系統(tǒng),把注冊的設備、創(chuàng)建的設備文件及IO內存映射等注銷掉。在設備完成注冊和加載之后,用戶的應用程序就可以對該設備進行一定的操作,如read、write等。而驅動就是用于實現(xiàn)這些操作,在用戶應用程序調用相應入口函數(shù)時執(zhí)行相關的操作,module_init()入口點函數(shù)則不需要完成其他如read、wirte之類的功能。驅動程序需要定義和實現(xiàn)open、read、write等函數(shù),并填充到file_operations結構中,file_operations結構把應用程序中的系統(tǒng)調用與驅動中對應的函數(shù)聯(lián)系在一起。file_operations結構體如下所示:
static struct  file_operations    cpld_drv_fops = {
    .owner    = THIS_MODULE,
    .write    = cpld_drv_write,
    .read    = cpld_drv_read,
    .open    = cpld_drv_open,
    .release    = cpld_drv_close,
    .fasync    = cpld_drv_fasync,
};
其中,write()函數(shù)實現(xiàn)向CPLD中寫入數(shù)據(jù),read()函數(shù)實現(xiàn)ARM從CPLD讀取數(shù)據(jù)。設備驅動運行在內核空間,而應用程序運行在用戶空間,設備驅動程序不能直接訪問用戶空間的地址,在read()和write()函數(shù)中分別調用內核函數(shù)copy_to_user()和copy_from_user()實現(xiàn)數(shù)據(jù)的轉移。read函數(shù)實現(xiàn)讀取CPLD中的編碼器值,write函數(shù)實現(xiàn)將產生PWM波的計數(shù)值寫入CPLD中,這兩個函數(shù)實現(xiàn)了內核空間與用戶空間的數(shù)據(jù)交換。從驅動程序結構看,驅動程序由三部分組成:結構體struct file_operations及其成員函數(shù)的實現(xiàn)、設備初始化module_init()和設備注銷module_exit()。
    讀寫CPLD需要對內存進行讀寫操作[5]。CPLD產生的讀中斷信號連接到ARM的GPF1口,CPLD的使能信號由ARM的GPF0產生,因此需要配置相應的寄存器。驅動程序中需要對內存和寄存器進行操作,本操作系統(tǒng)下不能直接對內存和寄存器的物理地址進行操作,需先將相應的內存和寄存器的物理地址映射到內核的虛擬地址空間,通過對映射后的虛擬地址進行操作實現(xiàn)對寄存器和內存的操作。
    ARM對CPLD的讀操作采用異步通知和內核中斷方式[5]實現(xiàn),這樣可減少系統(tǒng)開支。首先在驅動的open()函數(shù)中調用request_irq()函數(shù)注冊內核中斷,并在內核中實現(xiàn)中斷處理函數(shù),在內核中斷處理函數(shù)中調用kill_fasyn()函數(shù)給指定的應用程序發(fā)送信號,通知應用程序CPLD中的編碼器值可讀。當CPLD無可讀中斷產生時,將read()函數(shù)放入等待隊列,主程序一直處于睡眠狀態(tài),而不是應用程序主動去調用read()函數(shù)來等待中斷的產生,即采用異步通知方式,調用內核中的fasync_helper()函數(shù)來實現(xiàn)。當CPLD有可讀中斷產生時,在中斷處理函數(shù)中通過kill_fasync()函數(shù),向進程發(fā)送信號SIGIO,觸發(fā)應用程序中signal聲明的異步觸發(fā)函數(shù),使用POLL_IN表明有數(shù)值可以讀取。另外,要注意,在進入中斷服務程序后,首先通過中斷自旋鎖spin_lock_irq()關閉所有中斷,以防止其他中斷源中斷kill_fasync的工作,在中斷服務程序結束時,再通過spin_unlock_irq()打開中斷。中斷處理函數(shù)部分代碼如下:
spinlock_t lock;
static irqreturn_t eint1_irq(int irq, void *dev_id)
//中斷服務程序
{
    spin_lock_irq(&lock);//關閉中斷
    kill_fasync (&eint1_async, SIGIO, POLL_IN);
//產生中斷后,驅動向應用程序發(fā)送數(shù)據(jù)可讀信號
    spin_unlock_irq(&lock);//開中斷
    return IRQ_RETVAL(IRQ_HANDLED);
}
4 應用程序設計

 


    在應用程序[6]中,通過函數(shù)signal()注冊信號處理函數(shù),以接收內核發(fā)來的數(shù)據(jù)可讀信號。為了打開設備文件的異步觸發(fā)機制,用戶程序需指定當前進程為內核發(fā)送信號的接收進程,可以通過fcntl系統(tǒng)調用的F_SETOWN命令來設置該值。用戶程序還必須通過另一個fcntl命令設置設備的FASYNC標志,打開異步觸發(fā)機制。只要內核中有CPLD可讀中斷產生,輸入文件就會產生一個SIGIO信號,信號發(fā)送給應用程序,應用程序調用信號處理函數(shù)。在信號處理函數(shù)中讀取編碼器的值,通過控制算法得到控制數(shù)據(jù)(即PWM波計數(shù)值),然后將PWM波的計數(shù)值寫入到CPLD中。主程序流程圖如圖3所示,部分代碼如下:
int main(int argc, char **argv)
{
    int Oflags;
    signal(SIGIO, signal_fun);//注冊信號處理函數(shù)
    Init(argc,argv);     //打開設備,控制參數(shù)初始化
    …
    fcntl(fd_cpld, F_SETOWN, getpid());    
//指定當前進程為接收信號進程
    Oflags=fcntl(fd_cpld, F_GETFL);//返回當前的信號標志
    fcntl(fd_cpld, F_SETFL, Oflags | FASYNC);
//打開異步觸發(fā)機制
    while(1)
    {
        sleep(1000);//進程睡眠,等待內核發(fā)送中斷信號
    }
    ……
    return 0;
}
    由于Linux是多任務系統(tǒng),各個進程間采用一定的調度算法調度,進程間會不時地切換,因此編寫程序時要特別考慮系統(tǒng)進程調度的問題。控制程序對實時性有一定的要求,因此,要將控制程序進程設置為實時進程且要具有較高的進程調度優(yōu)先級,同時控制程序中要盡量少地使用系統(tǒng)調用,以保證控制系統(tǒng)的實時性。
5 實驗結果
    控制板通過串口、網(wǎng)口與計算機(裝有Linux系統(tǒng))建立交叉編譯環(huán)境,程序在計算機上編譯調試。利用網(wǎng)線通過nfs(網(wǎng)絡文件系統(tǒng))服務,在計算機和控制板之間實現(xiàn)網(wǎng)絡文件共享,可直接在控制板上訪問計算機上的共享文件、執(zhí)行計算機上編譯好的程序,無需將計算機上編譯好的程序下載到板子上。這種交叉開發(fā)的方式將程序和實驗數(shù)據(jù)直接存儲在計算機上,可節(jié)省控制板上的存儲空間,便于程序開發(fā)和進行實驗數(shù)據(jù)分析。
    實驗過程中,首先要對電機參數(shù)進行辨識。電機參數(shù)辨識的方法[7-8]很多,本實驗采用階躍響應法測得電機的模型參數(shù),近似為一階慣性環(huán)節(jié)。編碼器為增量式編碼器,電機轉一圈產生20 000個碼,即一個碼值對應0.018°,編碼器值采樣周期為2 ms。將電機一個采樣周期內轉過的角度值除以采樣周期作為速度反饋值,將電機轉過的角度進行累加得到位置反饋值,電機最高轉速為900°/s,最低轉速為9°/s,采用PI控制[9-10]。圖4為系統(tǒng)速度階躍響應曲線,速度響應誤差為每1個采樣周期1個碼值。圖5為系統(tǒng)位置階躍曲線,設定速度環(huán)最大速度為180°/s。位置環(huán)采用抗積分飽和算法,以消除因積分飽和引起的過大的超調,位置階躍穩(wěn)態(tài)誤差為0。圖6是系統(tǒng)的速度正弦跟蹤曲線,正弦引導函數(shù)為:v=180°sin(0.8πt),跟蹤誤差在正反轉速度換向處跟蹤誤差較大。

    實驗結果表明,基于ARM9和CPLD硬件平臺,在嵌入式Linux操作系統(tǒng)下,系統(tǒng)能夠實現(xiàn)等速跟蹤、位置定點和正弦跟蹤等功能,滿足控制實時性要求,可實現(xiàn)伺服控制。系統(tǒng)體積小、成本低、功耗小、接口豐富、便于開發(fā),且Linux系統(tǒng)具有很好的文件管理功能,有助于實驗數(shù)據(jù)的存儲和導出,便于實驗結果分析。系統(tǒng)進一步完善后可將控制程序設計成圖形界面,利用觸摸屏輸入和顯示伺服控制結果,則可實現(xiàn)控制結果實時顯示,可視化效果好,整個系統(tǒng)可脫離計算機工作,具有廣泛的應用價值。
參考文獻
[1] 李金洪,楊小軍.基于DSP和FPGA的經(jīng)緯儀控制系統(tǒng)設計[J].電子技術應用,2010,36(7):48-51.
[2] 鈔靖,王小椿,姜虹.基于FPGA的光電編碼器四倍頻電路設計[J].儀表技術,2007(6):17-21.
[3] 耿偉松,于海東.基于CPLD的PWM發(fā)生器設計[J].制造業(yè)自動化,2010,32(6):151-153.
[4] 韋東山.嵌入式Linux應用開發(fā)完全手冊[M].北京:人民郵電出版社,2008.
[5] 宋寶華.Linux設備驅動詳解[M].北京:人民郵電出版社,2008.
[6] 孫程建.基于Linux的嵌入式數(shù)控系統(tǒng)底層軟件設計[D].武漢:武漢科技大學,2007.
[7] 王帥,陳濤,李洪文,等.光電跟蹤伺服系統(tǒng)的頻率特性測試與模型辨識[J].光學精密工程,2009,17(1):78-83.
[8] 王偉國,陳濤,沈湘衡.直流伺服系統(tǒng)機械時間常熟測試方法的研究[J].儀器儀表學報,2005,26(8):66-70.
[9] 李洪文.基于內模PID控制的大型望遠鏡伺服系統(tǒng)[J].光學精密工程,2009(2):327-332.
[10] 劉金錕.先進PID控制及其MATLAB仿真[M].北京:電子工業(yè)出版社,2003.

此內容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美三级视频在线观看| 在线播放亚洲| 欧美成人精品在线播放| 欧美一区=区| 午夜宅男欧美| 亚洲欧美综合精品久久成人| 亚洲视频第一页| 一本一本久久a久久精品综合麻豆| 亚洲精品精选| 亚洲精品一区二| 亚洲欧洲视频| 亚洲精品国久久99热| 亚洲国产一区二区在线| 亚洲国产精品久久久久婷婷老年| 亚洲电影免费观看高清完整版在线观看| 欧美一区二区高清在线观看| 午夜精品一区二区三区电影天堂 | 亚洲国产精品嫩草影院| 久久成人在线| 亚洲国产成人av| 亚洲福利在线看| 亚洲精品国产无天堂网2021| 亚洲美女色禁图| 艳妇臀荡乳欲伦亚洲一区| 在线亚洲伦理| 亚洲男人第一网站| 羞羞色国产精品| 久久成人国产精品| 久久久久综合网| 美腿丝袜亚洲色图| 欧美激情综合在线| 欧美日韩精品免费观看| 欧美午夜电影完整版| 国产精品久久91| 国产日韩综合一区二区性色av| 国产在线拍揄自揄视频不卡99| 韩国av一区二区| 在线观看不卡| 亚洲精品一区二区三| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 国产在线拍揄自揄视频不卡99| 激情综合色丁香一区二区| 黄色日韩网站| 亚洲三级视频| 亚洲综合日韩中文字幕v在线| 久久精品99国产精品酒店日本| 亚洲精品午夜精品| 亚洲一区二区三区免费观看 | 老牛嫩草一区二区三区日本| 欧美国产免费| 国产精品久久久久国产a级| 国产日韩欧美中文| 亚洲欧洲精品一区二区三区| 亚洲一区二区成人在线观看| 亚洲国产精品一区二区第一页| 一区二区高清在线观看| 先锋影音国产精品| 久久综合给合久久狠狠狠97色69| 欧美jizz19性欧美| 国产精品久久久久77777| 激情成人在线视频| 日韩午夜在线电影| 久久精品国产99精品国产亚洲性色 | 亚洲国产精品久久久久秋霞影院| 一区二区成人精品| 久久精品30| 欧美日韩国产色视频| 国产人久久人人人人爽| 亚洲激情另类| 性18欧美另类| 亚洲色无码播放| 久久久www成人免费精品| 欧美精品午夜| 韩日午夜在线资源一区二区| 99热这里只有精品8| 欧美在线资源| 亚洲天堂视频在线观看| 快she精品国产999| 国产精品日韩精品| 亚洲国产美女精品久久久久∴| 亚洲自拍高清| av不卡在线| 美女被久久久| 国产欧美日本一区二区三区| 国产精品v欧美精品v日韩| 在线电影国产精品| 亚洲欧美一区二区三区极速播放| 亚洲日本乱码在线观看| 欧美一区二区三区在线视频 | 欧美电影打屁股sp| 国产日本精品| 一区二区三区四区五区视频| 亚洲经典在线看| 久久精品中文字幕一区| 国产精品久久久久9999| 亚洲精品久久久久久久久久久久 | 久久黄色影院| 欧美在线视频免费播放| 国产精品国产精品国产专区不蜜| 亚洲经典在线看| 亚洲国产综合在线看不卡| 久久久久国产成人精品亚洲午夜| 国产精品色网| 亚洲无吗在线| 亚洲午夜电影| 欧美激情在线狂野欧美精品| 在线看片一区| 亚洲电影欧美电影有声小说| 久久精品天堂| 国产视频一区三区| 亚洲免费影院| 午夜精品美女自拍福到在线| 国产精品videosex极品| 一本色道久久综合亚洲精品不卡 | 久久久青草青青国产亚洲免观| 国产女人18毛片水18精品| av成人激情| 亚洲视频你懂的| 欧美日韩三级电影在线| 亚洲精品少妇30p| 99国产精品| 欧美精品日韩精品| 91久久综合亚洲鲁鲁五月天| 亚洲人成艺术| 欧美精品三级日韩久久| 亚洲精品国产精品乱码不99| 99国产一区| 欧美体内she精视频| 亚洲婷婷综合久久一本伊一区| 亚洲免费视频中文字幕| 国产精品二区在线观看| 亚洲一区三区电影在线观看| 欧美诱惑福利视频| 国产亚洲亚洲| 亚洲高清av在线| 欧美成人精品在线| 亚洲精选在线观看| 亚洲一区二区三区视频| 国产精品毛片va一区二区三区| 亚洲一区美女视频在线观看免费| 欧美亚洲专区| 国内外成人免费视频 | 午夜精品剧场| 国产丝袜美腿一区二区三区| 久久国产日韩欧美| 欧美高清不卡在线| 99精品国产高清一区二区| 亚洲欧美综合v| 国产主播一区二区三区四区| 亚洲日韩成人| 欧美视频日韩视频在线观看| 亚洲欧美在线高清| 美女视频黄 久久| 日韩亚洲欧美一区| 欧美一区二区视频网站| 精品1区2区| 中文亚洲欧美| 国产日韩综合一区二区性色av| 亚洲激情成人| 国产精品va在线播放| 欧美在线999| 欧美激情视频一区二区三区在线播放 | 99re热这里只有精品免费视频| 欧美一级成年大片在线观看| 一区二区在线观看视频| 999在线观看精品免费不卡网站| 国产精品久久久久久影院8一贰佰| 欧美伊人久久久久久久久影院| 欧美精品久久一区二区| 亚洲欧美变态国产另类| 老司机精品久久| 夜夜嗨av一区二区三区网页| 久久精品一区二区三区四区| 亚洲人成欧美中文字幕| 午夜在线精品偷拍| 最新国产乱人伦偷精品免费网站| 新狼窝色av性久久久久久| 在线观看亚洲精品| 亚洲欧美日韩在线不卡| 在线看一区二区| 午夜视频久久久久久| 亚洲国产经典视频| 欧美一区二区精品久久911| 亚洲国产成人午夜在线一区| 欧美自拍偷拍| 夜夜精品视频| 男人天堂欧美日韩| 午夜免费在线观看精品视频| 欧美乱大交xxxxx| 香蕉久久一区二区不卡无毒影院| 欧美极品在线观看| 香蕉精品999视频一区二区| 欧美日韩精品在线| 亚洲黄色毛片| 国产亚洲欧洲| 午夜精品久久| 亚洲伦理一区| 免费成人性网站| 欧美一区二区三区婷婷月色| 欧美视频在线免费|