化改進)
已完成第一階段基礎(chǔ)優(yōu)化未改動上料、搬運、測試、吹掃等具體工藝動作。主要改動[PLCController.cs]增加完整PlcSignalSnapshot包含采集序列號、時間、信號值、連接狀態(tài)、數(shù)據(jù)有效性。批量讀取完全部信號后才發(fā)布SnapshotChanged避免 U/V/W 等組合條件讀取到半更新狀態(tài)。PLC 斷線時發(fā)布無效快照等待流程不再錯誤使用舊緩存判斷聯(lián)鎖。新增StopPollingAsync()停止輪詢時等待舊任務退出避免重啟輪詢產(chǎn)生短暫并發(fā)讀取。[PlcSignalSnapshot.cs]新增 PLC 快照、信號變化和事件參數(shù)模型供后續(xù)工藝流程統(tǒng)一使用。[PlcCondition.cs]PlcConditionWaiter已由Task.Delay循環(huán)檢查改為“PLC 完整快照變化時喚醒”。保留原有調(diào)用方式、超時、取消、仿真和每 5 秒未滿足條件日志。等待前、訂閱后均立即檢查一次避免信號已到位但漏觸發(fā)。讀取無效或 PLC 斷線時日志會明確顯示“PLC快照無效”或“PLC未連接”。驗證dotnet build MaxWell.sln --no-restore --verbosity:minimal已通過0個錯誤。項目原有警告仍存在未在本階段擴散處理。上機先驗證單站搬運的下降到位、頂升到位等待。PLC 斷線后等待日志顯示“PLC未連接”且不觸發(fā)工藝動作。PLC 恢復連接后新的有效快照能正常繼續(xù)滿足等待條件。自動模式反復啟動、停止、復位確認同站沒有重復輪詢或重復流程。六站并行運行確認 PLC 通訊無新增斷連。本階段通過后下一步建議只替換TransportProduct的測試位下降/頂升等待作為第一個低風險工藝驗證點。第二階段優(yōu)化已完成。修改文件TransportProduct.cs第一階段基礎(chǔ)文件 PLCController.cs本階段改動測試位下降到位等待改為統(tǒng)一快照事件等待。測試位頂升到位等待改為統(tǒng)一快照事件等待。刪除TransportProduct內(nèi)部的while Task.Delay判斷。不再由搬運 Worker 重復讀取 PLC。保留原有PLC 寫入順序WriteLoadingComplete搬運握手電學保護判斷自動化 SOT 回調(diào)超時處理取消處理輔控錯誤日志。支持信號已經(jīng)滿足時立即繼續(xù)避免等待事件訂閱后漏掉當前狀態(tài)。核心邏輯現(xiàn)在是先檢查當前 PLC 快照 | |-- 已滿足立即執(zhí)行下一步 | |-- 未滿足等待完整快照變化 | |-- 條件滿足繼續(xù) |-- 超時返回失敗 |-- 取消退出流程驗證結(jié)果dotnet build MaxWell.sln --no-restore --verbosity:minimal 0 個錯誤本階段上機驗證建議測試位已經(jīng)下降到位時確認立即執(zhí)行搬運。測試位未下降時改變 PLC 下降到位信號確認能夠被喚醒。搬運啟動后改變頂升到位信號確認能夠進入預測試。信號長時間不滿足確認正常超時。搬運等待過程中點擊停止或復位確認等待能夠取消。六個工站同時執(zhí)行搬運確認沒有新增 PLC 或 socket 斷連。連續(xù)執(zhí)行多顆器件確認沒有重復寫入上料完成指令。本階段上機驗證通過后下一階段建議優(yōu)化PreTest.cs中“等待測試位頂升到位”的重復等待邏輯。第三階段優(yōu)化已完成。修改文件PreTest.cs本階段改動將預測試前“等待測試位頂升到位”的while Task.Delay邏輯刪除。改為使用統(tǒng)一的PlcConditionWaiter.WaitAsync。等待過程由 PLC 完整快照變化觸發(fā)。保留原有超時配置LifterUpWaitTimeoutMs。保留取消機制。保留預測試超時異常等待測試位頂升到位超時預測試未開始。保留測試位已經(jīng)到位時立即進入預測試的行為。刪除不再使用的LifterUpPollIntervalMs。沒有修改預測試命令順序和主控板通訊邏輯?,F(xiàn)在流程如下進入預測試 | 檢查當前 PLC 快照 | |-- 頂升到位記錄日志開始預測試 | |-- 未到位等待 PLC 快照變化 | |-- 頂升到位開始預測試 |-- 超時拋出預測試超時異常 |-- 停止/復位取消等待驗證結(jié)果dotnet build MaxWell.sln --no-restore --verbosity:minimal 0 個錯誤第三階段上機測試測試位已頂升到位確認預測試立即開始。測試位未頂升改變 PLC 頂升到位信號確認流程自動繼續(xù)。頂升信號長時間不成立確認超時并進入原有故障處理。頂升等待過程中點擊停止或復位確認流程可以取消。六個工站同時執(zhí)行預測試確認沒有新增 PLC 或主控板通訊斷連。連續(xù)測試多顆器件確認不會重復進入預測試。本階段上機驗證通過后下一階段建議優(yōu)化UnLoadProduct.cs中的吹掃開始和吹掃完成等待。第四階段優(yōu)化已完成。修改文件UnLoadProduct.cs本階段改動新增WaitForPurgeStartAsync等待開始吹掃標志位true。使用統(tǒng)一PlcConditionWaiter。由 PLC 完整快照變化觸發(fā)不再由業(yè)務循環(huán)主動等待。新增WaitForPurgeCompleteAsync等待吹掃完成標志位5。明確使用數(shù)值精確匹配避免將其他非零狀態(tài)誤判為完成。修正吹掃超時時間計算原代碼PurgeTimeoutMinutes*6000*10006分鐘實際會被計算成約10小時?,F(xiàn)改為privatestaticreadonlyintPurgeTimeoutMschecked((int)TimeSpan.FromMinutes(PurgeTimeoutMinutes).TotalMilliseconds);實際等待時間為 6 分鐘。保留原有業(yè)務順序等待開始吹掃 - 等待吹掃完成5 - 寫非強制鎖定 - 寫吹掃完成 - 判斷上料位光電 - 進入人工下料驗證結(jié)果dotnet build MaxWell.sln --no-restore --verbosity:minimal 0 個錯誤第四階段上機驗證開始吹掃信號已經(jīng)為真時確認立即進入吹掃等待。開始吹掃信號從假變真時確認流程自動喚醒。吹掃狀態(tài)為1、2、3、4時確認不會誤判完成。吹掃完成狀態(tài)變?yōu)?時確認進入人工下料。6 分鐘內(nèi)未完成時確認返回吹掃超時錯誤。吹掃等待期間點擊停止或復位確認可以取消。六個工站同時執(zhí)行吹掃確認沒有新增 PLC 或 socket 斷連。本階段驗證通過后下一階段建議優(yōu)化ManualMaterialRemovalService的取料完成等待。第五階段優(yōu)化已完成。修改文件ManualMaterialRemovalService.cs改動內(nèi)容刪除人工/自動化取料階段內(nèi)部的while Task.Delay(200)PLC 條件輪詢。取料完成條件改為統(tǒng)一PlcConditionWaiter.WaitAsync安全光幕恢復當前封裝要求的 U/V/W 光電均無器件載盤條件成立。PLC 條件滿足后仍按原順序?qū)慦riteUnloadingCompleteWriteNonForceLockWriteRunLightOff自動化邏輯保持自動化開啟才發(fā)送EQPEOUSend。發(fā)送失敗最多重試 3 次。發(fā)送失敗后繼續(xù)等待現(xiàn)場取料不會卡設(shè)備。自動化關(guān)閉時不發(fā)送通知也不啟動 20 分鐘提醒。自動化開啟時PLC 取料等待和 20 分鐘提醒并行。取料完成后立即繼續(xù)不會等待提醒計時器。提醒只顯示一次提醒后仍繼續(xù)等待 PLC 現(xiàn)場條件。核心流程發(fā)送自動化取料通知最多3次 | 啟動 PLC 取料條件等待 | -- 自動化關(guān)閉只等待 PLC 條件 | -- 自動化開啟PLC 條件等待 與 20分鐘提醒并行 | -- 取料完成立即寫PLC完成握手 -- 提醒到期彈窗一次繼續(xù)等待 -- 超時不寫取料完成返回失敗 -- 停止/復位取消等待驗證dotnet build MaxWell.sln --no-restore --verbosity:minimal 0 個錯誤上機驗證自動化關(guān)閉時確認不發(fā)送EQPEOUSend也不出現(xiàn) 20 分鐘提醒。自動化開啟且取料完成時確認立即寫取料完成、非強制鎖定、關(guān)閉 RUN 燈。自動化發(fā)送失敗 3 次時確認仍繼續(xù)等待人員取料。到達提醒時間但未取料時確認只提示一次流程繼續(xù)等待。取料等待期間關(guān)閉自動化確認不會再彈自動化提醒。取料等待期間停止、復位、結(jié)批確認等待正常取消。六工站同時等待取料確認不新增 PLC/socket 斷連。下一階段建議優(yōu)化LoadProduct.cs的上料許可和器件到位等待。這是高風險流程建議只先遷移“初始上料許可”這一組條件確認通過后再處理多器件掃碼。第六階段優(yōu)化已完成。修改文件LoadProduct.cs本階段只處理“初始上料許可等待”強制鎖定 - 等待允許上料 - 等待載盤到位 - 確認吹掃完成標志位 ! 5 - RUN藍燈閃爍 - 允許操作員上料具體改動新增WaitForInitialLoadingPermitAsync方法。初始上料條件統(tǒng)一由PlcConditionWaiter判斷。等待由 PLC 完整快照變化觸發(fā)。PLC 條件已經(jīng)滿足時立即繼續(xù)不會漏掉當前狀態(tài)。保留原有超時值PlcPollingTimeoutMs。將超時時間轉(zhuǎn)換為TimeSpan避免直接使用毫秒數(shù)字。保留原有強制鎖定、RUN 藍燈閃爍和后續(xù)掃碼邏輯。本階段未修改器件放置檢測單器件掃碼三器件順序掃碼掃碼失敗重試第 2、3 顆器件等待。驗證結(jié)果dotnet build MaxWell.sln --no-restore --verbosity:minimal 0 個錯誤上機驗證允許上料已經(jīng)為真時確認立即進入上料提示。允許上料從假變真時確認自動喚醒。載盤未到位時確認不會進入掃碼。吹掃完成標志為5時確認不會允許上料。等待期間點擊停止或復位確認能夠取消。六個工站同時等待初始上料許可確認無新增 PLC/socket 斷連。連續(xù)開批、結(jié)批、重新開批確認沒有殘留等待任務。本階段上機驗證通過后下一階段建議只優(yōu)化LoadProduct的“第 2、3 顆器件等待上料條件”隨后再處理掃碼前器件到位等待。第七階段優(yōu)化已完成。修改文件LoadProduct.cs本階段只優(yōu)化三器件流程中第 2、3 顆的上料等待。新增方法WaitForNextDeviceLoadingPermitAsync等待條件允許上料標志位 true 上料位載盤檢測 true流程變?yōu)榈?顆掃碼成功 - PLC切換下一顆位置 - 等待第2顆上料許可 - 掃碼第2顆 - PLC切換下一顆位置 - 等待第3顆上料許可 - 掃碼第3顆優(yōu)化內(nèi)容第 2、3 顆不再直接調(diào)用通用等待方法。使用明確的“下一顆上料許可”方法。通過 PLC 完整快照變化喚醒。當前條件已經(jīng)滿足時立即繼續(xù)。日志明確顯示等待第 2 顆或第 3 顆上料許可。保留原有超時、取消和失敗處理。保留原有缺料報警和對應相位光電檢測。沒有修改掃碼順序和掃碼結(jié)果寫入邏輯。驗證結(jié)果dotnet build MaxWell.sln --no-restore --verbosity:minimal 0 個錯誤上機驗證第 1 顆掃碼成功后確認等待第 2 顆上料許可。第 2 顆掃碼成功后確認等待第 3 顆上料許可。允許上料已經(jīng)為真時確認立即進入下一步。載盤未到位時確認不會提前掃碼。PLC 信號從假變真時確認流程自動喚醒。等待過程中點擊停止或復位確認流程能夠取消。第 2 或第 3 顆超時確認進入原有退料和錯誤處理。六個工站同時執(zhí)行三器件掃碼確認沒有新增 PLC/socket 斷連。第七階段上機驗證通過后下一階段建議優(yōu)化LoadProduct的單器件和三器件“掃碼前器件到位 安全光幕 缺料報警”組合等待。第八階段優(yōu)化已完成修改文件LoadProduct.cs主要內(nèi)容新增CreateDevicePlacementBeforeScanConditions統(tǒng)一處理安全光幕、封裝類型對應的 U/V/W 光電檢測。新增WaitForDevicePlacementBeforeScanAsync人工輸入和自動掃碼共用器件到位等待邏輯。新增WaitForScanConditionsAsync統(tǒng)一處理允許掃碼、安全光幕及第 2、3 顆器件的附加條件。WaitForPlcConditionsAsync增加operationName日志可明確區(qū)分當前等待步驟。保留原有掃碼順序、掃碼失敗重試、黃燈/紅燈、退料和 PLC 握手時序。封裝類型仍通過PackageType.ini決定檢測哪些光電位置不再固定判斷 U/V/W 全部信號。驗證結(jié)果dotnet build MaxWell.sln --no-restore --verbosity:minimal 0 個錯誤 255 個已有警告建議上機驗證單器件、UV/UVW 等不同封裝類型上料分別測試人工輸入、自動掃碼、第 2/3 顆等待、掃碼失敗重試以及光幕觸發(fā)場景。第九階段優(yōu)化已完成修改文件UnLoadProduct.cs本階段內(nèi)容將WaitForUnloadPermissionAsync從獨立while Task.Delay循環(huán)改為統(tǒng)一使用PlcConditionWaiter。統(tǒng)一判斷以下三個條件上料位載盤檢測為真允許取料標志位為真安全光幕為假。等待過程中不再頻繁讀取 PLC減少通信壓力。強制鎖定只在進入等待前解除一次避免重復寫 PLC。兩個下料入口統(tǒng)一使用UnloadTimeoutMs。修復原代碼超時時間錯誤原UnloadTimeoutMinutes * 6000 * 1000實際約為 5 小時現(xiàn)在統(tǒng)一為配置含義對應的 5 分鐘。保留仿真模式、掃碼失敗退料、人工下料和 PLC 完成握手邏輯。驗證結(jié)果dotnet build MaxWell.sln --no-restore --verbosity:minimal 0 個錯誤 255 個已有警告建議上機驗證允許取料未到位、光幕觸發(fā)、載盤缺失、正常允許取料及等待超時等場景。第十階段優(yōu)化已完成。修改文件StationInitializationService.csStationControlViewModel.Mode.cs主要優(yōu)化初始化等待從while ReadSignalFresh Task.Delay改為PlcConditionWaiter快照事件等待。初始化支持兩個結(jié)束條件初始化完成標志位為真允許清料標志位為真。允許清料信號出現(xiàn)時立即返回清料結(jié)果不需要繼續(xù)等待初始化超時。統(tǒng)一使用PlcSignalValueConverter刪除StationInitializationService中重復的 PLC 布爾轉(zhuǎn)換代碼。初始化等待日志增加正確的工站號避免多工站同時初始化時日志全部顯示為站號0。保留仿真模式、取消機制、初始化失敗返回及后續(xù)測試單元初始化邏輯。驗證結(jié)果dotnet build MaxWell.sln --no-restore --verbosity:minimal 0 個錯誤 255 個已有警告建議上機驗證初始化完成標志正常變?yōu)檎娉跏蓟^程中允許清料標志變?yōu)檎娉跏蓟瑫r多個工站同時初始化復位取消初始化流程。第十一階段優(yōu)化已完成。修改文件PlcSignalValueConverter.csBatchLifecycleService.cs主要優(yōu)化新增公共方法PlcSignalValueConverter.TryGetBooleanbool按原值處理數(shù)值型只有 0才判定為真0、負數(shù)判定為假字符串支持true/false和數(shù)值無法解析、空值返回false不會誤放行。BatchLifecycleService刪除內(nèi)部重復的TryToBoolean方法。開批檢查統(tǒng)一使用公共轉(zhuǎn)換方法允許清料標志位補盤標志位。結(jié)批檢查統(tǒng)一使用公共轉(zhuǎn)換方法封裝類型對應的 U/V/W 光電吹掃位器件檢測測試位器件檢測。保留ReadSignalFresh開批和結(jié)批屬于安全邊界檢查仍讀取當前 PLC 實時值沒有改動開批、結(jié)批的業(yè)務順序。驗證結(jié)果dotnet build MaxWell.sln --no-restore --verbosity:minimal 0 個錯誤 255 個已有警告第十一階段建議上機驗證負數(shù)、0、1、5、空值以及字符串型 PLC 信號的判定結(jié)果。第十一階段優(yōu)化已完成。修改文件PlcSignalValueConverter.csBatchLifecycleService.cs主要優(yōu)化新增公共方法PlcSignalValueConverter.TryGetBooleanbool按原值處理數(shù)值型只有 0才判定為真0、負數(shù)判定為假字符串支持true/false和數(shù)值無法解析、空值返回false不會誤放行。BatchLifecycleService刪除內(nèi)部重復的TryToBoolean方法。開批檢查統(tǒng)一使用公共轉(zhuǎn)換方法允許清料標志位補盤標志位。結(jié)批檢查統(tǒng)一使用公共轉(zhuǎn)換方法封裝類型對應的 U/V/W 光電吹掃位器件檢測測試位器件檢測。保留ReadSignalFresh開批和結(jié)批屬于安全邊界檢查仍讀取當前 PLC 實時值沒有改動開批、結(jié)批的業(yè)務順序。驗證結(jié)果dotnet build MaxWell.sln --no-restore --verbosity:minimal 0 個錯誤 255 個已有警告第十一階段建議上機驗證負數(shù)、0、1、5、空值以及字符串型 PLC 信號的判定結(jié)果。第十二階段優(yōu)化已完成。修改文件StationControlViewModel.Safety.cs主要優(yōu)化WaitForAllStationPositionsEmptyAsync從while Task.Delay改為統(tǒng)一使用PlcConditionWaiter。復位清空條件統(tǒng)一為當前配方PackageType.ini對應的 U/V/W 光電均無器件吹掃位無器件測試位無器件。未選擇封裝類型時按 U/V/W 全相位檢查避免誤判為空站。超時后保留當前實際占用位置如上料位 U 相、吹掃位、測試位便于現(xiàn)場排查。補齊MaxWell.Driver.M.Model引用并移除重復 using。驗證結(jié)果dotnet build MaxWell.sln --no-restore --verbosity:minimal 0 個錯誤 237 個已有警告建議上機驗證不同封裝類型的復位清料、吹掃位殘留、測試位殘留、無配方復位以及兩分鐘超時提示。第十三階段優(yōu)化已完成重點優(yōu)化正式測試前AllowTestingFlag等待邏輯使用PlcConditionWaiter監(jiān)聽 PLC 快照變化減少無效輪詢和線程占用。保留 10 秒 PLC 信號有效性檢查。保留正式測試 33 分鐘總超時。流量、溫度、氣密報警出現(xiàn)時立即退出并進入異常處理。統(tǒng)一使用PlcSignalValueConverter解析 PLC 布爾值。避免正式測試流程重復讀取 PLC降低通信沖突風險。驗證結(jié)果dotnet build MaxWell.sln --no-restore編譯錯誤0git diff --check通過現(xiàn)有項目警告仍存在但不是本階段新增的編譯錯誤。第十四階段優(yōu)化已完成修改文件MainBoard.cs主要內(nèi)容恢復MainBoardDriver.ExecuteAsync的連接級互斥鎖。重試期間持續(xù)占用鎖避免遲到響應被下一條指令讀取。SendRawAsync原始報文接口也加入同一把鎖。拆分SendRawCoreAsync避免重復加鎖造成死鎖。確保異常、取消、超時后始終釋放鎖。該優(yōu)化可以降低多工站同時運行時出現(xiàn)以下問題的概率Socket 收發(fā)交叉。主控響應錯幀。無響應。數(shù)據(jù)包解析失敗。TCP 連接頻繁斷開。驗證結(jié)果MainBoard.cs編譯目標通過。git diff --check通過。完整解決方案編譯時受到正在運行的MaxWell進程占用 DLL 文件影響未終止該進程。第十五階段優(yōu)化完成聚焦 TCP 斷鏈與半包發(fā)送問題。修改TcpConnector.csSocket.Send改為循環(huán)發(fā)送確保整條報文完整寫入。識別Receive0、遠端 FIN/RST、SocketException。通信異常后作廢舊 Socket下次請求自動建立新連接。Socket.Connected增加Poll Available校驗避免誤判連接仍有效。原始讀寫、關(guān)閉、重建連接統(tǒng)一加鎖。WriteBufferSize2000仍可使用它僅作為單次分塊大小不是 TCP 最大報文限制。MainBoard.cs主控響應超時、CRC 錯誤、幀錯位時主動關(guān)閉當前連接。第十四階段的命令級重試會在下一次嘗試時使用新 Socket避免遲到舊響應污染新命令。驗證通信項目和設(shè)備項目CoreCompile通過。git diff --check通過。完整解決方案仍無法構(gòu)建因為運行中的MaxWell進程占用了bin\Debug\MaxWell.Models.dll。第十六階段優(yōu)化完成修改文件ElectricalTestDataCollector.cs本階段優(yōu)化內(nèi)容主控返回大量數(shù)據(jù)時每次最多讀取64組。避免SavedDataGroups9602時一次性構(gòu)造超大報文。防止ReadDataLength轉(zhuǎn)換為ushort時溢出。避免單個工站長時間占用主控通信鎖。未讀取完的數(shù)據(jù)由下一次采集周期繼續(xù)讀取。增加空數(shù)據(jù)保護避免空幀繼續(xù)進入溫度換算、曲線和 CSV。增加取消檢查停止測試時不會繼續(xù)發(fā)起讀取。日志記錄本次請求數(shù)量、實際接收數(shù)量和剩余數(shù)量。驗證結(jié)果MaxWell.Driver.M項目構(gòu)建通過。編譯錯誤0git diff --check通過現(xiàn)有項目警告仍保留未新增編譯錯誤。第十七階段優(yōu)化完成主要完善主控板批量數(shù)據(jù)讀取的協(xié)議邊界。修改內(nèi)容DebugToolCommands.cs單次最多讀取64組。單次最大數(shù)據(jù)長度為6400字節(jié)。防止讀取數(shù)量過大導致ushort溢出或 Socket 報文過大。校驗響應長度必須是100字節(jié)數(shù)據(jù)組的整數(shù)倍。解析失敗改為拋出明確異常不再返回null掩蓋通訊故障。ManualHardwareService.cs手動讀取數(shù)據(jù)限制為最多64組。手動采集接口同步增加數(shù)量校驗。超過限制時提示分批讀取。FormMainDriver.cs調(diào)試工具讀取前校驗范圍1~64。輸入非法數(shù)量時不發(fā)送主控指令。驗證結(jié)果MaxWell.Communication構(gòu)建通過。MaxWell.Device構(gòu)建通過。MaxWell.Driver.M構(gòu)建通過。MaxWell.DebugTool構(gòu)建通過。編譯錯誤0git diff --check通過。建議上機驗證輸入64組應正常發(fā)送輸入65或更大數(shù)量應直接提示分批讀取。已完成第十九階段優(yōu)化重點解決 PLC 輪詢與業(yè)務讀寫的競態(tài)問題。主要修改批量讀取原子化AuxPLC.cs整批 PLC 地址讀取期間禁止其他寫入插入。避免生成不同時間點混合的 PLC 快照。開批、結(jié)批統(tǒng)一使用有效快照BatchLifecycleService.cs移除業(yè)務流程中的ReadSignalFresh。開批前清料、補盤檢查以及結(jié)批物料檢查都基于同一份完整快照。PLC 未連接、快照無效或信號缺失時直接禁止操作并返回明確原因。修復 PLC 釋放順序DeviceManager.cs釋放順序調(diào)整為停止 PLC 輪詢 - 等待輪詢?nèi)蝿胀顺?- 釋放 AuxPLC Socket避免關(guān)閉工站或重連時出現(xiàn)“已釋放對象仍在讀取 PLC”。保留ReadSignalFresh兼容能力該方法仍保留給 DebugTool 診斷使用。生產(chǎn)流程、等待條件、實時顯示不再使用該方法。驗證結(jié)果編譯錯誤0 git diff --check通過現(xiàn)場建議驗證PLC 正常輪詢時執(zhí)行開批、結(jié)批。PLC 斷線后執(zhí)行開批確認禁止操作并提示 PLC 快照無效。批量讀取期間執(zhí)行 PLC 寫入確認不會出現(xiàn)報文交叉。關(guān)閉工站或重新連接工站確認不再出現(xiàn)釋放對象和輪詢線程沖突。