状态字最低4位的功能与应用

已锁定

Automann

  • 帖子

    6291
  • 精华

    139
  • 被关注

    292

论坛等级:至圣

注册时间:2004-12-23

普通 普通 如何晋级?

状态字最低4位的功能与应用

2761

5

2011-12-17 12:06:10

状态字一共16位,实际上只用了9位,我曾经发过两篇有关状态字的帖子:
1)揭开状态字的首次检测位之谜
http://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=4&a_id=908281&s_id=23&num=31#anch
2)状态字的BR位的作用与使用方法详解
http://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=4&a_id=913501&s_id=23&num=10#anch
它们分别介绍了状态的最低位/FC和最高位BR的作用。本帖将介绍状态字最低4位的作用,并举一些应用的例子。下面还有一篇“状态字中的溢出位和条件码的功能与应用”。
状态字主要用来描述指令执行后的状态,选中指令列表或程序中的某条指令,按F1键打开该指令的在线帮助,可以看到该指令执行后各状态位的状态(见下图),其中的0、1是指令执行后状态位的值,x表示该指令对状态位有影响,短划线“-”表示对状态位没有影响。点击其中绿色的“状态字”,可以查看对状态字各位的描述。



(1)首次检测位
状态字的第0位(最低位)为首次检测位,“/FC”前面的斜杠表示该位为0状态时有效,该位的状态为0表示一个梯形图程序段的开始,或指令为逻辑串(串并联电路块)的第一条指令。
首次检测位为0时,并不执行什么逻辑运算,程序段或逻辑串的第一条A、O、X指令只是将指令中的位变量的值传送给RLO,第一条AN、ON、XN指令将指令中的位变量的值作“非”运算后传送给RLO。如果A、O、X、AN、ON、XN不是第一条指令,则将执行相应的逻辑运算。
不是程序段或逻辑串的第一条指令时/FC位为1,输出类指令(=、R、S等)或与RLO有关的跳转指令将/FC位清零(见下图)。
首次检测位与用户程序没有直接的关系,我觉得可以不管它。
(2)逻辑运算结果
状态字的第1位RLO为逻辑运算结果(Result of Logic Operation)。该位用来存储执行位逻辑指令或比较指令的结果。RLO很重要,在编程语言手册和STEP 7的帮助中经常会看到它。
逻辑运算包括“与”、“或”、“非”运算,触点的串联对应“与”运算,触点的并联对应“或”运算,常闭触点对应“非”运算。
(3)状态位
状态字的第2位为状态位(STA),执行位逻辑指令时,STA与指令中的位变量的0、1状态相同。
(4)或位
状态字的第3位为“或”位(OR),在先串联后并联的电路(见下图)的逻辑运算中,OR位暂存上面的串联电路的“与”运算结果,以便进行后面的并联电路的“或”运算。输出指令将OR位复位,编程时并不直接使用OR位,我觉得也可以不管它。



可以用仿真软件和语句表的程序状态来查看每条指令执行后状态字各位的值。
上图中梯形图和语句表的程序和各变量的状态完全相同。
上面右图的方框中是程序运行时的程序状态监控结果,其中的STATUS WORD是状态字。因为RLO和STA很重要,可以单独监控它们。
可以看出,在执行完第3条指令和最后一条指令之后,状态字的最低位(首次检测位/FC)为0,执行其他指令后,/FC位为1。在执行完上面的串联电路的“与”运算和开始执行下一个梯形图程序段时,/FC位为0。
在仿真时改变I0.4~I0.7的值,可以看到它们所在行的STA的值随之而变,同时也会改变有关的RLO的值。例如将图中的I0.7改为1状态,前两条指令的“与”运算结果为1,可以看到第2条指令的RLO由0变为1,第3条指令的OR位也变为1,即B点的RLO被保存到OR位。
状态字的最低4位除了用于监控外,RLO还用于语句表中的4条跳转指令和梯形图中的状态位触点指令。下面举一个跳转指令的例子:
A I 0.0
FP M 0.0 //上升沿检测指令,上升沿时RLO为1
JCN m001 //不是I0.0的上升沿(RLO为0)则跳转到标号m001所在的行
…… //被跳过的指令
m001: NOP 0
状态字最低4位的功能与应用 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54030条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。