首頁技術文章 › 階梯圖入門

階梯圖是什麼?PLC 階梯圖入門完整教學

易歐特科技 · PLC 基本功系列 · 適用三菱、西門子、歐姆龍、台達、士林

階梯圖(Ladder Diagram, LD)是 PLC 最主流的程式語言。它長得像電路圖,不是巧合——它就是為了讓看得懂繼電器控制盤的電氣技師,能直接看懂 PLC 程式而設計的。

一、為什麼叫「階梯」圖?

因為它長得像一把梯子:

左母線                                        右母線
  │                                            │
  ├──[ X000 ]──────────────────────( Y000 )───┤   ← 第 1 階 (Rung)
  │                                            │
  ├──[ X001 ]───[/X002 ]───────────( Y001 )───┤   ← 第 2 階
  │                                            │
  ├──[ X003 ]──┬──[ X004 ]─────────( Y002 )───┤   ← 第 3 階
  │            │                               │
  │            └──[ X005 ]──┘                  │

左右兩條垂直線是母線(想像成電源的正負極),中間每一條橫的就是一階(Rung)。電流從左邊流向右邊,如果一路暢通,右邊的線圈就會動作。

重要觀念:那不是真的電流
階梯圖裡的「電流」是虛擬的,PLC 內部並沒有電真的在跑。它只是借用電工師傅熟悉的視覺語言來表達布林邏輯。

但這個比喻非常好用:串聯 = AND,並聯 = OR。第 2 階是 X001 AND (NOT X002);第 3 階是 X003 AND (X004 OR X005)。

二、常開與常閉——最重要的分野

符號名稱什麼時候導通?三菱指令
─[ X ]─常開接點 (NO)X = ON 時導通LD X / AND X
─[/X]─常閉接點 (NC)X = OFF 時導通LDI X / ANI X
─( Y )輸出線圈左邊導通時,Y 變 ONOUT Y

常閉接點是「反相」的:訊號沒來的時候它是通的,訊號一來反而斷開。新手最常在這裡卡住。

最容易搞混的地方:程式裡的常閉 ≠ 現場按鈕是常閉

這是兩件事:
· 現場的按鈕實體接線是常開還是常閉(硬體)
· 程式裡畫的接點是常開還是常閉(軟體)

停止按鈕的標準做法是:實體用常閉接線(沒按時導通)。
所以沒按下時,PLC 輸入 X001 = ON;按下、或線斷掉 → OFF

因此在程式裡,運轉條件必須「X001 = ON 時成立」→ 要用常開接點:AND X001

一句話:實體常閉 → 程式常開。接線與程式的接點型式是相反的。

為什麼這樣才安全?斷線安全:線斷了 → X001 變 OFF → AND X001 不成立 → 設備停止。跟按下停止鈕的效果一樣。
如果實體接成常開,線一斷 X001 恆為 OFF,程式判定「沒人按停止」→ 你永遠停不下來。

寫反了會怎樣?如果你用 ANI X001 去讀常閉接線的停止鈕:X001 平常就是 ON,ANI 恆為 false → 設備永遠啟動不了。而現場為了「讓它動」,最直覺的做法就是把停止鈕改接成常開——失效安全就在那一刻消失。

詳細說明見:自保持電路教學

三、PLC 是怎麼執行階梯圖的?——掃描週期

這是初學者最容易誤解的一點。PLC 不是像電路一樣同時運作,它是一階一階、由上而下、循環執行的。

每一個循環叫做一次掃描(Scan),分三個階段:

┌─────────────────────────────────────────┐
│ 1. 讀取輸入 (Input Scan)                 │
│    把所有 X 的實體狀態,一次拍快照存起來    │
├─────────────────────────────────────────┤
│ 2. 執行程式 (Program Scan)               │
│    從第 1 階算到最後一階,用「快照」的值    │
│    運算結果先寫進內部的輸出映像區          │
├─────────────────────────────────────────┤
│ 3. 更新輸出 (Output Scan)                │
│    把輸出映像區的值,一次送到實體 Y 端子    │
└─────────────────────────────────────────┘
             ↓ 回到 1,不斷重複
       一圈通常 1~10 ms(視程式長度與機種)
這會導致三個很實際的後果:

1. 程式執行中,輸入不會變。 就算實體按鈕在第 5 階執行到一半時被按下,程式看到的仍是掃描開始時拍的那張快照。要到下一輪掃描才會反應。

2. 順序會影響結果。 如果第 10 階把 M0 設為 ON,而第 3 階用到 M0,那第 3 階這一輪用到的是上一輪的 M0 值——慢了一拍。這是「順序錯誤」類 bug 的主要來源。

3. 同一個輸出寫兩次,後面的會蓋掉前面的。 因為輸出映像區被最後執行的那一階覆寫。這叫「雙線圈(Double Coil)」,是明確的禁忌。

雙線圈的錯誤示範

LD    X000
OUT   Y000      ; 第一次寫 Y000

LD    X001
OUT   Y000      ; ★ 又寫一次 Y000 → 前面那個完全無效

不管 X000 是什麼狀態,Y000 最後永遠等於 X001。除錯時會非常抓狂,因為你看第一階明明是對的。

正確做法: 兩個條件要用 OR 併在同一階。

LD    X000
OR    X001
OUT   Y000      ; 只寫一次

四、常用元件符號一覽(三菱)

代號名稱用途
X輸入按鈕、感測器、限位開關(唯讀)
Y輸出接觸器、電磁閥、指示燈
M內部繼電器程式中間狀態,不對外(最常用)
T計時器延遲、防抖(詳見計時器教學)
C計數器計件、批次控制
D資料暫存器存數值:溫度、液位、設定值
實務原則:輸出 Y 不要拿來當中間狀態用
需要保存狀態就用 M,Y 只在最後「跟隨」M。這樣邏輯與硬體分離,之後要加手動模式、遠端啟動、安全條件都不用動到核心邏輯。這是分辨老手與新手的一個明顯指標。

五、西門子的差異

西門子 S7-1200/1500 的階梯圖(LAD)邏輯相同,但:

六、什麼時候不該用階梯圖?

階梯圖擅長布林邏輯(開關、互鎖、時序),但不擅長:

實務上的標準做法是混用:主控邏輯、互鎖、安全用階梯圖(電氣人員看得懂,現場好除錯);運算、資料處理用 ST。這也是 IEC 61131-3 制定多種語言的原因。

ST 的部分請見:ST 結構化文本入門教學

小結

AI 產生的 PLC 程式,到底能不能信?

我們建了一套 20 題基準測試,題目全部來自真實案場,並且公開了完整結果——包含難看的那幾項: 編譯通過率 80~95%、品牌指令混用 0%、整體全對 55~65%。

還有一個對我們自己不利的發現:AI review 幫得上找出可疑點,但 finding 本身也會誤報、必須經規則層與測試結果校正;它更不能可靠地「修好」程式。

我們把 AI 寫 PLC 的準確率量出來了:20 題基準測試

用中文描述需求,直接產生階梯圖

不用背指令、不用記元件編號。說出控制需求,AI 立即產生階梯圖與助記碼,並標註每一階在做什麼。支援三菱、西門子、歐姆龍、台達、士林。

免費試用 AI PLC 工具 →

免費會員每月 15 點 · 不需信用卡 · 產生失敗不扣點

易歐特科技有限公司 · 工業自動化 PLC 程式設計與環控系統整合 · 複雜專案可委託開發