说明
可以在FB和FC的接口参数区进行变量覆盖。
使用关键字 “AT” 覆盖变量时,需要满足以下条件。
- 对于 S7-1200,组态软件至少 STEP 7 (TIA博途) V11.0+SP1+Update 2 (或更高) ,并且固件版本为 V2.0(或更高)。
- 对于 S7-1500,组态软件至少 STEP 7 (TIA博途) V12 (或更高)。
更多信息参考STEP7(TIA博途)在线帮助或者下面的操作指南 Overlapping tags with AT.
下面的例子展示如何通过BOOL类型的数组访问WORD类型变量的单独的位。
- 创建一个FB块
实现变量覆盖需满足:
- FC/FB为标准访问
- 对于优化访问的 FB ,变量的保持性应设置为"在IDB中设置"注意
在S7-1200/S7-1500中新创建的块默认都是“优化的块访问” 。如果想设置为标准访问,打开块的属性,在“属性”标签下去掉使能“优化的块访问”。 - 打开块和块的接口区。
- 在声明表中输入想要用新的数据类型覆盖的变量。例如:名称"statConveyor",数据类型“Word”。
- 在“保持性”这一列的下拉菜单中选择“在IDB中设置”。
- 选择要覆盖变量所在行并右击。
- 在弹出窗口中选择 “添加行”。覆盖的变量只能在被覆盖的变量下一行声明。
- 在添加行中输入变量名。例如"statMotors"。
- 在“数据类型”列首先输入字母 “A”,等到数据类型窗口打开后就可选择。
- 在下拉菜单中选择关键字 “AT” 并点击 “名称”列。此时除了变量名称(例如 "statMotors")之外,在同一区域还会显示被覆盖变量的关键字。 在这个例子中是:AT "statConveyor"。
- 再次点击“数据类型”区域并声明为数组。例如:“Array[0..15],Bool”。
至此覆盖变量已经声明完成,可以在编辑器中输入程序。
例子程序
对某些应用,在STEP 7 中可能需要将多个信号组合成一个控制字或从一个控制字中提取单独的信号。
FB块 “BoolToWordAT” 的说明
利用FB “BoolToWordAT” 将16 个位组合成1个字。每个 Bool 类型输入变量被分配到静态变量"statMotors"数组并被带关键字“AT” 的"statConveyor"变量覆盖。然后静态变量"statConveyor"的内容被传输到输出变量"conveyor"中。
图.2
FB块“WordToBoolAT”
利用FB “WordToBoolAT” 可以从一个数据类型为 "Word" 的变量中提取最多 16个信号 (数据类型为“Bool” 的变量) 。输入变量"conveyor" 的内容被传送到静态变量 "statConveyor" 并被声明为带关键字 “AT” 的变量"statMotors" 覆盖。然后数组类型变量 "statMotors" 的每一位被分配到 Bool 数据类型的输出变量中。
图.3
这两个FB在 OB1 “Main” 中调用和参数化。
下载
下载包含有块和标签的库。
- 将"BoolToWordAT","BoolToWordAT_DB", "WordToBoolAT", "WordToBoolAT_DB","DB" 和 "Main"
拖拽到程序块文件夹。
- 将"Tags"拖入“PLC变量表”文件夹。
57132240_KeywordAT_Lib_TIA_Portal.zip (1,1 MB)
更多信息
对于上面的例子在1500中使用时,建议使用片访问以获得更好的性能。更多关于片访问的信息请参考条目号:57374718.
创建环境
本 FAQ 中提供的截图和下载项目在 STEP 7 (TIA博途) V13+SP1 环境下创建。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc322160.html