您现在的位置是:首页 > PLC技术 > PLC技术
PLC编程梯形图中的指令行分支
来源:艾特贸易2017-06-05
简介当一个指令行分成两行或更多行时,它有时必须使用互锁或 TR 位来保存分支点上存在的执行条件。这是因为指令行在返回分支点执行一个分支行上的指令之前执行了右侧指令。如果在分
当一个指令行分成两行或更多行时,它有时必须使用互锁或TR位来保存分支点上存在的执行条件。这是因为指令行在返回分支点执行一个分支行上的指令之前执行了右侧指令。如果在分支点后的任意指令行上存在一个条件,这时执行条件可能发生改变而不能完成本来的操作。图1-25所示出的梯形图说明了这个问题。在两个梯形图中,指令1在返回分支点前执行,并且沿着分支行转向指令2。 如图1-25 (a)所示,如果在分支点上存在的执行条件在返回分支行前不会改变(即最右侧的指令不改变该执行条件),那么将正确地执行分支行而不需要作任何特殊的编程处理。如图1-25(b)所示,如果在分支点和最上面指令行的最后一条指令之间有一个条件,那么分支点上的执行条件和完成上面指令行之后的执行条件有时可能是不同的,因此,不能确保该分支行正确地执行。 有两种编制分支程序来保存执行条件的方法,一种是使用TR位;另一种是使用互锁指令 IL (02)/IL (03) 。 图1-25 指令行分支情况 a.TR位。TR区域共提供8个位(TR0~TR7),可用于暂时存储执行条件。如果一个TR位被设置在分支点处,则当前的执行条件就会存储在指定的TR位中。当程序返回到分支点时,TR位释放出执行状态,而该状态正是在程序第一次执行到该分支点处时将被保存下来的。 图1-25(b)可写为如图1-26所示的形式,以确保程序正确执行。在助记符中,把TR位当作OUT PUT指令的操作数,这样分支点的执行条件即可被存入TR位中。在执行完右侧指令后,再把TR位当作LOAD指令的操作数。这样,这个执行条件又被释放出来。
图1-26 正确使用暂存继电器位 图1-25的实际指令如图1-27所示:用一条LOAD指令载入IR00000的状态,从而建立初始执行条件。在分支点,用一条OUT指令将该执行条件送入TR 0存储起来。接着执行条件与IR00001的状态进行AND操作,进而执行指令1。接下来存储在分支点的这个执行条件被再次调用(一个以TR 0为操作数的LOAD指令),这时它和IR00002的状态进行AND操作,相应地再执行指令2。
图1-27 使用两个TR位的应用 在这个例子中,TRO和TR1是用来存储两个分支点的执行条件。在执行指令1后,TR1内的执行条件被调出和IR00003的状态进行AND操作。而存在TR0中的执行条件会被两次调用,第一次调出来和IR00004的状态进行AND操作,而第二次是与IR00005的状态非进行AND操作。TR位可以根据需要多次使用,但在同一指令块中不可重复使用同一TR位。程序每次开始执行新的指令块时都要返回母线,如果在单个指令块中,必须要有八个以上需要保存执行条件的分支点,则必须使用互锁指令操作(后面说明)。 当画梯形图时,除非必须,一般不用TR位。画梯形图时不使用TR位可以减少程序的指令数,并使程序更易于理解。在图1-28所示出的两对梯形图中,箭头所指的梯形图形式不用TR位又减少指令数。图1-28(a)是通过重组指令块实现的;图1-28(b)是通过将第二个OUT PUT指令分开的方法,并使用另一个LOAD指令来为它产生适当的执行条件。 虽然简化程序总是一个令人关心的问题,但指令的执行顺序有时也是很重要的,例如,在一个二进制加法指令执行之前,需要一条传送(MOVE)指令把适当的数据放入所需的操作数字中。在考虑简化程序之前,必须要确认执行顺序全部正确。
图1-28 简化程序关心指令执行顺序 只有在使用助记符编程时才使用TR位。当直接输入梯形图时,不必使用TR位。但仍要注意在分支点所需要TR位的最大数目(8个)的限制,也要注意采用适当的方法减少程序所用的指令数。 b.互锁。使用互锁IL(02)和解除互锁ILC (03)指令,可以解决在分支点上存储执行条件的问题。IL和ILC指令可完全消除分支点,它允许一个特殊执行条件去控制一组指令。IL和ILC指令总是一起使用。如果在一个梯形图程序,的某一段前设置了IL指令,那么IL指令的执行条件将控制ILC指令前的所有指令执行。如果IL指令的执行条件为“OFF”,那么在该ILC指令与IL指令前的所有指令都按“OFF”执行条件去执行,从而对梯形图的这整个一段复位。这个特殊指令的影响将在互锁和解除互锁IL和ILC中说明。
图1-29 梯形图用互锁指令修改 如图1-29所示,图1-25(b)也可以用互锁指令来修改。程序中分支点的执行条件被放在IL指令行上,所有原来从分支点分出的行都被重写成独立的指令行,并且在最后再加入一条解除ILC指令。ILC指令行上不能有条件存在。注意:不管IL指令还是ILC指令,都不需要操作数。 在图1-29中,如果IR00000的状态为“ON”,那么IR00001和IR00002的状态将分别确定指令1和指令2的执行条件。因为IR00000为“ON”,那么它各位的状态AND操作结果是一样的;如果IR00000为“OFF”,那么IL指令将为指令1和指令2产生一个“OFF”执行条件,并从ILC指令后面的指令继续执行下去。 在一个指令块中可以重复使用IL指令,每个指令的有效范围都在解除ILC指令之前。如果上图中IR00000为“OFF”(即第一个IL指令的执行条件为“OFF”),那么指令1~4都按“OFF”执行条件执行且程序的执行会转到解除ILC指令后面的指令;如果IR00000为“ON”,那么IR00001的状态将作为指令1的执行条件载入,然后将载入IR00002的状态来形成第二个II)指令的执行条件。如果IR00002为“OFF”,指令2~4将按“OFF”执行条件执行;如果IR00002为“ON”,则IR00003、IR00005和IR00006将确定在新指令行中第一个执行条件。
点击排行
