工業通訊
理解工廠通訊層級;掌握 Modbus RTU/TCP 的定址與功能碼; 比較主流工業乙太網協定;認識 OPC UA 與 MQTT 的角色。
通訊層級(自動化金字塔)
越往下即時性要求越高、資料量越小;越往上相反。協定選擇即是在對的層級用對的工具。
串列通訊與 Modbus RTU
RS-485 差動傳輸、多點匯流排(1 主多從,常見 32 節點)、距離可達 1200 m。 Modbus RTU 是其上最普及的協定,記憶體模型四區:
| 區域 | 傳統位址 | 存取 | 常用功能碼 |
|---|---|---|---|
| Coils(線圈) | 0xxxx | 讀寫 bit | 01 讀、05/15 寫 |
| Discrete Inputs | 1xxxx | 唯讀 bit | 02 讀 |
| Input Registers | 3xxxx | 唯讀 16-bit | 04 讀 |
| Holding Registers | 4xxxx | 讀寫 16-bit | 03 讀、06/16 寫 |
Modbus 整合三大地雷:(1) 位址偏移一位——文件寫 40001,封包裡是 0; (2) 32-bit 值的字序(word swap)——兩個暫存器組 REAL 時高低字順序各家不同; (3) 輪詢節奏——RS-485 上從站多、輪詢快,逾時設定不當會拖垮整條匯流排。 整合前先拿 Modbus 測試工具(如 Modbus Poll)驗證對方定址,再寫 PLC 程式。
工業乙太網
| Modbus TCP | EtherNet/IP | PROFINET | EtherCAT | |
|---|---|---|---|---|
| 主要陣營 | 開放/施耐德 | Rockwell/ODVA | Siemens/PI | Beckhoff/ETG |
| 即時性 | 一般(TCP) | 中(CIP, UDP I/O) | 中–高(RT/IRT) | 極高(μs 級) |
| 拓撲 | 標準乙太網 | 標準乙太網 | 標準/專用交換器 | 線形串接(從站硬體) |
| 典型應用 | 儀表、電表、簡單整合 | 美系產線 | 歐系產線 | 高速運動控制 |
| 組態難度 | 低 | 中 | 中 | 中 |
選擇通常跟著 PLC 品牌走(AB \(\to\) EtherNet/IP、Siemens \(\to\) PROFINET、 運動控制密集 \(\to\) EtherCAT),跨陣營整合時 Modbus TCP 常是最務實的公分母。
OPC UA 與 MQTT
OPC UA:跨平台的工業資料標準——自帶資訊模型(物件、階層、單位)、 安全機制(憑證、加密)與服務(讀寫、訂閱、歷史)。 是控制層與 IT 層之間的標準橋樑,新一代 PLC 多半內建 UA Server。
MQTT:輕量發布/訂閱協定,經 broker 轉發,適合大量分散節點上雲。 搭配 Sparkplug B 規範可補足工業語意。粗略分工:廠內設備互通用 OPC UA, 上雲遙測用 MQTT。
變頻器手冊寫「頻率命令在 40003」,PLC 的 Modbus 讀取位址該填多少?兩種可能都寫出來。
一個 REAL 佔幾個 Modbus holding register?讀出來數值錯亂時你會檢查什麼?
你的產線有 AB 與 Siemens 兩套 PLC 要交換 20 個 tag,提出兩種方案並比較。
運動控制
認識伺服系統組成與兩種指令介面;理解原點復歸、電子齒輪與電子凸輪; 會使用 PLCopen 標準功能塊的基本流程。
伺服系統組成
控制器(PLC/運動控制器)\(\to\) 驅動器(Drive/Amplifier)\(\to\) 伺服馬達(含編碼器) \(\to\) 機構(滾珠螺桿、皮帶、減速機)。三層迴路由內而外:電流環、速度環、位置環, 前兩者在驅動器內,位置命令來自控制器。
兩種指令介面
| 脈衝列(Pulse Train) | 通訊型(EtherCAT/CC-Link IE 等) | |
|---|---|---|
| 接線 | 脈衝+方向,點對點 | 網路線串接多軸 |
| 軸數擴充 | 受限於 PLC 脈衝輸出點 | 數十軸以上 |
| 回授資訊 | 少(需另接) | 位置/轉矩/警報全都有 |
| 精度與同步 | 一般 | 高(分散時鐘同步) |
| 成本 | 低 | 中高 |
| 適用 | 1–4 軸簡單定位 | 多軸插補、凸輪、飛剪 |
基本概念
原點復歸(Homing):增量編碼器上電不知道位置,須以原點開關+Z 相建立座標; 絕對值編碼器免復歸,斷電記憶位置。
電子齒輪比:把「指令單位(mm、度)」換算為編碼器脈衝的比例設定; 設錯會出現「走 100 mm 實際走 99.7 mm」這類系統性誤差。
電子凸輪(E-CAM):從軸位置依凸輪表跟隨主軸位置,取代機械凸輪; 飛剪、旋切、追膜的核心技術。
加減速與 Jerk:梯形/S 曲線速度規劃,S 曲線減少機構衝擊。
PLCopen 運動控制功能塊
IEC 61131 生態的標準運動介面,各廠名稱幾乎一致:
(* 典型單軸定位流程 *)
MC_Power(Axis := Axis1, Enable := TRUE); // 軸致能
MC_Home(Axis := Axis1, Execute := trigHome.Q); // 原點復歸
MC_MoveAbsolute(Axis := Axis1,
Execute := trigGo.Q,
Position := 250.0, // mm
Velocity := 100.0, // mm/s
Acceleration := 500.0);
MC_Stop(Axis := Axis1, Execute := cmd_Stop);
MC_Reset(Axis := Axis1, Execute := trigReset.Q); // 清除軸故障
軸本身就是一個狀態機(Disabled、StandStill、Homing、Discrete Motion、ErrorStop…), 功能塊的 Done/Busy/Error 輸出必須逐一處理—— 把第 9 章的狀態機方法套到軸控流程,是多軸專案不亂掉的關鍵。
Execute 類輸入吃上升緣:條件保持 TRUE 不會重複執行, 而在 Busy 期間再次觸發,各平台行為不一(緩衝、覆蓋或報錯)。 另外:機械極限開關要接進驅動器的硬體極限輸入,不能只靠軟體極限。
滾珠螺桿導程 10 mm、馬達編碼器 23 bit/轉、減速比 5:1,走 1 mm 需要多少脈衝當量?
為「取放機構」(原點 \(\to\) 取料位 \(\to\) 放料位循環)設計軸控狀態機。
什麼場合值得從脈衝控制升級到 EtherCAT?列出三個判斷指標。
機械安全與功能安全
理解「一般控制」與「安全功能」必須分離;認識 ISO 13849 的 PL 與 IEC 62061 的 SIL; 掌握急停、安全門、光柵等典型安全迴路的設計原則。
核心觀念:安全不能只靠程式
一般 PLC 的單一 CPU、單一輸出電晶體都可能以「危險側」失效 (輸出短路導通、程式凍結)。因此安全功能必須由安全等級的元件鏈 (安全感測器 \(\to\) 安全繼電器或安全 PLC \(\to\) 強制導向接觸器)實現, 一般 PLC 只「知悉」安全狀態、做停機善後與顯示,不參與安全功能本身。
法規與標準地圖
| 標準 | 角色 |
|---|---|
| ISO 12100 | 風險評估與風險減低的總綱(本質安全 \(\to\) 防護 \(\to\) 使用資訊) |
| ISO 13849-1 | 控制系統安全相關部件;以 PL a–e 分級;類別 B, 1–4 結構 |
| IEC 62061 / IEC 61508 | 功能安全;以 SIL 1–3 分級 |
| IEC 60204-1 | 機械電氣設備安全(急停類別 0/1/2、配電、保護連結) |
PL(Performance Level)由風險圖(傷害嚴重度 S、暴露頻率 F、可避免性 P)決定需求等級, 再以結構類別、MTTF\(_d\)、診斷覆蓋率 DC 與共因失效 CCF 驗證達成等級。 實務上 PL d/Cat. 3(雙通道、單一故障不喪失安全功能)是機械業最常見的設計點。
典型安全迴路
急停(E-Stop):常閉雙通道接點 \(\to\) 安全繼電器 \(\to\) 切斷動力接觸器; 復歸必須手動且在確認危險排除後,不可自動復歸。
安全門:門開時停止危險運動;高慣性設備配安全鎖(停止完成才允許開門)。
安全光柵:進入偵測;與停止性能距離計算(安全距離公式)綁定。
雙手按鈕:沖壓類設備,兩鈕需在 0.5 s 內同時按下且全程保持。
強制導向接觸器回授(EDM):安全繼電器檢查接觸器確實釋放才允許再啟動。
安全 PLC
安全 PLC 以雙 CPU 互檢、測試脈衝輸出、SIL/PL 認證韌體實現可程式的安全邏輯, 適合安全 I/O 多、邏輯複雜(分區停機、模式相依的安全功能)的設備。 安全程式與一般程式分開編譯、簽章與權限管理;修改安全程式屬於變更管理事件, 需重新驗證。
常見違規:把光柵訊號接進一般 PLC,由梯形圖去停馬達——這不構成安全功能, 稽核與事故責任上都不成立。急停按鈕串進一般 DI「順便看看」可以, 但切斷動力的路徑必須是安全鏈。
說明急停類別 0 與類別 1 的差異,各舉一種適用設備。
為一台有伺服軸的組裝機設計急停與安全門架構(畫出安全鏈方塊圖)。
為什麼安全繼電器要檢查接觸器的強制導向輔助接點(EDM)?
軟體工程實務:版本、模擬與測試
把一般軟體工程的紀律帶進 PLC 專案:版本控制、程式規範、模擬與虛擬調機、 以及可測試的程式結構。
版本控制與變更管理
專案檔進 Git(多數現代 IDE 支援文字化匯出或原生 Git 整合), 至少做到:每次出機/改機一個 tag、變更說明寫「為什麼」。
線上修改(online edit)後必須回收程式:現場搶修完, 把 CPU 內的最新版本上傳回版本庫,否則下次下載會把熱修覆蓋掉—— 這是業界最常見的「程式遺失」事故。
建立「黃金備份」:CPU 程式+硬體組態+HMI 專案+驅動器參數+配方, 缺一不可,並定期演練還原。
程式規範
團隊層級的規範文件應涵蓋:命名規則(第 7 章)、分層架構(第 8 章)、 狀態機樣板(第 9 章)、警報準則(第 11 章)、註解要求 (每個 POU 開頭:用途、作者、修改歷史;每段非顯而易見邏輯:意圖而非行為)。
模擬與虛擬調機
| 層級 | 工具 | 能驗證什麼 |
|---|---|---|
| 軟體模擬 | 廠商模擬器(PLCSIM、Sysmac 模擬等) | 邏輯正確性、狀態機轉移 |
| I/O 模擬 | 模擬程式取代 I/O 映射層 | 含時序的流程(感測器延遲、逾時) |
| 虛擬調機 | 3D 機構模型+物理引擎 | 干涉、節拍、多軸協調 |
第 7–8 章的 I/O 映射層在此展現價值:把映射層換成「行為模型」 (下達開閥命令 \(\to\) 2 秒後回授到位),整個主程式可以在辦公室先跑過所有流程與故障情境, 現場調機時間常可縮短一半以上。
可測試的程式與單元測試思維
FB 介面乾淨(輸入/輸出明確、不偷用全域變數)就可以被測試: 寫一個測試程式,餵入序列化的輸入劇本,檢查輸出與狀態。 至少為共用庫(換算函數、通用設備 FB)建立測試案例, 升級韌體或重構後重跑一次,防止「改 A 壞 B」。
審查他人(或自己)PLC 程式的簡明清單: 狀態變數是否單一寫入點?每個等待狀態有無逾時出口?上電初始化是否明確? 輸出是否集中且為狀態的函數?計時器/計數器命名是否語義化? 邊緣與電平使用是否正確?——這六問可以抓出大部分結構性問題。
為第 8 章
FB_Motor寫一份測試劇本(表格:時間、輸入、預期輸出)。設計「輸送帶+光電」的 I/O 行為模型,用於離線驗證第 9 章的狀態機。
你的工廠發生過「下載舊版覆蓋現場熱修」嗎?寫出一套防止它的流程。
試車、除錯與維護
建立系統化的試車流程;安全地使用線上監視與強制;掌握常見故障的排除路徑。
試車流程
冷測(斷動力):配線點檢、絕緣/迴路量測、I/O 對點 (逐點觸發輸入看 PLC、逐點強制輸出看現場——做記錄、簽名)。
單體測試:手動模式逐台設備動作,確認方向、極限、回授。
空車測試(dry run):自動模式無料運轉,驗證流程、互鎖與節拍。
帶料測試(wet run):漸進負載,驗證真實時序與例外處理 (堵料、缺料、急停後復機)。
驗收(SAT/FAT):依規格逐項驗證並留存紀錄與最終版本備份。
線上監視與強制(Force)
線上監視 rung 導通狀態與變數值是 PLC 最強的除錯武器;「交叉參照(cross reference)」 可列出變數所有讀寫位置——查「這個輸出為什麼會 ON」永遠從交叉參照開始。
強制(Force)會繞過所有程式邏輯直接鎖定 I/O,等同拆掉一道防線: 強制前確認現場無人、掛牌告知;一次只強制一點;用畢立即解除並檢查「強制表已空」。 帶著殘留強制把設備交還產線,是重大事故的經典開場。
常見故障排除路徑
| 症狀 | 排查順序 |
|---|---|
| 輸出不動作 | 交叉參照查邏輯 \(\to\) 輸出映像值 \(\to\) 模組指示燈 \(\to\) 端子電壓 \(\to\) 負載 |
| 輸入讀不到 | 感測器指示燈 \(\to\) 端子電壓 \(\to\) COM 極性(Sink/Source)\(\to\) 濾波時間 |
| CPU 故障燈 | 讀診斷緩衝區(永遠先看診斷,不要瞎猜):電池、模組、程式錯誤 |
| 通訊中斷 | 實體層(線材、終端電阻、指示燈)\(\to\) 位址/參數 \(\to\) 逾時與輪詢負載 |
| 偶發誤動作 | 懷疑雜訊:檢查接地、遮蔽、動力線距離;檢查邊緣/電平誤用與掃描相依邏輯 |
預防維護
備品清單(CPU、電源、關鍵模組)、電池更換週期、備份排程、 盤內清潔與端子緊固年檢、韌體版本清冊。 把「診斷資訊上 HMI」做在專案裡:模組健康、通訊狀態、掃描時間、電池電壓—— 讓維護人員不用接電腦就能判斷八成的問題。
制定一份 I/O 對點表格式(欄位自訂),以 10 點 DI/DO 為例填寫。
一顆輸出強制 ON 之後被遺忘,寫出可能的事故鏈與三道防止措施。
為你熟悉的一台設備列出「診斷上 HMI」的十個項目。
工業 4.0 與 IIoT 整合
理解 PLC 在智慧工廠資料架構中的位置;掌握資料採集的設計要點; 認識邊緣運算與 PLC 技術的發展方向。
資料整合架構
傳統 ISA-95 金字塔逐層上報的架構,正被「控制層維持金字塔、 資料層直上平台」的混合架構取代:PLC 依然負責即時控制, 但透過 OPC UA/MQTT 把資料直接送往歷史資料庫(Historian)、MES 與雲端分析平台, 邊緣閘道器(Edge Gateway)負責協定轉換、緩存與前處理。
資料採集設計要點
在 PLC 端就把資料整理好:帶時戳、帶品質旗標、帶批次/工單關聯, 而不是丟一堆裸暫存器讓上層猜。
事件比輪詢有價值:狀態轉移、警報、批次開始/結束打包成事件上報; 高頻類比才用固定週期採樣。
通訊負載隔離:資料採集使用獨立網口或獨立任務, 不允許上層輪詢拖慢控制掃描。
斷線緩存:邊緣端須能在網路中斷時暫存資料,恢復後補傳(store and forward)。
OEE:最常見的第一個應用
設備總合效率 \(OEE = 稼動率 \times 性能率 \times 良率\)。 PLC 要提供的原始資料:運轉/停機狀態與停機原因碼、理論節拍與實際產量、良品/不良品計數。 停機原因碼最有價值也最難做好——在狀態機(第 9 章)的 FAULT 與等待狀態中 順手記錄原因碼,遠勝事後人工填報。
資安基本盤
控制網路與 IT 網路分區(DMZ/防火牆)、關閉不用的服務與埠、 變更預設密碼、遠端連線走 VPN 且留存紀錄、韌體弱點追蹤(訂閱廠商資安公告)。 IEC 62443 是工控資安的參考框架;最低限度:絕不把 PLC 直接暴露在網際網路上。
PLC 的未來
軟體定義 PLC(虛擬化、容器化執行環境)、開放自動化(IEC 61499、廠商中立執行時)、 內建 AI 推論的控制器、以及「IT 工具鏈(Git、CI/CD、模擬)成為標配」—— 本書中級篇與高級篇的工程方法,正是迎接這些趨勢的基本功。
為一台包裝機設計 OEE 資料介面:列出 tag 清單(名稱、型別、更新時機)。
說明為什麼「PLC 裸暴露於網際網路」不可接受,列出三種真實風險。
規劃你工廠的第一個 IIoT 專案:目標、資料流、所需元件與分工。
學習路線圖與資源
建議學習路線
| 階段 | 里程碑 | 建議實作專案 |
|---|---|---|
| 初級(1–2 月) | 獨立完成接線+基本梯形圖 | 三段式輸送帶啟停、紅綠燈、停車場計數 |
| 中級(3–6 月) | ST 狀態機+模組化+PID | 自動門、小型分揀線、恆溫水槽 |
| 高級(6 月起) | 通訊整合+伺服+安全設計 | 變頻器 Modbus 整合、單軸取放、含安全門的設備改造 |
練習環境
各大廠皆提供免費或試用的開發環境與模擬器(如 Siemens TIA Portal 試用版+PLCSIM、 Rockwell CCW 免費版、Omron/三菱試用版、CODESYS 免費開發環境)。 沒有硬體時,CODESYS + 軟體模擬是零成本練完本書中級篇的可行途徑; 初級篇的接線與感測器實務,建議至少購置一台入門 PLC 與幾顆感測器實作。
延伸閱讀方向
IEC 61131-3 標準文本與各平台程式手冊、ISA-18.2(警報管理)、 ISO 13849-1(機械安全)、IEC 62443(工控資安)、PLCopen Motion 規範, 以及各廠牌的最佳實務文件(如 Rockwell 的程式設計指南、Siemens 的程式風格指南)。
詞彙表
| 術語 | 說明 |
|---|---|
| PLC / PAC | 可程式邏輯控制器/可程式自動化控制器(整合運動、程序控制的高階 PLC) |
| Scan Cycle | 掃描週期:輸入 \(\to\) 程式 \(\to\) 輸出的循環 |
| I/O Image | 輸入/輸出映像區:實體 I/O 在記憶體中的快照 |
| Watchdog | 看門狗:監控掃描逾時的保護機制 |
| NO / NC | 常開/常閉(接點型式;注意實體與程式層面的區別) |
| Sink / Source | 數位 I/O 的電流方向型式,對應 NPN/PNP 感測器 |
| Seal-in | 自保持電路:輸出以自身接點維持導通 |
| TON / TOF / TP | 通電延遲/斷電延遲/脈衝計時器 |
| R_TRIG / F_TRIG | 上升緣/下降緣偵測功能塊 |
| POU | 程式組織單元:Program、Function Block、Function |
| FB Instance | 功能塊實例:同一 FB 型別的獨立記憶副本 |
| UDT | 使用者定義型別(結構) |
| Retentive | 保持型記憶體:斷電後資料保留 |
| First Scan | 首次掃描旗標:上電後第一個週期為真,用於初始化 |
| HSC | 高速計數器:不受掃描週期限制的硬體計數 |
| PID | 比例–積分–微分控制 |
| Anti-windup | 積分抗飽和:輸出飽和時停止積分累積 |
| Scaling | 原始值與工程單位間的線性換算 |
| HMI / SCADA | 人機介面/監控與資料擷取系統 |
| Alarm Flood | 警報洪水:短時間大量警報淹沒操作員 |
| Modbus RTU/TCP | 最普及的開放工業通訊協定(串列/乙太網) |
| OPC UA | 跨平台工業資料交換標準,含資訊模型與安全機制 |
| MQTT | 輕量發布/訂閱通訊協定,常用於 IIoT 上雲 |
| EtherCAT | 高速工業乙太網,運動控制常用 |
| Homing | 原點復歸:建立軸座標系的程序 |
| E-CAM | 電子凸輪:以凸輪表使從軸跟隨主軸 |
| PL / SIL | 安全性能等級(ISO 13849)/安全完整性等級(IEC 61508/62061) |
| E-Stop | 緊急停止;類別 0(立即斷電)/類別 1(受控停止後斷電) |
| EDM | 外部裝置監控:安全繼電器檢查接觸器強制導向接點 |
| Force | 強制:繞過程式直接鎖定 I/O 值(高風險除錯手段) |
| Cross Reference | 交叉參照:列出變數在程式中所有讀寫位置 |
| FAT / SAT | 出廠驗收測試/現場驗收測試 |
| OEE | 設備總合效率 = 稼動率 \(\times\) 性能率 \(\times\) 良率 |
| Digital Twin | 數位孿生:設備的虛擬模型,用於模擬與虛擬調機 |
| IEC 61131-3 | PLC 程式語言國際標準(LD、FBD、ST、SFC、IL) |
| IEC 62443 | 工業自動化與控制系統資安標準 |