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

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

3天内不再提示

关于S7-1500访问声明变量内的数据区域

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 作者:机器人及PLC自动化 2022-10-08 11:26 次阅读

S7-1500 要访问声明变量内的数据区域,可以通过附加声明来覆盖所声明的变量。其优势在于无需指令即可根据需要实现变量的拆分,拆分后的变量可在程序中直接使用。例如,可以通过 Array of Bool 寻址数据类型为 Byte、Word 或 DWord 变量的各个位。


支持AT 访问的变量如下:
• 标准访问的FC/FB的接口数据区中的变量;
• 优化访问的FB的接口数据区中保持性设置为“在IDB中设置”的变量。

AT变量的声明:要覆盖一个参数,可以在待覆盖的参数后直接声明一个附加参数,然后选择数据类型"AT"。编辑器随即创建该覆盖,然后选择将用于该覆盖的数据类型、结构或数组。

以下使用TIA V17 Por软件,以一个简单实例讲述AT覆盖变量使用,具体如下;

1. AT 覆盖变量使用-标准访问的FB/FC

(1) 创建一个 S7-1500 的项目,在程序块中添加一个 FB (或者 FC ),右击FB 进入该块的属性中,将 FB 属性中的"优化的块访问"取消,改为标准FB,如图 1 所示。

536f6a8a-42f3-11ed-96c9-dac502259ad0.jpg

图1. 创建非优化的 FB 块

(2) 双击进入 FB 块, 展开 FB 块的"块接口",如图 2 所示。

53d944d2-42f3-11ed-96c9-dac502259ad0.jpg

图2. 展开 FB 块的"块接口"

(3)在FB"块接口"中,在 Input 添加一个变量,变量名为 "InData",数据类型为 Word;然后紧跟在变量 “InData” 下一行,数据类型处输入"AT"数据类型,如图 3 所示。

5437e988-42f3-11ed-96c9-dac502259ad0.jpg

图3. 输入"AT"数据类型

(4)Input 中会生成一个新变量,变量名可自由定义此处定义为“AtInData”,然后把变量的数据类型修改成 Array[0..15] of Bool,并编译该 FB 块。可以看到变量 "InData" 和覆盖变量 “AtInData” 的偏移量都是 0.0,表示这两个变量是相同地址,只是以不同的数据类型显示,如图 4 所示。

5471bc26-42f3-11ed-96c9-dac502259ad0.jpg

图4. 创建AT覆盖变量

(5)同样方法新建 Output 的变量 “OutData” 和AT覆盖变量 “AtOutData”,如图 5 所示。

54a08808-42f3-11ed-96c9-dac502259ad0.jpg

图5. 定义输出AT覆盖变量

(6) FB中编程使用(程序无实际意义仅为应用示例),此时输入和输出的WORD变量均可按拆分成的Bool数据类型使用,如图 6 所示。

551753b6-42f3-11ed-96c9-dac502259ad0.jpg

图6. FB中使用AT覆盖变量编程

(7) 在OB1中调用FB时,接口管脚上是不会显示AT覆盖变量的,如图 7 所示。

553bc228-42f3-11ed-96c9-dac502259ad0.jpg

图7. OB1中调用FB

2. AT 覆盖变量使用-优化访问的FB

若FB为优化程序块,需要在"保持"一列中选择"在 IDB 中设置",才能使用 AT 变量覆盖,如图 8 所示。

5552b8a2-42f3-11ed-96c9-dac502259ad0.jpg

图8. FB 块的优化访问处理

3. 注意事项和规则

55dc894c-42f3-11ed-96c9-dac502259ad0.jpg注意事项:

S7-1500/1200:在 FC 中使用 AT,对于 S7-1500/1200 中的 FC,覆盖变量和被覆盖变量的数据长度必须相同。如果无法通过程序实现,请检查是否可以使用片段访问来代替 AT 结构。

534dd1b8-42f3-11ed-96c9-dac502259ad0.jpg规则:

对于变量覆盖可适用以下通用规则:

1.在 STL、LAD、FBD 和 GRAPH 中,S7-1200 和 S7-1500 允许变量覆盖。

2.SCL 支持在所有 CPU 系列中覆盖。

3.可以在以下块中覆盖变量:

在标准访问的代码块中;

在可优化访问具有保留设置"在 IDB 中设置"的变量的代码块中。

4.覆盖变量数据宽度必须小于等于被覆盖变量的数据宽度。

5.不可以覆盖 VARIANT 和 INSTANCE 数据类型的变量。

6.如果被覆盖变量的数据类型为字符串、字节数组、字符数组等,那么其长度应与偶数个字节数对应。

7.无法覆盖库中声明为接口中参数的块。

8.无法覆盖接口中声明为参数的结构化 PLC 变量。

9.无法通过片段访问对覆盖变量进行寻址。

下列组合规则也适用,如下图9所示。

56113016-42f3-11ed-96c9-dac502259ad0.jpg

图9. FB 块的优化访问处理

上图9来在TIA V17帮助文件,图中标注的“X**”应该和“√”对调。测试验证如下图10 所示。“Input_1”为被覆盖的变量,数据类型为基本类型;“Input_2”为覆盖变量,数据类型为结构体;不符合帮助文件备注的例外情况。

5668420c-42f3-11ed-96c9-dac502259ad0.jpg

图10. AT覆盖的例外情况

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

    关注

    8

    文章

    6511

    浏览量

    87600
  • 程序
    +关注

    关注

    114

    文章

    3631

    浏览量

    79543
  • 编辑器
    +关注

    关注

    1

    文章

    788

    浏览量

    30187

原文标题:S7-1500 使用AT覆盖变量

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

收藏 人收藏

    评论

    相关推荐

    S7-1200如何通过附加声明来覆盖所声明变量

    S7-1200/1500:在 FC 中使用 AT,对于 S7-1200/1500 中的 FC,覆盖变量和被覆盖变量数据长度必须相同。如果无
    发表于 07-08 10:31 778次阅读

    labview与S7-1500通讯的库文件

    本帖最后由 lbc898@126.com 于 2019-7-30 12:00 编辑 labview与S7-1500通讯的库文件,项目中已经使用
    发表于 08-06 17:49

    杭州回收s7-1500系列西门子plc扩展模块

    本帖最后由 龙收购西门子模块 于 2020-5-7 13:28 编辑 杭州回收s7-1500系列西门子plc扩展模块 回收西门子s7-1500系列plc模块CPU模块DO模块,回收西门子
    发表于 09-17 13:22

    苏州上门回收西门子S7-1500系列CPU模块

    苏州上门回收西门子s7-1500系列plc模块CPU模块DO模块,回收西门子1500系列plc扩展模块回收西门子模拟量输入输出模块收购数字量输入输出模块高价回收西门子s7-1500系列AI模块回收
    发表于 08-10 11:25

    阳江回收西门子S7-1500模块 上门回收

    阳江回收西门子S7-1500模块 上门回收,回收西门子1500系列plc扩展模块回收西门子模拟量输入输出模块收购数字量输入输出模块高价回收西门子s7-1500系列AI模块回收DA模块常年高价回收
    发表于 04-16 14:56

    回收西门子s7-1500系列plc模块CPU模块DO模块

    回收西门子s7-1500系列plc模块CPU模块DO模块,回收西门子1500系列plc扩展模块回收西门子模拟量输入输出模块收购数字量输入输出模块高价回收西门子s7-1500系列AI模块回收DA模块
    发表于 10-14 09:13

    回收西门子s7-1500系列plc模块

    回收西门子s7-1500系列plc模块CPU模块DO模块,回收西门子1500系列plc扩展模块回收西门子模拟量输入输出模块收购数字量输入输出模块高价回收西门子s7-1500系列AI模块回收DA模块
    发表于 10-20 09:21

    S7-1500系统架构及特点

    S7-1500数据管理系统中,提供两种不同的块访问机制: 优化访问、 非优化访问(兼容 S7-300/400),
    发表于 10-10 11:40 29次下载
    <b class='flag-5'>S7-1500</b>系统架构及特点

    S7-1200使用AT覆盖变量

    S7-1200 要访问声明变量内的数据区域,可以通过附加声明来覆盖所
    的头像 发表于 03-11 11:10 3370次阅读

    关于S7-1200或S7-1500 PLC的通信

    WinCC V7.4SP1中针对S7-1200 或 S7-1500通信,可以创建状态变量和控制变量,用来显示和控制S7-1200 或 S7-1500 PLC的通信。
    发表于 10-09 10:05 1783次阅读

    S7-1500S7-1500之间S7通信

    使用 STEP7 V14 在同一个项目中,新建两个S7-1500站点,然后做 S7 通讯。
    的头像 发表于 11-23 09:53 2080次阅读

    S7-1500 CPU支持与其它S7-1500 CPU进行直接数据交换

    从固件版本 V2.8 开始,S7-1500 CPU 支持与其它 S7-1500 CPU 进行直接数据交换。在直接数据交换的情况下,S7-1500
    的头像 发表于 11-29 09:53 2909次阅读

    S7-1500通过片断访问变量区域进行寻址

    对于S7-1500/1200 PLC,可以选择包含所声明变量的特定地址区域访问宽为 1 位、8 位、16 位或 32 位的
    的头像 发表于 12-12 10:36 2005次阅读

    S7-1500和S7-1200存储区域保持性设置

    与S7-300/400一样,S7-1500和S7-1200都有存储区M区,另外S-1500还有存储区(定时器、计数器),这些区域都可以设置保持性。下面详细介绍如何设置这些区域的保持性。
    的头像 发表于 04-21 09:49 6889次阅读

    西门子S7-1500 之间 S7 通信

    任务: S7-1500 CPU Clinet 将通讯数据区 DB1 块中的 10 个字节的数据发送到 S7-1500 CPU server 的接收
    的头像 发表于 05-29 14:04 4179次阅读
    西门子<b class='flag-5'>S7-1500</b> 之间 S7 通信