研选课堂
HOME
研选课堂
正文内容
plc编程跳过编号 S7-1200 PLC跳转与标签指令的使用
发布时间 : 2024-11-26
作者 : 小编
访问数量 : 23
扫码分享至微信

S7-1200 PLC跳转与标签指令的使用

对于PLC的指令中有一部分是程序控制指令,程序控制指令就包括了用来改变程序执行顺序的跳转指令,以及在程序运行中用于控制的指令。

这一篇文章中先介绍一下跳转与标签指令。

对于S7-200/200 SMART PLC的跳转指令只有JMP这么一个指令,但是对于S7-1200 PLC来说,则是新增了一些指令,比如定义跳转列表的跳转指令JMP_LIST,和跳转分支指令SWITCH等,我们会介绍指令的不同的地方。

下面我们就开始吧~

首先提个问题?

什么是跳转,使用跳转指令可以实现什么功能?

所谓跳转,就是跳过某段程序不去执行,使用跳转指令可以实现改变程序的执行顺序的功能。如果我们没有执行跳转指令的话,各个程序段是按照从上往下的顺序进行执行的,当执行了跳转指令之后,跳转指令会中止程序的顺序执行,跳转到指定的位置的程序开始往下执行。

那么我们怎么去指定这个位置呢?

这时我们就需要用到标签指令了!

所以,跳转指令和标签指令是配对使用的。跳转时,跳转指令和标签指令之间的程序,CPU是不再进行扫描执行的,这个是我们需要注意的。

S7-1200 PLC的跳转指令包括了逻辑结构跳转指令、定义跳转列表的跳转指令JMP_LIST,和跳转分支指令SWITCH。

我们分别看一下这几个指令的功能是怎么样的。

1、逻辑结果跳转指令

逻辑运算结果为1时,执行跳转指令JMP,逻辑运算结果为0时,执行跳转指令JMPN。配套使用的标签指令是LABLE,标签指令上需要标上标签号,可以是数字,也可以是字母或汉字哦。

对于S7-200/200 SMART PLC的跳转指令只有JMP和配套的LBL指令,并不是根据逻辑结果的跳转指令,所以也没有JMPN这个指令,而且对于标签LBL指令,S7-200/200 SMART PLC的标签号只能是数字,不可以是字母和汉字的哦。

2、定义跳转列表的跳转指令JMP_LIST

JMP_LIST指令可以定义多个有条件的跳转,跳转到由K管脚的值指定的标签段的程序去继续执行,而跳转的标签号是在指令框的输出端进行指定的。

我们可以通过点击指令上的增加输出管脚的按钮去增加输出管脚,最多可以增加到32个管脚,也就是DEST0~DEST31,所以K的值的范围也应该是在0~31之间,如果不是这些编号是不执行跳转的。

如上图程序,当JMP_LIST指令的EN驱动条件满足,会根据K的值决定跳转到相应的标签处开始执行,K的值是1,就代表是跳转到DEST1管脚所链接的标签_002处开始执行。

3、跳转分支指令SWITCH

SWITCH指令是根据一个或多个比较指令的结果,定义要执行的多个程序标签处跳转,在管脚K中指定的是要比较的值,将这个值跟各个输入管脚提供的值进行比较,如果比较条件满足的话,就跳转到对于的标签处开始执行程序。

如上图程序中,当K的值等于47.0时,就跳转到DEST0管脚对应的001标签处开始执行,当K的值等于24.6时,就跳转到DEST1管脚对应的002标签处开始执行,当K的值小于或等于14.9时,就跳转到DEST2管脚对应的003标签处开始执行,如果K的值与以上三个比较条件的比较结果都不满足的话,就跳转到ELSE管脚对应的004标签处开始执行。

我们在使用跳转指令的时候有一些注意事项需要注意一下的,

1、跳转指令可以往前跳转,也可以往后跳转。

2、只能在同一个代码块中跳转,不能从一个代码块跳转到另外的代码块中。

3、在一个块中跳转标签的名称只能使用一次。

4、一个程序断中只能设置一个跳转标签。

在执行跳转的过程中又有这样的一个问题,如果跳转执行后的程序希望执行到指定的地方可以自动返回,不再往下执行,这时怎么办呢?

其实这种情况下我们可以利用另外一个指令——返回指令RET实现,返回指令RET是可以用来实现对程序执行的控制,当执行到RET指令时,退出代码块的执行,也就是说RET指令之后的程序段CPU将不再执行。

所以说跳转指令和返回指令RET一起配合使用,可以实现对程序段的选择执行。

比如在每个标签段中加入这个RET指令,那么执行完这个标签到RET指令之间的程序之后,可以自动返回,不再去执行后续的程序。

以上就是S7-1200 PLC的跳转指令相关内容,这个指令可以用于做手自动切换等功能,应用的还是比较多的,大家还是需要掌握好这个指令的使用哦。

在下一篇文章中继续给大家介绍运行时的控制指令,大家可以继续关注哦~

(培训网原创,作者:蔡慧荥,未经授权不得转载,违者必究)

西门子、三菱指令大全,集齐了才知道PLC编程这么容易

西门子PLC编程指令

1、位逻辑指令

1.1 -||- 常开接点(地址)1.2 -|/|- 常闭接点(地址)1.3 XOR 位异或1.4 -|NOT|- 信号流反向1.5 -( ) 输出线圈1.6 -(#)- 中间输出1.7 -(R) 线圈复位1.8 -(S) 线圈置位1.9 RS 复位置位(置位复位)触发器1.10 -(N)- RLO下降沿检测1.11 -(P)- PLO上升沿检测1.12 -(SAVE) 将RLO存入BR存储器1.13 MEG 地址下降沿检测1.14 POS 地址上升沿检测

2、比较指令

2.1 CMP?I 整数比较2.2 CMP?D 双整数比较2.3 CMP?R 实数比较

3、转换指令

3.1 BCD_IBCD码转换为整数3.2 I_BCD 整数转换为BCD码3.3 I_DINT 整数转换为双整数3.4 BCD_DIBCD码转换为双整数3.5 DI_BCD 双整数转换为BCD码3.6 DI_REAL 双整数转换为浮点数3.7 INV_I 整数的二进制反码3.8 INV_DI 双整数的二进制反码3.9 NEG_I 整数的二进制补码3.10 NEG_DI 双整数的二进制补码3.11 NEG_R 浮点数求反3.12 ROUND 舍入为双整数3.13 TRUNC 舍去小数取整为双整数3.14 CEIL 上取整3.15 FLOOR 下取整

4、计数器指令

4.1 S_CUD 加减计数4.2 S_CU 加计数器4.3 S_CD 减计数器4.4 -(SC) 计数器置初值4.5 -(CU) 加计数器线圈4.6 -(CD) 减计数器线圈

5、数据块指令

5.1 -(OPN) 打开数据块:DB或DI

6、逻辑控制指令6.1 -(JMP) 无条件跳转6.2 -(JMP) 条件跳转6.3 -(JMPN) 若非则跳转6.4 LABEL 标号

7、整数算术运算指令

7.1 ADD_I 整数加法7.2 SUB_I 整数减法7.3 MUL_I 整数乘法7.4 DIV_I 整数除法7.5 ADD_DI 双整数加法7.6 SUB_DI 双整数减法7.7 MUL_DI 双整数乘法7.8 DIV_DI 双整数除法 7.9 MOD_DI 回送余数的双整数

8、浮点算术运算指令

8.1 基础指令8.1.1 ADD_R 实数加法8.1.2 SUB_R 实数减法8.1.3 MUL_R 实数乘法8.1.4 DIV_R 实数除法8.1.5 ABS 浮点数绝对值运算

8.2 扩展指令

8.2.1 SQR 浮点数平方8.2.2 SQRT 浮点数平方根8.2.3 EXP 浮点数指数运算8.2.4 LN 浮点数自然对数运算8.2.5 SIN 浮点数正弦运算8.4.6 COS 浮点数余弦运算8.2.7 TAN 浮点数正切运算8.2.8 ASIN 浮点数反正弦运算8.2.9 ACOS 浮点数反余弦运算8.2.10ATAN 浮点数反正切运算

9、赋值指令

9.1 MOVE 赋值

10、程序控制指令

10.1 -(Call) 从线圈调用FC/SFC(无参数)10.2 CALL_FB 从方块调用FB10.3 CALL_FC 从方块调用FC10.4 CALL_SFB 从方块调用SFB10.5 CALL_SFC 从方块调用SFC10.6 -(MCR<) 主控继电器接通10.7 -(MCR>) 主控继电器断开10.8 -(MCRA) 主控继电器启动10.9 -(MCRD) 主控继电器停止10.10 -(RET) 返回

11、移位和循环指令

11.1 移位指令11.1.1 SHR_I 整数右移11.1.2 SHR_DI 双整数右移11.1.3 SHL_W 字左移11.1.4 SHR_W 字右移11.1.5 SHL_DW 双字左移11.1.6 SHR_DW 双字右移

11.2 循环指令

11.2.1 ROL_DW 双字左循环11.2.2 ROR_DW 双字右循环

12、状态位指令

12.1 OV -||- 溢出异常位12.2 OS -||- 存储溢出异常位12.3 UO -||- 无序异常位12.4 BR -||- 异常位二进制结果12.5 ==0-||- 结果位等于"0"12.6 <>0-||- 结果位不等于"0"12.7 >0-||- 结果位大于"0"12.8 <0-||- 结果位小于"0"12.9 >=0-||- 结果位大于等于"0"12.10 <=0-||- 结果位小于等于"0"

13、定时器指令

13.1 S_PULSE 脉冲S5定时器13.2 S_PEXT 扩展脉冲S5定时器13.3 S_ODT 接通延时S5定时器13.4 S_ODTS 保持型接通延时S5定时器13.5 S_OFFDT 断电延时S5定时器13.6 -(SP) 脉冲定时器线圈13.7 -(SE) 扩展脉冲定时器线圈13.8 -(SD) 接通延时定时器线圈13.9 -(SS) 保持型接通延时定时器线圈13.10 -(SF) 断开延时定时器线圈

14、字逻辑指令

14.1 WAND_W 字和字相"与"14.2 WOR_W 字和字相"或"14.3 WAND_DW 双字和双字相"与"14.4 WOR_DW 双字和双字相"或"14.5 WXOR_W 字和字相"异或"14.6 WXOR_DW 双字和双字相"异或“

三菱 FX 系列PLC的基本逻辑指令

取指令与输出指令(LD/LDI/LDP/LDF/OUT)

(1)LD(取指令) 一个常开触点与左母线连接的指令,每一个以常开触点开始的逻辑行都用此指令。

(2)LDI(取反指令) 一个常闭触点与左母线连接指令,每一个以常闭触点开始的逻辑行都用此指令。

(3)LDP(取上升沿指令) 与左母线连接的常开触点的上升沿检测指令,仅在指定位元件的上升沿(由OFF→ON)时接通一个扫描周期。

(4)LDF(取下降沿指令) 与左母线连接的常闭触点的下降沿检测指令。

(5)OUT(输出指令) 对线圈进行驱动的指令,也称为输出指令。

取指令与输出指令的使用说明:

1)LD、LDI指令既可用于输入左母线相连的触点,也可与ANB、ORB指令配合实现块逻辑运算;

2)LDP、LDF指令仅在对应元件有效时维持一个扫描周期的接通。

3)LD、LDI、LDP、LDF指令的目标元件为X 、Y 、M 、T、C、S;4)OUT指令可以连续使用若干次(相当于线圈并联),对于定时器和计数器,在OUT指令之后应设置常数K或数据寄存器。

5)OUT指令目标元件为Y、M、T、C和S,但不能用于X。

触点串联指令(AND/ANI/ANDP/ANDF)

(1)AND(与指令) 一个常开触点串联连接指令,完成逻辑“与”运算。

(2)ANI(与反指令) 一个常闭触点串联连接指令,完成逻辑“与非”运算。

(3)ANDP 上升沿检测串联连接指令。

(4)ANDF 下降沿检测串联连接指令。

触点串联指令的使用的使用说明:

1)AND、ANI、ANDP、ANDF都只是单个触点串联连接的指令,串联次数没有限制,可反复使用。

2)AND、ANI、ANDP、ANDF的目标元元件为X、Y、M、T、C和S。

3)OUT M101指令之后通过T1的触点去驱动Y4称为连续输出。

触点并联指令(OR/ORI/ORP/ORF)

(1)OR(或指令) 用于单个常开触点的并联,实现逻辑“或”运算。

(2)ORI(或非指令) 用于单个常闭触点的并联,实现逻辑“或非”运算。

(3)ORP 上升沿检测并联连接指令。

(4)ORF 下降沿检测并联连接指令。

触点并联指令的使用说明:

1)OR、ORI、ORP、ORF指令都是指单个触点的并联,并联触点的左端接到LD、LDI、LDP或LPF处,右端与前一条指令对应触点的右端相连。触点并联指令连续使用的次数不限;

2)OR、ORI、ORP、ORF指令的目标元件为X、Y、M、T、C、S。

块操作指令(ORB / ANB)

(1)ORB(块或指令) 用于两个或两个以上的触点串联连接的电路之间的并联。

ORB指令的使用说明:

1)几个串联电路块并联连接时,每个串联电路块开始时应该用LD或LDI指令;

2)有多个电路块并联回路,如对每个电路块使用ORB指令,则并联的电路块数量没有限制;

3)ORB指令也可以连续使用,但这种程序写法不推荐使用,LD或LDI指令的使用次数不得超过8次,也就是ORB只能连续使用8次以下。

(2)ANB(块与指令) 用于两个或两个以上触点并联连接的电路之间的串联。

ANB指令的使用说明:

1)并联电路块串联连接时,并联电路块的开始均用LD或LDI指令;

2)多个并联回路块连接按顺序和前面的回路串联时,ANB指令的使用次数没有限制。也可连续使用ANB,但与ORB一样,使用次数在8次以下。

置位与复位指令(SET/RST)

(1)SET(置位指令) 它的作用是使被操作的目标元件置位并保持。

(2)RST(复位指令) 使被操作的目标元件复位并保持清零状态。SET、RST指令的使用,当X0常开接通时,Y0变为ON状态并一直保持该状态,即使X0断开Y0的ON状态仍维持不变;只有当X1的常开闭合时,Y0才变为OFF状态并保持,即使X1常开断开,Y0也仍为OFF状态。

SET 、RST指令的使用说明:

1)SET指令的目标元件为Y、M、S,RST指令的目标元件为Y、M、S、T、C、D、V 、Z。RST指令常被用来对D、Z、V的内容清零,还用来复位积算定时器和计数器。

2)对于同一目标元件,SET、RST可多次使用,顺序也可随意,但最后执行者有效。

微分指令(PLS/PLF)

(1)PLS(上升沿微分指令) 在输入信号上升沿产生一个扫描周期的脉冲输出;

(2)PLF(下降沿微分指令) 在输入信号下降沿产生一个扫描周期的脉冲输出。

利用微分指令检测到信号的边沿,通过置位和复位命令控制Y0的状态。

PLS、PLF指令的使用说明:

1)PLS、PLF指令的目标元件为Y和M;

2)使用PLS时,仅在驱动输入为ON后的一个扫描周期内目标元件ON,M0仅在X0的常开触点由断到通时的一个扫描周期内为ON;使用PLF指令时只是利用输入信号的下降沿驱动,其它与PLS相同。

主控指令(MC/MCR)

1)MC(主控指令) 用于公共串联触点的连接。执行MC后,左母线移到MC触点的后面。

2)MCR(主控复位指令) 它是MC指令的复位指令,即利用MCR指令恢复原左母线的位置。

在编程时常会出现这样的情况,多个线圈同时受一个或一组触点控制,如果在每个线圈的控制电路中都串入同样的触点,将占用很多存储单元,使用主控指令就可以解决这一问题。

MC、MCR指令利用MC N0 M100实现左母线右移,使Y0、Y1都在X0的控制之下,其中N0表示嵌套等级,在无嵌套结构中N0的使用次数无限制;利用MCR N0恢复到原左母线状态。如果X0断开则会跳过MC、MCR之间的指令向下执行。

MC、MCR指令的使用说明:

1)MC、MCR指令的目标元件为Y和M,但不能用特殊辅助继电器。MC占3个程序步,MCR占2个程序步;

2)主控触点在梯形图中与一般触点垂直。主控触点是与左母线相连的常开触点,是控制一组电路的总开关。与主控触点相连的触点必须用LD或LDI指令。

3)MC指令的输入触点断开时,在MC和MCR之内的积算定时器、计数器、用复位/置位指令驱动的元件保持其之前的状态不变。非积算定时器和计数器,用OUT指令驱动的元件将复位,22中当X0断开,Y0和Y1即变为OFF。

4)在一个MC指令区内若再使用MC指令称为嵌套。嵌套级数最多为8级,编号按N0→N1→N2→N3→N4→N5→N6→N7顺序增大,每级的返回用对应的MCR指令,从编号大的嵌套级开始复位。

堆栈指令(MPS/MRD/MPP)

堆栈指令是FX系列中新增的基本指令,用于多种输出电路,为编程带来便利。在FX系列PLC中有11个存储单元,它们专门用来存储程序运算的中间结果,被称为栈存储器。

(1)MPS(进栈指令) 将运算结果送入栈存储器的第一段,同时将先前送入的数据依次移到栈的下一段。

(2)MRD(读栈指令) 将栈存储器的第一段数据(最后进栈的数据)读出且该数据继续保存在栈存储器的第一段,栈内的数据不发生移动。

(3)MPP(出栈指令) 将栈存储器的第一段数据(最后进栈的数据)读出且该数据从栈中消失,同时将栈中其它数据依次上移。

堆栈指令的使用说明:

1)堆栈指令没有目标元件;

2)MPS和MPP必须配对使用;

3)由于栈存储单元只有11个,所以栈的层次最多11层。

逻辑反、空操作与结束指令(INV/NOP/END)

1)INV(反指令) 执行该指令后将原来的运算结果取反。反指令的使用如图10所示,如果X0断开,则Y0为ON,否则Y0为OFF。使用时应注意INV不能象指令表的LD、LDI、LDP、LDF那样与母线连接,也不能象指令表中的OR、ORI、ORP、ORF指令那样单独使用。

2)NOP(空操作指令) 不执行操作,但占一个程序步。执行NOP时并不做任何事,有时可用NOP指令短接某些触点或用NOP指令将不要的指令覆盖。当PLC执行了清除用户存储器操作后,用户存储器的内容全部变为空操作指令。

3)END(结束指令) 表示程序结束。若程序的最后不写END指令,则PLC不管实际用户程序多长,都从用户程序存储器的第一步执行到最后一步;若有END指令,当扫描到END时,则结束执行程序,这样可以缩短扫描周期。在程序调试时,可在程序中插入若干END指令,将程序划分若干段,在确定前面程序段无误后,依次删除END指令,直至调试结束。

FX系列PLC的步进指令

1.步进指令(STL/RET)

步进指令是专为顺序控制而设计的指令。在工业控制领域许多的控制过程都可用顺序控制的方式来实现,使用步进指令实现顺序控制既方便实现又便于阅读修改。

FX2N中有两条步进指令:STL(步进触点指令)和RET(步进返回指令)。

STL和RET指令只有与状态器S配合才能具有步进功能。如STL S200表示状态常开触点,称为STL触点,它在梯形图中的符号为-|| ||- ,它没有常闭触点。我们用每个状态器S记录一个工步,例STL S200有效(为ON),则进入S200表示的一步(类似于本步的总开关),开始执行本阶段该做的工作,并判断进入下一步的条件是否满足。一旦结束本步信号为ON,则关断S200进入下一步,如S201步。RET指令是用来复位STL指令的。执行RET后将重回母线,退出步进状态。

2.状态转移图

一个顺序控制过程可分为若干个阶段,也称为步或状态,每个状态都有不同的动作。当相邻两状态之间的转换条件得到满足时,就将实现转换,即由上一个状态转换到下一个状态执行。我们常用状态转移图(功能表图)描述这种顺序控制过程。用状态器S记录每个状态,X为转换条件。如当X1为ON时,则系统由S20状态转为S21状态。

状态转移图中的每一步包含三个内容:本步驱动的内容,转移条件及指令的转换目标。

步驱动Y0,当X1有效为ON时,则系统由S20状态转为S21状态,X1即为转换条件,转换的目标为S21步。

3.步进指令的使用说明

1)STL触点是与左侧母线相连的常开触点,某STL触点接通,则对应的状态为活动步;

2)与STL触点相连的触点应用LD或LDI指令,只有执行完RET后才返回左侧母线;

3)STL触点可直接驱动或通过别的触点驱动Y、M、S、T等元件的线圈;

4)由于PLC只执行活动步对应的电路块,所以使用STL指令时允许双线圈输出(顺控程序在不同的步可多次驱动同一线圈);

5)STL触点驱动的电路块中不能使用MC和MCR指令,但可以用CJ指令;

6)在中断程序和子程序内,不能使用STL指令。

(来源:网络,版权归原作者)

相关问答

欧姆龙PLCP_EQ命令怎么应用?

欧姆龙PLCP_EQ命令用于比较两个数值是否相等。它可以在程序中用于逻辑判断和控制流程。使用P_EQ命令,我们可以将两个数值输入到PLC中,然后判断它们是否相等。...

三菱PLC的jump指令具体怎么使用?最好附带使用范例,谢谢?

JUMP指令就是CJ----跳转,常和指针P结合使用。例LDX0CJP9,执行这条指令,程序扫描从当前步,跳至标有P9的程序步,中间程序直接跳过,不执行!注意,程序...JUMP...

plc在子程序用跳转指令后,是回到主程序还是回到子程序?

跳转指令,顾名思义跳过一段程序到达指定的地方,即当跳转条件满足时将跳过一段程序到达指针指定点在执行程序,这中间的程序将不被执行,而调用子程序是当条件满...

plc好学吗?-198****7626的回答-懂得

关于学plc的一些步骤:第一,恶补电工基础知识,若是是电工转行,那可以跳过这一步。第二,选择合适自己的PLC品牌,目前大热的有日系三菱,德系西门子。第...

plc怎样限定数据范围?

一般情况下,正常计数就可以了,比如outc0k999,c0就只会计数到999,即使再触发outc0k999指令,也不会再增加了,如果要从0重新开始计数,就rstc0,c0就复位...

plc的跳转指令和子程序有什么相同点和不同的地方?

plc的跳转指令和子程序有什么相同点和不同点,我们以三菱FX系列的plc为例说明跳转指令CJ和子程序调用指令CALL的区别,首先他们两个都是程序流程控制的,跳转指令...

什么是低代码?

什么是低代码?低代码(Low-Code)一词最早由Forrester在2014年提出,通过少量代码就可以快速生成应用程序的开发平台。这类平台面向的是IT专家或者平民程序员,...

用SFC编程时,最后不返回初始状态,只保持最后的状态如写这步程序?

你要理解PLC是状态机的概念,"只执行最后一步,不执行初始一步"的想法就是不够理解导致的。简单点说,PLC每个扫描周期都会从第一步扫描到最后一步,条件成立就...

PLC软件为什么自己很难下载和安装成功?

一句话来回复都是因为利益,简单一个字-钱!关于安装问题:PLC我以前安装过,都要破解这破解那,要是舍得花钱,都是正版的,哪有这么多事!因为对于每一个用户...上一...

三菱PLC三台电机循环运行程序怎么编?

态切换到后一个状态的触发条件用前面的定时进行触发。3、电机故障,肯定有三个故障输入点。用这个触点和某一个步内的定时器触点相与逻辑,如果有故障就直...3...

 上海沈勇  陈彦蘅 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部