時序圖的畫法 — 人與程式碼、人與人之間的共同介面

最後更新: 2026-09-25 / 分類: 控制設計、PLC

時序圖是把機械工程師腦中的「動作順序」交給軟體工程師的圖。本文寫給只拿到圖面與配線表就得寫程式的人,以及想把順序傳達給對方的機械工程師。

1. 圖面沒有順序。把順序交出去的就是這張圖

看機械也看不出原本打算怎麼動。因為圖面上只有氣缸與感測器的位置,沒有寫「前進端到了之後才關夾爪」這種順序。

不知道順序的軟體工程師只能猜著寫。猜對就能動,猜錯就在試車時停下。時序圖是把這個順序從圖面拿出來、放在硬體與軟體之間的圖。波形與箭頭只是外觀,內容是下面三件事。

2. 圖的內容是三件事

① 把連續的動作切成狀態

第一件,是把沒有切分的動作切成「狀態」。活塞桿連續移動,馬達持續旋轉。軟體沒有段落就無法處理,所以要在某處切開。例如「前進端變 ON 之前是前進中」「變 ON 就是前進完成」。

1 Step = 100 ms 的時序圖。由上而下:PLC→氣缸的 bFwdCmd(前進指令)、氣缸→PLC 的 nRodPos(活塞桿位置,從 0 斜向上升到 100 mm 的波形)、bFwdLS(前進端 LS,位置到達 100 的 S7 時 ON)、內部的 sState(狀態)「後退」「前進中」「前進完成」的值區塊。有箭頭從前進指令的上升緣到「前進中」,從前進端 LS 的上升緣到「前進完成」。
上面 2 列是機械側(指令,以及沒有切分的活塞桿動作),下面 2 列是軟體側(切分位置的 LS,以及切分後的狀態)。箭頭的位置就是「在哪裡切」的決定。

為什麼需要 — 因為只有機械工程師知道在哪裡切。感測器的位置,和機械工程師稱為「完成」的位置不一定相同。圖上沒有切法,軟體工程師就會把感測器的 ON 直接當成完成來寫。

② 讓週期不同的機器同步

第二件,是讓以各自週期運作的機器步調一致的程序。PLC 是 10 ms 的掃描,機器人有自己的週期,隔壁的裝置由另一台 PLC 運作。彼此都不知道對方的週期。只是丟出訊號,可能在對方看到之前就消失,或原本要一次卻被撿到兩次。

1 Step = 10 ms 的時序圖。由上而下:PLC A→PLC B 的 bReq(要求)、內部的 bReqRead(B 讀到的要求。B 每 50 ms 讀一次)、PLC B→PLC A 的 bAck(回應)。前半 A 只在 S1 這 1 個 Step 設 ON 的要求,沒有出現在 B 讀到的要求中。後半 A 從 S6 起保持要求,S10 時 B 讀到、回應變 ON,A 看到回應在 S11 撤掉要求,B 看到要求撤掉在 S13 撤掉回應。有 3 支箭頭。
前半:只丟出訊號(在 B 的週期之間消失)。後半:等待對方的回應(不知道週期也一定撿得到)。

為什麼需要 — 因為每台機器單獨做得正確,接起來的地方仍會壞。要求 ON → 回應 ON → 要求 OFF → 回應 OFF 這 4 個變化(交握)不是小技巧。它是兩台非同步的機器確實對齊狀態的最小程序。省略中間的步驟,兩邊的實作就會在省略處分歧。

③ 把機器之間的責任分界定為契約

第三件,是機器與機器之間的約定。連時間條件一起決定,例如「伺服就緒變 ON 之後,到動作要求要間隔 500 ms 以上」。等待時間畫成我方計時的計時器波形,對方送出什麼、我方何時送出,用列分開。哪一列屬於誰,分界就會出現在圖上。

1 Step = 100 ms 的時序圖。上列是伺服放大器→PLC 的 bServoReady(伺服就緒),S3 時 ON。中列是內部的 tReadyWait(自就緒起經過的時間),從就緒的上升緣起 0、100、…、500 ms 斜向上升的波形。下列是 PLC→伺服放大器的 bRunReq(動作要求),波形到達 500 的 S8 時 ON。有箭頭從就緒的上升緣到波形的起點,從波形的 500 到要求的上升緣。
上方是對方的責任(送出就緒),下方是我方的責任(看到就緒後等 500 ms 再送出要求)。中間的波形是我方計的時間。這是操作手冊裡會寫的那種約定。

為什麼需要 — 因為這裡達成共識,內部就能各自自由設計。放大器裡面做什麼都好,只要守住就緒與 500 ms,PLC 側就不用變。沒有共識,兩邊就猜著對方的內部來做,試車時容易變成「你那邊太慢」「你那邊先撤掉的」。

3. 圖上要這樣畫

4. 畫的順序

  1. 排列機器,以及在分界交換的訊號 列依機器分組,訊號名稱也附上變數名稱與元件。例:進料要求 bLoadReq / Y020。
  2. 一邊在狀態分界切分,一邊畫正常的一個週期 從啟動到完成,依序放邊緣,用箭頭連起來。連不起來的邊緣,就是切法還沒決定的地方。
  3. 分界的時間條件以數值標上 等待時間與回應期限。寫在邊緣附近,或該列的註解。
  4. 異常時與復歸另畫一張圖 用相同的列,只改劇情。連在哪裡停、撤掉哪個訊號、怎麼回到原位都要決定好。

5. 容易出錯的地方

6. 畫完之後

箭頭直接成為流程圖的判斷(進到下一步的條件),列成為位址對照表的變數。

製作本文的圖所用的工具

本文的圖全部用 Timing Chart Editor 畫好,再匯出成 SVG。

  • Timing Chart Editor — 依送出訊號的一方(M / S)排列列,從變化畫箭頭到變化,可寫入等待時間與註解。
  • Flowchart Editor — 把時序圖的箭頭換成判斷與等待,組成流程圖。
  • Address Map Editor — 為時序圖的訊號分配 PLC 元件。

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

相關文章

yk.builds