可编程逻辑控制器

可程式化逻辑控制器（programmable logic controller，简称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内部并非实体上具有这些硬体，而是以记忆体与程式编程方式做逻辑控制编辑，并借由输出元件连接外部机械装置做实体控制。因此能大大减少控制器所需之硬体空间。实际上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。
应用例：