- {{item.name}}
AT的功能
- 1
- 545
S7-1500 使用AT覆盖变量
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 所示。
图1. 创建非优化的 FB 块
(2) 双击进入 FB 块, 展开 FB 块的"块接口",如图 2 所示。
图2. 展开 FB 块的"块接口"
(3)在FB"块接口"中,在 Input 添加一个变量,变量名为 "InData",数据类型为 Word;然后紧跟在变量 “InData” 下一行,数据类型处输入"AT"数据类型,如图 3 所示。
图3. 输入"AT"数据类型
(4)Input 中会生成一个新变量,变量名可自由定义此处定义为“AtInData”,然后把变量的数据类型修改成 Array[0..15] of Bool,并编译该 FB 块。可以看到变量 "InData" 和覆盖变量 “AtInData” 的偏移量都是 0.0,表示这两个变量是相同地址,只是以不同的数据类型显示,如图 4 所示。
图4. 创建AT覆盖变量
(5)同样方法新建 Output 的变量 “OutData” 和AT覆盖变量 “AtOutData”,如图 5 所示。
图5. 定义输出AT覆盖变量
(6) FB中编程使用(程序无实际意义仅为应用示例),此时输入和输出的WORD变量均可按拆分成的Bool数据类型使用,如图 6 所示。
图6. FB中使用AT覆盖变量编程
(7) 在OB1中调用FB时,接口管脚上是不会显示AT覆盖变量的,如图 7 所示。
图7. OB1中调用FB
2. AT 覆盖变量使用-优化访问的FB
若FB为优化程序块,需要在"保持"一列中选择"在 IDB 中设置",才能使用 AT 变量覆盖,如图 8 所示。
图8. FB 块的优化访问处理
3. 注意事项和规则
注意事项:
S7-1500/1200:在 FC 中使用 AT,对于 S7-1500/1200 中的 FC,覆盖变量和被覆盖变量的数据长度必须相同。如果无法通过程序实现,请检查是否可以使用片段访问来代替 AT 结构。
规则:
对于变量覆盖可适用以下通用规则:
1.在 STL、LAD、FBD 和 GRAPH 中,S7-1200 和 S7-1500 允许变量覆盖。
2.SCL 支持在所有 CPU 系列中覆盖。
3.可以在以下块中覆盖变量:
在标准访问的代码块中;
在可优化访问具有保留设置"在 IDB 中设置"的变量的代码块中。
4.覆盖变量数据宽度必须小于等于被覆盖变量的数据宽度。
5.不可以覆盖 VARIANT 和 INSTANCE 数据类型的变量。
6.如果被覆盖变量的数据类型为字符串、字节数组、字符数组等,那么其长度应与偶数个字节数对应。
7.无法覆盖库中声明为接口中参数的块。
8.无法覆盖接口中声明为参数的结构化 PLC 变量。
9.无法通过片段访问对覆盖变量进行寻址。
下列组合规则也适用,如下图9所示。
图9. FB 块的优化访问处理
上图9来在TIA V17帮助文件,图中标注的“X**”应该和“√”对调。测试验证如下图10 所示。“Input_1”为被覆盖的变量,数据类型为基本类型;“Input_2”为覆盖变量,数据类型为结构体;不符合帮助文件备注的例外情况。
图10. AT覆盖的例外情况
- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错
{{item.nickName}}