久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4229|回復: 37
收起左側

求多任務系統中步進電機的平穩運行方案

  [復制鏈接]
ID:997026 發表于 2022-8-3 17:37 | 顯示全部樓層 |閱讀模式


調了好幾天都沒搞定,發現步進電機驅動起來很簡單,但是要想電機轉動平穩太難了,尤其是在多任務的系統中。
我的系統現在有多個任務,就是在while(1)循環中有好幾個函數需要執行,步進電機驅動是其中一個,現在如果把步進電機測試函數
單獨放在while(1)中,如下

int main(void)
{

while(1)
{
    motor_test(); //步進電機驅動
}

}

那么步進電機運轉很絲滑,很平穩,我通過多次調試找到了延時設置為1500us時,電機運轉最平穩,當然這只限于while(1)中只有這一個函數時,

如果我同時運行其他任務,如下

int main(void)
{

while(1)
{
    motor_test(); //步進電機驅動
    read_sensor();
    status_update();

}

}


void  motor_test()
{
       
                PAH; PBL;PCL;PDL;
SysTick_delay_us(1500);       
                PAH; PBH;PCL;PDL;
SysTick_delay_us(1500);       
                PAL; PBH;PCL;PDL;
        SysTick_delay_us(1500);
                PAL; PBH;PCH;PDL;
        SysTick_delay_us(1500);
                PAL; PBL;PCH;PDL;       
SysTick_delay_us(1500);       
                PAL; PBL;PCH;PDH;
        SysTick_delay_us(1500);
                PAL; PBL;PCL;PDH;       
        SysTick_delay_us(1500);
                PAH; PBL;PCL;PDH;
        SysTick_delay_us(1500);
}


那么,電機會轉起來,但是會產生震動,怎么調整延時值都沒用,1500上下的延時我都試過了,一樣震動,可能有人會說,用定時器中斷,我當然試過,而且調試了很長時間,一樣的結果也是震動,我知道是其他程序影響了電機運轉,但不至于對時間要求這么精確把?其他的程序執行會分掉時間,但不至于會影響到電機這么嚴重吧?
我甚至把這兩個函數read_sensor();和status_update();用時間片輪詢的方法寫了一遍,就是給他們分配更長的執行時間,讓步進電機執行時間盡可能短,也還是不行,還是震動。

真的沒有思路了,大家有什么好的思路嗎?可以解決震動問題

回復

使用道具 舉報

ID:161164 發表于 2022-8-3 22:54 | 顯示全部樓層
定時器中斷內是怎么寫的?
直接放motor_test()進中斷?
回復

使用道具 舉報

ID:1023753 發表于 2022-8-4 08:05 | 顯示全部樓層
定時器中斷中來分別執行步進電機每一步
回復

使用道具 舉報

ID:712493 發表于 2022-8-4 08:18 | 顯示全部樓層
lkc8210 發表于 2022-8-3 22:54
定時器中斷內是怎么寫的?
直接放motor_test()進中斷?

那應該是吧!哈哈 樓主土豪  直接一個一個1500us延時 整個驅動下來消耗多少時間,確實只能一個函數運行,放那都一樣
回復

使用道具 舉報

ID:844772 發表于 2022-8-4 10:39 | 顯示全部樓層
你的問題是每個八拍間的延遲,關鍵看其他任務占時是多少,如果在1.25毫秒內,看剩多少在motor-test()最后那句找齊。如果其他任務時間不確定,就通過中斷計時,改步進電機程序,判斷中斷計數執行相應步
回復

使用道具 舉報

ID:844772 發表于 2022-8-4 10:44 | 顯示全部樓層
剛才回答沒仔細看你的問題,我覺得你不是延時的問題是電源的問題,一般步進電機對時間要求沒那么精確,震動是電源功率不足或者轉速太快。
回復

使用道具 舉報

ID:213173 發表于 2022-8-4 12:56 | 顯示全部樓層
int main(void)
{
        while(1)
        {
                motor_test(); //步進電機驅動
                read_sensor();
                status_update();
//                SysTick_delay_us(xxxx);//選用
        }
}

void  motor_test()
{
        static unsigned char i=0;
        switch(i)
        {
                case 0: PAH;PBL;PCL;PDL; break;
                case 1: PAH;PBH;PCL;PDL; break;
                case 2: PAL;PBH;PCL;PDL; break;
                case 3: PAL;PBH;PCH;PDL; break;
                case 4: PAL;PBL;PCH;PDL; break;
                case 5: PAL;PBL;PCH;PDH; break;
                case 6: PAL;PBL;PCL;PDH; break;
                case 7: PAH;PBL;PCL;PDH; break;
        }
        i=++i%8;
}
回復

使用道具 舉報

ID:883242 發表于 2022-8-4 13:36 | 顯示全部樓層
放在定時中斷里面,難道你不會用中斷?
回復

使用道具 舉報

ID:879348 發表于 2022-8-4 13:47 | 顯示全部樓層
步進驅動放到定時中斷
回復

使用道具 舉報

ID:526108 發表于 2022-8-4 14:20 | 顯示全部樓層
步進電機直接放定時器中驅動
回復

使用道具 舉報

ID:276685 發表于 2022-8-4 15:57 | 顯示全部樓層
回復

使用道具 舉報

ID:997026 發表于 2022-8-4 20:59 | 顯示全部樓層
lkc8210 發表于 2022-8-3 22:54
定時器中斷內是怎么寫的?
直接放motor_test()進中斷?

現在問題分兩種情況:
一種是如上面的1500us的延時寫法,while(1)循環里只放motor_tet(), 電機運轉絲滑很平穩,如果同時放其他函數,電機就會發生震動,無論怎么調延時都沒用。

另一種情況是,用定時器中斷寫法,定時器中斷寫法問題更嚴重,無論while(1)循環里是只放motor_tet(),還是同時放其他函數,都會發生震動,感覺轉動很不連續。我懷疑是不是我的定時器中斷程序寫錯了?或者我的中斷開多了?因為我程序里總共開了三個中斷,一個20ms, 一個1ms,再就是systick中斷是100us進一次,我是把電機控制放在systick中斷里,如下
void SysTick_IrqHandler(void) //配置滴答時鐘每100us進一次中斷
{
       if(motor_run_flag==1)
        {
                    motor_run_cnt++;
        }
       
}

我沒有把motor_test()直接放在中斷里,而是定義了一個計數器在中斷計數,電機運行放在主程序,根據中斷計數,到一定時間就翻轉IO,這樣做是為了方便控制,可以設置電機速度,如下
void motor_test(uint16_t speed) //四相八拍
{
                motor_run_flag=1;
                if(motor_run_cnt<speed) //speed以1500us為例,speed=15,100us進一次中斷
                {
                        PAH;PBH;PCL;PDL; //A
                }
                else if(motor_run_cnt<speed*2) //3000
                {
                        PAL;PBH;PCH;PDL; //AB
                }
                else if(motor_run_cnt<speed*3) //4500
                {
                        PAL;PBL;PCH;PDH; //B
                }
                else if(motor_run_cnt<speed*4) //6000
                {
                        PAH;PBL;PCL;PDH; //BC
                }
                else if(motor_run_cnt<speed*5) //7500
                {
                        PAL;PBL;PCH;PDL; //C
                }
                else if(motor_run_cnt<speed*6) //9000
                {
                        PAL;PBL;PCH;PDH; //CD
                }
                else if(motor_run_cnt<speed*7) //10500
                {
                        PAH;PBL;PCL;PDH; //D
                }
                else if(motor_run_cnt<speed*8) //12000
                {
                        PAH;PBL;PCL;PDH; //DA
                }
                else
                {
                        angle_cnt++;  //運行完上面八拍自增一次,記錄運行了幾個八拍
                        if(angle_cnt>= 4096) //當運行到4096個八拍時停止電機
                        {
                                motor_run_cnt=0xF4240; //停止計數
                                angle_cnt= 4096;
                                PAL;PBL;PCL;PDL; //停止
                               
                        }
                        else //未計數到4096時循環運行
                        {
                                motor_run_cnt =0;
                        }
                                     
                }
}

以上的程序還不完善,只是為了測試,第一次做電機不知道寫的對不對,但感覺還是有點問題,因為上面的 程序直接放在while(1)中電機無論調到哪個速度都會震動始終不能平穩運行,更別說while(1)中還有其他程序,所以感覺這個代碼肯定是有問題的。
回復

使用道具 舉報

ID:997026 發表于 2022-8-4 21:03 | 顯示全部樓層
glinfei 發表于 2022-8-4 10:44
剛才回答沒仔細看你的問題,我覺得你不是延時的問題是電源的問題,一般步進電機對時間要求沒那么精確,震動 ...

問題是我現在用1500us的延時,在while(1)循環中只放motor_test()這個函數,電機沒有任何震動,運轉非常絲滑,連聲音都幾乎聽不到,非常細膩,但是一旦while(1)中放了其他函數,電機就開始震動,無論你設置什么延時都不能解決。我步進電機是12V 24BJY48減速電機,用的是ULN2003驅動,外部電源的最大輸出是2A,應該帶的動吧?單片機IO是3.3V電平,可以驅動ULN2003嗎?但是如剛才說,在while(1)循環中只放motor_test()這個函數,電機沒有任何震動,運轉非常絲滑。
回復

使用道具 舉報

ID:997026 發表于 2022-8-4 21:11 | 顯示全部樓層
fj51hei 發表于 2022-8-4 08:18
那應該是吧!哈哈 樓主土豪  直接一個一個1500us延時 整個驅動下來消耗多少時間,確實只能一個函數運行, ...

你錯了,這樣寫是為了測試我的電機是不是有問題,剛開始我是定時器中斷寫法,但是怎么都不能解決震動,我用這種延時寫法來測試到底是程序問題還是電機問題,并不是我的項目中要這樣寫。我的單片機是M4核,200M主頻,192K RAM,我測試過,就算我用這種1500us延時放在while(1)循環一直運行,都絲毫不會影響我其他程序的運行,現在的問題是電機運行不連續有震動,我認為是程序需要優化,但肯定不會用這種延時寫法,只是為了測試用
回復

使用道具 舉報

ID:997026 發表于 2022-8-4 21:30 | 顯示全部樓層
wulin 發表于 2022-8-4 12:56
int main(void)
{
        while(1)

感謝提供代碼,我試試
回復

使用道具 舉報

ID:844772 發表于 2022-8-5 08:42 | 顯示全部樓層
hxdby 發表于 2022-8-4 21:03
問題是我現在用1500us的延時,在while(1)循環中只放motor_test()這個函數,電機沒有任何震動,運轉非常絲 ...

我都是用5v驅動ULN2003,3.3V單獨驅動它也沒問題,但你又接了其他傳感器,就不一定行了。步進電機本來為了控制動作,就是根據任務調整延時的,你的問題時出現震動,這不是延時造成的。
回復

使用道具 舉報

ID:161164 發表于 2022-8-5 09:54 | 顯示全部樓層
hxdby 發表于 2022-8-4 20:59
現在問題分兩種情況:
一種是如上面的1500us的延時寫法,while(1)循環里只放motor_tet(), 電機運轉絲滑 ...

把7樓的motor_test()放到1500us中斷里運行看看
回復

使用道具 舉報

ID:997026 發表于 2022-8-5 10:05 | 顯示全部樓層
lkc8210 發表于 2022-8-5 09:54
把7樓的motor_test()放到1500us中斷里運行看看

好的,我也正想這樣試試
回復

使用道具 舉報

ID:997026 發表于 2022-8-5 10:09 | 顯示全部樓層
glinfei 發表于 2022-8-5 08:42
我都是用5v驅動ULN2003,3.3V單獨驅動它也沒問題,但你又接了其他傳感器,就不一定行了。步進電機本來為 ...

我也感覺不是延時問題,總感覺是定時中斷被什么打斷了,因為我系統里總共開了三個中斷,是不是優先級設置的不夠不打斷了?因為現在電機的現象就是震動,運轉不連續,而且扭矩很小。

下一步我準備按照Ikc8210建議,用wulin的代碼,直接放到1500us的中斷里試試,同時把這個中斷優先級設置到最高,不能被搶占,不能被打斷。
回復

使用道具 舉報

ID:123289 發表于 2022-8-5 14:10 | 顯示全部樓層
其實很簡單,道理:牛頓定律,F=M*a。
你給電機通電,就是給電機加力F,這個F是有極限的(取決于電機的功率)。
電機有負載,就是M,M與負載的大小相關,所以加速度a不是恒量。
平穩:當a恒定時,給你的感覺就平穩了。
電機從靜止到有速度,或從速度1,過渡到速度2是需要時間的,在F、M的限制下,過渡過程需要的時間T就需要關注了,這也是你唯一可智能控制的參數(提速度的時間)。
你的極限提速時間(從頻率1升(降)到頻率2)是T,如果變頻太快,就會感覺到有“振動”,其實是F<M*a,拖不動,電機失步了。
就簡單的升速控制T方案是延時DT,明白上述道理后就會知道DT是個變量,你提出1500us,只是在某一個點的工況下OK,換個工況就不一定OK了。
搞定步進電機,也是需要物理知識的,更需要有智慧找出控制方案。

回復

使用道具 舉報

ID:997026 發表于 2022-8-5 16:31 | 顯示全部樓層
fbn20050523 發表于 2022-8-4 15:57
看我發的帖子http://www.zg4o1577.cn/bbs/dpj-220045-1.html

你這個比較高級,我這個控制比較簡單,主要就是控制一個流量閥的開合,來控制氣體的流量,勻速運動就可以了,也不需要很快的轉速,主要是位置比較重要。你這個代碼主要是用于哪方面的控制?
回復

使用道具 舉報

ID:690831 發表于 2022-8-6 00:40 來自觸屏版 | 顯示全部樓層
你的步進電機是四相五線的,還是兩相四線的
回復

使用道具 舉報

ID:690831 發表于 2022-8-6 00:44 來自觸屏版 | 顯示全部樓層
震動,是原地左右擺動,通常是驅動時序錯了。
回復

使用道具 舉報

ID:883242 發表于 2022-8-6 13:50 | 顯示全部樓層
iamluckman 發表于 2022-8-6 00:40
你的步進電機是四相五線的,還是兩相四線的

都說了是ULN2003驅動,你還不知道幾根線?
回復

使用道具 舉報

ID:997026 發表于 2022-8-6 21:52 | 顯示全部樓層
iamluckman 發表于 2022-8-6 00:40
你的步進電機是四相五線的,還是兩相四線的

24BJY48,步進減速電機,四相八拍驅動方式,四相五線
回復

使用道具 舉報

ID:997026 發表于 2022-8-6 21:54 | 顯示全部樓層
iamluckman 發表于 2022-8-6 00:44
震動,是原地左右擺動,通常是驅動時序錯了。

不是原地左右擺動,是可以按照程序運轉一圈或幾圈,就是運行的同時有震動
回復

使用道具 舉報

ID:690831 發表于 2022-8-9 02:37 | 顯示全部樓層
hxdby 發表于 2022-8-6 21:54
不是原地左右擺動,是可以按照程序運轉一圈或幾圈,就是運行的同時有震動

MCU stc90c52rc
回復

使用道具 舉報

ID:690831 發表于 2022-8-9 02:41 | 顯示全部樓層
hxdby 發表于 2022-8-6 21:54
不是原地左右擺動,是可以按照程序運轉一圈或幾圈,就是運行的同時有震動

你試試這個會不會頓挫感
mcu stc90c52RC
晶振 11.0592
電機 28BYJ-48

#include "STC89.h"
//#include "main.h"
#include "intrins.h"

typedef   unsigned char uchar;
typedef   unsigned int uint;
typedef  uchar u8;
typedef  uint u16;
typedef  long int u32;
#define nop         _nop_()

#define FOSC 11059200L      //晶振
#define BAUD 9600           //波特率
#define Forward 1
#define Backward 0

#define   M1_A P10
#define   M1_B P11
#define   M1_C P12
#define   M1_D P13

#define   Delay_2003  nop

void Delay100ms()                //@11.0592MHz
{
    unsigned char i, j, k;
    _nop_();
    _nop_();
    i = 5;
    j = 52;
    k = 195;
    do
    {
        do
        {
            while ( --k );
        }
        while ( --j );
    }
    while ( --i );
}
//-----------------------------------------------
//direction 正反轉
//run_part  運行步數
u8 M1_run ( u8 direction,u16 run_part  ) ////減速比 1/64
{
//    static        u16 f=2000;
    static u8 M1_part=1;
    static u16 part=0;
    static bit f=0;
    static u16 _run_part;
    if ( f==0 ) //是一個新數據
    {
        _run_part=run_part;//新步數載入緩存
        part=0;//拍數從零開始
        f=1;//
    }
    if ( part<_run_part )
    {
        part++;//記錄已運行步數
        if        ( direction==Forward ) //正轉
        {
            if ( M1_part ==8 )
            {
                M1_part=0;
            }
            M1_part++;
        }
        else if ( direction==Backward ) //反轉
        {
            if ( M1_part==1 )
            {
                M1_part=9;
            }
            M1_part--;
        }
        switch ( M1_part )
        {
        case ( 1 ) :
            M1_A =1;
            M1_B =0;
            M1_C =0;
            M1_D =0;
            Delay_2003;
            break;
        case ( 2 ) :
            M1_A =1;
            M1_B =1;
            M1_C =0;
            M1_D =0;
            Delay_2003;
            break;
        case ( 3 ) :
            M1_A =0;
            M1_B =1;
            M1_C =0;
            M1_D =0;
            Delay_2003;
            break;
        case ( 4 ) :
            M1_A =0;
            M1_B =1;
            M1_C =1;
            M1_D =0;
            Delay_2003;
            break;
        case ( 5 ) :
            M1_A =0;
            M1_B =0;
            M1_C =1;
            M1_D =0;
            Delay_2003;
            break;
        case ( 6 ) :
            M1_A =0;
            M1_B =0;
            M1_C =1;
            M1_D =1;
            Delay_2003;
            break;
        case ( 7 ) :
            M1_A =0;
            M1_B =0;
            M1_C =0;
            M1_D =1;
            Delay_2003;
            break;
        case ( 8 ) :
            M1_A =1;
            M1_B =0;
            M1_C =0;
            M1_D =1;
            Delay_2003;
            break;
        }
    }
    else if ( part>=_run_part )
    {
        M1_A =0;
        M1_B =0;
        M1_C =0;
        M1_D =0;
//        part=0;
        f=0;
    }
    return f;
}
//-----------------------------------------------
void TIME0_INIT ( void )
{
//    AUXR &= 0x7F;                //定時器時鐘12T模式
    TMOD &= 0xF0;                //清空定時器模式
    TMOD |= 0x01;                //設置定時器模式16位
    TL0 = ( 65536 - FOSC / 12 / 1000 );                // 1ms  的初裝值*/
    TH0 = ( 65536 - FOSC / 12 / 1000 ) >> 8;
    ET0 = 1;                                                 //允許定時器0中斷
    TF0 = 0;                //清除TF0標志
    EA = 1;                                                 //允許總中斷
    TR0 = 1;                //定時器0開始計時
}
//------------------------------
bit M1_flag;
void time0()        interrupt 1                          //定時/計數器 中斷
{
//    static bit a=1;
    TF0 = 0;                //清除TF0標志
    TL0 = ( 65536 - FOSC / 12 / 1000 );                //設置定時初值 65536-fosc/12/1000  /*12T時 定時器 每 1ms  的初裝值*/
    TH0 = ( 65536 - FOSC / 12 / 1000 ) >> 8;                //設置定時初值        TF1 = 0;                //清除TF1標志
    if ( M1_flag==1 )
    {
        M1_flag=M1_run ( Backward,4000 );
    }
    if ( M1_flag==0 )
    {
        P21=0;   //步數完成
    }
}
void main()
{
    M1_A =0;
    M1_B =0;
    M1_C =0;
    M1_D =0;
    TIME0_INIT (  );//定時器初始化
    while ( 1 )
    {
        Delay100ms();
        P22=~P22;
        if ( P20==0 )//按鍵啟動電機
        {
            M1_flag=1;
            P21=1;//關燈
        }
    };
}
回復

使用道具 舉報

ID:1034262 發表于 2022-8-9 09:49 | 顯示全部樓層
程序不高效引起。
記住,程序中不要用軟件延時,電機驅動脈沖要用中斷來處理。我驅動、8個步進電機都絲滑,還有N多數據要處理,多個串口要通訊(115200)。
回復

使用道具 舉報

ID:139866 發表于 2022-8-9 10:47 | 顯示全部樓層
不如試試freertos?
回復

使用道具 舉報

ID:276685 發表于 2022-8-9 12:31 | 顯示全部樓層
hxdby 發表于 2022-8-5 16:31
你這個比較高級,我這個控制比較簡單,主要就是控制一個流量閥的開合,來控制氣體的流量,勻速運動就可以 ...

給你個思路,加個緩沖區.我那個代碼n軸聯動都不會卡,實際16mhz,avr芯片順滑無比.你把你的電機怎么發脈沖的放到一個函數里,不要加延時.換到我那個程序里.然后通過控制定時器頻率改速度
回復

使用道具 舉報

ID:844772 發表于 2022-8-9 12:56 | 顯示全部樓層
弄好了嗎?我就是覺得不是程序問題,本來應該5v的用3.3v驅動
回復

使用道具 舉報

ID:844772 發表于 2022-8-9 13:01 | 顯示全部樓層
成功了也說一下原因啊。我總覺得不是程序問題,而且你確定在用3.3驅動5v板子,稍微多幾個傳感器就不行了,要不你把那幾個腳拉高,或者拔掉所有其他負載試試。
回復

使用道具 舉報

ID:236035 發表于 2022-8-9 13:07 | 顯示全部樓層
1 流量閥用直流電機就行了,就是給電就轉,不給電就行。
2 步進電機的時間就是要很精確,我用過PWM輸出控制步進電機驅動器,都是在中斷內執行控制算法的。如果用延時的方法,確實會不平滑。
回復

使用道具 舉報

ID:1041712 發表于 2022-8-9 15:14 | 顯示全部樓層
震動是不是因為阻尼沒調整?
回復

使用道具 舉報

ID:997026 發表于 2022-8-23 22:15 | 顯示全部樓層
glinfei 發表于 2022-8-9 13:01
成功了也說一下原因啊。我總覺得不是程序問題,而且你確定在用3.3驅動5v板子,稍微多幾個傳感器就不行了, ...

這段時間非常忙,一直沒有回復,這個問題已經解決了,就是放在中斷內就可以了,中斷優先級調到最高。注意程序的寫法也要發非常注意,程序寫的不高效也會出現震動,我用的是wulin提供的程序,運轉很好。

確定硬件沒有問題,3.3V可以驅動ULV2003,沒問題。
回復

使用道具 舉報

ID:997026 發表于 2022-8-23 22:19 | 顯示全部樓層
這段時間非常忙,一直沒空上來回復,這個問題已經解決了,就是把程序放在中斷中,1500us執行一次,中斷優先級設置為最高。我是放在嘀嗒中斷中,或者放在其他定時器中斷里都可以。
硬件上沒啥問題,3.3V MCU一樣可以驅動ULN2003

用的是wulin提供的代碼,真的非常感謝wulin的代碼,和1kc8210的建議,感謝你們的幫助!
回復

使用道具 舉報

ID:997026 發表于 2022-9-4 15:33 | 顯示全部樓層
ly1972001 發表于 2022-8-9 13:07
1 流量閥用直流電機就行了,就是給電就轉,不給電就行。
2 步進電機的時間就是要很精確,我用過PWM輸出控 ...

我這個流量閥非常復雜,主要是需要記住位置,主要的工作量都是在做位置檢測,流量閥有8個檔位,通過步進電機控制,每個檔位對應一個固定的電機位置,每個檔位之間可以交叉切換,這樣就必須考慮每個檔位對應的固定位置不變,無論切到哪個檔位,回到當前檔位的時候位置必須不變,還有電機的異常處理,比如正在轉的過程中斷電了,位置如何判斷等,非常復雜,需要一套完整的檢測算法
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲日本中文 | 亚洲日日夜夜 | 亚洲导航深夜福利涩涩屋 | 五月婷婷 六月丁香 | 97成人在线 | 99久久久99久久国产片鸭王 | 亚洲国产视频一区 | hitomi一区二区三区精品 | 午夜精品久久久久久久久久久久 | 国产日韩欧美精品一区二区三区 | 天天噜天天干 | 国产黄色在线观看 | 日韩在线免费播放 | 性色网站 | av在线一区二区三区 | 精品一区二区三区在线观看国产 | 久久久久久综合 | 欧美h版| 隔壁老王国产在线精品 | 久久久国产一区二区三区 | 精品视频在线播放 | 久草.com | 欧美激情五月 | 美女一区二区在线观看 | av激情在线| 久久国产精99精产国高潮 | 久久99精品久久久久久琪琪 | 亚洲九九色| 黄网站涩免费蜜桃网站 | 成人亚洲精品 | 国产精产国品一二三产区视频 | 一区二区三区在线 | 国产女人叫床高潮大片免费 | 国产精品自拍啪啪 | 午夜精品久久久久久久久久久久久 | 亚洲国产精品99久久久久久久久 | 人人爱干| 亚洲精品乱码久久久久久按摩 | 天天夜碰日日摸日日澡 | 日韩在线三级 | www97影院 |