← 所有文章

工業報表取樣週期與彙總週期的定義

· 站長

用五秒採集、一分鐘彙總與八小時班報,核對筆數、缺測權重、時間邊界及平均算法。

先把三個時間層次寫清楚

報表寫「每分鐘溫度」仍然不夠清楚。它可能每分鐘只讀一次,也可能每五秒取得資料後算成一分鐘平均,兩者能看到的變化不同。製作報表時,請分別填上採集週期、歷史保存規則與彙總週期,再標明欄位是平均、最大、最小或最後值。

本文用溫度訊號練習:每五秒成功取得一筆,全部保存,先彙總成一分鐘,再產生八小時班報。假設時鐘正確且沒有缺測,窗口採含起點、不含終點。例子是資料計算規則,不是特定PLC掃描或HMI內建設定。

採集是去來源取得數值;保存是決定哪些取得值進歷史庫;彙總則把多筆資料整理成報表結果。若先每五秒採集、再只於數值改變時保存,資料庫筆數不會固定等於每分鐘十二筆。報表上的十二筆應標明是預期採集數,不能當作實際落盤數。

另外記下時間戳代表取得瞬間、來源量測時間或區間結束。假設報表列名08:00代表[08:00,08:01),就不要又把08:00當前一分鐘結束。欄位名稱直接寫windowStart與windowEnd,能讓交接者看懂該列涵蓋什麼。

適用於SCADA、歷史資料庫與試算報表。本文以Ignition 8.1查詢文件作為平台例子;其他產品的平均算法、插值與時間邊界可能不同。模型可共用,函式名稱與預設行為要依實際版本核對。

每五秒一筆如何變成一分鐘

第一分鐘的時間點是08:00:00、05、10,依序到55秒,一共十二筆;08:01:00留給下一分鐘。八小時有四百八十分鐘,理想情況為5760筆原始資料與480列分鐘彙總。若多出第481列,先查是否把班次終點也建立成一個窗口。

用十二筆溫度做第一組測試:前十一筆都是60°C,最後一筆72°C。只針對這十二筆做樣本算術平均,結果為(11×60+72)÷12=61°C,最小60、最大72、最後72。這四個欄位都正確,但回答的問題不同。

分鐘平均61°C不表示整分鐘沒有高溫。若操作員要查是否曾超過70°C,應看分鐘最大值72°C或回查原始資料;若只保留平均,日後不能從61°C還原出72°C的峰值或確切發生時刻。

若宣告每筆代表其後五秒且採階梯保持,本例的時間加權平均也會是61°C;這是額外的持續時間假設。若訊號用線性插值或樣本間隔不等,結果可能改變。請把樣本平均與時間平均寫成不同欄名,不因這一例剛好相同就混用。

完成後保留一張對照表,欄位依序為窗口起訖、預期筆數、有效筆數、樣本平均、最小、最大、最後有效值及其時間。看到最後值72°C時,讀者也應能知道它來自08:00:55,而不是08:01:00的新資料。

分鐘平均再平均會出什麼問題

改做兩分鐘缺測案例。第一分鐘有十二筆有效值且平均60°C;第二分鐘只收到三筆有效值且平均80°C,其餘九筆未知。若報表要算這十五筆已觀測樣本的平均,應算(12×60+3×80)÷15=64°C,而不是把60與80各算一票得到70°C。

這個64°C只代表已觀測十五筆的平均,不能宣稱完整兩分鐘的時間平均。總預期二十四筆、有效十五筆,樣本到齊率為百分之六十二點五;缺測的四十五秒是否維持80°C並不知道。要估完整時間平均,必須另定有效覆蓋時間與補值規則。

如果兩個分鐘窗口都完整,而且每筆代表相同五秒,平均的平均才與全部樣本平均一致。只要有效筆數、窗口長度或品質剔除不同,就要保留分子與分母,例如sampleSum與sampleCount;日報由總和除以總數,而不是再平均顯示後的四捨五入值。

時間加權則保留數值乘有效持續時間的積分及有效秒數。樣本筆數不是持續時間,不能用三筆去猜十五秒以外的狀態。若採保持值,應設定最大可保持多久、品質失效怎麼切斷,並把估算覆蓋與實測覆蓋分開。

最高值可以從各分鐘最高值取最大,但前提是每分鐘使用同一品質與窗口規則;分鐘平均的最大值不是原始峰值。累計產量也不能把每分鐘累計讀值直接相加,應另按增量規則計算。

把平台查詢設定與報表規則對齊

Ignition 8.1的queryTagHistory可設定彙總方式;Average是時間加權,SimpleAverage是樣本算術平均,MinMax會在每個時間片回傳兩個值。設計報表欄位時先選清楚需求,不要只選名字看起來最接近的Average。

官方文件特別提醒歷史查詢包含endDate,可能產生額外區間或讓相鄰查詢在邊界重複。本文採半開窗口,實作時需要核對回傳每列的時間與所代表窗口,依文件設定查詢邊界並測試,不是把08:00到16:00原封不動傳入就保證四百八十列。

查詢時也要記錄是否插值、是否忽略Bad品質及是否包含邊界種子值。種子值可協助計算窗口開始時的狀態,但不應直接算成窗口內新增取得的一筆。看到筆數增加時,先拆開原始資料與查詢生成值。

以未插值的原始案例核對十二筆與5760筆,再加入缺測。若在所有資料刪除後查詢仍產生平滑曲線,先查插值或保持設定;若只有畫面縮放後最大值消失,檢查圖表是否改用平均彙總,而不是先懷疑感測器。

報表應附上採集週期五秒、保存規則全部保存、彙總一分鐘、班次起訖與時區、平均算法、品質剔除和缺測政策。設定有版本,報表也要記版本,讓同一批原始資料可在同一規則下重算。

驗收練習與常見問題

先做完整資料測試,再做缺九筆測試,最後放入恰好08:01:00的邊界資料。預期第一分鐘仍只含00至55秒十二個位置,缺測案例樣本到齊率為百分之六十二點五,邊界值只進下一分鐘。這三項比只看趨勢有沒有線更容易找出錯誤。

八小時報表若只有479列,先查開始或結束窗口是否被截掉,再查空窗口是否被省略。不要直接補一列零;查詢結果缺列、窗口內無有效值與實際量測零度是不同狀態。匯出和畫面必須套用同一窗口規則。

問:一分鐘報表是否只需每分鐘採集?答:要看是否需要看到分鐘內的變化。彙總週期不會提高原始取樣能力。

問:把分鐘平均再平均一定錯嗎?答:不一定;相同有效筆數或相同有效時間、相同算法時可能成立,缺測時要重新檢查權重。

問:最後值可以代替平均嗎?答:不能,它代表窗口尾端最近的有效樣本,應一併顯示來源時間與品質。

問:回傳480列就是正確嗎?答:列數只是第一關,還要驗證每列窗口、邊界、有效數與算法。本篇已核對文件與手算。

參考:Ignition 8.1 queryTagHistory:彙總算法、endDate包含邊界與插值參數。

延伸閱讀


使用 PLC 工具箱 →