壓差設備軟體整合 FAQ
壓差設備軟體整合 FAQ
給軟體與系統工程師:Modbus 位址與例外處理、RS-485、4–20 mA、MQTT/OPC UA、BACnet、時序資料庫、告警設計、校時、資安與 GMP 資料完整性 — 30 題解答,每題附來源
本頁 30 則問答以壓差設備(如無塵室壓差監測)的軟體整合為主題,涵蓋 Modbus、RS-485、4–20 mA、MQTT、OPC UA、BACnet、時序資料、邊緣緩存、告警、時間同步、資安與 GMP 資料完整性,內容依公開來源整理(整理日期:2026-10-22)。每題答案下方皆列出參考來源,並依來源性質標示可信度等級:
- L1 原廠原廠/製造商技術文件與官方文件
- L2 政府/標準標準組織與政府或認證機構(如 Modbus Organization、OASIS、IETF、OPC Foundation)
- L3 經銷商/媒體經銷商、產業媒體、廠商技術文章與學術論文
- L4 第三方一般第三方網站(僅作輔助)
- 昶特 ATLANTIS 不提供 IoT/AWS 整合服務,客戶需自行整合並連接自有平台;本頁為通用的軟體工程說明,不代表昶特 ATLANTIS 產品功能。
- 標示「換算」或「粗估」者(第 1 題的浮點數解碼驗算、第 2 題的 RS-485 輪詢週期、第 20 題的單位換算驗算)為依來源數據所做的計算,非來源原文。
- Modbus、OPC UA、ISO 14644、IEC 62443、EU GMP Annex 1、FDA 指引等標準與法規原文未逐條取得全文,部分來源為廠商或第三方技術文章,數值請以標準原文為準。
- 參考來源網址取自公開搜尋結果,連結可能隨網站改版而變動。
- 第 29、30 題的法規內容為公開指引的摘要,並非法律意見,亦不構成任何 GMP 合規聲明;警報門檻等數值須由使用者依其品質系統決定。
- 各型號的通訊介面、暫存器表、規格與交期,請洽昶特 ATLANTIS 工程師確認。
軟體整合常見問題
4 大主題、30 個給軟體與系統工程師的問題,每題附來源
Q1Modbus 暫存器讀到 32 位元浮點數結果亂掉(接近 0 或極小值),應如何排查位元組序與字序?
A1
Modbus 規範每個暫存器內為高位元組在前,但兩個暫存器組成 32 位元值時的字序(哪個暫存器放高位字)由廠商決定,須以暫存器表確認並用已知實際量測值驗證。
- 兩個獨立決定:暫存器內的位元組序(Modbus 規範為大端)與跨暫存器的字序(因廠商而異)。
- 症狀:地址正確但浮點數讀出接近 0、負值或約 1e-38 的極小值,幾乎可判定是字序或位元組序不符。
- 排查步驟:先讀原始暫存器值 → 依 ABCD/CDAB/BADC/DCBA 四種組合解碼 → 與已知物理量(如已知 25.0 Pa)比對 → 保留吻合者。
- 換算驗證:25.0 的 IEEE 754 單精度為 0x41C80000;若字序顛倒(0x0000 0x41C8 被讀成 0x41C8 在低位),解碼會得到約 2.36e-41(換算/驗算結果),看起來就像「近乎 0」。
- 實務:把位元組序/字序、資料型態、倍率設為每個測點的設定欄位,不要寫死在程式裡;同型號多台設備應以同一份 profile 驗證。
⚠ 注意事項
- 各 SCADA/閘道器軟體對「字序」的命名不一致(如 word swap、CDAB),需看其定義而非名稱。
- 本題不涉及特定設備;各型號請以官方暫存器表為準。
- L2 政府/標準Modbus Specifications and Implementation Guides— Modbus Organization佐證內容:Modbus 應用層與序列線規範的官方來源
- L3 經銷商/媒體Byte Order and Endianness Reference— Chipkin Automation Systems佐證內容:位元組序與字序為兩個獨立決定,以及診斷步驟
- L3 經銷商/媒體Modbus data types byte order reference— Chipkin Automation Systems佐證內容:讀值為零/極小值時常見為位元組序錯誤
- L4 第三方Modbus 32-Bit Data: Register Mapping and Endianness Guide— Industrial Monitor Direct佐證內容:Modbus 規範暫存器內大端、32 位元字序因設備而異
Q2RS-485 Modbus RTU 匯流排上掛多少台壓差設備、輪詢週期怎麼設計才不會逾時?
A2
RS-485 單一段落常見上限為 32 個單位負載(定址可到 247),輪詢是主從依序進行,週期由「每台往返時間 × 台數」決定;台數多時應分多條匯流排或降低輪詢頻率,而非縮短逾時。
- Modbus 序列線為主從式:只有主站發起請求,從站被輪詢才回應,同一時間匯流排只有一個傳輸。
- 定址:從站位址 1–247;但 RS-485 硬體單一段落無中繼約 32 個單位負載,超過需中繼器或多條匯流排(依 第三方文章引述 V1.02 指南)。
- 週期粗估(假設:每次讀 2 個保持暫存器,請求 8 byte+回應 9 byte=17 byte,每字元 11 bit,前後各留 3.5 字元靜默,從站回應延遲假設 20 ms):9600 bps 約 47.5 ms/台,32 台輪詢一圈約 1.5 秒;19200 bps 約 33.8 ms/台,約 1.1 秒(粗估,實際依設備而定)。
- 設計建議:同型態測點用一次讀取連續多個暫存器;輪詢順序避免多個執行緒同時搶同一個序列埠;逾時與重試次數要有上限,並把「連續失敗」轉為設備離線狀態。
- 無塵室壓差趨勢通常秒級更新已足夠,但若同一匯流排要兼顧快速告警,應預留餘裕並分條。
⚠ 注意事項
- 上述週期為粗估,字元時間與靜默間隔依鮑率及設備而異;序列線規範細節請以 modbus.org 的 V1.02 指南為準,部分數值取自第三方文章,僅供參考。
- L2 政府/標準Modbus Specifications and Implementation Guides— Modbus Organization佐證內容:Modbus 序列線協定與實作指南 V1.02 為新實作應使用的官方文件
- L4 第三方Calculating Modbus RTU Cycle Time on MicroLogix 1400— Industrial Monitor Direct佐證內容:RS-485 單段 32 單位負載、位址 1–247、鮑率與距離表
- L4 第三方LabVIEW Modbus RTU Multi-Slave RS485 Timeout Fix— Industrial Monitor Direct佐證內容:半雙工、需依序輪詢與幀間延遲,避免封包碰撞
Q3壓差資料送上 MQTT 時,主題(topic)與 payload 應如何設計?該用 Sparkplug B 還是自訂格式?
A3
純 MQTT 不規定主題與 payload;若平台與閘道器支援,Sparkplug B 提供標準主題命名空間、型別化 payload 與 birth/death 狀態管理,可降低跨廠牌歧義;否則自訂時至少要統一測點 ID、單位、時間戳記與品質欄位。
- MQTT 規格刻意不規定主題命名、payload 格式與應用層狀態,需自行約定。
- Sparkplug 主題結構:namespace/group_id/message_type/edge_node_id/[device_id];Sparkplug B 的 namespace 為 spBv1.0。
- 訊息類型含 NBIRTH/NDEATH(節點上線/離線憑證)、NDATA(變化資料);節點連線時先發 BIRTH 帶出全部指標,之後只送變化量。
- 若自訂:每筆至少含測點 ID、數值、工程單位、source timestamp、品質碼、設備狀態,並約定重送與去重欄位(見第 6 題)。
- 選擇原則:現有 SCADA/UNS 平台已支援 Sparkplug → 優先採用;平台只做簡單訂閱 → 自訂 JSON 也可,但要寫成版本化的資料契約。
⚠ 注意事項
- Sparkplug 的 BIRTH/DEATH 機制需要客戶端與 Host 應用都實作,並非所有雲端服務原生支援。
- 本題為通用工程建議,非昶特 ATLANTIS 產品功能。
- L2 政府/標準Sparkplug MQTT Topic & Payload Specification Rev 2.2— Eclipse Foundation (Tahu)佐證內容:Sparkplug 主題命名空間與狀態管理規範
- L3 經銷商/媒體Sparkplug Messages (Topic Namespace)— CODESYS Forge佐證內容:主題結構與 NBIRTH/NDEATH/NDATA 訊息類型
- L3 經銷商/媒體What is Sparkplug B— Software Toolbox佐證內容:Sparkplug B 補足 MQTT 未定義的主題、payload 與生命週期
- L2 政府/標準MQTT Version 5.0— OASIS佐證內容:MQTT 為發佈/訂閱傳輸協定,OASIS 標準
Q4無塵室壓差資料要往上送時,OPC UA 與 MQTT 該怎麼選?
A4
兩者解決不同問題:OPC UA 提供語意與資訊模型,MQTT 擅長輕量遙測傳輸;實務常並用(場域內 OPC UA、往平台用 MQTT),且 OPC UA PubSub 可走 MQTT 傳輸。
- OPC UA 為綜合框架(資訊模型、安全、多種互動模式),實作較複雜;MQTT 為極簡傳輸,語意需自行約定或用 Sparkplug。
- OPC UA Part 14 定義 PubSub,可使用 MQTT 作為傳輸層。
- 學術比較(OPC UA PubSub vs MQTT 對雲端資料交換)顯示兩者在負載量與往返時間上各有適用情境,需依場景選擇。
- 決策因素:既有 SCADA/PLC 是否內建 OPC UA、測點數量與頻寬、是否需要雙向控制或僅單向遙測、平台原生支援的協定、團隊維運能力。
- 壓差監測以單向遙測為主者,常見做法是閘道器讀 Modbus/OPC UA,再以 MQTT 送平台;此為常見架構,非唯一正解。
⚠ 注意事項
- 「MQTT 或 OPC UA」常是偽命題;應按層次(語意 vs 傳輸)決定。
- FlowFuse 為廠商技術文章,觀點請與 OPC 基金會規格交叉驗證。
- L3 經銷商/媒體MQTT vs OPC UA: Why This Question Never Has a Straight Answer— FlowFuse佐證內容:OPC UA 定義語意、MQTT 搬運訊息;OPC UA Part 14 PubSub 可走 MQTT
- L3 經銷商/媒體On the performance of OPC UA and MQTT for data exchange between industrial plants and cloud servers— Acta IMEKO (學術論文)佐證內容:OPC UA PubSub 與 MQTT 對雲端資料交換的效能比較
- L2 政府/標準Sparkplug MQTT Topic & Payload Specification Rev 2.2— Eclipse Foundation (Tahu)佐證內容:MQTT 之上補足工業語意的做法
- L2 政府/標準OPC UA Part 8: Data Access - result codes for data quality— OPC Foundation佐證內容:OPC UA 資料存取對資料品質的語意定義
Q5壓差測點資料寫入時序資料庫時,schema 應如何設計(tag/field、基數、保留策略)?
A5
以測點 ID 等低變動值當索引(tag),數值與品質當欄位(field);避免把 UUID、序號等高度變動資訊放進 tag,造成序列基數爆炸而拖垮記憶體與查詢。
- InfluxDB 文件:tag 值有索引、field 值沒有;每組唯一 tag 組合形成一條序列,高變動資訊(如唯一 ID、雜湊)放 tag 會造成高序列基數,是記憶體用量偏高的主因,建議改放 field。
- InfluxDB 3 的儲存引擎宣稱 tag 值基數不影響整體效能,因此 schema 建議因引擎版本而異,需依實際採用的資料庫查證。
- 建議欄位:測點 ID、房間/區域 ID、設備 ID 作為 tag(數量有限且穩定);壓差值、品質碼、設備狀態作為 field;時間戳記使用來源時間(見第 7 題)。
- 數百測點屬中小規模,關鍵是命名一致與可演進:測點中繼資料(量程、精度、單位)另存維度表,不要塞進每筆時序資料。
- 保留策略:原始高頻資料短期保留、降採樣後長期保留;實際年限依法規與品質系統決定。
⚠ 注意事項
- 各資料庫(InfluxDB、TimescaleDB 等)對高基數的處理差異大;Tiger Data 的比較為原廠自家基準測試,僅供參考。
- L1 原廠InfluxDB schema design and data layout— InfluxData佐證內容:tag 與 field 的選擇及高序列基數成因
- L1 原廠InfluxDB schema design recommendations— InfluxData佐證內容:InfluxDB 3 對基數的處理與 schema 建議
- L3 經銷商/媒體How Different Databases Handle High-Cardinality Data— Tiger Data (TimescaleDB)佐證內容:不同資料庫處理高基數的差異(原廠基準,僅供參考)
- L3 經銷商/媒體Edge Buffering— QuestDB佐證內容:時序資料於邊緣緩衝與集中儲存的常見做法
Q6邊緣閘道網路中斷時如何不丟資料也不重複寫入?(store-and-forward 與 MQTT QoS 的實務)
A6
在閘道器本地先持久化再轉送;MQTT QoS 1 保證至少一次但可能重複,因此後端必須以冪等寫入(如測點 ID+來源時間戳記為唯一鍵)去重;QoS 2 不代表端到端零重複。
- store-and-forward:資料先寫入本地持久儲存(如 SQLite),網路恢復後再依序轉送,可避免斷線期間的資料缺口。
- MQTT QoS 0 最多一次(可能遺失)、QoS 1 至少一次(可能重複)、QoS 2 恰好一次;離線排隊需搭配持久會話(persistent session),乾淨會話斷線即丟棄。
- QoS 2 只保證該段連線的訊息處理;若發佈端以 QoS 0/1 送出,訂閱端的 QoS 2 不構成端到端恰好一次。
- 「只重試」不是策略:無去重會造成重複計數;後端應以唯一鍵做 upsert/ignore,唯一鍵建議為「測點 ID+來源時間戳記(+序號)」。
- 須定義:緩存上限與淘汰策略(滿了先丟舊還是丟新)、補傳速率限制(避免補傳壓垮平台)、資料缺口如何在儀表板呈現。
⚠ 注意事項
- 本題屬通用工程實務,非特定產品功能。
- 緩存容量需依測點數、取樣頻率與預期最長斷線時間自行估算。
- L2 政府/標準MQTT Version 5.0— OASIS佐證內容:MQTT 為發佈/訂閱協定規範,QoS 與會話語意的標準來源
- L3 經銷商/媒體MQTT (IEEE Technology Navigator)— IEEE佐證內容:QoS 0/1/2 定義與持久會話保存未送達訊息
- L3 經銷商/媒體MQTT Delivery guarantees (QoS)— ThingsBoard佐證內容:離線排隊需持久會話;QoS 2 非端到端保證
- L3 經銷商/媒體Store-and-Forward at the Edge: Buffering Production Data During Network Outages— FlowFuse佐證內容:store-and-forward 以本地 SQLite 緩存避免斷線資料缺口
- L4 第三方Dealing with Offline Tags: Store-and-Forward Patterns— DEV Community佐證內容:重試需搭配後端冪等寫入以避免重複計數
Q7壓差資料的『品質碼』與『時間戳記』應如何定義?設備斷線時畫面該顯示什麼?
A7
每筆資料應攜帶品質狀態(良好/不確定/不良)與來源時間戳記;OPC UA 的 StatusCode 與 source/server timestamp 是成熟範本,斷線時應標示「不確定:最後有效值」而非繼續當作即時值顯示。
- OPC UA DataValue 同時含值、StatusCode(Good/Uncertain/Bad)、source timestamp 與 server timestamp。
- OPC UA Data Access 規定:通訊中斷時值為最後一個良好值,品質為 Uncertain,且 server timestamp 為最後一次檢查通訊狀態的時間;嚴重度為 Bad 時伺服器應回傳 Null 值。
- 來源時間戳記代表量測發生時間,應作為時序資料的主要時間軸;伺服器/寫入時間僅用於診斷延遲。
- 工程做法:自訂資料契約時沿用三態品質;Modbus/4–20 mA 這類本身無品質碼的來源,由閘道器依逾時、錯誤碼、斷線電流範圍補出品質。
- 畫面與告警:Uncertain/Bad 不應觸發『壓差超限』告警,而應觸發『設備/通訊異常』告警,避免誤判。
⚠ 注意事項
- 補出品質碼的規則為設計建議,需依設備與輸入模組規格實測。
- L2 政府/標準OPC UA Part 8: Data Access - result codes for data quality— OPC Foundation佐證內容:Bad/Uncertain/Good 資料品質定義與通訊中斷語意
- L2 政府/標準OPC 10000-8 A.4.3 Data and error mapping— OPC Foundation佐證內容:DataValue 的 StatusCode 與 source timestamp 對應
- L3 經銷商/媒體MQTT vs OPC UA: Why This Question Never Has a Straight Answer— FlowFuse佐證內容:OPC UA 定義語意、MQTT 僅搬運訊息,需另行約定品質欄位
- L2 政府/標準Sparkplug MQTT Topic & Payload Specification Rev 2.2— Eclipse Foundation (Tahu)佐證內容:Sparkplug 以 birth/death 管理節點狀態
Q8軟體端的壓差告警該怎麼寫,才不會因為訊號抖動造成告警氾濫?
A8
告警要用遲滯(deadband)與開/關延遲(on/off-delay)抑制抖動,警戒值/行動值以無塵室監測計畫與風險評估決定,不要寫死通用數字;ISA-18.2 提供告警系統管理的通用方法。
- ISA-18.2/IEC 62682 以遲滯(deadband)與開關延遲抑制告警抖動;遲滯不應涵蓋長期平均值。
- Emerson 引述 ISA-18.2 的績效指標之一:10 分鐘內告警少於 10 筆、持續(常駐)告警少於 10 筆。
- ISO 14644-2 要求建立監測計畫,附錄 B 涵蓋壓差警戒值/行動值(alert/action levels)的設定,含建立正常操作範圍與壓差儀器選型。
- 房間等級間壓差:Testo(引述 ISO 14644-3 測試要求)指出不同潔淨度房間間需確保由潔淨側往較不潔淨側有 5–20 Pa 的壓差;實際設定值須依專案設計與風險評估,不得照抄。
- 實作建議:告警狀態機(Normal/Alarm/Acknowledged/…)、持續時間門檻、通訊異常與超限分開、每筆告警保留觸發值與時間以利稽核。
⚠ 注意事項
- 本題引用數值僅為文獻範例;警戒/行動值屬客戶品質系統決策。
- Emerson 與 Testo 為廠商文章,數值需對照標準原文。
- L3 經銷商/媒體Alarm Management for DeltaV— Emerson佐證內容:遲滯與開/關延遲為 ISA-18.2 抑制抖動的手段
- L3 經銷商/媒體Suppressing Plant Alarms— Emerson Automation Experts佐證內容:ISA-18.2 績效指標與遲滯不可涵蓋平均值
- L2 政府/標準AS ISO 14644.2:2017 (含 Annex B 壓差警戒/行動值)— Standards Australia佐證內容:監測計畫與壓差警戒/行動值設定(Annex B)
- L3 經銷商/媒體Differential pressure measurement (cleanroom)— Testo佐證內容:房間間 5–20 Pa 壓差與 ISO 14644-3 測試
Q9壓差資料需要 PTP 精準校時嗎?還是 NTP 就夠?
A9
壓差趨勢與告警多為秒級,多數情況 NTP(並監控偏移)已足夠;只有需要亞毫秒級事件對齊(如與高速設備事件比對)才需評估 PTP。
- NTPv4 規格指出在現代工作站與高速區網下,潛在精度可達數十微秒(RFC 5905 摘要)。
- PTP(IEEE 1588)常用於工業自動化與量測網路,由 grandmaster 向區網內多個客戶端校時。
- FSMLabs 指出「NTP 做不到優於 1 ms」與「PTP 一定遠比 NTP 準」兩種說法都不完全正確,精度取決於硬體時間戳與網路品質。
- 決策:先界定要對齊的事件(門禁、風閥、風機)與需要的時間解析度;大多數壓差場景秒級對齊即可,重點是所有系統用同一時間源、統一時區並記錄偏移。
- 實作:以來源時間戳記入庫、同時記錄伺服器接收時間以量測延遲(見第 7 題)。
⚠ 注意事項
- FSMLabs 為校時產品廠商,精度數據為其測試,僅供參考。
- 實際精度受網路負載、硬體時間戳與設備本身時鐘影響,需實測。
- L2 政府/標準RFC 5905: Network Time Protocol Version 4— IETF佐證內容:NTPv4 規格與精度描述
- L2 政府/標準IEEE 1588 Precision Time Protocol (PTP)— D. Mills, University of Delaware佐證內容:NTP 與 PTP 的異同、PTP 多用於工業自動化與量測網路
- L3 經銷商/媒體Comparing NTP and PTP— FSMLabs (TimeKeeper)佐證內容:NTP/PTP 精度取決於硬體時間戳與網路品質(廠商測試)
Q10把 Modbus 壓差設備接進 IT 網路,資深工程師該如何做資安設計?
A10
傳統 Modbus 沒有驗證與加密,資安要靠架構補強:依 IEC 62443 做區域/管道分區、把閘道器當受控管道、只開放必要通訊;新部署可評估 Modbus Security(TLS、X.509、埠 802)。
- 傳統 Modbus/TCP 沒有驗證與加密,只需 IP 位址與功能碼即可建立通訊(INCIBE-CERT 說明)。
- Modbus Security 以 TLS 封裝、使用 X.509v3 憑證做雙向認證,IANA 指定埠為 802。
- IEC 62443:以風險評估劃分「區域(zones)」,區域之間僅經「管道(conduits)」通訊;管道由防火牆、DMZ 或代理實作。
- IEC 62443-4-1 規範產品安全開發生命週期,-4-2 規範元件技術安全要求;選購時可要求供應商說明其對應程度。
- 設計建議:閘道器置於 OT 區與資料平台之間,只允許單向外送與必要的讀取功能碼,禁止寫入;帳號最小權限、憑證輪替、記錄存取。
⚠ 注意事項
- Modbus Security 需要設備或閘道器原生支援;舊設備可能因資源限制無法支援 TLS,需用閘道器代理。
- 「只允許讀取」為設計建議,並非 Modbus 規範要求。
- L2 政府/標準Evolving towards secure Modbus— INCIBE-CERT (西班牙國家資安機構)佐證內容:傳統 Modbus 無驗證;安全版 Modbus 以 TLS、X.509、埠 802 提供雙向認證
- L2 政府/標準Modbus Specifications and Implementation Guides— Modbus Organization佐證內容:Modbus Security 協定以 TLS 與 X.509v3 憑證保護 Modbus,埠 802
- L3 經銷商/媒體ISA/IEC-62443-3-3: What is it and how to comply?— Cisco佐證內容:IEC 62443 區域與管道、依風險評估分區
- L2 政府/標準IEC 62443-4-2, the need to secure components— INCIBE-CERT (西班牙國家資安機構)佐證內容:IEC 62443-4-2 元件要求與 4-1 開發流程關係
- L3 經銷商/媒體New ISA/IEC standard specifies cybersecurity capabilities for control system components— ISA(新聞稿轉載)佐證內容:4-1 規範安全開發生命週期,4-2 規範 IACS 元件技術要求
Q11數位孿生的設備資料模型該怎麼設計?Asset Administration Shell(AAS)值得採用嗎?
A11
AAS(IEC 63278-1)是工業設備數位表示的標準結構,以子模型描述銘牌、量測資料等;第一階段不必全面導入,但可借鏡其做法:設備、測點、房間分離,並保存量程/精度等中繼資料。
- IEC 63278-1:2024 定義 Asset Administration Shell 的結構,目的是讓不同軟體以可信且安全的方式交換與使用資訊。
- AAS 由資產資訊與多個子模型(submodel)組成,可含銘牌、量測資料、參數等,並以唯一識別碼與語意描述區分。
- AAS 是資料模型,需有實際資料流入才有價值;與 BMS 儀表板相比,重點在可交換、可描述。
- 實務借鏡:資產(設備)↔ 測點 ↔ 空間(房間)三層分離;設備銘牌、量程、精度、校正日期放中繼資料,不混入時序資料。
- 是否導入完整 AAS 取決於客戶生態系與工具;小規模專案可先用自訂 JSON schema 並保留對應 AAS 的可能。
⚠ 注意事項
- 本題為架構建議;是否需要 AAS 應依客戶平台與供應商生態決定。
- L2 政府/標準EVS-EN IEC 63278-1:2024 Asset Administration Shell— Estonian Centre for Standardisation / IEC佐證內容:IEC 63278-1 對 AAS 結構與目的的定義
- L3 經銷商/媒體Asset Administration Shell (AAS)— Bosch Semantic Stack佐證內容:AAS 由子模型構成並可涵蓋量測資料與參數
- L1 原廠InfluxDB schema design and data layout— InfluxData佐證內容:時序資料與中繼資料分離、避免高基數 tag
- L3 經銷商/媒體MQTT vs OPC UA: Why This Question Never Has a Straight Answer— FlowFuse佐證內容:語意模型(資訊模型)與傳輸協定的分工
Q12沒有實體設備時,怎麼對 Modbus 壓差整合程式做自動化測試與故障注入?
A12
用 Modbus 模擬器(如 pymodbus simulator)模擬設備與多點匯流排,測試例外回應、通訊錯誤與切割封包,並納入 CI;但最終仍須以真實設備驗證暫存器與字序。
- pymodbus 模擬器可用簡單設定模擬設備或多點線路、模擬不符規範的設備與通訊問題(如資料遺失)、測試客戶端對例外的處理。
- 網頁介面可注入錯誤(如長度錯誤、切割訊息)並監看請求/回應;REST API 可在測試框架中自動啟動測試伺服器並檢查結果。
- 測試矩陣:字序/位元組序組合、逾時與重試、錯誤碼、讀取邊界(暫存器越界)、斷線恢復、緩存補傳與去重(見第 6 題)。
- 契約測試:把暫存器表視為契約(YAML/JSON),模擬器與解碼層共用同一份,避免兩邊各寫各的。
- 真實設備驗證不可省:模擬器只驗證你的理解,不驗證設備實作。
⚠ 注意事項
- pymodbus 文件標示其新版模擬器仍在發展中(v4.0.0 前請參考 3.x 模擬器),導入前需確認版本與功能。
- L3 經銷商/媒體Simulator (pymodbus)— pymodbus project佐證內容:模擬器功能:模擬設備/多點線路、通訊錯誤、REST API 自動化
- L3 經銷商/媒體Byte Order and Endianness Reference— Chipkin Automation Systems佐證內容:字序/位元組序組合為需涵蓋的測試案例
- L2 政府/標準MQTT Version 5.0— OASIS佐證內容:MQTT 側測試應涵蓋 QoS 與會話語意
- L4 第三方Dealing with Offline Tags: Store-and-Forward Patterns— DEV Community佐證內容:緩存補傳與去重情境需納入測試(重放中斷、緩存滿載等)
Q13資深軟體工程師向儀表廠詢價前,應索取哪些整合文件?昶特 ATLANTIS 的整合責任邊界在哪?
A13
應索取完整型錄、接線圖、通訊協定與暫存器表(或類比輸出規格)、資料型態/倍率/字序、更新頻率與錯誤碼;昶特 ATLANTIS 提供儀表本體,不提供 IoT/AWS 整合服務,客戶需自行整合至自身平台。
- Modbus 資料模型與設備應用的對應由設備廠商定義,因此暫存器表是整合的唯一依據。
- 文件清單:型錄、接線圖、通訊參數(鮑率/位址或 IP/埠)、暫存器表、數值型態、倍率、位元組/字序、工程單位、更新頻率、錯誤碼。
- 樣品驗證:正式採購前以樣品在目標閘道器/平台上驗證。
- 責任邊界:昶特 ATLANTIS 為工業儀表製造商(壓力表、溫度計等);不提供 IoT/AWS 整合服務,客戶須自行把儀表輸出連接至自己的平台。
- 詢價單建議明列:測點數量、介面需求、資安需求、交期與校正文件,並由採購與 IT/OT 共同核定。
⚠ 注意事項
- 本題涉及公司專屬內容,請以昶特 ATLANTIS 官方文件與業務窗口為準。
- L2 政府/標準Modbus Specifications and Implementation Guides— Modbus Organization佐證內容:Modbus 規範與實作指南為文件索取依據
- L4 第三方Modbus 32-Bit Data: Register Mapping and Endianness Guide— Industrial Monitor Direct佐證內容:32 位元資料需確認暫存器配置與字序
- L3 經銷商/媒體Modbus data types byte order reference— Chipkin Automation Systems佐證內容:整合前需確認資料型態與位元組序等檢核項目
- L2 政府/標準Sparkplug MQTT Topic & Payload Specification Rev 2.2— Eclipse Foundation (Tahu)佐證內容:若平台使用 Sparkplug,需於閘道器端自行映射為其命名空間
Q14Modbus 手冊寫的「40001」要怎麼對應成請求位址?功能碼 03 與 04 差在哪?
A14
「40001」只是文件慣用的參考編號,實際請求是「功能碼+從 0 起算的位址」:功能碼 03 讀保持暫存器、04 讀輸入暫存器;40001 對應功能碼 03、位址 0,30001 對應功能碼 04、位址 0。
- Modbus 資料模型有四張表:離散輸入、線圈、輸入暫存器(16 位元、唯讀)、保持暫存器(16 位元、可讀寫)。
- 規範明訂請求 PDU 中的暫存器位址從 0 起算,因此編號 1–16 的暫存器,位址為 0–15(規範 6.3、6.4 節)。
- 換算範例:40001 → 功能碼 03、位址 0;40108 → 功能碼 03、位址 107;30001 → 功能碼 04、位址 0;30010 → 功能碼 04、位址 9。
- 編號開頭的 3 或 4 只是文件的表別標示,不會出現在封包中,由功能碼決定讀哪一張表。
- 各廠牌習慣不同:有的從 40000 起算、有的從 40001 起算,且「3xxxx」對應功能碼 04、「4xxxx」對應功能碼 03,容易混淆;32 位元值若位址差一格,會讀到錯誤資料(見第 1 題)。
- 排查:若每個值都讀成「隔壁暫存器」的內容,通常是手冊與軟體對「從 0 或從 1 起算」的認定不同,前後位移一格再比對。
⚠ 注意事項
- 手冊中的數字可能是「參考編號」也可能已是「協定位址(常以十六進位表示)」,須先確認該型號文件採用哪一種,再決定是否減去 40001。
- L2 政府/標準MODBUS Application Protocol Specification V1.1b3— Modbus Organization佐證內容:四張資料表、位址從 0 起算、功能碼 03/04 的定義
- L3 經銷商/媒體Enter a register address from the manual— ModbusCloud佐證內容:40001、40108、30001、30010 的換算範例
- L3 經銷商/媒體Modbus address converter: 40001 to register offset— EpiSensor佐證內容:功能碼選擇資料表、開頭數字不會送出,以及「隔壁暫存器」的位移排查
- L1 原廠Understanding Modbus Register Addressing— Elkor佐證內容:不同廠牌從 40000 或 40001 起算,以及 32 位元值位址差一的後果
Q15Modbus 請求「沒有回應」與收到「例外回應」有什麼不同?程式該怎麼處理?
A15
例外回應代表設備收到請求且通訊無誤,但無法處理(回應功能碼為請求功能碼加 0x80,並附例外碼);而請求遺失或通訊錯誤(同位檢查、CRC 錯)時設備完全不回應,只能靠客戶端逾時判斷。兩者原因不同,重試與告警策略應分開。
- 規範描述四種情況:正常回應;伺服器沒收到請求而無回應(客戶端逾時);收到但偵測到通訊錯誤(同位、LRC、CRC)而無回應(客戶端逾時);收到且無通訊錯誤但無法處理(例如讀取不存在的暫存器),此時回傳例外回應。
- 例外回應的功能碼為原功能碼加 0x80,資料欄位為例外碼;規範範例中,功能碼 01 的請求位址無效時,回應為功能碼 0x81、例外碼 02。
- 常見例外碼:01 非法功能(不支援該功能碼);02 非法資料位址;03 非法資料值;04 從站設備故障;閘道器情境另有 0A(閘道路徑不可用)與 0B(目標設備未回應)。
- 設計建議:例外碼 01/02/03 多屬設定或位址錯誤,重試不會改善,應記錄並告警、停止該筆請求;逾時屬通訊問題,才套用有上限的重試,連續失敗後再把設備標示為離線(見第 2、7 題)。
- 記錄時務必保留請求的功能碼、位址、數量與例外碼,這是排查 profile 設定錯誤最直接的線索。
⚠ 注意事項
- 例外碼與重試策略的對應屬設計建議,並非 Modbus 規範要求;各設備支援的例外碼以其文件為準。
- L2 政府/標準MODBUS Application Protocol Specification V1.1b3— Modbus Organization佐證內容:四種請求處理情況、例外回應格式與例外碼(第 7 節)
- L2 政府/標準MODBUS Messaging on TCP/IP Implementation Guide V1.0b— Modbus Organization佐證內容:Modbus TCP 上的例外回應,以及閘道器例外碼 0A/0B
- L1 原廠Exception response by server (Modbus TCP)— ABB佐證內容:例外碼的實務說明
Q16Modbus TCP 的 MBAP 標頭、Unit ID 與連線數該怎麼處理?閘道器要維持幾條連線?
A16
Modbus TCP 在 PDU 前加 7 位元組的 MBAP 標頭(交易識別碼、協定識別碼、長度、單元識別碼),預設埠 502;交易識別碼用來配對請求與回應,單元識別碼用於經閘道器轉送到序列線從站。許多嵌入式設備只允許少量同時連線,閘道器宜維持持久連線並與維護工具協調。
- MBAP 標頭共 7 位元組:交易識別碼 2、協定識別碼 2(Modbus 為 0)、長度 2、單元識別碼 1;欄位為大端編碼,Modbus TCP 使用註冊埠 502。
- 交易識別碼由客戶端設定,伺服器於回應中原樣帶回,因此同一連線上可同時有多個未完成請求;RTU 序列線一次只有一筆請求,所以沒有這個欄位。
- 單元識別碼用於經橋接器、路由器或閘道器(共用一個 IP)連到多台獨立設備的情境,例如 Modbus TCP 轉 RTU 閘道器,此時它指向下游的從站位址。
- 連線數:部分設備只支援少量同時連線(低階設備甚至只有 1–2 條);若閘道器與維護筆電同時連線,設備可能拒絕其中一方。建議閘道器維持持久連線、啟用 TCP keep-alive,並與維護工具約定不同時連線。
- 連線被拒時先確認設備的實際埠號(部分設備預設並非 502),再檢查防火牆;逾時與重連策略見第 15 題。
⚠ 注意事項
- 連線數上限與逾時秒數依設備而異,請以設備手冊為準;此處不代表任何昶特 ATLANTIS 型號的規格。
- L2 政府/標準MODBUS Messaging on TCP/IP Implementation Guide V1.0b— Modbus Organization佐證內容:MBAP 標頭欄位、埠 502、單元識別碼用途
- L3 經銷商/媒體Modbus TCP port 502 and the MBAP header explained— ModbusCloud佐證內容:交易識別碼配對請求、單元識別碼與閘道器、非 502 預設埠的情況
- L3 經銷商/媒體Modbus TCP MBAP Header & Message Format Reference— Chipkin Automation Systems佐證內容:標頭格式與連線管理的實務建議
- L1 原廠Modbus/TCP of ezTCP— ezTCP佐證內容:Modbus/TCP 訊框結構與閘道器應用
Q17Modbus RTU 常出現 CRC 錯誤或隨機逾時,RS-485 的終端電阻與偏壓該怎麼設?
A17
匯流排兩端各接一組約 120 Ω 的終端電阻以抑制反射;偏壓(failsafe bias)只在匯流排上設一處,使閒置時 A/B 之間維持足夠的差動電壓,避免雜訊被誤判為資料。終端與偏壓設定不當,是 CRC 錯誤與隨機逾時的常見原因。
- RS-485 接收器需偵測到至少 200 mV 的差動電壓才判讀訊號;匯流排閒置時沒有驅動器作用,雜訊可能被誤判為資料,所以需要偏壓網路讓 B(+) 相對 A(−) 保持正電壓。
- 偏壓只應在匯流排上啟用一處(ABB 指出同一條主幹只應啟用一組偏壓電路),多處偏壓會改變終端負載。
- 終端電阻應與纜線的特性阻抗相符,雙絞線通常為 120 Ω,匯流排兩端各一個;纜線很短或速率很低時終端可能不是必要,但速率與距離增加後就屬必要。
- TI 說明:較舊的收發器沒有內建 failsafe,需外加偏壓電阻,讓閒置、斷線或短路時接收器輸出為確定狀態。
- 排查順序(設計建議):先確認鮑率、同位與停止位元兩端一致,再檢查終端電阻、偏壓是否只有一處,以及 A/B 極性有無接反。
⚠ 注意事項
- 電阻值與偏壓方式依收發器與設備而異,請以設備手冊與 Modbus 序列線指南為準。
- L1 原廠RS-485 design and install best practices— ABB佐證內容:200 mV 偏壓需求、同一主幹只啟用一組偏壓
- L1 原廠RS-485: Passive failsafe for an idle bus— Texas Instruments佐證內容:外加偏壓電阻使閒置匯流排輸出狀態確定
- L3 經銷商/媒體RS-485 wiring: termination, bias and topology— EpiSensor佐證內容:120 Ω 終端、偏壓與拓樸配置
- L1 原廠Serial Communication Issues— MSA Safety佐證內容:終端電阻與速率、距離的關係
- L1 原廠Modbus RTU troubleshooting— Rheonics佐證內容:排查時檢查偏壓與終端電阻及網路配置
Q18壓差變送器的 4–20 mA 輸出,軟體如何判斷「超量程」與「斷線/故障」?NAMUR NE43 怎麼用?
A18
依 NAMUR NE43,3.8–20.5 mA 為有效的量測資訊(含上下端的超量程區),≤3.6 mA 或 ≥21.0 mA 才判定為硬體故障;3.6–3.8 mA 與 20.5–21.0 mA 為區隔區,故障需持續一段時間才確認,以免誤報。
- NE43 把輸出分成量測資訊(3.8–20.5 mA)與故障資訊(0–3.6 mA 或 ≥21.0 mA)。
- 製程超出量程時,符合 NE43 的變送器可輸出至 20.5 mA,下端也有類似的飽和區;長期漂移可能使低端訊號落在 3.9 mA 附近。
- 3.6–3.8 mA 與 20.5–21.0 mA 是區隔區,符合規範的變送器不應輸出該區間;控制系統可把偵測門檻設在區隔區中間(如 3.7 mA、20.75 mA),不會因漂移而誤報。
- 為避免誤報,硬體故障訊號需持續一段時間才確認(有來源以持續至少 4 秒、至少 2 個掃描週期為例)。
- Siemens ET 200SP 類比輸入模組的範例:低故障範圍 ≤3.6 mA(遲滯 0.2 mA)、高故障範圍 ≥21 mA(遲滯 0.5 mA),進入故障範圍時品質碼為 bad;可直接對應到第 7 題的品質碼設計。
- 各廠預設不同:例如 Yokogawa 的標準輸出上下限為 3.6/21.6 mA,NE43 版本則為 3.8/20.5 mA;故障電流方向(上限或下限)也常可設定。
⚠ 注意事項
- 各廠變送器的飽和電流與故障電流不同,請以資料表與實際組態為準;軟體端的門檻與確認時間須與之相符。
- L1 原廠NAMUR basic information— Beckhoff佐證內容:NE43 的量測資訊與故障資訊電流範圍
- L3 經銷商/媒體NAMUR NE43: standardization of 4–20 mA signal levels— InstruLearning佐證內容:超量程飽和、區隔區與故障確認時間
- L3 經銷商/媒體Clarifying some details of NAMUR NE 43— Orion Technical佐證內容:區隔區中間設門檻的做法
- L1 原廠Failure monitoring (according to NE43)— Siemens佐證內容:故障範圍、遲滯與品質碼的組態範例
- L1 原廠Analog output signal (FGP-190)— Yokogawa佐證內容:標準與 NE43 輸出上下限的差異
Q19壓差訊號要在閘道器或平台上做濾波嗎?移動平均、一階(指數)濾波與中位數濾波怎麼選?
A19
濾波只在需要時使用:中位數濾波用來剔除孤立尖峰,移動平均或一階(指數)濾波用來抑制隨機雜訊;但送往告警與資料收集的訊號,在 cGMP 製程中通常建議少濾或不濾,並同時保留原始值,以免壓低尖峰幅度或延長其持續時間。
- 移動平均:窗口 N 越大,雜訊變異越小(約與 √N 成反比),但對步階變化的反應是長度 N 個取樣的斜坡,且不會剔除離群值。
- 一階(指數)濾波:運算簡單,但過去資料的影響不會完全消失,同樣不剔除離群值;濾波時間常數不宜大於主要製程時間常數的 1/5。
- 中位數濾波:取最近 3、5 或 7 筆的中間值,用來剔除離群值;若可能連續兩筆異常,用 5 筆即可濾掉;它對一般雜訊的抑制有限。
- 可組合使用:先用中位數濾波剔除離群值,再用一階濾波降低雜訊。
- ISA 指出:送往告警演算法或資料收集系統的訊號,以及 cGMP 製程中影響產品品質的關鍵參數,通常建議少濾或不濾,以如實記錄偏移;必要時同時記錄原始與濾波兩種版本。
- 濾波會增加延遲,且常被不當用來讓趨勢圖「看起來平滑」;強濾波會增加表觀延遲與製程滯後。變送器本身也可能有阻尼設定,現場人員調整會改變表觀動態,應納入變更管理(設計建議)。
⚠ 注意事項
- 本題多引自製程控制領域文獻;實際的濾波種類與參數須依壓差設備與製程動態實測決定。
- L2 政府/標準Data filtering in process automation systems— ISA(InTech)佐證內容:移動平均、一階濾波、中位數濾波的特性,以及 cGMP 情境下少濾與保留原始值的建議
- L3 經銷商/媒體Practical Process Control Part 12: Filters— The Chemical Engineer(IChemE)佐證內容:濾波為雜訊抑制與量測失真的折衷、過度濾波的問題、變送器阻尼被現場調整的風險
- L3 經銷商/媒體SITRANS P320 with pulsating process pressure: electronic damping vs real pressure peaks— ICS Schneider(轉述 Siemens 產品說明)佐證內容:電子阻尼會影響所見動態,須區分真實壓力尖峰
Q20壓差資料的單位(Pa、mbar、mmH₂O、inH₂O)在軟體裡該怎麼存?如何換算?
A20
建議內部統一以 Pa 儲存,顯示層再換算;常用換算:1 mbar=1 hPa=100 Pa,1 inH₂O=249.089 Pa,1 mmH₂O=9.80665 Pa。每筆資料都應帶單位(或由測點中繼資料固定單位),避免混用。
- Pa 是 SI 單位,在潔淨室壓差串級、濾網監測等約 2,000 Pa 以下的低壓範圍最常用;北美常用 inH₂O,舊系統常見 mmH₂O。
- 換算:1 mbar=1 hPa=100 Pa;1 inH₂O=249.089 Pa=2.49089 mbar=25.4 mmH₂O;1 mmH₂O=9.80665 Pa。
- 換算驗算:10 Pa ≈ 0.1 mbar ≈ 1.02 mmH₂O ≈ 0.040 inH₂O(依上列係數計算)。把 mmH₂O 當成 Pa 讀取,數值會差約 10 倍。
- 水柱單位依水的密度與重力定義,採 4 °C 水或 60 °F 水時差異約 0.003%~0.1%,不同來源的 inH₂O 數值可能略有出入。
- 設計建議:資料模型固定「值+單位」,單位用明確代碼;寫入時間序列前先轉成統一單位;測點中繼資料保留設備原生單位與倍率,顯示層才換算(見第 11 題的資料/中繼資料分離)。
⚠ 注意事項
- inH₂O、mmH₂O 的數值取決於採用的水密度與重力定義;法規或合約若有指定定義,須依其為準。
- L2 政府/標準Pressure and Gas Flow Unit Conversions— NIST佐證內容:Pa、mbar、inH₂O 的換算係數
- L1 原廠Pressure Units: Pa, mbar, mmH2O, hPa — Table & Converter— Rixen Messtechnik佐證內容:低壓範圍常用單位、1 inH₂O=25.4 mmH₂O、1 mmH₂O=9.80665 Pa
- L1 原廠Conversion of pressure unit— Panasonic佐證內容:mbar、mmH₂O 等單位的換算表
- L4 第三方Pressure Conversion Chart: kPa, psi, bar, mmHg, inHg, Torr— calibr.pro佐證內容:水柱單位的密度定義與 4 °C/60 °F 的差異
Q21潔淨室的 BMS 常用 BACnet,壓差設備只有 Modbus 時該怎麼整合?該選哪個協定?
A21
BACnet 是樓宇自動化常用的協定,具標準物件模型;Modbus 簡單、廣用,但沒有標準化的資料點描述,須依暫存器表手動設定。兩者並存時,常以 Modbus 轉 BACnet 閘道器完成映射。
- BACnet 由 ASHRAE 發展,常見實作有 MS/TP(RS-485)與 BACnet/IP;MS/TP 同樣需要處理終端電阻與偏壓(見第 17 題)。
- Modbus 沒有網路探索功能,整合人員需要暫存器表與位址,並手動設定每個點;Modbus 也不提供資料點的標準描述,每個暫存器都要依廠商文件解讀。
- BACnet 以預先定義的物件類型呈現資料,讓資訊較容易跨廠商理解,可降低整合工時。
- 閘道器實例:Kele/Sierra Monitor 的 FieldServer EZ Gateway 可把 Modbus RTU/TCP 設備轉成 BACnet/IP 或 MS/TP;Envirco 也有針對其風機過濾單元(FFU)的 Modbus 轉 BACnet 閘道器。
- 選擇原則(設計建議):由 BMS 端既有協定決定;若 BMS 只講 BACnet,就在閘道器完成映射,並把暫存器表與物件對照表視為契約,以契約測試驗證(見第 12 題)。
⚠ 注意事項
- 閘道器為產品實例,不代表昶特 ATLANTIS 提供或推薦;選型請依專案需求評估。
- 兩種協定的比較部分引自經銷商與產業媒體文章,請以專案實際需求與各協定標準為準。
- L3 經銷商/媒體Open communication protocols BACnet and Modbus are important in building management systems— Buildings.com佐證內容:BACnet 與 Modbus 的特性、Modbus 無探索功能
- L3 經銷商/媒體Choosing Between BACnet, Modbus, and LonWorks in Building Automation Systems— Stouch Lighting佐證內容:Modbus 無標準資料點描述、BACnet 預定義物件
- L1 原廠EZ Gateway Modbus to BACnet— Kele/FieldServer佐證內容:Modbus 轉 BACnet 閘道器的功能
- L1 原廠BGW Modbus to BACnet IP & BACnet MS/TP gateway— Envirco佐證內容:潔淨室風機過濾單元的 Modbus 轉 BACnet 閘道器實例
Q22如何用 MQTT 讓平台知道閘道器或設備「離線」了?LWT 與 retained 要怎麼搭配?
A22
每台設備使用一個專屬狀態主題:連線成功後發布 retained 的「online」,並在 CONNECT 時設定同一主題、retained 的 Last Will「offline」;異常斷線由 broker 代為發布 offline,正常關機則須自行先發布 offline,因為正常 DISCONNECT 不會觸發 Will。
- HiveMQ 的做法:以設備專屬主題搭配 retained 與 LWT;連線時帶 Will,連線後發布 retained 的 online;異常斷線時 broker 發布 Will,取代先前的 retained 狀態;重新連線後再發布 online。
- MQTT 每個主題只保留最新一則 retained 訊息,新訂閱者一訂閱就能收到目前狀態。
- AWS IoT Core 文件說明:客戶端主動以 DISCONNECT 斷線時,broker 不會發布 Will;斷線處理為非同步,Will 在重新連線期間不保證依序送達,建議搭配含時間戳與版本號的生命週期事件,以提升準確度。
- 三件事缺一不可:連線後的 online(retained)、CONNECT 時的 retained Will、關機時主動發布的 offline;少了第一項,恢復後仍顯示離線;少了第二項,當機時沒人知道;少了第三項,計畫性關機後仍顯示線上。
- Will 需等到 keepalive 逾時才觸發(例如 keepalive 20 秒,靜默斷網約 1.5 倍時間後才觸發);Will 的內容宜簡單,因為無法預知故障時的狀態。
- 與 Sparkplug 的 BIRTH/DEATH 概念相近(見第 3 題);通訊離線與壓差超限屬不同告警,宜分開處理(見第 8 題)。
⚠ 注意事項
- Will 與 retained 的細節行為依 broker 實作與 MQTT 版本而異,請以所用 broker 文件為準。
- L1 原廠Managing IoT Device State Within MQTT— HiveMQ佐證內容:以 retained 與 LWT 管理設備上線/離線狀態
- L1 原廠MQTT Will Message (Last Will & Testament) Explained and Example— EMQ(EMQX)佐證內容:Will 訊息的觸發條件與用法
- L1 原廠MQTT — AWS IoT Core— Amazon Web Services佐證內容:主動 DISCONNECT 不觸發 Will、Will 與重新連線的順序限制
- L3 經銷商/媒體MQTT Device Online Status with LWT and Retain— ConnectMQ佐證內容:online/Will/關機訊息三項檢查表與 keepalive 觸發時間
Q23想做 Unified Namespace(UNS),壓差測點的 MQTT 主題階層該怎麼對應 ISA-95?
A23
常見做法是以 ISA-95 設備階層(企業/廠區/區域/產線/儲存格或設備)作為主題階層,下接測點;階層須在部署前文件化,名稱避免空白與保留字元,讓訂閱者能用萬用字元精準取得資料。
- HiveMQ 的命名空間文件依 ISA-95 定義節點類型:Enterprise、Site、Area、Line、Asset、Tag、Field;前幾項屬組織節點,Tag 為單一資料點,Field 是 payload 內的值(不能直接用 MQTT 主題定址)。
- 常見樣式:Enterprise/Site/Area/Line/Cell/測點名稱(Proxus)。
- 示意(非標準):廠名/廠區/無塵室/房間編號/設備/pressure_diff。
- 訂閱者可用 +(單層)與 #(多層)萬用字元取得某區域或產線的全部資料,這也是階層設計要一致的原因。
- ISA-95 階層是強烈建議但允許彈性調整;重點是命名一致、事先文件化,並建立存取規則,避免資料外洩或被竄改。
- 主題只負責定址;payload 的單位、時間戳與品質欄位仍須另行約定或採用 Sparkplug(見第 3 題)。
⚠ 注意事項
- UNS 是架構概念,並無單一強制標準;上述階層為業界常見做法,實際命名須由使用者自行決定。
- L1 原廠Define Namespace— HiveMQ佐證內容:依 ISA-95 的節點類型與命名空間定義
- L1 原廠UNS Semantic Data Hierarchy with MQTT: Explained with an Example— HiveMQ佐證內容:UNS 語意階層範例
- L3 經銷商/媒體Implementing Unified Namespace (UNS) using MQTT— Cedalo佐證內容:萬用字元訂閱、命名一致與存取控制
- L3 經銷商/媒體Designing Topic Structures— Proxus佐證內容:Enterprise/Site/Area/Line/Cell 的主題樣式
Q24OPC UA 的安全模式、憑證與信任清單該怎麼設定?
A24
正式環境至少使用 Sign 或 SignAndEncrypt(需要保密時用 SignAndEncrypt,None 完全不提供保護),安全原則至少選 Basic256Sha256,每個應用程式實例有自己的 X.509 憑證,並由管理者維護信任清單與憑證撤銷清單。
- OPC 基金會建議:SecurityMode 應使用 Sign 或 SignAndEncrypt;None 不提供任何保護;需要機密性時必須使用 SignAndEncrypt。
- SecurityPolicy 至少選 Basic256Sha256(前提是既有客戶端皆支援);使用 SHA-1 的較弱原則不應使用;連線策略應從最安全的設定開始,逐級往下協商。
- 使用者驗證:匿名登入只適用於非關鍵資源,因為無法追蹤是誰修改了資料或設定。
- 應用程式鑑別:每個 OPC UA 應用程式實例都有 ApplicationInstanceCertificate,在建立 SecureChannel 時交換;接收方依信任清單(TrustList)判斷是否信任,信任清單由管理者指定的憑證庫實作,並含 CA 與憑證撤銷清單(CRL)。
- 實務:使用自簽憑證時,要把對方憑證安裝到信任清單;使用 CA 簽發的憑證則只要信任該 CA,並須維護最新的 CRL。
- 憑證庫的存取:存放私鑰的憑證庫只應允許管理者與應用程式讀寫,信任清單只允許管理者寫入。
⚠ 注意事項
- 演算法與預設值會隨 OPC UA 規格版本演進,請以最新版規格與所用 SDK 文件為準。
- L2 政府/標準OPC Unified Architecture — Part 2: Security Model— OPC Foundation佐證內容:應用程式實例憑證、信任清單與 CRL 的安全模型
- L2 政府/標準Practical Security Recommendations for building OPC UA Applications— OPC Foundation佐證內容:SecurityMode、SecurityPolicy 與匿名登入的建議
- L2 政府/標準Certificate management for developers (OPC 10000-2, 9.4.2)— OPC Foundation佐證內容:憑證庫與信任清單的存取權限
- L1 原廠General Concept (Certificates, Certificate Store and Trust List)— Unified Automation佐證內容:自簽憑證與 CA 憑證在信任清單上的處理差異
Q25壓差資料的時間戳記要用什麼格式與時區儲存?
A25
傳輸與儲存一律使用 UTC,並以 RFC 3339 格式(帶 Z)表示絕對時間,例如 2026-10-22T12:00:00Z;本地時區只在顯示層轉換,需要追溯當地時間時另存時區或偏移欄位。
- RFC 3339 是 ISO 8601 的網際網路設定檔;夏令時間規則複雜,且可能被當地法規無預警更改,要達到真正的互通,最好使用 UTC。
- 帶偏移的時間(如 18:50:00-04:00)等同 UTC 的 22:50:00Z;若 UTC 已知但本地偏移未知,RFC 3339 以「-00:00」表示。
- W3C 建議把時間戳記正規化為 UTC,以便不同序列比較與合併;沒有把握時,序列化、儲存與交換都用 UTC。
- AEP(API 設計指引):絕對時間欄位用 RFC 3339 字串、UTC 並明確帶 Z,欄位名稱以 _time 結尾(如 create_time)。
- InfluxDB 內部以 UTC 的 epoch 奈秒儲存,查詢時以 RFC 3339 UTC 呈現。
- 設計建議:資料契約同時規定欄位名稱(如 source_time、received_time)、格式與精度;少數設備只提供本地時間而無時區資訊,需在閘道器補上並記錄假設;校時見第 9 題,來源時間與接收時間見第 7 題。
⚠ 注意事項
- 時間戳記精度(毫秒或更細)與是否保留本地偏移,須依資料用途與品質系統要求決定。
- L2 政府/標準RFC 3339: Date and Time on the Internet: Timestamps— IETF佐證內容:時間戳記格式、UTC 與本地偏移的表示方式
- L2 政府/標準Working with Time and Timezones— W3C佐證內容:正規化為 UTC 的建議
- L3 經銷商/媒體Time and duration— AEP(API Enhancement Proposals)佐證內容:RFC 3339 字串、UTC 帶 Z 與 _time 欄位命名
- L1 原廠InfluxDB data elements— InfluxData佐證內容:時間戳記以 UTC 儲存與 RFC 3339 呈現
Q26壓差原始資料要保存多久?降採樣(downsampling)與保留策略怎麼做?
A26
常見做法是兩個 bucket:原始高解析資料放短期保留的 bucket,定期聚合成低解析(如 1 小時平均)寫入保留期間更長的 bucket;降採樣任務須排在原始資料到期之前,並考慮資料遲到。但受法規管理的紀錄不宜只留聚合值。
- InfluxDB 降採樣需要來源 bucket、目的 bucket 與聚合方式(mean、median、top、bottom 等);目的 bucket 的保留期間應比來源更長。
- 官方範例任務每週執行,以 1 小時窗口取平均後寫入降採樣 bucket。
- 注意:若資料可能遲到,要設定足夠的 offset;若來源 bucket 有保留期限,任務須排在期限到達之前執行。
- 好處是降低儲存量,並加快大範圍時間的查詢;InfluxDB 3 的 Downsampler 外掛還會在降採樣紀錄附上 record_count、time_from、time_to 等欄位,利於稽核聚合範圍。
- 壓差場景的取捨(設計建議):聚合除了平均,也應保留最大值、最小值與超限次數,否則短暫的超限在平均後會消失;平均與濾波一樣會隱藏尖峰的實際幅度與持續時間(見第 19 題)。
- 告警事件與稽核相關紀錄應另存,保留年限依品質系統與法規決定(見第 5 題的資料模型、第 30 題的資料完整性)。
⚠ 注意事項
- 保留年限與可否只保留聚合值,須依客戶品質系統與法規決定;本題的聚合欄位建議屬設計建議。
- L1 原廠Downsample data in an InfluxDB task— InfluxData佐證內容:來源與目的 bucket、聚合、遲到資料與保留期限的注意事項
- L1 原廠Downsampling with InfluxDB v2.0— InfluxData佐證內容:目的 bucket 保留期間較長、降採樣的好處
- L1 原廠Downsampler plugin— InfluxData佐證內容:降採樣紀錄附帶的 record_count、time_from、time_to
- L1 原廠Downsample data with client libraries— InfluxData佐證內容:以兩個保留期間不同的 bucket 保存原始與降採樣資料
Q27儀表板告警遇到「無資料」或查詢錯誤時,該視為正常、告警還是保持原狀?
A27
無資料與查詢錯誤是和「壓差超限」不同的狀況。以 Grafana 為例,預設會產生獨立的 DatasourceNoData/DatasourceError 告警,也可改設為 Alerting、Normal 或 Keep Last State;壓差監測不建議把無資料當成正常,並應搭配等待期(pending period)避免瞬斷誤報。
- No Data 狀態:查詢成功但完全沒有資料點;它遵守等待期,狀態依序為 Normal → Pending → No Data;等待期設為 0 則立即進入。
- 查詢錯誤(逾時、網路中斷、查詢無效)是 Error 狀態,與資料來源離線的可用性問題不同。
- 可選行為:No Data(預設,觸發 DatasourceNoData 告警)、Alerting、Normal、Keep Last State;Keep Last State 可緩解暫時性的資料來源問題,但嚴格監控時不宜單獨依賴,應另設規則偵測長時間中斷。
- Keep firing for:條件解除後仍維持觸發一段時間,避免反覆觸發、解除、再觸發。
- 自 Grafana v12.4.0(2026-02-12)起,NoData 與 Error 也遵守等待期,通知在等待期過後才發送。
- 壓差場景(設計建議):Normal 會在斷線時掩蓋風險,Keep Last State 會讓最後一筆「正常」值被當成現況,都不宜單獨使用;應搭配品質碼與設備上線狀態(見第 7、22 題),把通訊異常與壓差超限分成不同告警(見第 8 題)。
⚠ 注意事項
- 本題依 Grafana 文件,其他告警系統的行為不同;等待期與 Keep firing for 的長度須依製程與品質系統決定。
- L1 原廠No Data and Error states— Grafana Labs佐證內容:No Data/Error 狀態、可選行為與 Keep Last State 的取捨
- L1 原廠Handle missing data in Grafana Alerting— Grafana Labs佐證內容:缺少資料時的四種處理選項
- L1 原廠Handle connectivity errors in alerts— Grafana Labs佐證內容:查詢執行錯誤與資料來源離線的差異
- L1 原廠Alert rule evaluation— Grafana Labs佐證內容:等待期與 Keep firing for 的定義
- L1 原廠Pending period added to alert states— Grafana Labs佐證內容:NoData 與 Error 遵守等待期的版本變更
Q28邊緣閘道器或整合程式本身要怎麼監控?如何判斷資料「新鮮度」?
A28
把整合程式當成服務來監控:以 Prometheus 慣例輸出指標,例如最後一次成功輪詢的 Unix 時間戳、輪詢耗時、錯誤計數;用「目前時間 − 時間戳」判斷資料新鮮度,並採用應用前綴、基本單位與標籤來命名。
- Prometheus 建議:要追蹤「距離某事件多久」,輸出事件發生的 Unix 時間戳,而不是「經過了多久」;以 time() − 時間戳 計算,可避免更新邏輯卡住而不自知。
- 命名:指標名稱應有應用前綴、使用基本單位(秒、位元組),累計計數以 _total 結尾;官方範例 data_pipeline_last_record_processed_timestamp_seconds 就是追蹤資料管線最新處理紀錄時間的時間戳指標。
- counter 只增不減(重啟時歸零),要搭配 rate() 使用;會下降的值用 gauge,且不要對 gauge 取 rate()。
- 用標籤區分維度,而不是把變動資訊放進指標名稱。
- exporter 應在被抓取時同步取得指標,不要自行設定時間戳,由 Prometheus 指派;若覺得需要自行帶時間戳,通常代表該改用 Pushgateway。
- 示意指標(設計建議):modbus_poll_last_success_timestamp_seconds{device}、modbus_poll_duration_seconds、modbus_request_errors_total{type="exception|timeout"},並與第 6 題的緩存佇列長度一併輸出。
⚠ 注意事項
- 指標名稱為示意,並非標準;不使用 Prometheus 時,可把同樣的概念輸出到其他監控系統。
- L1 原廠Instrumentation— Prometheus佐證內容:以時間戳而非「經過時間」、counter 與 gauge 的選擇、使用標籤
- L1 原廠Metric and label naming— Prometheus佐證內容:應用前綴、基本單位、_total 後綴與時間戳指標命名範例
- L1 原廠Writing exporters— Prometheus佐證內容:同步抓取、不自行設定時間戳
Q29壓差告警與紀錄要符合 GMP(如 EU GMP Annex 1)時,軟體要特別注意什麼?
A29
EU GMP Annex 1(2022 版)以至少 10 Pa 作為不同等級相鄰房間壓差的指引值;被判定為關鍵的壓差須連續監測並記錄,並有警報即時警告操作人員。警報不可未經評估就被忽略,警報延遲須在污染控制策略(CCS)中評估並說明理由。
- Annex 1 4.14:不同等級的相鄰房間應有至少 10 Pa 的壓差(指引值),並特別保護關鍵區;潔淨室在所有操作條件下,應相對較低等級的背景環境維持正壓或氣流。
- Annex 1 4.16:潔淨室之間(或隔離器與其背景)應裝設壓差指示;設定值與壓差的關鍵性應納入 CCS;判定為關鍵的壓差須連續監測並記錄;須有警報系統即時指示並警告操作人員空氣供應失效或壓差降到設定值以下。
- 警報訊號不可未經評估就被忽略,並應有程序說明警報時的處置步驟;若設有警報延遲,須在 CCS 中評估並提出理由;其他非關鍵壓差則定期監測與記錄。
- ISPE 文章的設計範例:相鄰房間在門關閉時維持 10–15 Pa;偏離操作範圍(如 ±2.5 Pa)發出警示,偏離設定值達 5 Pa 以上且持續預定時間則啟動警報。這是設計範例,不是法規數值。
- 軟體含意(設計建議):區分關鍵與非關鍵測點的監測頻率與記錄方式;警報延遲、遲滯等參數以可設定項管理並保留變更紀錄;警報的確認與抑制都要留紀錄(見第 30 題)。
⚠ 注意事項
- 10 Pa 為 Annex 1 的指引值;實際的設定值與警示、警報門檻須依專案設計、風險評估與 CCS 決定,ISPE 的數值僅為範例。
- 本題為通用資訊,不構成合規聲明;GMP 合規須由使用者的品質系統與主管機關確認。
- L2 政府/標準EU GMP Guidelines Volume 4 — Annex 1: Manufacture of Sterile Medicinal Products (2022)— European Commission佐證內容:4.14 的 10 Pa 指引值、4.16 的壓差監測、警報與警報延遲要求
- L3 經銷商/媒體Room Differential Pressures in Facility Design: Fundamentals— ISPE(Pharmaceutical Engineering)佐證內容:警示與警報門檻的設計範例
- L3 經銷商/媒體The Evolving Role of a Contamination Control Strategy in Annex 1— Ecolab佐證內容:CCS 在 Annex 1 中的角色
Q30壓差紀錄屬於 GMP 電子紀錄時,資料完整性(ALCOA)與稽核軌跡要怎麼設計?
A30
FDA 2018 年的資料完整性指引把資料完整性定義為資料的完整性、一致性與準確性,且應具備 ALCOA 特性(可歸屬、清晰易讀、同步記錄、原始或真實副本、準確);稽核軌跡則是安全、由電腦產生、帶時間戳記的紀錄,可重建電子紀錄的建立、修改與刪除經過。軟體應保留原始資料與中繼資料,並記錄修改理由。
- 資料完整性適用整個 CGMP 資料生命週期:建立、修改、處理、維護、封存、取回、傳輸,以及保存期後的處置;系統設計與控制應使錯誤、遺漏與異常結果容易被發現。
- 中繼資料(metadata)是理解資料所需的脈絡資訊:例如數字「23」若沒有單位「mg」就沒有意義;中繼資料可包含取得時間戳記、操作者 ID、儀器 ID 與稽核軌跡,且資料與其中繼資料的關係必須以安全、可追溯的方式保存。對應到壓差,就是數值要連同單位、測點 ID、品質碼與時間戳一併保存。
- 稽核軌跡的範例:應包含使用者名稱、執行日期與時間、使用的參數與重新處理的細節,重新處理並應記錄變更理由;稽核軌跡涵蓋資料層(建立、修改、刪除)與系統層(存取嘗試、重新命名或刪除檔案)。
- FDA 對 21 CFR Part 11 的適用範圍指引指出:是否採用稽核軌跡,可依適用的規則要求與經文件化的風險評估決定;使用者預期會建立、修改或刪除受管制紀錄時,稽核軌跡特別適用。
- 軟體設計含意(設計建議):原始資料不覆寫,修正以新版本新增並保留原值;補傳資料保留來源時間與接收時間(見第 6、7 題);告警確認、抑制與門檻變更都寫入稽核軌跡;原始值與濾波值並存(見第 19 題);時間同步狀態一併記錄(見第 9 題)。
⚠ 注意事項
- 本題為 FDA 對藥品 CGMP 的指引摘要,並非法律意見;是否適用及如何落實,須由使用者的品質與法遵單位決定,其他地區法規另有要求,請另行查證。
- L2 政府/標準Data Integrity and Compliance With Drug CGMP: Questions and Answers — Guidance for Industry— U.S. Food and Drug Administration佐證內容:資料完整性與 ALCOA、中繼資料與稽核軌跡的定義
- L2 政府/標準Data Integrity and Compliance With Drug CGMP: Questions and Answers (Guidance Portal)— U.S. Department of Health and Human Services佐證內容:指引發布日期為 2018 年 12 月 13 日
- L2 政府/標準Part 11, Electronic Records; Electronic Signatures — Scope and Application— U.S. Food and Drug Administration佐證內容:稽核軌跡的適用判斷與風險評估