西门子S7状态字使用
西门子S高级编程培训状态位指令.pptx

操作模式
第9页/共14页
BE 块结束指令BEU 无条件块结束指令(在块内)BEC 条件块结束指令(取决于 RLO位)
(RET) 在 LAD 编程语言中
在 FBD编程语言中
A UO 无序指令 在LAD 和FBD 中进行检查
第3页/共14页
| |
带有状态位的指令
指令码 含义 示例SET 将RLO位设置为“1“ SET //RLO-1
= M 0.1CLR 将RLO位设置为“0“ CLR //RLO-0NOT 将 RLO位取反 O 手动模式;
O 自动模式;
练习 1.3:跳转分支编程
功能:
第13页/共14页
JU 标号1) 无条件跳转JC 标号1) 如果“RLO” =1,则跳转JCN标号1) 如果“RLO” =0,则跳转JCB标号1) 如果“RLO” =1,则跳转,并将RLO保存在BR位中JNB标号1) 如果“RLO” =0,则跳转,并将RLO保存在BR位中JBI标号1) 如果“BR” =1,则跳转JNBI标号1) 如果“BR” =0,则跳转JO标号1) 如果状态字中的“OV”位 =1,则跳转JOS标号1) 如果状态字中的“OS” 位=1,则跳转 1) 标号可以由4位字母-数字字符组成
NOT;
= 操作模式
= M0.0
SAVE 以二进制形式保存RLO 结果
A BR 检查二进制形式结果
| |
| |
| |
( )
()
| |
第4页/共14页
块调用或复杂功能中的BR位及ENO
LAD
STL
第5页/共14页
取决于状态位的跳转功能
第6页/共14页
取决于条件代码的跳转功能
JZ 标号1) 如果状态字“CC 1”位=0且“CC 0”位=0,则跳转 (结果 = 0)JN标号1) 如果状态字“CC 1”位不等于“CC 0”位,则跳转 (结果 <> 0)JP标号1) 如果状态字“CC 1”位=1且“CC 0”位=0(结果=0),则跳转 (结果 > 0)JM标号1) 如果状态字“CC 1”位=0且“CC 0”位=1(结果=0),则跳转 (结果 < 0)JPZ标号1) JZ和JP联合使用,同时满足条件,则跳转 (结果 >= 0)JMZ标号1) JM和JZ联合使用,同时满足条件,则跳转 (结果 <= 0)JUO标号1) 如果是无效的实数或者除数为0,则跳转
变频器控制字状态字

字体大小:大| 中| 小2010-02-11 12:51 - 阅读:143 - 评论:3工控网曾有过关于主题的文章,很精华,没找到链接,抱歉!下面给您一篇我曾摘自工控网的技术文章:1.通讯方式的设定:PPO 4,这种方式为0 PKW/6 PZD,输入输出都为6个PZD,(只需要在STEP7里设置,变频器不需要设置);PROFIBUS的通讯频率在变频器里也不需要设置,PLC方面默认为1.5MB.在P60=7设置下,设置P53=3,允许CBP(PROFIBUS)操作.P918.1设置变频器的PROFIBUS地址.2.设置第一与第二个输入的PZD为PLC给变频器的控制字,其余四个输入PZD这里没有用到.设置第一与第二个输出的PZD为变频器给PLC的状态字,设置第三个为变频器反馈给PLC 的实际输出频率的百分比值,第四个为变频器反馈给PLC的实际输出电流的百分比值,其余两个输出PZD这里没有用到.3.PLC给变频器的第一个PZD存储在变频器里的K3001字里.K3001有16位,从高到底为3115到3100(不是3001.15到3001.00).变频器的参数P554为1时变频器启动为0时停止,P571控制正转,P572控制反转.如果把P554设置等于3100,那么K3001的位3100就控制变频器的启动与停止,P571设置等于3101则3101就控制正转,P572设置等于3102则3102就控制反转.(变频器默认P571与P572都为1时正转,都为0时为停止).经过这些设置后K3001就是PLC给变频器的第一个控制字.此时K3001的3100到3115共16位除了位3110控制用途都不是固定的,所以当设置P554设置等于3101时则3101可以控制启动与停止,P571等于3111时则3111控制正转,等等.K3001的位3110固定为“控制请求”,这位必须为1变频器才能接受PLC的控制讯号,所以变频器里没有用一个参数对应到这个位,必须保证PLC发过来第一个字的BIT 10为1.这里设置为:P554=3100,P571=3101,P572=3102,当PLC发送W#16#0403时(既0000,0100,0000,0011)变频器正转.4.PLC给变频器的第二个PZD存储在变频器里的K3002字里.变频器的参数P443存放给定值.如果把参数P443设置等于K3002,那么整个字K3002就是PLC给变频器的主给定控制字. PLC发送过来的第二个字的大小为0到16384(十进制),(对应变频器输出的0到100%),当为8192时,变频器输出频率为25Hz.5.变频器的输出给PLC的第一个PZD字是P734.1,第二个PZD字是P734.2,等等.要想把PLC接收的第一个PZD用作第一个状态字,需要在变频器里把P734.1=0032(既字K0032),要想把PLC接收的第二个PZD用作第二个状态字,需要在变频器里把P734.2=0033(既字K0032).(K0032的BIT 1为1时表示变频器准备好,BIT 2表示变频器运行中,等等.)(变频器里存贮状态的字为K0032,K0033等字,而变频器发送给PLC的PZD是P734.1,P734.2等)在变频器里把P734.3=0148,在变频器里把P734.4=0022,则第三个和第四个变频器PZD分别包含实际输出频率的百分比值和实际输出电流的百分比值6.程序:(建立DB100,调用SFC14,SFC15,6SE7的地址为512既W#16#200)A. 读出数据CALL "DPRD_DAT"LADDR :=W#16#200RET_VAL:=MW200RECORD :=P#DB100.DBX0.0 BYTE 12(读取12个BYTE)NOP 0B. 发送数据CALL "DPWR_DAT"LADDR :=W#16#200RECORD :=P#DB100.DBX12.0 BYTE 12(写入12个BYTE)RET_VAL:=MW210NOP 0C. L "DB100".DBW0T "MW20"NOP 0D. L "DB100".DBW2T "MW22"NOP 0则:DB100.DBX 13.0 控制启动与停止;DB100.DBX 13.1 控制正转;DB100.DBX 13.2 控制反转;M21.1 变频器READY;M21.3 变频器FAULT.不同的通讯方式有不同的通讯连接虽然先前也会一部分,但是楼主的详细说明,个人感觉,还是细致入微的。
西门子S7状态字使用

.引言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(条件代码)位给出有关下列结果的相关信息:• 算术指令结果• 比较指令结果• 字逻辑指令• 在移位功能中,移出位相关信息。
西门子plc与西门子变频器通讯的控制字与状态字西门子plc

西门子plc与西门子变频器通讯的把握字与状态字 - 西门子plc最近调试涉及到西门子plc与6SE70变频器通讯,由于以前没有深化接触过西门子的通讯连接,有关于把握字和状态字的问题比较挠头,询问了有阅历的专家,现在刚刚懂了点皮毛,好记性不如烂笔头,先抓紧登记来,以后渐渐深化学习,也供大家参考。
这里仅举一个启动变频器与速度给定的例子。
在这里接受的是PPO 5的通讯方式,这样应当会有10个PZD,但这里我们先只用前两个PZD。
PLC给变频器的第一个PZD存储在变频器里的K3001字里。
K3001有16位,从高到底为3115到3100(不是3001.15到3001.00),变频器的参数P554为1时变频器启动为0时停止,P571把握正转,P572把握反转,假如把P554设置等于3100,那么K3001的位3100就把握变频器的启动与停止,P571设置等于3101则3101就把握正转,P572设置等于3102则3102就把握反转。
经过这些设置后K3001就是PLC 给变频器的第一个把握字。
此时K3001的3100到3115共16位除了位3110把握用途都不是固定的,所以当设置P554设置等于3101时则3101也可以把握启动与停止,P571等于3111时则3111把握正转,等等。
由于K3001的位3110固定为“把握恳求”,这位必需为1变频器才能接受PLC的把握讯号,所以变频器里没有用一个参数对应到这个位。
PLC给变频器的其次个PZD存储在变频器里的K3002字里,变频器的参数P443存放给定值,假如把参数P443设置等于K3002,那么整个字K3002就是PLC给变频器的主给定把握字。
PLC发送过来的其次个字的大小为0到16384(十进制—),(对应变频器输出的0到100%),当为8192时,变频器输出频率为25Hz。
变频器的输出给PLC的第一个PZD字是P734.1,其次个PZD字是P734.2,等等。
STEP7编程基础_1

STEP7编程基础_1 状态字的作用可用RLO触发跳转指令。
(3)状态位(STA)状态字的位2称为状态位。
状态位不能用指令检测,它只是在程序测试中被CPU解释并使用。
如果一条指令是对存储区操作的位逻辑指令,则无论是对该位的读或写操作,STA总是与该位的值取得一致;对不访问存储区的位逻辑指令来说,STA位没有意义,此时它总被置为1。
(4)或位(OR)状态字的位3称为或位(OR)。
在先逻辑“与”后逻辑“或”的逻辑串中,OR位暂存逻辑“与”的操作结果,以便进行后面的逻辑“或”运算。
其它指令将OR位清0。
(5)溢出位(OV)状态字的位4称为溢出位。
溢出位被置1,表明一个算术运算或浮点数比较指令执行时出现错误(错误:溢出、非法操作、不规范格式)。
后面的算术运算或浮点数比较指令执行结果正常的话OV位就被清0。
(6)溢出状态保持位(OS)状态字的位5称为溢出状态保持位(或称为存储溢出位)。
OV被置1时OS 也被置1;OV被清0时OS仍保持。
所以它保存了OV位,可用于指明在先前的一些指令执行中是否产生过错误。
只有下面的指令才能复位OS位:JOS(OS=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。
STEP7状态字中的首次检测位

STEP7状态字中的首次检测位
令“”时首次检测位为,表示第二条串联电路开始。
执行“”指令之后,首次检测位被清零。
首次检测位()
状态字的位称为首次检测位。
若位的状态为,则表明一个梯形逻辑网络的开始,或指令为逻辑串第一条指令。
对逻辑串第一条指令的检测 (称为首次检测) 产生的结果直接保存在状态字的位中,经过首次检测存放在中的或被称为首次检测结果。
位在逻辑串的开始时总是,在逻辑串指令执行过程中位为,输出指令或与逻辑运算有关的转移指令(表示一个逻辑串结束的指令)将清。
逻辑操作结果位 () 状态字的位称为逻辑操作结果 ( )。
该位存储位逻辑指令或算术比较指令的结果。
在逻辑串中,位的状态能够表示有关信号流的信息。
西门子S7-300PLC的-RLO-置位、清零、保存指令及示例
西门子S7-300PLC的RLO 置位、清零、保存指令及示例置位指令符号: SET功能: RLO = 1复位指令符号: CLR功能:RLO = 0例3.1.17RLO保存指令符号: SAVE功能:(RLO) → BR说明:将RLO的状态保存到状态字寄存器中的BR位中。
西门子PLC中的s与set的指令有什么区别S是根据RLO状态来置位,SET是将 RLO状态来置位。
1、S置位:如果 RLO = 1,则使用置位指令(S),可以将寻址位置位为“1” ﻫ例如: ﻫA I0.0S Q0.0//如果I0.0为1( RLO = 1),则Q0.0也为1;如果I0.0为0( RL O = 0),则Q0.0也为0.。
2、SET RLO 置位:使用 RLO 置位(SET)指令,可以将 RLO 的信号状态置为“1”。
例如:SET//将RLO 置位ﻫ=M 0.1//RLO为1,则M 0.1也为1.西门子梯形逻辑06/11/24(2006-11-24 09:23:57)转载▼分类:工作日志1.1位逻辑指令概述说明位逻辑指令处理两个数字,“1”和“0”。
这两个数字构成二进制数字系统的基础。
这两个数字“1”和“0”称为二进制数字或二进制位。
在接点与线圈领域,“1”表示动作或通ﻫ电,“0”表示未动作或未通电。
位逻辑指令扫描信号状态1和0,并根据布尔逻辑对它们进行组合。
这些组合产生结果1ﻫ或0,称为“逻辑运算结果(RLO)”。
ﻫ由位逻辑指令触发的逻辑操作可执行各种类型的功能。
可执行下列功能的位逻辑指令:· ---| |--- 常开接点(地址)ﻫ·---| / |---常闭接点(地址)ﻫ· ---(SAVE) 将RLO 存入BR存储器ﻫ· XOR 位异或· ---( ) 输出线圈·---( # )---中间输出· ---|NOT|--- 信号流反向ﻫ下列指令当RLO 为1时起作用,执行下列功能:ﻫ·---( S ) 线圈置位·---( R ) 线圈复位· SR置位复位触发器ﻫ·RS复位置位触发器其它指令对上升沿和下降沿有反应,执行下列功能:· ---(N)--- RLO下降沿检测ﻫ· ---(P)--- RLO 上升沿检测ﻫ· NEG 地址下降沿检测·POS 地址上升沿检测ﻫ·立即读操作ﻫ·立即写操作1.2---| |---常开接点(地址)ﻫ符号ﻫ<地址>ﻫ---| |---ﻫ说明ﻫ当保存在指定<地址>中的位值等于“1”时,---||---(常开接点)闭合。
西门子S7-200PLC特殊继电器用法
西门子S7-200PLC特殊继电器用法西门子PLC特殊标志继电器(SM)有些辅助继电器具有特殊功能或存储系统的状态变量、有关的控制参数和信息,我们称为特殊标志继电器。
用户可以通过特殊标志来沟通PLC与被控对象之间的信息,如可以读取程序运行过程中的设备状态和运算结果信息,利用这些信息用程序实现一定的控制动作。
用户也可通过直接设置某些特殊标志继电器位来使设备实现某种功能。
特殊标志继电器用“SM”表示,特殊标志继电器区根据功能和性质不同具有位、字节、字和双字操作方式。
其中SMB0、SMB1为系统状态字,只能读取其中的状态数据,不能改写,可以位寻址。
系统状态字中部分常用的标志位说明如下:SM0.0:始终接通;SM0.1:首次扫描为1,以后为0,常用来对程序进行初始化;SM0.2:当机器执行数学运算的结果为负时,该位被置1;SM0.3:开机后进入RUN方式,该位被置1一个扫描周期;SM0.4:该位提供一个周期为1分钟的时钟脉冲,30秒为1,30秒为0;SM0.5:该位提供一个周期为1秒钟的时钟脉冲,0.5秒为1,0.5秒为0;SM0.6:该位为扫描时钟脉冲,本次扫描为1,下次扫描为0;SM1.0:当执行某些指令,其结果为0时,将改位置1;SM1.1:当执行某些指令,其结果溢出或为非法数值时,将改位置1;SM1.2:当执行数学运算指令,其结果为负数时,将改位置1;SM1.3:试图除以0时,将改位置1;S7-200中SM0.0的用法:1、SM0.0在程序运行时始终为ON。
2、SM0.0是一个无条件的常闭触点,用来启动无条件运行的指令。
只要上电,SM0.0必然是“1”。
因此程序中那些不受任何条件限制,必须要执行的指令就用它作为触发触点。
3、问:程序有时要在指令前加SM0.0,为什么不直接连在母线上,不是一样吗?最佳答案:因为,S7-200的指令是不能直接连在“母线”上的,这不符合语法要求。
SM0.0是不可控的触点,适用于无条件触发的场合,并非每个指令都需要SM0.0。
西门子S7300 CPU寄存器状态字的用法分析
西门子S7300 CPU寄存器状态字的用法分析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(条件代码)位给出有关下列结果的相关信息:• 算术指令结果• 比较指令结果• 字逻辑指令• 在移位功能中,移出位相关信息。
西门子s7-300CPU指示灯状态
S7-300的CPU型号很多且不断更新,所以只列出CPU3x系列部分型号的技术参数,见表。其中CPU3x-2DP表示该CPU模板上集成有现场总线(PROFIBUS-DP)通信接口。
标准型CPU模板主要技术特性表
型号
装载存储RAMCPU313CPU314CPU315CPU315-2DPCPU316CPU318-2DP2040809619264器(KB)
E2PROM最大256最大512最大512最大512最大512最大4096工作存储器(KB)RAM12
位操作0.6
字操作
指令执行时
间(mm)
定点加
浮点加
最大数字I/O点数
最大模拟I/O通道数
最大配置
定时器
计数器
位存储器2
3
60
128
3பைடு நூலகம்24
0.3
1
2
50
512
6448
0.3
1
2
50
1024
12864
STOP—停止模式。CPU不扫描用户程序,开关在此位置时,编程器可以读写程序,可以拔出钥匙;
MRES—存储器复位模式(MEMORY RESET)。开关不可以自然停留在此位置上,一旦松手,开关自动弹回STOP位置。3)微存储器卡槽
旧型号的CPU面板上有FEPROM插槽,新型号CPU面板取消了电池和FEPROM插槽,代之以微存储器(MMC)卡,由于MMC存储容量大(64KB~8MB),不仅可以存程序,甚至可以存整个项目(Project)。
4)接口与端口
MPI—Multi-Point Interface,也称编程口。可以接入编程器或其它设备;DP(PtP)—PROFIBUS DP网络的接口或P点对点连接(oint to Point)接口。该接口是否存在,或是哪种接口,取决于CPU的型号;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.引言
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。
CC1 CC0 检查完成后,如果:
0 0 A == 0 结果=0
1 0 A > 0 结果> 0
0 1 A < 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个字节中。
我们通常的做法可能为:
如果利用条件码来进行编程,既可以减少程序的大小还会减少一定的指令执行时间,我们只需要将
中间的比较程序加以优化,即可以达到目的。
例2:根据状态位C0和CC1的状态而跳转的跳转功能指令JZ不改变任何状态位的状态,而且逻辑操作结果RLO值也会“随着”该跳转功能带到跳转程序段中,供用户程序其它逻辑操作之用(不改变/FC状态)。
示例两个整数相减并需进行连续判断:
L MW2
L MW8
-I
JZ ZERO // 如果结果等于“0”,则跳转至标号ZERO处
// 结果不等于“0”时所执行的指令
ZERO: // 结果等于“0”时,所要执行的指令
如果用户不熟悉JZ指令和状态位C0和CC1的具体含义,编程时就需要通过比较指令将比较结果存入一个二进制位中,再根据这个二进制位通过JC/JCN指令来控制程序的执行了。
例3:我们实际应用中可能要利用某些协议转换网关(比如说Hilscher公司的NTTAP系列网关)来和某些串口协议的仪表进行通信时,会遇到CRC校验的问题,关于CRC校验时
需要判断溢出位是否为1的问题来进行程序的进一步计算。
我们以EURO2408的MODBU S通信时需要的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.结束语
在一般情况下,我们不必考虑这些状态位,但在某些情况下,利用这些状态位并结合一定的指令,可以给我们的编程带来更大的灵活性,同时对于进一步提高自己的编程水平也有一定的作用。
/service/answer/tobe_solut ion.asp?Q_ID=68979&cid=1029。