可编程逻辑控制器

可编程逻辑控制器（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系列），还有用布尔逻辑语言、通用计算机兼容的汇编语言等。