您现在的位置是:首页 > PLC技术 > PLC技术

S7-300/400系列PLC逻辑控制指令

来源:艾特贸易2018-01-24

简介逻辑控制指令包含各种跳转指令,通过跳转指令及程序跳转标签 ( Label)控制程序的跳转。逻辑控制指令如表2-27所示。 表 2-27 逻辑控制指令 使用 LAD编程,程序跳转指令少,使用比较简单


  逻辑控制指令包含各种跳转指令,通过跳转指令及程序跳转标签( Label)控制程序的跳转。逻辑控制指令如表2-27所示。

2-27    逻辑控制指令

 表2-27 逻辑控制指令
表2-27 逻辑控制指令

    使用LAD编程,程序跳转指令少,使用比较简单。使用STL编程时,可以根据状态位的状态进行程序跳转,跳转指令比较灵活。下面分别介绍两种编程语言的跳转指令。

    1.LAD编程指令

LAD跳转指令有-(JMP)(为1跳转)和-(JMPN)(为0跳转)两种,根据前面的条件,跳转到自己定义的LABEL(标号,最多4个字符,第一字符必须是字母)程序段。LAD编程的跳转指令如图2-15所示。

 图2-15 LAD跳转指令

2-15  LAD跳转指令

    使用-(JMP)指令,如果前面没有触发条件,程序执行后无条件跳转到指定标号的程序段。使用-(JMPN)指令,前面必须有触发条件,否则指令违法,跳转指令中指定的标号必须与程序段标号一致,可以调用多条跳转指令跳转到同一标号的程序段中。在示例程序中,如果触点信号M2.0为1,则程序跳转到标号为k1的程序段(程序段3);如果触点信号M2.1为0,则程序跳转到标号为k2的程序段(程序段4),CPU将不扫描程序段3。

    2.STL指令

    STL与LAD编程跳转的方式相同,所有跳转指令必须定义跳转的标号,格式如下:

JC    M2

*

*

*

M2:*

*

*

    JC为跳转指令,M2为用户定义的标号,在跳转的程序标号后面,必须加上符号“:”,

根据跳转指令,STL编程语言可划分下面几种跳转指令。

    (1)无条件跳转指令JU、JL

    JU指令的使用示例程序如下:

    A    I1.2

    JC    DELE    //如果I1.2为1,则跳转到标号“DELE”

    LMB    10

    INC  1

    TMB    10

    JU  FORW    //不需要触发条件,程序无条件跳转到标号“FORW”

    DELE:T MB    10

    L    0

    FORW:A    I    2.1    //程序跳转到标号“FORW”后,程序从这里继续执行

    JL指令根据累加器1的数值跳转到相应的标号程序段,指令的示例程序如下:

    LMB    0    //装载MBO到累加器l

    JL  LSTX    //累加器1的值大于3时,跳转到标号LSTX程序段

    JU    SEGO    //累加器1的值等于0时,跳转到标号SEGO程序段

    JU    SEG1    //累加器1的值等于1时,跳转到标号SEG1程序段

    JU    SEG2    //累加器1的值等于2时,跳转到标号SEG2程序段

    JU    SEG3    //累加器1的值等于3时,跳转到标号SEG3程序段

    LSTX: JU    COMM

SEGO:*    //合法指令

*

JU  COMM

SEG1:*    //合法指令

*

    JU    COMM

SEG2:*    //合法指令

*

    JU  COMM

SEG3:*     //合法指令

*

    JU    COMM

COMM:*    //合法指令

*

    上面为JL指令固定的编程格式,最多允许有255个跳转条目,示例程序中有4个跳转条目,每个条目有一个标号,条目的序号从0开始(JU的个数),如果累加器1的值大于所罗列的条目数,则跳转到JL指令指定的标号。

    (2)基于逻辑结果的跳转指令JC、JCN、JCB、JNB

    如果RLO=1,JC指令执行,指令的使用示例程序如下:

    A    I1.2

    JC    JOVR    //如果RLO=1(I1.2为1),则跳转到标号“JOVR”

    LIW    8    //如果跳转没有执行,程序从这里继续扫描

    TMW  22

    JOVR:A    I    2.1    //程序跳转到标号“JOVR”后,程序从这里继续执行

    JC指令相反,如果RLO=O,JCN指令执行,即如果I1.2为0时,触发JCN指令执行,示例程序如下:

    A    I1.2

    JCN  JOVR    //如果RLO=0(I1.2为0),则跳转到标号“JOVR”

    LIW    8    //如果跳转没有执行,程序从这里继续扫描

    TMW  22

    JOVR:A    I    2.1    //程序跳转到标号“JOVR”后,程序从这里继续执行

    注意:当指令JC和JCN执行时,如果跳转不执行,将RLO位置1并从下一个指令开始执行。

    如果RLO=1,JCB指令执行,并将RLO位的状态复制到BR位,指令的使用示例程序如下:

    A    I1.2

    JCB  JOVR    //如果RLO=1( 11.2=1),则跳转到标号“JOVR”,将RLO位的状态复制到BR位

    LIW    8    //如果跳转没有执行,程序从这里继续扫描

    TMW  22

    JOVR:A    I    2.1    //程序跳转标号“JOVR”后,程序从这里继续执行

    如果RLO=O,JNB指令执行,并将RLO位的状态复制到BR位,指令的示例程序如下:

    A    I1.2

    JNB  JOVR    //如果RLO=1( 11.2=1),则跳转到标号“JOVR”,将RLO位的    状态复制到BR位

    LIW    8    //如果跳转没有执行,程序从这里继续扫描

    TMW  22

    JOVR:A    I    1.2    //程序跳转标号“JOVR”后,程序从这里继续执行

    (3)基于状态字中位状态(除RLO位)的跳转指令JBI、JNB1、JO、JOS

    JBI与JNBI指令根据BR位的状态跳转,如果BR位为1,则执行JBI指令,如果BR位为0,则执行JNBI指令。以JBI指令为例,指令的使用示例程序如下:

    CALL SFC14    //调用系统函数SFC14

    LADDR  :=MW2

    RET_VAL:=MW4

    RECORD:=MW6

    JBI  Ml    //如果调用出错,BR位为0,则函数执行跳转到标号“M”

    L    2

    TMW  12

    BE    //程序结束

    Ml:  L    3

    TMW  12    //程序跳转到标号“M1”后,程序从这里继续执行

    如果运算结果溢出,状态字的溢出位OV=1,则JO指令通过判断OV位进行程序跳转,指令的使用示例程序如下:

    LMW  10

    L    30

    *I//MW10

    JO  OVER    //如果超上限(0V=1),则程序跳转

    T    MW  10    //如果跳转没有执行,程序从这里继续扫描

    A    M4.0

    R    M4.0

    JU NEXT

    OVER: AN    M    4.0  //程序跳转到标号“OVER”后,程序从这里继续执行

    S    M4.0

    NEXT: NOP  0    //程序跳转到标号“NEXT”后,程序从这里继续执行

    示例程序中,从位信号M4.0中,可以查询运算结果是否超上限(0V=1),若M4.0为1,指示运算结果超上限;若M4.0为0,指示运算结果正常。

    如果运算结果溢出,状态字的溢出位OV=1,则运算结果正常;若溢出位OV=0,但是状态字的溢出保持位OS仍然为1,记录运算结果溢出是否出现。通过程序块调用或者调用JOS复位OS状态位,JOS指令通过判断OS位进行程序跳转,指令的使用示例程序如下:

    LIW  10

    LMW  12

    *I

LDBW  25

 

    +I

    LMW  14

    I

    JOS  OVER    //如果上面3条运算指令中任何一条运算结果超上限(0V=1),则

    程序跳转到标号“OVER”

    T    MW  16    //如果跳转没有执行,程序从这里继续扫描

    A    M4.0

    R    M4.0

    JU NEXT

    OVER: AN    M    4.0  //程序跳转到标号“OVER”后,程序从这里继续执行

    S    M    4.0

    NEXT: NOP  0    //程序跳转到标号“NEXT”后,程序从这里继续执行

    JO跳转指令程序相同,若M4.0为l,指示运算结果超上限;若M4.0为0,指示运算结果正常。

    (4)基于运算结果的跳转指令JZ、JN、JP、JM、JPZ、JMZ、JUO

    这些跳转指令基于运算结果CCO和CC1的状态,不同的状态触发不同的跳转指令,CCO、CC1位的状态与条件跳转指令的关系如表2-28所示。

2-28    CC0CC1位的状态与条件跳转指令的关系

 表2-28 CC0、CC1位的状态与条件跳转指令的关系

    JP指令为例,介绍跳转指令的使用示例程序如下:

    LIW    8

    LMW  12

    I    //IW8的值与MW12的值相减

    JP    POS    //如果计算结果大于0(ACCU1>0),则跳转到程序标号“POS”

    AN  M    4.0  //如果跳转没有执行,程序从这里继续扫描

    S    M4.0

JU NEXT

    POS: AN  M    4.1  //程序跳转到标号“POS”后,程序从这里继续执行

    S    M4.1

    NEXT: NOP  0    //程序跳转到标号“NEXT”后,程序从这里继续执行

    在程序中,如果变量IW8大于变量MW12中存储的值,则置位M4.1,否则置位M4.0。

 

(作者稿费要求:需要高清无水印文章的读者3元每篇,请联系客服,谢谢!在线客服:艾特贸易网客服为您服务