在前一个教程PLC编程入门-梯形图中,咱们学习了梯形图的基础知识以及一些基本的指令。在今天这个教程里,咱们将学习如何采用梯形逻辑解决实际问题,以及如何进行PLC编程,同时咱们还会学习一些新的梯形逻辑指令。程序员
让咱们从上一个教程中的锁存(latch)指令继续。在PLC编程中,锁存并非保持线圈状态的惟一方法。编程
要快速入门软件开发,土建汇智网的在线互动编程课程。网络
set/reset指令在AB的术语中被称为latch/unlatch,其做用就是让你不使用触点就实现锁存功能。所以你能够在梯形逻辑中只使用一个指令就设置输出,而后在另外一个地方复位线圈。函数
set或latch指令的符号以下:学习
reset或unlatch指令的符号以下:3d
set/reset指令包含两个线圈,可是控制同一个地址位。当你给set线圈一个脉冲时,该地址位将置位,与普通线圈的区别在于,set线圈将一直保持,直到使用reset线圈复位。blog
当你在构建包含上千点位的大型PLC程序时,或者链接到一个SCADA系统时,确保你了解在哪里置位,又在哪里复位。教程
使用两个线圈来实现set/reset功能带来了一个新问题:开发
哪一个线圈的优先级高?get
当set和reset的条件都是true时,线圈的状态最终是什么?
PLC最后执行的哪一个,结果就是哪一个
若是你在一个网络中置位/set了线圈,而后在下面的网络中复位/reset,那么线圈将复位。记住,PLC是从上到下依次执行梯形逻辑指令的。
实现set/reset功能的另外一种方式是使用函数块,函数块不只能够用于梯形逻辑,也能够用于函数块图和结构化文本代码中。
第一个函数块被称为set优先的单稳模块,或者SR或set/reset函数块。set具备最高的优先级,意思是当set和reset的条件同时为真时,输出将置位。
SR函数块的符号以下:
它有两个输入:一个用于置位/set,一个用于复位/reset。在另外一侧则有一个输出。
另外一个函数块被称为RS或reset优先的单稳模块。基本上它和SR的工做原理同样,区别在于reset的优先级最高:
咱们已经学习了一些梯形图的基础知识和经常使用指令,是时候开始实现一些真正的任务了。
由于要成为一个优秀的PLC梯形图程序员,只了解指令是不够的,必需要可以使用梯形逻辑来解决实际问题。如今让咱们看一下如何使用梯形图开发PLC程序来解决现实世界的问题。
当我在使用梯形逻辑解决问题时,喜欢思考的一件事就是从条件的角度去思考,这一般被成为组合式逻辑,你可能也据说过这个,或者至少了解逻辑门吧 —— 与、或、非等等。
我要给出的第一个实例是互锁逻辑的实现。由于使用简单的指令你就能够实现互锁功能。
在不少PLC程序中都会用到互锁,由于它能够避免不相容的状况同时激活。一个经典的案例就是star/delta电机的控制。若是你在用PLC控制一个star/delta电机,你必须保证当delta继电器的输出激活时,star继电器的输出必定不能激活。
让咱们看一下两个电机的互锁示例,要求在同一时刻只有一个电机能够运转。每一个电机都有一个start按钮和stop按钮,分别用来启动和中止电机。
电机的启动和中止可使用前面介绍的set/reset指令实现。
每一个电机的启动和中止按钮的第一个条件固然是电机启动或中止的条件。因为电机能够处于两种状态之一,咱们须要检查这两种状态:
若是按下启动按钮 AND 没有按下中止按钮 那么激活电机
若是按下中止按钮 那么中止电机
因为电机只可能处于这两种状态,咱们只须要检查电机激活的条件。由于若是这些条件都不知足,那么电机将不会激活。
咱们也能够添加锁定功能:
若是按下启动按钮 OR 电机处于运转状态 AND 没有按下中止按钮 那么激活电机
须要注意的一点是,咱们已经将功能分解为逻辑实现:
你能够看到,这些逻辑关系可使用梯形逻辑很轻松地实现。
启动按钮和电机状态的逻辑关系是或/OR,当启动按钮或电机状态这两个条件之一为真时,电机都将被激活。
在梯形逻辑中,或/OR逻辑使用两个并联的指令来实现:
or-gate-ladder-logic-1.png
另外一方面,要让电机保持激活,就不能按下中止按钮。可是启动按钮和电机状态,和中止按钮的 关系是与/AND,由于要保持电机激活,就要求知足启动条件同时不能按下中止按钮。
与/AND逻辑使用指令的串联来实现:
梯形图逻辑的一个优点就是你能够图形化的实现逻辑。由于若是你在每一个网络中沿着线从左向右看,就能够了解指令间的逻辑关系。
或/OR逻辑老是有两个选项,所以会有两条线,与/AND只有一个选项,所以只有一条线。
上面示例中还有一种逻辑关系没有介绍。要保持电机激活,就不能按下中止按钮,为此咱们须要使用非/NOT逻辑。
非/NOT逻辑可使用反触点来实现:
下面咱们使用一个常规的闭合继电器来表示中止按钮,所以就实现了逻辑的翻转:
固然这部分梯形逻辑只是一个电机的控制逻辑。在咱们的实例中包含了两个电机,所以完整的 梯形图逻辑看起来是这样:
如今咱们至少还须要实现两个电机的互锁,互锁也能够视为逻辑。
实际上,若是你把互锁视为逻辑,那么就很容易实现它,由于电机互锁只须要一个额外的条件:另外一个电机处于中止状态。 所以若是电机1#要激活,电机2#就不能激活,反之亦然:
若是按下1#电机启动按钮 OR 1#电机运行中 AND 没有按下1#电机的中止按钮 AND 2#电机没有运行 那么激活1#电机
若是按下2#电机启动按钮 OR 2#电机运行中 AND 没有按下2#电机的中止按钮 AND 1#电机没有运行 那么激活2#电机
只须要在梯形图中增长一个反向继电器:
这个简单的示例展现了如何将一个现实的问题分解为逻辑步骤,而后用梯形图编制PLC程序来解决这个问题。可是这些逻辑关系不只仅 用于常规的开闭指令,它们也能够用于不少不一样的PLC指令,例如计数器和定时器。
这个教程的核心就在于,你能够学会如何实现梯形逻辑。如今是作练习的时候了:
3个电机的启动/中止控制,最多只有2个电机能够同时运行。例如若是2#电机和3#电机在运行,那么就不能 启动1#电机。
但愿你喜欢这个练习,并从中学到一些东西。
这个练习引入了另外一个问题,这将引导咱们学习下一个梯形逻辑指令。问题不在于梯形逻辑自己, 而是因为链接到输入的按钮引发的。
一般你但愿操做员只会按一下启动按钮或者中止按钮 - 很短暂地按一下。可是现实状况是, 操做员会按住按钮很长时间,另外一种状况是按钮按下后被卡住了,这种常见的硬件故障也会 影响PLC程序的运行。
若是某个电机的中止按钮被卡住,那么你就没法再启动这个电机了。事实上,当你在PLC上使用 暂态按钮时,这是一个常常遇到的问题。
不过别担忧,咱们有办法解决这个问题,幸运的是有针对这个问题的现成的梯形逻辑指令, 单触发指令。
如今该学习新的指令了。我将介绍第一种类型的单触发指令 - 上升沿检测指令,R_TRIG, 在某些平台上,例如AB,这个指令被称为OSR - 上升沿单触发
正如名称所表达的,这些梯形逻辑指令检查一个数字信号的上升沿,这意味着他们将只检查 数字信号中从0到1的变化。
这是一个数字信号上升沿的图示:
信号的长度是可有可无的,由于咱们只检查信号状态中发生的变化。所以,这些用来检测上升沿的 梯形逻辑指令完美匹配启动按钮和中止按钮的使用需求。
上升沿检测继电器看起来与常开触点相似,实际上它使用相同的符号,只是多了一个P在中间:
上升沿触点的功能也有所不一样,由于这个指令不是检查某个点位的状态,而是检查该点位状态 的变化,或者更确切地说是一个正向的从0到1的变化。
如今,因为这个指令仅仅查看点位的状态变化,所以即便按钮卡住,因为卡住后状态再也不变化, 也就不会在后续的扫描周期中持续激活。这也是这些指令被成为单触发指令的缘由。
正如你看到的,这个指令只会在正向变化发生时给出一个脉冲。
最后,你也会看到上升沿检测线圈:
它和上升沿触点功能同样,只是它是线圈而已。
你也可使用一个函数块来实现上升沿检测,这个函数块被成为R_TRIG,是一个标准的PLC指令。
和上升沿同样,也有用来检测降低沿的指令,或者成为F_TRIG。AB称之为降低沿单触发或OSF指令。
相似的,降低沿单触发检查信号状态中从1到0的变化,以下图所示:
降低沿检测很是有用,例如能够用来检测设备的关闭。
降低沿指令包括降低沿触点和降低沿线圈。它们被称为单触发指令是由于只有在状态从1迁移到0时 才会激活。
取决于你要在梯形逻辑中检测降低沿的位置,可使用触点或线圈:
降低沿指令的一个典型应用场景就是,你须要检测一个设备的中止,以便启动另外一个设备。例如一个加热设备和两个风扇, 当一个加热设备运行时须要同时运行某个风扇,可是当加热设备关闭后,就须要当即运行第二个风扇以便加速冷却。
你能够在梯形逻辑练习3中尝试解决这个问题,看看是否须要使用降低沿指令。
你也可使用一个函数块来实现降低沿检测,这个函数块被成为F_TRIG,是一个标准的PLC指令。
又学习了很多只是,是时候作练习了。在个人观点中,学习最好的方法就是解决问题。在这些 练习中你将使用上升沿和降低沿检测指令。可是首先要记住单触发指令仅在一个扫描周期有效。 若是你但愿用它来启动须要长时间运行的东西,就须要锁定或使用set/reset指令。 .
使用一个启动按钮和中止按钮来控制电机的启停,可是要确保只在上升沿启动或中止电机。
使用一个启动和中止按钮来控制一个加热装置和一个风扇。当加热装置关闭后,启动第二个风扇。 当加热装置和第一个风扇都打开后,马上关闭第二个风扇。
原文: 梯形图逻辑实战 - 汇智网