← 所有文章

Q系列掃描時間尖峰的量測與分段定位

· 站長

以Q06UDVCPU官方掃描時間欄位、完整樣本計算與隔離分段測試,分清目前值、最大值及性能結論。

先分清目前值與已記錄最大值

機台偶爾反應變慢時,先確認你看到的是哪一種掃描時間。某次讀到三毫秒,只代表該次讀取取得的目前值;控制器保存的最大值若是八點九毫秒,兩者並不矛盾。本篇教你先證明尖峰,再縮小程式路徑,避免看見平均值很低就排除問題。

本篇以Q06UDVCPU及適用版本GX Works2為範圍。三菱QnUCPU手冊附錄三列出目前、最小與最大掃描時間,並說明量測精度。不要套用FX系列的D8010,也不要把模擬器執行速度當成Q06UDVCPU實機效能。本文數字是供計算練習的假設資料。

目前值使用SD520與SD521,最小值使用SD524與SD525,最大值使用SD526與SD527。每一組的前一個裝置存毫秒,後一個存不足一毫秒的微秒部分。例如SD520為3、SD521為400,表示3.4毫秒,不是把兩字組成三十二位元整數。

手冊所列儲存時間精度為正負0.1毫秒。因此即使欄位能顯示微秒部分,也不能把相差一微秒解讀成可信的性能改善。記錄原值、換算式與精度,並盡量以同一監看取得成對欄位;未確認讀取一致性時,避免用正在更新的兩欄推導極小差異。

開始記錄時保存CPU型號、程式版本、RUN狀態、監看方式及最大值累計的起點。若不知道最大值何時開始累計,就標記窗口未知;現在開始看二十秒,不代表已記錄最大值只涵蓋這二十秒。不要為了整理數字在生產現場任意清除或重置。

建立可比較的觀察窗口

先做不改程式的基準觀察,記下產品規格、輸入資料量、通訊對象與工程工具連線方式。相同程式處理一筆資料和一百筆資料,執行路徑可能不同;只寫同一版本不足以重做測試。把每個窗口的起訖與當時工作條件一起保存。

目前值若每秒讀一次,可能漏掉兩次輪詢之間的一次尖峰;控制器保存的最大值則可能繼續保留這次尖峰。兩種資料有不同用途:稀疏目前值用來觀察趨勢,最大值用來知道已累計範圍曾經達到的上限,不能把後者也當成瞬間採樣而說一定漏峰。

最大值本身無法告訴你尖峰發生一次還是一千次,也無法算出平均。頻率與平均需要定義明確的完整樣本、事件記錄或專門量測。若現有設備只留下最大值,報告就寫已知最大與未知頻率,不能從一個數字補出不存在的時間分布。

把批次回覆、配方載入、資料整理、定時處理等已知事件加入觀察表。這些是候選路徑,不是看到同時發生就認定原因。CPU掃描也包含I/O更新及其他處理;若只量到整體時間,尚未得到單條指令的執行時間。

測試前先定義可接受上限及功能要求,來源應是設備設計,不是文章任選一個毫秒數。若現場已有停止型異常或反應期限被破壞,先依設備程序處理,再安排量測;不要為抓到更大的尖峰而在生產設備持續增加負載。

用一千個離線樣本看懂尖峰

準備一份教學資料:一千個完整掃描樣本,其中九百九十八筆各為3.0毫秒,兩筆各為8.9毫秒。總時間是998乘3.0加2乘8.9,得到3011.8毫秒;平均為3.0118毫秒,最大8.9毫秒,最小3.0毫秒。這些是已知資料的計算結果。

尖峰樣本占兩筆除以一千筆,也就是百分之零點二。若只報平均約3.01毫秒,讀者容易忽略兩次較長掃描;若只報最大8.9毫秒,又不知道多數掃描仍約三毫秒。把樣本數、平均、最大與尖峰計數一起看,才知道問題的形狀。

假設每秒輪詢目前值時恰好都讀到3.0毫秒,監看圖就沒有峰。但若控制器最大值已在相同有效累計期間記下8.9毫秒,就能保留曾有峰的線索。這不表示提高輪詢頻率一定能找出完整兩筆;必須先證明新的收集方式覆蓋哪些掃描。

再加入一張離線事件表,標示兩個較長樣本都落在一百筆資料轉換被執行的窗口。下一步是比較資料量與路徑,不是立即把通訊模組判為故障。回覆抵達、陣列處理與輸出更新可能緊接發生,單一時間關聯還不足以分出各自貢獻。

練習把其中一筆8.9改為4.0毫秒,其餘不變。新總時間3006.9毫秒,平均3.0069毫秒,最大仍8.9毫秒。你應看出平均有下降而最大沒有變;不能只因平均改善,就宣稱最壞掃描已改善。

在隔離測試中逐段縮小範圍

建立可回復的測試副本,依功能把候選路徑列成資料接收、轉換、複製與後續計算。先檢查各路徑啟用條件、迴圈上限及實際處理筆數。跨段共用資料或同一掃描互相依賴時,不能直接移除一段再把剩下結果當成正常功能。

先用離線資料驗證功能,再由工程負責人規劃隔離實機的量測。模擬可幫你發現迴圈未受限、資料量不合理或條件反覆成立,但不能證明指定CPU的毫秒耗時。若需要新增量測或計數邏輯,先核對指令、裝置範圍與量測本身的負載。

每次只改一個可辨識因素,例如同一路徑處理十筆、五十筆與一百筆。記錄輸出結果是否一致,以及尖峰如何隨資料量改變。若停用整個功能才變快,只能說該功能在本條件下有貢獻,尚未得到保留完整功能的改善方案。

比較時重做基準與候選版本,維持相同輸入、連線及統計起點。原版本來有尖峰,回到原版後尖峰重現是重現性的證據;不能要求回原版後尖峰消失。候選版本則要在完整功能恢復後,再核對最壞時間和處理結果。

完成後應交付一張能追到版本與樣本的比較表,說明哪個條件改變、功能是否通過、最大值窗口是否一致。仍只有相關性時標為候選原因;沒有實機量測就保留性能待驗,不把數值計算或模擬結果寫成CPU性能驗收。

失敗排查與常見問題

看不到尖峰時,先查讀的是目前值還是最大值,再查累計起點、輪詢週期及資料是否中斷。最大值一直不變時,可能只是舊峰仍被保留,不能立即推定優化無效;先確認比較窗口,並按已核准的測試流程建立可比較紀錄。

問:兩個SD欄位可直接當DWORD嗎?答:這裡是毫秒部分加微秒部分,按手冊換算。例如3與400得到3.4毫秒,不能照一般雙字資料拼接。

問:每秒讀最大值會漏掉中間尖峰嗎?答:已被CPU最大值記錄且未重置的峰通常仍可讀到;但它不提供每次峰的時間與次數,且要確認累計範圍。

問:平均很低能排除反應超時嗎?答:不能。期限由設備功能決定,短暫較長掃描仍可能影響某一次反應,應核對最壞情境及實際功能結果。

問:只把某段關掉就能結案嗎?答:不能。先確認性能差異可重現,再提出保留必要功能的修正,最後於指定CPU與代表性工作條件驗證。

參考:三菱QnUCPU User Manual Function Explanation Program Fundamentals 附錄三 印刷頁473至474

延伸閱讀


使用 PLC 工具箱 →