产品描述
西门子模块1FL6042-2AF21-1AB1
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个字节中
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.结束语
在一般情况下,我们不必考虑这些状态位,但在某些情况下,利用这些状态位并结合一定的指令,可以给我们的编程带来大的灵活性,同时对于进一步提高自己的编程水平也有一定的作用
CPU 317T-3 PN/DP 具有:
微处理器;
处理器处理每条二进制指令执行时间约为 0.025µs,每条浮点数运行指令约为 0.16 µs。 CPU 317T-3 PN/DP 可达到非常高的处理速度,尤其是对于字命令或双字命令以及 32 位**数命令。
1024 KB 工作存储器(相当于约 340 K 条指令);
用于与执行相关的程序组件的大容量工作存储器可为用户程序提供充足空间。 作为程序装载存储器的 SIMATIC 微型存储卡(zui大为 8 MB),也允许将项目(包括符号和注释)保存在 CPU 中,并可用于数据归档和配方管理。
集成输入和输出;
4 点数字量输入和 8 点数字量输出,可用于原点采集 (BERO) 或快速凸轮开关信号等工艺功能。
数字量输入也可在 STEP 7 用户程序中使用(具有一些限制)。
灵活扩展;
zui多 8 个模块(单层组态)
MPI/DP 组合接口;
* 1 个内置 MPI/DP 接口可以zui多同时建立 32 个与 S7-300/400 或与 PG、PC、OP 的连。在这些连接中,始终分别为 编程器和操作员面板各保留一个连接。 通过 MPI 和全局数据通信,可配置含有zui多 32 个 CPU 的简易网络。
可将此接口从 MPI 重新配置为 PROFIBUS DP 接口。DP 接口可用作 DP 主站或 DP 从站运行。
PROFIBUS DP (DRIVE) 接口:
PROFIBUS DP (DRIVE) 接口支持等时同步模式,因此可满足对高速运行及对时间要求严格的运行进行控制的基本要求,例如在同步应用中的分布式轴中的那些运行就存在这样的要求。此接口仅作为 DP 主站接口.它用于连接驱动部件。 除驱动系统外,DP-V0 从站也可在 DP (DRIVE) 支线上运行,但要受到一定限制。技术数据中规定了可连接的驱动器
产品推荐