翻译自维基百科
先来看一个小视频
简介
可编程逻辑控制器(PLC)或可编程控制器是一种坚固耐用的工业数字控制器,适用于控制生产流程,例如流水线,机器人设备或任何需要高可靠性,易于编程和故障诊断的场合。
PLC的范围从具有与处理器集成在一起的外壳中的具有数十个输入和输出(I / O)的小型模块化设备到具有数千个I / O的大型机架安装模块化设备,并且通常可以连接到其他PLC和SCADA系统。
它们可以设计用于许多数字和模拟I / O布置,扩展的温度范围,抗电噪声以及抗振动和冲击的能力。控制机器运行的程序通常存储在非易失性存储器中。
PLC最初是在汽车制造业中发展起来的,旨在提供灵活,坚固耐用且易于编程的控制器来代替硬接线的继电器逻辑系统。从那时起,它们就已被广泛用作适合恶劣环境的高可靠性自动化控制器。
PLC是“硬”实时系统的一个示例,因为必须在有限的时间内响应输入条件产生输出结果,否则将导致意外情况。
发明与早期发展
PLC起源于1960年代后期的美国汽车工业,旨在取代继电器逻辑系统。以前,用于制造的控制逻辑主要由继电器,凸轮计时器,鼓音序器和专用闭环控制器组成。
硬连线的性质使设计工程师很难更改流程。进行更改需要重新布线并仔细更新文档。如果连一根电线都错了,或者一个继电器发生了故障,整个系统就会出现故障。通常,技术人员会花费大量时间进行故障排除,方法是检查原理图并将其与现有的布线进行比较。当通用计算机可用时,它们很快就被应用于工业过程中的控制逻辑。这些早期的计算机不可靠,需要专业的程序员并严格控制工作条件,例如温度,清洁度和电能质量。
与早期的自动化系统相比,PLC具有许多优势。它比计算机对工业环境的耐受性更好,并且比继电器系统更可靠,更紧凑且所需维护更少。它可以通过附加的I / O模块轻松扩展,而中继系统在重新配置的情况下需要复杂的硬件更改。这样可以简化制造过程设计中的迭代。凭借着重于逻辑和开关操作的简单编程语言,它比使用通用编程语言的计算机更加用户友好。它还允许对其操作进行监视。早期的PLC是用梯形逻辑编程的,它非常类似于继电器逻辑的示意图。选择该编程方法是为了减少对现有技术人员的培训需求。也有PLC使用指令列表来实现。
Modicon
1968年,GM Hydramatic(通用汽车公司的自动变速箱部门)根据工程师Edward R. Clark撰写的白皮书,发布了有关电子替代硬接线继电器系统的提案的要求。获奖方案来自马萨诸塞州贝德福德的贝德福德协会。结果是第一个PLC(建于1969年)将其命名为084,因为它是Bedford Associates的第八十四个项目。
贝尔福德协会创建了一家致力于开发,制造,销售和维修该新产品的公司,他们将其命名为Modicon(代表模块化数字控制器)。从事该项目的人之一是迪克·莫利(Dick Morley),他被认为是PLC的“父亲”。Modicon品牌于1977年出售给Gould Electronics,后来又出售给了现任所有者Schneider Electric。施耐德电气在马萨诸塞州北安多佛市的工厂现正在展示首批084型号之一。
通用汽车在将近20年不间断的服务后将其退役后,将其提供给Modicon。Modicon在其产品系列的末尾使用84名称,直到984出现为止。
艾伦·布拉德利
在并行开发中,Odo Josef Struger有时也被称为“可编程逻辑控制器之父”。1958年至1960年间,他参与了Allen-Bradley可编程逻辑控制器的发明,并因发明了PLC的缩写而倍受赞誉。在他任职期间,Allen-Bradley(现在是Rockwell Automation的品牌)成为美国主要的PLC制造商。Struger在制定IEC 61131-3 PLC编程语言标准方面发挥了领导作用。
早期编程方法
许多早期的PLC无法以逻辑方式进行图形表示,因此它以某种布尔格式表示为一系列逻辑表达式,类似于布尔代数。随着编程终端的发展,梯形逻辑变得越来越普遍,因为它是机电控制面板常用的格式。存在较新的格式,例如状态逻辑和功能块(类似于使用数字集成逻辑电路时描述逻辑的方式),但它们仍不如梯形逻辑流行。主要原因是PLC按照可预测和重复的顺序执行逻辑,并且梯形逻辑使编写逻辑的人员更容易看到逻辑序列的时序问题。
直到1990年代中期,使用专有的编程面板或专用编程终端对PLC进行编程,这些终端通常具有专用功能键,这些功能键代表PLC程序的各种逻辑元素。一些专有的编程终端将PLC程序的元素显示为图形符号,但是触点,线圈和电线的普通ASCII字符表示很常见。程序存储在盒式磁带中。由于缺少存储容量,因此用于打印和文档编制的设施很少。最古老的PLC使用非易失性磁芯存储器。
架构
PLC是基于工业微处理器的控制器,具有可编程存储器,用于存储程序指令和各种功能。它包含:
- 处理器单元(CPU),用于解释输入,执行存储在存储器中的控制程序并发送输出信号
- 将交流电压转换为直流电的电源单元
- 存储单元,存储来自输入的数据和要由处理器执行的程序
- 输入和输出接口,控制器在此从外部设备接收和发送数据
- 一个通信接口,用于在通信网络上从远程PLC接收和向远程PLC传输数据。
PLC需要编程设备,该设备用于开发并随后将创建的程序下载到控制器的存储器中。
现代PLC通常包含实时操作系统,例如OS-9或VxWorks。
机械设计
PLC系统的机械设计有两种类型。单个盒子作为一个小型可编程控制器,可将所有单元和接口安装到一个紧凑的外壳中,尽管通常情况下,还可以使用用于输入和输出的附加扩展模块。第二种设计类型-模块化PLC-具有底盘(也称为机架),该底盘为具有不同功能的模块(例如电源,处理器,I / O模块的选择和通信接口)提供了空间-所有这些均可针对特定的应用程序。单个处理器可以管理多个机架,并且可能有数千个输入和输出。可以使用特殊的高速串行I / O链接或类似的通信方法,以便可以将机架分布在远离处理器的位置,从而降低了大型工厂的布线成本。还可以选择将I / O点直接安装到机器上,并利用快速断开电缆连接到传感器和阀门上,从而节省了接线和更换组件的时间。
离散和模拟信号
离散(数字)信号只能取值(1或0,是或否)。提供离散信号的设备示例包括限位开关,光电传感器和编码器。离散信号使用电压或电流发送,其中特定的极端范围指定为开和关。例如,控制器可能使用24 V DC输入,高于22 V DC的值表示接通,低于2 V DC的值表示断开,并且中间值未定义。模拟信号可以使用与监视变量的大小成比例的电压或电流,并且可以采用其范围内的任何值。压力,温度,流量和重量通常由模拟信号表示。根据设备和可用于存储数据的位数,通常将它们解释为具有各种精度范围的整数值。例如,模拟量0至10 V或4-20 mA输入将转换为0至32,767的整数值。PLC将采用该值并将其转换为所需的过程单位,以便操作员或程序可以读取它。适当的集成还将包括减少噪声的过滤时间,以及报告故障的上限和下限。电流输入对电噪声(例如来自焊工或电动机启动的噪声)的敏感性低于电压输入。与设备和控制器之间的距离也是一个问题,因为与4-20 mA信号相比,高质量0-10V信号的最大行进距离非常短。4-20 mA信号还可以报告导线是否沿路径断开,因为它将返回0 mA信号。
冗余
一些特殊的流程需要永久运行,以减少不必要的停机时间。因此,有必要设计一种容错的系统,并能够处理带有故障模块的过程。在这种情况下,如果硬件组件发生故障,则可以将具有相同功能的冗余CPU或I / O模块添加到硬件配置中,以防止由于硬件故障而导致全部或部分进程关闭,从而提高系统可靠性。其他冗余方案可能与对安全至关重要的过程有关,例如,大型液压机可能要求两个PLC在压力机下降之前先打开一个输出,以防一个输出不能正确关闭。
编程
PLC的目标用户是没有编程背景的工程师。出于这个原因,一种叫做LD(梯形图)的图形化编程语言首先被开发出来。由于它和传统的继电逻辑电路原理图非常像,所以被许多制造商所采用,并且后面被加入到了IEC61131-3标准中。由于它非常简单,直到2015年,它仍然被广泛地使用。
直到2015年,大多数PLC系统都会遵循IEC61131-3标准,该标准定义了两种文本化编程语言:ST(结构化文本,类似于Pascal)和IL(指令列表);三种图形化编程语言:LD(梯形图),FBD(功能块图)以及SFC(顺序功能图)。IL在第三版标准中被弃用。
现代PLC可以通过多种方式编程,从源自继电逻辑的LD语言到经过特殊调整的通用计算机编程语言(例如BASIC和C)。
尽管对于所有的制造商来说,PLC的基础概念是相同的,但是在I/O寻址,存储组织,以及指令集方面的不同使得PLC程序很难在不同制造商的PLC之间通用。甚至是同一个制造商,不同的PLC套件都可能是不兼容的。
编程设备
PLC程序通常是在编程设备中进行开发的,编程设备可以是桌面控制台、桌面图形化软件,或者是手持式编程设备。然后,程序直接或者通过网络被下载到PLC中。它要么存储在一个带有电源的RAM中,要么存储在非易失性存储设备中。在一些PLC中,程序是通过一块编程板从个人电脑中烧录到可移动的的芯片中,例如EPROM。
制造商为他们的控制器开发编程软件。除了能够使用多种编程语言对PLC进行编程之外,他们还提供一些通用特性,例如硬件诊断和维护,软件调试,以及离线仿真。
一个在PC上开发的程序或者是从PLC中上载的程序,可以很容易地被复制并存储到外部设备中。
仿真
PLC仿真通常是PLC编程软件的功能之一。它允许工程师在项目开发的早期对程序进行测试和调试。
不正确的PLC程序可能导致生产效率的低下和危险的事故。在仿真环境中对工程进行测试提高了它的可靠性,并减少项目成本与周期。
功能
PLC和其它计算设备不同的地方在于它对恶劣环境(灰尘,潮湿,高温,低温,电磁干扰)的耐受性较强,同时提供扩展I/O来将PLC和其它传感器,驱动器连接起来。PLC的输入可以包括简单的数字量,例如限位开关,来自过程的模拟量(例如温度和压力),以及更复杂的数据,例如位置和机器视觉系统。PLC输出可以包括指示灯,警报器,电动机,气压缸或液压缸,磁继电器,螺线管或模拟量输出等元素。输入/输出设备可以内置在简单的PLC中,或者PLC可以具有连接到现场总线或插入PLC的计算机网络的外部I / O模块。
PLC的功能经过多年的发展,已经包含了顺序继电控制,运动控制,过程控制,离散控制以及网络控制。一些现代PLC的数据处理,存储,功耗以及通信能力与桌面计算机已经不相上下了。现在也出现了一些以通用计算机作为控制器的应用。但是这种控制器在重工业中没有被广泛接受,因为相比于PLC,桌面计算机运行在不是很稳定的操作系统上,而且桌面计算机的硬件对恶劣环境(高低温,潮湿,振动等)的耐受性非常有限。诸如Windows等操作系统中,程序执行时间是不确定的,因此,控制器可能不会按照我们预先设计的时序执行指令。这种基于通用计算机的控制器一般用在一些对对环境要求不是很高的场合,例如实验室。
基本功能
PLC最基本的功能是模拟机电继电器系统。离散输入被赋予一个特殊的地址,并且PLC指令可以测试该输入的状态。一系列的继电器触点执行逻辑与操作,除非所有触点都关闭,否则不允许电流通过,因此一系列的“if on”指令在所有输入都为on的情况下会激励输出为on。
一些PLC强制从左到右,从上到下的指令执行顺序。这是和硬接线的继电器系统是不一样的,在一些足够复杂的继电器系统中,电流可能从左到右,也可能从右到左,这取决于周围触点的配置。这种奇怪的现象可能是bug,也可能是特性,取决于你的编程方式。
更加高级的PLC指令可能以功能块的方式实现。
通信
PLC使用内建的端口,例如USB,以太网,RS-232,RS485,RS422来和外部设备(传感器,驱动器)和系统(编程软件,SCADA,HMI)。通信功能依赖于各种各样的工业网络协议,例如Modbus,Profibus,ProfiNet。许多协议都是PLC制造商特有的。
使用在大规模I/O系统中的PLC可能存在处理器之间的peer-to-peer(P2P)通信。这允许复杂过程的独立部分能够实现相对自主控制,而且互相之间可以通过通信链路进行协调联动。这些通信链路通常用于HMI设备或者是PC类型的工作站。
用户接口
PLC可能需要和人员交互,以实现配置,报警和日常监控的目的。HMI就是为该目标设计的。HMI也叫MMI(man-machine interfaces)或者叫GUI。一个简单的系统会使用按钮和灯来和用户进行交互。也有文本化显示和图形化触摸屏。更加复杂的系统使用安装在通用计算机上的的编程和监控软件。
扫描周期过程
PLC在程序扫描周期中重复执行。最简单的扫描周期包括三个步骤:
- 读取输入
- 执行程序
- 写入输出
程序按顺序逐条被执行,通常情况下执行时间是固定的,但是如果存在一些远程I/O设备,那么通信所消耗的时间可能会被PLC系统引入不确定性。
随着PLC越来越先进,一些方法被开发出来用于改变梯形图的执行顺序,这种强化的编程方式可以被用于节省高速过程的扫描时间;例如,程序中的初始化部分可以从那些需要高速执行的部分中分离出来。更新的PLC支持程序执行和I/O扫描同步执行。这意味着I/O数据在后台被更新,逻辑读写操作在逻辑扫描期间被执行。
当PLC的扫描时间过长时,可以采用一些特殊的I/O模件来实现可预测的性能。当扫描周期过长时,PLC无法精确探测旋转脉冲,这时可以采用精确时间模件,或者是计数模件。这允许一个相当缓慢的PLC仍然能够正确地解释计数值并控制机器。
安全
E.A.Parr在他1998年的书中指出,尽管到多数可编程控制器需要物理按键和密码,严格访问控制和版本控制系统,以及一个易于理解的编程语言的缺失使得对程序的非法改动可能会发生,而且很难察觉。
在Stuxnet 电脑蠕虫发生之前,很少有人关注PLC的安全问题。现代可编程控制器通常包含一个实时操作系统,这个操作系统可能面临和普通桌面操作系统一样的风险。也可以通过攻击与PLC相连的电脑来攻击PLC。自从2011年起,随着PLC逐渐接入办公网,PLC的安全问题愈发受到关注。
安全PLC
近年来,“安全” PLC已成为流行,无论是作为独立模型,还是作为添加到现有控制器体系结构(Allen-Bradley Guardlogix,Siemens F系列等)中的功能和安全等级硬件。它们与传统的PLC类型不同,因为它们适用于安全关键型应用,在这些应用中,传统上已为PLC加上了硬连线的安全继电器和专用于安全指令的存储器区域。安全等级的标准是SIL。例如,安全PLC可能被用来控制对具有陷阱键访问权限的机器人单元的访问,或者可能用于管理对输送机生产线上紧急停止的停机响应。这种PLC通常具有受限制的常规指令集,并添加了特定于安全的指令,这些指令被设计为与紧急停止,光幕等接口。这种系统提供的灵活性已导致对这些控制器的需求快速增长。
PLC和其它控制系统相比
PLC非常适合于各种自动化任务。这些通常是制造业中的工业过程,其中开发和维护自动化系统的成本相对于自动化的总成本而言是高昂的,并且在系统的整个使用寿命期间都可能会对其进行更改。PLC包含与工业先导设备和控件兼容的输入和输出设备;几乎不需要电气设计,并且设计问题集中在表达所需的操作顺序上。PLC应用程序通常是高度定制的系统,因此与特定的定制控制器设计相比,打包的PLC的成本较低。另一方面,对于批量生产的商品,定制的控制系统是经济的。这是由于组件的成本较低,可以选择最佳组件而不是“通用”解决方案,并且将非经常性工程费用分散在数千或数百万个单元中。可编程控制器广泛用于运动,定位或转矩控制中。一些制造商生产的运动控制单元将与PLC集成在一起,以便可以使用G代码(涉及CNC机床)来指示机床运动。
PLC芯片/嵌入式控制器
对于一些小型或者中型尺寸的机器。可以执行诸如梯形图语言的PLC和传统PLC很相似,但是它们的小尺寸使得开发者可以将它们设计进定制的印刷电路板中,就像一个微控制器。它是介于经典PLC和微控制器之间的一种工业控制器。
凸轮定时器
对于大体积并且功能非常固定的自动化任务,可以采用其它计数。例如,一个便宜的消费级洗碗机可能只需要一个便宜的机电凸轮定时器。
微控制器
基于微控制器的设计将适合于将要生产数百或数千个单元的情况,因此开发成本(电源,输入/输出硬件的设计以及必要的测试和认证)可以分摊到许多销售中,最终用户无需更改控件。汽车应用就是一个例子。每年建造数百万个单元,很少有最终用户更改这些控制器的编程。但是,某些专用车辆(例如公交车)在经济上使用PLC而不是定制设计的控件,因为体积小且开发成本不经济。
单板计算机
非常复杂的过程控制(例如在化学工业中使用的过程控制)可能需要的算法和性能甚至超出了高性能PLC的能力。高速或精密控制也可能需要定制的解决方案。例如飞机的飞行控制。对于要求严格的控制应用,可以选择使用半定制或完全专有的硬件的单板计算机,在这些应用中可以支持较高的开发和维护成本。在台式计算机上运行的“软PLC”可以与工业I / O硬件接口,同时在适合过程控制需求的商业操作系统版本中执行程序。
单板计算机的日益普及也对PLC的发展产生了影响。传统的PLC通常是封闭的平台,但是一些较新的PLC(例如Bosch Rexroth的ctrlX,Wago的PFC200,Phoenix Contact的PLCnext和Kunbus的Revolution Pi)在开放平台上提供了传统PLC的功能。
PID控制器
PLC可能包括用于单变量反馈模拟控制回路的逻辑,PID控制器。例如,PID回路可用于控制制造过程的温度。从历史上看,PLC通常只配置了几个模拟控制回路。如果过程需要数百或数千个循环,则将使用分布式控制系统(DCS)。随着PLC变得越来越强大,DCS和PLC应用程序之间的界限变得模糊了。
可编程逻辑继电器(PLR)
近年来,称为可编程逻辑继电器(PLR)或智能继电器的小型产品变得越来越普遍和被接受。这些与PLC相似,用于轻工业中,仅需要几个I / O点,并且需要低成本。这些小型设备通常由几个制造商以相同的物理尺寸和形状制造,并由大型PLC的制造商掌握商标,以填补其低端产品范围。其中大多数具有8到12个离散输入,4到8个离散输出以及最多2个模拟输入。大多数此类设备都包括一个邮票大小的小型LCD屏幕,用于查看简化的梯形逻辑(在给定的时间仅显示程序的一小部分)和I / O点的状态,通常这些屏幕都伴随着一个4向摇杆按钮,再加上四个单独的按钮,类似于VCR遥控器上的键按钮,用于导航和编辑逻辑。大多数工具都有一个小插头,用于通过RS-232或RS-485连接到个人计算机,这样程序员就可以使用简单的Windows应用程序进行编程,而不必为此目的而使用微型LCD和按钮设置。与通常是模块化且可扩展的常规PLC不同,PLR通常不是模块化或可扩展的,但其价格可能比PLC低两个数量级,并且它们仍提供可靠的设计和确定性的逻辑执行。
在远程位置使用的PLC的一种变体是远程终端单元或RTU。RTU通常是一种低功耗,坚固耐用的PLC,其关键功能是管理站点与中央控制系统(通常为SCADA)或某些现代系统中的“云”之间的通信链接。与使用高速以太网的工厂自动化不同,与远程站点的通信链接通常基于无线电,并且可靠性较低。为了解决可靠性降低的问题,RTU将缓冲消息或切换到备用通信路径。缓冲消息时,RTU将为每条消息加上时间戳,以便可以重建站点事件的完整历史记录。RTU是PLC,具有广泛的I / O,并且可以完全编程,通常使用许多PLC,RTU和DCS通用的IEC 61131-3标准中的语言。在偏远地区,通常将RTU用作PLC的网关,其中PLC执行所有站点控制,RTU管理通信,时间戳事件并监视辅助设备。在只有少量I / O的站点上,RTU也可以是站点PLC,并且可以执行通信和控制功能。
PLC制造商
可编程逻辑控制器的顶级制造商包括:
- ABB是一家从事自动化技术和机器人技术的瑞典-瑞士跨国公司
- 贝加莱工业自动化公司,奥地利PLC制造商,自2017年起隶属于ABB集团
- 博世力士乐(Bosch Rexroth)是一家德国公司,致力于驱动和控制技术,包括工业控制
- 艾默生电气公司(Emerson Electric),一家为工业市场生产产品并提供工程服务的美国公司
- 日立子公司日立工业设备系统公司
- 霍尼韦尔工艺(霍尼韦尔国际公司霍尼韦尔高性能材料和技术业务部的业务部门)
- 开发自动产品的日本公司Keyence Corporation
- 三菱电机,日本电子和电气设备制造公司,具有Melsec PLC系列
- 欧姆龙是一家位于日本京都的电子公司,
- 美国公司罗克韦尔自动化(Rockwell Automation)接管了Allen-Bradley品牌的PLC,
- 西门子(Siemens)是一家德国跨国集团公司,致力于开发Simatic S7 PLC系列,
- 拥有原始Modicon PLC品牌的法国电气设备公司Schneider Electric,
- 日本制造商IDEC。