• 怎样理解状态字


    FAQ(常见问题)

    Case No.

    产品类型:STEP 7 Software

    问题:怎样理解状态字(status word)?

     

    1. /FC,首次检测位

    ü  状态字的第0位——“/FC”称为“首次检测位”,控制一串逻辑指令的顺序。“/FC”位信号状态为“0”,说明用户程序中从这一点开始下面的逻辑指令,作为新的逻辑串(换而言之:在每一个逻辑串开始时,“/FC”位总为0)。

    ü  每一个逻辑指令检测“/FC”位的状态,就像指令检测它的寻址接点一样,决定了指令对其寻址状态、信号状态检测结果的存放位置。如果“/FC”位的状态为0,逻辑指令将结果存在(逻辑操作的结果位)“RLO”中,并将“/FC”位的状态置为1。这一过程,称为“首次检测”。经过首次检测存放在“RLO”中的0或者1,被称为“首次检测的结果”。

    ü  在一个逻辑串中,当CPU完成逻辑串中的第一条指令以后,“/FC”位的状态一直为1。当“/FC”位为1时,指令操作将其寻址接点的“检测结果状态”与先前存放在“RLO”中的状态结合起来。

    ü  一串逻辑指令总是以一个输出指令(如:S、R、=),或者一个与逻辑操作结果相关的条件跳转指令(JC),或者一个嵌套指令[ 如:A(、O(、X(、AN(、ON(、XN( ] 作为结束。这些输出指令、跳转指令、嵌套指令将“/FC”位复位至0。

    1. RLO,逻辑操作的结果

    ü  状态字的第1位——“RLO”称为“逻辑操作的结果(Result of logic operation)”,存放一个位逻辑指令,或者算术比较指令的结果。

    ü  例如,在一串“位逻辑指令”中的第二条指令,检测寻址接点的信号状态,并且产生一个“0或者1的结果”。然后,指令将这一“0或者1的结果”和状态字中的“RLO”值进行布尔逻辑运算,结果代替上一次的“RLO”值,并且存放在状态字的“RLO”中。

    ü  每一个接下来逻辑串中的指令,均是根据这两个值(一个值为“指令检测寻址接点所产生的结果”,另一个值为“当前的RLO”)进行布尔逻辑运算操作。

    ü  用户可以使用“SET”指令,无条件置位RLO为1;使用“CLR”指令,无条件复位RLO为0。用户可以使用RLO的状态,触发跳转指令。

    ü  在一串“位逻辑指令”中的第一条指令,检测寻址接点的信号状态,并且产生一个“1的检测结果”,存放在RLO位,并且将“/FC”位复位至0。

    语句表程序

    输入I或者输出Q的信号状态

    检测结果

    RLO

    /FC

    说明

     

     

     

     

    0

    “/FC”位为0,说明下一个指令开始新的逻辑串操作;

    A I0.0

    1

    1

    1

    1

    首次检测的逻辑结果,存放在RLO中,“/FC”位置1

    AN I0.1

    0

    1

    1

    1

    将“逻辑检测结果”与上一个“RLO”操作,放置在“RLO”中。“/FC”位置1

    = Q4.0

    1

     

     

    0

    将“RLO”赋值给输出线圈,“/FC”位复位为0

    图表 2

    1. STA,状态位

    ü  状态字的第2位——“STA”称为“状态位”;

    ü  一个读取存储区“位操作”的指令(如,A、AN、O、ON、X、XN)状态,总是与指令检测的位(即“逻辑操作的位”)状态一致;

    ü  一个写入存储区“位操作”的指令(如,S、R操作)状态,总是和指令所指明的“位”或者“数值”的状态一致;

    ü  对于不访问存储区的指令来说,状态位没有意义。

    1. OR,或位

    ü  状态字的第3位——“OR”称为“或位”;

    ü  如果使用O指令执行“或操作”之前,需要逻辑“与操作”(如,A、AN、NOT),则必须使用OR(或位)。

    1. OV,溢出位

    ü  状态字的第5位——“OV”称为“溢出位”;

    ü  “溢出位”表明一个错误。如果,一个“算术指令”或者一个“浮点数比较指令”执行出现错误(如,溢出、非法操作、非法浮点数),“溢出位”被置位操作处理;

    ü  如果下一个“算术指令”或者一个“浮点数比较指令” 正确执行,则复位该状态位。

    1. OS,存储溢出位

    ü  状态字的第4位——“OS”称为“存储溢出位”;

    ü  当一个错误产生,“OS”存储溢出位和“OV”溢出位一起被置位为1。另外,“OS”存储溢出位在错误被清除以后仍然被置位。并且,指明在先前的指令执行中是否产生了错误。

    ü  JOS(Jump label if OS=1,存储溢出后跳转)块的调用指令,可以使“OS”存储溢出位复位为0;

    ü  Call(Block Call)块的调用指令,可以使“OS”存储溢出位复位为0;

    ü  BE(Block End)块结束指令的调用,可以使“OS”存储溢出位复位为0。

    1. CC1、CC0,条件码1和条件码0

    状态字的第6、7位——“CC1、CC0”称为“条件码1和条件码0”,可以被用来作为有条件跳转(conditional jump instructions)。

    1. BR,二进制结果位

    ü  状态字的第8位——“BR”称为“二进制结果位”。

    ü  “BR”位代表机器内部的存储位。此位的状态是先前的字操作逻辑改变了“RLO”位状态,而存入的。因此,对于连续中断“位逻辑串”操作以后,可以再次使用“RLO”位;

    ü  “BR”位相当于LAD方块图的使能输出(ENO)。用户可以应用SAVE指令,在“BR”位中存放RLO位状态。如:

    1)      当FB、FC、SFC、SFB被正确执行时,在“BR”位中存放RLO位状态为“1”;

    2)      当FB、FC、SFC、SFB被错误执行时,在“BR”位中存放RLO位状态为“0”;

  • 相关阅读:
    【转】 VC MFC 钩子 实现 自绘 窗体 标题栏 非客户区
    Scintilla开源库使用指南(二)
    Scintilla开源库使用指南(一)
    【转】MFC 多文档
    多视图识别
    获得MFC窗口其它类指针的方法
    sql2005 查看数据库或表大小的系统存储过程 sp_spaceused
    哪里是乐土?关于团队良性循环 (转)
    项目管理反思——前言
    项目经理思考——团队
  • 原文地址:https://www.cnblogs.com/hefengweiliang/p/9330161.html
Copyright © 2020-2023  润新知