西门子S7300_CPU寄存器状态字的用法

西门子S7300_CPU寄存器状态字的用法

ID:41506910

大小:32.00 KB

页数:4页

时间:2019-08-26

西门子S7300_CPU寄存器状态字的用法_第1页
西门子S7300_CPU寄存器状态字的用法_第2页
西门子S7300_CPU寄存器状态字的用法_第3页
西门子S7300_CPU寄存器状态字的用法_第4页
资源描述:

《西门子S7300_CPU寄存器状态字的用法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、西门子S7300CPU寄存器状态字的用法1.引言CPU寄存器状态字的各位给出了有关指令状态或结果的信息以及所出现的错误,我们可以将二进制逻辑操作状态位信号状态直接集成到程序中,以控制程序执行的流程。2.状态字寄存器   先简单介绍一下CPU中状态字。●首次检查位:状态字的0位称作首次检查位,如果/FC位的信号状态为“0”,则表示伴随着下一条逻辑指令,程序中将开始一个新的逻辑串。FC前面的斜杠表示对FC取反。●逻辑运算结果:状态字的第1位为RLO位(RLO=“逻辑运算结果”),在二进制逻辑运算中用作暂时存储位。比如,一串逻辑指令中的某个指令检查触点的信号状态,并根据布尔逻辑运算规则将检查的结

2、果(状态位)与RLO位进行逻辑门运算,然后逻辑运算结果又存在RLO位中。●状态位:状态位(第2位)用以保存被寻址位的值。状态位总是向扫描指令(A,AN,O,…)或写指令(=,S,R,)显示寻址位的状态(对于写指令,保存的寻址位状态是本条写指令执行后的该寻址位的状态)。●OR位:在用指令OR执行或逻辑操作之前,执行与逻辑操作的时候,就需要用到OR这一状态位。OR位表示先前执行的与逻辑操作产生的值为“1”,于是,逻辑操作或的执行结果就已被确定为“1”。●OV位:溢出表示算术或比较指令执行时出现了错误。根据所执行的算术或逻辑指令结果对该位进行设置。●OS位:溢出存储位是与OV位一起被置位的,而且

3、在更新算术指令之后,它能够保持这种状态,也就是说,它的状态不会由于下一个算术指令的结果而改变。这样,即使是在程序的后面部分,也还有机会判断数字区域是否溢出或者指令是否含有无效实数。OS位只有通过如下这些命令进行复位:JOS(若OS=1,则跳转)命令,块调用和块结束命令●CC1及CC0位:CC1和CC0(条件代码)位给出有关下列结果的相关信息:•算术指令结果•比较指令结果•字逻辑指令•在移位功能中,移出位相关信息。可以用以下指令来检查条件代码CC1和CC0。CC1CC0检查完成后,如果:      00A==0结果=0      10A>0结果

4、>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位未使

5、用。3.具体使用下面我们结合STEP7中的指针编程来具体介绍条件码CC0/CC0的用法。不同的指令在CPU中执行时间是不同的。浮点数比定点数执行时间要长;字逻辑指令比位逻辑指令执行时间要长;在某些程序中适当使用状态字来进行编程可以减少CPU程序的执行时间。   例1:比如说要比较一个DB中块的DBBO-DBB99这100个字节是正数是负数还是0,正数用1来表示;负数用-1来表示;0用0来表示。并且将对应结果存入MB200开始的100个字节中。如果利用条件码来进行编程,既可以减少程序的大小还会减少一定的指令执行时间,我们只需要将中间的比较程序加以优化,即可以达到目的。   例2:根据状态位C

6、0和CC1的状态而跳转的跳转功能指令JZ不改变任何状态位的状态,而且逻辑操作结果RLO值也会“随着”该跳转功能带到跳转程序段中,供用户程序其它逻辑操作之用(不改变/FC状态)。示例:两个整数相减并需进行连续判断:LMW2LMW8-IJZZERO//如果结果等于“0”,则跳转至标号ZERO处//结果不等于“0”时所执行的指令ZERO://结果等于“0”时,所要执行的指令如果用户不熟悉JZ指令和状态位C0和CC1的具体含义,编程时就需要通过比较指令将比较结果存入一个二进制位中,再根据这个二进制位通过JC/JCN指令来控制程序的执行了。    例3:我们实际应用中可能要利用某些协议转换网关(比如

7、说Hilscher公司的NTTAP系列网关)来和某些串口协议的仪表进行通信时,会遇到CRC校验的问题,关于CRC校验时需要判断溢出位是否为1的问题来进行程序的进一步计算。我们以EURO2408的MODBUS通信时需要的CRC校验为例说明CRC校验的步骤:1、装载16#FFFF到一个16位CRC寄存器;2、将CRC寄存器的高8位字节与信息中的第一个8位字节相异或,结果返回到CRC寄存器中;3、将CRC寄存器数据向右移动一位

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。