欢迎来到北京合创万通科技有限公司官方网站! 收藏 | 关于合创万通 | 在线留言
010-52873850
 
新闻资讯
联系合创万通
 
  服务咨询热线:010-52873850、010-68882731
  电话:010-52873850
  传真:010-68882731-805
  E-mail: hcwt@bjhcwt.com
  地址:办公:北京市大兴区西红门欣美街兴创国际中心A座5层506室;车间:北京市石景山区双峪路65号
公司新闻 您的位置: 新闻资讯 > 公司新闻
有关移植 STL 程序的信息

使用寄存器和状态字传递值

要提高 S7-1500 系列 CPU 的程序执行性能,可以只使用全局数据块或 PLC 变量通过块接口在块间传递值。

不能使用寄存器(如,累加器、AR1、AR2、DB 或 DI)或 LAD 和 FBD 中的状态字传递值。 在 STL 中,值传递存在一些限制条件。 请注意,使用这些区域在多个块间进行值传递时,可能会降低程序的执行速度。

以下规则适用于 STL:

  • 寄存器、累加器和状态字中的数据仅适用于 STL 程序段。 当 LAD 或 FBD 程序段位于 STL 程序段之后时,无法从 LAD 或 FBD 程序段中访问先前在 STL 中设置的寄存器数据。 但在下游 STL 程序段中,可重新使用该寄存器中的数据。

    RLO 位属于例外情况: 如果该位在语言更改时设置为“未定义”(undefined),则在下游程序段中不再可用。

  • 寄存器、累加器和状态字中的值也不会传送到被调用块中。 仅“CC”和“UC”指令除外。 如果使用“UC”或“CC”指令并希望通过寄存器、状态字或累加器将参数传送到被调用块中,则必须在被调用块的属性中选择“通过寄存器传送参数”(Parameter passing via registers) 选项。 请注意,该选项仅适用于 STL 块中进行标准访问,而且该块可能没有形参。 启用该选项后,可以在块之间传送寄存器中的数据。 在此,RLO 位也属于例外情况: 如果在退出块时该位设置为“未定义”(undefined),则在块调用后将不再可用。

  • 要将错误消息传递给调用的块,则可使用 BR 位。 首先需要使用指令“SAVE”将错误消息存储在调用块的 BR 位中。 然后,再读取调用块中的 BR 位。

  • 每次通过完全限定寻址方式访问数据块后,数据块寄存器 DB 将置位为“0”(例如,%DB10.DBW10)。 之后使用部分限定寻址的数据块则会导致在编译时出错。

  • 如果在 S7-1500 中对 FB 块接口中的局部形参进行符号寻址(例如,使用指令 L #myIn),则将始终访问块调用中指定为背景数据块的数据块。 虽然 OPN DI L AR2, +AR2, TDB, TAR 指令将更改 DI 或地址寄存器中的数据,但在对局部形参进行寻址时不会对这些寄存器中的数据进行判断。

下列章节介绍了一些编程示例。

主控继电器

主控继电器在 S7-1500 中不可用。移植时将会报错。 应手动更改程序。 例如,以块参数形式指定条件并根据条件执行指令或程序段。

LEAVE 和 ENT

由于“LEAVE”和“ENT”指令只有两个累加器,因此在 S7-1500 中不可用。 移植时将会报错。 应手动更改程序。 例如,使用临时变量存储中间结果。

“Block_DB”参数类型的块参数

“Block_DB”参数类型在 S7-1500 中不可用。移植时将更改此参数,而将其指定为“DB_Any”数据类型。

在 S7-1500 中库指令无法与“DB_Any”型参数形式的实例调用相匹配。

以下举例说明了 S7-300/400 系列的 CPU 如何通过变量实例调用一个库块。 这一段程序无法移植到 S7-1500。

STL 将以下程序代码复制到剪贴板。

说明

CALL GET, #myBlock_DB

/ / 通过当前由“myBlock_DB”块参数指定的背景数据块调用库块“GET”。

REQ   := <操作数>

ID   := <操作数>

NDR   := <操作数>

ERROR   := <操作数>

Copyright 2012.All Rights Reserved   版权所有:北京合创万通科技有限公司    京ICP备10051602号
地址:办公:北京市大兴区西红门欣美街兴创国际中心A座5层506室;车间:北京市石景山区双峪路65号       电话:010-52873850       传真:010-68882731-805
技术支持:一网科技