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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 19934|回復: 20
打印 上一主題 下一主題
收起左側

基于DSP的PID控制算法的實現

  [復制鏈接]
跳轉到指定樓層
樓主
《數字信號處理與DSP應用》
課程論文
題目:    基于DSP的PID控制算法的實現
學 號:   2011080911
姓 名:             蔡*威         
班 級:   6班         
專 業:          電路與系統        
課程老師:         黃*生         

二零一二年二月二十日

摘 要:按偏差的比例、積分和微分進行控制的調節器稱為PID調節器,PID調節器是連續系統中技術成熟、應用最為廣泛的一種調節器。它構簡單,參數易于調整,在長期的應用中已積累了豐富的經驗。特別在工業過程中,由于控制對象的精確數學模型難以建立,系統的參數又經常發生變化,運用現代控制理論分析綜合要耗費很大的代價進行模型辨識,但往往不能得到預期的效果,所以人們常采用數字PID調節器,并根據經驗進行在線整定。這次課程設計將綜合用數字信號處理DSP以及自動控制方面的知識,使用CCS集成開發環境進行代碼的編譯,仿真,才能完成了本次設計。


前言在數字PID算法是目前一般控制領域中經常使用的自動控制算法,它依據給定的設定值,反饋值,以及比例系數,積分和微分時間,計算出一定的控制量,使被控對象能保持在設定的工作范圍,并且可以自動的消除外部擾動。由于軟件系統的靈活性,經計算出的PID參數可以在調試過程中隨時改變。能更精確的控制系統。得到較好的控制效果。PID 控制原理簡單、實現方便,并且適應面廣、魯棒性強,其控制品質對被控對象特性的變化不是很敏感。隨著計算機技術的發展,在 PID 控制的基礎上,出現了很多改進的數字 PID 控制方法 ,如微分先行 PID 控制、積分分離 PID 控制、帶死區的PID 控制等。對于數字PID 控制方法,又分為增量式 PID 控制算式和位置式 PID 控制算式。在絕大多數工業控制中,數字 PID 控制仍然是一種穩定的、可靠的、實現簡單的、使用廣泛的控制方法。

本設計以TI公司的TMS320VC5509和外接 D/ A芯片,實現數字 PID 控制器,采用的 PID 控制算法是增量式 PID 控制算法。TMS320VC5509 具有較高的運行速度和數據處理能力,能保證系統對多路模擬信號的實時采集和處理,提高系統的整體性能和集成度。在 DSP 內部設置參考輸入量,通過DSP片上 10 位 A/ D 轉換器采樣,把控制對象的實際輸出量采集到 DSP 中,經過DSP 的數字運算處理后,通過外部的 D/ A AD7237 進行數/ 模轉換,得到實際的模擬控制量去控制被控對象,使之按照系統的設置運行工作。

1、模擬PID調節器

模擬PID控制系統組成如圖1所示:

             圖1 模擬PID控制系統原理框圖

PID調節器是一種線性調節器,它將給定值r(t)與實際輸出值c(t)的偏差的比例(P)、積分(I)、微分(D)通過線性組合構成控制量,對控制對象進行控制。根據圖1,可以推導出PID調節器的微分方程為:

                  

      式中  

u(t)——控制器(也稱調節器)的輸出;

e(t)——控制器的輸入(常常是設定值與被控量之差,即e(t)=r(t)-c(t));

Kp——控制器的比例放大系數;

Ti ——控制器的積分時間;

Td —— 控制器的微分時間。

1.1 PID調節器各校正環節的作用

比例環節:即時成比例地反應控制系統的偏差信號e(t),偏差一旦產生,調節器立即產生控制作用以減小偏差。對于大多數調節器而言,都不采用比例增益kc作為刻度,而是用比例度來刻度,即δ=1/kc*100%. 也就是說比例度與調節器的放大倍數的倒數成比例。調節器的比例度越小,它的放大倍數越大,它把偏差放大的能力越大,反之亦然。

積分環節:主要用于消除靜差,提高系統的無差度。積分作用的強弱取決于積分時間常數TI,TI越大,積分作用越弱,反之則越強。調節器的積分作用就是為了消除自控系統的余差而設置的。所謂積分,就是隨時間進行累積的意思,即當有偏差輸入e存在時,積分調節器就要將偏差隨時間不斷累積起來,也就是積分累積的快慢與偏差e的大小和積分速度成正比。只要有偏差e存在,積分調節器的輸出就要改變,也就是說積分作用總是起作用的,只有偏差不存在時,積分才會停止。

微分環節:能反應偏差信號的變化趨勢(變化速率),并能在偏差信號的值變得太大之前,在系統中引入一個有效的早期修正信號,從而加快系統的動作速度,減小調節時間。可見,微分分量對偏差的任何變化都會產生控制作用,以調整系統輸出,阻止偏差變化,預見隨后。偏差變化越快,則產生的阻止作用越大。對于一個固定不變的偏差e(t),不論其數值多大,根本不會有微分作用輸出。

2、 數字PID控制器
2.1 模擬PID控制規律的離散
模擬形式
離散化形式
根據上表和模擬PID的數學表達式,可以退出數字PID控制器的差分方程為:
式中                  稱為比例項
                 稱為積分項
         稱為微分項
常用的控制方式有
    P控制         
PI控制         
PD控制         
PID控制        
2.2 PID算法的兩種類
2.2.1 位置型控制
                 
基本PID控制器的理想算式為
              
式中

u(t)——控制器(也稱調節器)的輸出;

e(t)——控制器的輸入(常常是設定值與被控量之差,即e(t)=r(t)-c(t));

Kp——控制器的比例放大系數;

Ti ——控制器的積分時間;

Td——控制器的微分時間。

設u(k)為第k次采樣時刻控制器的輸出值,可得離散的PID算式

              

                                               

式中

,              

由于計算機的輸出u(k)直接控制執行機構(如閥門),u(k)的值與執行機構的位置(如閥門開度),所以通常稱上式為位置式PID控制算法。

圖2 位置式PID控制器流程圖

位置式PID控制算法的缺點:當前采樣時刻的輸出與過去的各個狀態有關,計算時要對e(k)進行累加,運算量大;而且控制器的輸出u(k)對應的是執行機構的實際位置,如果計算機出現故障,u(k)的大幅度變化會引起執行機構位置的大幅度變化。

2.2.2增量型控制
增量型PID算法的算式為:
或者寫成
           
        式中

增量式PID是指數字控制器的輸出只是控制量的增量Δu(k)。采用增量式算法時,計算機輸出的控制量Δu(k)對應的是本次執行機構位置的增量,而不是對應執行機構的實際位置,因此要求執行機構必須具有對控制量增量的累積功能,才能完成對被控對象的控制操作。執行機構的累積功能可以采用硬件的方法實現;也可以采用軟件來實現,如利用算式

程序化來完成。

由上式可得增量式PID控制算式

            

式中

進一步可以改寫成

                                                                                                

式中

一般計算機控制系統的采樣周期T在選定后就不再改變,所以,一旦確定了Kp、Ti、Td,只要使用前后3次測量的偏差值即可求出控制增量。

根據上述分析,其程序流程圖如下:

圖3 增量型控制算法路程圖

增量式算法優點:①算式中不需要累加。控制增量Δu(k)的確定僅與最近3次的采樣值有關,容易通過加權處理獲得比較好的控制效果;②DSP每次只輸出控制增量,即對應執行機構位置的變化量,故機器發生故障時影響范圍小、不會嚴重影響生產過程。

經過綜合比較,最終選擇了增量式控制算法。

3.系統軟硬件設計
3.1硬件設計

為了實現上述控制算法,還需要硬件電路才行,設計電路原理圖如圖4所示:

從圖4 中可以看出,模擬量輸入,也即被控電機的實際輸出轉速,通過一個限流電阻 R 送到由 AD8041 構成的電壓跟隨器里,經過放大后,再經二極管D1 和 D2嵌位以及電阻 R 限流,送到TMS320VC5509片上的 A/D 轉換其中使得 A/D 的輸入限制在 0~3 300 mV。TMS320VC5509 一共有16 路復用的片上 A/D 轉換器,本實例只采用第 0 通道的A/D轉換。由DSP計算出控制量,通過外部數據總線送給D/ A 轉換器,采用 AD 公司的 AD7237 芯片,他是 8 位 D/ A 轉換器,由DSP的外部地址總線A2 ,A1 ,A0 構成D/ A轉換器的譯碼電路,D/ A轉換器的輸出采用AD7237 的A相輸出。TMS320VC5509 由外部提供復位信號,由無源晶振提供6 MHz時鐘。片上 A/D 轉換器的參考電壓高電平 V 接DSP電源+3.3 V 。

圖4  DSP實現數字PID控制器的電路原理圖

3.2 軟件設計

本設計運用了CCSV3.3軟件,它是一個完整的DSP集成開發環境,CCS支持軟仿真器、各種型號的硬仿真器、各種DSK和EVM板。

[11]CCS主要特點有:集成可視化代碼編輯界面,可以方便地直接編寫C、匯編、.h文件、.cmd文件等;集成代碼生成工具,包括匯編器、優化的C編譯器和連接器等;具有完整的基本調試工具,可以載入執行文件(.out),查看寄存器窗口、存儲器窗口和變量窗口、反匯編窗口等,支持在C源代碼級進行調試;支持多片DSP聯合調試;

斷點工具,支持硬件斷點、數據空間讀/寫斷點、條件斷點等;探針工具(probe points),用于進行算法仿真,數據監視等;剖析工具(profile pionts),用于評估代碼執行的時間;數據圖形顯示工具,可繪制時域/頻域波形、眼圖、星座圖等,并可以自動刷新;提供GEI二工具,用戶可以根據需要編寫自己的控制面板/菜單,從而方便直觀地修改變量,配置參數。支持RTDX(Real time date exchange)技術,利用該技術可以在不中斷目標系統運行的情況下,實現DSP與其它應用程序(OLE)實現數據交換,具有開放式的plug-ins技術,支持其它第三方的ActiveX插件。提供DSP、BIOS工具,利用該工具可增強對代碼的實時分析能力,減少開發人員對硬件資源熟悉程度的依賴性。

圖5 代碼調試與編譯

為了驗證算法的可行性,現建立數字PID直流電機控制模型,然后用Matlab的LTI狀態分析工具箱進行仿真,并繪制轉速及控制電壓變化圖形。

                   圖6 數字PID仿真模型
            
              利用Matlab軟件和 LTI工具箱函數,仿真源程序代碼如下:
clear all;
close all;
ts=0.01;                      %采樣時間=0.001s
sys=tf(2652,[1,25,490]);      %建立被控對象傳遞函數
dsys=c2d(sys,ts,'z');         %把傳遞函數離散化
[num,den]=tfdata(dsys,'v');   %離散化后提取分子、分母
e_1=0                         %上一偏差      
Ee=0;                         %偏差累計
u_1=0.0;                      %上一狀態電壓
u_2=0.0;
y_1=0;                        %上一狀態輸出
y_2=0;
kp=2.5;                       %PID參數
ki=0.04;                        
kd=0.28;                        
for k=1:100
time(k)=k*ts;                  %時間參數
r(k)=500;                     %給定值
    y(k)=-1*den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;
    e(k)=r(k)-y(k);          %偏差
    u(k)=kp*e(k)+ki*Ee+kd*(e(k)-e_1);   
    if u(k)>220
        u(k)=220;
    end
    if u(k)<=0
        u(k)=0;
    end      
    Ee=Ee+e(k);   
    u_2=u_1;
    u_1=u(k);   
    y_2=y_1;
    y_1=y(k);   
    e_2=e_1;
    e_1=e(k);
end
hold on;
plot(time,r,'r',time,y,'b',time,u,'r');
[kp,ki,kd];
程序調試好后,分別改變kp、ki和kd的參數值,看輸出圖形有何變化,理解PID控制中比例、積分和微分對控制系統的作用。
                   圖7  Matlab中仿真圖A
圖8 Matlab中仿真圖B
4 分析與結論
通過本次課程設計的軟件仿真與調試,才更加深刻的領悟了數字PID控制算法的精髓,使得理論得到了很好的驗證,從而是我鞏固了所學知識,得到了專業技能的鍛煉和提高。
5 參考文獻
[1] 胡壽松  自動控制原理  北京:科學出版社
[2] 童詩白、華成英  模擬電子技術基礎  北京:高等教育出版社
[3] 黃忠霖 控制系統MATLAB設計與仿真 北京:國防工業出版社
[4] 謝劍英、賈青 微型計算機控制技術 北京:國防工業出版社
[5]趙洪亮.TMS320C55X DSP 應用系統設計[M].北京:北京航空航天大學出版社,2008.
[6]王獻峰,石東.基于DSP的FIR數字濾波器設計與實現[J].通信電源技術,2006,23(4):38-40.
[7]張雄偉.DSP芯片的原理與開發應用(第三版)[M].北京:電子工業出版社,2003.
[8]丁玉美.數字信號處理(第二版)[M].西安:西安電子科技大學出版社,2005.
[9]楊大柱.基于TMS320C5510的FIR濾波器設計與實現[J].微計算機信息,2008,24(17).
[10]陳懷琛.MATLAB及其在理工課程中的應用指南[M].西安:西安電子科技大學出版社,2007.

附錄:源程序代碼

  1. /*****************************************************************
  2. PID Function
  3. The PID (比例、積分、微分) function is used in mainly
  4. control applications. PIDCalc performs one iteration of the PID
  5. algorithm.
  6. While the PID function works, main is just a dummy program showing
  7. a typical usage.
  8. ****************************************************************/
  9. /****************************頭文件******************************/
  10. #include "DSP28_Device.h"
  11. #include "System.h"
  12. #include "DSP28_Adc.h"

  13. typedef struct PID {
  14. double SetPoint;                        // 設定目標Desired value
  15. double Proportion;                      // 比例常數Proportional Const
  16. double Integral;                        // 積分常數Integral Const
  17. double Derivative;                      // 微分常數Derivative Const
  18. double LastError;                       // Error[-1]
  19. double PrevError;                       // Error[-2]
  20. double SumError;                       // Sums of Errors
  21. } PID;
  22. /*********************PID計算部分*********************************/
  23. double PIDCalc( PID *pp, double NextPoint )
  24. {
  25. double dError,
  26. Error;
  27. Error = pp->SetPoint - NextPoint;                          // 偏差
  28. pp->SumError += Error;                                  // 積分
  29. dError = pp->LastError - pp->PrevError;                    // 當前微分
  30. pp->PrevError = pp->LastError;
  31. pp->LastError = Error;
  32. return (pp->Proportion * Error                             // 比例項
  33. + pp->Integral * pp->SumError                            // 積分項
  34. + pp->Derivative * dError );                               // 微分項
  35. }

  36. /**********************Initialize PID Structure************************/
  37. void PIDInit (PID *pp)
  38. {
  39. memset ( pp,0,sizeof(PID));
  40. }

  41. /********************Main Program*********************************/
  42. double sensor (void)                                     // Dummy Sensor Function
  43. {
  44. return 100.0;
  45. }
  46. void actuator(double rDelta)                             // Dummy Actuator Function
  47. {}

  48. void InitAdc(void)
  49. {
  50. unsigned int i;
  51. AdcRegs.ADCTRL1.bit.RESET=1;
  52. NOP;
  53. AdcRegs.ADCTRL1.bit.RESET=0;                      //重新設置
  54. AdcRegs.ADCTRL1.bit.SUSMOD=3;              //設置仿真掛起模式 3,
  55. AdcRegs.ADCTRL1.bit.ACQ_PS=0;
  56. AdcRegs.ADCTRL1.bit.CPS=0;
  57. //對高速時鐘 HSPCLK 分頻,=0 時,不分頻,=1 時,二分頻
  58. AdcRegs.ADCTRL1.bit.CONT_RUN=0;             //開始-----停止模式
  59. AdcRegs.ADCTRL1.bit.SEQ_CASC=1;
  60. //級聯模式,SEQ1 和 SEQ2 作為一個 16 狀態排序器工作。
  61. AdcRegs.ADCTRL3.bit.ADCBGRFDN=3;           //帶隙和參考電路上電for(i=0;i<10000;i++) NOP;
  62. AdcRegs.ADCTRL3.bit.ADCPWDN=1;
  63. //除帶隙和參考電路外的 ADC 其它模擬電路上電
  64. for(i=0;i<5000;i++)  NOP;
  65. AdcRegs.ADCTRL3.bit.ADCCLKPS=15;
  66.                                             //時鐘分頻 ADCCLKPS=HSPCLKPS/[2*15*(ADCTRL1[7]+1)]
  67. AdcRegs.ADCTRL3.bit.SMODE_SEL=1;           //選擇同步采樣模式

  68. AdcRegs.MAX_CONV.bit.MAX_CONV=0;           //設置轉換通道0
  69. AdcRegs.CHSELSEQ1.bit.CONV00=0;
  70. AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;   //清除 SEQ1 的中斷標志位
  71. AdcRegs.ADC_ST_FLAG.bit.INT_SEQ2_CLR=1;   //清除 SEQ2 的中斷標志位
  72. AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ=0;      //無作用
  73. AdcRegs.ADCTRL2.bit.RST_SEQ1=0;      
  74. //將排序器立即復位到 CONV00 狀態
  75. AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1;  //使能 INT_SEQ1 的中斷請求
  76. AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1=0;
  77.                                           //每個 SEQ1 序列結束時,INT_SEQ1 置位
  78. AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=0;    //EVA 的觸發信號不啟動 SEQ1
  79. AdcRegs.ADCTRL2.bit.EXT_SOC_SEQ1=0;    //無操作
  80. AdcRegs.ADCTRL2.bit.RST_SEQ2=0;        //無操作
  81. AdcRegs.ADCTRL2.bit.SOC_SEQ2=0;         //清除一個掛起的 SOC 觸法
  82. AdcRegs.ADCTRL2.bit.INT_ENA_SEQ2=0;     //禁止 INT_SEQ2 產生的中斷請求
  83. AdcRegs.ADCTRL2.bit.INT_MOD_SEQ2=0;
  84. //每個 SEQ2 結束時,INT_SEQ2 置位
  85. AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ2=0;   
  86. //EVB 的觸發信號不啟動 SEQ2
  87. AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;
  88. //軟件觸法,從當前停止的位置啟動 SEQ1

  89. void main(void)
  90. {
  91. PID sPID;                                // PID Control Structure
  92. double rOut;                             // PID Response (Output)
  93. double rIn;                              // PID Feedback (Input)
  94. PIDInit ( &sPID );                        // Initialize Structure
  95. sPID.Proportion = 0.5;                    // Set PID Coefficients
  96. sPID.Integral = 0.5;
  97. sPID.Derivative = 0.0;
  98. sPID.SetPoint = 100.0;                    // Set PID Setpoint
  99. for (;;) {                                // Mock Up of PID Processing
  100. rIn = sensor ();                           // Read Input
  101. rOut = PIDCalc ( &sPID,rIn );               // Perform PID Interation
  102. actuator ( rOut );                         // Effect Needed Changes
  103. while(AdcRegs.ADC_ST_FLAG.bit.SEQ1_BSY==0)
  104. {
  105. AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;
  106. }     //只要 SEQ1 不忙,那么就啟動 SOC_SEQ1
  107. }
  108. /*********************AD 中斷服*********************************/

  109. interrupt void ad(void)
  110. {      
  111.    PieCtrl.PIEACK.bit.ACK1=1;               //采集 ADC0 通道的數據     
  112. ADtemp[adflag]=(AdcRegs.RESULT0>>4)&0x0fff;
  113. //右移四位,減小誤差
  114.                     //RESULT 寄存器的低四位為無效位,故應右移四位
  115.         adflag++;
  116.         if(adflag==MAX_DATA)
  117. {
  118.           adflag=0;
  119. }
  120.      AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;    //清除中斷標志位
  121.      AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;      

  122. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

完整論文下載(word格式 可編輯):
基于DSP的PID控制算法的實現.doc (477 KB, 下載次數: 375)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏11 分享淘帖 頂3 踩
回復

使用道具 舉報

沙發
ID:88957 發表于 2017-7-10 22:54 | 只看該作者
學習了。謝謝!
回復

使用道具 舉報

板凳
ID:325305 發表于 2018-5-8 18:37 | 只看該作者
良心大佬
回復

使用道具 舉報

地板
ID:247467 發表于 2018-5-11 09:02 | 只看該作者
謝謝分享資源
回復

使用道具 舉報

5#
ID:47428 發表于 2018-5-21 20:20 | 只看該作者
好東西
回復

使用道具 舉報

6#
ID:341109 發表于 2018-5-30 09:10 | 只看該作者
學習中!!!!
回復

使用道具 舉報

7#
ID:345500 發表于 2018-7-5 08:09 | 只看該作者
很不錯,先Mark
回復

使用道具 舉報

8#
ID:367123 發表于 2018-7-8 02:27 | 只看該作者
資料不錯  參考了
回復

使用道具 舉報

9#
ID:417534 發表于 2018-10-29 20:43 | 只看該作者
學習了。謝謝!
回復

使用道具 舉報

10#
ID:399475 發表于 2019-4-26 09:06 來自手機 | 只看該作者
謝謝分享
回復

使用道具 舉報

11#
ID:524173 發表于 2019-4-30 11:34 | 只看該作者
不錯的資料!!!!!!!!!
回復

使用道具 舉報

12#
ID:517387 發表于 2019-5-29 16:20 | 只看該作者
System.h文件發一下唄。。這個在哪里找
回復

使用道具 舉報

13#
ID:552849 發表于 2019-6-2 10:08 | 只看該作者
請問一下作者利用MATLAB的LTI工具箱調試的時候,傳遞函數是自己嘗試給的還是從電路圖中看出來的,如果是來源于電路圖,能不能有個大佬解釋一下
回復

使用道具 舉報

14#
ID:636505 發表于 2019-11-6 09:45 | 只看該作者
很需要這個,謝謝,過幾天再來下載
回復

使用道具 舉報

15#
ID:636605 發表于 2019-11-6 11:36 來自手機 | 只看該作者
受教了
回復

使用道具 舉報

16#
ID:438263 發表于 2020-6-13 17:05 | 只看該作者
學習先靠后,先整個文檔
回復

使用道具 舉報

17#
ID:438263 發表于 2020-6-13 17:13 | 只看該作者
好像差點東西
回復

使用道具 舉報

18#
ID:806006 發表于 2020-7-20 20:29 | 只看該作者
學習了!!!想要下載文檔來看
回復

使用道具 舉報

19#
ID:872450 發表于 2021-1-9 22:50 來自手機 | 只看該作者
這個不錯!讓后人受益匪淺。為你點贊
回復

使用道具 舉報

20#
ID:1122579 發表于 2024-5-27 21:28 | 只看該作者
mengsx 發表于 2018-5-30 09:10
學習中!!!!

加油加油加油
回復

使用道具 舉報

21#
ID:228360 發表于 2024-9-27 23:04 | 只看該作者
謝謝分享,有空試驗一下.
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人网在线看 | 韩国精品在线 | 欧美成人一区二区 | 欧美一区二区三区在线观看 | 欧美精品影院 | 国产免费一区二区三区 | 一区二区精品 | 成人久草 | 国产一区二区三区四区五区加勒比 | 成人精品国产免费网站 | 男女视频在线看 | 亚洲成人一级 | 国产成人精品一区二区三区四区 | 欧美精品在线一区二区三区 | 日日干夜夜操天天操 | 亚洲乱码一区二区三区在线观看 | 97在线观视频免费观看 | 在线视频 亚洲 | 365夜爽爽欧美性午夜免费视频 | 九一在线 | 国产a视频 | 黄色网址在线免费观看 | 中文字幕二区 | 91免费高清| 国产日韩欧美 | 欧美一级www片免费观看 | 精品一区二区三区不卡 | 一区欧美 | 婷婷久久五月 | 99re6在线| 免费观看黄a一级视频 | 日本成人二区 | 久久久久久久久99 | 91在线免费视频 | 久久精品久久久 | 国产目拍亚洲精品99久久精品 | 欧美 日韩 国产 一区 | 日韩欧美亚洲 | 国产高清性xxxxxxxx | 国产中文字幕亚洲 | a级性视频 |