wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2308|回復(fù): 2
收起左側(cè)

鋰電池常用的SOC算法分享

[復(fù)制鏈接]
ID:1064931 發(fā)表于 2023-3-2 18:09 | 顯示全部樓層 |閱讀模式
SOC.h
  1. #ifndef _SOC_H
  2. #define _SOC_H   
  3. #define MAX_SOC 100    //1%/位        0~100%

  4. #define MIN_SOC 0    //最小SOC     

  5. #define  ADJUSTCAP_OCV      1
  6. #define  ADJUSTCAP_CHARGE   2
  7. //范圍0~999AH   3596400AS
  8. typedef struct      
  9. {
  10.    unsigned long ulAs;     //1AH = 1*3600As
  11.    
  12.    unsigned long ulWh;    //電量 0.1Wh/bit
  13.    
  14.    unsigned char ucSOC;    //剩余電量 1%/位            
  15. }TSOCPARA;

  16. extern  TSOCPARA g_SOCPara;

  17. typedef struct      
  18. {
  19.    signed long g_slChaAms; //充電累計(jì)容量
  20.    
  21.    unsigned char ucOriSOC; //充電起始SOC            
  22. }TCHAAHPARA;

  23. extern TCHAAHPARA g_tChaAhPara;

  24. extern volatile unsigned char CalSOCTimesOut;
  25. extern volatile signed long g_slAms; //JACK

  26. void WriteAs(void);
  27.        
  28. void ReadSoc( void );    //從EEPROM讀取SOC

  29. void WriteDefaultSoc( void );    //寫默認(rèn)SOCEEPROM

  30. void WriteSoc( unsigned short usSoc );    //寫SOC到EEPROM

  31. unsigned char CalAdjustCap( unsigned char ucSelect);

  32. #endif
復(fù)制代碼


SOC.c
  1. #include "TypeDefine.h"
  2. #include "SOC.h"   
  3. #include "FM31256.H"

  4. //安時(shí)*毫秒
  5. //long型 最大596ah
  6. //限制  500ah*3600*1000 = 1800000000Ams //1A*1ms
  7. #define MAX_LIMIT_AMS 0x6B49D200 //1800000000Ams

  8. TSOCPARA g_SOCPara;

  9. //進(jìn)行容量保存判斷標(biāo)準(zhǔn) 相差值大小
  10. unsigned char  g_ucSOC_Back = 0;//

  11. volatile unsigned char CalSOCTimesOut;

  12. volatile signed long g_slAS = 0;//當(dāng)前容量
  13. volatile signed long g_slAms =0; //JACK

  14. //SOC累計(jì)標(biāo)準(zhǔn) 初始狀態(tài)上累計(jì) 對應(yīng)g_slAms 變量
  15. signed long g_slInitAS = 0;//初始容量

  16. static unsigned char g_ucCalAdjustFlag = 0;

  17. TCHAAHPARA g_tChaAhPara;

  18. unsigned long diff(unsigned long w1,unsigned long w2)
  19. {
  20.         if(w1>w2)
  21.                 return(w1-w2);
  22.         else
  23.            return(w2-w1);
  24. }

  25. const unsigned int g_cuiOCVTable[ 5 ]={0,0,0,0,0};

  26. const unsigned int g_cuiOCVSOCTable[ 5 ]={0,0,0,0,0};

  27. /* lookUp1d
  28. * ========
  29. * Performs simple linear interpolation of a 2D map.
  30. * Outputs are bounded by the upper and lower values
  31. *
  32. * Both axis are expected to be increasing in value
  33. * as the index increases
  34. *
  35. * Return = -1 for error and 1 for success
  36. * Params = int *ans         > an address to put the result
  37. *          int x            > the x value to lookup
  38. *          const int *xAxis > array of value for x axis
  39. *          const int lenX   > length of x axis array
  40. *          int y            > the y value to lookup
  41. *          const int *yAxis > array of value for y axis
  42. *          const int lenY   > length of y axis array
  43. *
  44. */

  45. int lookUp1d(int *ans,
  46.                    int x, const int *xAxis, const int lenX,
  47.                    const int *tab)
  48. {
  49.         int ret = -1; /* -1 is the error return value */
  50.         int ix=0;

  51.         /* make sure the lengths are good */
  52.         if ( (lenX <=0 ) ||
  53.                  (xAxis == NULL) ||
  54.                  (tab == NULL)   ||
  55.                  (ans == NULL) )
  56.         {
  57.                 /* this has bad input data */
  58.         }
  59.         else
  60.         {

  61.                 /* make sure it is in the boundaries before we do any looping*/
  62.                 if (x<=xAxis[0])
  63.                 {
  64.                         x = xAxis[0];
  65.                 }
  66.                 else
  67.                 {
  68.                         if (x>=xAxis[lenX-1])
  69.                         {
  70.                                 x = xAxis[lenX-1];
  71.                         }
  72.                 }

  73.                 for (ix=0;ix<(lenX-1);ix++)
  74.                 {
  75.                         if (x>=xAxis[ix] && x<=xAxis[ix+1])
  76.                         {
  77.                                 int x1,x2;
  78.                                 int z1,z2;

  79.                                 /* copy to a lot of temp variables to make code easier to read*/
  80.                                 x1=xAxis[ix];
  81.                                 x2=xAxis[ix+1];                                                
  82.                                 z1=tab[ix];
  83.                                 z2=tab[(ix+1)];

  84.                                 /* then interpolate in the y direction for the answer */
  85.                                 *ans = z1+((z2-z1)*(x-x1))/(x2-x1);

  86.                                 /* indicate a valid result */
  87.                                 ret  = 1;
  88.                                 break; /* exit as fast as possible */
  89.                         }
  90.                 }
  91.         }

  92.         return ret;
  93. }

  94. //返回: -1 for error and 1 for success
  95. //參數(shù):填充結(jié)果, OCV值
  96. int OCV_SOC( int *resSOC, unsigned int uiVolt)
  97. {
  98.         int res = 0;
  99.         
  100.         res = lookUp1d(resSOC,uiVolt,g_cuiOCVTable,5,g_cuiOCVSOCTable);

  101.         return res;        
  102. }

  103. //兩種方法修正實(shí)際可用容量( 不考慮老化 )
  104. unsigned char CalAdjustCap( unsigned char ucSelect)
  105. {
  106.         int res1 = 0, res2 = 0;

  107.         unsigned char ucMaxSOC = 0, ucMinSOC = 0 ;

  108.         unsigned long ulTemp1 = 0,ulTemp2 = 0;

  109.         res1 = OCV_SOC( &ucMaxSOC, ECU_Rt.maxv );

  110.         res2 = OCV_SOC( &ucMinSOC, ECU_Rt.minv );
  111.         
  112.         if( ( 1 == res1) && ( 1 == res2))
  113.         {

  114.                 if( ADJUSTCAP_OCV == ucSelect)
  115.                 {
  116.                         //OCV 法 EV HEV
  117.                         //OCVmax => SOCmax   OCVmin => SOCmin
  118.                         //Cpack=SOCmin*Crate + ( 1 - SOCmax) * Crate = 60 + 30  = 90Ah
  119.                         ulTemp1 = Sys_Rt.Type_Cap;
  120.                         ulTemp1 *= ucMinSOC;

  121.                         ulTemp2 = Sys_Rt.Type_Cap;
  122.                         ulTemp2 *= 100 - ucMaxSOC;

  123.                         ulTemp1 += ulTemp2;

  124.                         ulTemp1 /= 100;

  125.                         Sys_Rt.ADJType_Cap = (UINT16)ulTemp1;

  126.                         g_ucCalAdjustFlag = 1;                        
  127.                 }
  128.                 else if( ADJUSTCAP_CHARGE == ucSelect)
  129.                 {
  130.                     //充電法 (EV)
  131.                     //OCVmin => SOCmin
  132.                     //Cpack=SOCmin*Crate + Ccharged
  133.                         ulTemp1 = g_tChaAhPara.ucOriSOC;
  134.                         ulTemp1 *= Sys_Rt.Type_Cap;
  135.                         ulTemp1 /= 100;

  136.                         ulTemp2 = g_tChaAhPara.g_slChaAms;
  137.                         ulTemp2 /= 1000;
  138.                         ulTemp2 /= 3600;
  139.                         
  140.                         ulTemp1 += ulTemp2;
  141.                         
  142.                         Sys_Rt.ADJType_Cap = (UINT16)ulTemp1;
  143.                         
  144.                         g_ucCalAdjustFlag = 1;                        
  145.                 }
  146.                 else
  147.                 {
  148.                         return 0;                        
  149.                 }
  150.                 return 1;               
  151.         }
  152.         else
  153.                 return 0;        
  154. }

  155. void CalSOC( unsigned long ulAs )  //WriteAs(void)調(diào)用
  156. {
  157.         unsigned long ulTemp = 0;

  158.         unsigned long ulTemp1 = 0;

  159.         unsigned int uiCapType = 0;
  160.         
  161.         g_SOCPara.ulAs = ulAs;

  162.         ulTemp = g_SOCPara.ulAs;

  163.         ulTemp = ulTemp / 3600;    //As => Ah
  164.    
  165.         if( 1 == g_ucCalAdjustFlag)
  166.                 uiCapType = Sys_Rt.ADJType_Cap;  //使用校準(zhǔn)后的額定容量
  167.         else
  168.                 uiCapType = Sys_Rt.Type_Cap;   //使用給定的額定容量


  169.         if( ulTemp < uiCapType)  //當(dāng)前容量小于額定容量(額定容量可修正)
  170.         {
  171.                 //g_SOCPara.ulWh = ulTemp * g_tVoltDataPackage.ulSumData;//0.1Wh W=U*I*T

  172.                  //1Ah => 0.01Ah  分辨率擴(kuò)大100倍
  173.                 ulTemp = g_SOCPara.ulAs;
  174.                 ulTemp *= 100;
  175.                 ulTemp = ulTemp / 3600;
  176.                
  177.                 ulTemp1 = uiCapType;//額定容量擴(kuò)大100倍
  178.                 ulTemp1 *= 100;

  179.                 //XX% SOC
  180.                 ulTemp *= 100;//剩余容量÷額定容量 × 100%100

  181.                 ulTemp = ulTemp /  ulTemp1;  //計(jì)算SOC,剩余電量比例

  182.                 g_SOCPara.ucSOC  = (unsigned char) ulTemp;
  183.                
  184.         }
  185.         else
  186.         {
  187.                 g_SOCPara.ucSOC = 100;

  188.                 if( 1 == g_ucCalAdjustFlag)               
  189.                         ulTemp = Sys_Rt.ADJType_Cap;//校準(zhǔn)后容量               
  190.                 else               
  191.                         ulTemp = Sys_Rt.Type_Cap;//使用給定的額定容量
  192.                
  193.                 //g_SOCPara.ulWh = ulTemp * g_tVoltDataPackage.ulSumData;//0.1Wh               
  194.         }        
  195.         if( diff(g_ucSOC_Back,g_SOCPara.ucSOC) >= 1 )//SOC 百分比相差 1 SOC有改變才存儲(chǔ)
  196.         {        
  197.                 g_ucSOC_Back = g_SOCPara.ucSOC;//更新最后記錄的SOC
  198.                
  199.                 //寫SOC到FM31256
  200.                 (void)WriteMulti31256RAM( FLASH_SOC_ADDR, ( unsigned char *)&g_SOCPara, sizeof( g_SOCPara ) );  
  201.         }        
  202. }

  203. void WriteAs(void)
  204. {

  205.         signed char scIncSOC  = 0;

  206.         signed long slIncCap = 0;

  207.         unsigned long ulCapTemp = 0;

  208.         unsigned long ulTemp = 0;

  209.         unsigned char ucForceSetFlag = 0;

  210.         unsigned int uiCapType = 0;

  211.         if(CalSOCTimesOut != 0)        return;  //1s 定時(shí)處理SOC計(jì)算
  212.         
  213.         CalSOCTimesOut = 200;    //設(shè)定記數(shù)值
  214.    
  215.         //累加當(dāng)前充放電容量  正負(fù)相加減
  216.         if( g_slAms < 0 )
  217.         {
  218.                 ulTemp = (-1) * g_slAms;
  219.                
  220.                 ulTemp /= 1000;//Ams => As

  221.                 g_slAS = g_slInitAS;

  222.                 g_slAS -= ulTemp;//累計(jì)上電后 放電 容量
  223.         }
  224.         else
  225.         {
  226.                 ulTemp = g_slAms;
  227.                
  228.                 ulTemp /= 1000;//Ams => As

  229.                 g_slAS = g_slInitAS;

  230.                 g_slAS += ulTemp;//累計(jì)上電 充電 容量
  231.         }

  232.         //計(jì)算 g_slAS 為當(dāng)前容量///////////////////////////////////

  233.         //當(dāng)前容量  < 0
  234.         if( g_slAS < 0 )  
  235.         {
  236.                 g_slAS = 0;//容量歸零

  237.                 //放電 累計(jì)容量 最大限制 = 上電初始容量
  238.                 g_slAms = g_slInitAS;
  239.                 g_slAms *= 1000;//As => Ams
  240.                 g_slAms =(-1) * g_slAms;
  241.         }

  242.         //當(dāng)前容量  > 額定容量
  243.         if( 1 == g_ucCalAdjustFlag)
  244.                 uiCapType = Sys_Rt.ADJType_Cap;//判斷是否使用校準(zhǔn)后容量
  245.         else
  246.                 uiCapType = Sys_Rt.Type_Cap;//

  247.         ulTemp = g_slAS;
  248.         ulTemp /= 3600;  //容量轉(zhuǎn)化為Ah

  249.         if( ulTemp >= uiCapType)   //當(dāng)前容量大于額定容量(可修正)
  250.         {
  251.                 //充電 累計(jì)容量 最大限制 =  額定容量-上電初始容量

  252.                 g_slAms = uiCapType;//額定容量
  253.                 g_slAms *= 3600;//Ah => As

  254.                 g_slAS = g_slAms;//當(dāng)前容量 = 額定容量  中間結(jié)果賦值

  255.                 g_slAms -= g_slInitAS;//額定容量-上電初始容量
  256.                 g_slAms *= 1000;//As => Ams
  257.         }

  258.         /*
  259.         if( abs( g_slAms ) > MAX_LIMIT_AMS)
  260.         {
  261.                 g_slAms = MAX_LIMIT_AMS;//超界后清零
  262.         }
  263.         */
  264.         /*0 < g_slAS < uiCapType*/
  265.         CalSOC( g_slAS );        //計(jì)算SOC 百分比
  266. }

  267. /******************************************************************************
  268. *函數(shù)名:        WriteDefaultSoc   設(shè)置SOC百分比 100%                                                                                        *
  269. *功能描述:  寫默認(rèn)SOC                                                                         *
  270. *輸入?yún)?shù):        無                                                                *
  271. *輸出參數(shù):        無                                                                                                                              *
  272. *返回值:        無                                                                                                                                *
  273. ******************************************************************************/
  274. /**/
  275. void WriteDefaultSoc( void )
  276. {        
  277.         unsigned char ucDefaultSoc = MAX_SOC;    //SOC放大1倍

  278.         unsigned long ulTemp = 0;

  279.         //更新SOC
  280.         g_SOCPara.ucSOC = ucDefaultSoc;

  281.         g_ucSOC_Back = ucDefaultSoc;

  282.         if( 1 == g_ucCalAdjustFlag)
  283.                 ulTemp = Sys_Rt.ADJType_Cap;//校準(zhǔn)后容量
  284.         else
  285.                 ulTemp = Sys_Rt.Type_Cap;//額定容量

  286.         ulTemp *= g_SOCPara.ucSOC;

  287.         ulTemp /= 100;//剩余AH
  288.         
  289.         g_SOCPara.ulAs = ulTemp * 3600;//As
  290.                
  291.         //g_SOCPara.ulWh = ulTemp * g_tVoltDataPackage.ulSumData;//0.1Wh
  292.                
  293.          //寫默認(rèn)SOC到FM31256
  294.         (void)WriteMulti31256RAM( FLASH_SOC_ADDR, ( unsigned char *)&g_SOCPara, sizeof( g_SOCPara ) );                                
  295. }

  296. /******************************************************************************
  297. *函數(shù)名:        WriteSOC        設(shè)置SOC百分比                                                                                             *
  298. *功能描述:  寫SOC                                                                              *
  299. *輸入?yún)?shù):        usSoc:SOC                                                         *
  300. *輸出參數(shù):        無                                                                                                                              *
  301. *返回值:        無                                                                                                                                *
  302. ******************************************************************************/

  303. void WriteSoc( unsigned char usSoc )
  304. {
  305.         unsigned long ulTemp = 0;
  306.         
  307.         if( usSoc > MAX_SOC )    //SOC越界
  308.         {               
  309.                 usSoc = MAX_SOC;            
  310.         }//
  311.                
  312.         //更新SOC
  313.         g_SOCPara.ucSOC = usSoc;

  314.         g_ucSOC_Back = usSoc;

  315.         if( 1 == g_ucCalAdjustFlag)
  316.                 ulTemp = Sys_Rt.ADJType_Cap;//校準(zhǔn)后容量
  317.         else
  318.                 ulTemp = Sys_Rt.Type_Cap;//額定容量

  319.         ulTemp *= 100;//1Ah => 0.01Ah

  320.         ulTemp *= g_SOCPara.ucSOC;

  321.         ulTemp /= 100;//剩余AH
  322.         
  323.         g_SOCPara.ulAs = ulTemp * 3600;//0.001As

  324.         g_SOCPara.ulAs /= 100;//0.001As => 1As
  325.                
  326.         //g_SOCPara.ulWh = ulTemp * g_tVoltDataPackage.ulSumData;//0.001Wh

  327.         //g_SOCPara.ulWh /= 100;//0.001Wh =>0.1Wh
  328.         
  329.        //寫SOC到FM31256
  330.         (void)WriteMulti31256RAM( FLASH_SOC_ADDR, ( unsigned char *)&g_SOCPara, sizeof( g_SOCPara ) );   

  331.         g_slAS = g_SOCPara.ulAs;//

  332.         g_slInitAS  =  g_SOCPara.ulAs;

  333.         g_slAms = 0;
  334.         
  335. }

  336. /******************************************************************************
  337. *函數(shù)名:        ReadSoc                                                                                                     *
  338. *功能描述:  從EEPROM中讀SOC  設(shè)置標(biāo)稱容量                                                                    *
  339. *輸入?yún)?shù):        無                                                                *
  340. *輸出參數(shù):        無                                                                                                                              *
  341. *返回值:        無                                                                                                                                *
  342. ******************************************************************************/
  343. /**/
  344. void ReadSoc( void )
  345. {
  346.         unsigned long ulTemp = 0;
  347.         
  348.         Sys_Rt.Type_Cap = 400;
  349.         //從FM31256讀SOC
  350.         (void)ReadMulti31256RAM( FLASH_SOC_ADDR, ( unsigned char *)&g_SOCPara, sizeof( g_SOCPara ) );
  351.             
  352.         if( g_SOCPara.ucSOC > MAX_SOC )
  353.         {
  354.             g_SOCPara.ucSOC = MAX_SOC;                  
  355.         } //

  356.         if( 1 == g_ucCalAdjustFlag)
  357.                 ulTemp = Sys_Rt.ADJType_Cap;//校準(zhǔn)后容量
  358.         else
  359.                 ulTemp = Sys_Rt.Type_Cap;//額定容量
  360.         
  361.         ulTemp *= 100;//1Ah => 0.01Ah

  362.         ulTemp *= g_SOCPara.ucSOC;

  363.         ulTemp /= 100;//剩余AH
  364.         
  365.         g_SOCPara.ulAs = ulTemp * 3600;//0.001As

  366.         g_SOCPara.ulAs /= 100;//0.001As => 1As
  367.                
  368.         //g_SOCPara.ulWh = ulTemp * g_tVoltDataPackage.ulSumData;//0.1Wh

  369.         //g_SOCPara.ulWh /= 100;//0.001Wh =>0.1Wh

  370.         g_slAS = g_SOCPara.ulAs;//

  371.         g_slInitAS  =  g_SOCPara.ulAs;

  372.         g_ucSOC_Back = g_SOCPara.ucSOC;  
  373. }

復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

ID:983641 發(fā)表于 2023-3-3 11:35 | 顯示全部樓層
相當(dāng)有用。。
回復(fù)

使用道具 舉報(bào)

無效樓層,該帖已經(jīng)被刪除
ID:33544 發(fā)表于 2023-4-20 11:44 | 顯示全部樓層
學(xué)習(xí)一下了,我改行搞電池
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
久久精品二区亚洲w码| 黄色一级片网址| 久久久国产影院| 亚洲电影在线观看| 欧美一区二区精品| 欧美天堂亚洲电影院在线播放| 日韩激情网站| 久久电影天堂| 成人精品国产亚洲| 欧美成人app| 第84页国产精品| 桃子视频成人app| 精精国产xxxx视频在线野外| heyzo高清在线| 日韩精品卡一| wwwwxxxx在线观看| 97人澡人人添人人爽欧美| www视频在线观看| 超碰97免费在线| 丁香花高清在线观看完整版| 久久男人天堂| 三上悠亚一区二区| 欧美国产日韩电影| 久久gogo国模啪啪裸体| 国产精品xxxav免费视频| 日韩av网址大全| 国产99精品一区| 99精品国产一区二区三区| 久久一区二区中文字幕| 欧美freesex交免费视频| 伊人久久大香线| 亚洲激情视频| 亚洲国产日本| 久草精品在线观看| 99精品国产视频| 国产日本欧美一区二区| 亚洲欧美电影一区二区| 红桃视频成人在线观看| 欧美网站大全在线观看| 日韩一级大片在线观看| 亚洲欧美日韩中文视频| 久久亚洲精品中文字幕冲田杏梨| 91成人免费观看网站| 川上优av一区二区线观看| 国产一区二区自拍| 国产一二三四区在线观看| 国产精品97在线| 国偷自产av一区二区三区麻豆| 在线免费观看日韩av| 久久久精品国产sm调教网站| 亚洲综合精品国产一区二区三区| 亚洲 美腿 欧美 偷拍| 网站在线观看你懂的| 日韩欧美亚洲| 色的视频在线免费看| 男人皇宫亚洲男人2020| 欧美性生活一级片| 超碰在线最新| 成人观看网址| 精品国产乱子伦一区二区| 欧美国内亚洲| 国产91在线观看| 一区二区三区欧美日| 欧美日韩黄色一区二区| 亚洲人成欧美中文字幕| 日本最新高清不卡中文字幕| 免费观看成人在线| 激情婷婷综合网| 亚欧精品视频一区二区三区| 亚洲av无码精品一区二区| 久操久操久操| 绯色av一区二区| 大香伊人中文字幕精品| 欧美色图婷婷| 麻豆成人综合网| 亚洲精品老司机| 精品国产一区二区亚洲人成毛片 | 日韩欧美一区二区三区在线观看| 任你躁在线精品免费| 一区二区毛片| 国产亚洲综合在线| 欧美午夜电影一区| 欧美成人黑人xx视频免费观看| 91沈先生作品| 国产一线二线三线女| 国产精品久久久久久久无码| 三级网站在线播放| 午夜国产福利| 欧美色视频免费| 亚洲国产精选| 午夜亚洲影视| 亚洲欧美日韩国产手机在线| 精品久久久久久久一区二区蜜臀| 欧洲成人在线观看| 肉大捧一出免费观看网站在线播放 | 欧美色图片区| 亚洲一区二区三区精品中文字幕 | 欧美精品一区三区| 国内一区在线| 在线观看免费视频污| 国产精品日日夜夜| 精品国产高清自在线一区二区三区 | av免费看大片| 91超碰免费在线| 色喇叭免费久久综合网| 成人免费视频播放| 6080午夜不卡| 国产精品久久久久91| 精品国产av无码一区二区三区| 亚洲码无人客一区二区三区| 少妇精品高潮欲妇又嫩中文字幕| а√最新版地址在线天堂 | 精品国产鲁一鲁一区二区张丽| 国产一区二区三区四区福利| 狠狠干一区二区| 丰满饥渴老女人hd| 亚洲成人黄色片| 嫩草影院2018| crdy在线观看欧美| 久久99精品一区二区三区三区| 午夜精品视频一区| 久久久久久久久中文字幕| 中文字幕一区二区三区有限公司 | 6080午夜不卡| 国产精品久久久久99| 色诱视频在线观看| 日本黄色中文字幕| av777777| 在线精品国产亚洲| 91丨porny丨蝌蚪视频| 亚洲精品国产精品国自产在线| 翡翠波斯猫1977年美国| 丰满岳乱妇一区二区| 手机看片福利在线| 麻豆视频在线播放| 国内自拍视频一区二区三区 | 亚洲欧洲日韩综合二区| 国产黄色大片免费看| 永久免费黄色软件| 天堂av中文在线| 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲激情六月丁香| 午夜伦理精品一区| 人妻丰满熟妇av无码区app| 中文字幕精品无码一区二区| 三上悠亚一区| 天堂俺去俺来也www久久婷婷| 久久奇米777| 在线视频亚洲欧美| 国产视频在线观看网站| 国产精品久久久久久人| 美国成人av| 国产探花在线精品一区二区| 亚洲另类一区二区| 国产91免费看片| 国产成人av免费观看| 亚洲国产精品久久网午夜小说| 黄页网站在线| 奇米影视一区二区三区小说| 日韩欧美精品在线| 欧美在线播放一区二区| 免费一级a毛片夜夜看 | 蜜臀av一级做a爰片久久| 欧美一区二区三区在| 快播日韩欧美| 中文在线观看免费网站| 导航福利在线| 欧美一区二区三区免费看| 欧美香蕉大胸在线视频观看| 91天堂在线视频| 欧美人妻一区二区三区| 岛国影视在线观看| 欧美日韩破处| 午夜精品久久一牛影视| 91精品黄色| 亚洲视频重口味| 浪潮av在线| 天天av综合| 欧美色视频在线观看| 精品一区日韩成人| 日韩美女黄色片| 国产露出视频在线观看| 在线综合亚洲| 亚洲成人免费在线视频| 国内精品国产三级国产99| 中文字幕一区二区三区波野结| 九色porny在线| 久草热8精品视频在线观看| 色综合亚洲精品激情狠狠| 亚洲视频在线观看一区二区三区| 午夜激情小视频| av成人免费| 国产精品久久三| 国产在线不卡精品| 极品久久久久久| 青青草av免费在线观看| 青青草精品视频| 日韩中文字幕国产| 视频区 图片区 小说区| 免费三级网站| 久久高清免费| 精品裸体舞一区二区三区| 人人干视频在线| 久草视频免费在线观看| 国产精品自在| 色偷偷成人一区二区三区91| 亚洲精品一区二区毛豆| 国产成人久久精品77777综合| 极品美女一区| 成人欧美一区二区三区1314| 国产精品久久久久久久久婷婷 | av免费在线播放| 亚洲v在线看| 亚洲精品999| 三上悠亚在线一区| jizzwww| 精品二区视频| 亚洲欧洲在线播放| 欧美精品色视频| 在线成人私人影院| 国产亚洲毛片| 另类图片亚洲另类| 微拍福利一区二区| 黄色视屏网站在线免费观看| 久久99热这里只有精品| 国产91精品久久久久久| 国产高潮国产高潮久久久91| 久久77777| 中文幕一区二区三区久久蜜桃| 国产精品久久久对白| 国产一区二区小视频| 青草综合视频| 欧美亚洲国产怡红院影院| 黄色激情在线视频| 一个人免费观看在线视频www | 亚洲欧美激情另类| 国产一区二区三区免费在线| 欧美在线|欧美| 国产在线精品91| 色的视频在线观看免费播放| 亚洲高清电影| 欧美丰满片xxx777| 国产一级片免费| 理论片午夜视频在线观看| 亚洲第一搞黄网站| 国产精品无码免费专区午夜| 78国产伦精品一区二区三区| 欧美精品自拍| 欧美精品少妇videofree| 亚洲人成久久| 久久福利影视| 快射视频在线观看| 91福利入口| 久久91精品国产91久久小草| 日本全棵写真视频在线观看| 一区二区三区视频在线观看免费| 在线电影院国产精品| 久久伦理在线| 乳奴隷乳フ辱| 国产精品伊人| 日本韩国欧美在线| 男人天堂网视频| 先锋影音av321| 美女爽到呻吟久久久久| 2025国产精品视频| 国产一级片一区二区| 精品国产麻豆| 日韩欧美一区二区免费| 日韩欧美中文视频| 日本福利在线观看| 国产日韩精品一区二区浪潮av| 天堂va久久久噜噜噜久久va| 国产九色视频| 亚洲免费一区二区| 国产啪精品视频| 99热这里是精品| 久久成人av| 久久精品久久久久久| 欧美国产精品一二三| 成人免费一区| 精品国产免费一区二区三区四区| xxxxxx黄色| 日本在线观看高清完整版| 狠狠躁18三区二区一区| 邪恶网站在线观看| 国产尤物视频在线| 亚洲一区二区3| 一区二区三区韩国| 888av在线| 欧美日韩国产精品专区| 午夜视频在线网站| 免费不卡视频| 日韩欧美在线视频| 欧美日韩一区二区三区四区五区六区| 免费高清完整在线观看| 在线免费观看成人短视频| 久久久久无码国产精品一区李宗瑞| 毛片免费不卡| 欧美在线观看视频在线| 噜噜噜在线视频| 日韩精品av| 亚洲第一精品电影| 黄色在线观看免费| 激情小说一区| 欧美第一页在线| xxxx国产精品| 91久久视频| 国产欧美亚洲日本| 奇米色在线视频| 99精品视频中文字幕| aa视频在线播放| 你懂的在线网址| 欧美午夜宅男影院在线观看| 双性尿奴穿贞c带憋尿| yiren22亚洲综合| 一区二区三区精品99久久| 亚洲视屏在线观看| 欧美另类专区| 久久国产精品一区二区三区| chinese叫床对白videos| 中文av一区二区| 国产精品区在线| 波多野结衣中文在线| 亚洲国产精品久久久久久| 日产精品久久久久| 91精品蜜臀一区二区三区在线| 国产欧美日韩中文字幕| 国产叼嘿网站免费观看不用充会员| 成人福利视频网站| 黑鬼大战白妞高潮喷白浆| 欧美人与禽猛交乱配| 亚洲精品xxx| 久久久999久久久| 亚洲经典在线看| 亚洲欧洲一区二区| 久久精品国产亚洲a∨麻豆| 欧美日韩综合不卡| 久久综合加勒比| 亚洲精品网址| 蜜桃999成人看片在线观看| 一级免费视频| 欧美综合久久久| 欧美日韩在线观看免费| 99久久影视| 精品在线视频一区二区三区| 日本激情视频网| 91黄色激情网站| 久久精品一区二区三| 欧美va亚洲va日韩∨a综合色| 韩国成人av| 天天干狠狠干| 欧美色精品在线视频| 日本三级2019| 欧美日本国产| 亚洲国产一区在线| av网站在线播放| 亚洲精品福利在线观看| 国产福利资源在线| 福利一区福利二区| 亚洲色图偷拍视频| 中文字幕一区图| 国产日韩欧美在线播放| 国产va在线| 欧美日韩中文字幕一区二区| 日韩美女视频网站| 噜噜噜久久亚洲精品国产品小说| 超碰97在线看| 大香伊人久久| 久久99视频精品| 中国老太性bbbxxxx| 亚洲成av人影院| 免费一级a毛片夜夜看| 蜜桃久久av| 日本一本二本在线观看| 国产69精品久久久久9999人| 国产高清在线不卡| 日本女优天堂99伊人| 精品国产三级a在线观看| 亚洲第一第二区| 久久噜噜亚洲综合| 手机免费看av| 久久精品亚洲人成影院| 在线观看17c| 户外露出一区二区三区| 国产精品69久久久久| 360天大佬第二季在线观看| 精品国产免费人成在线观看| 丰满肉肉bbwwbbww| 欧美激情中文字幕| 二区三区四区视频| 水蜜桃久久夜色精品一区的特点| 四虎永久在线精品无码视频| 欧美午夜网站| 成人欧美一区二区三区在线观看 | 你懂的在线免费观看| 日韩一区二区三区在线观看| 国产黄色一区二区| 国产午夜精品一区二区三区视频 | 男生裸体视频网站| 欧美hd在线|