可编程逻辑控制器

可程式化邏輯控制器（programmable logic controller，簡稱PLC），一種具有微處理器的數位電子裝置，用於自動化控制的數位邏輯控制器，可以將控制指令隨時載入記憶體內儲存與執行。可程式控制器由內部CPU，指令及資料記憶體、輸入輸出單元、電源模組、數位類比等單元所模組化組合成。PLC可接收（輸入）及發送（輸出）多種型態的電氣或電子訊號，並使用他們來控制或監督幾乎所有種類的機械與電氣系統。
最初的可程式化序邏輯控制器只有電路邏輯控制的功能，所以被命名為可程式邏輯控制器，後來隨著不斷的發展，這些當初功能簡單的電腦模組已經有了包括邏輯控制，時序控制、類比控制、多機通訊等許多的功能，名稱也改為可程式控制器（Programmable Controller），但是由於它的簡寫也是PC與個人電腦（Personal Computer）的簡寫相衝突，也由於多年來的使用習慣，人們還是經常使用可程式邏輯控制器這一稱呼，並在術語中仍沿用PLC這一縮寫。
在可程式邏輯控制器出現之前，一般要使用成百上千的繼電器以及計數器才能組成具有相同功能的自動化系統，而現在，經過編程的簡單的可程式邏輯控制器模組基本上已經代替了這些大型裝置。可程式邏輯控制器的系統程式一般在出廠前已經初始化完畢，用戶可以根據自己的需要自行編輯相應的用戶程式來滿足不同的自動化生產要求。
現在工業上使用可程式邏輯控制器已經相當接近於一台輕巧型電腦所構成，甚至已經出現整合個人電腦（採用嵌入式作業系統）與PLC結合架構的可程式自動化控制器（Programmable Automation Controller，簡稱PAC），能透過數位或類比輸入/輸出模組控制機器裝置、製造處理流程及其他控制模組的電子系統。可程式邏輯控制器廣泛應用於目前的工業控制領域。在工業控制領域中，PLC控制技術的應用已成為工業界不可或缺的一員。

發展歷史

可程式控制器的興起與美國現代工業自動化生產發展的要求密不可分的。PLC源起於1960年代，當時美國通用汽車公司，為解決工廠生產線調整時，繼電器順序控制系統之電路修改耗時，平時檢修與維護不易等問題。在可程式邏輯控制器出現之前，汽車製造業中的一般控制、順序控制以及安全互鎖邏輯控制必須完全依靠眾多的繼電器、定時器以及專門的閉迴路控制器來實現。它們體積龐大、有著嚴重的噪音，不但每年的維護工作要耗費大量的人力物力，而且繼電器-接觸器系統的排線檢修等工作對維護人員的熟練度也有著很高的要求。
針對這些問題，美國通用汽車公司在1968年向社會公開招標，要求設計一種新的系統來替換繼電器系統，並提出了著名的「通用十條」招標指標。隨後，美國數位裝置公司（DEC）根據這一設想，於1969年研製成功了第一台PDP-14控制器，並在汽車自動裝配線上使用並獲得成功。由於當時系統主要用於順序控制、只能進行邏輯運算，所以被命名為可程式邏輯控制器（Programmable Logic Controller，PLC）。最早期的PLC只具有簡易之邏輯開/關（on/off）功能，但比起傳統繼電器之控制方式，已具有容易修改、安裝、診斷與不佔空間等優點。
1970年代初期，PLC引進微處理機技術，使得PLC具有算術運算功能與多位元之數位訊號輸出/輸入功能，並且能直接以階梯圖符號進行程式之編寫。這項新技術的使用，在工業界產生了巨大的反響。日本在1971年從美國引進了這項技術，並很快研製成功了自己的DCS-8可程式邏輯控制器，德、法在1973年至1974年間也相繼有了自己的該項技術。中國則於1977年研製成功自己的第一台可程式邏輯控制器，但是使用的微處理器核心為MC14500。1970年代中期，PLC功能加入遠距通訊、類比輸出輸入、NC 伺服控制等技術。1980年代以後更引進PLC高速通訊網路功能，同時加入一些特殊輸出/輸入介面、人機介面、高功能函式指令、資料收集與分析能力等功能。
PLC之功能早已不止當初數位邏輯之運算功能，因此近年來PLC常以可程式控制器（Programmable Controller）簡稱之。

硬體結構

一般講，PLC分為箱體式和模組式兩種。但它們的組成是相同的，對箱體式PLC，有一塊CPU板、I/O板、顯示面板、記憶體塊、電源等，當然按CPU效能分成若干型號，並按I/O點數又有若干規格。對模組式PLC，有CPU模組、I/O模組、記憶體、電源模組、底板或機架。無論哪種結構類型的PLC，都屬於匯流排式開放型結構，其I/O能力可按用戶需要進行擴展與組合。PLC的基本結構框圖如下：

電源模組

有些PLC中的電源，是與CPU模組合二為一的，有些是分開的，其主要用途是為PLC各模組的積體電路提供工作電源。同時，有的還為輸入電路提供24V的工作電源。電源如果為交流電源通常為220VAC或110VAC，若為直流電源常用的為24V。

中央處理單元

PLC中的CPU是PLC的核心，它按PLC的系統程式賦予的功能接收並存貯用戶程式和資料，用掃描的方式採集由現場輸入裝置送來的狀態或資料，並存入規劃的暫存器中，同時，診斷電源和PLC內部電路的工作狀態和編程過程中的語法錯誤等。進入運行後，從用戶程式存貯器中逐條讀取指令，經分析後再按指令規定的任務產生相應的控制訊號，去指揮有關的控制電路，與個人電腦一樣，主要由運算器、控制器、暫存器及實現它們之間聯繫的資料、控制及狀態匯流排構成，還有週邊晶片、匯流排介面及有關電路。它確定了進行控制的規模、工作速度、記憶體容量等。

記憶體

記憶體主要用於儲存程式及資料，是PLC不可缺少的組成單元。PLC內部會存放撰寫完成編輯的程式指令及資料，通常也可使用RAM或EEPROM等專用記憶體卡片方式擴充，但擴充能力得依各廠牌與型號有所不同。

輸入/輸出單元

PLC的對外功能，主要是通過各種輸入/輸出模組與外界聯繫的，按I/O點數確定模組規格及數量，I/O模組可多可少，但其最大數受CPU所能管理的基本組態的能力，即受最大的底板或機架槽數限制。I/O模組整合了PLC的I/O電路，其輸入暫存器反映輸入訊號狀態，輸出點反映輸出閂鎖狀態。
輸入單元是用來連結擷取輸入元件的訊號動作並透過內部匯流排將資料送進記憶體由CPU處理驅動程式指令部分。PLC輸入模組PLC系統的架構和輸入模組產品的選擇端視需要被監測的輸入訊號位準而定。 
來自不同類型被監測的感測器與流程控制之變數訊號，可以涵蓋從±10mV至±10V的輸入訊號範圍。 
輸出單元是用來驅動外部負載的介面，主要原理是由CPU處理以書寫在PLC裡的程式指令，判斷驅動輸出單元在進而控制外部負載，如指示燈、電磁接觸器、繼電器、氣（油）壓閥等。
PLC輸出模組在工業環境中用來控制制動器、氣閥及馬達等的PLC系統類比輸出範圍包括±5V、±10V、0V到5V、0V到10V、4到20mA、或0到20mA等。

通訊

現在PLC大多具有可擴充通訊網路模組的功能，簡單的PLC以BUS纜線或RS-232方式通訊連結，較高階的PLC會採用USB或乙太網路方式做通訊連結。它使PLC與PLC之間、PLC與個人電腦以及其他智慧型裝置之間能夠交換資訊，形成一個統一的整體，實現分散集中控制。現在幾乎所有的PLC新產品都有通訊網路功能，它和電腦一樣具有RS-232介面，通過雙絞線、同軸電纜或光纜，可以在幾公里甚至幾十公里的範圍內交換資訊。當然，PLC之間的通訊網路是各廠家專用的，PLC與電腦之間的通訊，一些生產廠家採用工業標準匯流排，並向標準通訊協定靠近，這將使不同機型的PLC之間、PLC與電腦之間可以方便地進行通訊與網路。
PLC通訊協定規格可分為RS-232、RS-422、RS-432、RS-485、IEEE 1394、IEEE-488（GPIB），其中RS-432最為少見。目前國際中最常用的通訊協定為MODBUS-ASCII模式及MODBUS-RTU模式，此為Modicon公司所制定的通訊協定。PROFIBUS則為西門子公司所制定。日本三菱電機則推出CC-LINK通訊協定。

程式設計

PLC的編程程式語言與一般電腦程式語言相比，具有明顯的特點，它既不同於高階語言，也不同與一般的組合語言，它既要滿足易於編寫，又要滿足易於除錯的要求。目前，還沒有一種對各廠家產品都能相容的程式語言。IEC 61131-3是一個國際標準，它規範了PLC相關之軟體硬體的標準，其最終的目的是可以讓PLC的使用者在不更改軟體設計的狀況下可以輕易更換PLC硬體。IEC 61131-3主要是提供了五種程式語言，包含：
1. 指令表（Instruction List，IL或Statement List，SL）  ：類似組合語言的描述文字。由指令語句系列構成，如Mitsubishi FX2的控制指令LD、LDI、AND、ANI、OR、ORI、ANB、ORB、MMP、MMS與OUT等，一般配合書寫器寫入程式，而書寫器只能輸入簡單的指令，與電腦程式中的階梯圖比較起來簡單許多。書寫器不太直觀，可讀性差，特別是遇到較複雜的程式，更難讀；但其優點就是不需要電腦就可以更改或察看PLC內部程式。使用書寫器時，必須注意的是PLC指令中輸出有優先次序，其中若有輸出至相同的單元時（如Y000），輸出的優先次序以位址越大優先次愈越高，一般不容易從書寫器中察覺所輸入的單元。
2. 結構式檔案程式語言（Structured Text，ST）：類似PASCAL與C語言的語法，適合撰寫較複雜的演算法，除錯上也比階梯圖要容易得多。ST語言類似於程式語言的特性，因此可利用與微電腦及個人電腦相同的程式設計技術進行階梯式語言所難以執行的複雜計算，完成程式的建立。 
3. 階梯圖（Ladder Programming，LAD）：類似於傳統上以繼電器控制接觸器的階梯圖，梯形圖是通過連線把PLC指令的梯形圖符號連接在一起的連通圖，用以表達所使用的PLC指令及其前後順序，它與電氣原理圖很相似。
它的連線有兩種：一為母線，另一為內部橫豎線。內部橫豎線把一個個梯形圖符號指令連成一個指令組，這個指令組一般總是從裝載（LD）指令開始，必要時再繼以若干個輸入指令（含LD指令），以建立邏輯條件。最後為輸出類指令，實現輸出控制，或為資料控制、流程控制、通訊處理、監控工作等指令，以進行相應的工作。
4. 順序功能流程圖（Sequential Function Chart，SFC）：類似於流程設計（Flow Design），流程圖中的步驟組合而完成，主要是規劃動作順序的流程圖，故謂之順序功能流程圖。所謂步序式控制，即是一步一步控制，而這一步與上一步是有關連性的，有順序性的。必須有上一個動作（STL），才會啟動（SET）下一個動作（STL）。
5.功能區塊圖（Function Block Diagram，FBD）：以畫電路圖的方式來寫PLC程式。常用的程式及迴路可透過FB（功能區塊）的建立輕易地重複利用。
其他一些高檔的PLC還具有與電腦相容的C語言、BASIC語言、專用的高階語言（如西門子公司的GRAPH5、三菱公司的MELSAP、富士電機的Micrex-SX系列），還有用布林邏輯語言、通用電腦相容的組合語言等。