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

S7-300/400系列PLC的位逻辑指令

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

简介1.触点指令 STEP 7中提供的触点指令如表2-14所示,在触点指令中分为标准触点指令、取反指令和沿检测指令。 (1)标准触点指令 触点表示一个位信号的状态,地址可以选择 I、Q、M、DB、


  1.触点指令

  STEP 7中提供的触点指令如表2-14所示,在触点指令中分为标准触点指令、取反指令和沿检测指令。

    (1)标准触点指令

    触点表示一个位信号的状态,地址可以选择I、Q、M、DB、L数据区,触点可以是输入信号、程序处理的中间点及与其他站点通信的数据位信号,在LAD中常开触点指令为“-||-”,常闭触点为“-|/|-”,当前值为1时,常开触点闭合;当前值为0时,常闭触点闭合。在LAD编程时,标准触点间的“与”、“或”、“异或”操作没有相应指令,需要通过标准指令搭接出来。使用STL编程,对常开触点使用A(与)、0(或)、X(异或)指令,对常闭触点使用AN(与非)、ON(或非)、XN(异或非)指令,两段程序的逻辑操作,需要使用嵌套符号“()”。

2-14    触点指令

 

    (2)取反指令     

    取反指令(-|NOT|-、NOT)改变能流输入的状态,将当前值由0变为1,或者由1变为0。

    (3)沿检测指令

    信号沿的检测分为上升沿检测(—(P)—、FP)和下降沿检测(—(N)—、FN),沿信号在程序中比较常见,如电动机启动、停止信号或故障信号的捕捉等都是通过沿信号实现的。上升沿检测指令每检测一次O到1的正跳变,让能流接通一个扫描周期,下降沿检测指令每检测一次1到0的负跳变,让能流接通一个扫描周期。—(P)—与POS、—(N)—与NEG功能相同,前者检测指令前面RLO信号的跳变,后者检测一个位地址的跳变。

使用触点指令的示例程序如表2-15所示。

2-15    触点指令的示例程序

 

所有的触点指令不能对外设输入输出区进行操作。例如A PIO.O指令为非法。在程序中能流不能反向,“或”操作不能短路,如图2-9所示,在这些情况下,STEP 7会自动检查,程序不能进行有效地连接。

 

2-9触点编程错误举例

    2.线圈指令

    STEP 7中提供的线圈指令如表2-16所示,在线圈指令中分为输出指令和置位/复位指令。

    2-16    线圈指令

    (1)线圈输出指令

    线圈指令对一个位信号进行赋值,地址可以选择Q、M、DB、L数据区,线圈可以是输出信号、程序处理的中间点,当触发条件满足(RLO=1),线圈被赋值l,当条件再次不满足时(RLO=0),线圈被赋值0。在程序处理中,每个线圈可以带有若干个触点(没有限制),线圈的值决定常开触点、常闭触点的状态。在LAD中线圈输出指令为“—()”,总是在一个程序段的最右边,如果需要得到逻辑处理的中间状态,可以使用中间输出指令“—(≠)—”查询,中间输出指令不能在一个程序段的两端使用;STL编程中只有赋值指令“=”,中间输出指令可以通过编程实现。

    (2)置位/复位指令

    当触发条件满足( RLO=1),置位指令将一个线圈置1,当条件再次不满足(RLO=0),线圈值保持不变,只有触发复位指令才能将线圈值复位为0。单独的复位指令也可以对定时器、计数器的值进行清零。LAD编程指令中RS、SR触发器带有触发优先级,置位、复位信号同时为1时,优先级高的指令触发。STL编程中没有RS、SR触发器,置位、复位的优先级与指令在程序中的位置有关,通常指令在后的优先级高。

    使用线圈指令的示例程序如表2-17所示。

2-17    线圈指令的示例程序

 

    所有的线圈指令不能对外设输入、输出区进行操作。例如,=P QO.O指令为非法。只有触发条件才能触发输出或置位、复位。例如,在STL程序中,触发条件为状态字的RLO位,为1时触发。示例程序如下:

    Network 1:

    L    1

    Q10.2

    在程序段1中,Q10.2不能被赋值,因为L1(装载到累加器1中)不能使RL0位变为1。示例程序如下:

    Network 2:

    S    Q10.3

    在程序段2,Q 10.3能否被置位,需要参考RLO位的状态,如果需要程序无条件置位Q103,可以在置位语句前加上条件,程序如下:

    Network 3:

    AN  M  20.0

    S    Q10.3

    可以将M20.0作为一个未用的触点,语句ANM 20.0默认的逻辑结果RLO为1,也可以直接使用SET指令将当前的RLO置位,程序如下:

    Network 4:

    SET

    S    Q10.3

    3.RLO操作指令

    在位操作中,还有一些指令可以直接对状态字中的逻辑结果—/RLO进行操作,指令如表2-18所示。

2-18 RLO操作指令

 

    -(SAVE) /SAVE指令将RLO状态存入BR寄存器,如果没有存储BR位信号,编写的函数或者函数块使用LAD语言直接调用时,函数的输出ENO不使能,函数显示为虚线,如图2-10所示,FC1的ENO不输出,Ml00.1不能为1。

    从程序显示上看,FC1似乎没有调用,实际已经调用,只是显示问题,在调用FC1前加入条件(常开或者常闭触点)或者在FC1的程序结尾使用SAVE指令,可以改变FC1调用的显示状态,例如在FC1结尾加入如下语句:

    Network X:

    SET

SAVE

2-10没有将RLO位存入BR调用FC1显示状态

    在程序结尾使用SAVE指令后,主程序中调用FC1的在线监控状态变为如图2-11所示,FC1的显示发生变化。


2-11将RLO位存入BR寄存器后调用FC1的显示状态

    SET和CLR指令只有在STL编程中使用,可以将上面的操作结果RLO置位或者复位,影响线圈指令的输出,举例如下:

    SET

    M10.1

    M10.2

    CLR

    M10.3

    M10.4

    语句执行后,Ml0.1、M10.2输出为1,M10.3、M10.4输出为0。

    4.立即读与立即写

    (1)立即读

立即读可以不经过过程映像区的处理,直接读出外设输入地址的信息。例如16点的输入模块设定的地址为10,地址位于过程映像输入区,通常情况下使用输入地址标识符“I”查询输入模块信息,如果CPU的扫描时间为40ms,输入信号的状态需要40ms更新一次。使用立即读的方法,不依赖CPU的扫描时间,当程序执行到该地址区(使用外设地址地址区PI替代I)时,立即更新输入点信号进行逻辑处理。立即读不考虑输入信号的一致性,着重于输入信号的立即采集,适合有严格时间要求的应用,在程序中可以多次使用立即读访问同一个地址区,这样在一个程序执行周期中(一个CPU扫描)可以多次更新一个输入模块的状态(使用过程映像区,一个扫描周期只更新一次)。立即读有固定的编程格式,如图2-12所示。

 

2-12立即读的编程模式

    当程序执行PIW10时,将输入地址为10的16点输入模块的信号状态立即读出(外设输入区只能使用字节、字、双字读出),通过WAND_W(两个字相“与”)指令过滤其他位信号,指令处理如下:

    PIW10    0000000000101010

    W#16#2    00000000000000 1 0

    MW2    00000000000000 1 0

    只对PIW10中第二个位信号进行处理,如果I1.0、第二个位信号为1,字相“与”的结果不为0,< >0导通,赋值M6.1为l。图2-11所示为LAD程序,可以转换为STL程序,在STL程序中使用BR位判断字逻辑结果。

    (2)立即写

立即写与立即读功能相同,可以不经过过程映像区的处理,直接将逻辑结果写到输出地址区。使用立即写不依赖CPU的扫描时间,当程序执行到该地址区(使用外设地址地址区PQ替代Q)时,立即更新输出点状态。在程序中可以多次使用立即写功能访问同一地址区,这样在一个程序执行周期中,可以多次更新一个输出状态。立即写的编程格式如图2-13所示。

 

2-13立即写编程

在程序段1中,Ml0.1为1时,只有经过输出过程映像区更新时才能触发Ql0.1输出(等待一个扫描周期)。在程序段2中,将QB10传送到PQB10中,当程序扫描到PQB10时,立即输出,更新输出模块的状态。