浙江西门子S7-1200PLC模块代理经销商
PLC编程梯形图中的跳转指令
根据一个指定的执行条件,可以跳过程序中某一指定段。在将IL指令的执行条件置“OFF”时也可实现类似功能,而使用跳转可以维持所有指令的操作数的状态。因此,跳转常被用于控制需要保持连续输出的器件,比如气动装置、液压传动装置;而IL指令常用于控制不需要连续输出的器件中,例如电子仪器。
使用跳转JMP (04)和跳转结束JME (05)指令可以实现跳转。如果一个跳转指令的执行条件为“ON”,那么程序没有跳转指令一样运行;如果跳转指令的执行条件为“OFF”,则程序会立即跳转到跳转结束指令后继续执行,而不改变跳转和跳转结束指令之间的任何状态。
所有跳转和跳转结束指令都有定义的跳转编号,范围为00~99。跳转有两种类型,其类型取决于使用的跳转编号。
可以在01~99的范围内取一编号定义跳转(但只能定义一次),即每个跳转编号只能使用一次(跳转、跳转结束指令各一次)。当执行一条具有某跳转编号的跳转指令时,程序会立即跳转移到具有相同编号的跳转结束指令后,就像在这两条指令之间所有的指令都不存在一样。描述TR位和互锁例子可以使用一个跳转指令重画为如图1-30所示的梯形图。尽管本例中跳转编号用的是01,只要它没有在程序其他地方使用过,那么01~99之间的任何一个数字都是可以使用的。

图1-30 使用跳转指令修改
当IR00000为“OFF”时,梯形图B程序的执行时间具有比其他任何方式编程的程序形式都要短。
使用00跳转编号可以产生另一种跳转类型。用00作为跳转编号可以产生所需要的许多次跳转,它允许多条跳转指令连续使用。0作为跳转编号,而它们之间没有以00为跳转编号的跳转结束指令。它甚至允许所有JUMP 00指令把程序执行跳转同一条JUMPE 00指令处,即在程序中所有的JUMP 00指令共用一条JUMPE 00指令。当一个跳转指令使用00作为跳转编号时,程序执行将跳转到紧跟着的以00为跳转编号的跳转结束指令后的指令。尽管同其他跳转指令一样,程序会跳过JUMP 00至JUMPE 00指令间的所有指令,且不改变状态,但因为程序要用一定的时间寻找下一个JUMPE 00指令,所以它的执行时间比其他跳转指令稍长些。
程序中多条JUMP 00指令共用一条JUMPE 00指令,其执行与使用互锁指令的程序相似。
一般可以使用7条基本指令来控制单个位状态,它们是输出( OUT)、输出非(OUT NOT)、置位(SET)、复位(RSET)、前(上升)沿微分(DIFU)、后(下降)沿微分(DIFD)和保持(KEEP)指令。所有这些指令作为一个指令行中一条指令出现,并且使用一个位地址作为操作数。这些指令(除了已经介绍过的输出和输出非)在这里要说明是因为在一些程序中它们很重要。尽管这些指令在IR区中用来使输出位置“ON”和“OFF”(即向外部设备送出或停止输出信号),但也可以用来它们在IR区或其他数据区域控制其他位的状态。
置位和复位指令同输出和输出非指令非常相似,它们只能改变“ON”执行条件的位操作数位的状态。当执行条件为“OFF”时,指令不影响它的操作位的状态。
当一个指令行分成两行或更多行时,它有时必须使用互锁或TR位来保存分支点上存在的执行条件。这是因为指令行在返回分支点执行一个分支行上的指令之前执行了右侧指令。如果在分支点后的任意指令行上存在一个条件,这时执行条件可能发生改变而不能完成本来的操作。图1-25所示出的梯形图说明了这个问题。在两个梯形图中,指令1在返回分支点前执行,并且沿着分支行转向指令2。
如图1-25 (a)所示,如果在分支点上存在的执行条件在返回分支行前不会改变(即Z右侧的指令不改变该执行条件),那么将正确地执行分支行而不需要作任何特殊的编程处理。如图1-25(b)所示,如果在分支点和Z上面指令行的一条指令之间有一个条件,那么分支点上的执行条件和完成上面指令行之后的执行条件有时可能是不同的,因此,不能确保该分支行正确地执行。
有两种编制分支程序来保存执行条件的方法,一种是使用TR位;另一种是使用互锁指令 IL (02)/IL (03) 。
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)指令把适当的数据放入所需的操作数字中。在考虑简化程序之前,必须要确认执行顺序全部正确。
只有在使用助记符编程时才使用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-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将确定在新指令行中个执行条件。
如果有不止一个的右侧指令按同样的执行条件执行,那么从指令行上一个条件之后对这些指令连续编写。如图1-24所示的这个例子中,一个指令行还含有一个条件,它对应着IR00004的AND指令。
图1-24 多路右侧指令编程规则
浙江西门子S7-1200PLC模块代理经销商