PLC 狀態轉移圖的畫法 — 把裝置的狀態畫在一張圖上,沒畫到的組合用表補齊

最後更新: 2026-09-24 / 分類: PLC 程式設計、控制邏輯設計

狀態轉移圖是把整台裝置現在在哪個狀態、按哪個按鈕或發生哪個異常會移到哪裡,畫在一張圖上的圖。本文寫給不想讓規格裡沒有的組合由寫階梯圖的人決定的 PLC 控制設計者。

自動運轉中再按一次啟動,第一個工程的旗標又立了一次。這是流程圖的正常流程裡沒有的組合,所以寫階梯圖的人當場自己決定了。圖上畫得出來的只有想到的箭頭。沒畫到的組合,用狀態 × 事件的表一格一格填。

搬送裝置的狀態轉移圖。電源投入從原點未完成開始。從原點未完成按原點復歸按鈕到原點復歸中,原點復歸完成到等待啟動,啟動到運轉中。從運轉中暫停到暫停中,從暫停中啟動回到運轉中。在工程的段落且有週期停止標記時,從運轉中回到等待啟動。從原點復歸中暫停到原點未完成,從等待啟動按原點復歸到原點復歸中,從等待啟動切換到手動則到原點未完成。從內側的框(異常停止中、緊急停止中以外的狀態)因異常到異常停止中。從異常停止中重置,可從中斷處續行時到等待啟動,其他情況到原點未完成。從外側的框(緊急停止中以外的狀態)因緊急停止到緊急停止中。解除緊急停止並重置、動力接通後到原點未完成。
把搬送裝置(輸送帶搬運、夾具固定、機器人取出)的狀態分成 7 個,在箭頭上寫轉移的觸發(按鈕、處理完成、異常)。[ ]是當時轉移的條件,( )是補充。從框出來的箭頭,表示框內任何狀態都可以轉移。運轉中進行的工程(等待工件、搬送、夾緊、取出)另以流程圖繪製。手機上可橫向捲動圖,或點按開啟。

1. 狀態轉移圖只畫整台裝置的狀態,工程放到流程圖

狀態轉移圖畫的是整台裝置的狀態。範例的圖有 7 個,運轉中進行的「等待工件 → 搬送 → 夾緊 → 取出」沒有畫。工程畫在PLC 控制流程圖的畫法,以工程編號(10、20、30…)與進到下一步的條件表示。因為連工程都放進來,像異常、暫停這種任何地方都會發生的事件的箭頭,就會隨工程數量增加。

兩張圖以工程編號連結。從暫停中啟動,就從停止的工程繼續;原點復歸之後,從第一個工程開始。可從中斷處續行的異常重置之後,從停止的工程開頭開始。

PLC 控制流程圖的畫法中稱為「步驟(狀態)」的,相當於本文的工程。狀態多到像這個範例時,等待啟動、異常停止中就移到這張圖。流程圖的異常出口只要寫「到異常停止中」就夠了。若是作業員每次放工件再啟動的裝置,就拿掉週期停止標記的條件,在每個工程的段落都回到等待啟動。

2. 狀態用「持續中的事」、箭頭用「發生的事」來畫

  1. 狀態以「持續中的事」、箭頭以「發生的事」命名 狀態的名稱用會持續一陣子的「〜中」「等待〜」。箭頭的名稱是一瞬間發生的「啟動(按下了)」「異常(逾時了)」。做一個叫「啟動」的狀態,就分不清是按下的瞬間,還是運轉的期間。
  2. 把正在處理的狀態與等待中的狀態分開 灰色的原點復歸中,處理完成就自行移到等待啟動。白色的等待啟動,會一直等到有人按啟動。原點復歸中的結束,是步驟走到最後一段(原點復歸流程圖(範例)的話是把 bHomeDone 設 ON 的那一段)。
  3. 「任何狀態皆可」的箭頭,從框只畫一支 異常可從 5 個狀態的任何一個發生。不畫 5 支,而是從圍住異常停止中、緊急停止中以外 5 個狀態的框畫一支到異常停止中。把箭頭全部畫出來的圖,少了一支也沒人會發現。
  4. 用箭頭畫出電源投入後從哪裡開始 範例的圖從電源投入的黑點畫到原點未完成。因為停電之後工件留在中途,軸在哪裡也不確定。若把保存狀態的變數放在停電後仍保留值的範圍,運轉中停電的裝置會在沒人按啟動的情況下動起來。
  5. 同一事件出兩支箭頭時,條件要寫成不重疊 異常停止中的重置有兩個去處。可從中斷處續行(控制規格書的寫法的 E01、E02)時到等待啟動,其他情況到原點未完成。若兩個條件可能同時成立,移到哪裡就由程式的書寫順序默默決定。
  6. 模式放在另一個軸,切換時的去處依狀態逐一決定 範例的圖是自動模式的狀態。切換到手動時,原點未完成與異常停止中可直接手動操作,從等待啟動則移到原點未完成。因為不知道換線時動了裝置的哪裡,回到自動之前要用一次原點復歸重新確認。

3. 用狀態 × 事件的表補齊沒畫到的組合

圖的箭頭除了電源投入之外有 14 支。做成表是 7 個狀態 × 10 個事件共 70 格,把圖的箭頭抄過來也只填了 25 格。剩下的 45 格圖上沒有。原點未完成時按了啟動、運轉中再按一次啟動,要一格一格決定。

格子裡寫的是下列 5 種,「不接受」與「不可能發生」不同。不接受的格子,在驗收時按按鈕確認什麼都不會發生。不可能發生的格子無法按來測試。萬一發生,就當作程式錯誤異常停止。

事件 \ 狀態原點未完成原點復歸中等待啟動運轉中暫停中異常停止中緊急停止中
原點復歸(按鈕)→ 原點復歸中/→ 原點復歸中////
原點復歸完成×→ 等待啟動×××××
啟動顯示「原點復歸尚未完成」/在可再開的位置 → 運轉中
不在位置 → 顯示「不在可再開的位置」
/→ 運轉中(從停止的工程繼續)//
暫停/→ 原點未完成(放棄復歸)/→ 暫停中///
週期停止///立標記立標記//
工程的段落×××有標記 → 等待啟動
無標記 → 直接等下一個工件
×××
異常→ 異常停止中→ 異常停止中→ 異常停止中→ 異常停止中→ 異常停止中新出現別的編號的異常就加進履歷(不再能從中斷處續行)把新出現的異常加進履歷
重置/////原因仍存在 → /
可從中斷處續行 → 等待啟動
其他情況 → 原點未完成
解除之前 → /
放開後動力已接通 → 原點未完成
放開後 3 秒未接通 → 顯示「動力無法接通」
緊急停止→ 緊急停止中→ 緊急停止中→ 緊急停止中→ 緊急停止中→ 緊急停止中→ 緊急停止中/
切換到手動可手動操作→ 異常停止中→ 原點未完成→ 異常停止中→ 異常停止中可手動操作只切換模式

「工程的段落」是在第一個工程(等待工件)等待下一個工件期間成立的、只有運轉中才有的條件。從等待啟動的啟動,若是第一個工程則要在原位,若是續行則要停止的工程開頭的條件都成立,才接受。週期停止的標記在進入等待啟動、異常停止中、緊急停止中時清除。異常的列是異常清單的 E01〜E04,緊急停止(E05)是緊急停止的列。

填格子時會猶豫的,是下面這些地方。

表用 Excel 做,加上版次編號放進規格書。資料驗證的清單放「/,×」,並設定不顯示錯誤訊息,就也能輸入「→ 等待啟動」。空白格用設定格式化的條件的公式 =ISBLANK(B2)塗成紅色。加了一個事件就要加一列並把 7 格全部填滿,否則圖、表、階梯圖會不一致。

4. 收集狀態與事件,先畫正常的箭頭,再用表補齊

  1. 列出狀態 從想顯示在操作盤的燈與畫面上的運轉狀態收集。要當成狀態的,是由操作者的按鈕、異常、原點復歸完成這類其他處理進出的東西。依感測器條件一步步前進的搬送、夾緊是工程,就算畫面顯示「搬送中」也放到流程圖。
  2. 收集事件 從操作盤的按鈕與開關、處理完成、只在運轉中看的條件、異常收集。異常清單的異常合併成一列,只有緊急停止是另一列。像蜂鳴器停止這種在任何狀態都做同樣事的操作,不放進表。
  3. 畫正常的箭頭,任何地方都會發生的用框表示 先畫從電源投入到運轉中,以及停止後回來的路。異常與緊急停止從框各畫一支。
  4. 做成表,填空白 先抄圖的箭頭,再把剩下的格子用 /、×、文字填滿的階段。自己決定不了的格子留白,在旁邊寫下問誰能決定(客戶、機械設計、安全負責人)。

5. 在 PLC 中狀態以一個變數保存,一次掃描只轉移一次

  1. 狀態以編號存在一個變數裡 把狀態編號放進一個整數變數。每個狀態各有旗標的話,在結構上就無法防止兩個同時成立。停電後不保留值的範圍的變數在開機時為 0,所以原點未完成設為 0 號。
  2. 轉移以掃描開頭的狀態判斷,一次掃描只轉移一次 判斷用掃描開頭複製的狀態進行。若從上到下排成「等待啟動且啟動則運轉中」,下面的行會看到剛改寫的運轉中而繼續往前。下一個狀態在最後一起寫入,ST 的 CASE 敘述一次掃描只執行一個分支。
  3. 「任何地方皆可」的轉移,寫在各狀態的轉移之後 依各狀態的轉移 → 異常 → 緊急停止的順序寫。後寫的指派會留下,所以同一掃描中啟動與緊急停止重疊時,緊急停止勝出。圖上框的箭頭,在程式裡也各只有一處。
  4. 進入時只做一次的處理,與持續送出的輸出分開 進入時的處理只在編號改變的那次掃描執行。「進入異常停止中就把編號存進履歷」若每次掃描都做,履歷會隨掃描次數增加。像燈與顯示這種只由狀態決定的輸出,以「紅燈 = 異常停止中或緊急停止中」這樣一個輸出一個式子來寫。
  5. 走到不可能的編號就異常停止 在 ELSE 移到異常停止中並把編號顯示在畫面上。ELSE 什麼都不寫或回到等待啟動,會藏住其他迴路的寫入或打錯字。表上 × 的格子發生時也一樣。
  6. 按鈕以按下的瞬間為事件,緊急停止與異常在成立期間持續看 按鈕只看上升緣的那一次掃描。若做成 ON 期間都接受,按著啟動放工件的瞬間就會動起來。緊急停止與異常則相反,在成立期間每次掃描都看,讓按著按鈕開機也能移到緊急停止中。

6. 容易出錯的是週期停止的顯示、等待工件的算法、緊急停止的角色

7. 表上不是 × 的 58 格,直接成為驗收的測試項目

表上不是 × 的 58 格,直接就是測試項目。→ 的格子確認移到的狀態與進入時的處理,/ 的格子按按鈕確認什麼都不發生。異常與緊急停止不只在運轉中,要從框內所有狀態都觸發一次。原點復歸中的逾時、暫停中的緊急停止,是容易從測試漏掉的組合。

一格一格確認之後,也要試連續兩個操作的組合。按週期停止後暫停,再啟動,標記是否還在、是否在工程的段落停到等待啟動。運轉中關掉電源再開,是否從原點未完成開始、什麼都不動(安全繼電器是手動重置的話則是緊急停止中)。只一格一格確認表,找不到這種順序的錯誤。

繪製工程流程圖的編輯器

  • Flowchart Editor — 把運轉中進行的工程(等待工件、搬送、夾緊、取出)畫成工程編號與進到下一步的條件。沒有繪製狀態轉移圖本身的功能。

不用安裝也不用註冊,只要瀏覽器就能使用。

相關文章

yk.builds