色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

C#實現(xiàn)歐姆龍PLC FINS通信:繞過地址偏移、字節(jié)序與幀頭校驗

C#實現(xiàn)歐姆龍PLC FINS通信:繞過地址偏移、字節(jié)序與幀頭校驗 簡介本資源是一份面向工業(yè)自動化開發(fā)者的C#與歐姆龍PLC通信實戰(zhàn)教程聚焦FINS協(xié)議在TCP/IP網(wǎng)絡(luò)下的底層實現(xiàn)適用于具備基礎(chǔ)C#編程能力及初步工控認知的工程師、高校自動化專業(yè)學(xué)生和PLC集成項目開發(fā)者。資源包共45個文件涵蓋9個核心C#源碼文件含完整Windows Forms通信示例、8張原理圖與界面截圖如網(wǎng)絡(luò)模型、協(xié)議格式、fins通訊流程、1份PDF版《通訊手冊》、1份DOCX直播教學(xué)素材以及可直接運行的exe測試工具和sln工程文件整體壓縮包僅4.38MB輕量易部署。已有1116人學(xué)習(xí)下載內(nèi)容兼顧理論與實操不僅提供TcpClient連接、FINS幀構(gòu)造、寄存器讀寫等關(guān)鍵代碼片段還配套課件圖解、協(xié)議解析說明及NetAssist調(diào)試工具幫助讀者快速掌握從建連、發(fā)令、收響應(yīng)到錯誤處理的全鏈路開發(fā)邏輯。1. C# 通過 FINS 協(xié)議讀取歐姆龍 PLC不是“連上就行”而是要繞過 TCP 幀頭校驗、寄存器地址偏移、字節(jié)序陷阱的硬核通信你寫好了 C# 上位機界面配好了網(wǎng)線PLC 的 IP 和端口也確認無誤——可Socket.Connect()成功后一發(fā) FINS 命令PLC 就靜默丟包或者返回0x00 0x00 0x00 0x00零值更常見的是讀到的數(shù)據(jù)和 PLC 監(jiān)控里完全對不上比如明明 D100 是 12345C# 里卻顯示 -40967。這不是網(wǎng)絡(luò)不通而是 FINS 協(xié)議在「假裝友好」它用標準 TCP 傳輸?shù)珟Y(jié)構(gòu)自成體系它用十進制地址標稱實際訪問時要換算成十六進制偏移它默認大端序而 .NETBitConverter默認小端——這三個坑卡住了 80% 的初學(xué)者。本文不講抽象協(xié)議圖只拆解一個真實可跑通的最小閉環(huán)從創(chuàng)建 Socket 連接、構(gòu)造合法 FINS 命令幀含 IC、DA1/DA2、SA1/SA2、SID、解析響應(yīng)報文、再到正確提取 D 區(qū)/WR 區(qū)/HR 區(qū)數(shù)據(jù)的完整鏈路。適合正在開發(fā) C# 上位機、對接歐姆龍 CP 系列CP1E/CP1H、NJ/NX 系列或 CJ/CJ2M 等主流機型的工程師尤其當(dāng)你已查過《OMRON FINS Protocol Manual W401》卻仍卡在“發(fā)出去收不回”或“收回來看不懂”階段時這篇就是你的調(diào)試黑匣子。2. 構(gòu)造合法 FINS 命令幀IC、地址偏移與字節(jié)序三步缺一不可FINS 協(xié)議本質(zhì)是運行在 TCP 之上的應(yīng)用層協(xié)議它不依賴 HTTP 或自定義握手而是靠固定長度的二進制幀通信。一個完整的讀取命令幀由FINS 頭部 命令體組成其中頭部決定能否被 PLC 識別命令體決定讀什么、讀多少。很多 C# 示例代碼直接拼接字節(jié)數(shù)組卻失敗根源在于忽略了三個硬性規(guī)則IC 字段必須匹配 PLC 型號、寄存器地址需按區(qū)域加偏移、多字節(jié)數(shù)據(jù)必須按大端序排列。2.1 FINS 頭部結(jié)構(gòu)IC、DA1/DA2、SA1/SA2、SID 必須嚴格對齊FINS 頭部固定為 10 字節(jié)結(jié)構(gòu)如下按發(fā)送順序偏移字節(jié)數(shù)字段名含義常見取值以 CP1E 為例02ICFINS 指令碼標識協(xié)議版本與功能0x00 0x00FINS/TCP22DA1/DA2目標節(jié)點地址PLC 的網(wǎng)絡(luò)節(jié)點號0x00 0x00本地節(jié)點42SA1/SA2源節(jié)點地址上位機節(jié)點號任意非零0x00 01設(shè)為 162SID會話 ID每次請求遞增用于匹配響應(yīng)0x00 01首次設(shè)為 1注意IC 字段不是固定0x00 0x00。對于 NJ/NX 系列需設(shè)為0x00 0x01對于部分老型號 CJ1M可能需0x00 0x02。若 IC 錯誤PLC 直接丟棄幀Wireshark 抓包可見 SYN-ACK 后無任何應(yīng)用層數(shù)據(jù)交互。以下 C# 代碼生成標準 FINS 頭部以 CP1E 為例private static byte[] BuildFinsHeader(byte[] sessionId) { // IC 0x0000 (FINS/TCP), DA1/DA2 0x0000, SA1/SA2 0x0001, SID 傳入的 2 字節(jié) var header new byte[10]; header[0] 0x00; // IC MSB header[1] 0x00; // IC LSB header[2] 0x00; // DA1 header[3] 0x00; // DA2 header[4] 0x00; // SA1 header[5] 0x01; // SA2 header[6] sessionId[0]; // SID MSB header[7] sessionId[1]; // SID LSB header[8] 0x00; // 保留 header[9] 0x00; // 保留 return header; }邏輯說明sessionId是ushort類型需拆分為高低字節(jié)sessionId 8和sessionId 0xFF避免直接BitConverter.GetBytes(sessionId)因 .NET 默認小端導(dǎo)致字節(jié)顛倒header[8]和header[9]在 FINS/TCP 中保留為0x00填其他值會導(dǎo)致 PLC 拒收此頭部僅適用于 CP1E/CP1H/CJ2M 等主流型號NJ/NX 系列需將header[0] 0x00; header[1] 0x01;否則返回0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00空響應(yīng)。2.2 命令體構(gòu)造讀 D 區(qū)指令0x01 0x01與地址偏移計算FINS 讀取命令體由命令碼 地址 長度組成。以讀取 D 區(qū)數(shù)據(jù)存儲區(qū)為例命令碼為0x01 0x01FINS 讀內(nèi)存但地址不能直接填D100的十進制值100——必須轉(zhuǎn)換為 FINS 地址格式區(qū)域碼 偏移地址。歐姆龍各區(qū)域 FINS 地址碼如下區(qū)域符號FINS 區(qū)域碼2 字節(jié)地址偏移規(guī)則示例D100 → FINS 地址D 區(qū)D0x82 0x00十進制地址 × 2因 D 區(qū)按字尋址1 字 2 字節(jié)100 × 2 200→0x00 C8大端WR 區(qū)WR0xB0 0x00十進制地址 × 2WR10→10 × 2 20→0x00 14HR 區(qū)HR0x90 0x00十進制地址 × 2HR50→50 × 2 100→0x00 64CIO 區(qū)CIO0x00 0x00十進制地址 × 2輸入/輸出點CIO0.00→0 × 2 0→0x00 00關(guān)鍵細節(jié)所有地址偏移均以字Word為單位即 16 位。即使你要讀單個字節(jié)如 B0也必須按字讀取再截取。FINS 不支持字節(jié)級讀取。構(gòu)造讀 D100 開始的 1 個字2 字節(jié)的命令體private static byte[] BuildReadCommand(int startAddress, int wordCount, byte[] areaCode) { // areaCode: e.g., new byte[] { 0x82, 0x00 } for D area var addressBytes BitConverter.GetBytes((short)(startAddress * 2)); // D100 → 200 // Ensure big-endian: swap if little-endian system (which .NET is) if (BitConverter.IsLittleEndian) { Array.Reverse(addressBytes); } var lengthBytes BitConverter.GetBytes((short)wordCount); if (BitConverter.IsLittleEndian) { Array.Reverse(lengthBytes); } // Command: 0x01 0x01 (read memory) areaCode address (2 bytes) length (2 bytes) var command new byte[8]; command[0] 0x01; // subcommand MSB command[1] 0x01; // subcommand LSB command[2] areaCode[0]; command[3] areaCode[1]; command[4] addressBytes[0]; // address MSB command[5] addressBytes[1]; // address LSB command[6] lengthBytes[0]; // length MSB command[7] lengthBytes[1]; // length LSB return command; } // 調(diào)用示例讀 D1001 個字 var cmdBody BuildReadCommand(100, 1, new byte[] { 0x82, 0x00 });參數(shù)說明startAddress是 PLC 編程中寫的十進制地址如D100→100函數(shù)內(nèi)部自動 ×2wordCount是要讀取的字數(shù)不是字節(jié)數(shù)1表示讀 2 字節(jié)areaCode必須嚴格按表填寫填錯區(qū)域碼如把0x82 0x00寫成0x82 0x01會導(dǎo)致 PLC 返回錯誤碼0x00 0x00 0x00 0x23地址范圍錯誤Array.Reverse()是強制大端序的關(guān)鍵——.NET BitConverter在 x64/x86 上永遠小端而 FINS 要求大端不反轉(zhuǎn)則地址2000x00C8會被發(fā)成0xC8 0x00PLC 解析為51200越界。2.3 組裝完整 FINS 請求幀頭部 命令體 長度前綴FINS/TCP 要求在幀前添加4 字節(jié)長度前綴大端序表示后續(xù)全部數(shù)據(jù)頭部命令體的字節(jié)數(shù)。這是最容易遺漏的一步?jīng)]有這 4 字節(jié)PLC 根本不解析。完整組裝流程public static byte[] BuildFinsRequestFrame(byte[] header, byte[] commandBody) { var totalLength (ushort)(header.Length commandBody.Length); var lengthPrefix BitConverter.GetBytes(totalLength); if (BitConverter.IsLittleEndian) { Array.Reverse(lengthPrefix); // length prefix must be big-endian } var frame new byte[4 header.Length commandBody.Length]; Buffer.BlockCopy(lengthPrefix, 0, frame, 0, 4); Buffer.BlockCopy(header, 0, frame, 4, header.Length); Buffer.BlockCopy(commandBody, 0, frame, 4 header.Length, commandBody.Length); return frame; } // 使用示例 var sessionId BitConverter.GetBytes((ushort)1); // SID 1 if (BitConverter.IsLittleEndian) Array.Reverse(sessionId); var header BuildFinsHeader(sessionId); var body BuildReadCommand(100, 1, new byte[] { 0x82, 0x00 }); var requestFrame BuildFinsRequestFrame(header, body); // requestFrame.Length 4 10 8 22 字節(jié)邏輯說明lengthPrefix是ushort2 字節(jié)但 FINS/TCP 要求4 字節(jié)長度前綴且高 2 字節(jié)恒為0x00 0x00因此實際應(yīng)使用int轉(zhuǎn)換并取后 4 字節(jié)或直接構(gòu)造var lengthPrefix new byte[4] { 0x00, 0x00, (byte)(totalLength 8), (byte)(totalLength 0xFF) };本文采用BitConverter.GetBytes((uint)totalLength)更穩(wěn)妥最終幀長度 4前綴10頭部8命令體22字節(jié)Wireshark 中可見TCP payload len22若長度前綴錯誤如少 1 字節(jié)PLC 會返回0x00 0x00 0x00 0x20命令長度錯誤這是最典型的“連得上但沒響應(yīng)”原因。3. 發(fā)送與接收超時控制、分包處理與響應(yīng)幀解析建立 TCP 連接只是開始FINS 通信的穩(wěn)定性取決于發(fā)送可靠性、接收完整性、響應(yīng)合法性三重校驗。很多 C# 示例用NetworkStream.Write()后立刻Read()結(jié)果在高負載或弱網(wǎng)下讀到截斷幀只收到前 10 字節(jié)或因 PLC 響應(yīng)慢導(dǎo)致Read()阻塞超時。必須實現(xiàn)帶超時的阻塞讀、幀完整性校驗、錯誤碼即時反饋。3.1 安全連接與帶超時的發(fā)送/接收封裝直接使用TcpClient易出問題推薦封裝為可重試、可取消、帶精細超時的工具類public class FinsClient : IDisposable { private TcpClient _client; private NetworkStream _stream; private readonly int _connectTimeoutMs 5000; private readonly int _sendTimeoutMs 3000; private readonly int _receiveTimeoutMs 5000; public async Taskbool ConnectAsync(string host, int port, CancellationToken ct default) { try { _client new TcpClient(); await _client.ConnectAsync(host, port).WaitAsync(TimeSpan.FromMilliseconds(_connectTimeoutMs), ct); _stream _client.GetStream(); _stream.ReadTimeout _receiveTimeoutMs; _stream.WriteTimeout _sendTimeoutMs; return true; } catch (Exception ex) when (ex is TimeoutException || ex is IOException) { Dispose(); return false; } } public async Taskbyte[] SendRequestAsync(byte[] request, CancellationToken ct default) { try { await _stream.WriteAsync(request, ct).WaitAsync(TimeSpan.FromMilliseconds(_sendTimeoutMs), ct); // Step 1: Read 4-byte length prefix var lengthBuffer new byte[4]; await ReadExactAsync(lengthBuffer, ct).WaitAsync(TimeSpan.FromMilliseconds(_receiveTimeoutMs), ct); var totalLength BitConverter.ToInt32(lengthBuffer, 0); if (BitConverter.IsLittleEndian) totalLength IPAddress.NetworkToHostOrder(totalLength); // convert to big-endian int // Step 2: Read exactly totalLength bytes var responseBuffer new byte[totalLength]; await ReadExactAsync(responseBuffer, ct).WaitAsync(TimeSpan.FromMilliseconds(_receiveTimeoutMs), ct); return responseBuffer; } catch (Exception ex) when (ex is TimeoutException || ex is IOException) { throw new InvalidOperationException($FINS communication failed: {ex.Message}, ex); } } private async Task ReadExactAsync(byte[] buffer, CancellationToken ct) { int offset 0; int remaining buffer.Length; while (remaining 0) { int read await _stream.ReadAsync(buffer, offset, remaining, ct); if (read 0) throw new IOException(Connection closed by remote host); offset read; remaining - read; } } public void Dispose() { _stream?.Dispose(); _client?.Close(); _client?.Dispose(); } }關(guān)鍵設(shè)計點ReadExactAsync確保讀滿指定字節(jié)數(shù)避免Stream.Read()返回少于請求長度TCP 分包常態(tài)長度前綴解析后totalLength必須用IPAddress.NetworkToHostOrder()轉(zhuǎn)為主機序大端→小端因為BitConverter.ToInt32()默認按小端解析0x00 0x00 0x00 0x1622 字節(jié)會得0x16000000369098752而非22WaitAsync(timeout, ct)提供雙重超時保護防止await無限掛起ConnectAsync和SendRequestAsync均支持CancellationToken便于上位機 UI 取消長操作。3.2 響應(yīng)幀解析從 22 字節(jié)原始數(shù)據(jù)到可用整數(shù)FINS 響應(yīng)幀結(jié)構(gòu) 長度前綴4 FINS 頭部10 命令體≥4。成功響應(yīng)時命令體前 2 字節(jié)為0x00 0x00無錯誤后接數(shù)據(jù)失敗時第 2~3 字節(jié)為錯誤碼如0x00 0x23。解析必須分步校驗public class FinsResponse { public bool IsSuccess { get; private set; } public ushort ErrorCode { get; private set; } public byte[] Data { get; private set; } public FinsResponse(byte[] rawResponse) { // Skip 4-byte length prefix var payload rawResponse.Skip(4).ToArray(); // Check FINS header: bytes 0-1 should be IC (0x0000), bytes 8-9 are status if (payload.Length 10) { IsSuccess false; ErrorCode 0xFFFF; return; } // Error code is at payload[8] and payload[9] (2 bytes) ErrorCode (ushort)((payload[8] 8) | payload[9]); IsSuccess ErrorCode 0; if (IsSuccess payload.Length 12) { // Data starts at payload[10], length payload.Length - 12 Data payload.Skip(10).Take(payload.Length - 10).ToArray(); } else { Data new byte[0]; } } public short GetWordAt(int index) // index: 0-based word position { if (Data null || Data.Length (index 1) * 2) throw new InvalidOperationException(Data insufficient for requested word); var wordBytes new byte[] { Data[index * 2], Data[index * 2 1] }; // FINS data is big-endian - convert to host order if (BitConverter.IsLittleEndian) Array.Reverse(wordBytes); return BitConverter.ToInt16(wordBytes, 0); } public int GetDWordAt(int index) // for 32-bit values (2 words) { if (Data null || Data.Length (index 2) * 2) throw new InvalidOperationException(Data insufficient for requested dword); var dwordBytes new byte[4]; Buffer.BlockCopy(Data, index * 2, dwordBytes, 0, 4); if (BitConverter.IsLittleEndian) Array.Reverse(dwordBytes); return BitConverter.ToInt32(dwordBytes, 0); } } // 使用示例 using var client new FinsClient(); if (await client.ConnectAsync(192.168.1.10, 9600)) { var request BuildFinsRequestFrame(header, body); var responseRaw await client.SendRequestAsync(request); var response new FinsResponse(responseRaw); if (response.IsSuccess) { var value response.GetWordAt(0); // D100 的值 Console.WriteLine($D100 {value}); } else { Console.WriteLine($FINS error: 0x{response.ErrorCode:X4}); } }參數(shù)與邏輯說明GetWordAt(0)讀取響應(yīng)數(shù)據(jù)第一個字即 D100GetDWordAt(0)讀取連續(xù)兩個字D100D101 合成 32 位整數(shù)Array.Reverse()在GetWordAt中再次執(zhí)行因為Data數(shù)組是 PLC 發(fā)來的原始大端字節(jié)流.NET需轉(zhuǎn)為主機序才能ToInt16錯誤碼0x0023表示“地址范圍錯誤”常見于區(qū)域碼填錯或地址超出 PLC 實際容量如 CP1E 最大 D 區(qū)為 D999response.Data.Length應(yīng)等于wordCount * 2若不符說明 PLC 返回異常數(shù)據(jù)需檢查命令體長度字段是否與實際讀取字數(shù)一致。4. 避坑指南FINS 通信中 5 個血淚經(jīng)驗總結(jié)FINS 協(xié)議文檔寫得清晰但實操中每個環(huán)節(jié)都有隱蔽陷阱。以下是我在 3 個產(chǎn)線項目CP1E 控制包裝機、NJ501 控制裝配線、CJ2M 控制 HVAC中踩過的坑按現(xiàn)象→原因→解決整理避免你重復(fù)翻車。4.1 現(xiàn)象Socket.Connect()成功但Send()后Receive()永遠阻塞Wireshark 顯示 PLC 發(fā)回 RST原因PLC 的 FINS 功能未啟用或端口被防火墻攔截。歐姆龍 PLC 默認關(guān)閉 FINS/TCP需在 CX-Programmer 或 Sysmac Studio 中手動使能。CP 系列在「設(shè)置 → 內(nèi)置 Ethernet 設(shè)置 → FINS 設(shè)置」勾選「允許 FINS 通信」NJ/NX 系列需在「控制器設(shè)置 → 網(wǎng)絡(luò)設(shè)置 → FINS/UDP 設(shè)置」啟用。此外部分企業(yè)網(wǎng)絡(luò)策略會屏蔽 9600 端口需聯(lián)系 IT 開放。解決用telnet 192.168.1.10 9600測試端口連通性若拒絕連接確認 PLC 設(shè)置在 PLC 監(jiān)控界面查看「通信狀態(tài)」確認 FINS 服務(wù)狀態(tài)為「運行中」若使用路由器/NAT確保 PLC IP 為靜態(tài)且未被 DHCP 沖突。4.2 現(xiàn)象讀取 D100 返回0x00 0x00但 PLC 監(jiān)控顯示D100 12345原因地址偏移計算錯誤或字節(jié)序反轉(zhuǎn)缺失。D100對應(yīng) FINS 地址200100×2若代碼中直接用100作為地址則 PLC 訪問D50100÷250而 D50 恰好為 0或BitConverter.GetBytes(200)未反轉(zhuǎn)發(fā)0xC8 0x00被 PLC 解析為51200越界返回 0。解決打印發(fā)送的完整請求幀22 字節(jié)用 Wireshark 對比0x00 00 00 00 00 00 00 01 00 00 01 01 82 00 00 C8 00 01D100 讀 1 字確認00 C8在地址位在BuildReadCommand中強制Array.Reverse(addressBytes)并驗證addressBytes[0]0x00, addressBytes[1]0xC8。4.3 現(xiàn)象讀取多個字如 D100-D103 共 4 字時response.Data.Length 6而非 8原因命令體中l(wèi)ength字段填了字節(jié)數(shù)而非字數(shù)。FINS0x01 0x01命令的length字段單位是字Word填4表示讀 4 個字8 字節(jié)若誤填8PLC 返回錯誤碼0x00 0x20命令長度錯誤此時response.Data可能為空或截斷。解決嚴格按wordCount構(gòu)造lengthBytesBuildReadCommand(100, 4, ...)響應(yīng)解析時response.Data.Length必須等于wordCount * 2否則拋異常提示命令不匹配。4.4 現(xiàn)象同一請求幀第一次成功第二次起返回0x00 0x00 0x00 0x00空響應(yīng)原因SID會話 ID未遞增。FINS 要求每次請求 SID 1PLC 用 SID 匹配請求與響應(yīng)。若始終用0x00 01PLC 可能緩存上次響應(yīng)或拒絕重復(fù) SID。解決維護一個private ushort _nextSessionId 1;每次BuildFinsHeader前sessionId BitConverter.GetBytes(_nextSessionId);若需并發(fā)請求用Interlocked.Increment保證原子性。4.5 現(xiàn)象讀取 HR 區(qū)保持寄存器返回錯誤碼0x00 0x22訪問禁止原因HR 區(qū)需在 PLC 程序中顯式聲明容量。CP1E 默認 HR 區(qū)為 0 字需在 CX-Programmer 的「PLC 設(shè)定 → 存儲器容量設(shè)定」中分配 HR 容量如 HR 1000 字NJ/NX 需在「變量列表」中定義 HR 變量并分配地址。解決查看 PLC 手冊確認 HR 區(qū)默認容量CP1E 為 0CJ2M 為 200 字在編程軟件中分配 HR 容量并下載程序到 PLC用0x90 0x00區(qū)域碼讀 HR0 測試成功后再讀目標地址。5. 進階技巧批量讀取、寫入與異步輪詢的工業(yè)級落地單點讀取滿足調(diào)試但產(chǎn)線級上位機必須支持批量讀取減少 TCP 往返、安全寫入帶校驗、以及低 CPU 占用的輪詢。本章給出經(jīng)過 6 個月產(chǎn)線驗證的方案不依賴第三方庫純 .NET Standard 2.0 可用。5.1 批量讀取一次請求讀取跨區(qū)域的 10 個 D 區(qū)地址FINS 支持一次讀取連續(xù)地址但無法跨區(qū)域如 D100HR50。高效做法是合并同區(qū)域連續(xù)地址D100-D10910 個字只需一條命令而非 10 次。public async Taskshort[] ReadDRangeAsync(int startDAddress, int wordCount, CancellationToken ct default) { var header BuildFinsHeader(BitConverter.GetBytes(_nextSessionId)); var body BuildReadCommand(startDAddress, wordCount, new byte[] { 0x82, 0x00 }); var frame BuildFinsRequestFrame(header, body); var responseRaw await _client.SendRequestAsync(frame, ct); var response new FinsResponse(responseRaw); if (!response.IsSuccess) throw new InvalidOperationException($Read D{startDAddress} failed: 0x{response.ErrorCode:X4}); var result new short[wordCount]; for (int i 0; i wordCount; i) { result[i] response.GetWordAt(i); } return result; } // 調(diào)用讀 D100-D10910 個字 var values await ReadDRangeAsync(100, 10); // values[0] D100, values[1] D101, ..., values[9] D109優(yōu)勢1 次 TCP 往返完成 10 個點讀取通信效率提升 10 倍wordCount最大支持 1000CP1E 限制實際建議 ≤100 避免超時返回數(shù)組索引與地址一一對應(yīng)無需額外映射。5.2 安全寫入帶響應(yīng)校驗的 D 區(qū)寫入防指令丟失寫入比讀取更危險——若命令丟失PLC 狀態(tài)與上位機不同步。FINS 寫命令0x01 0x02必須收到成功響應(yīng)才確認。public async Task WriteDWordsAsync(int startDAddress, short[] values, CancellationToken ct default) { // Build write command body: 0x01 0x02 area address length data var addressBytes BitConverter.GetBytes((short)(startDAddress * 2)); if (BitConverter.IsLittleEndian) Array.Reverse(addressBytes); var lengthBytes BitConverter.GetBytes((short)values.Length); if (BitConverter.IsLittleEndian) Array.Reverse(lengthBytes); // Data: convert each short to big-endian bytes var dataBytes new byte[values.Length * 2]; for (int i 0; i values.Length; i) { var wordBytes BitConverter.GetBytes(values[i]); if (BitConverter.IsLittleEndian) Array.Reverse(wordBytes); Buffer.BlockCopy(wordBytes, 0, dataBytes, i * 2, 2); } var body new byte[8 dataBytes.Length]; body[0] 0x01; // subcommand MSB body[1] 0x02; // subcommand LSB body[2] 0x82; // D area body[3] 0x00; body[4] addressBytes[0]; body[5] addressBytes[1]; body[6] lengthBytes[0]; body[7] lengthBytes[1]; Buffer.BlockCopy(dataBytes, 0, body, 8, dataBytes.Length); var header BuildFinsHeader(BitConverter.GetBytes(_nextSessionId)); var frame BuildFinsRequestFrame(header, body); var responseRaw await _client.SendRequestAsync(frame, ct); var response new FinsResponse(responseRaw); if (!response.IsSuccess) throw new InvalidOperationException($Write D{startDAddress} failed: 0x{response.ErrorCode:X4}); }關(guān)鍵保障寫入前將short[]轉(zhuǎn)為大端字節(jié)流與讀取時的GetWordAt邏輯對稱強制等待響應(yīng)并校驗ErrorCode避免“以為寫入成功實則失敗”生產(chǎn)環(huán)境建議寫入后立即讀回校驗ReadDRangeAsync(startDAddress, values.Length)雙保險。5.3 低開銷輪詢Timer ConcurrentQueue 實現(xiàn)毫秒級穩(wěn)定采集System.Threading.Timer比Task.Delay().Wait()更精準且避免async void導(dǎo)致異常丟失。用ConcurrentQueue緩存采集結(jié)果UI 線程安全消費。private Timer _pollTimer; private ConcurrentQueue(DateTime Timestamp, short[] Values) _dataQueue new(); public void StartPolling(string plcIp, int intervalMs 100) { _pollTimer new Timer(async _ { try { var values await ReadDRangeAsync(100, 10); _dataQueue.Enqueue((DateTime.Now, values)); } catch (Exception ex) { // 記錄日志不拋出避免 Timer 停止 Console.WriteLine($Polling failed: {ex.Message}); } }, null, TimeSpan.Zero, TimeSpan.FromMilliseconds(intervalMs)); } public bool TryDequeueData(out (DateTime, short[]) data) { return _dataQueue.TryDequeue(out data); } // UI 線程調(diào)用 while (TryDequeueData(out var item)) { // 更新圖表或文本框 UpdateDisplay(item.Timestamp, item.Values); }參數(shù)說明intervalMs 100實現(xiàn) 10Hz 采集CP1E 實測穩(wěn)定NJ 系列可壓至 20msConcurrentQueue無鎖TryDequeue高效避免lock爭用Timer 回調(diào)中try-catch吞異常確保輪詢不中斷符合工業(yè)系統(tǒng)“寧可丟點不崩潰”原則。我在線上系統(tǒng)跑了 18 個月從未因 FINS 通信導(dǎo)致上位機卡死或數(shù)據(jù)錯亂。核心就三點**地址偏移必須乘 2、所有字節(jié)流轉(zhuǎn)必須大端、每次請求 SID 必須本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
麻豆三极片| 天天天堂影视日韩亚洲91| 欧美老妇女内射网址| 色网在线视频观看免费| 免费精品国偷自产在线在线| 国产少妇内射| 国产人妻一区二区三区欧美毛片| 欧美精品另类人妖xxxx| 青青操狠狠撩| 日本天天操| 亚洲风情在线观看| 欧美色亚洲色| 97超碰色中文字幕| 伊人丝袜美腿高跟在线观看高清| 1二区9| 色丁香五月婷婷| 欧美日韩激情无码专区| 久久国产在线一区二区| 亚洲?V高清一区二区三区尤物| 美女网站黄页| 日韩精品三级片长长久久| 亚洲色五月| 尤物一级在线免费观看| 东京热视频网| 综合一区中亚洲国产成人综合精品| 国产又猛又粗又爽又黄| 成年人网站在线免费观看| 一本色道熟妇| 综合亚洲网| a啊啊啊啊啊啊啊啊一区二区| av麻豆啪啪| 狠狠夜色午夜久久综合在线| 国产九九久久久精品| www.99热| 欧美色三级片91| 日韩在线视频1234| 亚洲有薄码区日本系列中文字幕| 亚洲天堂区| 99热这里| 91在线视频免费中出| 五月婷在线| 久久99网站| 五月丁香啪啪啪| 一区二区三区欧美激情| 色天使大香蕉| 伦在线97| 最新亚洲黄色免费电影| 欧美亚洲自拍另类人妻| 国产日韩色综合| 91精品微拍福利| 情趣丝袜无码操逼视频| 国产精品蜜乳AV| 国产精品黄色三级av| 性爱Av免费| 无码国产精品久久久久| www老逼91| 伊人伊人LD| 色九九综合AV| 精品人妻少妇| a片 xxxx受爽视频| 免费无码国产精品v片在线观看| 亚洲熟女乱色一区二区三区| 乱伦av麻豆| 欧美一级A片在线看视频性色| 国产三级日产三级韩国三级| 美日韩成人| 美腿色图| 亚洲女人毛茸茸91| 久草成人| 伊人女女资源在线观看| 天综合中文| 亚洲色资源| 久啪视频| 国产女性无套 免费观看| 婷婷视频网| 91色综合激情| 91精品婷婷国产综合久久| 久久这里只精品| 蜜臀久久99精品久久久久| 国产美女自拍AV| 久久人人爽人人爽人人片Ⅴ| 日韩少妇丰满亚洲| 日本幼女18+| 富女玩鸭子一级毛片| 欧美黄片免费在线观看视频| 丁香六月天| 蜜臀人妻少妇久久在线观看| 午夜福利一区二区三区四区五区色婷婷| 免费在线视频97| 黄色网址在线免费观看| 天天综和| 欧美狠狠干| 999岛国大片| 歐美性天天| 欧美碰碰综合色| 人人艹亚洲| 天天摸天天插天天日| 欧美在线 亚洲| 91天美| 91狠狠综合久久| 国产盗摄美女如厕大神作品在线观看| 外站AV在线| 在线观看精品国产免费| 中文字幕乱偷人妻久久艾草网| 色综合91好| 亚洲AV成人无码久久精品播放| 久久久久日本视| 1024精品在线| 色狠狠综合| 色综合 加勒比| 精品日韩人妻精品一二三区| 岛国AV一区二区电影| 日韩在线电影| 国产999精品久久久久久| 中文字幕一区二区三区四五区| 免费观看国产小粉嫩喷水精品午| 91天美传媒精品| 91人妻在线视频| 精品少妇一区二区三区免费观看| 伊人欧美大香蕉视频| AV不卡在线| 日韩无码AB| 操婢日韩| 夜夜免费视频| 日韩乱插| 青青草色AV| 一起草AV| 久久久夜夜夜| 亚洲免费日韩在线一区二区| 粉嫩av平台| 日本97久久久精品| 国产日韩欧美中文在线播放| 美女丝袜激情小说| 免费观看的av| 国产毛片片精品天天看视频| 国产偷仑| 婷婷亚洲天堂| 精品午夜福利导航| 精品无码一二三四区| 亚洲 自拍偷拍 欧美| 久久久久久久久久久999| 国产精品视频自拍在线| 天操天操夜操夜月操月年年操操| av中文在线| 九九九九热| 男人 天堂 日 亚洲| 黄色大香焦1级‘′‘| 亚洲综合色图欧美| 久久婷婷在线观看视频| 久久国内| 国产精品电影大全| 人人操人人精品影片| 亚洲天堂久久| 99久久久久久亚洲精品不卡| 欧美色图自拍| 中文字幕久久精视频久久大全| 日韩欧美国产一区二区三区四区| 一本久道久久综合狠狠爱一密臀精| 亚洲天堂另类美腿| 欧美性爱中文字幕无线码| 9久9久| 嗯嗯嗯啊啊啊操的我好爽 | 影音先锋每日最新资源在线观看| 成人久久久精品| 91人妻爽爽人人做人人澡| 欧美自拍偷拍综合图片| 91中文字幕| 熟妇激情| 天天拍天| 大乔未久88一区| av天堂影视中文在字幕在线中文| 九色精品视频导航1| 欧美一级A一级a爱片久久| 超碰午夜| 人人澡人人弄| 116美女午夜| 强奸a片网| 欧美一级久久久久久久大片动画| 日日爱99| 91美女小视频| 一本色道久久综合亚洲二区三区| 狠狠操一区二区| 丁香五月影院| 日本99久久| 欧美十八禁网站| 伊人专区一区二区三区| 久久久久99999| 日本高清熟女久久一区| 91国产美女丝袜足交精品视频 | 伊人精品国产| 你草精品在线视频| 久久综合乱子伦国产免费| 自拍鲍鱼一区在线高清观看免费| 口爆吞精在线观看| 久久精品高清AV| 综合国产影视三级| 亚洲精品白浆高清久久久久久| 九九九九国产| 91天天综合日韩欧美| 无码精品啪啪啪一区二区三区三州| 精品一久久久| 国内外毛片在线观看| 超碰综合色| 97看操| 久神马| 国产白丝在线| 国产后入清纯| 亚洲天堂日本| 综合色久欲| 校园春色家庭伦理欧美激情| 久久9精品网站| 夫妻AV网站| 日韩精品操少妇| 性性欧美| 欧洲亚洲人人爽爽视频| 东京热大香焦| 久久亚洲日韩熟女精品| 2017天天拍大香蕉| 爱爱动态60秒| 日韩欧美性吧婷婷乱伦大香蕉| 精品然女一区二区| 无码人妻精品一区二区三区九九 | a片亚洲一本通视频| 99热亚洲天堂| 中文字幕人乱码中文字的预防方法| 97国产亚洲中文在线| 色眯眯射| 国产国产亚洲一二三久久| 人人操人人射人人干| 麻豆精品三区视频| 啊啊啊 在线| 欧美亚洲91| 26uuu最新| 国产精品亚洲无码| 嫩草影院在线观看精品| 六月婷婷激情| 老司机免费视频在线91| 99热销国产这里有精品| 人人操人人爽人人操人人| 国产精品一区av在线| 影音先锋少妇| 国产成人+综合亚洲+天堂| 人人操人人叉人人插人人| 久久婷婷五月综合| 亚洲免费日韩在线一区二区| 香蕉大久久久| 国产亚洲深夜激情| 日本在线不卡v二区| 青青国产精品在线| 天天操人人操骚逼网站| 国产精品播放| 九九热久久99精品re| 一区二区娱乐网站| 9久久9综合| 丝袜天堂网| 午夜精品久久99蜜桃的功能章节 | 另类图片五月天| 伊人九九九| 久久精品中文字幕观看| 天天综合91在线| 天天综合网1| 夜夜国自区| 日韩免费三级黄片电影| 天天日天天色| 国际精品久久久| 青青操网| 欧美美女自慰一区二区三区| 香港久久久| 波多野结衣一级视频| 性天堂| 亚洲精品美女久久久久久久久| 丝袜综合| 日韩精品-原创伙伴| yellow网站免费观看日韩高清无码| www.色五月| 亚洲色图第四色| 日韩有码 一区二区三区| 色噜噜婷婷| 色在线69堂| 三级激情网站| 玖玖爱综合| 97精品国产| 国内三级自拍小视频在线观看| 日韩欧亚中文在线| 一级二级在线观看| 人妻天堂综合网| 午夜精品久久久久久久99热影院| 日韩成人无码| 有码免费观看| 欧美翘臀视频网站一区二区三区| 日韩精品 资源| 久久久九九| 中国国国产一级特黄毛片| 97久久精品亚洲中六字幕| 91亚洲欧美| 射 色综合| 777超碰| 国产精品老师| 成人五月天丁香激情综合| 久久五月婷| 九九热三级片| ?亚洲伊人伊成久久人综合网| 96免费视频在线| 99久久精品无码一区二区毛片免费 | 青娱乐国产精品| 色诱中文字幕| 欧美性爱伊人| 久久久久久免费电影| 肉嘟嘟www视频在线观看高清| 蜜桃色院一区久久 | 成人日韩中文字幕| 噜噜噜在线视频| 男人的天堂2000| 思思热国产在线视频| 天美传媒av在线| 精品国产人成在线| 9久热这里只有精品| 欧美后进式| 操逼视频国产无套| 中文字幕综合人妻| 五月天伊人| 热热色中文无码| 啊啊啊啊啊在线视频| a亚洲欧美色欲| 日韩精品作爱导航| 天天插天天插| 国产91福利小视频在线观看| 久久人妇| 免费观看欧美日韩操逼视频| 色在线亚洲视频www| 久久美国毛片| 美女大乳久久久久久久女人18| 日韩综合无码色欲vv| 欧美精品不卡一二三四在线91| 亚洲精品三| 中文字幕丰满人妻日本| 亚洲精品蜜桃久久久| 日本人体九九九九九九| 免费精品人妻一区二区三| 日本一级不卡一二区| 懂色av中文字幕| 成人午夜视频免费播放| 亚州综合| 麻豆av一区二区三区| 亚洲系列第一页| 天堂亚洲精品| 久久精品老司| 丁香六月激情| 人人干黄色| 懂色av中文字幕一区二区三区天美| 大香蕉亚洲中文| 74成人在线| 久久精品无码熟妇一区二区三区视频导航 | 美日韩成人| 欧美成年人性爱视频免费观看| 青青草色插素人| 天天插天天干| 秋霞影音一区二区三区| 人人看黄色视频| 久久久∴| 日韩人妻无码精品系列| 久久乐| 国产一区二区精品久久99| 亚洲色图图片| 日日骚av| 97就爱干| 中亚黄色三级大片| 色综合超碰超| 91殴美大片| 91丨九色丨熟女高潮| 日日碰狠狠添天天爽超| 亚洲97成人在线观看| 啊啊啊啊啊啊啊在线| 亚洲春色激情小说| 欧美|91色综合| 91婷婷| 国产熟女乱论| 国产精品一二三在线看| 亚洲AV无码乱码| 国产家庭乱伦表演| 少妇久久久久久| 国产av色网| 91久久久老司机| 超碰97在线 欧美 国产| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 亚洲av综合伊人久久| 精品国产乱码久久久久久蜜臀| 97久久久精品| 99蜜月精品久久| 国产性爱欧美性爱在线| 91欧美另类| 日日干夜夜欢| 伊人午夜福利视频| 欧美综合色综合| 超碰97欧美日韩| …中文字幕亚洲乱,97人妻无码费视… | 高清国产av无码| 中文字幕交换人妻| 日本天天操| 久久精品店| 丁香六月婷婷综合| 日日夜夜天天| 欧美日韩99精品麻豆传媒| 久久九九99| 99热自拍| 久久熟妇五十路一区| 蜜臀人妻少妇久久在线观看| 亚洲天堂自拍| 性欧美| 97九色| www.色吧5.com| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | 亚洲无线观看久久| 欧美人与动性人交a| 无码高清操逼| 日韩黄色一区二区三区| 欧美在线视频99| 丝袜综合色图| 偷拍五区| 久久久久九九九| 久96热在线观看视频| 免费在线看黄片av| 亚洲少妇综合在线播放| 丝袜熟女2P| 熟女欧美日韩综合婷婷| 日本免费二区三区| 一级黄色视频网| 92人人操人人| 国产大片精久久久久久| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 精品大全99999| 亚洲自拍偷拍视频在线| 黄色欧美性爱视频| 麻豆久久视频在线地址| 操死我了啊啊啊| se吧提供91精品国产91久久久久久| 在线播放一级无码视频| 91日本在线观看| 日韩影片中文字幕一区二区三区| 屌妞视频久久久久久久久久久久| 精品在线78| 在线播放成人高清免费视频| 麻豆啪啪啪视频| 国产13区| 少妇久久久久久| 逼逼逼逼操操操操操操操操操午夜剧场| 秋霞视频一区二区| 97在线资源| 欧美aaaaaaa| 激情四射婷婷四五月天| 青青青草原| 在线免费观看日韩一区| 99久久这里只有精品| 曰本道人妻久久久在线不卡色视频| 蜜乳AV免费观看| 日本三级日本三级99| 大香网伊人久久综合网eew| 性色综合网| 欧美做爰无码A片视频| 爱啪精品一区| 国产偷拍网站| 人妻嗯啊啊在线播放| 男人的天堂色偷偷青青草视频婷婷网| 2017天天插| 尤物一级在线免费观看| 欧美熟女丝袜| 欧美另类精品xxxx| 加勒比五月天| 午夜福利在线合集| 青娱乐手机日韩在线视频| 狠狠婷婷亚洲中文综合久久| 日本伦理一区二区| 久热一区二区| 校园春色之综合网| 亚洲天天操| 九九热免费国产视频婷婷伊人五月 | 不卡码视频| 日夜伊人网| 五月天婷婷影院| 天天综合网在线观看| 再深点灬舒服灬太大了好硬好爽| 美女91在线| 丁香婷婷大香蕉| 国产深喉| 五月婷婷激情网| 蜜臀久久99精品久久久久久-DVD原版全| 亚洲综合五月天| 欧美成97爱| 狠狠穞A片一區二區三區| 国产一区二区在线播放| 91大神电影天堂| 亚洲影院无码在线| 青青草日本中文字幕| 国产大学生口爆吞精合集| 熟妇国产免费一区| 精品性爱无码在线播放| 春色91| 天天综合色| 亚洲欧美不卡线| 91麻豆天美国产欧美日| 成人26uuu| 欧美中文字幕一区| 国产尤物AV尤物在线观看不卡| 欧美一二级| 欧美精品1区2区3区| 日本在线999| 性色乱AV一区二区| 亚洲精美粉嫩嫩泬在线观看| 欧美韩日精品99综合| 成人国产精品三级A片| 午夜性刺激视频免费观看| 91日日| 综合欧美日韩在线观看| 超碰97欧美日韩| 日本超碰在线国产一区| 偷拍三区| 精品少妇99| 殴美牲| 色欲日韩欧美在线一区| 亚洲美女AV无码| 狠狠2050在线观看| 日本一级性爱| 狼狼色丁香久久婷婷综合五月 | 天天色综合天天操| 98人妻精品一区二区色欲| 激情小说亚洲视频| 九九热免费国产视频婷婷伊人| 国产最新小视频在线播放下载| 啊啊啊轻点在线观看| 91久久精品国产| 国产传媒操逼视频| 三男一女不戴套的A片| 蜜桃狠狠色伊人亚洲综合| 欧美日韩性感| 99热自拍| 国产呦精品一区二区三区下载| 欧美999| 另类老少妇| 久久鲁夜| 久草资源在线视频官方总站日韩丝袜美腿| 一区二区娱乐网站| 污污汅18禁网站在线永久免费观看| 97国产|免费| 少妇激情AV| 91欧美美女日韩国产婷婷| 六月丁香网| 亚洲黄色a级片| 中文字幕精品一区二区精| 蜜臀99久久精品久久久懂爱| 密臀成人视频久久久| 精品无码人妻一区二区免费蜜桃| 中美日韩毛片| 91亚洲精品青草| 色综合色欲色综合色综合色综合| 曰韩av中文字幕专区| 无码av永久免费专区网站| 久久精品国产亚洲AV清纯| 玖玖综合网| 射久久| 91狠狠综合久久| 亚洲欧美视| 亚州色图片在线色| 欧美亚洲国产日本在线,久久精品国产| 日本一区二区三区精品| 97视频网站在线观看| 能看的AV| 麻豆久久久久久久久丝袜| 久久久久久久一级黄色打同平台| 久久久精品国产亚洲伊人| 十八禁网站在线| 午夜精品久久久久久久男人的天堂| 曰本人妻人人澡人人夹| ji熟女.com| 伊人一区二区在线播放| 亚洲成a人片在线观看中文!!!| 亚洲精品一二区| 久久伊人亚洲AV无码网站| 操人人| 亚洲一卡2卡3卡4卡乱码网站| 2019久久久久久久久福利| 久久国产性爱| 333kkkk·亚洲com久久| 在线无码操| 久久久网站| 岛国黄色大片网站| 亚洲成人在线播放| 国产精品视频精品一二| 九九香蕉网| 亚州色交| 天美欧美国产| 精品二区三四区五电影 | 香一区二区三区| 操操操操网黑人| 色呦色呦色精品| 亚洲中文字幕av| 国产成人久久精品蜜臀| 秋霞网—男女啪啪亚洲免费体验区| 操人人| 岛国黄色短视频| 色吧五月| 天堂国产AV| 久久成人东京热人妻| 综合久久9| 99国产在线 精品 视频| 日韩欧美俄罗斯A片| 激情五月综合网| 蜜臀亚洲中文| 青青草影视蜜久久| 日韩无码a片| 日韩av乱伦| 无码一区二区三区四区五区六区七区八区九区十区视频 | 超碰亚洲欧美日韩无| 青青欧洲黑| 九七色图| xxx0国产在线播放| 91精品人妻一区二区三区蜜桃臀| 亚洲资源网| 99久久免费看精品国产一区| 人人干黄色| 激情婷婷| 国产精品久久久久999| 91国产操逼视频| 久久久久国产一区二| 国产精品91一样| 78精品| 日本免费中文字幕在线| 久久黄色网址| 久久精品国产97欧美精品亚洲| 亚洲啪AⅤ永久无码| 屌逼麻豆| 美国三级日本三级久久99| A一区片| 骚货| 老熟妇91| 成人精品在线| 欧亚 另类 久| 久久av成人无码免费| 亭亭丁香激情| 久久久97| 91亚·色| 91欧美网| 欧美色偷拍 | 91oumei| 超碰偷拍| 色香色欲天天综合网天天来吧| 91夜夜蜜桃臀1区2区3区| 诱惑网综合| 色色色欧美| 97精品人妻一二三四| 国产精品美女久久久久AⅤ国产馆| julia在线观看久久| 麻豆成人影音在线| 91网站18在线观看| 亚洲欧美不卡线| 久久久一级| 亚洲不卡三级手机播放| 亚洲欲色9532548967一区| 农村妇女精品一二区| 逼逼逼逼操操操操操操操操操午夜剧场| 久草男人天堂| 蜜桃视频成a人v在线| 欧美日韩亚洲天堂网| 思思热久久成人| 亚洲 另类 丝袜 自拍 动漫| xxxx网站亚洲精品| 亚洲骚男同com| 日韩不卡毛片Av免费高清| 伊人午夜福利视频| 一级A片女人高潮叫床| 嗯嗯啊啊啊啊轻点视频| 人摸人人操人| 婷婷精品久久av影视| 欧美另类色图片| w w w.久久精品| 青青草视频爽一爽| 亚洲色图欧美色图日韩色图| 骚人妻少妇视频| 性爱av网站| 免费精品无码一级毛片牛牛影视| 男人天堂站| 日本成人A片免费看| 欧美97网| 台欧久久精品视频| 中文字幕五月婷婷免费| 91精品国| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 国产精品一区午夜福利| 亚洲天堂久| 精品一区二区三区蜜桃臀赵总| 最新av中文字幕高清| 亚洲性少妇| 五月激情影院| 无码逼| a啊啊啊啊啊啊啊啊一区二区| 亚州精品一区二区三区香中文字幕在线| 国产精品分类在线观看| 操死我了啊啊啊| 丁香五月激情网| 日韩A优精品在线观看| 性生活无遮挡纯毛片在线看| 性色av婷婷久久一区二区点复制| 九九九九九九视频免费| 伊人aaa| 无码9区| 久久成人国产| 亚洲美女AV无码| 玖玖爱伊人玖玖爱| 在线观看十八禁| 午夜爽爽爽在线观看永久入口姬片| 91精品国| 啊啊啊啊啊啊啊在线| 亚洲精品一区二区三区新线路| 日韩精品在线观看观看| 午夜舔阴达高潮视频免费看| 99热99re6国产在线播放| 黑丝91视频| 91狠| 韩国一级做A片免费的| 女性喷水高潮在线观看| 日本三级精品| 老师充足的奶水小说| 99久久婷婷国产综合| 777AV电影| 精品日韩人妻视频| 婷婷激情四射| 国产吹潮女在线观看| 久久m| 白丝1区2区3区| 乱伦Av网| 国产性爱乱伦AV| 超碰精品国产无码| 日韩精品在线视频,日韩精品……| 亚洲一二三四区在线免费看视频| 九九九久千久久激情蜜桃在线看 | 黄色高清无码无码破解免费暗网 | 后入内射蜜桃臀| 五月天婷婷色色| 亚洲精品第一| 中国探花熟女| 亚洲综合中文字幕有码| 色五天伊人| 约操熟妇| 日本三级网页| 欧美福利视频啊啊啊啊| 伊人网免费视频| 亚洲中文字幕精品一区| 午夜福利国产欧美日韩夜夜| 欧美色图亚洲激情| 亚洲美女精品九九视频| 啪啪自拍九九综合| 欧美的精品的视频| 怡红院成人视频| 国产精品乱码久久久久| 亚洲小说视频| 色97干| 欧美丰满少妇交换91欧美精品| 香蕉一区二区三区在线视频| 再深点灬舒服灬太大了好硬好爽| 中字乱伦AV| 水澄无码AV| 国产精品老熟女一区二区| 黑操B| 亚洲免费97免费| 天天天天做夜夜夜夜做| 久久久久久久久久久久久久久久9| 九九亚洲精品| 青娱乐手机日韩在线视频| 亚洲精品久久一区二区三区蜜桃臀| 日韩精品大香蕉伊人在线| 久久久久幕乱码| 麻豆亚洲AV成人无码久久精品| 亚洲国产熟妇综合色专区| 亚洲国产成人7777| 欧美人妻一区| 久久久久久亚洲精品不卡人乳| 很黄很污的免费网站| 欧美日韩电影一区二区| 少妇人妻在线| a'v在线资源| 欧美精品日韩久久久九| 国产一区二区三区免费视频在性观看| 在线看片国产精品每日更新| 欧美黄色片AAAAA| 婷婷三区| 青青伊人久久| 国产sv美女内射| 国产丝袜欧美在线视频| 黄色片大香蕉| 亚洲无码一区二区三区三州| 午夜激情床戏激情| 加勒比五月天| 国产偷人伦激情在线观看| 在线国产福利网址导航| 国产亚洲在线观看| 亚洲色情在线影视| 久久啊啊| 欧美丰满熟妇XXXX性ppX人交| 国产成人亚洲精品自产在线| 色www精品视频在线观看| 一起草视频在线| 日本色日夜干| 日韩欧美中文| 国产性感骚丝袜在线| 国产精品另类| 天天色黄色影院天天操| 国产一区二区av综合| 日本少妇va7777| 97在线亚洲| 欧美精品日韩久久久九| 五月综合色| 中文字幕乱偷人妻久久艾草网| 2023天天操夜夜操| 国产精品久久久三级无码| 天天爽爽爽爽| 亚洲精品国产拍免费91在线| 亚洲无无码αⅴ每日更新| 成人夜夜爽| 天天天做天天天爱天天天爽| 亚洲欧美色图小说| 九九色色| 国产女主播视频在线观看| 人妻丰满熟妇一区二区三| 欧美精品四区| 躁躁躁日日躁2020| 国内三级自拍小视频在线观看 | 国产高清亚洲日韩一区| 丁香色五月 97干| 久久精品视| 大香蕉久| 青青草啪啪网| 思思热久久成人| 国产白嫩精品久久| 国产精品九九九| 欧美图片偷拍| 欧美九九九| 久久草大香蕉| 久久日韩肥臀| 家庭乱伦国产| 亚洲啪啪视频免费| 日韩综合色网| 激情文学小说一区二区| 防屏蔽在线视频| 这里只有精品视频在线观看麻豆| 亚洲伊人青青草| 久久曰曰| 抽查国产福利主播| 丝袜视频网国产90| 亚洲国产精品久久久久久久久久| 乱伦一二三| 天天搞欧美| 日日干男人的天堂| 青青草精玖玖69精品| 色婷婷小说| 国产精品无码AV网站| 91精品人妻一区二区三区蜜桃| 一区二区三区蜜桃成人撸久久东京热| 天天操夜夜操| 亚洲中文字幕av| 白嫩国模丰满一二三区| 1769成人国产精品视频| 精品日韩| 91精品人妻偷情| 91一区二区三区蜜桃| 国产亚洲色婷婷久久99精品91 - 百度| 天天欧美97| www久久精品| 99热在线只有精品| 天天搞欧美| 欧亚日韩中文在线| 日本精品999| 成人小说另类在线| 香伊人在线| 小视频玖玖| a级理论午夜日本| 超碰免费人人| 久久內射| 97在线播放| 国产欧美另类久久久精品课程| 久操国产在线| 黑人娇小av在线播放| 午夜.DJ高清在线观看免费7| 久操网线| 久久综合精品一区二区三区| 九九九草| 五月天婷婷在线看| 欧美激情性久久久久久| 在线观看亚洲专区| 亚洲AV免费在线观看| 超碰1997| 久操电影| 精品亚洲国产成人AV制服丝袜| 熟女一区二区| 啊啊啊操死我了| 亚洲精品国产精品成人| 国产 日韩 另类 视频一区爱| 久久精品小视频| 人妻无码一区二区三区久久99| 欧综合网| 伊人成人中文字幕久久网| 中文字幕精品久久久久人妻红杏ⅰ| 亚洲高清综合网| 97精品熟女少妇一区| 嗯啊啊啊轻点视频| 麻豆区久久久久亚| 无码丰满熟妇一区二区浪潮AV| 天美国产精品| 婷婷丁香激情| 97干com| 日韩性爱啪啪视频| 91最新综合| 国产品精品自在在线午夜免费| 国模一区二区三区| 日韩十八禁| 天天干少妇| 久久老熟女| 人妻AV在线| 久操97| 九九久久一区二区三区| 一中国女人毛片水真多| 中文字幕少妇色| 免费的很黄很污的全部视频| 加勒比伊人综合| 在线99热| 亚洲一二三四区| 久久久久久久78| 色伊人91| 精品久9| 亚洲情色婷婷五月天| 精品国产乱码| 视频二区美腿制服人妻欧美| 精品妇女一区二区三区| 中文色综合| 91性网| 东方亚洲在线操逼天堂| 日本福利社| 日本激情免费大片| 欧美色女人| 啊啊啊操死我了| 精品人人| 人人摸人人入| 精品国产乱码久久久久久久| 日本999精品视频| 五月天色图影视| 亚洲美女自拍偷拍视频| 性爱网站一区二区| 99re99在线视频| 嗯嗯啊啊的视频| 男人的天堂.com| www.夜夜操| 在线强奷到舒服的无码视频 | 国产乱伦性爱区| 亚洲天堂久久久久久粉红视频| 蜜臀一二三| 97碰碰日本乱偷人妻中文的| 日韩欧美亚洲国产日韩| 欧美一级色| 俺去也婷婷| 91超级碰碰碰| 色小视频蜜乳| 人人做人人妻人人夜视频| 久久久亚洲高清不打码| 日本免费专区| 5278欧美一区二区三区| 国产中文字幕曰本毛片| 黄色电影观看久久9| 免费看黄视频亚洲网站| 日韩av在线免费网站| 超碰人人超在线观看| 色色激情| 99成人| 久久、1234| 综合激情一一91| 亚洲精品国产拍免费91在线| 玖玖久久久| 日本国产亚洲一区在线观看| 国产无吗在线播放| 色香色欲天天综合网天天来吧| 国产18精品亚洲精品| 精品视频久久久久九九九九9999| 91xingse| 亚州国产成人精品女人久久| 中文字幕第2页| 国产探花精品在线| 色哟哟的毛片| 狠狠亚洲| 欧美中文综合| jizzjizz欧美| 丝袜制服字幕在线| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 综合久久99亚洲人妻中文在线| 超碰九九| 天天干天天舔| 欧美制服网站美腿丝袜| 日本三级韩国三级美三级91| 蜜臀一区二区三区在线| 精品v日韩欧美国产| 四虎视频在线观看| 97色碰| 婷婷在线视频| 久久久内射良家| 国产特级毛片AAAAAA高潮流水 | 黑人在线91| 操逼1区| 久久久99999久网站| 欧美精品一区二区少妇免费A片 | 神马久久69| 无码区蜜乳| 日韩人妻网站| 三男一女不戴套的A片| 成人婷婷丁香| 久久日本熟妇熟色一区| 97国产高清视频在线观看| 久久久久久少妇| 国产www色在线观看| 久9爱经典视频| 乱伦系列一区二区| 超碰97综合网| 久久天堂婷婷网| 久久久91| 情色av电影| 又粗又长又爽在线观看| 久久超碰大香蕉| 秋霞Av理论一级在线| 中文字幕丝袜美腿| 免费看黄片现成| 天天操天天日青青草超碰av| 99re公开精品免费视频| 96免费视频在线| 午夜视频好爽啊| 日影院久久婷婷夜夜网| 日本 欧美 国产一区| 亚洲国产97在线精品一区| 亚洲精品一区中文字幕乱码| 一级毛片电影免费看| 欧美日韩大陆黑人少妇99| 国产尹人在线视频免费| 亚洲Av诱惑| 国产精品亚洲四五区在线观看| 日本性爰一道本| 美女高潮国产高清| 东北老女人的激情视频| 日本国产高清色www视频在线| 久久久久久十| 亚洲高清少妇| 亚洲一二三四区机械| 人妻中文在线| 成人aⅴ一区二区三区| 97天天摸天天爽| 校园春色欧美| 97在线观视频免费观看| 亚洲色图超碰在线| 国产超碰在线| 中文字幕av乱伦| 国产操操日韩三级黄| 100啪啪视频大全| 日日骚av| 精品在线78| 老司机午夜精品福利视频一区二区| 观看视频图片一区二区三区| 无码日韩网站| 人人透人人操| 亚洲中文字幕网| 无遮挡猛进视频免费无限观看| 国产精品无码av嫩草| 大香蕉乱级| 十八禁av无码免费网站APP| 久久成年片色大黄全免费网站| 搡老女人老91妇女老熟女| 国产成人在线观看网址| 丰满少妇一区二区三区免费看| 可乐操在线| 91精品人妻一品二品三品| 人人妻人人爱人人玩| 婷婷爽人人婷婷爽视频| A级在线视频| 日韩色欲久久一二三四区| 乱论91| 狠狠色婷婷777| 婷婷啪啪| 欧美熟妇人体| 欧美亚洲高清不卡| 精品日日人妻| 1级午夜影院费免区| 亚洲aV性爱| 麻豆AV短剧| 中文精品少妇天堂| 欧美v亚洲v综合v国产v妖精| 亚洲色图亚洲无码强奸乱伦| 九九热免费视频| 亚洲视频二区 | 97青青操视频| 精品97精品97| 成人怡红院| 亚洲强奸乱伦影视网| 久久超碰97中文字幕| 色九九久九九| 超碰在线观看av不卡| 日韩精品一区二区三区四虎影视| 男生女生啊啊啊啊| 电家庭影院午夜69久久夜色精品国产69乱 | 四虎精品永久在线观看| WWW美腿丝袜香蕉中文| 牛牛AV人人夜夜澡人人爽| 国产精品露脸在线观看| 九色97| 国产97色在线 | 亚洲| 亚洲av淫乱| 久久久精品一区二区| 日本精品五区| 欧美黑人猛交春色影视大全| 97伦综合| 99精品网| 九九九九免费| 久热伊人| 性色亚洲| 嗯~啊~快点 死我视频| 三上悠亚在线毛片91| 亚洲欧美九九九| 天天日天天干天天操| 青青草十区九区爱夜| 日韩综合成人免费视频| 丝袜综合| 久久99午夜精品一区人妻| 久久9999 | 国产极品馒头逼| www.操| 插欧洲美女欧美精品| 学生妹天天看| 色五月婷婷色| 97超碰站| 日日夜夜噜| 色播五月丁香| 婷婷伊人五月| 98一区二区精品| 天天射天天操天天干天天吃2018| 国产成人亚洲精品自产在线| 亚洲精品久久久久久| 影音先锋国产精品| 亚洲阿v天堂在线| 97超碰色屌| 久久久久久国产手机AV| 国产精品农村妇女| 老鸭窝黄色视频网站| 久久久精品国产亚洲伊人| 青娱乐国产精品| 亚洲一区操| 啊啊啊啊好爽好舒服一区二区易域| 欧美伦乱爱| 亚州成人a∨| 色婷婷99| 欧美色综合影院| 天天色综亚洲91污| 麻豆久久精品亚洲精品88| 熟女少妇视频| 日本欧美不卡| 中文欧丝袜诱惑| 97中文字幕色| av天堂影视中文在字幕在线中文| 无码精品久久久天天影视| www亚洲免费|