工业控制
plc编程入门梯形图
梯形图是一种PLC编程语言,也被称为梯形逻辑(Ladder Logic)。之所以称为梯形图,是因为这种程序由一条条水平线构成,看起来很像梯子。
梯形图是为电气工程师发明的,它是一种图形化的编程语言,这意味着编程的过程不是采用文本,而是组合各种不同的图形符号,由于目标用户是电气工程师,因此采用的符号非常类似于电路符号,以便于电气工程师理解。
梯形图主要用于位逻辑操作,其规范有PLCOpen负责制定,因此梯形图是标准化的PLC编程语言,该标准为IEC 61131-3。
梯形图基础
创建梯形图时,你首先看到的就是两条竖线,就是在这两条竖线之间进行梯形图的编制,其中每一条水平线被称为一个Rung(横线):
梯形逻辑符号就放置在这些水平线上,正如你在上图中看到的,我在每一个水平线上标记了数字,以便于理解PLC是如何执行梯形逻辑的。你可能听说过PLC扫描时间或扫描周期,简单地说,PLC首先扫描其输入,然后执行程序,最后设置输出。
但是PLC如何执行我们的梯形逻辑?
一次一条水平线。
这可能是梯形逻辑的最重要的一条规则:PLC一次只能执行一条水平线,然后才是下一条。实际上,PLC只能一次执行一个逻辑符号。
编写梯形逻辑
梯形逻辑中的每个符号都是一个指令,初看起来这相当令人困惑。但是别担心,我将用简单的例子加以解释。让我给你一个简单的实例,在这个例子当中将引入两个梯形逻辑符号。
那么,这些符号或指令到底是什么?
它们是基本的逻辑指令,让你可以创建一小段逻辑,也就是你的PLC程序。如果你仔细看下面的示例,可以看到两个指令(符号):
闭路检查指令
第一个指令被称为闭路检查,指令的符号看起来是这样:
这是一个条件指令,意思是说这个指令用来检查某个条件是否满足,例如检查某个数据位是否处于ON的状态。
闭路检查指令用来检查某个地址的特定位,在上图中指的是一个数字输入的特定位,它也可以是内存位,甚至是输出位。
闭路检查指令也被称为常开指令,基本上它类似于电路中的常开触点,因此可以对应于一个点动开关。
需要指出的是,每个闭路检查指令必须要设置PLC中的一个地址。
输入和输出都是PLC中的内存点位。在上面的示例中,闭路判断指令设置地址I0.0作为条件,这个地址属于PLC的第一个输入。
其工作原理如下:
当PLC扫描周期开始,PLC将首先检查所有输入的状态,然后将输入状态(0或1)写入内存中,如果输入是LOW,那么对应的内存位置位0,如果输入是HIGH,则对应的内存位置为1.
输出线圈指令
每个指令本身在PLC内存中也有个位置,PLC会将指令的结果存入。要了解PLC使用结果做什么,让我们看下一个指令:
输出线圈指令用来打开或关闭一个数据位。
正如你看到的,该符号位于水平线的右侧,意思是(同一水平线上)之前的指令作为该指令的条件。在我们的示例中,之前的指令就是闭路检查指令。
让我们检查下该指令的最终结果,来了解其工作过程:
PLC 扫描 | 输入 -》 I0 字节
程序执行 | I0.0 -》 Xic结果
在上面的动画中,你会看到PLC首先扫描所有的输入,并将输入状态存入内存。一个内存字节是彼此相邻的8位。
一旦PLC保存了所有输入的状态,程序将开始运行。第一个要执行的指令是闭路检查指令,该指令的结果与内存位状态一致 —— 这也是该指令被称为常开指令的原因 —— 在正常状态(内存位为0),触点将保持常开,结果将为0,但是如果内存位为1,触点将闭合,结果也变为1。
最后,让我们看这条线的输出:
XiC结果 -》 输出线圈
输出线圈 -》 输出字节
现在,输出线圈指令使用了前序指令的结果作为条件。这被称为RLO(逻辑操作结果)。逻辑操作结果保存在PLC内存中的特定位置。在西门子S7系列PLC中,这个位置被称为状态字。
在PLC术语中,一个WORD是16位,或2个字节。
输出线圈指令很简单,它只是将其结果设置为与条件相同的值。
在PLC中所有的数字输出也映射到内存地址。我们将其称为输出位,因此地址Q0对应Q0.0 - Q0.7.输出线圈指令的结果将被写入内存位Q0.0。
当PLC执行完整个程序,它将设置输出。每个输出被设置为与输出内存位一致的状态。
扫描周期这个概念非常重要,当你在编制梯形逻辑时一定要记住。否则你的程序可能会有奇怪的行为。我们将在下一个示例中展示这一点,同时引入3个新的梯形逻辑指令。
输出锁存
在前面的示例中,我们学会了如何读取数字输入的状态,并将数字输出设置为同样的状态。需要指出数字输入是一个暂态按钮,因为它内部有个弹簧,这意味着按钮只有在你一直按下时才会保持激活。
上面的梯形图可以正常工作,不过你可能注意到,只有输入激活时输出才会激活。因此你不得不用手指一直按住按钮,才能让输出保持激活。但是想一下,如果输出控制的是一个通风系统里的风机,那么要求操作员一直按着按钮就很不合理了。我们需要一个办法来保持输出激活,即使操作员已经释放了按钮。
在梯形逻辑中,有两种办法实现这一点:
如果你熟悉电路,就会发现这很类似,这杯称为锁存(Latching)或者自我保持(self holding)。
这个名称揭示了其工作原理:线圈简单的维持自己前一个扫描周期的状态。让我们单步分析一下:
当PLC第一次运行这个梯形逻辑程序时(按下按钮时),输出将被激活,就像前一个例子一样。有趣的事情发生在后续运行逻辑的时候。因为这是一个暂态按钮,它不会一直激活。依赖于PLC程序的运行总时长,按钮可能在第二次、第三次或第四次运行时不再激活。
让我们进入按钮释放之后的第一个扫描周期。
输出还处于激活状态,因为上一个扫描周期按钮被按下。这时PLC将再次读取输入并存入对应的内存位。内存位I0.0”这次将存入“0”。因此I0.0的闭路判断指令结果为false或“0”。
但是你可以看到,还有另一个并行的闭路判断指令,不过该指令的条件是输出内存位,因此其结果为true或“1”,因为这是输出还处于激活状态。只要输出内存位是“1”,输出就会激活,它就像自己的条件一样。
自保持指令与其他指令并联的原因在于构造一个OR条件,在这个示例当中,I0.0或Q0.0中的一个为true都会激活输出。
开路检查指令
你刚学习了如何编制一个有用的PLC梯形图程序。一个激活输出的按钮。在我们的示例中,这个可能是连接到一个风机的触点,输出可以自保持。
但是这个程序有个问题,怎么关掉风机?
我们希望能够再次关掉风机。最简单的方法是添加一个停机按钮,该按钮将连接到PLC的第二个输入,因此其内存地址为I0.1。
问题是,我们为停机按钮使用什么指令?更重要的,我们应当将其放在梯形图的哪里?
第一个问题的答案是另一个梯形逻辑指令:开路检查指令,它看起来如下:
这个指令和闭路检查指令的工作方式恰恰相反,其结果是条件的反转。这意味着,如果条件
为“0”,那么结果为“1”,反之亦然。
如果你考虑一下,就会发现这恰恰就是我们希望停机按钮做的事情。要关闭输出线圈,我们必须给出条件“0”。
现在是第二个问题,在哪里放置这个指令?
我们需要将其放在自锁指令之后,或者说,串联起来。否则当停机按钮按下时,还是会输出“1”。
现在,梯形逻辑如下:
你可以看到开路检查指令将其条件的反转结果传递给输出线圈。要再次激活输出,就需要再次按下启动按钮。
在上面的示例中,我使用了一个开路判断指令作为停机按钮。这不是好的实践!
我们最终遵循最佳实践,修改后的梯形图如下:
虽然我们修改了指令,梯形图的运行没有变化,这是因为我们同样修改了物理停机按钮的工作方式。
PLC梯形图的结构分析
采用一般编程方法还是采用顺序功能图编程方法;采用顺序功能图的单序列结构还是选择序列结构、并行序列结构,使用启/保/停电路、步进顺控指令进行编程还是用置位/复位指令进行编程。
梯形图的分解由操作主令电路(如按钮)开始,查线追踪到主电路控制电器(如接触器)动作,中间要经过许多编程元件及电路,查找起来比较困难。
无论多么复杂的梯形图,都是由一些基本单元构成的。按主电路的构成情况,利用逆读溯源法,把梯形图和指令语句表分解成与主电路的用电器(如电动机)相对应的几个基本单元,然后一个环节、一个环节地分析,最后再利用顺读跟踪法把各环节串起来。
(1)按钮、行程开关、转换开关的配置情况及作用
在PLC的I/O接线图中有许多行程开关和转换开关,以及压力继电器、温度继电器等,这些电器元件没有吸引线圈,它们的触点的动作是依靠外力或其他因素实现的,因此必须先把引起这些触点动作的外力或因素找到。其中行程开关由机械联动机构来触压或松开,而转换开关一般由手工操作,从而使这些行程开关、转换开关的触点在设备运行过程中便处于不同的工作状态,即触点的闭合、断开情况不同,以满足不同的控制要求,这是看图过程中的一个关键。
这些行程开关、转换开关的触点的不同工作状态单凭看电路图难以搞清楚,必须结合设备说明书、电器元件明细表,明确该行程开关、转换开关的用途,操纵行程开关的机械联动机构,触点在不同的闭合或断开状态下电路的工作状态等。
(2)采用逆读溯源法将多负载(如多电动机电路)分解为单负载(如单电动机)电路
根据主电路中控制负载的控制电器的主触点文字符号,在PLC的I/O接线图中找出控制该负载的接触器线圈的输出继电器,再在梯形图和指令语句表中找出控制该输出继电器的线圈及其相关电路,这就是控制该负载的局部电路。
在梯形图和指令语句表中,很容易找到该输出继电器的线圈电路及其得电、失电条件,但引起该线圈的得电、失电及其相关电路就不容易找到,可采用逆读溯源法去寻找:
在输出继电器线圈电路中串、并联的其他编程元件触点的闭合、断开就是该输出继电器得电、失电的条件。
由这些触点再找出它们的线圈电路及其相关电路,在这些线圈电路中还会有其他接触器、继电器的触点……
如此找下去,直到找到输入继电器(主令电器)为止。值得注意的是:当某编程元件得电吸合或失电释放后,应该把该编程元件的所有触点所带动的前、后级编程元件的作用状态全部找出,不得遗漏。
找出某编程元件在其他电路中的动合触点、动断触点,这些触点为其他编程元件的得电、失电提供条件或者为互锁、联锁提供条件,引起其他电器元件动作,驱动执行电器。
(3)将单负载电路进一步分解
控制单负载的局部电路可能仍然很复杂,还需要进一步分解,直至分解为基本单元电路。
(4)分解电路的注意事项
若电动机主轴接有速度继电器,则该电动机按速度控制原则组成停车制动电路。
若电动机主电路中接有整流器,表明该电动机采用能耗制动停车电路。
(5)集零为整,综合分析
把基本单元电路串起来,采用顺读跟踪法分析整个电路。
全部0条评论
快来发表一下你的评论吧 !