drawmiat

Grafcet 順序功能圖 IEC 60848

Grafcet 是 IEC 60848 標準的順序控制建模方法,用於描述自動化系統中的狀態轉換邏輯。適用於 PLC 程式設計、嵌入式控制流程規劃。

核心概念

欄位類型說明
StepNumber整數步驟唯一 ID
ModuleRef字串對應的 IDEF0 模組 ID(如 A1
StepType字串initial | normal | sub_grafcet
StepAction字串步驟啟動時執行的動作
LinkOutputType字串輸出連結類型(見下表)
LinkInputNumber整數陣列輸入步驟 ID 列表
LinkOutputNumber整數陣列輸出步驟 ID 列表
Condition字串陣列每個輸出轉換的布林條件
SubGrafcet陣列巢狀子圖(用於 macro 步驟)

連結類型(LinkOutputType)

類型語義用途
track單一順序段直線流程
divergence_or條件分支(二擇一)If-Else 邏輯
convergence_or條件匯合分支合流
divergence_and並行分叉同時啟動多個流程
convergence_and同步匯合等待所有並行流程完成

IEC 60848 演化規則

  1. 嚴格交替:步驟和轉換必須嚴格交替,不能步驟直連步驟
  2. 最小模型:至少 2 個步驟 + 1 個轉換。每個獨立圖恰好 1 個 initial 步驟
  3. 步驟語義:每個步驟代表穩定行為,動作僅在步驟啟動時執行
  4. 轉換語義:每個轉換必須有明確的可評估布林條件
  5. 轉換觸發:所有前置步驟必須啟動 AND 條件為 True
  6. 同步演化:觸發時同時停用所有前置步驟、啟動所有後繼步驟
  7. 啟動優先:若步驟同時被啟動和停用,啟動優先

JSON 格式

[
  {
    "StepNumber": 0,
    "ModuleRef": "A1",
    "StepType": "initial",
    "StepAction": "待機",
    "LinkInputType": [],
    "LinkOutputType": "track",
    "LinkInputNumber": [2],
    "LinkOutputNumber": [1],
    "Condition": ["start_button"],
    "SubGrafcet": []
  },
  {
    "StepNumber": 1,
    "ModuleRef": "A1",
    "StepType": "normal",
    "StepAction": "啟動馬達",
    "LinkInputType": [],
    "LinkOutputType": "track",
    "LinkInputNumber": [0],
    "LinkOutputNumber": [2],
    "Condition": ["timer_done"],
    "SubGrafcet": []
  },
  {
    "StepNumber": 2,
    "ModuleRef": "A1",
    "StepType": "normal",
    "StepAction": "停止馬達",
    "LinkInputType": [],
    "LinkOutputType": "track",
    "LinkInputNumber": [1],
    "LinkOutputNumber": [0],
    "Condition": ["reset"],
    "SubGrafcet": []
  }
]

IDEF0 追蹤性

每個 Grafcet 步驟的 ModuleRef 必須對應到 IDEF0 層級中存在的活動 ID。這確保了功能分解(IDEF0)與行為建模(Grafcet)之間的雙向可追蹤性。

常見錯誤

駱子逸

臺灣大學電機所碩士 • 中央大學資工博士班
社群網站創辦人 專利智財顧問 資安攻防顧問 新創經營者 智慧裝置創客 攝影藝術創作者
yeatsluo@g.ncu.edu.tw