PLC 完整學習教材
可程式邏輯控制器:從初級、中級到高級



適用對象: 自動化初學者、電控技師、系統整合工程師
涵蓋範圍: 硬體接線、梯形圖、IEC 61131-3、狀態機、PID、
工業通訊、運動控制、功能安全、工業 4.0
編排方式: 三篇十七章,每章含學習目標、實務筆記與練習題
版本日期: 2026 年 7 月 5 日



第一篇:初級 第二篇:中級 第三篇:高級
入門與基本功 語言、設計與控制 通訊、安全與整合

導讀:如何使用本教材

本教材依能力層級分為三篇:

  • 第一篇(初級,第 1–5 章):不需任何 PLC 背景。目標是看懂 硬體型錄與接線圖、理解掃描週期,並能獨立寫出含自保持、計時器、計數器的梯形圖程式。

  • 第二篇(中級,第 6–11 章):以 IEC 61131-3 為主軸, 學會結構化文字(ST)、資料型別、功能塊模組化與狀態機設計,並掌握類比訊號、PID 調節 與 HMI/警報設計。這是從「會寫」到「寫得好」的分水嶺。

  • 第三篇(高級,第 12–17 章):面向系統整合:工業通訊協定、 伺服運動控制、機械安全與功能安全、軟體工程實務(版本控制、模擬調機、測試), 以及工業 4.0/IIoT 資料整合。

建議的學習節奏:初級篇搭配一台入門 PLC(或廠商免費模擬器)逐章實作,約 2–4 週; 中級篇以一個完整小專案(例如自動門或小型輸送分揀)貫穿,約 1–2 個月; 高級篇依工作領域挑選章節深入。每章結尾的練習題請務必動手完成——PLC 是實作技能, 只讀不寫是學不會的。

本書範例以 IEC 61131-3 標準語法為主(各家平台語法略有出入,觀念完全相通), 梯形圖符號採國際慣用的 NO/NC 接點與線圈表示法。

認識 PLC

理解 PLC 的定義、發展背景與適用場景;能區分 PLC、繼電器控制、DCS 與微控制器; 認識主流品牌產品線,看懂基本規格。

什麼是 PLC

可程式邏輯控制器(Programmable Logic Controller, PLC)是一種專為工業環境設計的數位運算 電子裝置:它週期性地讀取輸入(按鈕、感測器、極限開關…),依使用者撰寫的程式進行邏輯運算, 再驅動輸出(電磁閥、接觸器、指示燈、變頻器…)。與一般電腦相比,PLC 的核心特質是:

  • 確定性(Deterministic):掃描週期固定且可預測,毫秒級反應。

  • 強固性:耐震動、耐電氣雜訊、寬溫域運作,設計壽命常達 10 年以上。

  • I/O 導向:硬體與指令集都圍繞著大量離散/類比 I/O 點設計。

  • 可維護性:現場電機人員可透過梯形圖直接監看、除錯與修改。

發展簡史

1968 年,美國通用汽車(GM)Hydra-Matic 變速箱廠為了擺脫每次改車型就要重新配線數千顆 繼電器的困境,公開徵求「可用程式取代配線」的控制器。1969 年 Modicon 084(Dick Morley 團隊) 成為第一台商用 PLC。往後五十餘年的演進大致為:

年代 里程碑
1970s 取代繼電器邏輯;梯形圖成為主流語言
1980s 類比控制、PID 進入 PLC;各廠專有通訊網路出現
1990s IEC 61131-3 標準發布(1993),統一五種程式語言
2000s 工業乙太網興起(EtherNet/IP、PROFINET);PLC 與運動控制整合為 PAC
2010s 安全 PLC 普及、OPC UA 標準化、軟體工程方法導入
2020s IIoT/邊緣運算、軟體定義 PLC(Soft PLC)、雲端整合與虛擬調機

PLC 與其他控制方案的比較

繼電器控制 PLC DCS 微控制器/工控機
邏輯變更 重新配線 改程式即可 改組態 改韌體、需開發能力
規模 小型、固定 數十至數萬點 大型連續製程 依設計而定
擅長領域 極簡單互鎖 離散/批次控制 石化、電廠等連續程序 量產產品、特殊演算法
即時性 硬體級 ms 級、確定性 100 ms 級 依設計
維護人員 電匠 電控技師 儀控工程師 軟韌體工程師
單點成本 低(點少時) 開發成本高、量產便宜

實務選型口訣:點數少且永不改——繼電器;離散設備與產線——PLC; 大型連續製程、需高階程序管理——DCS;量產設備內嵌控制——微控制器。 現代界線逐漸模糊:高階 PLC(PAC)已能承擔小型 DCS 的角色。

主流品牌與產品線概覽

品牌 代表系列 常見定位
Siemens LOGO! / S7-1200 / S7-1500 歐系主流;TIA Portal 整合開發環境
Rockwell (AB) Micro800 / CompactLogix / ControlLogix 美系主流;Studio 5000、CCW
Mitsubishi FX5U / Q / iQ-R 日系主流;GX Works,亞洲市占高
Omron CP2E / NX / NJ 日系;Sysmac Studio,機械控制強
Keyence KV-8000 系列 上手快、感測器整合佳
Delta / FATEK / LS DVP、AS / FBs / XGB 高性價比,中小型機台常見
Beckhoff CX / TwinCAT PC-based、EtherCAT 主導者

閱讀規格表時,先看五件事:I/O 點數與擴充能力程式容量與掃描速度通訊介面(乙太網路口數、串列埠、支援協定)、特殊功能 (高速計數、脈衝輸出、PID 迴路數)、開發軟體與授權費用

典型應用場景

輸送帶與分揀、包裝機、充填機、立體倉儲、電鍍與表面處理線、給排水與泵浦站、 HVAC 空調箱、隧道與交通號誌、停車場設備、汙水處理廠、食品 CIP 清洗流程等。 凡是「感測器進、致動器出、邏輯與順序控制為主」的場合,就是 PLC 的主場。

  1. 說明 PLC 與繼電器控制在「變更邏輯」上的本質差異,並舉一個實例。

  2. 你的工廠要新建一條 800 點 I/O 的包裝線,以及一座 24 小時連續運轉的化工反應程序, 各應選 PLC 還是 DCS?理由為何?

  3. 找一份任意品牌入門 PLC 的型錄,列出它的 I/O 點數、程式容量、通訊介面與支援語言。

硬體架構與電氣接線

認識 PLC 系統的組成模組;理解數位輸入的 Sink/Source(NPN/PNP)差異並能正確接線; 比較三種數位輸出型式;掌握基本的雜訊對策。

系統組成

小型機(Brick/一體式)把上述功能整合在單一機身並提供少量擴充; 中大型機(模組式/機架式)則依需求插槽組合,可熱插拔、可遠端分散 I/O。

數位輸入:Sink 與 Source

24 VDC 數位輸入迴路必有「電流方向」問題,這是初學者最常接錯的地方:

Sink 輸入(漏型) Source 輸入(源型)
PLC 輸入端子 電流流入 PLC 電流流出 PLC
COM 端接法 COM 接 +24 V COM 接 0 V
搭配感測器 NPN(輸出拉到 0 V) PNP(輸出拉到 +24 V)
市場慣例 日系設備常見 歐美設備常見

NPN 感測器接到 Source 型輸入(或反之)不會燒毀,但訊號永遠不動作。 選購三線式感測器(棕 = +24 V、藍 = 0 V、黑 = 訊號)前,務必先確認 PLC 輸入型式。 許多 PLC 的 COM 端子可自由接 +24 V 或 0 V,兩種皆可支援,但同一組 COM 之下不能混用

數位輸出型式比較

繼電器輸出 電晶體輸出 TRIAC 輸出
負載電源 AC/DC 皆可 DC(分 Sink/Source) AC 專用
切換速度 慢(~10 ms) 快(μs 級)
壽命 機械壽命有限 半導體、近乎無限 半導體
負載能力 約 2 A/點 約 0.5 A/點 約 0.5–1 A/點
適用 通用、小型接觸器 高速輸出、電磁閥、脈衝 AC 燈載、小型 AC 閥

需要輸出脈衝(步進/伺服定位)務必選電晶體輸出機種; 驅動大型接觸器或馬達,一律經過中繼繼電器或接觸器,不要讓 PLC 輸出直接承受大電流與突波。 感性負載(電磁閥、繼電器線圈)並聯突波吸收元件:DC 用飛輪二極體、AC 用 RC 突波吸收器。

類比 I/O 概述

工業類比訊號以 4–20 mA 電流迴路為首選(抗雜訊、可偵測斷線:低於 4 mA 即異常), 其次為 0–10 V。解析度以位元數表示:12 bit = 4096 階、16 bit = 65536 階。 詳細的工程單位換算與濾波在第 10 章說明。

配線與雜訊對策

  • 動力與訊號分離:動力線(變頻器輸出尤甚)與訊號線分槽、垂直交叉。

  • 類比與通訊線使用隔離雙絞遮蔽線,遮蔽層單端接地(通常控制盤端)。

  • 接地:控制盤設專用接地排,類比地與動力地分開匯流後單點接地。

  • 電源品質:PLC 電源與動力電源分開,必要時加隔離變壓器或 UPS。

  • 緊急停止迴路必須是硬體迴路(安全繼電器直接切斷動力), 不可只靠 PLC 程式(詳見第 14 章)。

  1. 手邊有一顆 PNP 三線式光電感測器,PLC 輸入 COM 應接 +24 V 還是 0 V?畫出接線圖。

  2. 一支電磁閥(DC 24 V, 0.3 A)與一台 5.5 kW 馬達的接觸器,各應如何由 PLC 輸出驅動?

  3. 為什麼 4–20 mA 比 0–10 V 更適合長距離傳送?「活零點」(live zero)有什麼好處?

PLC 運作原理:掃描週期

理解輸入映像區、程式執行、輸出映像區的循環掃描模型;能解釋掃描時間對反應速度的影響; 認識看門狗、輸入濾波與保持型記憶體。

循環掃描模型

PLC 不是「事件驅動」,而是循環掃描(cyclic scan)

三個關鍵推論:

  1. 同一週期內輸入是「凍結」的:程式中無論讀幾次 INPUT1, 值都相同(取自週期開頭的快照)。

  2. 輸出在週期結尾才一次更新:程式中對同一輸出多次寫入, 只有最後一次生效——這就是「雙線圈問題」的根源(見 4.7 節)。

  3. rung 順序影響結果:前面 rung 改寫的內部變數,後面 rung 立刻看得到; 反之則要等下一個週期。

掃描時間與反應時間

最壞情況的輸入到輸出反應時間 \(\approx\) 輸入濾波時間 \(+\) 2 個掃描週期 \(+\) 輸出元件動作時間。 若掃描週期 5 ms、輸入濾波 10 ms,則保證反應約 20 ms。 高速場合(例如編碼器計數、瞬間通過的物件偵測)應使用高速計數器(HSC)中斷程式,它們不受掃描週期限制。

看門狗計時器

CPU 以看門狗(watchdog)監控每次掃描是否在限定時間內完成(如 200 ms)。 程式陷入無窮迴圈(如 WHILE 條件永真)會觸發看門狗,CPU 進入故障停機、輸出全部復歸 ——這是保護機制,也是 WHILEFOR 在 PLC 中要小心使用的原因。

記憶體區與資料保持

區域 典型代號 說明
輸入映像 I / X / %I 每週期自實體輸入更新,程式中唯讀
輸出映像 Q / Y / %Q 程式寫入,週期結尾送實體輸出
內部繼電器 M / B 中間邏輯旗標
資料暫存器 D / N / %M 數值資料
保持型區域 Retentive / Latched 斷電後保留,用於配方、累計值、狀態
系統旗標 S / SM 首次掃描、時鐘脈衝、故障旗標等

「上電後狀態機不動」的常見原因之一:狀態變數放在非保持區,上電歸零後卻沒有任何 初始化邏輯。務必利用首次掃描旗標(first scan)在上電第一個週期做初始化—— 決定哪些變數要保持、哪些要歸零,是設計階段就該想清楚的事。

  1. 掃描週期 8 ms、輸入濾波 3 ms,一顆按鈕被按下 5 ms 後放開,PLC 保證讀得到嗎?

  2. 解釋為什麼「程式中間讀到的實體輸入」不會隨現場即時變化。

  3. 什麼情況該用中斷或高速計數器,而不是一般掃描邏輯?各舉一例。

梯形圖基礎

看懂並繪製 NO/NC 接點與線圈;用串並聯實現 AND/OR 邏輯; 熟練自保持(seal-in)與互鎖電路;理解執行順序與雙線圈問題。

從繼電器電路到梯形圖

梯形圖(Ladder Diagram, LD)承襲自繼電器控制圖:左右兩條「電源軌」, 中間橫向的「梯級(rung)」由接點(條件)與線圈(結果)組成。 想像「電力」從左軌經過接點流向右軌:路徑導通,線圈就激磁。

基本元件

NC 接點的意義是「變數為 0 時導通」,與實體開關的常開/常閉是兩回事。 例如停止按鈕實體上採常閉接線(斷線即停機,failsafe), 此時 PLC 讀到的訊號平時為 1,程式中反而要用 NO 接點來表示「未按下」。 把「實體接點型式」與「程式接點型式」搞混,是新手第一大坑。

串聯與並聯:AND 與 OR

接點串聯即 AND(全部成立才導通);並聯即 OR(任一成立即導通)。 布林代數的 \(Y = (A \land \lnot B) \lor C\) 寫成梯形圖:A 與 B 的 NC 串聯成一條路, C 並聯在旁邊。

自保持電路(Seal-in)

最重要的基本電路:按一下啟動鈕馬達持續運轉,按停止鈕才停。

按下 Start:rung 導通、Motor = ON;下一週期起,Motor 自身的 NO 接點取代 Start 維持導通(「自保持」);按下 Stop(訊號變 0,NC 斷開)迴路切斷,Motor 復歸。 注意 Stop 串接在自保持迴路之後,確保任何時候都能停機——「停止優先」。

互鎖電路(正反轉)

馬達正轉與反轉接觸器絕不可同時吸合(相間短路)。程式互鎖:正轉 rung 串入 「反轉線圈」的 NC 接點,反轉 rung 串入「正轉線圈」的 NC 接點; 兩者互相封鎖。實務上還必須加硬體互鎖(兩顆接觸器的機械互鎖與輔助接點互鎖), 程式互鎖只是第一道防線。

執行順序

梯形圖由上而下、每個 rung 由左而右求值。設計時把「事件偵測」放前面、 「狀態決策」在中間、「輸出驅動」放最後,形成 輸入處理 \(\to\) 邏輯 \(\to\) 輸出的三段式結構,可讀性與可預測性最好。

雙線圈問題

同一輸出線圈在兩個 rung 出現時,只有最後一個 rung 的結果會送到實體輸出 (前面的結果被覆寫)。正確做法:把多個條件以並聯合併到單一 rung, 或改用 SET/RESET 指令並嚴格管理優先權。

  1. 畫出 \(Y = (A \lor B) \land \lnot C\) 的梯形圖。

  2. 停止按鈕為什麼實體要用常閉接線?若採常開接線,斷線時會發生什麼事?

  3. 設計「兩地啟停」:現場與控制室各有一組啟動/停止按鈕,任一處皆可啟停同一台泵。

  4. 解釋雙線圈問題為何與掃描模型(第 3 章)直接相關。

基本指令:計時、計數與資料處理

熟練 TON/TOF/TP 三種計時器與 CTU/CTD 計數器;掌握 SET/RESET 與邊緣偵測; 會用比較、運算與傳送指令;完成一個綜合小專案。

計時器

型式 名稱 行為
TON 通電延遲 IN 為 ON 持續達 PT 後 Q 才 ON;IN 斷開立即復歸
TOF 斷電延遲 IN 為 ON 時 Q 立即 ON;IN 斷開後 Q 再維持 PT 才 OFF
TP 脈衝 IN 上升緣觸發,Q 固定輸出 PT 寬度的脈衝
RTO 保持型 同 TON 但 IN 斷開時累計值保留,需另行復歸(部分平台)

TON 時序圖:

典型用途:TON——馬達啟動後延遲確認壓力建立、防抖動;TOF——停機後風扇續轉散熱; TP——固定寬度的沖洗/噴膠脈衝。

計數器

CTU(上數)在 CU 上升緣 \(+1\),計數值 \(\geq\) PV 時 Q 為 ON;R 復歸。 CTD(下數)自 PV 往下數到 0。CTUD 雙向。 計數器吃的是邊緣:訊號保持 ON 不會連續累加。 產線常用「入口感測器 CU、出口感測器 CD」統計區間內工件數—— 這正是第 9 章狀態機中「車輛計數」的原型。

SET/RESET 與邊緣偵測

SET(S)使線圈 ON 後保持,RESET(R)復歸;等效於 IEC 的 SR/RS 功能塊。 優先權要想清楚:安全相關一律「復歸優先」(RS)

邊緣偵測(R_TRIG/F_TRIG、OSR/ONS)把電平轉為單一掃描週期的脈衝, 用於「按一下」語意、計數觸發與狀態轉移。 優先使用平台內建指令,不要手寫「本次值與上次值比較」的三 rung 寫法—— 上一份審查報告(Rung 1–6)示範了手寫版本的風險:中間變數命名不一致會讓邊緣偵測整組失效。

比較、運算與傳送

比較(EQU/NEQ/GEQ/LEQ…)把數值條件變成 rung 導通條件; 運算(ADD/SUB/MUL/DIV)與傳送(MOV)處理資料。 兩個實務要點:整數除法會截斷(需要小數就先轉 REAL); 運算指令若每個週期都執行,累加類邏輯必須搭配邊緣觸發,否則一秒內就加了數百次。

綜合範例:停車場車位管理

需求:入口與出口各一支車輛感測器;顯示剩餘車位;滿位時亮「滿」燈並禁止入口柵欄開啟。

VAR
  EntrySensor, ExitSensor : BOOL;   // 車輛通過感測器
  trigIn, trigOut : R_TRIG;
  Capacity : INT := 50;
  Occupied : INT;                    // 建議放保持區
  FullLamp, GateEnable : BOOL;
END_VAR

trigIn(CLK := EntrySensor);
trigOut(CLK := ExitSensor);

IF trigIn.Q AND (Occupied < Capacity) THEN
    Occupied := Occupied + 1;
END_IF;
IF trigOut.Q AND (Occupied > 0) THEN
    Occupied := Occupied - 1;      // 下限保護,避免負數
END_IF;

FullLamp   := (Occupied >= Capacity);
GateEnable := NOT FullLamp;

麻雀雖小五臟俱全:邊緣觸發、上下限保護、輸出為狀態的純函數。 這三個習慣請從第一天就養成。

  1. 用 TON 設計「按鈕長按 3 秒才啟動」的防誤觸邏輯。

  2. 紅綠燈:綠 30 s \(\to\) 黃 3 s \(\to\) 紅 30 s 循環。先用計時器串接實作, 並思考:如果之後要加「行人按鈕縮短紅燈」,這種寫法好改嗎?(第 9 章給出更好的答案)

  3. 修改停車場範例:加入「入口柵欄開啟後 10 秒自動關閉,若感測器仍偵測到車則延長」。

  4. 為什麼累加運算要用邊緣觸發?寫出不加邊緣觸發時,掃描週期 10 ms 下一秒鐘的誤差。