0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 2023-08-21 09:53 次阅读

简介

“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 中的各元素建立不同的索引






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5032

    浏览量

    117745
  • 存储器
    +关注

    关注

    38

    文章

    7151

    浏览量

    162001
  • STL
    STL
    +关注

    关注

    0

    文章

    85

    浏览量

    18213
  • 累加器
    +关注

    关注

    0

    文章

    50

    浏览量

    9366

原文标题:西门子博途:在 STL 中存取背景数据块

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    大量数据存取!跪求大神!

    嵌入式开发过程涉及了大量数据存取的要用到什么?求大神解答!详细点
    发表于 04-09 17:41

    何在电路解决EMC的问题?有什么方法

    何在电路解决EMC的问题?有什么方法
    发表于 09-08 15:28

    DSP如何在L2CACHE中区分哪一数据是代码,需要载入到L1PCACHE,哪一数据,需要载入到L1DCACHE

    的。我的问题是,DSP如何在L2CACHE中区分哪一数据是代码,需要载入到L1PCACHE,哪一
    发表于 05-25 00:13

    何在存储器写入和读取矩阵?

    /383681#M3607我要将数据矩阵存储在fpga而不是LUT的存储器作为内存!因为基于我编写的代码的上述链接,它使用LUT作为内存而不是fpga的
    发表于 11-07 07:30

    何在cubeMX调整DMA相关设置

    何在cubeMX调整DMA相关设置?stm32串口是如何使用DMA模式接收发送数据的?
    发表于 12-07 06:50

    何在手机端和网页端去获取上传的数据

    怎样将单片机的数据上传到阿里云物联网平台上?如何在手机端和网页端去获取上传的数据
    发表于 02-22 06:48

    X-CUBE-STL与ARM的STL的区别是什么?

    大家好,我正在做一些关于 STL 的研究。STM 的 X-CUBE-STL 产品与 ARM STL 库有何不同?你为什么要用一个而不是另一个?
    发表于 12-02 07:18

    在堆栈存取数据时的原则是什么?

    在堆栈存取数据时的原则是什么
    发表于 10-31 06:55

    C++ STL的概念及举例

      本篇文章是作者本人使用STL 后的一些看法, 对於想要靠此文章学习STL, 是不可能的. 建议叁后面介绍的一些书入门.   STL的概念   在STL 中, 大至上分三个主要的
    发表于 08-30 11:39 1307次阅读

    基于STL转换为X3D格式的研究

    通过对STL三角网格模型和X3D语法规范的分析与研究,根据X3D对三角形的相关定义和描述,提出了一种将STL三角网格模型转换为X3D格式的算法。该算法在实现将STL转化为X3D的同时,又完成了对
    发表于 01-15 17:04 0次下载

    数据结构与STL

    学习数据结构与STL的一些资料,新手可以慢慢看。
    发表于 12-22 14:41 0次下载

    基于STL曲面网格重建算法

    STL(stereo lithography)作为3D扫描数据和快速原型制造事实上的标准,广泛应用于娱乐、制造业和Internet等领域.随着3D模型越来越复杂,数据量越来越庞大,从STL
    发表于 12-25 11:52 1次下载
    基于<b class='flag-5'>STL</b>曲面网格重建算法

    STL的概述

    C++ STL 是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法,关于 STL 呢,下面通过一个系统框图来对其进行一个总结
    的头像 发表于 01-20 17:08 898次阅读
    <b class='flag-5'>STL</b>的概述

    何在STL中的EN/ENO机制仿真示例呢?

    STL 程序块调用的程序块不提供 EN 和 ENO 参数。无论创建程序块时采用何种编程语言,都可通过状态字的 BR 位将错误语句传送到 STL 程序块中。
    的头像 发表于 09-01 09:45 532次阅读

    STL内容介绍

    了软件的可复用性。 STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常
    的头像 发表于 11-13 11:32 329次阅读
    <b class='flag-5'>STL</b>内容介绍