可编程逻辑控制器
可程式化邏輯控制器（，简称PLC），一种具有微处理器的数字电子设备，用于自动化控制的數位邏輯控制器，可以將控制指令隨時載入記憶體內儲存與執行。可程式控制器由內部CPU，指令及資料記憶體、輸入輸出單元、電源模組、數位類比等單元所模組化組合成。PLC可接收（輸入）及發送（輸出）多種型態的電氣或電子訊號，並使用他們來控制或監督幾乎所有種類的機械與電氣系統。
最初的可编程序逻辑控制器只有電路逻辑控制的功能，所以被命名为可程式邏輯控制器，后来随着不断的发展，这些当初功能简单的计算机模块已经有了包括逻辑控制，时序控制、模拟控制、多机通信等许多的功能，名称也改为可程式控制器（Programmable Controller），但是由于它的简写也是PC与个人电脑（Personal Computer）的简写相冲突，也由于多年来的使用习惯，人们还是经常使用可程式邏輯控制器这一称呼，并在术语中仍沿用PLC这一缩写。
在可程式邏輯控制器出现之前，一般要使用成百上千的继电器以及計數器才能组成具有相同功能的自动化系统，而现在，经过编程的简单的可程式邏輯控制器模块基本上已经代替了这些大型装置。可程式邏輯控制器的系统程序一般在出厂前已经初始化完毕，用户可以根据自己的需要自行编辑相应的用户程序来满足不同的自动化生产要求。
現在工業上使用可程式邏輯控制器已經相當接近於一台輕巧型電腦所構成，甚至已經出現整合個人電腦（採用嵌入式作業系統）與PLC結合架構的可程式自動化控制器（Programmable Automation Controller，簡稱PAC），能透過數位或類比輸入/輸出模組控制機器設備、製造處理流程及其他控制模組的電子系統。可程式邏輯控制器广泛应用于目前的工业控制领域。在工業控制領域中，PLC控制技術的應用已成為工業界不可或缺的一員。
PLC具有通用性強、使用方便、適應面廣、可靠性高、抗干擾能力強、編程簡單等特點。
国际电工委员会（IEC）在其标准中将PLC定义为： 美国通用汽车公司在1968年提出了著名的“通用十条”招标指标，也是目前PLC的特點： 1978年（NEMA）對可程式控制器定義是： 可程式控制器的興起與美國現代工業自動化生產發展的要求密不可分的。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內部並非實體上具有這些硬體，而是以記憶體與程式編程方式做邏輯控制編輯，並藉由輸出元件連接外部機械裝置做實體控制。因此能大大減少控制器所需之硬體空間。實際上PLC執行階梯圖程式的運作方式是逐行的先將程式碼以掃瞄方式讀入CPU中並最後執行控制運作。在整個的掃瞄過程包括三大步驟，「輸入狀態檢查」、「程式執行」、「輸出狀態更新」說明如下：
PLC首先檢查輸入端元件所連接之各點開關或感測器狀態（1或0代表開或關），並將其狀態寫入記憶體中對應之位置Xn。 將階梯圖程式逐行取入CPU中運算，若程式執行中需要輸入接點狀態，CPU直接自記憶體中查詢取出。輸出線圈之運算結果則存入記憶體中對應之位置，暫不反應至輸出端Yn。 將步驟二中之輸出狀態更新至PLC輸出部接點，並且重回步驟一。
此三步驟稱為PLC之掃描周期，而完成所需的時間稱為PLC之反應時間，PLC輸入訊號之時間若小於此反應時間，則有誤讀的可能性。每次程式執行後與下一次程式執行前，輸出與輸入狀態會被更新一次，因此稱此種運作方式為輸出輸入端「程式結束再生」。
一般講，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系統不可分割的一部分，它有四大類
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系列），還有用布林邏輯語言、通用電腦相容的組合語言等。
PLC在程式設計過程中，會利用到內部記憶體，規劃許多順序控制程式上常會使用到的元件，這些元件包括：輸入繼電器、輸出繼電器、補助繼電器、計數器、計時器、資料暫存器等主要元件，各元件功能與使用方法，說明如下：
由於具有使用容易，節省配線人力，設計彈性等優點，已廣泛的應用於各種控制系統中，在工廠自動化控制中擔任核心控制任務。目前市面上之PLC種類繁多，依照製造廠商及適用場所的不同而有所差異，但是每種廠牌可依機組複雜度分為大、中、小型;而一般工廠及學校通常使用小型PLC，在工業用途通常使用大型PLC。
應用例：