STL状态字的使用.docx_第1页
STL状态字的使用.docx_第2页
STL状态字的使用.docx_第3页
STL状态字的使用.docx_第4页
STL状态字的使用.docx_第5页
免费预览已结束,剩余5页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

STL状态字问题悬赏分:5 - 解决时间:2009-2-911:47 最近在学习STL语言,每个指令都有个状态字,BR,CC1,CC0,OV,OS,OR,STA,RLO,/FC,这些状态位都代表什么含意?怎么个用法呢?希望各位老师指点一下,越详细越好! 问题ID: 31231提问者:工控 - 毕业实践员第4级最佳答案首次检查位:状态字的0位称作首次检查位,如果/FC位的信号状态为“0”,则表示伴随着下一条逻辑指令,程序中将开始一个新的逻辑串。FC前面的斜杠表示对FC取反。逻辑运算结果:状态字的第1位为RLO位(RLO=“逻辑运算结果”),在二进制逻辑运算中用作暂时存储位。比如,一串逻辑指令中的某个指令检查触点的信号状态,并根据布尔逻辑运算规则将检查的结果(状态位)与RLO位进行逻辑门运算,然后逻辑运算结果又存在RLO位中。状态位:状态位(第2位)用以保存被寻址位的值。状态位总是向扫描指令(A,AN,O,)或写指令(=,S,R,)显示寻址位的状态(对于写指令,保存的寻址位状态是本条写指令执行后的该寻址位的状态)。OR位:在用指令OR执行或逻辑操作之前,执行与逻辑操作的时候,就需要用到OR这一状态位。OR位表示先前执行的与逻辑操作产生的值为“1”,于是,逻辑操作或的执行结果就已被确定为“1”。OV位:溢出表示算术或比较指令执行时出现了错误。根据所执行的算术或逻辑指令结果对该位进行设置。OS位:溢出存储位是与OV位一起被置位的,而且在更新算术指令之后,它能够保持这种状态,也就是说,它的状态不会由于下一个算术指令的结果而改变。这样,即使是在程序的后面部分,也还有机会判断数字区域是否溢出或者指令是否含有无效实数。OS位只有通过如下这些命令进行复位:JOS(若OS=1,则跳转)命令,块调用和块结束命令。CC1及CC0位:CC1和CC0(条件代码)位给出有关下列结果的相关信息:算术指令结果比较指令结果字逻辑指令在移位功能中,移出位相关信息。可以用以下指令来检查条件代码CC1和CC0。CC1CC0检查完成后,如果:00A=0结果=010A0结果001A0结果0BR位:状态字的第8位称为二进制结果位。它将字处理程序与位处理联系起来,在一段既有位操作又有字操作的程序中,用于表示字逻辑是否正确。将BR位加入程序后,无论字操作结果如何,都不会造成二进制逻辑链中断。在梯形图的方块指令中,BR位与ENO位有对应关系,用于表明方块指令是否被正确执行:如果执行出现了错误,BR位为0,ENO位也为0;如果功能被正确执行,BR位为1,ENO位也为1。在用户编写的FB/FC程序中,应该对BR位进行管理,功能块正确执行后,使BR位为1,否则使其为0。使用SAVE指令将RLO存入BR中,从而达到管理BR位目的。状态字的9-15位未使用。 回答者: yhk - 初级工程师第9级 2009-2-511:45提问者对于答案的评价:很详细,非常感谢!30天内的投票结果: 好50% (0)不好 50% (0)其他回答楼上的已经详细的解释了状态字的意义他说的很对我想说的是你对状态字的认识有一定的误区不是“每个指令都有状态字”状态字和地址寄存器等一样,是CPU里面的一个区域大小是16位就是一个字;我们给这个区域取名位状态字,各个位的意思如楼上所说;而指令的执行结果受到状态字的影响,并且指令也会影响到状态字,即修改状态字;回答者: sqzth - 中级技术员第6级 2009-2-512:02好多指令执行完后的状态字,你可以不用理会的,要的时候才去捡回来回答者: Youder - 毕业实践员第4级 2009-2-512:09要想得到非手册解释,就到300论坛里搜索,300论坛里有更好的解释,讨论的次数更多。回答者: LaoHuai - 高级工程师第11级 2009-2-513:09看起来是很简单!但应用起来就麻烦了!回答者: 轻轻飞 - 顶级工程师第12级 2009-2-513:25状态字的编程较复杂,感觉常用的是RLO与BR位的操作回答者: 实在 - 高级技术员第7级 2009-2-513:57学习了。回答者: yanjiuximenzi - 初级技术员第5级 2009-2-521:11Step7里就有帮助,非常清楚SIEMENSSTEP7编程状态字的作用定义状态字用于表示CPU执行指令时所具有的状态。一些指令是否执行或以何方式执行可能取决于状态字中的某些位;执行指令时也可能改变状态字中的某些位,也能在位逻辑指令或字逻辑指令中访问并检测他们。状态字的结构如下:Bit: 31 8 7 6 5 4 3 2 1 0 BRCC1CC0OVOSORSTARLO/FC(1) 首位检测位(/FC)状态字的位0称为首位检测位。若位的状态为0,则表明一个梯形逻辑网络的开始,或指令为逻辑串的第一条指令。CPU对逻辑串第一条指令的检测(称为首位检测)产生的结果直接保存在状态字的RLO位中,经过首次检测存放在RLO中的0或1被称为首位检测结果。位在逻辑串的开始时总是0,在逻辑串指令执行过程中位为1,输出指令或与逻辑运算有关的转移指令(表示一个逻辑串结束的指令)将清0。(2) 逻辑操作结果(RLO)状态字的位1称为逻辑操作结果RLO(Result of Logic Operation)。该位存储逻辑指令或算术比较指令的结果。在逻辑串中,RLO位的状态能够表示有关信号流的信息。RLO的状态为1,表示有信号流(通);为0,表示无信号流(断)。可用RLO触发跳转指令。(3) 状态位(STA)状态字的位2称为状态位。状态位不能用指令检测,它只是在程序测试中被CPU解释并使用。如果一条指令是对存储区操作的位逻辑指令,则无论是对该位的读或写操作,STA总是与该位的值取得一致;对不访问存储区的位逻辑指令来说,STA位没有意义,此时它总被置为1。初始条件:M1.1=0 M1.2=1 M1.3=0程序状态字解释A M 1.10_0000_0001BIT0=1表示指令开始执行,初始/FC为0,当程序执行时为1;BIT1=0,由于A M1.1=0,A M 1.1必然运行结果为0,即RLO为0,故BIT1=0;BIT2=0表示存储的位M1.1为0。A M 1.20_0000_0101BIT0=1表示指令正在执行;BIT1=0,由于A M1.1=0, A M1.2=1,运行结果为1,即RLO为0;BIT2=1表示存储的位M1.2为0。AN M 1.30_0000_0001BIT0=1表示指令正在执行;BIT1=0,由于A M1.1=0, A M1.2=1,A M1.3=0,运行结果为0,即RLO为0;BIT2=1表示存储的位M1.2为0。= M 1.40_0000_0000BIT0=0表示指令执行结束;BIT1=0,由于A M1.1=0, A M1.2=1,A M1.3=0,= M 1.4,运行结果为0,即RLO为0;BIT2=1表示存储的位M1.4为0。初始条件:M1.1=1 M1.2=1 M1.3=0程序状态字解释A M 1.10_0000_0111BIT0=1表示指令开始执行,初始/FC为0,当程序执行时为1;BIT1=1,由于A M1.1=1,A M 1.1必然运行结果为1,即RLO为1,故BIT1=1;BIT2=1表示存储的位M1.1为1。A M 1.20_0000_0111BIT0=1表示指令正在执行;BIT1=1,由于A M1.1=1, A M1.2=1,运行结果为1,即RLO为1;BIT2=1表示存储的位M1.2为0。AN M 1.30_0000_0011BIT0=1表示指令正在执行;BIT1=0,由于A M1.1=1, A M1.2=1,A M1.3=0,运行结果为1,即RLO为1;BIT2=1表示存储的位M1.2为0。= M 1.40_0000_0110BIT0=0表示指令执行结束;BIT1=0,由于A M1.1=1, A M1.2=1,A M1.3=0,= M 1.4,运行结果为1,即RLO为1;BIT2=1表示存储的位M1.4为1。(4) 或位(OR)状态字的位3称为或位(OR)。在先逻辑“与”后逻辑“或”的逻辑串中,OR位暂存逻辑“与”的操作结果,以便进行后面的逻辑“或”运算。其它指令将OR位清0。初始条件:M1.1=1 M1.2=1 M1.3=0程序状态字解释A M 1.10_0000_0111BIT0=1表示指令开始执行,初始/FC为0,当程序执行时为1;BIT1=1,由于A M1.1=1,A M 1.1必然运行结果为1,即RLO为1,故BIT1=1;BIT2=1表示存储的位M1.1为1。A M 1.20_0000_0111BIT0=1表示指令正在执行;BIT1=1,由于A M1.1=1, A M1.2=1,运行结果为1,即RLO为1;BIT2=1表示存储的位M1.2为0。O0_0000_1111如果O指令前M1.1,M1.2“与”结果1,则OR位1AN M 1.30_0000_1011BIT0=1表示指令正在执行;BIT1=0,由于A M1.1=1, A M1.2=1,A M1.3=0,运行结果为1,即RLO为1;BIT2=1表示存储的位M1.2为0;BIT3=0,O的结果。= M 1.40_0000_0110BIT0=0表示指令执行结束;BIT1=0,由于A M1.1=1, A M1.2=1,A M1.3=0,= M 1.4,运行结果为1,即RLO为1;BIT2=1表示存储的位M1.4为1;BIT3=1,O结束。(5) 溢出状态保持位(OS)状态字的位4称为溢出状态保持位(或称为存储溢出位)。如果浮点或算术运算出现问题,触发OV位并置位OS位,故障消除,OS位保持,即OV被置1时OS也被置1,OV被清0时OS仍保持。所以它保存了OV位。可用于指明在先前的一些指令执行中是否产生过错误。只有下面的指令才能复位OS位:JOS(OS=1时跳转)、块调用指令、块结束指令自动复位OS位。(6) 溢出位(OV)状态字的位5称为溢出位。溢出位被置1,表明一个算术运算或浮点数比较指令执行时出现错误(错误:溢出、非法操作、不规范格式)。后面的算术运算或浮点数比较指令执行故障消除结果正常的话OV位就被清0。(7) 条件码1(CC1)和条件码0(CC0)状态字的位7和位6称为条件码1和条件码0。这两位结合起来用于表示在累加器1中产生的算术运算或逻辑运算结果与0的大小关系;比较指令的执行结果或移位指令的移出位状态。详见下表。算术运算后的CC1和CC0CClCCO算术运算无溢出整数算术运算有溢出浮点数算术运算有溢出00结果0整数加时产生负范围溢出平缓下溢01结果0乘时负范围溢出;加、减、取负时正溢出负范围溢出10结果0乘、除时正溢出;加、减时负溢出正范围溢出11在除时除数为0非法操作比较、移位和循环移位、字逻辑指令后的CC1和CC0CClCCO比较指令移位和循环指令字逻辑指令00累加器2累加器1移位0结果001累加器2累加器110累加器2累加器1结果011不规范(只用于浮点数比较)移出位1(8) 二进制结果位(BR)状态字的位8称为二进制结果位。它将字处理程序与位处理联系起来,在一段既有位操作又有字操作的程序中,用于表示字操作结果是否正确(异常)。将BR位加入程序后,无论字操作结果如何,都不会造成二进制逻辑链中断。在LAD的方块指令中,BR位与ENO有对应关系,用于表明方块指令是否被正确执行:如果执行出现了错误,BR位为0,ENO也为0;如果功能被正确执行,BR位为1,ENO也为1。在用户编写的FB和FC程序中,必须对BR位进行管理,当功能块正确运行后使BR位为1,否则使其为0。使用STL指令SAVE或LAD指令(SAVE),可将RLO存入BR中,从而达到管理BR位的目的。当FB或FC执行无错误时,使RLO为1并存入BR,否则,在BR中存入0。BR位 (二进制结果位) 时状态字的第8位,用于将前一功能的结果传递给接下来执行的功能。下表解释了BR位的含义并指出了其用法。序号BR位的含义及用法1在FBD/LAD 编辑环境中,BR位的值被传递到功能块的输出 ENO (FBs/FCs和 SFBs/SFCs)。 如果BR = 1,紧接下来的EN=1 (=BR)的功能或功能块被执行或被单独调用。 如果BR = 0,紧接下来的EN=0 (=BR)的功能或功能块既不被执行或也不被单独调用。2如果在FBD/LAD 编辑环境中使用字操作(如ADD_.) 或其他非二进制操作,操作执行成功则 BR = 1 ,而发生处理错误 (如:溢出) 则 BR = 0。在这种情况下,后续的功能或功能块的调用由 BR位控制。3如果使用STL创建一个功能或功能块并在FBD/LAD 编辑环境中调用,则必须在退出功能或功能块前将逻辑操作结果(RLO) 保存到BR位中。使用指令SAVE, JCB 和SPBNB 来使能ENO(参见下文)。4如果调用SFB或SFC,BR位的状态指示CPU执行SFB或SFC是否正确。 如果执行过程中出错,则BR位值为0。 如果执行过程中未出错,则BR位值为1。5SAVE SAVE 指令将 RLO 存入BR位。 首次检查位 /FC 未复位。鉴于这个原因, 如果接下来的网络中是AND 操作,BR位的状态被包含在逻辑操作中。 不推荐在同一个块或更低层的块中使用SAVE 指令后查询BR位,因为如果中间操作太多会导致BR位的值变化。 最好是在退出块之前使用SAVE 指令,因为这样的话 ENO 输出(=BR位)的值即为RLO位的值,可以在这之后立即加上错误处理。 JCB 指令jump label 即为跳转目的地的符号名称。 如果RLO = 1,JCB 指令中断线性程序的执行并跳转到跳转目的地。 线性程序的执行在跳转目的地继续执行。 跳转目的地由跳转符号来标明。 如果RLO = 0, 则不跳转。RLO被置1。程序继续执行下面的指令。7JNB 指令跳转目的地由跳转符号来标明。 如果RLO = 0,JNB 指令中断线性程序的执行并跳转到跳转目的地。 线性程序的执行在跳转目的地继续执行。 如果RLO = 1,则不跳转。RLO被置1。程序继续执行下面的指令。状态字的位信号,可以在程序中使用指令进行操作,如调用SET、CLR指令直接对RLO位进行操作。在调试阶段,可以根据状态位的状态调试程序,如使用STA、RLO位的信号可以判断操作地址的状态和指令处理结果,状态字是调试STL程序不可缺少的工具。浅谈CPU状态字寄存器雷浩(无锡市北辰自动化技术有限公司)1.引言CPU寄存器状态字的各位给出了有关指令状态或结果的信息以及所出现的错误,我们可以将二进制逻辑操作状态位信号状态直接集成到程序中,以控制程序执行的流程。 2.状态字寄存器先简单介绍一下CPU中状态字。 首次检查位:状态字的0位称作首次检查位,如果/FC 位的信号状态为“0”,则表示伴随着下一条逻辑指令,程序中将开始一个新的逻辑串。FC前面的斜杠表示对FC取反。 逻辑运算结果:状态字的第1位为RLO 位(RLO= “逻辑运算结果”),在二进制逻辑运算中用作暂时存储位。比如,一串逻辑指令中的某个指令检查触点的信号状态,并根据布尔逻辑运算规则将检查的结果(状态位)与RLO位进行逻辑门运算,然后逻辑运

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论