国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于反射內(nèi)存的實時網(wǎng)絡(luò)系統(tǒng)設(shè)計

發(fā)布時間:2019-3-2 15:43    發(fā)布者:trueleven
引言

在半實物仿真系統(tǒng)中需要實時地傳輸、操作和分析數(shù)據(jù),并在此基礎(chǔ)上作出相應(yīng)的控制,實時網(wǎng)絡(luò)技術(shù)是半實物仿真系統(tǒng)中必不可少技術(shù)之一。基于反射內(nèi)存的實時網(wǎng)絡(luò)技術(shù)目前已發(fā)展較為成熟的一種性能優(yōu)異、概念新穎的實時網(wǎng)絡(luò)技術(shù)[1]。相對于以往基于TCP/IP或UDP/IP實時網(wǎng)絡(luò)技術(shù)來說,它極大的提高了系統(tǒng)實時通訊、數(shù)據(jù)反射和信號調(diào)試的能力,使分布式仿真系統(tǒng)結(jié)構(gòu)的設(shè)計及實現(xiàn)更為簡單。本文介紹了基于VMI-5565反射內(nèi)存卡組建實時網(wǎng)絡(luò)的方法,并就利用VC++6.0實現(xiàn)實時網(wǎng)絡(luò)通訊進(jìn)行了研究。

1反射內(nèi)存通訊原理及實時網(wǎng)絡(luò)構(gòu)建1.1 反射內(nèi)存通訊原理

反射內(nèi)存光纖網(wǎng)絡(luò)采用了先進(jìn)特殊的技術(shù),具備了很強的支持分布實時系統(tǒng)的數(shù)據(jù)傳輸能力[2]。在每個需要實時通訊的節(jié)點上插入反射內(nèi)存網(wǎng)卡(節(jié)點卡),每塊節(jié)點卡都有自己獨立的局部內(nèi)存,它通過局部內(nèi)存映射將網(wǎng)卡上的局部內(nèi)存映射到主機內(nèi)存,用戶讀寫網(wǎng)卡上的數(shù)據(jù)就如同讀寫主機內(nèi)存上的數(shù)據(jù)一樣快速方便。另外,每塊反射內(nèi)存網(wǎng)卡又通過網(wǎng)絡(luò)內(nèi)存映射,將分布節(jié)點卡上的局部內(nèi)存映射到一個虛擬的全局內(nèi)存,即每個節(jié)點在寫入本地節(jié)點卡的數(shù)據(jù)同時也寫入所有其他節(jié)點卡的內(nèi)存。這樣,用戶對本地節(jié)點內(nèi)存的讀寫相當(dāng)于對全局內(nèi)存進(jìn)行讀寫,而這個全局內(nèi)存是所有分布節(jié)點都可見反射的,從而實現(xiàn)分布節(jié)點間的數(shù)據(jù)通訊[3]。通過這種方式,所有的節(jié)點能透明并確定地傳送中斷、消息或者數(shù)據(jù)塊到其他的節(jié)點。

1.2  VMI-5565實時網(wǎng)絡(luò)產(chǎn)品簡介

VMI-5565反射內(nèi)存產(chǎn)品是美國VMIC公司于本世紀(jì)初推出的網(wǎng)絡(luò)通訊產(chǎn)品系列。其特點是通過驅(qū)動軟件寫到某一個節(jié)點反射內(nèi)存板上某一地址單元的數(shù)據(jù),可同時通過HUB自動映射寫到實時網(wǎng)絡(luò)上所有節(jié)點的反射內(nèi)存板上的對應(yīng)地址單元。同時,也支持直接內(nèi)存訪問(DMA)方式的數(shù)據(jù)塊傳輸。每塊反射內(nèi)存板通過卡上跳線設(shè)置在網(wǎng)絡(luò)上的唯一ID號。其技術(shù)性能指標(biāo)如下:

(1).實時性能:數(shù)據(jù)傳輸率可達(dá)47.1Mbyte/s到174Mbyte/s;

(2). 負(fù)載能力:通過選用兩種不同型號的反射內(nèi)存板,具有64M字節(jié)至128M字節(jié)的可選負(fù)載能力;

(3). 傳輸距離:支持10km長度的単模光纖300m長度的多模光纖;

(4). 擴展性:単個HUB支持8個節(jié)點。通過級聯(lián)HUB,最多可支持256個節(jié)點。

1.3 基于反射內(nèi)存的實時網(wǎng)絡(luò)構(gòu)建

實時網(wǎng)絡(luò)現(xiàn)行的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)主要有環(huán)型、星型結(jié)構(gòu)等幾種結(jié)構(gòu)。一般來說,環(huán)形結(jié)構(gòu)組網(wǎng)簡單。下面以三個節(jié)點為例,簡單說明環(huán)形結(jié)構(gòu)組網(wǎng)過程。三個節(jié)點需要三塊VMI5565卡及3根單股光纖。首先將三塊卡進(jìn)行統(tǒng)一編址,分別為節(jié)點0、節(jié)點1、節(jié)點2,并將其插入到對應(yīng)的計算機中,具體編址方式見2.1節(jié)。將節(jié)點0的反射內(nèi)存卡的RX端與將節(jié)點1的反射內(nèi)存卡的TX端連接,同時將節(jié)點1的RX端與T節(jié)點2的TX端連接,節(jié)點2的RX與節(jié)點0的TX連接,如圖1所示:


圖1環(huán)形拓?fù)鋵崟r網(wǎng)絡(luò)示意圖

環(huán)形結(jié)構(gòu)組網(wǎng)簡單,但是在使用的時候,必須將所有的節(jié)點計算機全部打開才能進(jìn)行通訊,在節(jié)點較多時,使用不方便,且容易造成因人為失誤而導(dǎo)致仿真試驗失敗的情況。

星型實時網(wǎng)絡(luò)由一個實時網(wǎng)絡(luò)HUB和實時節(jié)點卡組成。安裝了實時網(wǎng)絡(luò)節(jié)點卡的計算機通過光纖連接在HUB上。HUB提供了一個共享內(nèi)存空間,每個節(jié)點在本地都有一個該共享內(nèi)存空間的映射。當(dāng)任意一個實時處理機在本地節(jié)點卡的內(nèi)存空間中操作時,HUB內(nèi)共享內(nèi)存空間的數(shù)據(jù)就會被更新。同時,其它節(jié)點上的共享內(nèi)存映射空間中的對應(yīng)數(shù)據(jù)會被立即更新。這種實時網(wǎng)絡(luò)具有低延遲、高傳輸率的優(yōu)點,確保所有節(jié)點數(shù)據(jù)快速更新。仍以三個節(jié)點為例,說明其結(jié)構(gòu)。其結(jié)構(gòu)圖如圖2所示:


圖2 星型拓?fù)浣Y(jié)構(gòu)實時網(wǎng)示意圖

星型結(jié)構(gòu)則使用時比較方便,只需打開需用的節(jié)點計算機并給HUB加電即可,工作穩(wěn)定、可靠,但相對環(huán)形拓?fù)浣Y(jié)構(gòu)來說,增加了一個實時網(wǎng)絡(luò)HUB,相同節(jié)點數(shù),需要的光纖也增加了一倍,增加了成本。

在具體使用中,可根據(jù)節(jié)點數(shù)量來進(jìn)行實時網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)選擇。節(jié)點較少時選擇環(huán)形拓?fù)洌捎行У毓?jié)省成本,節(jié)點較多時,可選擇星型拓?fù)洌褂酶鼮榉奖恪?/p>

筆者參與設(shè)計并投入使用的仿真系統(tǒng)采用了星型拓?fù)浣Y(jié)構(gòu),該系統(tǒng)共有8個節(jié)點,分別對應(yīng)控制臺計算機、視景計算機、程序解算計算機、設(shè)備控制計算機等計算機。該系統(tǒng)目前已經(jīng)成功應(yīng)與于某半實物仿真系統(tǒng)中。由于該半實物仿真系統(tǒng)不是本文重點內(nèi)容,在此不做進(jìn)一步說明。

2  反射內(nèi)存存儲空間分配

2.1 反射內(nèi)存編址

在組網(wǎng)前,需要對每塊反射內(nèi)存卡進(jìn)行統(tǒng)一編址,以便反射內(nèi)存網(wǎng)絡(luò)形成一致的連續(xù)的共享空間而不會發(fā)生沖突。在VMI5565反射內(nèi)存卡上,有一排8個小開關(guān),用這些開關(guān)即可完成統(tǒng)一編址。8個小開關(guān)全部打開時,內(nèi)部地址為00000000,對應(yīng)的反射內(nèi)存卡為節(jié)點0,僅第1個打開時,內(nèi)部地址為00000001,對應(yīng)的反射內(nèi)存卡為節(jié)點1,第二個打開為節(jié)點2,依次類推,按照二進(jìn)制編碼方式排列,依次為0,1,2,4,8,16,32,單個HUB支持8個節(jié)點。

2.2反射內(nèi)存地址空間分配

由于實時網(wǎng)絡(luò)系統(tǒng)的內(nèi)存地址空間有限,所以每個節(jié)點計算機寫入內(nèi)存的數(shù)據(jù)需科學(xué)、合理和嚴(yán)格規(guī)劃。常用的數(shù)據(jù)寫入方式有兩種,第一種是不進(jìn)行地址空間分配,而按照具體節(jié)點進(jìn)行數(shù)據(jù)通訊,即將數(shù)據(jù)發(fā)送端直接將所需的數(shù)據(jù)打包發(fā)送到對應(yīng)的數(shù)據(jù)接收端。例如,0號節(jié)點需要將名為ff的數(shù)據(jù)傳遞給1號節(jié)點,其語法如下(VC++6.0下):

發(fā)送方(0號節(jié)點):

……

retstatus=RFM2gWrite(rh,1,(void *)ff,sizeof(float)*9);

  ……

接收方(1號節(jié)點):

……

retstatus=RFM2gRead(rh,1,(void *)ff,sizeof(float)*9);

  ……

此種方式在數(shù)據(jù)量大的時候,會引起溢出,無法保證同一幀數(shù)據(jù)的完整性,另外,當(dāng)一段數(shù)據(jù)為多個節(jié)點同時需要時,此種方法就不夠方便。因此,目前常用的方式是將反射內(nèi)存空間進(jìn)行分配。

反射內(nèi)存地址空間分配是通過軟件接口控制文件定義好所有須使用內(nèi)存空間的數(shù)據(jù)變量地址,同類數(shù)據(jù)連續(xù)分配地址單元,以便其它節(jié)點的計算機可以用直接內(nèi)存訪問方式一次性快速讀取大量數(shù)據(jù)。同時,由于節(jié)點上的計算機在某個時刻寫到某一內(nèi)存地址段的多個數(shù)據(jù)會在下一仿真周期以新的結(jié)果刷新此段數(shù)據(jù),為了保證其它計算機節(jié)點讀到該地址段幀的數(shù)據(jù)是同一幀的數(shù)據(jù),需為這段數(shù)據(jù)定義專門的地址單元標(biāo)志該段數(shù)據(jù)的讀寫狀態(tài)。用此種方式時,可利用如下句子進(jìn)行操作(VC++6.0下):

數(shù)據(jù)寫入節(jié)點:

……

    retstatus=RFM2gWrite(rh,0x500, (void *)ff,sizeof(float)*9);

……

數(shù)據(jù)讀取節(jié)點:

……

retstatus=RFM2gRead(rh,0x500,

(void *)ff,sizeof(float)*9);

……

數(shù)據(jù)寫入節(jié)點只需將ff數(shù)據(jù)寫入到固定的地址(0X500),需要用到此段數(shù)據(jù)的節(jié)點均可到該地址進(jìn)行讀寫,此種方式下,發(fā)送法不需關(guān)注接受方,而只需按照事先約好的數(shù)據(jù)存儲地址寫入即可,同樣,接受方也是如此。

2.3 地址空間分配時的注意事項

在反射內(nèi)存空間地址分配時,須注意所分配的空間應(yīng)大于所需傳遞的數(shù)據(jù)長度并有一定的余量,應(yīng)按照單個數(shù)據(jù)的字節(jié)數(shù)和數(shù)據(jù)段的數(shù)據(jù)個數(shù)來進(jìn)行仔細(xì)計算所需的存儲空間。

在地址空間分配及實時通訊過程中,應(yīng)有專用的數(shù)據(jù)記錄空間和節(jié)點,做好試驗狀態(tài)和實驗結(jié)果的記錄。同時在每次仿真開始前應(yīng)清空射內(nèi)存中原有的數(shù)據(jù),以防造成誤操作,從而對仿真設(shè)備造成損壞。

3  在VC++下的實時通訊協(xié)議設(shè)計

   在VC++下利用反射內(nèi)存網(wǎng)實現(xiàn)實時通訊之前,要進(jìn)行驅(qū)動安裝與環(huán)境變量設(shè)置。具體內(nèi)容見參考文獻(xiàn)[4]。設(shè)置完成后,方可進(jìn)行相關(guān)操作。在筆者完成的實時系統(tǒng)中,采用VC環(huán)消息Message方式進(jìn)行傳遞進(jìn)行。首先是完成頭文件加載與反射內(nèi)存卡打開并使之處于使能狀態(tài),隨后是等待觸發(fā)。按照反射內(nèi)存統(tǒng)一編址方式進(jìn)行通訊協(xié)議設(shè)計,具體如下。

3.1 反射內(nèi)存卡初始化及使能

   在VC++環(huán)境下,首先要完成反射內(nèi)存卡的頭文家加載與發(fā)射內(nèi)存卡打開及使能,參考代碼如下:


#include "rfm2g.h"http://反射內(nèi)存頭文件;

……

Main()

{

……

If((retstatus=RFM2gOpen(rfmFn,&rh))!= RFM2G_SUCCESS)

    {

        printf("Cannot open RFM2G\n");

        exit(0);

    }  

    if(rh == (RFM2GHANDLE) NULL){

        printf( "%s>  rh = %x ", me, rh );

    }   //判斷是否打開成功

retstatus=RFM2gEnableEvent(rh,RFM2GEVENT_INTR1); //使能反射內(nèi)存卡,等待時間觸發(fā);

……

}

3.2 發(fā)送接受協(xié)議

    初始化完成后,通訊開始。為了確保數(shù)據(jù)實時傳輸?shù)恼_性,數(shù)據(jù)的發(fā)送、接收雙方需要握手協(xié)議。這一點在牽扯到仿真設(shè)備初始化的半實物仿真過程中尤為重要。設(shè)發(fā)送方在0X500地址處寫入TX=1,等待接受方應(yīng)答信號。接受方在0X500處讀到TX并確定TX=1,完成準(zhǔn)備工作后在0X1000處寫入RX=1。當(dāng)發(fā)送方收到RX并確認(rèn)為RX=1時,正式數(shù)據(jù)開始發(fā)送,實時仿真開始。雙方具體操作如下。

3.2.1發(fā)送操作

   發(fā)送方首先進(jìn)行握手信號發(fā)送,等待應(yīng)答成功后,開始發(fā)送數(shù)據(jù)。仿真過程結(jié)束后發(fā)送TX=2,通知接收方通訊完成,待到對方應(yīng)答后,關(guān)閉反射內(nèi)存,實時通訊結(jié)束。

以發(fā)送名為ff數(shù)據(jù)至0X500為例,整個通訊過程參考代碼如下:

  ……

RFM2gClear(&rh);

TX=1;

retstatus=RFM2gWrite(rh,0x500, (void *)TX,sizeof(float)*9);//發(fā)送TX

retstatus=RFM2gSendEvent(rh,32,

RFM2GEVENT_INTR1,0x0);//發(fā)送消息事件;

while(1){

retstatus=RFM2gRead(rh,0x51, (void *)RX,sizeof(float)*9);

    if(fabs(RX-1)<0.000001 )

          break;

printf("wait RX…%lf\n",fabs(RX-1));

}

printf("RX Readly...\n");//握手成功

retstatus=RFM2gWrite(rh,0x500,(void *)ff,sizeof(float)*9);//發(fā)送ff

retstatus=RFM2gSendEvent(rh,32,RFM2GEVENT_INTR1,0x0);//發(fā)送消息

……

If(stop=start)//仿真完成

{

TX=2;

retstatus=RFM2gWrite(rh,0x500,(void *)TX,sizeof(float)*9);//發(fā)送TX

retstatus=RFM2gSendEvent(rh,32,RFM2GEVENT_INTR1,0x0);//發(fā)送消息事件;

while(1){    retstatus=RFM2gRead(rh,0x510,(void *)RX,sizeof(float)*9);

if(fabs(RX-2)<0.000001 )

         break;

printf("wait RX…%lf\n",fabs(RX-1));

}

printf("Retaime TR over...\n");

retstatus=RFM2gDisableEvent(rh,

RFM2GEVENT_INTR1);//關(guān)閉使能反射內(nèi)存;

RFM2gClose(&rh);//關(guān)閉反射內(nèi)存;

}//仿真過程結(jié)束,關(guān)閉反射內(nèi)存

……

3.2.2 接受操作

接受操作類似于發(fā)送操作,只需要在初始化完成后,有一個等待事件觸發(fā)的命令即可。當(dāng)收到事件觸發(fā)后,即從0X500處讀入數(shù)據(jù)并判斷數(shù)據(jù),當(dāng)收到的數(shù)據(jù)同預(yù)設(shè)一致時,發(fā)送應(yīng)答信號至0X510,并準(zhǔn)備接受數(shù)據(jù)。當(dāng)接受到數(shù)據(jù)為Tx=2時,即返回RX=2并停止使能反射內(nèi)存卡,關(guān)閉反射內(nèi)存卡,通訊結(jié)束。等待觸發(fā)的代碼如下,其他類似于發(fā)送方。

……

RFM2gClear(&rh);

retstatus=RFM2gWaitForEvent(rh,&info);

……

retstatus=RFM2gDisableEvent(rh,RFM2GEVENT_INTR1);//關(guān)閉使能反射內(nèi)存;

RFM2gClose(&rh);//關(guān)閉反射內(nèi)存;

}//仿真過程結(jié)束,關(guān)閉反射內(nèi)存

……

利用上述方法即可實現(xiàn)實時通訊過程。

4 在Windows下實現(xiàn)實時通訊

由于Windows是多任務(wù)操作系統(tǒng),因此常見的實時系統(tǒng)常采用DOS等單任務(wù)系統(tǒng),或者是購買RTW模塊并實現(xiàn)Windows下的實時性設(shè)計。但是,在實時性要求不是很高的情況下(仿真步長>0.5ms)時,可以通過提高進(jìn)程優(yōu)先級并強制關(guān)閉其他進(jìn)程的方法來實現(xiàn)強實時計算。同時,可以通過獲取計算機機器時間并以此來進(jìn)行仿真步長的準(zhǔn)確定時。采用此方法,可有效地實現(xiàn)各個節(jié)點的時間統(tǒng)一管理,可有效地提高系統(tǒng)的實時性。在實際使用過程中,仿真步長可根據(jù)整個系統(tǒng)的單步計算、控制的耗時情況以及仿真對象的實際情況進(jìn)行選擇,并選擇合適的方式(中斷、查詢)來實現(xiàn)仿真周期的準(zhǔn)確定時。

筆者完成的實時系統(tǒng)設(shè)計中,通過查詢方式并采用死循環(huán)的形式,實現(xiàn)了仿真周期為0.5毫秒的半實物仿真。實際測試(測試環(huán)境:CPUP4 2.8GHZ 512M)統(tǒng)計結(jié)果表明,在采用實時處理以后,完成一步計算幀周期定時誤差最大為1.2毫秒,采用實時處理以后,平均幀誤差在30微妙,最大為130微妙。采用實時處理后的反射內(nèi)存網(wǎng)兩個節(jié)點之間的數(shù)據(jù)傳輸時間誤差均值小于80微妙,最大值小于200微妙。經(jīng)過任務(wù)優(yōu)先級調(diào)整后的仿真進(jìn)程受操作系統(tǒng)影響較小,在所得到的測試結(jié)果中,99%在40-50微妙以內(nèi),最大值不超過130微妙,實時網(wǎng)數(shù)據(jù)延時最大值不超過150微妙,完全滿足仿真步長在0.5毫秒以上的系統(tǒng)仿真任務(wù)。

5 小結(jié)

本文主要介紹了基于反射內(nèi)存卡的實時網(wǎng)絡(luò)系統(tǒng)設(shè)計方法,并給出了具體的通訊協(xié)議及注意事項,同時,就如何在Windows系統(tǒng)下實現(xiàn)實時通訊進(jìn)行了簡要介紹。利用該方法設(shè)計的實時系統(tǒng)已在某半實物仿真實驗室中應(yīng)用,經(jīng)驗證,該系統(tǒng)具有通信實時性好,數(shù)據(jù)傳輸速度快,傳輸可靠性高的特點,滿足實時仿真需要,取得了良好的效果,被實踐證明是一種成熟、有效的方法。






參考文獻(xiàn):

[1]  胡小江, 錢志博.基于LabVIEW的實時網(wǎng)絡(luò)接口開發(fā)[J].電子技術(shù)應(yīng)用,2005(3):28~29.

[2]  楊滌,楊旭,系統(tǒng)實時仿真開發(fā)環(huán)境與應(yīng)用[M].北京:請華大學(xué)出版社,2002,5~8.

[3] VMICPCI-5565 REFLECTIVE MEMORY BOARD PRODUCT MANUAL, VME Microsystems International Corporation.

[4 David .J.Kruglinski, Scot Wingo,George Shepherd著,希望圖書創(chuàng)作室 譯. Visual C++6.0技術(shù)內(nèi)幕(第五版)[M].北京:北京希望電子出版社,2000,395~402




作者簡介:

林曉煥(1964-),女,西安閻良人,碩士生導(dǎo)師,主要研究方向為數(shù)據(jù)通信與計算機控制;唐長春(1979-),女,四川蓬溪人,碩士研究生,主要研究方向為控制系統(tǒng)設(shè)計與仿真;柳文安(1981-),男,陜西洋縣人,工程師,主要研究方向為控制系統(tǒng)設(shè)計與系統(tǒng)仿真。


本文地址:http://m.qingdxww.cn/thread-560914-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點和對其真實性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • 安靜高效的電機控制——這才是正確的方向!
  • PIC18-Q71系列MCU概述
  • 為何選擇集成電平轉(zhuǎn)換?
  • 5分鐘詳解定時器/計數(shù)器E和波形擴展!
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 图图资源网亚洲综合网站 | 99er精品视频| 欧美日韩一区二区综合在线视频 | 欧美日韩精品高清一区二区 | 手机看片1024精品国产 | 国产欧美精品一区二区三区四区 | 青青热久久国产久精品秒播 | 99热精品久久只有精品黑人 | 午夜久久久久久网站 | 日本不卡中文字幕一区二区 | 国产伦精品一区三区视频 | 欧美精品一区二区三区免费 | 国产国语对白精品视频 | 免费观看动漫的网站 | 欧美不卡一区二区三区免 | 天天天天色 | 高清国产一区二区三区 | 色婷婷综合激情视频免费看 | 一级毛片在线观看视频 | 一区二区在线观看高清 | 国产精品国产高清国产专区 | 天天综合五月天 | 国产一区二区三区在线观看免费 | 中国一级片在线观看 | 欧美一区二区三区日韩免费播 | 国产一区二区播放 | 日韩一区二区在线播放 | 青青综合 | 草草影院第一页yycccom | 999色色色 | 一区二区三区四区日韩 | 91精品久久 | mm在线观看免费视频 | 毛片区| 亚洲欧美天堂网 | 国产一区二区三区在线免费观看 | 久草青青在线 | 国产网站精品 | 国产欧美国产精品第一区 | 在线观看人成大片在线影院 | 啊用力点国产嗯快在线观看 |