全国服务热线: 15821971992

西门子电线电缆|模块总代理

发布日期 :2023-07-19 17:06发布IP:114.95.101.251编号:11976384
品牌:
西门子
型号:
模块
产地:
德国
分 类
负荷开关
单 价
电议
有效期至
长期有效
咨询电话
15821971992
手机
15821971992
Email
2724917714@qq.com
让卖家联系我
详细介绍

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的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.结束语

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

寻址和符号寻址
在STEP 7程序中,使用地址如I/O信号、位内存、计数器、定时器、数据块和功能块。完全可以在程序中访问这些地址,但是如果使用地址符号,程序将更容易阅读(例如,Motor_A_On或其它符合公司或行业内代码系统的符号)。然后,可以通过此符号访问用户程序中的地址。
地址
地址包含地址标识符和内存位置(例如,Q 4.0, I 1.1, M 2.0, FB21)。
符号地址
如果将符号名分配给地址,可以使程序更易读,并能简化故障排除。
STEP 7可以自动地将符号名称翻译成所需要的地址。如果愿意使用符号名称访问ARRAY、STRUCT、数据块、本地数据、逻辑块和用户自定义数据类型,在使用符号寻址数据前,必须首先将符号名称分配给地址。
例如,可以将符号名称MOTOR_ON分配给地址Q 4.0,然后在程序语句中将MOTOR_ON作为地址使用。使用符号地址,更容易识别程序中的元素与过程控制项目的组件的匹配程度。
支持编程
在编程语言梯形图、功能块图和语句表中,可以输入地址、参数和块名称,作为地址或符号。
使用菜单命令视图 > 显示 > 符号表示法,可以在地址的表示法和符号表示法之间切换。
为了更容易使用符号地址编程,可以显示地址和属于符号的符号注释。可以使用菜单命令视图 > 显示 > 符号信息激活此信息。这意味着每个STL语句后的行注释中包含更多的信息。不能编辑该显示;任何改变都必须在符号表或变量声明表中进行。
下图显示在STL中的符号信息。
当打印输出一个块时,具有语句注释或符号注释的当前画面表示也被打印。
共享符号与局部符号
符号使您能够采用具有某种意义的符号名来代替地址进行工作。短符号和长注释的有效结合,可使编程更容易、程序文档的质量更好。
应注意区分局部(指定块)符号和共享符号之间的不同。

显示共享符号或局部符号
程序代码段中的共享符号与局部符号之间的差别可区分如下:
来自符号表中的符号(共享符号)将显示在引号".."内。
来自块的变量声明表中的符号(局部符号)将在前面冠以字符"#"。
引号或"#"无须输入。在梯形图、FBD或STL中输入程序时,语法检查将自动添加这些字符。
如果担心在某些情况下出现混淆,例如在符号表和变量声明中都使用同一个符号,那么当您要使用该共享符号时,必须直接对其进行编码(输入地址或者包括引号的符号)。此时,没有进行分别编码的任何符号都将解释为指定块 (局部)的变量。
如果符号包含有空格,也必须对共享符号进行编码(输入地址或者包括引号的符号)。
当在STL源文件中进行编程时,将采用同样的特殊字符及准则。在自由编辑模式下,将不会自动添加代码字符,但如果您希望避免混淆,这些代码字符将仍然需要。
设置地址优先权(符号地址/地址)
在改变符号表中的符号、改变数据块或功能块的参数名称、改变引用组件名称的UDT或修改多重背景时,地址优先级有助于按照您的意愿调整程序代码。
当在下列情况下进行改动时,必须仔细设置地址优先级,并要有明确的目的。为了能从地址优先级中获益,在开始另一类型的改动之前,每个改动过程都必须彻底完成。
为了设置地址优先级,请转到SIMATIC管理器,并选择块文件夹,然后选择菜单命令编辑 > 对象属性。在"地址优先级"选项卡中,可以进行与自己要求相适合的设置。
在地址优先级中进行优化设置要求区分下列改动情况:
纠正单个名称
实例:
在符号表或程序编辑器/块编辑器中,必须纠正名称的拼写错误。这适用于符号表中的所有名称,以及可以使用程序编辑器/块编辑器进行修改的所有参数、变量或组件的名称。
设置地址优先级:
跟踪改动:
在SIMATIC管理器中,选择块文件夹,然后选择菜单命令编辑 > 检查块一致性。"检查块一致性"功能在单个块中进行必要的改动。
转换名称或分配
实例:
符号表中现有分配的名称已转换。
符号表中现有的分配被分配了新地址。
变量名称、参数名称或组件名称在程序编辑器/块编辑器中被转换。
设置地址优先级:
跟踪改动:
在SIMATIC管理器中,选择块文件夹,然后选择菜单命令编辑 > 检查块一致性。"检查块一致性"功能在单个块中进行必要的改动。
新的符号、变量、参数或组件
实例:
正在为程序中使用的地址创建新符号。
正在向数据块、UDT或功能块中添加新的变量或参数。
设置地址优先级:
在符号表中的改动。
在程序/块编辑器中的改动。
跟踪改动:
在SIMATIC管理器中,选择块文件夹,然后选择菜单命令编辑 > 检查块一致性。"检查块一致性"功能在单个块中进行必要的改动。



相关分类
推荐产品
信息搜索
 
智能科技新闻
浔之漫智控技术(上海)有限公司
  • 地址:上海市松江区石湖荡镇塔汇路755弄29号1幢一层A区213室
  • 电话:15821971992
  • 邮件:2724917714@qq.com
  • 手机:15821971992
  • 联系人:聂聪
电线电缆新闻
电线电缆相关搜索