首頁技術文章 › PLC 自保持電路

PLC 自保持電路怎麼寫?啟動停止自保持完整教學

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

自保持電路(Self-holding,也叫自鎖電路)是 PLC 階梯圖的第一課,也是幾乎每個實際專案都會用到的基本結構。按一下啟動鈕,馬達就持續運轉,不必一直按著——這就是自保持在做的事。

這篇文章講清楚三件事:自保持為什麼要這樣寫、停止鈕為什麼一定要用常閉接點、以及新手最常踩的三個坑。

一、為什麼需要自保持?

PLC 的按鈕訊號是「點動」的:按下去是 ON,放開手馬上變 OFF。如果直接寫成:

LD    X000        ; 啟動按鈕
OUT   Y000        ; 馬達

結果會是手按著馬達才轉,放開就停。這叫寸動(Jog),只有在對位、試車時才要這種行為。

要讓馬達「按一下就持續運轉」,就得讓輸出自己把自己保持住——這就是自保持。

二、標準自保持電路(三菱)

|--[ X000 ]--+--[ X001 ]--[ X002 ]------( M0 )--|
|            |
|--[  M0  ]--+
|
|--[  M0  ]-------------------------( Y000 )--|

助記碼:

LD    X000        ; 啟動按鈕(實體常開接線,按下 = ON)
OR    M0          ; ← 自保持接點,關鍵就在這一行
AND   X001        ; 停止按鈕(實體常閉接線 → 平常 = ON → 程式用常開接點)
AND   X002        ; 過載保護(實體常閉接線 → 平常 = ON → 程式用常開接點)
OUT   M0          ; 運轉狀態

LD    M0
OUT   Y000        ; 馬達接觸器
停一下 —— 這裡就是全篇最容易寫反的地方

停止鈕的實體接線是常閉,但程式裡用的是常開接點(AND X001)。

很多人(包括很多 AI 工具)會寫成 ANI X001,理由聽起來很順:「停止鈕是常閉的,所以程式也用常閉」。
那是錯的。常閉接線的停止鈕沒按下時電路是導通的 → X001 平常就是 ON
ANI 去讀它,條件恆為 false → 馬達永遠啟動不了

口訣:實體常閉 → 程式常開。

它是怎麼動的?

動作X000M0結果
初始OFFOFF馬達停止
按下啟動ONOFF→ONM0 導通,馬達運轉
放開啟動鈕OFFONM0 自己的接點接手,持續運轉
按下停止OFFON→OFFX001 變 OFF → AND X001 斷開,M0 失電,馬達停止
停止鈕的線斷掉OFFON→OFFX001 同樣變 OFF → 馬達也會停。這就是斷線安全
關鍵在 OR M0
這一行把「M0 自己的接點」並聯在啟動鈕旁邊。啟動鈕放開後,電流改從 M0 自己的接點流過來,所以 M0 能自己撐住自己——「自保持」三個字就是這個意思。

三、停止鈕的實體接線為什麼一定要常閉?

這是新手最常搞錯、也最危險的一點——而且錯的方式有兩種,一種讓設備停不下來,另一種讓設備動不了。

現場的停止按鈕,實體接線必須用常閉接點(NC, Normally Closed)——沒按的時候是導通的,按下去才斷開。

原因:斷線安全(Fail-Safe)

假設停止鈕的線斷了、端子鬆脫了:

✓ 常閉接線:斷線 → 訊號變 OFF → 跟「被按下」一樣 → 設備停機。安全。

✗ 常開接線:斷線 → 訊號永遠 OFF → 程式判定「沒人按停止」→ 你按停止鈕也停不下來。 危險。

工業安全的原則是:任何單一故障都不能讓設備「無法停止」。所以停止、急停、過載跳脫,實體一律用常閉。

那程式裡該用哪種接點?常開。

這一步幾乎所有人都會想反,包括市面上的 AI 工具。跟著訊號走一次就清楚了:

狀況常閉接線的實體PLC 輸入 X001運轉條件該不該成立?
正常(沒按停止)導通ON (1)要成立 → 馬達可以轉
按下停止斷開OFF (0)不成立 → 馬達停
線斷掉斷開OFF (0)不成立 → 馬達停(安全)

條件要在 X001 = 1 時成立 → 這正是常開接點的定義 → 程式寫 AND X001

寫成 ANI X001 會發生什麼事?

X001 平常就是 1,ANI X001 恆為 false → 條件永遠不成立 → 馬達永遠啟動不了

然後真正的災難才開始:現場為了「讓它動」,最直覺的做法就是把停止鈕改接成常開
從那一刻起,線斷掉 = X001 恆為 OFF = 程式判定「沒人按停止」= 停不下來。

一個接點寫反,毀掉的是整套失效安全設計。而且沒有人會發現,因為設備「看起來正常」。

同理,熱動電驛(過載保護)也是常閉接線,程式一樣用常開接點 AND X002 讀取。

ANI / LDI 什麼時候該用?

用在內部旗標(互鎖:ANI M11)、計時器(ANI T0),以及故障偵測——例如「過載跳脫時把故障鎖起來」:

LDI X002 → X002 變 OFF(跳脫)時成立 → 鎖住故障記憶。這個用法是對的。

差別在於:運轉條件用常開接點,故障偵測才用反相接點。

四、西門子(S7-1200 / S7-1500)的寫法

邏輯完全一樣,只是元件與指令不同。SCL 結構化文本一行就能表達:

// 自保持
// Stop_PB 與 Overload 實體都是常閉接線 → 平常 = TRUE
// 所以直接 AND 進去,不要加 NOT
"Motor_Run" := ("Start_PB" OR "Motor_Run")
               AND "Stop_PB"
               AND "Overload";
西門子的常見混淆點
程式中該用常開觸點還是常閉觸點,取決於實體怎麼接,不是取決於按鈕叫什麼名字。

停止鈕實體用常閉接線(標準做法)→ 訊號平常是 1,按下才變 0 → 程式中用常開觸點讀取即可(訊號為 1 時導通)。

SCL 裡寫成 AND NOT "Stop_PB" 是同一個錯誤的另一種長相:訊號平常是 1,NOT 之後恆為 0,馬達永遠啟動不了。

這跟三菱的 AND X001 是同一件事的兩種寫法。實體常閉 → 程式常開,在哪一牌都一樣。

五、新手最常犯的三個錯誤

錯誤 1:忘了 OR 自保持接點

只寫 LD X000 / AND X001 / OUT M0,結果放開按鈕就停。這是最常見的。

錯誤 2:自保持接點抓錯元件

寫成 OR Y000 而不是 OR M0。一旦輸出被別的邏輯干擾(例如手動模式強制 OFF、或輸出被其他 rung 覆寫),自保持就失效了。

正確做法:用內部繼電器 M 保持「狀態」,輸出 Y 只是「跟隨」M。 狀態與輸出分離後,之後要加手動/自動切換、互鎖、安全條件、遠端啟動,都很容易插進去,不會動到自保持結構本身。

錯誤 3:以為程式裡寫了急停就等於安全

這一點非常重要,請務必看完

程式裡的急停判斷只能當輔助。PLC 可能當機、掃描停止、輸出模組接點黏死——這些情況下程式寫得再漂亮都沒有用。

真正的急停必須用硬體安全迴路實現:安全繼電器(如 Pilz PNOZ、Siemens 3SK)或安全型 PLC,直接切斷輸出模組或接觸器的控制電源。程式中的急停訊號,只負責讓 HMI 顯示、記錄事件、讓邏輯復歸。

這不是保守,這是 IEC 61508 / ISO 13849 的基本要求,也是職安檢查的重點項目。

六、實務上還會加的兩段

; 運轉 / 停止指示燈
LD    M0
OUT   Y001        ; 綠燈:運轉中
LDI   M0
OUT   Y002        ; 紅燈:停止中

; 過載故障記憶(跳脫後不自動復歸)
LDI   X002        ; 過載跳脫(常閉接線,跳脫時 OFF)
OR    M10
ANI   X003        ; 故障復歸按鈕
OUT   M10         ; 故障記憶
LD    M10
OUT   Y003        ; 故障指示燈

故障記憶的用意:過載跳脫後,就算熱動電驛冷卻自動復歸,設備也不能自己重新啟動——必須有人到現場確認原因、按下復歸鈕。這同樣是安全設計的一環,而且是驗收時常被要求的項目。

小結

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

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

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

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

不想每次都從頭寫?

易歐特的 AI PLC 工具內建「馬達啟停自保持」標準控制塊,已包含過載互鎖、故障記憶等現場實務寫法。用中文描述需求即可產生,支援三菱、西門子、歐姆龍、台達、士林。

免費試用 AI PLC 工具 →

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

易歐特科技有限公司 · 工業自動化 PLC 程式設計與環控系統整合 · 委託開發請洽 需求提交