西门子S7-300状态字的3个状态位

来源:电工天下时间:2015-10-24 19:49:32 作者:老电工手机版>>

西门子S7-300状态字的3个状态位

状态字是学习S7-300/400的难点之一。状态位一共9位,为什么从来没有看到某些状态位在用户程序中应用的例子?有3个状态位与用户程序无关,它们是首次检测位/FC、状态位STA和“或”位OR。

S7-200等plc用LD和LDI指令来表示电路块开始的常开触点和常闭触点。S7-300/400没有这样的指令,它是用首次检测位/FC的状态为0来表示一个梯形逻辑程序段的开始,或串并联电路块的第一条指令。

一个程序段的程序:
A   I0.0
A   I0.1
=   Q0.0
执行第一条A指令时,首次检测位为0,CPU将I0.0的值存入状态字的第1位RLO(逻辑运算结果)。这条指令并不做“与”运算。因为此时只有一个操作数,也不可能做“与”运算。
可以把第一条A指令改为O(“或”)、X(“异或”)指令,它们都是将该指令中I0.0的值保存到RLO。

状态字的第2位为状态位(STA),STA位与位逻辑指令中的位变量的值一致。它只是用于语句表的程序状态监控。

状态字的第3位为或位(OR),在将两条串联电路并联时,CPU首先计算出两条串联电路的“与”运算结果,它们分别用RLO和OR位来保存,然后再对它们做“或”运算。

可知,这3个状态位用于CPU 的内部操作或监控,它们与用户程序毫无关系。

1、指令“L  STW”将状态字装载到 累加器1,但是它不装载状态字的/FC、STA和OR位。为什么?因为这3位与用户程序无关,用户程序得到它们也没用。

2、与状态位有关的指令有逻辑控制指令和状态位触点指令,这些指令都与这3个状态位无关。

附,状态字的相关知识。

西门子编程手册说明指令状态字时,BR CC1 CC0 OS OV OR STA RLO /FC<BR>各位下面有1,0,--,叉号代表什么意思?还有写是什么意思?

西门子PLC CPU寄存器状态字的用法(S7300 CPU寄存器状态字的用法):

西门子S7-300CPU寄存器状态字的用法

1.引言
CPU寄存器状态字的各位给出了有关指令状态或结果的信息以及所出现的错误,我们可以将二进制逻辑操作状态位信号状态直接集成到程序中,以控制程序执行的流程。

2.状态字寄存器

CPU中状态字。

首次检查位:状态字的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结果=0
10A>0结果>0
01A<0结果<0
BR位:状态字的第8位称为二进制结果位。它将字处理程序与位处理联系起来,在一段既有位操作又有字操作的程序中,用于表示字逻辑是否正确。

将BR位加入程序后,无论字操作结果如何,都不会造成二进制逻辑链中断。

在梯形图的方块指令中,BR位与ENO位有对应关系,用于表明方块指令是否被正确执行:如果执行出现了错误,BR位为0,ENO位也为0;如果功能被正确执行,BR位为1,ENO位也为1。在用户编写的FB/FC程序中,应该对BR位进行管理,功能块正确执行后,使BR位为1,否则使其为0。使用SAVE指令将RLO存入BR中,从而达到管理BR位目的。

状态字的9-15位未使用。

3.具体使用
下面我们结合STEP7中的指针编程来具体介绍条件码CC0/CC0的用法。
不同的指令在CPU中执行时间是不同的。浮点数比定点数执行时间要长;字逻辑指令比位逻辑指令执行时间要长;在某些程序中适当使用状态字来进行编程可以减少CPU程序的执行时间。

例1:比如说要比较一个DB中块的DBBO-DBB99这100个字节是正数是负数还是0,正数用1来表示;负数用-1来表示;0用0来表示。并且将对应结果存入MB200开始的100个字节中。我们通常的做法可能为:
西门子S7-300状态字的3个状态位1

如果利用条件码来进行编程,既可以减少程序的大小还会减少一定的指令执行时间,只需要将中间的比较程序加以优化,即可以达到目的。
西门子S7-300状态字的3个状态位2

例2:根据状态位C0和CC1的状态而跳转的跳转功能指令JZ不改变任何状态位的状态,而且逻辑操作结果RLO值也会“随着”该跳转功能带到跳转程序段中,供用户程序其它逻辑操作之用(不改变/FC状态)。
示例两个整数相减并需进行连续判断:
LMW2
LMW8
-I
JZZERO//如果结果等于“0”,则跳转至标号ZERO处
//结果不等于“0”时所执行的指令
ZERO://结果等于“0”时,所要执行的指令

如果用户不熟悉JZ指令和状态位C0和CC1的具体含义,编程时就需要通过比较指令将比较结果存入一个二进制位中,再根据这个二进制位通过JC/JCN指令来控制程序的执行了。

例3:要利用某些协议转换网关(比如说Hilscher公司的NTTAP系列网关)来和某些串口协议的仪表进行通信时,会遇到CRC校验的问题,关于CRC校验时需要判断溢出位是否为1的问题来进行程序的进一步计算。

以EURO2408的MODBUS通信时需要的CRC校验为例说明CRC校验的步骤:
1、装载16#FFFF到一个16位CRC寄存器;
2、将CRC寄存器的高8位字节与信息中的第一个8位字节相异或,结果返回到CRC寄存器中;
3、将CRC寄存器数据向右移动一位;
4、如果溢出的位等于1,则将CRC寄存器与16#A001相异或,结果返回到CRC寄存器中;
4、如果溢出的位等于0,则重复第3步;
5、重复第3、4步骤,直到已经移位了8次;
6、将CRC寄存器的高8位字节与信息中的下一个8位字节相异或,结果返回到CRC寄存器中;
7、重复第3步到第6步,直到信息中所有字节都与CRC寄存器相异或,并都移位了8次;
8、最后的CRC寄存器中的结果即为CRC校验码,最后被添加到信息(数据)的末尾(交换!低8位在前,高8位在后;)
在第4步中需要判断溢出的位是否为1,如何判断对于整个程序有着重要的影响。
可以用A>0指令来判断这个条件,具体代码的编写,有兴趣时大家可以根据上面的步骤编写一个自己的CRC程序。

4、小结
在一般情况下,不必考虑这些状态位,但在某些情况下,利用这些状态位并结合一定的指令,可以给编程带来更大的灵活性,同时对于进一步提高自己的编程水平也有一定的作用。

相关文章
  • 西门子s7-300 plc绝对寻址与符号寻址的功能说明

    西门子s7-300 plc绝对寻址与符号寻址的功能说明

    西门子s7-300 plc绝对寻址和符号寻址,绝对地址包含地址标识符和内存位置,STEP 7可以自动地将符号名称翻译成所需要的绝对地址,西门子step7中的绝对寻址与符号寻址的实例教程。

    时间:2020-11-17 13:19:15

  • 西门子s7-300增加模拟量输入模块过程的步骤

    西门子s7-300增加模拟量输入模块过程的步骤

    西门子s7-300增加模拟量输入模块过程的步骤,分为九个步骤与一个注意问题,改造工程提前办理工作票,准备用要用的工具及材料,当配置下载成功后,进入软件程序设计划面调用FC105进行量程变换。

    时间:2020-04-23 11:24:40

  • 西门子s7-300定时器的剩余时间参与比较的方法

    西门子s7-300定时器的剩余时间参与比较的方法

    西门子s7-300定时器的剩余时间参与比较的方法,要求剩余时间值与5s比较,所以MW10中BI剩余时间值应与50(单位为100ms,即5s)比较,在脉冲定时器定时时断开输入端,剩余时间值保持不变。

    时间:2020-04-23 10:19:13

  • 西门子s7-300 plc定时器指令的类型与用法

    西门子s7-300 plc定时器指令的类型与用法

    西门子s7-300 plc定时器指令的类型与用法,西门子S7-300有五种类型的定时器,三种类型的计数器,有关延时通定时器指令、锁存型延时通定时器指令、延时断定时器指令、脉冲定时器指令、脉冲扩展定时器指令的用法。

    时间:2020-04-23 10:12:27

  • 西门子s7-300支持的传感器类型有哪些

    西门子s7-300支持的传感器类型有哪些

    西门子s7-300支持的传感器类型西门子plc s7-300的di模块很多,其具体参数需要在硬件组态中查看。1、s7-300的大部分di模块均为漏型(选取pnp型的传感器),在硬件组态时不提示源型或漏型。

    时间:2020-04-23 09:36:17

  • 西门子s7-300子程序执行时间的是多少

    西门子s7-300子程序执行时间的是多少

    有关西门子s7-300执行子程序时间的查看方法,分享了西门子s7-300执行子程序时间的具体查看步骤,可在主程序调用该子程序的前后分别读取cpu的系统时钟,利用时钟指令fc34进行相减进行编程运算。

    时间:2020-04-08 13:32:13

  • 西门子s7-300下载程序报错原因分析

    西门子s7-300下载程序报错原因分析

    有关西门子s7-300下载程序的报错原因,西门子s7-300下载程序报错原因查找方法,地址间断连续,说明模拟量模块有问题,在硬件组态中点击“离线—在线”。

    时间:2020-04-08 12:38:52

  • 西门子s7-300 cpu系统扫描循环时间的查看办法

    西门子s7-300 cpu系统扫描循环时间的查看办法

    如何查看西门子s7-300中cpu系统扫描循环时间,有二种方法,方法1:将程序下载到plc中,在线连接并查看cpu信息,方法2:通过将OB1对应的临时变量传到M区中,读取CPU的扫描循环时间。

    时间:2020-04-08 11:52:20

Copyright © 2015 - 2022 dgjs123.com All Rights Reserved

电工天下 版权所有