梯形图逻辑实战【PLC编程】

在前一个教程PLC编程入门-梯形图中, 我们学习了梯形图的基础知识以及一些基本的指令。在今天这个教程里,我们将学习如何采用梯形逻辑解决实际问题, 以及如何进行PLC编程,同时我们还会学习一些新的梯形逻辑指令。

让我们从上一个教程中的锁存(latch)指令继续。在PLC编程中,锁存并不是保持线圈状态的唯一方法。

1、置位/复位指令

set/reset指令在AB的术语中被称为latch/unlatch,其作用就是让你不使用触点就实现锁存功能。因此你可以在 梯形逻辑中只使用一个指令就设置输出,然后在另一个地方复位线圈。

set或latch指令的符号如下:

set latch

reset或unlatch指令的符号如下:

unset unlatch

set/reset指令包含两个线圈,但是控制同一个地址位。当你给set线圈一个脉冲时,该地址位将置位, 与普通线圈的区别在于,set线圈将一直保持,直到使用reset线圈复位。

当你在构建包含上千点位的大型PLC程序时,或者连接到一个SCADA系统时,确保你了解在哪里置位, 又在哪里复位。

1.1 置位或复位的优先级

使用两个线圈来实现set/reset功能带来了一个新问题:

哪个线圈的优先级高?

当set和reset的条件都是true时,线圈的状态最终是什么?

PLC最后执行的哪个,结果就是哪个

如果你在一个网络中置位/set了线圈,然后在下面的网络中复位/reset,那么线圈 将复位。记住,PLC是从上到下依次执行梯形逻辑指令的。

1.2 置位/复位函数块

实现set/reset功能的另一种方式是使用函数块,函数块不仅可以用于梯形逻辑,也可以用于 函数块图和结构化文本代码中。

  • SR函数块

第一个函数块被称为set优先的单稳模块,或者SR或set/reset函数块。set具有最高的优先级,意思是当set和reset的条件同时为真时,输出将置位。

SR函数块的符号如下:

set reset function block

它有两个输入:一个用于置位/set,一个用于复位/reset。在另一侧则有一个输出。

  • RS函数块

另一个函数块被称为RS或reset优先的单稳模块。基本上它和SR的工作原理一样,区别在于 reset的优先级最高:

reset set function block

2、梯形图逻辑实战

我们已经学习了一些梯形图的基础知识和常用指令,是时候开始实现一些真正的任务了。

因为要成为一个优秀的PLC梯形图程序员,只了解指令是不够的,必须要能够使用梯形逻辑 来解决实际问题。现在让我们看一下如何使用梯形图开发PLC程序来解决现实世界的问题。

当我在使用梯形逻辑解决问题时,喜欢思考的一件事就是从条件的角度去思考,这通常 被成为组合式逻辑,你可能也听说过这个,或者至少了解逻辑门吧 —— 与、或、非等等。

我要给出的第一个实例是互锁逻辑的实现。因为使用简单的指令你就可以实现互锁功能。

在很多PLC程序中都会用到互锁,因为它可以避免不相容的情况同时激活。一个经典的案例 就是star/delta电机的控制。如果你在用PLC控制一个star/delta电机,你必须保证当delta 继电器的输出激活时,star继电器的输出一定不能激活。

2.1 start/stop逻辑示例

让我们看一下两个电机的互锁示例,要求在同一时刻只有一个电机可以运转。每个电机都有 一个start按钮和stop按钮,分别用来启动和停止电机。

start stop 2 motors

电机的启动和停止可以使用前面介绍的set/reset指令实现。

每个电机的启动和停止按钮的第一个条件当然是电机启动或停止的条件。由于电机可以处于 两种状态之一,我们需要检查这两种状态:

如果按下启动按钮 AND 没有按下停止按钮 那么激活电机

如果按下停止按钮 那么停止电机

由于电机只可能处于这两种状态,我们只需要检查电机激活的条件。因为如果这些条件都不满足, 那么电机将不会激活。

我们也可以添加锁定功能:

如果按下启动按钮 OR 电机处于运转状态 AND 没有按下停止按钮 那么激活电机

需要注意的一点是,我们已经将功能分解为逻辑实现:

start stop ladder logic

你可以看到,这些逻辑关系可以使用梯形逻辑很轻松地实现。

2.2 使用梯形图实现与/AND、或/OR逻辑

启动按钮和电机状态的逻辑关系是或/OR,当启动按钮或电机状态这两个条件之一为真时, 电机都将被激活。

在梯形逻辑中,或/OR逻辑使用两个并联的指令来实现:

or-gate-ladder-logic-1.png

or gate ladder logic

另一方面,要让电机保持激活,就不能按下停止按钮。但是启动按钮和电机状态,和停止按钮的 关系是与/AND,因为要保持电机激活,就要求满足启动条件同时不能按下停止按钮。

与/AND逻辑使用指令的串联来实现:

and gate ladder logic

梯形图逻辑的一个优势就是你可以图形化的实现逻辑。因为如果你在每个网络中沿着线从左向右看, 就可以了解指令间的逻辑关系。

或/OR逻辑总是有两个选项,因此会有两条线,与/AND只有一个选项,因此只有一条线。

2.3 使用梯形图实现非/NOT逻辑

上面示例中还有一种逻辑关系没有介绍。要保持电机激活,就不能按下停止按钮,为此我们需要使用 非/NOT逻辑。

非/NOT逻辑可以使用反触点来实现:

not gate ladder logic

下面我们使用一个常规的闭合继电器来表示停止按钮,因此就实现了逻辑的翻转:

start stop motor ld instructions

2.4 使用梯形图实现互锁逻辑

当然这部分梯形逻辑只是一个电机的控制逻辑。在我们的实例中包含了两个电机,因此完整的 梯形图逻辑看起来是这样:

motor-control-2-motors-ladder-logic

现在我们至少还需要实现两个电机的互锁,互锁也可以视为逻辑。

实际上,如果你把互锁视为逻辑,那么就很容易实现它,因为电机互锁只需要一个额外的条件:另一个电机处于停止状态。 因此如果电机1#要激活,电机2#就不能激活,反之亦然:

如果按下1#电机启动按钮 OR 1#电机运行中 AND 没有按下1#电机的停止按钮 AND 2#电机没有运行 那么激活1#电机

如果按下2#电机启动按钮 OR 2#电机运行中 AND 没有按下2#电机的停止按钮 AND 1#电机没有运行 那么激活2#电机

只需要在梯形图中增加一个反向继电器:

motor-control-interlocking-ladder-logic

这个简单的示例展示了如何将一个现实的问题分解为逻辑步骤,然后用梯形图编制PLC程序来解决这个问题。但是这些逻辑关系不仅仅 用于常规的开闭指令,它们也可以用于很多不同的PLC指令,例如计数器和定时器。

2.5 梯形图逻辑实现练习题:互锁的实现

这个教程的核心就在于,你可以学会如何实现梯形逻辑。现在是做练习的时候了:

  • 功能需求

3个电机的启动/停止控制,最多只有2个电机可以同时运行。例如如果2#电机和3#电机在运行,那么就不能 启动1#电机。

  • 输入

ex 1 input

  • 输出

ex 1 output

希望你喜欢这个练习,并从中学到一些东西。

这个练习引入了另一个问题,这将引导我们学习下一个梯形逻辑指令。问题不在于梯形逻辑本身, 而是由于连接到输入的按钮引起的。

3、信号沿单触发指令

通常你希望操作员只会按一下启动按钮或者停止按钮 - 很短暂地按一下。但是现实情况是, 操作员会按住按钮很长时间,另一种情况是按钮按下后被卡住了,这种常见的硬件故障也会 影响PLC程序的运行。

如果某个电机的停止按钮被卡住,那么你就无法再启动这个电机了。事实上,当你在PLC上使用 暂态按钮时,这是一个经常遇到的问题。

不过别担心,我们有办法解决这个问题,幸运的是有针对这个问题的现成的梯形逻辑指令, 单触发指令。

3.1 上升沿检测

现在该学习新的指令了。我将介绍第一种类型的单触发指令 - 上升沿检测指令,R_TRIG, 在某些平台上,例如AB,这个指令被称为OSR - 上升沿单触发

正如名称所表达的,这些梯形逻辑指令检查一个数字信号的上升沿,这意味着他们将只检查 数字信号中从0到1的变化。

这是一个数字信号上升沿的图示:

positive-rising-edge

信号的长度是无关紧要的,因为我们只检查信号状态中发生的变化。因此,这些用来检测上升沿的 梯形逻辑指令完美匹配启动按钮和停止按钮的使用需求。

  • 上升沿触点与线圈

上升沿检测继电器看起来与常开触点类似,实际上它使用相同的符号,只是多了一个P在中间:

positive-transition-sensing-contact-ladder-diagram-symbol-300x300

上升沿触点的功能也有所不同,因为这个指令不是检查某个点位的状态,而是检查该点位状态 的变化,或者更确切地说是一个正向的从0到1的变化。

现在,由于这个指令仅仅查看点位的状态变化,因此即使按钮卡住,由于卡住后状态不再变化, 也就不会在后续的扫描周期中持续激活。这也是这些指令被成为单触发指令的原因。

positive-edge-animation-plc-ladder-logic

正如你看到的,这个指令只会在正向变化发生时给出一个脉冲。

最后,你也会看到上升沿检测线圈:

positive-transition-sensing-coil-ladder-diagram-symbol-300x300

它和上升沿触点功能一样,只是它是线圈而已。

  • R_TRIG函数块

你也可以使用一个函数块来实现上升沿检测,这个函数块被成为R_TRIG,是一个标准的PLC指令。

3.2 下降沿检测

和上升沿一样,也有用来检测下降沿的指令,或者成为F_TRIG。AB称之为下降沿单触发或OSF指令。

类似的,下降沿单触发检查信号状态中从1到0的变化,如下图所示:

negative-falling-edge

下降沿检测非常有用,例如可以用来检测设备的关闭。

  • 下降沿触点和线圈

下降沿指令包括下降沿触点和下降沿线圈。它们被称为单触发指令是因为只有在状态从1迁移到0时 才会激活。

negative-transition-sensing-contact-ladder-diagram-symbol-300x300

取决于你要在梯形逻辑中检测下降沿的位置,可以使用触点或线圈:

negative-transition-sensing-coil-ladder-diagram-symbol-300x300

下降沿指令的一个典型应用场景就是,你需要检测一个设备的停止,以便启动另一个设备。例如一个加热设备和两个风扇, 当一个加热设备运行时需要同时运行某个风扇,但是当加热设备关闭后,就需要立即运行第二个风扇以便加速冷却。

你可以在梯形逻辑练习3中尝试解决这个问题,看看是否需要使用下降沿指令。

  • F_TRIG函数块

你也可以使用一个函数块来实现下降沿检测,这个函数块被成为F_TRIG,是一个标准的PLC指令。

又学习了不少只是,是时候做练习了。在我的观点中,学习最好的方法就是解决问题。在这些 练习中你将使用上升沿和下降沿检测指令。但是首先要记住单触发指令仅在一个扫描周期有效。 如果你希望用它来启动需要长时间运行的东西,就需要锁定或使用set/reset指令。 .

3.3 梯形图逻辑实现练习题:上升沿检测

  • 功能需求

使用一个启动按钮和停止按钮来控制电机的启停,但是要确保只在上升沿启动或停止电机。

  • 输入

ex 2 input

  • 输出

ex 2 output

3.4 梯形图逻辑实现练习题:下降沿检测

  • 功能需求

使用一个启动和停止按钮来控制一个加热装置和一个风扇。当加热装置关闭后,启动第二个风扇。 当加热装置和第一个风扇都打开后,立刻关闭第二个风扇。

  • 输入

ex 3 input

  • 输出

ex 3 output


原文: Ladder Logic Tutorial – Part 2: Building Logic

汇智网翻译整理,转载请标明出处。