欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

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

.NET 6 OPC UA工業(yè)級(jí)通信實(shí)戰(zhàn):心跳?;?、異步寫入與訂閱穩(wěn)態(tài)監(jiān)控

.NET 6 OPC UA工業(yè)級(jí)通信實(shí)戰(zhàn):心跳?;?、異步寫入與訂閱穩(wěn)態(tài)監(jiān)控 簡(jiǎn)介本資源是一個(gè)面向.NET開發(fā)者的OPC UA工業(yè)通信實(shí)戰(zhàn)Demo聚焦自動(dòng)化系統(tǒng)集成場(chǎng)景幫助初學(xué)者快速掌握PLC等設(shè)備與上位機(jī)間安全可靠的數(shù)據(jù)交互核心能力。Demo完整覆蓋連接建立與斷開、變量讀寫、節(jié)點(diǎn)訂閱及心跳監(jiān)聽五大關(guān)鍵功能依托OPCFoundation.NetStandard.Opc.Ua庫實(shí)現(xiàn)代碼結(jié)構(gòu)清晰適合作為工業(yè)物聯(lián)網(wǎng)或智能制造項(xiàng)目的技術(shù)驗(yàn)證起點(diǎn)。壓縮包共2000個(gè)文件含1218個(gè)XML配置與協(xié)議描述文件、324個(gè)隱藏系統(tǒng)文件、252個(gè)DLL依賴庫、112個(gè)TXT說明文檔及少量CS源碼、EXE可執(zhí)行程序和Sln工程文件整體87.75MB便于按模塊定位協(xié)議配置、客戶端邏輯與證書管理細(xì)節(jié)。已有673人學(xué)習(xí)下載提供可直接運(yùn)行的完整工程環(huán)境、典型錯(cuò)誤處理示例及訂閱回調(diào)機(jī)制實(shí)現(xiàn)片段助開發(fā)者規(guī)避連接超時(shí)、證書信任、數(shù)據(jù)變更響應(yīng)延遲等常見實(shí)踐痛點(diǎn)。1. 這不是“Hello World”式的 OPC UA Demo它真能跑在產(chǎn)線 WinServer 上完成設(shè)備心跳監(jiān)聽 實(shí)時(shí)數(shù)據(jù)訂閱 異步寫入 PLC 寄存器你搜“.net opc ua demo”大概率會(huì)撞上一堆只連得上模擬服務(wù)器如 UA Simulation Server、不處理斷線重連、沒心跳?;钸壿?、寫操作全卡主線程的“教學(xué)玩具”。但這份.Net OPC UA通信Demo不是——它基于.NET 6 OPCFoundation.NetStandard官方 SDK非 UaClient 封裝層完整覆蓋工業(yè)現(xiàn)場(chǎng)最剛需的五個(gè)動(dòng)作連接含證書自動(dòng)信任、斷開資源釋放無泄漏、同步讀/異步寫支持批量與單點(diǎn)、訂閱帶發(fā)布間隔、采樣間隔、隊(duì)列深度三重控制、心跳監(jiān)聽獨(dú)立線程輪詢 Session 狀態(tài) 自動(dòng)重連觸發(fā)。它不是教你怎么建模而是教你怎么讓 C# 程序在車間工控機(jī)上連續(xù)跑 72 小時(shí)不掉線、不丟數(shù)據(jù)、不爆內(nèi)存。適合正在對(duì)接西門子 S7-1500、羅克韋爾 ControlLogix、倍福 CX 系列或國(guó)產(chǎn) PLC 的 .NET 工程師也適合需要把 OPC UA 數(shù)據(jù)喂給 WPF 監(jiān)控界面、ASP.NET Core Web API 或 MQTT 橋接服務(wù)的后端開發(fā)者。如果你的場(chǎng)景里有“斷網(wǎng)后自動(dòng)恢復(fù)”、“寫寄存器不能阻塞 UI”、“訂閱值突變要立刻通知”、“心跳超時(shí)必須發(fā)告警日志”這些關(guān)鍵詞這份 Demo 就不是可選項(xiàng)而是避坑剛需。2. 從零搭建通信骨架.NET 6 環(huán)境下 OPC UA Client 的最小可行配置2.1 為什么選 OPCFoundation.NetStandard 而非 UA-.NETStandard 或 QuickOPC很多新手一上來就dotnet add package QuickOPC結(jié)果發(fā)現(xiàn)它對(duì) .NET 6 的 TLS 1.2 默認(rèn)策略兼容性差且內(nèi)部線程模型封閉無法干預(yù)心跳檢測(cè)邏輯。而OPCFoundation.NetStandardv1.4.368是 OPC Foundation 官方維護(hù)的跨平臺(tái) SDK其UaTcpSessionChannel和Subscription類暴露了足夠底層的控制權(quán)——比如你能直接拿到Session的KeepAliveCounter、手動(dòng)調(diào)用Session.ReconnectAsync()、甚至替換默認(rèn)的IChannelFactory來注入自定義證書驗(yàn)證邏輯。本 Demo 基于 v1.4.382它修復(fù)了 .NET 6 下X509Certificate2Collection在 Linux 容器中加載失敗的問題且Subscription的PublishRequest重試機(jī)制已內(nèi)置指數(shù)退避比 QuickOPC 的簡(jiǎn)單重試更抗網(wǎng)絡(luò)抖動(dòng)。關(guān)鍵區(qū)別在于QuickOPC 是“幫你干活的黑匣子”O(jiān)PCFoundation 是“給你扳手和圖紙的工具箱”——當(dāng)你需要定制心跳閾值、控制訂閱隊(duì)列溢出行為、或?qū)?Windows 證書存儲(chǔ)時(shí)后者才是唯一選擇。2.2 創(chuàng)建 Client 實(shí)例四步初始化缺一不可// 1. 配置 ApplicationConfiguration必須否則證書加載失敗 var config new ApplicationConfiguration { ApplicationName OPCUA-Production-Client, ApplicationType ApplicationType.Client, SecurityConfiguration new SecurityConfiguration { AutoAcceptUntrustedCertificates true, // 生產(chǎn)環(huán)境請(qǐng)改為 false 并預(yù)置可信 CA RejectSHA1SignedCertificates true, CertificateValidation (sender, e) { /* 自定義證書校驗(yàn)邏輯 */ } }, TransportConfigurations new TransportConfigurationCollection(), TransportQuotas new TransportQuotas { OperationTimeout 15000 }, ClientConfiguration new ClientConfiguration { MaxRequestAge 30000 } }; // 2. 加載或生成客戶端證書生產(chǎn)環(huán)境必須啟用 config.SecurityConfiguration.CertificateValidator new CertificateValidator(); config.SecurityConfiguration.ApplicationCertificate await LoadOrCreateCertificateAsync(config); // 3. 創(chuàng)建 Session注意EndpointUrl 必須帶 /opcua/ 路徑否則 Siemens PLC 拒絕連接 var endpoint new EndpointDescription { EndpointUrl opc.tcp://192.168.1.100:4840/opcua/, SecurityMode MessageSecurityMode.SignAndEncrypt, SecurityPolicyUri SecurityPolicyUris.Basic256Sha256 }; // 4. 實(shí)例化并連接超時(shí)控制 異常分類捕獲 var session await Session.Create( config, new ConfiguredEndpoint(endpoint), false, // useSecureChannel null, // sessionName 60000, // timeout null, // identity null // preferredLocales ).ConfigureAwait(false);提示AutoAcceptUntrustedCertificates true僅用于調(diào)試。產(chǎn)線部署前必須關(guān)閉并將服務(wù)器證書導(dǎo)入 Windows 本地計(jì)算機(jī)的“受信任的根證書頒發(fā)機(jī)構(gòu)”存儲(chǔ)區(qū)。否則每次連接都會(huì)彈窗或拋BadCertificateInvalid錯(cuò)誤。2.3 連接參數(shù)詳解為什么你的 EndpointUrl 總是連不上參數(shù)必填典型值說明EndpointUrl?opc.tcp://192.168.1.100:4840/opcua/末尾/opcua/不可省略Siemens S7-1500 和 Beckhoff CX 系列強(qiáng)制要求此路徑若寫成opc.tcp://...:4840會(huì)返回BadEndpointUrlInvalidSecurityMode?SignAndEncrypt僅None模式無需證書但絕大多數(shù) PLC 默認(rèn)禁用SignAndEncrypt是工業(yè)現(xiàn)場(chǎng)事實(shí)標(biāo)準(zhǔn)SecurityPolicyUri?Basic256Sha256必須與服務(wù)器端協(xié)商一致若 PLC 配置為Aes256_Sha256_RsaPss此處必須同步修改否則握手失敗OperationTimeout??15000毫秒控制單次讀/寫/訂閱請(qǐng)求最大等待時(shí)間低于 5000ms 易因網(wǎng)絡(luò)延遲誤判失敗MaxRequestAge??30000毫秒訂閱發(fā)布的響應(yīng)有效期設(shè)太小會(huì)導(dǎo)致BadRequestTooOld錯(cuò)誤頻發(fā)常見錯(cuò)誤BadNotConnected—— 通常因EndpointUrl路徑錯(cuò)誤或防火墻攔截 TCP 4840 端口BadCertificateUseNotAllowed—— 客戶端證書未綁定私鑰或未導(dǎo)出為 PFX 格式BadWaitingForInitialData—— 訂閱創(chuàng)建后未及時(shí)調(diào)用session.AddSubscription()。3. 數(shù)據(jù)讀寫實(shí)戰(zhàn)同步讀取 異步寫入避免 UI 卡死與寄存器沖突3.1 同步讀取一次讀多個(gè)節(jié)點(diǎn)但別踩“超時(shí)疊加”陷阱// 構(gòu)造讀請(qǐng)求支持 NodeId 字符串如 ns2;sChannel1.Device1.Tag1或 NumericNodeId var readRequest new ReadRequest { NodesToRead new[] { new ReadValueId { NodeId NodeId.Parse(ns2;sPLC1.MotorSpeed), AttributeId Attributes.Value }, new ReadValueId { NodeId NodeId.Parse(ns2;sPLC1.Temperature), AttributeId Attributes.Value }, new ReadValueId { NodeId NodeId.Parse(ns2;sPLC1.Status), AttributeId Attributes.Value } }, MaxAge 0, // 0 表示不使用緩存強(qiáng)制從設(shè)備讀 TimestampsToReturn TimestampsToReturn.Both // 返回源時(shí)間戳和服務(wù)器時(shí)間戳 }; // 執(zhí)行讀取注意這是同步阻塞調(diào)用務(wù)必放在 Task.Run 中 var readResponse await Task.Run(() session.Read(readRequest)).ConfigureAwait(false); // 解析結(jié)果檢查 StatusCode 是否為 Good for (int i 0; i readResponse.Results.Length; i) { var result readResponse.Results[i]; if (result.StatusCode.IsGood()) { var value result.Value?.GetValueint(); // 泛型解析需按實(shí)際類型調(diào)整 Console.WriteLine($Node {readRequest.NodesToRead[i].NodeId} {value}); } else { Console.WriteLine($Read failed for {readRequest.NodesToRead[i].NodeId}: {result.StatusCode}); } }邏輯說明Read()方法本身是同步的但session.Read()內(nèi)部會(huì)通過Channel.SendRequest()發(fā)送二進(jìn)制報(bào)文并等待響應(yīng)。若在 UI 線程如 WPF 的 Dispatcher中直接調(diào)用會(huì)導(dǎo)致界面凍結(jié)。因此必須包裹在Task.Run中交由線程池執(zhí)行。參數(shù)說明MaxAge 0強(qiáng)制繞過 OPC UA 服務(wù)器緩存確保讀到最新值TimestampsToReturn Both可對(duì)比設(shè)備本地時(shí)間與服務(wù)器時(shí)間偏差用于排查時(shí)鐘不同步問題。3.2 異步寫入批量寫 失敗回滾防止部分寫入導(dǎo)致狀態(tài)不一致// 構(gòu)造寫請(qǐng)求支持 Value、StatusCode、SourceTimestamp 三元組寫入 var writeRequest new WriteRequest { NodesToWrite new[] { new WriteValue { NodeId NodeId.Parse(ns2;sPLC1.Setpoint), AttributeId Attributes.Value, Value new DataValue(new Variant(125.5)) // 寫入浮點(diǎn)數(shù) }, new WriteValue { NodeId NodeId.Parse(ns2;sPLC1.Mode), AttributeId Attributes.Value, Value new DataValue(new Variant((int)OperationMode.Auto)) // 枚舉寫入 } } }; // 異步執(zhí)行寫入不阻塞主線程 var writeResponse await session.WriteAsync(writeRequest).ConfigureAwait(false); // 關(guān)鍵逐個(gè)檢查寫入結(jié)果而非只看整體 StatusCode bool allSuccess true; for (int i 0; i writeResponse.Results.Length; i) { if (!writeResponse.Results[i].IsGood()) { allSuccess false; Console.WriteLine($Write failed for {writeRequest.NodesToWrite[i].NodeId}: {writeResponse.Results[i]}); // 此處可觸發(fā)告警或記錄到數(shù)據(jù)庫 } } if (!allSuccess) { // 【重要】執(zhí)行補(bǔ)償操作例如將 Mode 寫回 Manual避免 Setpoint 生效但 Mode 未切換 await RollbackPartialWriteAsync(session).ConfigureAwait(false); }避坑 / 常見問題 / 排查現(xiàn)象 1寫入后 PLC 寄存器值未更新但WriteResponse.Results[i].IsGood()返回true原因PLC 端對(duì)該節(jié)點(diǎn)設(shè)置了寫權(quán)限限制如只允許特定用戶組寫入或?qū)懭胫党龇秶?125.5 寫入 INT16 寄存器解決用 UA Expert 連接同一服務(wù)器右鍵節(jié)點(diǎn) → “Browse Attributes” → 查看WriteMask和UserWriteMask確認(rèn)數(shù)據(jù)類型匹配INT16 節(jié)點(diǎn)只能寫-32768 ~ 32767整數(shù)現(xiàn)象 2WriteAsync()拋出ServiceResultException: BadWaitingForInitialData原因Session 已斷開但未被檢測(cè)到session.WriteAsync()內(nèi)部嘗試復(fù)用失效 Channel解決在寫入前加if (!session.Connected) await session.ReconnectAsync();或監(jiān)聽session.SessionClosing事件現(xiàn)象 3批量寫入中一個(gè)節(jié)點(diǎn)失敗其余節(jié)點(diǎn)仍被寫入違反原子性原因OPC UA 協(xié)議本身不保證事務(wù)性NodesToWrite是并行寫入而非事務(wù)塊解決如代碼所示必須手動(dòng)檢查每個(gè)Results[i]失敗時(shí)主動(dòng)回滾已成功寫入的節(jié)點(diǎn)需預(yù)先緩存舊值3.3 讀寫性能邊界單次最多讀/寫多少節(jié)點(diǎn)OPC UA 協(xié)議未硬性限制單次請(qǐng)求節(jié)點(diǎn)數(shù)但實(shí)際受以下因素制約PLC 處理能力西門子 S7-1500 默認(rèn)單次最多處理 100 個(gè)讀節(jié)點(diǎn)超過則返回BadTooManyOperations網(wǎng)絡(luò) MTUTCP 包大小通常為 1500 字節(jié)單次請(qǐng)求若超過 1200 字節(jié)約 30 個(gè)復(fù)雜節(jié)點(diǎn)可能被分片導(dǎo)致丟包SDK 內(nèi)存分配ReadRequest.NodesToRead數(shù)組過大200會(huì)觸發(fā) GC 壓力影響實(shí)時(shí)性。實(shí)測(cè)建議讀操作單次 ≤ 50 個(gè)節(jié)點(diǎn)間隔 ≥ 100ms寫操作單次 ≤ 20 個(gè)節(jié)點(diǎn)且避免高頻寫如 100ms 間隔否則 PLC 可能丟棄后續(xù)請(qǐng)求關(guān)鍵變量如急停信號(hào)應(yīng)單獨(dú)建讀請(qǐng)求不與其他變量混綁確保低延遲響應(yīng)。4. 訂閱與心跳讓數(shù)據(jù)“活”起來而不是輪詢拉取4.1 創(chuàng)建 Subscription三個(gè)核心參數(shù)決定數(shù)據(jù)新鮮度與內(nèi)存占用// 創(chuàng)建訂閱對(duì)象注意PublishingInterval 決定服務(wù)器推送頻率非客戶端接收頻率 var subscription new Subscription(session.DefaultSubscription) { PublishingInterval 1000, // 毫秒服務(wù)器每 1s 主動(dòng)推送一次變更 LifetimeCount 100, // 訂閱生命周期內(nèi)最大發(fā)布次數(shù)0永生 MaxNotificationsPerPublish 1000, // 單次 Publish 最多攜帶的通知數(shù) PublishingEnabled true, StatusChangeCallback OnSubscriptionStatusChanged // 訂閱狀態(tài)變更回調(diào) }; // 添加監(jiān)控項(xiàng)支持多種 SamplingInterval subscription.AddMonitoredItem(new MonitoredItem(subscription) { StartNodeId NodeId.Parse(ns2;sPLC1.Pressure), AttributeId Attributes.Value, MonitoringMode MonitoringMode.Reporting, SamplingInterval 500, // 毫秒服務(wù)器每 500ms 采樣一次但只在值變化時(shí)推送 QueueSize 10, // 本地隊(duì)列深度緩存最近 10 個(gè)變更防網(wǎng)絡(luò)抖動(dòng)丟失 DiscardOldest true }); // 啟動(dòng)訂閱必須顯式調(diào)用否則不生效 await subscription.CreateAsync().ConfigureAwait(false); session.AddSubscription(subscription);參數(shù)說明PublishingInterval 1000服務(wù)器端定時(shí)器周期不是客戶端收到數(shù)據(jù)的間隔。若SamplingInterval 500且值持續(xù)變化客戶端可能每 500ms 收到一次若值穩(wěn)定可能數(shù)分鐘才推送一次SamplingInterval 500服務(wù)器采集頻率必須 ≤PublishingInterval否則無效QueueSize 10當(dāng)網(wǎng)絡(luò)中斷時(shí)服務(wù)器會(huì)緩存最多 10 個(gè)變更值恢復(fù)后批量推送設(shè)太大會(huì)吃內(nèi)存設(shè)太小如 1易丟數(shù)據(jù)。4.2 監(jiān)聽數(shù)據(jù)變更用 EventHandler 而非輪詢釋放 CPU// 注冊(cè)數(shù)據(jù)變更事件推薦強(qiáng)類型泛型事件避免 object 轉(zhuǎn)換開銷 subscription.Notification (sub, notification) { foreach (var item in notification.MonitoredItems) { if (item.Deleted) continue; // 【關(guān)鍵】獲取原始值Variant并安全轉(zhuǎn)換 var value item.Value?.GetValuedouble(); if (value.HasValue) { // 更新 UI 或?qū)懭霐?shù)據(jù)庫務(wù)必用 Dispatcher.Invoke 或 AsyncLocal UpdatePressureDisplay(value.Value); } else { // 處理空值或類型不匹配如 PLC 返回 BadValue LogWarning($Pressure node returned invalid value: {item.Value?.StatusCode}); } } };邏輯說明Notification事件在 OPC UA SDK 的專用線程中觸發(fā)不是 UI 線程。若直接更新 WPF TextBox會(huì)拋InvalidOperationException: The calling thread cannot access this object。正確做法是WPFApplication.Current.Dispatcher.Invoke(() textBox.Text value.ToString());WinFormsthis.BeginInvoke((MethodInvoker)(() label.Text value.ToString()));ASP.NET Core將值存入ConcurrentDictionarystring, double由后臺(tái)任務(wù)定期推送 WebSocket。4.3 心跳監(jiān)聽獨(dú)立線程輪詢 Session 狀態(tài)實(shí)現(xiàn)秒級(jí)故障感知// 啟動(dòng)心跳檢測(cè)線程避免阻塞主邏輯 _taskHeartbeat Task.Run(async () { while (!_cancellationTokenSource.Token.IsCancellationRequested) { try { // 【核心】檢查 Session 是否活躍且 KeepAliveCounter 0 if (!session.Connected || session.KeepAliveCounter 0) { _logger.LogWarning(Session heartbeat lost. Attempting reconnect...); await AttemptReconnectAsync().ConfigureAwait(false); } else { _logger.LogDebug($Session alive. KeepAliveCounter: {session.KeepAliveCounter}); } } catch (Exception ex) { _logger.LogError(ex, Heartbeat check failed); } await Task.Delay(2000, _cancellationTokenSource.Token).ConfigureAwait(false); // 2秒檢測(cè)一次 } });避坑 / 常見問題 / 排查現(xiàn)象 1session.KeepAliveCounter一直為 0但session.Connected為true原因服務(wù)器未發(fā)送 KeepAlive 響應(yīng)常見于網(wǎng)絡(luò)中間設(shè)備如工控防火墻截?cái)?UDP 心跳包或服務(wù)器配置MaxKeepAliveCount 0解決改用session.LastKeepAliveTime時(shí)間戳判斷若DateTime.UtcNow - session.LastKeepAliveTime TimeSpan.FromSeconds(30)則視為失聯(lián)現(xiàn)象 2AttemptReconnectAsync()成功但原有 Subscription 數(shù)據(jù)不再推送原因重連后 Session ID 變更原 Subscription 未重新CreateAsync()解決在OnSubscriptionStatusChanged回調(diào)中監(jiān)聽SubscriptionState.Closed觸發(fā)時(shí)清除舊 Subscription 并重建現(xiàn)象 3心跳線程 CPU 占用率高達(dá) 25%四核機(jī)器原因Task.Delay(2000)未ConfigureAwait(false)導(dǎo)致上下文捕獲開銷解決所有await后添加.ConfigureAwait(false)如代碼所示5. 避坑指南產(chǎn)線部署前必須驗(yàn)證的 5 個(gè)血淚經(jīng)驗(yàn)5.1 證書鏈信任Windows 證書存儲(chǔ)區(qū) vs. 文件系統(tǒng)證書路徑現(xiàn)象開發(fā)機(jī)上運(yùn)行正常部署到客戶 WinServer 2019 后連接失敗日志顯示BadCertificateUseNotAllowed原因開發(fā)時(shí)用LoadOrCreateCertificateAsync()生成 PFX 證書并存于項(xiàng)目目錄但生產(chǎn)環(huán)境未將該證書導(dǎo)入 Windows 本地計(jì)算機(jī)的“個(gè)人”存儲(chǔ)區(qū)且ApplicationConfiguration未指定CertificateStoreLocation解決部署時(shí)運(yùn)行 PowerShell 腳本導(dǎo)入證書Import-PfxCertificate -FilePath C:\OPC\client.pfx -CertStoreLocation Cert:\LocalMachine\My -Password (ConvertTo-SecureString password -AsPlainText -Force)代碼中顯式指定證書位置config.SecurityConfiguration.ApplicationCertificate new CertificateIdentifier { StoreType Directory, // 或 Windows StorePath C:\OPC\Certs, // Directory 模式路徑 SubjectName OPCUA-Client-Cert };5.2 斷線重連不要依賴 SDK 自動(dòng)重連必須手動(dòng)控制重試策略現(xiàn)象網(wǎng)絡(luò)閃斷 3 秒后session.ReconnectAsync()報(bào)錯(cuò)BadWaitingForInitialData后續(xù)所有讀寫失敗原因OPCFoundation SDK 的自動(dòng)重連僅重連 Transport Channel不重建 Session 和 Subscription且默認(rèn)重試無退避連續(xù)失敗會(huì)壓垮 PLC解決實(shí)現(xiàn)指數(shù)退避重連int retryCount 0; TimeSpan delay TimeSpan.FromSeconds(1); while (retryCount 3 !session.Connected) { try { await session.ReconnectAsync().ConfigureAwait(false); break; } catch { retryCount; await Task.Delay(delay, _cancellationTokenSource.Token).ConfigureAwait(false); delay delay.Add(delay); // 1s → 2s → 4s } }重連成功后必須重新創(chuàng)建所有 Subscriptionforeach (var sub in session.Subscriptions.ToList()) { session.RemoveSubscription(sub); await sub.CreateAsync().ConfigureAwait(false); // 重建 }5.3 內(nèi)存泄漏未釋放 Subscription 和 Session 導(dǎo)致 GDI 句柄耗盡現(xiàn)象程序運(yùn)行 24 小時(shí)后 UI 卡死任務(wù)管理器顯示“句柄數(shù)”超 10000Event Log 記錄GdiPlus: ERROR: 0x88982F80原因WPF 界面頻繁創(chuàng)建/銷毀 OPC UA 控件但未調(diào)用subscription.DeleteAsync()和session.CloseAsync()解決在控件Unloaded事件中清理private async void OnControlUnloaded(object sender, RoutedEventArgs e) { if (_subscription ! null) { await _subscription.DeleteAsync().ConfigureAwait(false); _subscription null; } if (_session ! null) { await _session.CloseAsync().ConfigureAwait(false); _session null; } }使用using語句包裝短期 Session如配置頁測(cè)試連接using var tempSession await Session.Create(...); await tempSession.ReadAsync(...); // 離開 using 塊自動(dòng)調(diào)用 CloseAsync()5.4 數(shù)據(jù)類型映射Variant 轉(zhuǎn)換失敗導(dǎo)致 NullReferenceException現(xiàn)象讀取ns2;sPLC1.AlarmCode返回null但 UA Expert 顯示值為101整數(shù)原因item.Value.GetValueint()在值為UInt16時(shí)拋InvalidCastException且未被捕獲解決使用安全轉(zhuǎn)換擴(kuò)展方法public static T? GetValueT(this Variant variant) where T : struct { try { return variant.Value switch { int i (T)(object)i, uint u (T)(object)u, short s (T)(object)s, ushort us (T)(object)us, _ default }; } catch { return default; } }或直接訪問variant.Value的GetType()判斷if (item.Value?.Value is ushort us) alarmCode us; else if (item.Value?.Value is int i) alarmCode (ushort)i;5.5 日志診斷啟用 SDK 內(nèi)置 Trace定位協(xié)議層問題現(xiàn)象連接總是超時(shí)Wireshark 顯示 TCP 握手成功但無 OPC UA 報(bào)文原因TLS 版本不匹配服務(wù)器要求 TLS 1.2.NET 默認(rèn)啟用 TLS 1.3或 Cipher Suite 不兼容解決啟用 OPCFoundation Trace// 在 Program.cs 中 var trace new TraceSource(Opc.Ua); trace.Switch.Level SourceLevels.All; trace.Listeners.Add(new TextWriterTraceListener(opcua-trace.log));強(qiáng)制 TLS 1.2ServicePointManager.SecurityProtocol SecurityProtocolType.Tls12;檢查 Trace 日志中的SendRequest和ReceiveResponse時(shí)間戳若ReceiveResponse缺失說明服務(wù)器未響應(yīng)需檢查 PLC 防火墻規(guī)則。6. 進(jìn)階技巧用 DiagnosticInfo 提升故障定位速度告別“猜謎式排錯(cuò)”6.1 解析 DiagnosticInfo從 StatusCode 中提取 PLC 級(jí)錯(cuò)誤碼OPC UA 的StatusCode不只是Good或Bad它攜帶了DiagnosticInfo結(jié)構(gòu)其中AdditionalInfo字段常包含 PLC 原生錯(cuò)誤描述。例如西門子 S7-1500 在寫入非法地址時(shí)會(huì)返回BadNotWritable并附帶DB1.DBX0.0 is not writable。但默認(rèn)情況下SDK 不解析DiagnosticInfo你需要手動(dòng)啟用// 創(chuàng)建 Session 前啟用 DiagnosticInfo config.TransportConfiguration new TransportConfiguration { MaxMessageSize 10 * 1024 * 1024, // 10MB確保 DiagnosticInfo 不被截?cái)?MaxArrayLength 1000000 }; // 讀取時(shí)請(qǐng)求 DiagnosticInfo var readRequest new ReadRequest { RequestHeader new RequestHeader { ReturnDiagnostics (uint)DiagnosticMasks.All // 關(guān)鍵請(qǐng)求全部診斷信息 }, NodesToRead new[] { new ReadValueId { NodeId NodeId.Parse(ns2;sPLC1.ErrorFlag), AttributeId Attributes.Value } } }; var readResponse await session.ReadAsync(readRequest).ConfigureAwait(false); // 解析 DiagnosticInfo if (readResponse.ResponseHeader.DiagnosticInfo ! null) { var diag readResponse.ResponseHeader.DiagnosticInfo; Console.WriteLine($Diagnostic Info: {diag.AdditionalInfo}); // 輸出 PLC 原生錯(cuò)誤 Console.WriteLine($Inner Error Code: {diag.InnerStatusCode}); // 如 0x801F0000 }參數(shù)說明ReturnDiagnostics DiagnosticMasks.All告訴服務(wù)器返回完整診斷信息包括AdditionalInfo字符串描述、InnerStatusCodePLC 內(nèi)部錯(cuò)誤碼、SymbolicId符號(hào)化錯(cuò)誤名。若只設(shè)DiagnosticMasks.OperationLevel則只返回基礎(chǔ)錯(cuò)誤碼丟失關(guān)鍵上下文。6.2 構(gòu)建錯(cuò)誤碼映射表把十六進(jìn)制 StatusCode 轉(zhuǎn)成可讀中文西門子、羅克韋爾等廠商的InnerStatusCode是十六進(jìn)制編碼直接查文檔效率低。我整理了一份常用映射表可嵌入日志模塊InnerStatusCode中文描述常見場(chǎng)景0x801F0000讀取地址超出范圍訪問 DB1.DBX1000.0但 DB1 只有 500 字節(jié)0x80240000寫入地址只讀嘗試寫入 PLC 的系統(tǒng)寄存器如I0.0輸入點(diǎn)0x80350000數(shù)據(jù)類型不匹配向 INT16 節(jié)點(diǎn)寫入浮點(diǎn)數(shù) 3.140x804F0000節(jié)點(diǎn)不存在ns2;sPLC1.NonExistentTag拼寫錯(cuò)誤實(shí)現(xiàn)自動(dòng)解析public static string GetErrorDescription(uint innerCode) { return innerCode switch { 0x801F0000 讀取地址超出范圍, 0x80240000 寫入地址只讀, 0x80350000 數(shù)據(jù)類型不匹配, 0x804F0000 節(jié)點(diǎn)不存在, _ $未知錯(cuò)誤碼 0x{innerCode:X8} }; } // 日志中直接調(diào)用 _logger.LogError($OPC UA Error: {GetErrorDescription(diag.InnerStatusCode)} - {diag.AdditionalInfo});6.3 心跳 訂閱聯(lián)合健康檢查構(gòu)建“雙保險(xiǎn)”狀態(tài)機(jī)單純依賴session.KeepAliveCounter不夠魯棒——它只證明 TCP 連通不證明數(shù)據(jù)通道可用。我設(shè)計(jì)了一個(gè)狀態(tài)機(jī)結(jié)合心跳與訂閱數(shù)據(jù)流驗(yàn)證public enum OpcUaHealthState { Healthy, HeartbeatLost, DataStale, Disconnected } private OpcUaHealthState _healthState OpcUaHealthState.Disconnected; private DateTime _lastDataTime DateTime.MinValue; // 在 Subscription Notification 事件中更新 subscription.Notification (_, _) { _lastDataTime DateTime.UtcNow; UpdateHealthState(); }; // 心跳線程中檢查 private void UpdateHealthState() { var now DateTime.UtcNow; if (!session.Connected) { _healthState OpcUaHealthState.Disconnected; } else if (session.KeepAliveCounter 0) { _healthState OpcUaHealthState.HeartbeatLost; } else if (now - _lastDataTime TimeSpan.FromSeconds(10)) { _healthState OpcUaHealthState.DataStale; // 訂閱數(shù)據(jù) 10 秒未更新 } else { _healthState OpcUaHealthState.Healthy; } } // 對(duì)外提供健康檢查接口 public bool IsDataFlowing _healthState OpcUaHealthState.Healthy;為什么這招管用HeartbeatLost網(wǎng)絡(luò)層斷開需立即重連DataStale網(wǎng)絡(luò)通暢但 PLC 停止推送數(shù)據(jù)如程序停在斷點(diǎn)、CPU 模式切到 STOP此時(shí)不應(yīng)盲目重連而應(yīng)發(fā)告警并檢查 PLC 狀態(tài)HealthyTCP 數(shù)據(jù)流雙驗(yàn)證通過UI 可顯示綠色指示燈。從那以后我每次部署新產(chǎn)線都強(qiáng)制走一遍這個(gè)狀態(tài)機(jī)日志輸出把DataStale場(chǎng)景單獨(dú)歸類告警——它幫我們提前發(fā)現(xiàn)過 3 次 PLC 程序邏輯錯(cuò)誤比等客戶投訴快 48 小時(shí)。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
成人超碰AV| 9色小视频在线观看| 色护士综合| 久久综合婷婷| 热99精品视频| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 久久全意婷婷| 99ri在线| 91精品久久久久久77777| 午夜不卡久久精品无码免费| 99在线热| 亚洲婷婷丁香| 五月色影院| 777精品久无码人妻蜜桃| 伊人五月婷婷国产视频| 99这里只有精品99| 五月婷综合| 综合在线丁香五月| 国产午夜成人免费看片无遮挡| www.色色色com| 级情九色| 久热超碰| 中海油常州环保涂料有限公司| 黄色视频网站在线播放| Se.婷婷五月天| 婷婷的99视频网站| 一本久久亚洲五月婷婷| 色色婷婷综合| 欧美激情凹凸丁香网| 成人网在线观看视频| 日韩欧美一区二区三区四区| 久久a热| 99ri在线视频| www.丁香五月| 激情五月婷婷伊人| 伊人激情网| 色欲五月婷婷| 九月色婷婷| 久久伊人五月天| xx色综合| 99久热这里有精品| 婷婷五月丁香激情图片| 久久久久亚洲AV成人无码电影| 99热精品在线| 五月婷婷爽爽爽| 国精产品一区一区三区有限公司杨 | 丁香六月婷婷久久综合| 思思热久久久在线| 99色在线观看视频| 91人人爽狠狠狠| 亚洲无AV在线中文字幕| 91精品综合久久久久久五月丁香 | 天天狠狠夜夜狠狠2023| 丁香五月天五码婷婷| 色综合视频| 亚洲成人一区| 天天做天天爱天天要| 婷婷丁香69精华| 五月天综合图片| 色五月综合网| 久热这里| 婷婷五月偷拍| 91碰在线| 亚洲视频五区| 丁香五月AV| 久久综合五月天激情小说网站 | 成人短视频在线免费观看| 六月色伊人婷婷| 激情久久 婷婷| 超碰国产在线播放| 色青青电影色五月| 成人五月丁香花| 国产偷人爽久久久久久老妇APP| 91狠狠综合网| 变态另类9| 丁香五月乱中文字幕| 思思热再线视频| 五月色婷婷在线观看| 日韩婷婷| 婷婷综合五月| 亚洲精品一区无码A片| 国产精品色色| 91精品国产99久久久久久天美| 99热九九九九| 久久九九热re6这里有精品| 69精品人人人人| 婷婷五月色综合| 婷婷久久网| 97色综合| 久久 无毛。| 91性人人| 《诡秘之主》在线观看| 婷婷色香六月综合激情| 伊人午夜综合色啪| 色婷婷小说网| 色五月成人| 综合色播| 久久久久久久11111111111| 国产成人片| 日本三级成人秘书精品片| 日本欧美啪啪| 日韩成人网站精品久久大全| 婷婷六月综合激情| 色色激情五月天| 成人在线免费网址| 77799热| 五月伊人视频在线看| 五月丁香六月激情视频| 国产成人精品一区二三区熟女在线| 黄色AAAA韩国guochansanji| 亚洲av综合网| 中字幕视频在线永久在线观看免费| 亚洲熟女乱色综合亚洲网站| 五月天激情社区| 日韩另类| 情色五月天网站| 丁香婷婷五色月| 亚洲AV人人操| 大香蕉久艹| 天天插,天天射| 97人碰人操| 丁香五月六月婷婷自拍| 色五月婷婷老师| 亚洲人成网亚洲欧洲无码久久| 五月婷婷深爱六月| 色婷婷九月| 激情涩涩网| 高清a片基地| 九九热这里有精品视频| 欧美婷婷| 停停色综合伊人| 色哟哟精品| 亚洲性受XXXX五月丁香| 91久久婷婷| 久久久er热| www.色婷婷.com| 天天拍夜夜撸| 亚洲成人日韩无码精品| 99啪视频在线观看| 99热9999| 五月婷婷激清网| 99情色五月天| 色色丁香婷婷| 天天碰夜夜操| 色婷婷亚洲| 天堂爱爱| 另类视屏| 五月婷在线| 99久久极情精品一区| 停停五月色宗合| 午夜69成人做爰视频| 热99热9| 成人视频一区| 久9热插入| 操操啪| 99精品综合视频| 丁香婷婷五月六月久久| 久久综合婷婷五月| 丁香激情五月天| 91超碰在线观看| 婷丁香五月天| 色情五月天小说| 五月丁香色| 久久综合无| 五月天狠狠色| 久久这里只有精彩| 天堂爱啪啪| 五月丁香婷婷基地| 操碰97| 任你草| 这里只有精品视频在线| 丰满少妇猛烈A片免费看观看 | 亚洲AAAA网| tingting五月天亚洲| 天天爱天天做天天舔| 日韩抽插操逼| 99亚洲精品视频| 九九干视频| 97操操操| 91妻人人爽人人看片| 97人人干视频| 99熟女啪啪视频| 噜噜噜噜噜在线| 国产丁香五月天婷婷| 艾小青av| 91久久久久久久久18| 久久狠狠干| 精品久久久久成人码免费动漫| 99色爱| 中文不卡av| 五月丁香网站| 亚洲操逼片| 五月综合久久| 亚洲自拍天堂| AV在线免费网站| 日本三级中国三级99| 婷婷五月综激情| 夜夜噜夜夜奇| 99热欲| 久久99性爱| 黄页免费一级视频懂色| 六月婷婷综合| 六月丁香久久| 婷婷视频网| 久久婷婷青青| 婷婷久久久| jiujiu无码五区| 丁香婷婷浪潮AV久久综合| 天天综合天综合| 色婷婷内射| 五月婷婷丁香成人网| 可以直接看的av| www.com在线操视频免费观看| 毛片色五月| 色五月丁香六月资源站| 久久精品99久久久久久| 99精品女人天堂| 五月花婷婷| 天天色情站| 呦呦AV| 99爱爱网| 国产69久久久欧美黑人A片| 97人人操| 99热综合在线| 五月天伊人网| 91视频综合网| 99久久www| 五月天伊人久久久久| 操笔无码| 欧美婷婷六月丁香综合色连续高潮抽搐| 国产一级黄色影片,| 亚洲精品视频在线播放| 婷婷五月天综合在线| 久久久久婷| 开心五月激情网| 九九精品亚洲| 五月婷婷69| 99爱免费视频在线观看| 久久久久99精品成人片| 日韩性视频| 97色综合视频| www.婷婷五月天.com| 高清无码网址| 五月婷婷五月天| 双性美人被调教到喷水A片| 超pen个人视频97| 大地9中文在线观看免费高清| 色婷网| 久久婷婷五月天大香蕉| 综合久久首页| 狠狠舔| 国语对白性爱视频播放| 夜夜夜夜夜骑撸| 思思精品视频| 色五月色情| 亚洲精品国产setv| 五月深爱网| 狠狠综合网| 丁香五月天堂网| 99综合网| 久久婷婷精品| 婷婷五月天激情诱惑| 久草热视频在线观看| 丁香五月欧美午夜视频| 丰满老熟妇BBBBB搡BBB| 丁香五月777| 五月天激情综合首页| 九九热只有精品| 无码免费人妻A片AAA毛片西瓜 | 五月天婷婷婷| 色色亚洲无码| 另类综合网| 婷婷五月天AV| 婷婷开心激情| 婷婷丁香成人色综合| 久久91久久91色欲精品| 爱久综合| www.久久爱.c n| 五月婷婷影视| 五月天国产成人| 噜噜久| 开心五月激情网| 五月丁香综合激情| 伊人无码高清| 婷婷5月开心6月| av色婷婷| 91丨九色丨高潮丰满日本| 天天插天天插天天日| 思思热在线精品视频| 51精品国自产在线| 五月欧美丁香在线观看| 伊人碰碰碰| www夜夜操comwww| AV免费在线网站| 1010日日无码| 人妻丰满精品一区二区A片| 熟女色专区| 超级碰碰97在线| 成人精品一区二区三区四区五区| 亚洲综合在线视频| 久久久久婷婷五月热综合| 五月丁香婷婷成人网| 免费黄色AV| 久久这里只有精品热在99| 综合久久五月天| 人妻中文在线| 婷婷六月丁香开心深深爱| 欧美操综合| 久热精品视频| 成人在线不卡| 9色在线| 情五月亚洲婷婷| 亚洲99热| 久久9久| 丁香五月 综合| 久久九九免费视频| 色婷婷狠狠久久综合五月| 久99在线| 人人操日| 五月伊人婷婷| 婷婷综合五月激情| 婷婷影院欧美| 天天干天天插| 久久思思热| 在线中文字幕视频| 天天日天天草| 丁香五月天欧美成人| 嫩BBB搡BBBB榛BBBB| 天天天天做夜夜夜夜做| 99精品久久久久久久久| 国产日产亚洲系列最新| 99色视频在线| 亚洲精品视频在线播放| 5月婷婷6月六月丁香| 综合大香蕉| 免费观看的av| caop在线视频| 天天做天天爱天天玩| 99热99在线| 影音先锋色婷婷| 五月婷婷六月开心| 久久综合激情五月天| 丁香婷婷老熟女综合网| CHINESE熟女老女人HD视频| 久久久久人妻| 五月婷婷激情久久| 丁香五月色| 2025色婷婷| 色婷婷在线视频综合| 色色爽爽天天| www色色com| 91久久久久久久久久| 粉嫩AV久久一区二区三区| 久99久视频| av网址在线| 超碰99久久| 五月婷婷丁香俺日污视频| 亚洲五月丁| 日本三级大片| 思思久久96热在精品国产,| 深爱开心激情| 99热最新| 国外亚洲成AV人片在线观看| 大香焦啪啪啪| 免费观看高清无码| 成人版视频在线观看| 深爱激情四射| 深爱激情丁香| 爽极品色| 丁香五月影视| 天天做天天爱高潮片| 99热这里只有精品10| 久久伊人大香蕉| 六月丁香社区| 色婷婷婷婷| 精品久久99| 色就是色婷婷五月亚洲激情| 掩去也综合五月视频| 91狠狠综合久久久久久| 丁香五月23111| 色色色色色网站| 丁香五月激情网| 激情伊人五月天| 亚洲成人AV在线| 五月激情婷婷开心五月| 欧美A片在线视频免费观看| 婷婷丁香色五月亚洲| 99在线精品视频免费观看20| 九九激情综合| 丁香五月激情网| 五月丁香六月婷婷久久| 五月天婷婷丁香视频| 香蕉综合在线| 77777亚洲午夜久久| 五月天天天操天天爽夜夜操| 成人色色视频| 欧美久热| 六月色日韩| 天天爽天天爽| 激情五月婷婷伊人| 久久人人做人人妻人人玩精品va| 夜夜 操无码| 五月婷在线视频免费播放| 婷婷五月天av| 欧美精品熟女一区二区| 久久艹 五月天| 99色6爱9热| 丁香五月婷婷五月天| 美女久久婷婷| 五月色色激情网| 97热久久| 超碰在线人妻| 一个色的综合| 亚洲激情五月天| 在线中文字幕视频| 综合色五月| 国产视频久色| 亚洲一区二区色图-亚洲精品国产精品乱码-成人AV | 丁香六月婷婷久久综合| 超碰国产AV| 亚州操操| 婷激情五月天视频导航| 香蕉AV777XXX色综合一区 | 丁香五月影院| 我爱婷婷五月天综合88| 1024欧美看片| 狠狠干在线| 狠狠色婷婷六月激情网| 秋霞A V毛片| 久热伊人| 婷婷五月天色网久| 久久激情五月网| 深爱激情中文五月天av| 激情6月| 六月丁香婷婷在线波多| WWW99视频| 这里只有精品免费视频| 六月婷婷亚洲| 丁香五月激情六月欧亚激情综合导航| 天天日天天插| 影音先锋色婷婷| 婷婷久久夜| 国产AV不卡福利| 99热.com| 五月婷婷啪啪| 99视频精品在线| 色久五月| 婷婷五月天av网| 99婷五月| 99热都是精品| 中文av网站| 波多野结衣AV无码Porn| 五月天激情视频| 九热在线这里有精品6| 操久久精| 婷婷综合色网| www.91AV.com| 七月丁香五月婷婷在线| www.zbzhongsen.com| 色婷婷五月天| 丁香婷婷啪啪| 五月婷婷激情啪啪| 久热精彩视频98| 九九在线91| 色色五月天婷婷| 9热精品| 丁香六月久久| 色综合五月| 丁香五月天中文字幕| 亚洲免费99| 婷婷狠狠久久| 丁香婷婷人妻综合网| 三区激情四射av| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 站长推荐无码播放| 成人短视频在线| 九月影院義母在线播放| 久久加勒比| 99riAv1国产在线观看| 婷婷久久精品| 伍月婷丁香婷| 丁香美女主播视频在线观看| 五月天色网站| 五月天啪啪啪| 99在线观看精品视频| 亚洲视频一区| 91丨九色丨熟女丰满| 97在线视频观看| 丁香五月天精品| 丁香五月大片| 婷婷五月天Av| 五月丁香啪啪啪| www.亚洲激情.com| Av性爱网| 五月天精品视频| 人。妻久久| 久久人妻视频| WWW.99热| 国产永久一二一起草| 99久久五月天| 天堂婷婷五月色| 国产成人亚洲综合A∨婷婷| 99色色热| 啪啪小说五月天| 五月婷婷激情| 国产激情在线| 俺也去综合| 婷婷综合视频| 欧日韩AV| 极品少妇XXXX精品少妇偷拍| 五月天激情图片网| www婷婷色情网| 五月色婷婷综合| 中文字幕婷婷在线| 新伍月婷婷| 久/久精品99看9| 色噜噜丁香| 久久黄色网扯| 99ER热精品视频| 婷婷五月激情四月综合| 久久激情综合| 99久久婷婷五月综合| 99热这里只有精品33| 人人摸人人干| 九九热这里只有精品一| 丁香五月天激情四射网| 久久婷婷色综合| 欧美亚洲成人在线| 六月色婷婷| 大香蕉五月| 五月婷在线观看| 国产高清av黄色看片| 激情五月天婷婷激情| 欧洲亚洲精品| 五月丁香婷婷婷婷综合网| 久久九九爽| 91碰在线| 婷婷色五月丁香六月欧美啪| 六月丁香婷婷网| 色狠狠色噜噜AV天堂五区| 综合网激情五月天| 激情影院内射| 成人做爰高潮A片免费视频| 狠狠88综合久久久久噜噜噜| 国产精品涩涩涩视频网站| 五月婷色啪| 九九色天堂| 影视av久久久噜噜噜噜噜三级| 婷色五月| 婷婷五月丁香图片人人操| 久久视频这里有精品99| 久艹久| 开心激情婷婷| 丁香五月狠狠综合欧美| 成人婷99最新| 9精品视频在线| 99热这里只有精品16| 中文字幕免费高清电视剧| 久久婷婷五月天激情| 九九人人看| 亚洲乱码日产精品BD| 五月天激情视频五月天| 99热99网| 在线天堂9| 99热精品免费| 五月婷婷综合在线| 91ncm视频| 狠狠另类视频| 日本婷婷| 五月丁香综合影院| 六月五月久久丁香| 激情五月婷黄版| 婷婷久久色| 熟妇国产| 婷婷五月丁香四射| 国外亚洲成AV人片在线观看| 99久久精品国产色欲| 怡红院精品视频久久久久久久久| 99这里有精品免费| 婷婷色中文字幕| 日韩在线婷婷五月天综合| 日本色色色| 久婷婷婷| 99色这里| 新99思思视频| 久久这里面只有精品视频| 九九色影视| 丁香色五月婷婷17C| 五月丁香六月婷综合成人综合| 伊人激情网| 亚洲AV成人精品网站在线播放| 五月婷婷爽爽爽| 超碰妻人人| 日本婷婷激情四射中文字幕在线观看| 99视频| 一点色成人网| 国内9l视频自拍老熟女九色| 人妻Av在线| 操操熟女| 热久国产| 亚洲在线激情婷婷五月| 五月天激情小说欧美激情| 日本欧美成人片AAAA| 色色色999| 99在线精品视频| 99性爱视频| 成人免费超碰| 97人人搞| 丁香五月网络网络| 开心五月深爱五月婷| 色五月综合激情| av在线免费播放| 欧洲色| 99re热视频这里只精品| 成人午夜在线视频| 天天综合亚洲综合网天天αⅴ| 人人草人人爱手机视频看看 | 热久69| 狠狠操天天操天天操| 色5月婷婷| 亚洲色模骚货| 日本啪啪天堂| 婷婷丁香六月天| 六月 丁香 视频| 久久成人天| 国产精品色色| 99精彩视频网站在线| 丁香97综合| 婷婷五月天激情综合| 五月天激情综合10p| 激情五月天偷拍综合网| 丁香五月综合久久综合| 午夜丁香六月婷| 99激情| 99re热视频这里只精品| 涩涩涩,com| 99热主页日本| 久久五月视频| 玖玖爱资源站| 九九综合伊人| 日本99视频| 久久性操| www,天天干| 五月开心久久| 网站免费一站二站| 亚洲五月激情| 五月天丁香婷婷久久九| 婷婷丁香色五月亚洲| 色五月婷婷在线| 五月婷婷丁香大香蕉| a久久免费视频| 99久久99综合| 99免费| 色欲久久久久久综合网综合网| 五月四色色| 五月天激情国产综合婷婷婷| 狠狠色性| 久9精品视频| 99自拍视频在线| 五月停停色| 91人操| 色婷婷最爱五月| wwwav大香蕉| 91色五月在线观看| 看久久性爱视频| 超碰在线免费9| 99热6精品| 五月婷综合网| 9l视频自拍9l视频自拍九色学生| 五月婷婷偷拍| 婷婷五月丁香高清无码| 热99热久| 亚洲综合九九| 五月丁香色五月| 97碰碰碰| 婷婷色在线| 极品色丁香| 色婷婷色综合久久精品V| 日韩色色视频| 99热思思| 婷婷中文无码| 99久99久| 桃色五月婷婷| 人人爱国产| 亚洲婷婷丁香五月视频| 91丨九色丨白浆| 美国不卡视频| 色九九九九| 超碰成人黄色网| 九九激情综合| 色色色婷婷五月天| 日本爆乳片手机在线播放| 五月婷婷在线网站| 婷婷五月激情网站| 嫩模aV在线| 开心五月综合激情网| 婷婷欧美激情| 色婷婷四虎| 狠狠干狠狠操狠狠爱| 99这里只有精品| 五月婷婷色色| 天天肏视频| 97视频.干com| 久久色9| 丁香五月婷久久| 丁香涩涩五月天| 婷婷中文字暮| 婷婷成人基地| 99精彩视频| 99精品免费欧美小视频| 天天日天天色| 97人妻碰碰中文无码久热丝袜| 五月丁香青草综合啪啪| 亚洲婷婷激情888精品久| 婷婷五月综合视频免费播放| 日韩欧美一级大黄网站| 婷婷五月天激情五月天网站| 这里只有精品久| 色婷婷激情| 久久久久人妻精品| 久久国产成人9999久久久久| 九色成人AV在线| 97久操视频| 99热99热99热99热| 狠狠狠色激情综合适合| 99久久网站| 免费视频1区| 色色色色色五月| 丁香五月丐人妻| 思思热再线视频| 日韩黄色电影| 亚洲婷婷五月天| 97操在线资源| 97干在线| 丁香六月婷婷综合麻豆| 国产激情综合五月久久| 久久久中文| 九九99偷拍视频| 国产 亚洲 在线| 久久五月天黄色五月天色网址| 天天日,天天干,天天操| 九九99精品视频在线观看| 91精品综合久久久久久五月丁香| 亚洲性爱干干| 深爱激情丁香| 五月婷婷色白丝| 欧美激情丁香五月天久久婷婷一区| 九九热这里| 怎么样可以看免费的一级av| 五月色婷婷综合色| AV色婷婷| 9伊人网| 狠狠色婷婷在线| 26uuu欧美亚洲日韩| 91色噜噜狠狠狠狠色综合| 91高潮喷水久久久久久久久| 99综合网| 丁香六月综合激情| 激情五月婷婷她| 婷婷五月成人系列| 久热一区| 色天天综合| 99热香港| 激情五月六月婷婷| www.av视频xx999.com| 日韩av干| 99婷婷狠狠成为人免费视频| www.狠狠狠.com| 99久久国产宗和精品1上映| 六月婷婷七月丁香| 婷婷另类小说| 婷婷色无码| 黄色中文字目| 伊人久久五月天综合| 99精日本久久| 婷婷噜噜| 久操人| 五月综合激情| 99综合视频在线| AA片在线观看视频在线播放| 五月婷婷乱| 五月婷婷激情综合网 | 六月成人网| www.俺去也com| 任你爽在线视频| 色婷婷电影网| 欧洲亚洲免费视频区| 免费黄网不卡AV| 99精在线| 五月天快乐开心激情网| 久久九九激情五月天| 激情 婷婷 丁香五月天| 色五月,婷婷大香蕉| 六月丁丁香| 国产午夜一区二区三区| 在线中文字幕视频| www.com任你艹| 天天色天天| 亭亭五月天黑人2014| 碰97久久| www,setingting| 97色色色色色| www.com五月天| 五月丁香777| 青青夜夜狠狠夜夜狠狠| WWW.亚洲无码| 九九综合| 九九热在线视频观看| 五月丁香成人小说| 26UUU精品一区二区Com| www.激情在线| 国产伦理精品高清在线观看网站一区二区 | 99精品偷自拍| 四色永久成人网站| 久久9精品| 色婷婷久久综合久色综| 天天草人人摸| 伍月婷丁香婷| 人人人操| 伊人成综合五月婷婷| 中字幕视频在线永久在线观看免费| 秋霞成人毛片一级A片| 久久98热re| 人人射人人高潮| 人人人操| 99riAv1国产在线观看| 26uuu精品一区二区| 久久综合干| 激情五月天影院| 狠狠操天天操| 狠狠88综合久久久久噜噜噜| 久久久思思热| 日本va欧美va精品发布视频 | 婷婷五月草| 久久婷婷亚洲| 丁香五月电影| 色五月激情五月开心五月| 丁香六月婷婷| 亚洲免费综合一区| 99re热在线视频观看| 婷婷精品在线| 亚洲AV激情五月综合网| 五月天婷婷无码视频| www.99热在线| 热久久这里只有精品| 操逼视频网址| 色综合九九色综合88| 日韩成人电影AV| 思思99精品视频在线观看| 五月天无码视屏播放| 可以免费看AV网站| 久久六月综合| 99热99成人| 五月丁香亚洲综合网| 精品少妇蜜臀91| 香蕉操亚洲| 午夜69成人做爰视频| 色综合色综合色综合| 九九人人操| 伊人五月成人| 99ri国产| 婷色视频| 亚洲五月天狠狠| 久久总和99| 丁香婷婷五月激情四射网| 久久久久8888| 中文无码精品一区二区三区| 色吧五月婷婷| a在线免费v| 激情丁香五月天图片| 91久女| 99精品在线下载| 超碰狠狠操| 超碰成人影视| 天天人人综合| 超碰爱爱爱| 六月丁香综合999| 九九热啪啪| 五月丁香婷婷婷激情爱爱| 色亭亭五月天网扯| 色婷婷久久| 操91| 国产成人+综合亚洲+天堂| 秋霞AV美国| 99热这里只有精品免费| 高清国产一级婬片a免费| 五月天播播中文字幕| 亚洲成人av在线观看 | 在线播放 精品| 欧美激情综合色综合| 国产成人片| 成人深爱丁香五月| 香蕉久久国产AV一区二区| 婷激情五月天视频导航| 操操碰| 丁香五月天激情婷婷丁香六月 | 99热在线这里只有精品| 婷婷五月激情综合| 色综合五月婷婷狠狠干| 一区=区操屄高清大全av| 天天操婷婷| 97碰| 五月丁香六月婷| 久久精品永久免费| 国产免费av在线| 91se在线视频| 深爱激情四射| 丁香五月婷婷Av| 色色色综合网| 婷婷五月深深爱| 激情五月,激情综合网| 五月丁香婷婷成人网| 五月天激情日色在线| 国内一级精品| 亚洲五月天激情| 中文字幕色色色| 青草网在线观看| 日B日潘金莲BB| 97视频91| 亚洲色情激情丁香五月| 久热这里只有精品66| 黄色网址五月婷婷| 成人AV免费观看| 五月六月激情| 激情五月天丁香| 91碰免费视频| 9久热| 五月婷婷六月天| 99re鈥哸鈥唙| 天天干天天干天天干天天干天天| 久久九区| 丁香六月青青草| 在线另类| 天天色宗合| 六月丁香五月天| 5月婷婷6月丁香aV| 天天色天天爽| 中文字幕成| 日欧一片内射VA在线影院| 婷婷五月天狠狠色| 五月开心色| 亚洲色另类| 日韩99视频| 婷婷成人视频| 看全色黄大色大片| 激情五月天天狠狠久久| 亚洲综合激情五月| 免费观看的婷婷五月视频在线| 99成人小视频| 国产一级婬片毛片| 五月婷婷视频啪啪美女| 天天拍夜夜爽日日| 丁香婷婷射| 久色视频首页| 精品久久人妻热| 梁铮版《蜘蛛女侠》在线| 色婷婷国色天香综合| 五月亭亭六月色| 思思热热久久| AV在线免费播放| 婷婷涩涩五月天| 99啪99| 婷婷色影院| 人人操av| 另类图片五月天婷婷| 99人人干人人| 99热99热在线观看| 久婷狼色诱惑在线| av在线观看网址| 久久九九爽| 无码毛片992367| 色久天| 色色色热| 婷婷六月香| 亚洲秘 无码一区二区三区妃光/1| 五月丁香| 国产偷人爽久久久久久老妇APP| 亚韩在线视频| 青青操avbb| 色婷五月天网站| 免费观看大片视频 丁香婷婷 六月欧美| 色婷婷AAA| 香蕉久久五月| 九月丁香婷婷| 色色五月婷婷久久| 超爽内射| 天天噜天天爱| 天天综合久久| 在线日本www| 五月色情婷婷开心五月色情| AV在线资源| 2021日韩无码| 五月色 亚洲| 99热这里只有精品99| 九九精品综合| 操人久久| 色综合狠狠色| 天天日夜夜爽。| 激情又色又爽又黄的A片| 大香蕉婷婷丁香天堂AV| 亚洲在线操| 婷婷色五月天色| 久久婷婷五月综合伊人| 激情伊人五月天| 97luluse| 久久五月天黄色五月天色网址| 天天色99| 色婷大香蕉| 五月婷婷久草在线视频综合| 婷婷成人av| 亚洲婷婷免费| 超碰激情五月| 欧美婷婷五月丁香| 9 1大香蕉| 激情五月天激情五月天| 热99免费在线| 狠狠色综合网| 五月色情婷婷开心五月天| 五月丁香色色网| 色情五月天视频网| 亚洲妇女熟BBW| 亚城区在线| 91久久久久久久91| 色婷婷免费视频| 九九热中文| 日本天天操| 丁香婷婷六月激情综合| g00d人体西西| 97干在线| 丁香六月成人| 丁香五月欧美激情| 91视频一起草| 337p午夜影院| 9999热在线免费观看| 99热色精品| 人人做人人看人人摸| 黑人无码一区| 色色综合网站| 婷婷五月丁香成人| 97操碰视频| 我想看国产大学生口爆吞精的视频| 久久婷婷视频| 丁香五月婷久久| 亚洲激情视频在线观看| www五月婷婷| www夜夜操| 丁香五月六月| 婷婷六月激情综合| 久久亚洲婷婷综合色五月| 狠狠狠狠青草| 99在线精品免费视频| 五月天操逼网| 五月丁香六月婷婷网站| 日韩成人网站精品久久大全| 99热99在线| 伊人婷婷五月天av| 五月婷婷9| 国产激情一区| 成人综合网站| 五月婷婷基地| 久久伊人五月天| 婷婷六月激情综合| 五月天久久www| 能看的av片| 国产熟女日日骚五月丁香爱| 丁香香五月激情免费视频| 99久久9| 97精品在线| 玖玖五月| 91丨九色丨熟女高潮| 成人国产综合| 91综合在线视频| 午夜激情久久| 婷婷综合九月| 99在线视频资源| 99日本精品视频热| 丁香六月婷婷开心| 免费99情趣网视频| 精品国产人人爱人人| 色在线五月天免费| www.五月激情红色| 99视频只有这里精品| 综合激情深爱| 五月丁查人人| 色五月av| 婷婷色影院| 五月色综合| 天啪色| 欧美噜噜噜草| 天天日天天干天天插天天射| 日本高清久| 夜精品无码A片一区二区蜜桃| 五月丁香另类网| VA色婷婷| 99热精品无码| 九九这里只有精品| 超碰人人99| 五月停停直播| 91人碰| www婷婷色| 五月99久久| 丁香五月色播中文在线播放| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | 性爱技巧五月| 色婷婷香蕉| 熟女激情五月天| 婷婷五月天AV| 97操男人的天堂| 丁香婷婷六月激情| 亚洲AV网站| 亲子乱AV-区二区三区| 久草婷婷| 婷色五月天| 9久操| 五月丁香成人视频| 日本欧美成人片AAAA| 天天综合网~91| 五月丁香六月婷婷激情视频在线观看免费| 天天日天天舔| 色狠狠五月天| 国产精品久久..4399| 丁香社92视频| 九九视频精品这里只有| 99热色精品| 亚洲另类婷婷五月丁香在线播放| 色五月成人在线| 俺去也婷婷| 天天看片日日夜夜| 任你日视频| 久久精品91视频| 天天爽夜夜操| 99在线资源| 日韩 中文 欧美| 色色吧综合| 亚洲精品亚洲人成人网| 成人欧美日韩| 色婷婷久久综合| 久久狠狠欧美| 婷婷色播婷婷| 色色综合日韩| 亚洲亚洲人成综合网络| 深爱激情五月天婷婷网| 五月婷婷亚洲天堂97色婷婷| 天天色官网| 色五月色五天色情网址| 丁香六月婷婷综合欧美| 六月丁香啪| 超碰91人人操| 精热在线综合网| 九九操屄| 免费亚洲婷婷五月| 九九AV在线| 99热啪啪| 亚洲第一第二网站| 久久3级片| 91婷婷搞| 狠狠色综合777| 1999天天操夜夜操| 五月天色婷婷综合| 丁香五月天欧美| 99人碰碰碰| 国产毛片精品一区二区色欲黄A片| 五月婷婷六月综合| 青草性爱视频| 熟美女麻豆| 婷婷五月天影院| 五月婷婷色五月| 这里只有精品日韩| 久久99日本精品视频免费观看| 天天爽夜夜操| 成人五月丁香社区| 五月天婷婷高清无码| 好好干Av| 久久大香蕉伊人| 欧美丰满熟妇BBB久久久| 99精品热视频| 99热久| 日韩五月天婷婷| 狠狠色婷婷| 丁香五月欧美色综合| 女人被躁到高潮嗷嗷叫小| 97碰碰人人| 亚洲va欧洲va国产va不卡| 婷婷激情五月天综合| 久草性爱| 婷婷久久五月丁香| 色九九一二| 丁香五月成人自拍| 伊人在线大香蕉网| Av中文在线| 婷婷丁香六月天| 亚洲亚洲人成综合网络| 亭亭玉月丁香| 狠狠做深爱婷婷久久综合一区| 婷婷色综合| 婷婷激情图片| 99热综合色图| 五月婷婷亚洲色视频| 可以看的av| 超碰人人操人人干| 中字幕视频在线永久在线观看免费| 99热这里只有精品在线| 这里只有精彩视频| 欧美精品999| 国外亚洲成AV人片在线观看| 天天射影院| 无码AV大香线蕉伊人| 丁香社92视频| 国产精品久久..4399| 久久只这里有精品| www.婷婷五月| 丁香花五月天激情| 超碰人人色| 丁香色婷婷色手机免费在线| 丁香六月婷婷激情| 玖玖爱伊人| 色高清无码视频| 99精品网| 天天操综合网| 丁香五月停停av| 9l视频自拍9l视频自拍九色学生| 91热久久| 。久久久久久久久久久久久久人妻| 色婷婷a| 爱99干99| 久久精品夜色噜噜亚洲a∨| 亚洲小视频免费看| 99亚洲精品视频| 婷婷亚洲天堂| 亚洲精品影视| 99热精品在线在线| 97热91| 在线播放成人网站| 亚洲精品激情| 无码少妇高潮喷水A片免费| 国产视频福利| 狠狠狠夜夜夜| 麻豆AV一区二区三区| 91操熟女| 日本精品99| 色婷婷丁香综合中文字幕| 五月综合色播播丁香婷婷| www.99在线| 狠狠艹狠狠艹| 婷婷开心激情| 婷婷色五月激情| 五月开心久久| 丁香色五月AV在线| 亚洲激情精品| 婷婷丁香无码专区| 啪啪啪五月天| av操逼网| 日日操,夜夜爽| 嫩草极品| 永久天堂日本| 色久激情在线| 丁香五月天堂亚洲社区| 五月天五月天成人网亭亭成人色网站| 麻豆WWWCOM内射软件| 色五月激情问网站| 120分钟婬片免费看| 激情综合播播| 丁香五月停停av| 第五色色色婷婷| www九九免费视频| 日韩视频99|