以支持为重点的企业控制:PLC基础

PLC程序的行为不像大多数计算机应用程序使用的脚本语言程序。对控制应用基础的基本理解对于设计一个有效的以支持为中心的系统是至关重要的。本文的这一部分为战略家提供了识别编程指令、术语、逻辑电路等所需的基本知识。链接到下面的第1、2和3部分。

通过丹尼尔·卡迪纳尔 2015年5月19日

在有效地设计出以支持为中心、能够有效地与控制应用程序交互的设计之前,设计人员必须首先对控制应用程序的基本原理有基本的了解。不过,在介绍控制应用基础知识之前,本文这一部分主要介绍PLC编程的基础知识。所提供的材料为战略家提供了必要的基本知识,以认识到:

  1. 常见编程说明
  2. 控制申请条款
  3. 潜在的机器控制器程序
  4. 硬编码和硬连线逻辑电路
  5. 影响电路样式的编程技术
  6. 电路替换技术。

PLC程序的行为不像大多数计算机应用程序使用的脚本语言程序。PLC操作系统强调对所有代码行进行连续和高速扫描。在这里,术语“扫描”指的是对每一行代码的连续求值。设计人员将每一行代码称为一个阶梯级或逻辑电路,而将一组阶梯级或电路称为一个应用程序。设计人员很少开发导致控制器程序循环或连续扫描电路子集的逻辑电路。在一个电路子集上循环会延迟对其他电路的扫描计算。当未评估的电路延迟或没有及时检查传感器输入转换时,评估延迟会产生安全隐患。这类事件的缓慢或漏检会导致控制器电路保持输出信号使能。未能关闭允许运动的输出信号会导致机构或物体到达其物理停止位置并崩溃。

对于计算机程序员来说,将梯形逻辑程序看作布尔方程列表通常更容易一些。单独的方程组组成单独的控制器应用程序。机器控制器不断地扫描和评估每个应用程序中的每个方程。如果可检查的方程条件为真,则所编程的输出指令将启用或禁用内部信号、输出信号或函数变量。每个应用程序共享每个程序扫描的一部分。由此产生的净效果相当于并行处理所有常驻机器控制器应用程序。以下定义描述了用于控制机构或物体运动的电路:

逻辑电路:作为机器控制器应用程序一部分的代码行

外部电路:对机器控制器的输出信号作出反应以移动物体或机构的任何电动、气动、光学或液压回路。

外部电路是物理电路,而逻辑电路是机器控制器的内部电路。“外部电路”术语是指对控制器的启用输出信号作出反应的真实设备的排列。在外部,输出信号是控制器输出模块上的连接点。外部电路使用来自输出连接点的电线使继电器、阀门和开关激活液压、气动、光学和/或电路。逻辑电路是具有可检查元素和可编程结果的代码行。元素是离散信号或应用变量。每个逻辑电路实现一个或多个结果。结果通常是启用或禁用的信号或可更改的寄存器存储值。逻辑电路无条件地使能结果是很常见的。某些逻辑电路的结果是输出信号,当使能时将激活外部电路。 Designers often place examinable elements in series on a logic circuit to denote AND conditions. Instead of parenthesis, programmers use branches with one or more parallel elements to denote OR conditions. The following definitions describe some commonly used logic circuit programming terms:

一点:只有两个值,1(1)或0(0)的机器控制器的最小布尔变量

词:用于存储应用程序变量内容的机器控制器的多比特(16,32,64等)寄存器

指令:一种单一的可编程操作,用于检查、比较、启用、禁用、移动、设置、重置或操作位或字的值

指令:用于检查、启用或禁用位值的操作

字指令:一种用于比较、移动、设置、重置或操作单词值的操作

文件指令:一种用于比较、移动、设置、重置或操作多字数据数组的操作

特殊的指令:一种独特的可编程操作,旨在支持特定的应用目的。

图1显示了一些指令符号及其相关的位、字、文件和特殊指令名。这些通用指令与大多数应用程序变量兼容。位指令表示可检查或可更改的离散信号。这些信号表示内部变量、输入变量和输出变量的状态。内部信号是由一个电路使能并可由其他电路检查的变量。输入信号通常表示传感器、按钮、选择开关或设备的启用或禁用状态。输出信号通常表示灯、外部继电器或电磁阀的激活或灭活状态。One-shot, Time-On Timer和retention Timer指令是特殊编程指令的例子。一击指令使设计者能够开发触发电路。time - on Timer指令允许控制应用程序在梯级条件为真时积累时间。 Unlike the Time-On Timer, a Retentive Timer holds the accumulated time value when the instruction is disabled. Word instructions are compatible with instructions that compare or manipulate multi-bit instructions. File instructions support the manipulation of contiguous groups of words. Most machine controllers also provide instructions that allow applications to examine and manipulate variables associated with eight-bit bytes, four-bit nibbles, and multi-bit application variables.

当今大多数阶梯逻辑电路采用离散位指令符号,模仿用于表示电气继电器图的指令符号。更重要的是,继电器线圈、锁存继电器线圈、解锁继电器线圈和其他位级电路指令的行为类似于等效的电磁继电器组件。当正常打开触点的物理继电器线圈通电时,电磁铁将触点拉合。当线圈断电时,弹簧迫使触点回到正常打开的位置。逻辑继电器线圈指令为离散信号通电,并在评估的前提条件不改变状态的情况下保持通电。当前置条件转换为假状态时,机器控制器禁用与输出指令相关的信号。继电器线圈和锁存/解锁线圈指令,当使用时,产生以下类型的电路:

  • 设置电路:一种逻辑电路,它检查一个或多个串行或并行条件,使线圈能被分配离散信号
  • 密封电路:一种设置电路,它检查横档的继电器线圈,将离散信号作为一个并行条件,围绕一个或多个其他条件,当电路启用时,这些条件预计会改变状态
  • 锁存器电路:一种在设置信号之前检查各种串行和/或并行条件的逻辑电路
  • 拉开插栓电路:在复位信号之前检查各种串行和/或并行条件的一种逻辑电路设计
  • 定时器电路:一种在启动定时器指令之前检查各种串行和/或并行条件的逻辑电路。

设置电路和密封电路有两个重要的区别。与密封电路不同,设置电路永远不会包括梯级线圈信号作为可检查的先决条件。一个密封电路总是包含至少一个打破密封所需要的条件。设计人员有时将设置电路称为求和电路,因为它将启用线圈分配信号所需的所有串行和并行条件加在一起。设计人员使用设置电路,当他们期望任何条件改变状态时,他们希望保持信号启用,直到其中一个改变。对于密封电路,设计人员只需通过线圈分配信号启用常开触点来改变他们期望的状态。设计师还添加了至少一个其他AND条件,当禁用密封信号时,必须改变其信号状态或变量值。

锁存和解锁存电路设置和重置相同的离散信号。一些应用程序使用锁存/解锁存指令来更改信号的状态,使用字或文件指令将其更改回原始状态。设计人员通常对锁存器和解锁存器线圈进行编程,使其一起工作,使其表现得像机电锁存器继电器。当锁存线圈指令的编程条件为真时,机器控制器激活相关的锁存指令信号。即使电路的先决条件转换为假状态,锁存信号仍保持开着。当使解锁线圈指令生效的电路条件为真时,使能的信号断开或关闭。

各种定时器电路术语有时会引起控制系统设计者的混淆。当梯级条件为真时,使用time - on指令的电路会累积一个经过时间值。当电路为假时,累积值自动重置。一些设计人员使用基于数学的添加或保留计时器指令来积累和保存运行时间信息。这些电路设计需要特殊的文字指令来重置或清除保留的时间信息。无论如何,设计人员通常应用定时器电路来产生以下两种信号调理电路之一:

  • 住电路:一种定时器电路,在使另一个电路检查信号之前,对一个信号的稳态条件进行计时
  • De-bounce电路:一种定时器电路,在使另一个电路对信号的新状态作出反应之前,对一个信号的稳态条件进行计时。

设计人员通常应用驻留和回跳电路来计时传感器输入信号的状态。每种类型的定时器电路的不同之处在于,当累计运行时间值大于预设值时,每种电路都声明什么。驻留电路声明传感器输入信号稳定并准备使用,而回跳电路声明传感器输入信号有资格为下一个被测物体或机构改变状态。

每个机器控制器制造商都可能提供带有不同指令集的编程环境。然而,大多数环境使用位指令,而其他环境则迫使程序员创建特殊的附加指令(AOI)来操作字数据或启用复杂的算法。大多数控制器制造商提供了一种带有标准指令集的环境,允许程序员增强简单继电器应用程序的能力。程序员使用中继指令来控制对象和机制的运动。程序员还使用位指令来启用其他内部和外部进程。在大多数情况下,程序员使用word和文件指令来开发操作数据的辅助应用程序。移位寄存器、阅读器应用程序、get-next和通信驱动程序都是辅助应用程序的例子。

有趣的是,并不是所有的电气继电器电路都匹配等效的基于方程的逻辑电路,逻辑电路并不总是转化为有效的硬连线电路。图2显示了两个没有相应逻辑电路和电路的设置电路示例。顶部设置电路仅在电上有效,而底部设置电路仅在逻辑上有效。顶部电路有四条导电路径。所示的节点连接位置使得不可能用插入的布尔方程在逻辑上表示该电路。因此,程序员无法创建相同的梯形逻辑电路。如果它是可编程的,控制器的运行时环境可能只允许从左到右的三条逻辑路径。从右到左通过触点反馈的真实路径可能是导电的,但它们在逻辑上是无效的。下面的例子有两个继电器线圈显示串联连接。虽然这种类型的串联电路在电气上是不可能的,但一些控制器运行时环境允许执行这种电路配置,作为在电路运行时屏幕或打印输出上显示更多应用程序信号的一种方式。

重要的是,要认识到使用继电器线圈指令来替代逻辑配对的锁存线圈指令集的相关差异。图3显示了一个看似等效的电路示例。当传感器检测到物理定位机构处于返回位置而不是高级位置时,密封电路使线圈指令信号成为可能。在程序的下一次扫描时,输出信号触点为真,从而保持其本身的启用或密封,直到机构移动到高级位置。一旦定位器处于高级位置,常闭指令的信号改变状态以打破密封。锁存电路示例启用锁存线圈信号,机器控制器保持锁存,直到定位器移动回返回位置。这两个示例电路的运作方式似乎是相同的。在正常的动力操作下,它们是这样的。这两种电路的独特之处在于当电源或程序中断时,它们如何重置或保持离散输出或内部信号。对于锁存-解锁存电路示例,当机器断电或程序员将运行时环境从运行模式更改为程序模式时,信号保持在最后的状态。 For the seal circuit, the enabled signal always resets when power goes off or when a run-time mode change occurs.

重要的是要认识到程序员何时需要在锁存-开锁电路上应用密封电路。这通常是大质量机械在相对较长的距离上高速运动时的情况。当机构在运动时发生电源或安全中断时,它会突然停止。当有人按下紧急停止按钮,机器电源关闭时,就会发生这种情况。程序员们认识到,在这种情况下,以较慢的速度重新启动大型机械的移动更为安全。这种做法确保控制应用程序将安全地恢复和完成他们的运动在较慢的速度。这是非常重要的,当一个突然停止的机构通过断电停用传感器滑行,控制应用程序没有检测到传感器输入信号用于减速或停止运动。

许多控制系统设计人员了解为每个站的控制应用配备大量武装触发器的价值。这些信号可以激活相同数量的应用程序触发器。为了产生这些信号,设计者使用多位字寄存器来武装大量的触发器。图4显示了用于武装大量辅助应用触发器的电路示例。当“物体就位触发器”触发时,顶部电路手臂上有16个独特的触发位。当指令将一个整数值32767移动到一个解除武装的字寄存器时,就会发生这种情况。因为二进制中的值32767等于打开16位,所以在执行move指令时设置相同的位数。类似地,底部电路在一个10个连续的16位字文件中填充160位的文件。

电路风格与结构

通常,逻辑电路的外观和风格来自于设计师对强调电路设计效率的感知需求。大多数设计效率只产生较少的独特电路。离散部件制造商必须决定是需要较少的有效电路还是需要大量的结构化电路。从表面上看,许多设计师会说效率总是有利的。无论如何,制造商必须决定独特的电路是否值得为所有控制应用提供全局结构化电路的成本。制造商如何实现标准结构电路?本文的下一节将介绍这个主题,但是这个过程首先要检查最终会影响设计风格的设计效率问题。对于某些应用程序,设计效率很重要,而对于大多数应用程序,效率无关紧要。

电路效率通过提高程序扫描时间和减少程序内存需求来影响机器控制器。即使是今天的现代机器控制器,设计师仍然强调电路的效率。奇怪的是,与过去的控制器相比,今天的控制器执行速度非常快。类似地,新的控制器会分配更多的内存来支持更大的应用程序。那么,为什么设计师继续强调电路的效率呢?一些设计人员说,由于显而易见的原因,每个应用程序使用的内存更少意味着驻留应用程序更多。因此,效率倡导者继续强调使用许多独特的非标准电路的必要性。

应用程序执行效率提高了控制应用程序响应输入信号变化的能力。高效的响应使控制应用程序能够停止在精确位置重复移动对象或机制。不能准确地停止移动物体的低效设计迫使设计人员使用机械停止和/或电气截止电路。机械止动只是放置在运动物体路径上的障碍物。切断电路是外部电路的一种特性,它被激活以迅速使正在引起运动的通电的电气、液压或气动设备失效。此电路属性消除了与可变控制器扫描时间相关的不一致停止效果。对于这些类型的应用,内置的速度效率对电路没有价值,只会阻碍它们实现来自许多供应商的标准电路结构的能力。

内存效率允许设计人员在同一个PLC中添加更多的逻辑。这种效率的作用是减少plc和互连的数量。这降低了与制造过程相关的整体硬件成本。无论如何,与许多不同的非结构化电路相关的隐藏制造成本是什么?具体金额很难确定,因为它通常是与生产停机事件损失相关的成本。每次停机事件都会给制造商造成巨大的损失。即使只是稍微延长一项活动的小延误也可能代价高昂。重要的是要承认,与支持人员与许多非结构化、非标准但有效的应用程序交互相关的延迟总是会延长停机事件的长度。

标准电路和规范的使用减少了控制系统设计者在电路设计上的可变性。换句话说,它可以防止他们走捷径,最终增加设计风格的数量。为了尽量减少许多设计风格对支持人员的负面影响,制造商需要一种控制编程方法的方法。具体来说,他们需要控制影响电路样式的主要变量。单个应用程序的风格与设计人员如何排列、反转和/或组合电路有关。有序排列通常是从需要按设备或设备功能对电路进行分组演变而来的。反向电路的使用来自于需要减少并行电路分支的数量。类似地,组合电路的实践源于将许多较小的电路合并为较少的较大电路的愿望。以下术语描述了设计人员在创建逻辑电路时使用的实践:

负逻辑:一种使用另一电路的所有反向并行状态信号的电路设计

直接替换:一种电路设计,将一个电路中的使能位信号替换为另一个电路中的使能位的所有条件

逆替换:一种电路设计,它用另一电路上相同位的负逻辑等效信号代替位使能信号

Seal-circuit替换:一种电路设计,它用在另一电路上启用相同位的密封电路条件来替换位启用信号。

负逻辑允许设计者消除许多并行电路分支。一般思想是将其他OR条件颠倒,并将它们串联在一个主电路上。当所有条件都关闭时,反向条件自动使能电路的输出信号。当任何反转条件发生时,正常启用的输出信号失效。然后,设计人员编写第二个电路,在启用另一个输出信号之前检查被禁用的信号。图5显示了与等效并行条件逻辑和负逻辑设置电路相关的不同逻辑样式。

当支持人员试图理解、诊断、修复和重新启用生产过程时,逻辑的直观性质是极其重要的。对于大多数人来说,具有倒置条件的负逻辑电路不如并行逻辑电路直观。那么,制造商什么时候应该允许设计师使用负逻辑呢?一些制造商认识到负逻辑如何使支持人员能够更快地检查电路状况并找到根本原因问题。许多制造商将消极和积极逻辑的使用与设计师如何应用逻辑联系起来。如果应用程序启用生产流程,大多数制造商不允许使用负逻辑。如果应用程序只是诊断问题或向系统应用程序发送信息,制造商通常允许使用它。

设计人员使用直接替代技术作为一种方法,以尽量减少使能信号所需的控制电路数量。直接替换允许设计人员将一个电路上发现的常开触点条件替换为用于启用该信号的所有电路条件。图6显示了一个直接替换示例。尽管组合电路仍然是直观的,但这并不意味着制造商应该总是允许设计师使用这种技术。在许多情况下,这种类型的替换只会导致设计将条件多次复制到许多不同的电路。这种情况只会在支持人员需要进行更改并且无法更新所有实例时造成混乱。未能更新所有实例将导致机器行为不正确,从而导致更多的生产损失。

设计人员使用逆替换技术作为另一种方法,以尽量减少使能信号所需的控制电路数量。反向替换允许设计人员将一个电路上发现的常闭触点条件替换为用于启用该信号的所有反向电路条件。

图7显示了一个逆替换示例。与直接替代一样,这种方法的不规范使用可能会使支持人员感到困惑。这是逆向替换的结果,产生了不那么直观的电路。例如,如果替换信号的电路只有串行或并行条件,这种技术就会产生某种直观的电路。然而,如果电路同时包含串行和并行条件,这种技术会产生不直观的电路。因此,制造商需要向设计人员提供规则,以控制何时可以接受使用逆向替换技术。

使用直接替换和反向替换技术的设计人员也倾向于使用密封电路替换技术。这种技术类似于直接代换,但代换条件包括密封条件。因此,密封信号和其他条件需要改变,以确保最终电路将正确执行。

图8显示了一个替代密封电路的例子。所示的替换电路可以工作,因为两个电路中都存在断开密封的“CLEAR”条件。另一个关键特性是,当机器不在任何模式时,电路设计者都知道使自动(AUTO)和手动(MAN)模式信号生效的条件。换句话说,在任何一个模式开启之前,两个模式都必须关闭。支持人员并不总是随时知道这些设计信息。因此,他们必须依赖最初的电路设计师来理解这些类型的规则。这种情况使得支持人员很难修改替换的密封电路,因为他们与其他电路有偶然的信号连接。在制造商能够控制密封电路替代技术之前,他们必须已经控制了命令控制电路的基本集合。下一节将介绍命令控制电路的基本原理。

辅助触发电路

设计师设计了辅助触发电路,以实现他们通常所说的“一击”。one-shot是指在一次完整的程序扫描中保持常亮的信号。这使得所有控制器驻留应用程序都可以检查已启用的触发信号。有许多方法可以设计辅助触发电路来实现一次性信号。前面描述的进入、就位和退出触发器是运动检测电路如何实现一次性信号的示例。机器控制器制造商为控制器配备了特殊的一次性指令,使控制系统设计人员更容易制造触发器。控制系统设计者还设计了许多巧妙的电路来实现一次性信号。设计人员如何开发辅助触发电路影响机器控制应用的可靠性和混沌性。

早期的机器控制器只是简单地配备了一组基本的编程继电器电路指令。这种情况迫使控制系统设计者开发自己的触发电路。当用户想要一种更简单的方法来创建触发信号时,一些控制器制造商对用户社区的抱怨做出了反应。一些控制器制造商的反应是在他们的位级指令套件中添加一个一次性指令。这种反应有助于实现结构化的机器控制器程序,还是增强了程序的混乱性质?要回答这个问题,战略家必须研究各种触发电路是如何工作的,以及设计师是如何应用一次性指令的。以下定义描述了产生一次性信号的不同触发电路:

指令触发电路:一种触发电路设计,使用一次指令来确保信号在一次程序扫描中保持常亮

线圈阻塞触发电路:一种触发电路设计,使用离散线圈指令确保信号在一次程序扫描中保持常亮

闭锁保护触发电路:一种触发电路设计,使用锁存和解锁存阻塞信号以确保信号在一次程序扫描中保持打开

动臂触发电路:一种触发电路设计,使用一个运动使手臂信号,以确保一个信号保持在一个程序扫描

无信号一次性电路:一种触发电路,它不产生可检查的信号,否则在一次程序扫描时该信号将保持打开状态。

图9显示了一个基于指令和线圈阻塞的触发电路。这两个例子都假设钳将从打开位置移动到关闭位置。这意味着当钳位关闭传感器激活时,钳位打开传感器输入信号将被关闭。闭合钳位使基于指令的电路为一次程序扫描激活钳闭合触发器。线圈阻塞触发电路使用钳位关闭阻塞信号的禁用状态,在钳位关闭的时刻激活钳位关闭触发器。激活触发器后,线圈电路启用内部钳位关闭阻塞信号。当控制器在下一次程序扫描上重新执行相同的档位时,启用的阻塞信号使钳位关闭触发器失效。这意味着钳位关闭触发信号保持为程序的一次扫描。

图9显示了两个电路,当任何可检查的电路条件在状态之间切换时,允许触发信号多次触发。这是当机器控制器经历电源故障或钳位闭合传感器停用和重新启动时发生的情况。显而易见的问题是,重复启用触发器会导致任何应用程序问题吗?要回答这个问题,设计人员必须了解电路设计人员如何确保额外的触发器不会对应用程序产生负面影响。如果有可能产生问题,设计师可以改进简单的触发电路,以避免重新启动触发信号。大多数改进包括用锁存信号替换线圈阻塞信号。在大多数情况下,当锁存指令设置一个信号开启时,需要一个解锁存指令来关闭它。

图10显示了设计人员如何使用锁存和解锁存电路来防止意外重复启用触发器。这种保护可以提高触发器的可靠性。当电路激活夹紧关闭触发器时,它立即锁定臂夹紧关闭阻塞信号。这种技术确保在夹紧器返回其打开位置之前,触发器不能重新启用。

虽然锁存保护触发电路设计适用于大多数程序,但它们仍然有能力重新启用同一部件的触发器。这种情况发生在有人故意移动一个机制来解锁块信号时。根据实际的应用程序,可能不需要重新启用触发器。如果重新触发触发器不会引起任何不良影响,则这些电路不会产生应用程序异常。然而,如果重复触发会导致异常,设计师通常会让应用程序有可能有人手动移动机制。

图11显示了一个非常可靠的闭锁保护触发电路的替代方案。如果没有可选的并行分支,基本电路不允许重新使能触发器。电路的先决条件迫使设计依赖于运动检测触发器来重新启用解除武装的信号。如果需要重复触发触发器,程序员只需包含OR分支,以提供另一种重新配置触发器的方法。基础电路设计确保辅助触发器只会触发一次每个部分。

与线圈阻塞电路相比,使用基于指令的电路可能有一些微小的技术优势。任何好处都与减少控制应用程序的混乱性质无关。闭锁保护电路提供了一些额外的虚假触发保护,而无需使用一次性指令。运动臂电路确保最高程度的可靠性。很明显,基于指令的方法只是为程序员提供了一种生成线圈阻塞触发器的冗余方法。因此,很容易得出结论,机器控制器制造商的反应是在他们的位级指令套件中添加一个一次性指令,增加了设计师任意使用它们来产生不太可靠的触发器的机会。因此,在控制应用程序中使用它们只会增加控制应用程序的混乱性质。

无信号的一次性电路不会产生其他电路可以检查的触发信号。这些电路通常锁住或解锁住一个离散信号。有些电路只是在前提条件正确时更改或移动数据。由于缺乏可检查的信号,其他设计人员、支持人员或控制集成商很难发现所使用的触发条件。在大多数情况下,无信号的一次性电路增加了人们创建额外触发电路以适应他们自己的应用的可能性。它们不能再现相同的电路行为,这就保证了应用程序的混乱性质的增加。

- - - - - -Daniel B. Cardinal毕业于密歇根理工大学,是一名电气工程师。他拥有超过30年的控制系统设计经验,并担任控制集成商。在20世纪80年代早期,他是欧洲最大的机床供应商之一的控制主管。后来,他是Control Systems Associates Inc.的共同所有人,该公司专门从事集成系统设计。卡迪纳先生最近出版了《MES成功的基石》一书,该书描述了支持制造执行系统所需的控制设计和系统基础;由数字项目经理Joy Chang编辑,控制工程jchang@cfemedia.com

关键概念:

  • 在有效地设计出能够有效地与控制应用程序交互的以支持为中心的设计之前,工程师必须首先对控制应用程序的基本原理有基本的了解。
  • PLC程序的行为不像大多数计算机应用程序使用的脚本语言程序。PLC操作系统强调对所有代码行进行连续和高速扫描。
  • 每个机器控制器制造商都可能提供带有不同指令集的编程环境。

考虑一下这个

控制器制造商是否通过向程序员提供一次性指令来正确地响应客户的需求?

在线额外

请参阅下面链接的Daniel Cardinal本系列的第1、2和3部分。