drawmiat

Grafcet 順序功能圖 IEC 60848

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

兩種 JSON 格式

drawmiat 接受兩種輸入:

新作品建議直接用 canonical 格式輸出,可確保 transition、gate、port、edge 與條件關係都被明確表達;legacy 格式仍可用於既有資料,但部分語意(如 gate port 對應、edge id、bypass topology)會在 canonicalize 階段被推導。

Canonical 格式:頂層結構

{
  "Steps":  [ ... ],   // 步驟 (穩定狀態) 列表
  "Gates":  [ ... ],   // 條件 transition / 分匯合閘列表
  "Edges":  [ ... ]    // 步驟 ↔ gate 之間的有向連線
}

Steps

欄位類型說明
StepNumber整數步驟唯一 ID
StepType字串initial | normal | sub_grafcet
StepAction字串步驟啟動時執行的動作描述
ModuleRef字串(選填)對應的 IDEF0 活動 ID(如 A1),用於跨圖追蹤
SubGrafcet陣列(選填)巢狀子圖(macro step)

Gates

欄位類型說明
GateNumber整數Gate 序號(用於 stable id)
GateId字串G1,作為 Edge endpoint 的命名根
GateType字串divergence_or / divergence_and / convergence_or / convergence_and
Owner物件{Kind: "source"|"target", StepNumber: N} — diverge 由 source step 持有,converge 由 target step 持有
Inputs陣列每個 input port 一筆 {Port: "I1", From: "S1O1"},From 是 step 或上游 gate 的 output endpoint
Outputs陣列每個 output port 一筆 {Port: "O1", To: "S2I1", Condition: "..."},Condition 是該分支的布林觸發條件

Edges

欄位類型說明
EdgeId字串由 endpoint pair 組成,如 S1O1G1I1G1O2S3I1
From字串來源 endpoint:step output(S{n}O{k})或 gate output(G{n}O{k}
To字串目的 endpoint:step input(S{n}I{k})或 gate input(G{n}I{k}
Condition字串(選填)當 edge 直接承載條件時(無 gate 介入的 step→step transition)

連結類型(GateType / Legacy LinkOutputType)

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

Canonical 範例

{
  "Steps": [
    {"StepNumber": 0, "StepType": "initial", "StepAction": "待機",       "ModuleRef": "A1"},
    {"StepNumber": 1, "StepType": "normal",  "StepAction": "啟動馬達",   "ModuleRef": "A1"},
    {"StepNumber": 2, "StepType": "normal",  "StepAction": "監測異常",   "ModuleRef": "A1"},
    {"StepNumber": 3, "StepType": "normal",  "StepAction": "停止馬達",   "ModuleRef": "A1"}
  ],
  "Gates": [
    {
      "GateNumber": 1, "GateId": "G1", "GateType": "divergence_or",
      "Owner":  {"Kind": "source", "StepNumber": 1},
      "Inputs": [{"Port": "I1", "From": "S1O1"}],
      "Outputs": [
        {"Port": "O1", "To": "S2I1", "Condition": "timer_done"},
        {"Port": "O2", "To": "S3I1", "Condition": "fault_detected"}
      ]
    }
  ],
  "Edges": [
    {"EdgeId": "S0O1S1I1", "From": "S0O1", "To": "S1I1", "Condition": "start_button"},
    {"EdgeId": "S1O1G1I1", "From": "S1O1", "To": "G1I1"},
    {"EdgeId": "G1O1S2I1", "From": "G1O1", "To": "S2I1", "Condition": "timer_done"},
    {"EdgeId": "G1O2S3I1", "From": "G1O2", "To": "S3I1", "Condition": "fault_detected"},
    {"EdgeId": "S2O1S0I1", "From": "S2O1", "To": "S0I1", "Condition": "reset"},
    {"EdgeId": "S3O1S0I1", "From": "S3O1", "To": "S0I1", "Condition": "ack"}
  ]
}

Legacy 格式(為相容性保留)

每個元素是一個 Step 物件,內含本身與所有後繼 transition 的描述。validator 會以以下規則 canonicalize:

[
  {"StepNumber": 0, "StepType": "initial", "StepAction": "待機",
   "LinkOutputType": "track",         "LinkInputNumber": [2,3], "LinkOutputNumber": [1],   "Condition": ["start_button"]},
  {"StepNumber": 1, "StepType": "normal",  "StepAction": "啟動馬達",
   "LinkOutputType": "divergence_or", "LinkInputNumber": [0],   "LinkOutputNumber": [2,3], "Condition": ["timer_done","fault_detected"]},
  {"StepNumber": 2, "StepType": "normal",  "StepAction": "監測異常",
   "LinkOutputType": "track",         "LinkInputNumber": [1],   "LinkOutputNumber": [0],   "Condition": ["reset"]},
  {"StepNumber": 3, "StepType": "normal",  "StepAction": "停止馬達",
   "LinkOutputType": "track",         "LinkInputNumber": [1],   "LinkOutputNumber": [0],   "Condition": ["ack"]}
]

IEC 60848 演化規則

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

Endpoint 命名規則

IDEF0 追蹤性

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

常見錯誤

PPTX 匯出與 PowerPoint 增益集

Grafcet SVG 之外,drawmiat 同時匯出 可編輯 PPTX(每個 step / gate / route / label 都是 PowerPoint 原生 shape,可在 PPT 內直接調整)。Condition 標籤的放置由兩段管線負責:

安裝增益集

  1. 下載 PPTX 增益集(zip 包,約 138 KB)
  2. 解壓出 miat_installer.cmd,雙擊執行
  3. 等候出現「Installation complete」訊息
  4. 重開 PowerPoint —— 上方應出現「Grafcet」分頁

分頁上的「一鍵 Refit + 統一字級」會把當前 deck 所有 Miat 標籤重新跑一次排版(refit text → normalize font → layout stub labels)。也可在「更多動作」下拉中個別觸發各步驟。

注意事項

駱子逸

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