亚洲成色777777在线观看影院_亚洲精品午夜精品_97超级碰碰碰_久久久精品美女_亚洲色图av在线_欧美精品少妇videofree_欧美日韩成人精品_久久久精品在线_国产精品一区二区三区成人_欧美一级高清免费播放_亚洲美女免费精品视频在线观看_久久久久久欧美_2021国产精品视频_九九视频直播综合网_91亚洲永久免费精品_欧美日韩免费观看中文

PLC技術資料
    codesys與python“牽手”
    發布者:  發布時間:2025/10/14 14:14:52

    codesysplc與python的socket“牽手”:開啟工業控制無限可能

    關鍵詞:codesys、python、socket 通信、raspberry pi、工業物聯網、實時數據采集、跨語言集成

    微信公眾號原文連接:

    https://mp.weixin.qq.com/s/0jwwybowub5lj0g26gvjsa

    csdn:

    https://blog.csdn.net/qq_36063437/article/details/153248117?fromshare=blogdetail&sharetype=blogdetail&sharerid=153248117&sharerefer=pc&sharesource=qq_36063437&sharefrom=from_link

    一、引言:讓 plc 擁抱開放的編程世界

    傳統工業里,plc 穩守固定邏輯,精準執行控制任務。在工業物聯網與智能制造浪潮下,工程師有了新期待:讓 plc 與 python 等現代高級編程語言聯手,將 plc 的穩定可靠與 python 的開放多元完美融合,從而釋放出無限潛能。

    本文將以一個精彩案例,展示 plc 程序通過 socket 請求,讓樹莓派上 python 服務器抓取實時天氣數據并回傳解析存儲的奇妙過程,一起探索!

    二、系統總體架構與數據流

    系統由兩個主要部分構成:

    模塊平臺功能描述
    codesys plc 程序樹莓派上的 codesys runtime客戶端。檢測觸發信號、建立tcp連接、發送命令、接收天氣 json 數據、解析并輸出到變量。
    python 服務端程序樹莓派 / 其他主機服務器。監聽tcp端口,接收plc命令,通過 http 從 weather.com.cn 獲取實時天氣數據,解析后返回 json 格式響應。

    三、codesys 端:實現 plc 調用外部服務的關鍵邏輯

    codesys中新建名為socket_fb的功能塊(function block),在plc主循環中調用。

    3.1 功能塊的引腳設計

    socket_fb功能塊引腳示意圖

    3.2 上升沿觸發與一次通信周期

    代碼示例:

    brisingedge := bsendtrigger and not btrigold;

    btrigold := bsendtrigger;

    plc 程序通過檢測輸入 bsendtrigger 的上升沿,觸發一次完整的通信任務。這樣可確保每次請求都是用戶或外部事件驅動,不會連續觸發導致網絡阻塞。一旦觸發在后續的程序中會依次執行以下命令:

    周期初始化,清空所有狀態變量;

    創建 tcp socket;

    連接到服務器;

    發送命令;

    等待并接收應答;

    解析結果;

    關閉連接。

    這是一個典型的“事務式通信模式”,類似工業現場中“一次握手、一問一答”的數據采集流程。

    3.3 周期初始化

    代碼示例:

    if brisingedge then

    bconnectok := false;

    bsendok := false;

    brecvok := false;

    bdone := false;

    srecvbuffer := '';

    ierrorcode := errors.err_ok;

    每次通訊開始前重置所有狀態標志,清空接收緩沖區。

    3.4 socket 通信核心流程

    codesys 的 syssocket 庫提供了底層網絡訪問能力:

    函數作用
    syssockcreate()創建 socket,返回句柄
    syssockconnect()與服務器建立 tcp 連接
    syssocksend()發送數據
    syssockrecv()接收數據
    syssockclose()關閉連接

    (1) 創建socket:

    代碼示例:

    hsocket := syssockcreate(socket_af_inet, socket_stream, socket_ipproto_tcp, adr(iresult));

    codesys庫syssockcreate文檔

    創建一個新的 socket,并返回該 socket 的句柄(handle)。這個句柄以后會作為參數傳給其他套接字相關函數,例如 syssockbind、syssockconnect、syssocklisten、syssockaccept、syssocksend、syssockrecv、syssockclose 等。

    參數:socket_af_inet, socket_stream, socket_ipproto_tcp是 codesys 系統庫中定義的常量,初始值如下表所示。

    nametypeinitialcomment
    socket_af_inetint2addressfamily: dinternetwork: udp, tcp, etc.
    socket_streamdint1socket types: stream socket
    socket_ipproto_tcpdint6protocols: tcp

    (2)設置socket服務器地址

    代碼示例:

    sockinetaddr_result := syssockinetaddr('127.0.0.1', adr(ipaddr));

    if sockinetaddr_result = errors.err_ok then

    addrserver.sin_family := socket_af_inet;

    addrserver.sin_port := syssockhtons(5678);

    addrserver.sin_addr.uladdr := ipaddr;

    這段代碼的作用是:將字符串形式的 ip 地址 "127.0.0.1" 轉換為可用于網絡通信的數值格式,并在轉換成功后,設置服務器地址結構 addrserver 的基本參數:指定使用 ipv4 協議、端口號為 5678,并將目標 ip 地址設為 127.0.0.1,為后續建立 socket 連接做準備。

    codesys庫syssockinetaddr文檔

    在使用syssockconnect 前,需要把目標 ip(字符串)轉換為可寫入地址結構的二進制值。所以,syssockinetaddr 通常是網絡通信初始化步驟中的一環。syssockinetaddr 的作用就是:把 "點分十進制" 的 ip 地址(例如 '127.0.0.1')轉成一個 32 位無符號整數(udint)形式。

    在實際測試中使用的‘127.0.0.1’通過syssockinetaddr轉換結果是16777343。一個 ipv4 地址本質上是 4 個字節(共 32 位),把它轉換為16進制按字節拼起來是0x7f000001。網絡中數據是 big endian(高位在前),但大多數 plc/cpu(x86、arm)是 little endian(低位在前)。也就是說在內存中這 4 個字節的排列是反的:

    網絡字節序(標準): 7f 00 00 01

    plc內存(小端表示): 01 00 00 7f

    0x0100007f = (1 × 256^3) + (0 × 256^2) + (0 × 256) + 127= 16777343

    codesys庫sockaddress文檔

    sockaddress 結構用于在 codesys 中描述一個完整的網絡通信地址,它包含了建立或識別網絡連接所需的全部信息——包括地址族(如 ipv4)、端口號以及目標或本地的 ip 地址。該結構在調用syssockconnect函數時作為參數使用,用來告訴系統“我要與哪個 ip、哪個端口進行通信”。其中端口號需要通過 syssockhtons() 轉換為網絡字節序,ip 地址通常由 syssockinetaddr() 生成。簡單來說,sockaddress 就是 codesys 中 socket 通信的“地址卡片”。

    (3)建立socket連接

    代碼示例:

    sockconnect_result := syssockconnect(hsocket, adr(addrserver), sizeof(addrserver));

    這段代碼的作用是:通過已創建的 socket (hsocket),調用 syssockconnect() 函數,將其連接到由 addrserver 定義的遠程服務器地址,并返回連接結果。

    codesys庫syssockconnect文檔

    syssockconnect是一個用于實現客戶端連接socket服務器功能的功能塊。使用時,需將傳入socket句柄和包含服務器ip地址和端口號等信息的sockaddress結構等。函數執行后會返回一個rts_iec_result類型的值,用于指示連接操作是否成功,若返回0表示連接成功,可進行后續數據傳輸等操作,否則需根據返回值進行相應的錯誤處理。

    (4) 發送命令

    代碼示例:

    ssendbuffer := 'fun1';

    if syssocksend(hsocket, adr(ssendbuffer), len(ssendbuffer), 0, adr(socksend_result)) >; 0 and socksend_result = errors.err_ok then

    bsendok := true;

    這段代碼的作用是:plc通過已連接的socket發送字符串 “fun1”,并在確認發送成功后設置發送成功標志。

    codesys庫syssocksend文檔

    syssocksend 函數用于向已建立的 socket發送數據。hsocket 是先前創建并連接成功的 socket 句柄;adr(ssendbuffer) 提供發送緩沖區的內存地址;len(ssendbuffer) 指定要發送的數據長度;0 表示不使用額外的發送標志;adr(socksend_result) 用于接收運行時系統返回的錯誤碼。函數返回成功發送的字節數。如果發送的字節數大于 0 且系統返回碼 socksend_result 等于 errors.err_ok,則說明數據成功發出,于是程序將 bsendok 置為 true,表示發送完成。

    (5) 接收數據

    代碼示例:

    direcvbytes := syssockrecv(hsocket, adr(byrecvbuffer), sizeof(byrecvbuffer), 0, adr(sockrecv_result));

    if direcvbytes >; 0 and sockrecv_result = errors.err_ok then

    if direcvbytes >; sizeof(srecvbuffer) - 1 then

    direcvbytes := sizeof(srecvbuffer) - 1;

    end_if

    sysmemcpy(adr(srecvbuffer), adr(byrecvbuffer), direcvbytes);

    srecvbuffer[direcvbytes] := byte#0;

    brecvok := true;

    這段代碼的主要作用是:從一個已建立的 tcp socket (hsocket) 中接收數據并保存到接收緩沖區中 (srecvbuffer),并在成功接收后標記 brecvok := true。

    codesys庫syssockrecv文檔

    syssockrecv用于從 socket中接收數據。它通過指定的socket句柄 hsocket 從端口讀取數據,并將接收到的字節寫入由 pbybuffer 指向的接收緩沖區中,最大接收長度由 dibuffersize 限制。

    codesys庫sysmemcpy文檔

    sysmemcpy用于內存數據復制,其作用是將指定源地址 psrc 中的內容復制到目標地址 pdest,復制的字節數由參數 udicount 決定。

    實際運行狀態監控

    網絡傳輸底層不認識“字符串”,所有內容(包括文字、數字、圖片)都要被轉為字節流(byte stream)。byrecvbuffer 收到的就是這些 ascii/utf-8 字節,direcvbytes是接收到的字節數量。

    codesys監控byrecvbuffer

    byrecvbuffer接收到的字節數據前9個依次為:123,34,110,97,109,101,101,110,34。根據字符與字節(ascii / utf-8 編碼)之間的關系,以上字節可轉譯為:{、"、n、a、m、e、e、n、"。

    字符十進制字節值十六進制含義
    {1230x7b左花括號
    }1250x7d右花括號
    "340x22雙引號
    :580x3a冒號
    ,440x2c逗號
    空格320x20空格
    0–948–570x30–0x39數字字符
    a–z97–1220x61–0x7a小寫字母

    標準 ascii 或 utf-8 編碼

    文本的案例中接收到的完整字符串為:{"nameen": "baoshan", "temp": "23.9", "wde": "nw", "wse": "11km/h", "sd": "84%", "qy": "1015", "njd": "4km", "updatetime": "20:40", "rain": "0", "rain24h": "0", "aqi": "88", "aqi_pm25": "88", "weathere": "haze"},共211字節,與監控的direcvbytes值一致。

    (6) json 解析

    代碼示例:

    s_nameen := getfieldvalue(srecvbuffer, 'nameen');

    function getfieldvalue : string

    ...

    spattern := concat(skey, '": "');

    istart := find(ssrc, spattern);

    ...

    getfieldvalue := left(stemp, iend - 1);

    這段代碼的主要作用是:從 ssrc 字符串中查找以 skey 為字段名的鍵值對,并提取該鍵對應的字符串值。類似從 ... "name": "alice", ... 中提取 alice 的功能。

    雖然 plc 沒有內置完整 json 解析器,但通過字符串查找函數即可實現簡化版字段提取。這說明即便在嵌入式 plc 環境中,也可以通過基礎字符串操作解析網絡數據。解析完成后,plc 將天氣各項指標寫入輸出變量,如:

    s_temp := getfieldvalue(srecvbuffer, 'temp');

    s_windspeed := getfieldvalue(srecvbuffer, 'wse');

    s_humidity := getfieldvalue(srecvbuffer, 'sd');

    s_weather := getfieldvalue(srecvbuffer, 'weathere');

    這些變量可用于顯示在 hmi、記錄數據庫、或驅動后續控制邏輯。

    (7) 關閉socket

    syssockclose(hsocket);

    關閉已創建的套接字 hsocket,釋放與該套接字相關的系統資源,結束該網絡連接。

    四、python 端:codesys 的“外部智能助手”

    4.1 設計思路

    python 在此系統中扮演“中間件服務層”角色。plc 不直接訪問互聯網,而是請求 python 服務端,由 python 完成網絡請求與數據解析任務,再將結果以簡潔 json 返回。

    這既保證了:

    plc 穩定、安全(不直接暴露外網請求);

    python 靈活、強大(可訪問任意 api 或算法)。

    這種設計模式是“plc + 外部語言”協同的典型結構。

    本文案例以python監聽socket端口,接收來自plc的命令來執行獲取當前天氣數據的功能,并且將天氣數據返還給plc進行解析。

    4.2 主要功能模塊

    (1) 天氣數據抓取

    代碼示例:

    def get_weather_data():

    url = f"https://d1.weather.com.cn/sk_2d/101020300.html?_{int(time.time() * 1000)}"

    headers = {

    'referer': 'https://e.weather.com.cn/',

    'user-agent': 'mozilla/5.0'

    }

    response = requests.get(url, headers=headers, timeout=10)

    return parse_weather_data(response.text)

    這段代碼的作用是:python 使用 requests 庫訪問氣象網站,提取返回數據包中的 json 數據段。

    解析后得到標準字典對象,例如:

    {

    "nameen": "pudong",

    "temp": "26",

    "wde": "east",

    "wse": "3.4",

    "sd": "65%",

    "qy": "1012"

    }

    (2) 端口監聽

    def handle_client(conn, addr):

    data = conn.recv(2048).decode('utf-8').strip()

    if data == "fun1":

    weather_data = format_weather_data(get_weather_data())

    reply = json.dumps(weather_data, ensure_ascii=false)

    conn.sendall(reply.encode('utf-8'))

    python 服務監聽端口 5678,一旦接收到 "fun1",便執行天氣抓取并回傳 json。采用多線程模式,保證可以同時服務多個 plc 連接。

    4.3 codesys 與 python 的契約:數據格式 + 通信協議

    項目內容
    連接方式tcp
    端口號5678
    請求命令fun1
    返回格式utf-8 編碼的 json 文本
    通信周期按 plc 觸發(例如每 30 秒或人工觸發)

    通過這種契約,plc不需要理解python,只需發命令并解析字符串即可。這正是 “codesys 調用 python” 的精髓:plc 不直接運行 python 代碼,但通過 socket 請求 → python 執行 → 結果返回,實現了間接調用。

    五、實驗結果與運行驗證

    實驗環境:

    硬件:raspberry pi 4b + 2gb ram

    操作系統:raspberry pi os (64-bit)

    codesys 版本:3.5 sp21

    python 版本:3.11

    網絡:同機運行(127.0.0.1)

    運行效果:

    1. 啟動 python 服務器:

    [服務器啟動] 正在監聽 127.0.0.1:5678

    樹莓派python

    2. 在 codesys 中觸發 bsendtrigger 上升沿:

    bconnectok = true

    bsendok = true

    brecvok = true

    s_temp = "26"

    s_windspeed = "3.4"

    s_humidity = "65%"

    bdone = true

    codesys在線監控

    3. codesys可視化界面顯示:

    codesys可視化界面

    驗證:通信成功,數據解析正確。

    六、codesys 與 python 協同的技術意義

    6.1 打破 plc 封閉邊界

    傳統 plc 依賴專有協議和有限的函數庫,難以直接與云端 api 或第三方系統交互。通過 syssocket,codesys 實現了跨語言通信的“開放接口”,使 plc 能夠訪問:

    web 服務(restful api)

    本地算法服務(python、c/c++)

    數據庫代理(通過 python、node.js 等)

    6.2 各取所長的架構優勢

    模塊優勢角色定位
    codesys plc實時性強、控制邏輯穩定數據消費者、執行層
    python 程序網絡與算法能力強數據提供者、智能層

    這是一種工業界常見的分層架構:plc 負責“控制”,python 負責“智能”。

    七、擴展應用方向

    (1)工業 iot 數據融合

    可將 python 改為接入 mqtt、modbus、opc ua 等接口,plc 作為訂閱者。

    (2)ai 輔助控制

    python 端可運行機器學習模型,根據實時天氣預測能耗或生產計劃,再通過 socket 返回控制參數。

    (3)邊緣計算節點

    樹莓派同時運行 plc 與 python,形成“混合智能邊緣設備”,既具實時性又具云連接能力。

    (4)云服務接口

    可替換天氣 api 為任意 web 服務(設備管理、能源監控、物流狀態等),實現 codesys 與云端系統的數據橋接。

    八、結語:codesys 與 python 的融合之路

    本文以“codesys 獲取實時天氣數據”為案例,完整展示了:

    l 如何在樹莓派上運行 codesys runtime;

    l 如何用 iec 61131-3 語言建立socket通信;

    l 如何通過 python 服務器實現外部數據訪問;

    l 以及兩者協作實現“plc 調用 python”的機制。

    這不是簡單的網絡實驗,而是一個工業控制新時代的縮影。plc 不再局限于封閉的邏輯循環,而是可以與 ai、云端、web 世界自由交互。python 也不只是桌面腳本,而能成為工業現場的“智慧補腦”。

    這種模式預示著未來工業控制系統的方向:控制邏輯與數據智能的融合,實時性與開放性的統一。

    版權聲明PLC信息網轉載作品均注明出處,本網未注明出處和轉載的,是出于傳遞更多信息之目的,并不意味 著贊同其觀點或證實其內容的真實性。如轉載作品侵犯作者署名權,或有其他諸如版權、肖像權、知識產權等方面的傷害,并非本網故意為之,在接到相關權利人通知后將立即加以更正。聯系電話:0571-87774297。
0571-87774297  
亚洲成色777777在线观看影院_亚洲精品午夜精品_97超级碰碰碰_久久久精品美女_亚洲色图av在线_欧美精品少妇videofree_欧美日韩成人精品_久久久精品在线_国产精品一区二区三区成人_欧美一级高清免费播放_亚洲美女免费精品视频在线观看_久久久久久欧美_2021国产精品视频_九九视频直播综合网_91亚洲永久免费精品_欧美日韩免费观看中文

      欧美一区深夜视频| 欧美日韩一区二区三| 亚洲精选一区| 欧美日韩理论| 国产精品久久久久久久久久久久久久| 国产精品99久久久久久宅男| 国产精品久久久| 悠悠资源网久久精品| 亚洲一线二线三线久久久| 欧美精品18| 久久久综合香蕉尹人综合网| 欧美精品久久一区二区| 中文精品视频一区二区在线观看| 欧美日韩一区二区三区在线观看免| 欧美日韩免费观看一区| 国产欧美一区二区三区另类精品| 国产一区二区三区精品欧美日韩一区二区三区| 欧美成人在线网站| a4yy欧美一区二区三区| 韩日精品在线| 国产精品麻豆va在线播放| 一区二区三区四区精品| 国产日韩精品一区二区三区在线| 一区二区高清视频| 国产在线精品一区二区夜色| 亚洲高清资源综合久久精品| 亚洲欧洲日本一区二区三区| 欧美有码在线观看视频| 国产精品久久久久久久久久直播| 国产精品视区| 国产欧美日韩综合精品二区| 亚洲一区二区三区视频播放| 尤物yw午夜国产精品视频| 欧美成人有码| 国产精品精品视频| 亚洲国产精选| 国产欧美一区二区在线观看| 欧美日韩高清在线| 在线看视频不卡| av成人国产| 欧美激情二区三区| 亚洲精品国产精品乱码不99| 久久成人羞羞网站| 亚洲一区二区四区| 欧美调教视频| 国产精品剧情在线亚洲| 国产一区二区精品久久91| 在线观看亚洲视频啊啊啊啊| 国产精品区一区| 蜜桃精品久久久久久久免费影院| 欧美亚洲综合久久| 在线视频日韩精品| 欧美视频1区| 久久漫画官网| 老司机成人在线视频| 久久久午夜精品| 亚洲第一免费播放区| 亚洲女性喷水在线观看一区| 欧美日韩国产综合视频在线观看| 国产噜噜噜噜噜久久久久久久久| 欧美午夜在线一二页| 国产色爱av资源综合区| 亚洲在线日韩| 国产亚洲一区二区三区在线播放| 亚洲精品视频免费观看| 国产日韩精品一区二区浪潮av| 亚洲天堂第二页| 黄色成人av| 亚洲免费人成在线视频观看| 亚洲欧洲美洲综合色网| 国产精品看片资源| 欧美日韩亚洲另类| 国产精品av免费在线观看| 久久亚洲精品中文字幕冲田杏梨| 久热这里只精品99re8久| 亚洲欧美日韩中文视频| 国产精品igao视频网网址不卡日韩| 欧美久久久久免费| 日韩一本二本av| 亚洲欧美日本视频在线观看| 一区二区av在线| 亚洲精品视频在线| 在线亚洲欧美视频| 亚洲视屏一区| 国产精品高潮呻吟久久| 欧美精品自拍偷拍动漫精品| 91久久嫩草影院一区二区| 久久人人97超碰国产公开结果| 亚洲影院色在线观看免费| 欧美日韩国产二区| 亚洲国产综合在线| 欧美大香线蕉线伊人久久国产精品| 一色屋精品视频在线看| 欧美色大人视频| 好看不卡的中文字幕| 久久综合久久综合九色| 久久另类ts人妖一区二区| 欧美日韩一区二区欧美激情| 久久久久九九视频| 国产精品美女www爽爽爽| 久久成人精品| 最新国产の精品合集bt伙计| 老司机免费视频久久| 99国产精品| 性欧美xxxx大乳国产app| 国产精品成人午夜| 欧美三级乱码| 亚洲一区二区成人在线观看| 国内精品久久久久国产盗摄免费观看完整版| 国产午夜精品美女毛片视频| 久久理论片午夜琪琪电影网| 在线电影欧美日韩一区二区私密| 牛牛国产精品| 国产精品va| 在线观看91精品国产麻豆| 亚洲乱码精品一二三四区日韩在线| 久久久久久高潮国产精品视| 久久久精品视频成人| 亚洲国产精品va在线看黑人动漫| 亚洲毛片播放| 亚洲精品乱码久久久久久蜜桃91| 亚洲一区在线免费| 嫩草伊人久久精品少妇av杨幂| 99国产精品国产精品久久| 亚洲日本成人女熟在线观看| 免费中文字幕日韩欧美| 欧美日韩免费观看一区三区| 亚洲欧美另类综合偷拍| 国产精品乱码妇女bbbb| 欧美日韩国产小视频在线观看| 欧美精品v国产精品v日韩精品| 国产精品sss| 日韩一级免费观看| 精品va天堂亚洲国产| 激情欧美一区二区三区| 欧美一区永久视频免费观看| 亚洲毛片在线看| 亚洲精品国产视频| 国产精品国产三级国产专播品爱网| 国产日韩av高清| 亚洲高清在线精品| 欧美亚洲免费电影| 亚洲午夜精品| 久久成人精品一区二区三区| 亚洲欧美另类在线观看| 欧美网站在线观看| 亚洲片国产一区一级在线观看| 小辣椒精品导航| 久久er精品视频| 亚洲欧洲精品一区二区三区不卡| 国产一二精品视频| 国产精品久久久999| 欧美日韩在线影院| 韩国久久久久| 国产精品va在线播放| 久久蜜桃精品| 国产精品毛片一区二区三区| 国产三区二区一区久久| 亚洲午夜激情| 免费观看成人www动漫视频| 久久av一区二区| 欧美伊人久久久久久久久影院| 欧美另类69精品久久久久9999| 亚洲曰本av电影| 欧美日韩在线播放一区| 国产一区二区黄色| 久久精品噜噜噜成人av农村| 欧美日韩国产一中文字不卡| 一区二区三区 在线观看视频| 亚洲美女电影在线| 久久久久91| 黄色小说综合网站| 男人插女人欧美| 久久激情综合网| 亚洲人精品午夜在线观看| 亚洲国产欧美日韩| 亚洲欧美日韩精品久久奇米色影视| 国产视频一区在线观看| 老牛国产精品一区的观看方式| 黄色精品免费| 在线精品视频在线观看高清| 国产午夜精品久久久久久免费视| 亚洲一级特黄| 欧美激情精品| 这里只有精品视频在线| 欧美激情一区二区在线| 亚洲一区二区三区午夜| 欧美激情一区二区三区在线| 欧美中文字幕| 一区二区在线看| 久久久久久久一区二区三区| 欧美一区二区视频在线观看2020| 亚洲国产精品一区在线观看不卡| 国内久久精品视频| 亚洲色无码播放| 国产欧美日韩另类视频免费观看| 男女激情视频一区| 欧美激情欧美狂野欧美精品| 美女在线一区二区| 国产主播一区二区三区四区| 国产精品成人av性教育| 亚洲乱码日产精品bd| 久久丁香综合五月国产三级网站| 国产日韩精品在线| 欧美在线国产| 日韩视频免费观看高清在线视频| 欧美天堂亚洲电影院在线观看| 欧美日韩精品在线播放| 亚洲综合色噜噜狠狠| 亚洲国产成人一区| 国产综合欧美在线看| 久久久久**毛片大全| 欧美激情综合五月色丁香| 欧美日韩国产首页在线观看| 亚洲国产日韩一区| 伊人精品成人久久综合软件| 夜夜嗨网站十八久久| 国产精品免费区二区三区观看| 欧美一区二区在线免费观看| 亚洲视频一区二区在线观看| 美女久久一区| 久久免费视频网| 国产精品女人网站| 欧美日韩日日夜夜| 久久一日本道色综合久久| 亚洲欧洲日本mm| 国产乱码精品一区二区三区五月婷| 欧美日韩一区视频| 国产日韩欧美一区在线| 老司机凹凸av亚洲导航| 农夫在线精品视频免费观看| 欧美视频不卡中文| 国产午夜精品久久久久久久| 麻豆国产精品va在线观看不卡| 久久免费视频这里只有精品| 免费在线观看日韩欧美| 亚洲国产欧洲综合997久久| 伊人久久大香线蕉av超碰演员| 老牛影视一区二区三区| 国产日韩一级二级三级| 欧美一区二区三区四区在线观看地址| 欧美色图首页| 欧美精品一区二区三区四区| 欧美经典一区二区三区| 久久综合久久美利坚合众国| 欧美激情精品久久久久久免费印度| 亚洲免费观看高清完整版在线观看| 亚洲精品一级| 欧美日韩高清在线观看| 午夜在线a亚洲v天堂网2018| 国产九区一区在线| 亚洲另类黄色| 亚洲欧美电影在线观看| 国产自产2019最新不卡| 久久综合久久综合九色| 亚洲精品视频在线看| 欧美主播一区二区三区美女 久久精品人| 在线不卡中文字幕| 欧美日韩在线一区| 欧美成人r级一区二区三区| 亚洲欧美在线一区| 国产女主播一区| 欧美日韩综合在线免费观看| 欧美精品一区在线| 国产一区二区成人久久免费影院| 久久裸体视频| 国产免费一区二区三区香蕉精| 亚洲国产精品嫩草影院| 亚洲综合日韩中文字幕v在线| 欧美日韩精品三区| 在线视频一区二区| 亚洲一区二区三区四区五区午夜| 欧美日韩理论| 狠狠色综合网站久久久久久久| 欧美精品二区三区四区免费看视频| 亚洲国产欧美日韩精品| 国产日韩精品一区二区浪潮av| 欧美日韩国产小视频| 欧美一区2区视频在线观看| 久热成人在线视频| 欧美亚洲三区| 欧美在线视频不卡| 国产精品日日摸夜夜摸av| 国产精品va在线播放我和闺蜜| 亚洲最新中文字幕| 亚洲午夜羞羞片| 亚洲欧美日韩在线| 亚洲精华国产欧美| 午夜久久久久久久久久一区二区| 久久久噜噜噜久久人人看| 一本色道久久88亚洲综合88| 亚洲国产日韩一级| 午夜精品福利在线观看| 国产精品一区久久久久| 国产一区二区三区四区在线观看| 欧美一区1区三区3区公司| 91久久精品国产91性色tv| 亚洲在线国产日韩欧美| 欧美亚洲第一区| 久久天堂av综合合色| 欧美乱人伦中文字幕在线| 亚洲乱码精品一二三四区日韩在线| 亚洲九九爱视频| 亚洲午夜极品| 99re6热在线精品视频播放速度| 欧美日韩一区二区在线视频| 欧美日韩免费在线视频| 在线 亚洲欧美在线综合一区| 狠狠色综合色区| 亚洲高清资源综合久久精品| 狠狠操狠狠色综合网| 国产日韩精品一区观看| 欧美伦理在线观看| 亚洲精品小视频| 久久久精品一区| 久久人人97超碰国产公开结果| 欧美日韩国产免费观看| 欧美好骚综合网| 久久久999精品免费| 国产精品视频成人| 国产精品劲爆视频| 亚洲精品国产品国语在线app| 国产精品超碰97尤物18| 久久一区欧美| 国产午夜精品理论片a级探花| 国产精品久久久久久久7电影| 亚洲视频在线观看| 国产精品久久久久久久久久久久|