全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

如何在STL中存取背景数据块呢?

时间:2023-08-21 09:53

人气:

作者:admin

标签: 累加器  寄存器  存储器  STL 

导读:“OPN DI”或“CDB”指令将数据块加载到 DI 寄存器中。在 S7-300/400 中,此处打开的块将作为背景数据块。...

简介

“OPN DI”或“CDB”指令将数据块加载到 DI 寄存器中。在 S7-300/400 中,此处打开的块将作为背景数据块。FB 块接口的局部形参的后续符号寻址(IN、OUT、InOut、Static)将不再对在块调用中指定为背景数据块的数据块进行寻址,而是对位于 DI 寄存器中的数据块进行寻址。要随后对块接口中的局部形参进行符号寻址,则必须将背景数据块加载到 DI 寄存器中。

即使在执行指令 "L AR2", "+ AR" 和 "TAR" 之后,S7-300/400 中也无法从块接口对形参进行符号寻址,这是由于这些指令破坏了参数的访问方式。

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

对背景数据块中局部变量访问的移植

移植过程不会更改已编程的访问方式。但是,如果更改了引用程序中的 OPN DI, L AR2, +AR2, TDB, TAR, 指令,则该程序的定义可能会发生变更。
要恢复最初的程序定义,则必须手动更改该程序。通常无需再通过寄存器对数据进行寻址。但是,可以使用背景数据块中的 ARRAY 间接索引 ARRAY 中的元素。

示例 1

以下示例说明如何修改 OPN DI 指令的定义:

STL 说明
L #MyIn1
L #MyIn2
+I
T #MyOut3
“L”和“T”指令将寻址块接口中所声明的局部变量。变量的值位于块调用中所指定的背景数据块中。
OPNDI "MyDB"
L #MyIn1
L #MyIn2
+I
T #MyOut3
全局数据块 "MyDB" 将写入 DI 寄存器中。
移植前,“L”和“T”指令将寻址 "MyDB" 中所声明的变量。
迁移后,“L”和“T”指令将寻址块接口中所声明的变量。在 S7-1500 中,进行访问时不会判断 DI 寄存器中的值。

示例 2 以下示例说明了如何修改 LAR2 指令的定义:

STL 说明
L P#M23.0
LAR2 移植前,对 AR2 的分配将破坏参数的访问方式。
L #MyIn1 移植前,无法对 "MyIn1" 进行访问或会发生访问错误。 移植后,可正常对形参 "MyIn1" 进行访问操作。
L IW [AR2, P#1.0] 访问 %IW24.0
A [AR2, P#0.4] 访问 %M23.4

示例 3 以下示例介绍了在 S7-1500 中如何对 DB 变量进行间接寻址而不使用地址寄存器:

STL 说明
OPN "MyDB" L #index LAR1 L DBW [AR1 , P#10.0] 移植前,使用区域内部的间接寄存器进行寻址。并将变量值 (#index) 加载到地址寄存器 1 中。根据加载的值,“MyDB”中的一个数据字将加载到累加器 1 中。
L "MyDB".MyArray1[#index] 移植后,可以将数据值存储在 ARRAY 的“MyDB”中。 并使用输入参数“#index”对 ARRAY 中的各元素建立不同的索引






审核编辑:刘清

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信