ADR-002: Beckhoff TwinCAT + .NET 雙層架構整合策略
狀態
Accepted — 2026-05-07
背景
觸發此決策的問題
GatherTech 既有設備整合架構是「純 PC 主導」:C# .NET 透過 IO 卡 / 軸卡 SDK 直接控制硬體,所有即時邏輯、安全互鎖、設備通訊都跑在 Windows 上。此架構雖能用,但暴露幾個瓶頸:
- Windows 非確定性:GC stop-the-world、Timer 精度 ±15ms、Scheduler jitter 對 ms 級時序動作影響大
- PC 失效系統全停:Windows 當機 = 機台無法操作,連手動排除都做不到
- C# 多 thread 同步複雜:6+ 設備 polling + PID + UI + DB,鎖難寫對
- 協定改動 coupling:設備協定改變要動主控 + 重 build C#
限制條件
- 一人公司模式,所有 stack 必須能個人 own
- 既有 GST Framework(.NET 8 + WPF)是核心資產,不能砍掉重練
- 既有 Jope.SMB / Jope.Raman / ProcessVision 等案子在 production
- 客戶端多為化工 / 製藥 / 半導體 ,合規要求高(FDA Part 11)
市場觀察
化工/製藥/精密機械整合市場分層,「製備層級」(Prep HPLC、SMB、Pilot scale、連續流製造)是 PLC + PC 雙層架構的甜蜜點,但台灣市場目前缺乏「Beckhoff + .NET 一人 own 全 stack」的整合商定位。多數玩家用 Allen-Bradley / Siemens(歐美藥廠主流)或無 PLC(中小整合商)。
討論
評估方案
| 方案 | 描述 |
|---|---|
| A. 維持純 PC + IO 卡 | 不變動,繼續用 C# 包山包海 |
| B. PC + 獨立 PLC(Mitsubishi / 三菱) | 加 PLC 但不選 Beckhoff |
| C. Beckhoff IPC + TwinCAT(同一台) ✅ | TwinCAT 即時 kernel + Windows + .NET 同台 |
| D. PC + Beckhoff PLC(分離) | 兩台機器,Beckhoff 純 PLC |
對比
| 方案 | 優點 | 缺點 |
|---|---|---|
| A. 純 PC | 開發成本低、既有架構 | 無確定性、PC 死機台死、多執行緒鎖難 |
| B. PC + 三菱 PLC | 三菱在亞洲熟悉度高、便宜 | .NET 整合差、生態系不如 Beckhoff、編程器另成本 |
| C. Beckhoff IPC | TwinCAT real-time + Windows 同台、ADS 跟 .NET 整合天然順、EtherCAT 生態完整、單機減線 | License 費、學習曲線、相對 Allen-Bradley 在製藥廠 less established |
| D. PC + Beckhoff PLC | 完全隔離 PC 死也不影響 PLC、可分散 | 兩台機器、整合更複雜、成本更高 |
為什麼不選 A(維持現狀)
純 PC 在 ms 級控制、化工 FDA 案、安全關鍵設備上瓶頸明顯。長期看會被以「Beckhoff + .NET」起家的整合商搶單。
為什麼不選 B(三菱)
- 三菱跟 .NET 整合需經 OPC UA / MX Component,層數多
- 三菱 GX Works2 / 3 IDE 跟 Visual Studio 體驗落差大
- Beckhoff 有 Visual Studio Shell,跟 GST framework 開發體驗一致
- EtherCAT 生態 Beckhoff 領先,跨設備整合彈性高
為什麼不選 D(分離 PC + PLC)
- 一人公司管理兩台硬體成本高
- Beckhoff IPC 設計本意就是「同一台 PC + real-time kernel」,沒道理拆開用
- 真正需要分離的場景(防爆區 PC 進不去)很少
為什麼選 C
關鍵價值:TwinCAT real-time kernel 跑在同一台 PC,Windows 死了 PLC 還活,但 ADS 通訊跟 .NET 是一等公民。對一人公司而言,這是「最少硬體 + 最強整合」的甜蜜點。
決策
採用 Beckhoff IPC + TwinCAT 3 + .NET 雙層架構作為 GatherTech 化工/製藥/精密機械整合的未來標準。
分層職責
| 層級 | 跑哪裡 | 負責 |
|---|---|---|
| 即時控制層 | TwinCAT Real-time Kernel | 馬達 motion、汽缸/閥門動作、安全互鎖、即時 sensor feedback、ms 級時序 |
| 製程編排層 | C# / .NET (Windows) | SECS/GEM、Recipe 管理、Audit Trail、UI/HMI、業務流程 State Machine、資料庫 |
| 通訊 | ADS(主) / OPC UA(對外) | C# ↔ TwinCAT |
| 設備介面 | EtherCAT terminals | DI/DO/AI/AO/Servo/Encoder/Safety |
適用範圍
| 案子 | 適用度 | 動作 |
|---|---|---|
| 喬璞晶圓清洗 | ✅ 全套導入 | 全新案,作為第一個 production reference |
| PCR 自動站(Syscore 第二案) | ✅ 全套導入 | 多軸 + 即時 sensor + safety |
| Jope.SMB | ⚠️ 部分導入 | 只搬 ApaxValve + 安全層 + sensor IO,智慧設備保留 C# RS485 |
| Jope.Raman | ❌ 不導入 | 機構簡單,純 C# 已足夠 |
| ProcessVision | ❌ 不導入 | 已 production,無 IO 控制需求 |
| Jope.PAT | ❌ 不導入 | Read-only 監控 |
| 連續流製造(未來) | ✅ 全套導入 | 長期市場機會 |
設備分類規則(該不該移到 PLC)
| 類型 | 該移到 PLC | 範例 |
|---|---|---|
| Dumb actuator | ✅ 高優先 | 氣動閥、加熱器、簡單馬達 |
| Safety / interlock | ✅ 必移 | E-Stop、光柵、Door |
| 即時 sensor feedback | ✅ 高優先 | 壓力 / 流量 / 溫度 PID |
| 智慧型 RS485/232 設備 | ⚠️ 視情況 | SKS valve、漢邦泵、UV 檢測器 → 保留 C# 比較划算 |
| 高階通訊(SECS/GEM、DB) | ❌ 不移 | 留 C# |
詳細判斷邏輯見 framework/industrial-control/ 文件(待 promote)。
影響
正面影響
- 確定性 + 容錯:Windows 死掉 PLC 還活,系統能 graceful safe hold
- FDA / 半導體合規友善:硬體層獨立 validation,文件好寫
- 市場差異化定位:「Beckhoff + .NET 一人整合商」在台灣稀缺
- GST Framework 解耦:C# 不再煩硬體 timing,純做業務邏輯
- 長期 capability asset:培養出 reference architecture 庫
負面影響
- 學習投資:Hubert 需 6-12 個月認真學 ST + TwinCAT + EtherCAT
- 硬體成本:Beckhoff IPC + EL terminal + license 一台機 約 8-15 萬台幣
- 第一案踩雷成本:第一個 prototype 預估超時 1.5 倍
- 客戶教育:解釋「為什麼不是 Allen-Bradley / Siemens」需要時間
- Beckhoff 化工/製藥 case study 不多:需自行累積行銷素材
Breaking Changes
- 新案的硬體選型流程要更新(納入 Beckhoff IPC 為預設選項)
- 報價單要新增 Beckhoff IPC + EtherCAT terminal 組合包
- Sales Agent 提案模板要更新
實作計畫
Phase 1:個人學習(2026-05 ~ 2026-11,6 個月)
- ST 語法 + TwinCAT 3 IDE
- ADS 通訊 + 簡單 IO
- 自買入門 IPC(CX9020 + EL terminal)做 home prototype
- 內容物在
D:\WorkSpace\GatherTech\Personal-Learning\01-Beckhoff-TwinCAT\
Phase 2:第一個實案(2026-11 ~ 2027-04,5 個月)
- 喬璞晶圓清洗 sub-system 或 PCR prototype
- 雙 HMI 架構 + Mode 管理 + Recovery sequence
- 學成內容 promote 到
internal/onboarding/learning-tracks/03-beckhoff-twincat/
Phase 3:Reference Pattern 沉澱(2027 中)
- PC + PLC 雙層架構文件 →
internal/architecture/patterns/pc-plc-dual-layer.md - TwinCAT.Ads 整合指南 →
internal/framework/industrial-control/twincat-ads.md - ADS 協定文件 →
internal/protocols/ads/
Phase 4:GST Framework 補強(2027 後半)
- 抽象出
IPlcService(底層 ADS / OPC UA / 三菱皆可實作) - 雙 HMI 架構 SDK
- 給未來員工的 onboarding 教材完成
相關文件
- Track 03: Beckhoff TwinCAT 學習路徑
- framework/industrial-control(預留)
- protocols/ads(預留)
- Promotion SOP
- 個人學習筆記:
D:\WorkSpace\GatherTech\Personal-Learning\01-Beckhoff-TwinCAT\ - 外部參考:Stefan Henneken Blog, Beckhoff Information System
版本歷程
| 日期 | 版本 | 變更說明 |
|---|---|---|
| 2026-05-07 | 1.0 | 初始 ADR,經 9 輪策略討論收斂 |