Learning Objectives
- 說出 PLC 是什麼,以及它為什麼取代了繼電器控制盤
- 比較 PLC、微控制器與個人電腦適合的場合
- 說明掃描週期的三個步驟,以及輸入映像與輸出映像的作用
- 判斷一個很短的輸入訊號會不會被 PLC 漏掉
工廠裡的「控制器」
走進一條汽車零件產線:輸送帶把工件送到定位,感測器偵測到工件,氣缸夾住、機械手臂加工、再送到下一站。 指揮這些動作的,多半不是一台個人電腦,而是一個裝在控制箱裡、方方正正的盒子:可程式邏輯控制器(Programmable Logic Controller,PLC)。
PLC 的工作很單純:讀進感測器與按鈕的狀態,依照程式決定要開哪些馬達、閥門與燈,一秒鐘重複幾十到幾百次,而且一跑就是好幾年。
PLC 從哪裡來
1960 年代的產線用一整面牆的繼電器做邏輯控制,每換一種車型,就要重新配線。1968 年,通用汽車(GM)的 Hydramatic 變速箱部門提出需求:想要一種電子設備取代繼電器控制盤,改控制邏輯時改程式就好,不必重新配線。 麻州的 Bedford Associates 提出的設計在 1969 年做出來,編號 084(他們的第 84 個專案),一般認為是第一台 PLC; 參與設計的 Dick Morley 常被稱為「PLC 之父」。這家公司後來改名為 Modicon。
為了讓原本看得懂繼電器電路圖的技術人員也能寫程式,PLC 最常用的語言畫得就像繼電器電路圖,這就是第 03 課的階梯圖。
PLC、微控制器、個人電腦,差在哪裡
| PLC | 微控制器(ESP32、Arduino) | 個人電腦 | |
|---|---|---|---|
| 工作環境 | 控制箱裡,耐震、耐溫、抗電氣雜訊 | 要自己做外殼與保護 | 辦公室環境 |
| 輸入輸出 | 24 V 工業訊號,接線端子直接接感測器、繼電器 | 3.3 V/5 V,要自己加隔離與驅動電路 | 要另外接介面卡 |
| 程式 | 階梯圖等 IEC 61131-3 語言,執行中可監看每個接點 | C/C++、MicroPython | 什麼都可以 |
| 時間行為 | 固定的掃描週期,可以預測 | 看程式怎麼寫 | 作業系統隨時可能插隊 |
| 維修 | 換同型號模組、載入程式就能復工 | 要懂電路與韌體 | 要懂作業系統 |
所以 PLC 不是「比較強的電腦」,而是為工廠的可靠性與好維修而設計。微控制器適合做產品與原型(ESP32 軌), 個人電腦適合做監控、記錄與分析(本軌後半會用 Python 透過 Modbus 讀寫 PLC)。
PLC 的組成
| 部分 | 做什麼 |
|---|---|
| 電源 | 把控制箱的電源轉成 PLC 內部用的電;很多 PLC 吃 24 V 直流 |
| CPU | 存放與執行程式、處理通訊;面板上有 RUN/STOP 指示燈 |
| 輸入模組 | 接按鈕、極限開關、感測器;每一點有一顆指示燈,亮=這個輸入是 1 |
| 輸出模組 | 接指示燈、電磁閥、接觸器(再由接觸器去開大功率的馬達) |
| 通訊 | 和觸控螢幕(HMI)、電腦、其他 PLC 交換資料(第 08 課以後) |
小型 PLC 把這些做成一體式的一個盒子;大型系統用模組式,把電源、CPU、各種模組插在機架或導軌上,需要多少點就加多少模組。
PLC 有兩種模式:RUN 時不斷執行程式;STOP 時不執行程式、輸出關閉,用來下載程式與檢修。
安全守則:PLC 控制的是真的會動的機器。檢修前要停機、切斷電源並上鎖掛牌(lockout/tagout), 急停按鈕要接在硬體安全迴路裡,不能只靠 PLC 程式。本課程只在模擬器上練習,不放任何電源接線步驟。
逐步看:用 Python 寫一個掃描迴圈
PLC 的作業系統其實就在跑一個永不結束的迴圈。這裡用 for 迴圈跑 4 輪。注意每一輪都是固定的三個步驟,而且第 7 行的「程式」只看 I0_0(輸入映像),不直接看按鈕。
為什麼要先抄一份「映像」
如果程式執行到一半,輸入突然變了,前面幾條 rung 看到舊值、後面幾條看到新值,結果就會互相矛盾。 PLC 在一輪掃描開始時把所有輸入一次抄好,整輪程式都看同一份資料,結果才一致、可以預測。
代價是反應時間:輸入在剛讀完之後才變化,要等到下一輪才讀到,再執行完程式才送到輸出。 所以從感測器動作到輸出改變,最長大約要兩輪掃描(再加上輸入、輸出模組本身的延遲)。
另一個代價:比掃描週期還短的訊號可能整個被漏掉。下面的範例就是這種情況。 真實的 PLC 遇到很快的訊號(例如編碼器的脈衝),會用專門的高速計數器或中斷輸入,不靠一般的掃描來讀。
PLC 還有一個看門狗(watchdog)計時器:如果某一輪掃描花太久(例如程式寫出無窮迴圈),PLC 會停止運轉並關閉輸出,避免機器失控。
逐步看:漏掉的脈衝
感測器在 13~17 毫秒與 31~45 毫秒各送出一個脈衝,PLC 每 10 毫秒讀一次。注意第一個脈衝只有 4 毫秒,剛好落在兩次讀取之間。
小測驗:PLC 的定位
1968 年 GM 想用電子設備取代繼電器控制盤,最主要的理由是什麼?
下面哪一個工作最適合交給 PLC?
PLC 在 STOP 模式時會怎樣?
小測驗:掃描週期
一輪掃描的順序是?
用 Python 模擬每 10 毫秒讀一次輸入,會印出什麼?
pulse = range(22, 27)
seen = [t for t in range(0, 50, 10) if t in pulse]
print(len(seen))
為什麼 PLC 要在每輪開始時把輸入「一次抄好」,而不是程式執行到哪裡就讀到哪裡?
重點整理
- PLC 是為工業現場設計的控制器:讀輸入、照程式決定輸出,可靠、好維修,改邏輯只要改程式。
- 第一台 PLC 是 1968 年 GM 提出需求、Bedford Associates 做出的 084。
- PLC、微控制器、個人電腦各有適合的場合:PLC 管機器、微控制器做產品原型、電腦做監控與分析。
- PLC 由電源、CPU、輸入模組、輸出模組與通訊組成;有一體式與模組式。RUN 執行程式,STOP 停止並關閉輸出。
- 掃描週期:讀輸入 → 由上而下執行程式 → 寫輸出,不斷重複。整輪程式看同一份輸入映像。
- 反應時間最長約兩輪掃描;比掃描週期短的訊號可能被漏掉,要用高速計數器或中斷輸入。
- 檢修機器前要停機、斷電、上鎖掛牌;急停要接在硬體安全迴路。
下一課看 PLC 的輸入輸出怎麼接:24 V 訊號、NPN 與 PNP 感測器、繼電器與電晶體輸出。