日本在线www-日本在线播放一区-日本在线不卡免费视频一区-日本在线不卡视频-成人影院久久久久久影院-成人影院一区二区三区

ABB25年11月
關(guān)注中國(guó)自動(dòng)化產(chǎn)業(yè)發(fā)展的先行者!
工業(yè)智能邊緣計(jì)算2025年會(huì)
2025工業(yè)安全大會(huì)
CAIAC 2025
OICT公益講堂
當(dāng)前位置:首頁(yè) >> 案例 >> 案例首頁(yè)

案例頻道

順序功能圖圖形化組態(tài)軟件的設(shè)計(jì)開(kāi)發(fā)
  • 企業(yè):控制網(wǎng)     領(lǐng)域:儀器儀表     行業(yè):輸配電    
  • 點(diǎn)擊數(shù):1392     發(fā)布時(shí)間:2006-01-13 15:06:06
  • 分享到:
概述SFC的功能、組成和編程規(guī)則。介紹所開(kāi)發(fā)的SFC組態(tài)軟件的圖形系統(tǒng)的構(gòu)成。詳盡給出了SFC圖形系統(tǒng)的設(shè)計(jì)方案及其基于VC++的方案實(shí)現(xiàn)。實(shí)踐表明,依據(jù)這一方案設(shè)計(jì)實(shí)現(xiàn)的SFC組態(tài)軟件組態(tài)方式靈活、易于維護(hù)。



    一、引言

    順序功能圖(SFC)是一種圖形化的組態(tài)語(yǔ)言,主要應(yīng)用于工業(yè)過(guò)程控制上位策略組態(tài)程序的編寫,在PLC系統(tǒng)和系統(tǒng)上位組態(tài)軟件中廣泛使用。隨著4C技術(shù)的飛速發(fā)展和工業(yè)過(guò)程控制領(lǐng)域自動(dòng)化程度的日益提高,控制系統(tǒng)上位圖形化的編程模式也越來(lái)越受到用戶的青睞。開(kāi)發(fā)SFC組態(tài)軟件具有非常現(xiàn)實(shí)的意義[1,2]。

    二、SFC的功能和組成

    SFC是采用圖形化的方法來(lái)描述一個(gè)控制程序的順序行為,基于Petri網(wǎng)和IEC848標(biāo)準(zhǔn)Grafce,但又做了必要的修改。將一個(gè)程序內(nèi)部組織加以結(jié)構(gòu)化,在保持其總貌的前提下將一個(gè)控制問(wèn)題分解為若干個(gè)可管理的部分,由“步”(step)和“轉(zhuǎn)換點(diǎn)”(transition)所組成,每個(gè)轉(zhuǎn)換點(diǎn)具有一定的邏輯條件。每一個(gè)步中所實(shí)現(xiàn)的功能可以用其他幾種語(yǔ)言,如FBD、LD、ST和IL來(lái)描述。

    三、SFC組態(tài)軟件圖形系統(tǒng)的構(gòu)成

    SFC為用戶提供了方便、快捷和直觀的圖形化編程模式,其圖形系統(tǒng)是整個(gè)組態(tài)軟件的核心所在筆者所開(kāi)發(fā)的SFC組態(tài)軟件圖形系統(tǒng)具備下面組成部分,如圖1所示。



圖1 組態(tài)軟件圖形系統(tǒng)的構(gòu)成

    (1)視覺(jué)效果良好的編輯窗口。為了給用戶一個(gè)清新直觀的程序編寫環(huán)境,編輯窗口應(yīng)當(dāng)給用戶一個(gè)良好的視覺(jué)效果。

    (2)用戶工具欄。

    (3)用戶右鍵快捷菜單。

    (4)水平、垂直標(biāo)尺。水平及垂直標(biāo)尺的設(shè)置便于用戶在編輯器內(nèi)導(dǎo)航,同時(shí)具有整行選擇和整列選擇的功能。

    四、SFC圖形系統(tǒng)設(shè)計(jì)方案

    (一)語(yǔ)言元素管理模式的確定

    SFC圖形系統(tǒng)的管理,主要是解決語(yǔ)言元素單體及宏體的添加、刪除、移動(dòng)等操作所帶來(lái)的對(duì)象管理問(wèn)題。有兩種模式可供選擇:一維線性模式和二維平面模式。在存儲(chǔ)管理上,都是使用鏈表和數(shù)組,區(qū)別在于根對(duì)語(yǔ)言元素對(duì)象的查找、定位的機(jī)制上。

    1.一維線性模式

    該管理模式下,全部的語(yǔ)言元素對(duì)象分布到幾個(gè)不同類型的鏈表和數(shù)組中存儲(chǔ),查找、定位某個(gè)類型的語(yǔ)言元素對(duì)象時(shí),直接使用鏈表本身和數(shù)組本身進(jìn)行操作:使用查找或遍歷的方法得到滿足條件的語(yǔ)言元素對(duì)象。這種模式節(jié)省內(nèi)存占用,程序?qū)崿F(xiàn)簡(jiǎn)便。但語(yǔ)言元素對(duì)象較多時(shí)運(yùn)行的效率不高。

    2.二維平面模式

    在這種管理模式下,除了將全部的語(yǔ)言元素對(duì)象分布到幾個(gè)不同類型的鏈表和數(shù)組中存儲(chǔ)以外,還在內(nèi)存中建立一個(gè)“網(wǎng)格地圖”(GridMap)用以形成從各元素在編輯區(qū)域的顯示位置到其內(nèi)存分布的邏輯地址的映射。使用查找、定位某個(gè)類型的語(yǔ)言元素對(duì)象時(shí)使用網(wǎng)格地圖在內(nèi)存中快速定位相應(yīng)的語(yǔ)言元素對(duì)象。這種模式占用較多的內(nèi)存;但當(dāng)語(yǔ)言元素對(duì)象較多時(shí)可大大提高了軟件運(yùn)行的效率,方便了對(duì)語(yǔ)言元素對(duì)象的管理。

    考慮到軟件運(yùn)行中經(jīng)常出現(xiàn)用戶對(duì)語(yǔ)言元素的各種操作,對(duì)語(yǔ)言元素的內(nèi)存定位運(yùn)算非常頻繁,由此決定的軟件運(yùn)行的效率是一個(gè)很重要的指標(biāo),而一般的SFC程序規(guī)模通常不是很大,所以在本軟件中選擇和確定了使用二維平面式的語(yǔ)言元素管理模式。網(wǎng)格信息的圖形表征如圖2所示。



圖2 網(wǎng)格信息的圖形表征

    根據(jù)SFC的編程規(guī)則,每個(gè)網(wǎng)格最多只能存放3個(gè)語(yǔ)言元素。因此,將網(wǎng)格劃分為上、中、下3個(gè)部分,每個(gè)部分都存儲(chǔ)有關(guān)該處語(yǔ)言元素的2個(gè)重要的描述信息:該處語(yǔ)言元素的類型及該處語(yǔ)言元素在相應(yīng)鏈表和數(shù)組中的索引值。

    (二)基本語(yǔ)言元素的操作

    1.語(yǔ)言元素對(duì)象的選擇、添加、刪除、屬性修改、單體及宏塊的移動(dòng)

選擇操作:包括單擊、“橡皮筋”拖動(dòng)、通水平或垂直標(biāo)尺、編輯區(qū)域左上角的快捷按鈕等途徑實(shí)現(xiàn)。
添加操作:從語(yǔ)言工具箱中選擇某個(gè)語(yǔ)言元素,在客戶編輯區(qū)域內(nèi)單擊,即可在相應(yīng)的語(yǔ)言元素對(duì)象數(shù)組中添加一個(gè)新個(gè)體,自動(dòng)配置對(duì)象的某些數(shù)據(jù)(如網(wǎng)格位置坐標(biāo)、選擇狀態(tài)等)。
刪除操作:使用鍵盤、“編輯”菜單或右鍵快捷菜單可以實(shí)現(xiàn)選中對(duì)象的刪除。
屬性配置和修改:通過(guò)“屬性配置”修改“對(duì)話框完成語(yǔ)言元素的屬性配置和修改。
移動(dòng)操作:包括語(yǔ)言元素對(duì)象單體的移動(dòng)和多個(gè)對(duì)象構(gòu)成的宏體的移動(dòng)。由于SFC編程有著一定的規(guī)則,因此各語(yǔ)言元素之間的相對(duì)位置要遵守一套相當(dāng)復(fù)雜的規(guī)則(如兩個(gè)步不能直接相連等),不能夠隨意放置。因此,在設(shè)計(jì)上不但要對(duì)規(guī)則作全面的考慮,而且要以方便用戶操作為準(zhǔn)則。
    2.“分支”及“匯合”元素的動(dòng)態(tài)伸縮

    SFC語(yǔ)言元素中的“分支”(branch)及“匯合”(joint)元素具有不同于其他語(yǔ)言元素的特性。因?yàn)檫@兩種元素可以具有多個(gè)引出點(diǎn)(“分支”可以有多個(gè)分支點(diǎn),“匯合”可以有多個(gè)匯合點(diǎn)),所以在設(shè)計(jì)實(shí)現(xiàn)時(shí)應(yīng)當(dāng)使其具有動(dòng)態(tài)伸縮的功能。

    (三)語(yǔ)言元素之間的自動(dòng)連接功能

    SFC語(yǔ)言元素中的某些元素之間是可以直接連接的,即:設(shè)有任意兩個(gè)語(yǔ)言元素A、B,元素A在編輯區(qū)內(nèi)的網(wǎng)格坐標(biāo)位置為(x,y,z1),元素B在編輯區(qū)內(nèi)的網(wǎng)格坐標(biāo)位置為(x,y+1,z2)。其中z1、z2為網(wǎng)格內(nèi)的層次值(0,1,2分別表征上、中、下三個(gè)層次),z1、z2的取值使得A和B在網(wǎng)格圖上不直接相鄰。當(dāng)A、B滿足一定的條件時(shí),在A和B之間可以進(jìn)行直接連接。

    SFC的多種語(yǔ)言元素之間都具有直接連接的性質(zhì)。本設(shè)計(jì)中采用規(guī)則庫(kù)算法,當(dāng)添加、移動(dòng)某個(gè)語(yǔ)言元素后,檢測(cè)該元素的上、下網(wǎng)格內(nèi)是否存在可以直接連接的元素;如果有則在兩個(gè)元素之間自動(dòng)形成。

    (四)語(yǔ)言元素功能組

    為提高用戶使用編程的效率,將若干個(gè)語(yǔ)言元素組合,構(gòu)成語(yǔ)言元素功能組,以宏塊的形式提供給用戶使用,如步―轉(zhuǎn)換功能組、分支―匯合功能組。通過(guò)設(shè)置組的規(guī)模得到包含有不同數(shù)量語(yǔ)言元素的功能組。

    (五)長(zhǎng)連接功能

    在用戶編程過(guò)程中,SFC語(yǔ)言元素的分布并非都是網(wǎng)格間直接相鄰的。例如,任意兩個(gè)語(yǔ)言元素A、B,A在編輯區(qū)內(nèi)的網(wǎng)格坐標(biāo)位置為(x,y,z1),B在編輯區(qū)內(nèi)的網(wǎng)格坐標(biāo)位置為(x,y+n,z2)(n≥2)。當(dāng)A、B之間滿足可連接條件時(shí),則在A、B之間可以構(gòu)成一個(gè)長(zhǎng)連接。

    1.連接方向的判斷。根據(jù)用戶在連線起點(diǎn)元素的鼠標(biāo)輸入位置來(lái)判斷用戶要實(shí)現(xiàn)的連線的方向。無(wú)須將鼠標(biāo)輸入位置精確定位到元素的連接端子上,只需處于元素塊的上、下區(qū)域內(nèi)就可以由軟件自動(dòng)判斷用戶要實(shí)現(xiàn)的連線方向。

    2.自動(dòng)判斷是否可以連接終點(diǎn)元素。當(dāng)確定了連接起點(diǎn)后,使用智能算法自動(dòng)判斷鼠標(biāo)當(dāng)前位置元素是否可為連接終點(diǎn)元素,并通過(guò)鼠標(biāo)光標(biāo)變形提示用戶。

    3.可視化的連線設(shè)計(jì)。

    4.用戶模糊輸入支持。

    用戶無(wú)須將鼠標(biāo)輸入位置精確定位到元素的連接端子上,只需處于元素塊的上、下區(qū)域內(nèi)并確定后,就可以由軟件將連線精確連接到元素的上或下連接端子上。

    (六)剪貼板功能和OLE拖放

    為便于用戶的操作,提供了對(duì)SFC各語(yǔ)言元素的剪貼板和拖放功能支持,使用戶可以在多個(gè)SFC組態(tài)子窗口中方便快捷地實(shí)現(xiàn)數(shù)據(jù)傳輸和共享。

    (七)文字注釋功能

    在設(shè)計(jì)實(shí)現(xiàn)上將文字注釋功能與SFC語(yǔ)言元素功能分開(kāi)并分別管理。在顯示模式上,采用了兩個(gè)圖層:處于頂層的SFC語(yǔ)言元素層和處于底層的用戶注釋層,通過(guò)可選的圖層切換功能可以實(shí)現(xiàn)兩個(gè)圖層的顯示和隱藏。文字注釋功能包括添加、刪除、移動(dòng)、注釋等。在編輯區(qū)域內(nèi)對(duì)文字注釋進(jìn)行的操作不影響語(yǔ)言元素。

    五、SFC圖形系統(tǒng)基于VC++的實(shí)現(xiàn)

    使用VC++語(yǔ)言實(shí)現(xiàn)組態(tài)方案。VC++所具有的高度友好的集成開(kāi)發(fā)環(huán)境和功能強(qiáng)大的大大提高了用戶進(jìn)行軟件開(kāi)發(fā)的效率。限于篇幅,在此只給出功能設(shè)計(jì)中一些較為重要的項(xiàng)目的VC++實(shí)現(xiàn)[3]。

    (一)基本語(yǔ)言元素對(duì)象的構(gòu)造

    使用C++描述,將語(yǔ)言元素抽象成C++類。構(gòu)造1個(gè)基類和7個(gè)由此基類派生的子類,分別對(duì)應(yīng)于SFC中的7種基本語(yǔ)言元素。基類CSFCComponent描述了圖形系統(tǒng)中的SFC語(yǔ)言元素的基本特性:

    Class CSFCComponent
    {
    Public:
          BYTE m_Grid Y;//網(wǎng)格坐標(biāo)X
      BYTE m_Grid X;//網(wǎng)格坐標(biāo)Y
          Bool m_bSelected;//選擇狀態(tài)
          CSFCComponent();
      virtual~CSFCComponent();
    };

    步、轉(zhuǎn)換和跳轉(zhuǎn)3種語(yǔ)言元素具有較大相似性,除了繼承CSFCComponent的全部屬性外,還各自具有其他特有的屬性,以下以步的構(gòu)造為例。
   
    步對(duì)象的構(gòu)造:

    Class CSFCSterx putlic CSFCComponent
    {
    public
            …//步對(duì)象的其他屬性
            Void Draw(CDC* pdc,int index,int grid_width,,int grid_height);
          CSFCStep();
          vitual~CSFCStep();
    };

    并行分支、并行匯合、單行分支和單行匯合具有較大相似性。以下以并行分支的構(gòu)造為例。

    Class CSFCParallelbranch public CSFCComponnet
    {
    Public
    Void Draw(CDC* pdc,int grid_width,int grid_height);
            BYTE m_GridNum;//跨越的格數(shù)
           CSFCParallelbranch();
      virtual~CSFCParallelbranch();
    };
   
    連接對(duì)象是一種較為特殊的對(duì)象,實(shí)現(xiàn)各語(yǔ)言元素之間的連接。如下構(gòu)造:

    Class CSFCLink
    {
    public
          void Draw(CDC* pdc,int grid_width,int grid_height);
          BYTE gridx;//所連接的語(yǔ)言元素的位置坐標(biāo);
          BYTE gridy_upper,gridy_lower;//所連接的語(yǔ)言元素上、下的位置坐標(biāo)
          BYTE layer_upper,layer_lower;//所連接的
   
    語(yǔ)言元素的網(wǎng)格層次值:
          CSFCLink();
          virtual~CSFCLink();
    };

    (二)語(yǔ)言元素對(duì)象二維平面管理模式的實(shí)現(xiàn)

    構(gòu)造如下的數(shù)據(jù)結(jié)構(gòu)表征網(wǎng)格地圖中的網(wǎng)格信息。

    Type def strict GRID_INFO
    {
        Selector component_type[3];//語(yǔ)言元素的類型,3個(gè)元素分別表示網(wǎng)格的上、中、下3個(gè)層次;
    WORD array_index[3];//語(yǔ)言元素在其相應(yīng)類型的鏈表或數(shù)組中的索引值,作為語(yǔ)言元素在內(nèi)存的邏輯地址使用,3個(gè)元素分別表示網(wǎng)格的上、中、下3個(gè)層次內(nèi)的語(yǔ)言元素在相應(yīng)數(shù)組中的索引值;
    };
 
    此網(wǎng)格地圖就構(gòu)成了從各元素在編輯區(qū)域的顯示位置到其內(nèi)存分布的邏輯地址的映射。其中selector為SFC語(yǔ)言元素選擇子,枚舉類型,如下定義。

    Typedef enum selector{

    null,mouse_select,step,transition,parallel_branch,parallel_joint,alternative_branch,alternative_joint,jump,link,text step_transition_group,transition_step_group,alternative_group,text_move,text_rubberbcandselect,longlink_cut};

    當(dāng)用戶在SFC語(yǔ)言元素工具箱中選擇不同的語(yǔ)言元素時(shí),當(dāng)前選擇子變量取不同的值。
   
    網(wǎng)格的集合即構(gòu)成網(wǎng)格地圖,網(wǎng)格地圖如下定義:

    GRID_INFO**m_GridMap

    其程序?qū)崿F(xiàn)為:

    This->m_GridMap=(GRID_INFO**)::malloc(size of(void*)*this->m_gridy_num);
    for(int y=0;y<=this->m_gridy_num-1;y++)
    {
        this->m_GridMap[y]=(GRID_INFO*)::malloc(size of(GRID_INFO)*this->m_gridx_num);
    }

    //初始化格圖:

    for(y=0;y<=this->m_gridy_num-1;y++)
    {
           ::memset(this->m_GridMap[y],0,size of(GRID_INFO)*this->m_gridx_num);
    }

    (三)剪貼板功能和OLE拖放的實(shí)現(xiàn)

    在SFC組態(tài)器工程中,實(shí)現(xiàn)了對(duì)SFC基本語(yǔ)言元素和文本注釋對(duì)象的剪貼板功能和OLE拖放,鑒于SFC基本語(yǔ)言元素和文本屬于兩種不同的范疇,因此對(duì)于其剪貼板及的操作采用了兩種不同的設(shè)計(jì)實(shí)現(xiàn)模式。文本的剪貼板及OLE操作采用Windows系統(tǒng)級(jí)定義的剪貼板格式實(shí)現(xiàn)進(jìn)程內(nèi)以及進(jìn)程之間的數(shù)據(jù)傳輸和共享,該技術(shù)已經(jīng)比較成熟,實(shí)現(xiàn)起來(lái)也較為簡(jiǎn)單;而對(duì)于基本語(yǔ)言元素所構(gòu)成的數(shù)據(jù)對(duì)象而言,其數(shù)據(jù)格式是自定義的,不在系統(tǒng)級(jí)剪貼板格式范疇內(nèi),需要使用自定義的數(shù)據(jù)傳輸格式[4]。

    經(jīng)研究分析和實(shí)驗(yàn)得出結(jié)論:實(shí)現(xiàn)系統(tǒng)級(jí)剪貼板格式以外的數(shù)據(jù)共享,應(yīng)當(dāng)實(shí)現(xiàn)以下兩個(gè)關(guān)鍵環(huán)節(jié):

    (1)自定義一種剪貼板格式,用以標(biāo)識(shí)用戶要進(jìn)行的剪貼操作和存儲(chǔ)用戶數(shù)據(jù)區(qū)域在系統(tǒng)中的地址。

    (2)實(shí)現(xiàn)共享數(shù)據(jù)生成者與使用者間的數(shù)據(jù)共享協(xié)議,對(duì)放入到剪貼板上的實(shí)體數(shù)據(jù)的格式進(jìn)行了自定義。

    SFC組態(tài)器中的數(shù)據(jù)類型多且內(nèi)容比較復(fù)雜,各元素之間要遵守嚴(yán)格的邏輯排序規(guī)則,在設(shè)計(jì)實(shí)現(xiàn)剪貼板和OLE拖放功能時(shí)要作全面的考慮。除了要將用戶當(dāng)前選中的SFC組件拷貝和剪切到剪貼板上外,還應(yīng)將拷貝和剪切前的元素連接及排序位置一同記錄到剪貼板上。以此為出發(fā)點(diǎn),在本工程中,自定義了一種名為“sfc_selected_components”的剪貼板格式。

    在拷貝/剪切操作時(shí),按照下面步驟實(shí)施:①注冊(cè)剪貼板格式;②打開(kāi)剪貼板;③清空剪貼板;④根據(jù)要操作的對(duì)象數(shù)據(jù)計(jì)算要使用的全局內(nèi)存量;⑤釋放上次分配的內(nèi)存,分配本次操作所需的內(nèi)存;⑥存儲(chǔ)數(shù)據(jù);⑦關(guān)閉剪貼板。

    OLE拖放技術(shù)的實(shí)現(xiàn)較剪貼板而言,其數(shù)據(jù)存取的原理基本相同,但形式更加簡(jiǎn)潔,主要體現(xiàn)在數(shù)據(jù)存儲(chǔ)的系統(tǒng)全局地址的傳遞的表達(dá)方式上有所不同。另外,OLE拖放協(xié)議相對(duì)簡(jiǎn)單,不涉及與其他數(shù)據(jù)類型的兼容性問(wèn)題[5]。

    (四)文字注釋功能

    文字注釋對(duì)象如下構(gòu)造:

    Class CText
    {
    Public:
            CRect m_rec;//以滾動(dòng)大坐標(biāo)系為準(zhǔn),不以局部小坐標(biāo)系為準(zhǔn)
            DWORD text_color;
            LOGFONT if;//記錄文字顯示所使用的字體數(shù)據(jù)
            Bool m_bSelected;//是否選中:缺省false
            CPoint top_left;//記錄文字的左上角位置
            CString text;//文字內(nèi)容,缺省為空
            CRect jisuan_rect(CPoint,point,int hangshu,CString longest_str,CDC* pdc);
            Void draw(CDC* pdc);
            CText();
            virtual~CText();
    };
        Class CSFCText public CText
    {
    public:
            void draw(CDC* pdc);
            CSFCText();
            virtual~CSFCText();
    }

    文字注釋對(duì)象的復(fù)制、剪切和粘貼操作在CSF-CView的CopyText、CutText和PasteText函數(shù)中實(shí)現(xiàn)。

    六、結(jié)束語(yǔ)

    以上所述SFC組態(tài)軟件圖形系統(tǒng)的設(shè)計(jì)方案和基于VC++的實(shí)現(xiàn)都已在筆者開(kāi)發(fā)的“WorldFIP現(xiàn)場(chǎng)總線控制系統(tǒng)上位策略組態(tài)軟件”的SFC子系統(tǒng)中全部實(shí)現(xiàn),并已應(yīng)用于對(duì)WorldFIP現(xiàn)場(chǎng)總線控制系統(tǒng)的工程組態(tài)。實(shí)踐表明,依據(jù)這一方案設(shè)計(jì)實(shí)現(xiàn)的SFC組態(tài)軟件組態(tài)方式靈活、易于維護(hù),在人機(jī)界面上面向用戶、高度友好、簡(jiǎn)便直觀,大大提高了用戶組態(tài)編程的效率,具有較大的推廣和應(yīng)用價(jià)值。

    參考文獻(xiàn)

    [1] 王錦標(biāo).現(xiàn)場(chǎng)總線和現(xiàn)場(chǎng)總線控制系統(tǒng)[J].化工自動(dòng)化及儀表,1997,(2).
    [2] 方來(lái)華,吳愛(ài)國(guó),何熠.組態(tài)軟件核心技術(shù)研究[J].化工自動(dòng)化及儀表,2004,(1).
    [3] 齊舒創(chuàng)作室.VC++6.0開(kāi)發(fā)技巧與實(shí)例剖析[M].北京:清華大學(xué)出版社,1999.
    [4] 新編WINDOWS API參考大全編寫組.新編WINDOWS API參考大全[M].北京:電子工業(yè)出版社,2000.
    [5] 潘愛(ài)民.COM原理與應(yīng)用[M].北京:清華大學(xué)出版社,1999.

熱點(diǎn)新聞

推薦產(chǎn)品

x
  • 在線反饋
1.我有以下需求:



2.詳細(xì)的需求:
姓名:
單位:
電話:
郵件:
天天做日日爱| 91麻豆tv| 日韩在线观看视频网站| 亚久久伊人精品青青草原2020| 韩国三级香港三级日本三级la| 精品国产香蕉在线播出| 色综合久久天天综合| 欧美a级片免费看| 国产综合91天堂亚洲国产| 欧美α片无限看在线观看免费| 国产一级生活片| 欧美激情一区二区三区中文字幕| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产福利免费观看| 亚洲 激情| 久久99中文字幕久久| 精品美女| 欧美大片aaaa一级毛片| 美女免费毛片| 午夜在线影院| 精品国产一区二区三区国产馆| 国产成人精品综合久久久| 一级女性全黄生活片免费| 国产不卡福利| 日韩综合| 香蕉视频久久| 国产伦久视频免费观看 视频| 日日夜人人澡人人澡人人看免| 国产福利免费观看| 国产亚洲免费观看| 日本在线播放一区| 色综合久久天天综合观看| 国产亚洲精品成人a在线| 精品国产一区二区三区久| 欧美激情影院| 日韩一级黄色片| 午夜家庭影院| 韩国毛片基地| 久草免费在线观看| 亚洲 激情| 91麻豆国产| 久久99中文字幕久久| 一本伊大人香蕉高清在线观看| 国产不卡在线观看视频| 精品国产一区二区三区免费 | 二级片在线观看| 午夜激情视频在线观看 | 成人a大片高清在线观看| 高清一级片| 精品视频在线看| 精品视频在线观看视频免费视频| 国产不卡在线看| 天堂网中文字幕| 国产a毛片| 中文字幕97| 亚洲精品中文一区不卡| 精品在线观看国产| 亚洲第一色在线| 国产不卡精品一区二区三区| 夜夜操天天爽| 夜夜操天天爽| 免费国产在线观看| 精品视频在线观看免费| 久久国产一区二区| 精品美女| 深夜做爰性大片中文| 国产成人啪精品| 国产91精品一区二区| 日本特黄特色aa大片免费| 日韩免费在线视频| 99热精品一区| 日本特黄特色aa大片免费| 国产麻豆精品视频| 91麻豆国产级在线| 欧美1卡一卡二卡三新区| 国产91丝袜高跟系列| 日韩中文字幕在线亚洲一区 | 在线观看成人网| 国产视频一区二区三区四区 | 亚洲第一页色| 91麻豆精品国产高清在线| 麻豆系列 在线视频| 欧美a级大片| 亚洲精品久久久中文字| 精品久久久久久中文| 美国一区二区三区| 精品国产香蕉在线播出| a级黄色毛片免费播放视频| 日本伦理黄色大片在线观看网站| 成人免费观看的视频黄页| 精品久久久久久中文| 成人高清护士在线播放| 色综合久久天天综线观看| 四虎影视精品永久免费网站 | 欧美另类videosbestsex高清| 一 级 黄 中国色 片| 日本特黄特色aaa大片免费| 99色播| 99久久精品国产麻豆| 国产91精品一区| 可以在线看黄的网站| 亚洲 欧美 91| 精品视频在线观看一区二区三区| 国产伦理精品| 国产美女在线一区二区三区| 一级毛片视频播放| 亚洲精品久久玖玖玖玖| 成人高清护士在线播放| 99久久精品国产国产毛片| 国产91素人搭讪系列天堂| 国产不卡精品一区二区三区| 日韩专区亚洲综合久久| 国产一区二区精品尤物| 国产91精品露脸国语对白| 久草免费在线色站| 成人av在线播放| 国产视频一区二区在线播放| 久久国产一久久高清| 99热精品在线| 欧美电影免费| 夜夜操天天爽| 国产一区二区精品| 成人高清视频在线观看| 日韩中文字幕在线观看视频| 国产不卡福利| 国产不卡精品一区二区三区| 国产a毛片| 久久成人综合网| 成人高清视频免费观看| 国产91素人搭讪系列天堂| 精品国产香蕉在线播出| 色综合久久手机在线| 欧美激情一区二区三区在线 | 天天做人人爱夜夜爽2020 | 中文字幕97| 日韩av东京社区男人的天堂| 久久国产精品自由自在| 99久久精品费精品国产一区二区| 黄视频网站在线观看| 99久久网站| 在线观看成人网 | 天堂网中文字幕| 精品国产亚洲人成在线| 一本高清在线| 91麻豆高清国产在线播放| 人人干人人草| 国产亚洲男人的天堂在线观看| 韩国毛片基地| 国产不卡精品一区二区三区| 青青青草视频在线观看| 国产成人精品综合| 日韩中文字幕一区| 午夜欧美福利| a级精品九九九大片免费看| 欧美一区二区三区在线观看| 精品在线观看国产| 毛片高清| 成人av在线播放| 国产91丝袜高跟系列| 99色播| 久久国产一区二区| 久久国产一久久高清| 日日日夜夜操| 四虎影视库国产精品一区| 免费一级片在线观看| 香蕉视频久久| 国产91丝袜高跟系列| 日韩免费在线观看视频| 日韩一级黄色片| 欧美另类videosbestsex视频| 青青久在线视频| 麻豆系列 在线视频| 国产亚洲精品成人a在线| 天天做人人爱夜夜爽2020 | a级毛片免费全部播放| 国产视频在线免费观看| 亚洲www美色| 国产极品白嫩美女在线观看看| 一本伊大人香蕉高清在线观看| 91麻豆国产| 国产视频久久久| 日本免费乱人伦在线观看| 九九久久99综合一区二区| 一级毛片视频免费| 黄色短视频网站| 午夜久久网| 国产精品123| 四虎影视精品永久免费网站 | 91麻豆国产级在线| 午夜欧美福利| 免费毛片播放| 国产一区精品| 日日日夜夜操| 欧美国产日韩在线| 成人影视在线播放| 亚洲第一页乱| 九九精品久久| 久久99欧美| 精品国产亚一区二区三区| 黄视频网站免费|