通过关键字“AT”可覆盖一个已声明的变量为其它类型的变量,比如通过 Bool 型数组访问 Word 变量的各个位。此类处理时间明显快于早期版本STEP 7的数据转换指令。
在下面的块中可以实现变量覆盖:
1)标准访问的代码块;
2)在优化的块中变量的保持性设置为“在 IDB 中设置”。
注意:
1)覆盖变量的数据宽度必须小于等于被覆盖变量的数据宽度。
2)不能覆盖 VARIANT 和 INSTANCE 数据类型的变量。
3)不能覆盖已在接口中声明为来自库的块参数。
4)不能覆盖已在接口中声明为参数的 PLC 结构化的变量。
在FC 或 FB 的块接口参数区,用“AT”覆盖变量,步骤如下:
1、创建 FC 或 FB 。
1.1、函数块(FB)的访问属性可以选用“优化的块访问”。在函数块(FB)的接口处,欲实现被覆盖的变量,必须在“保持性”一列选择“在 IDB 中设置”选项。而由于对于函数(FC)和临时变量(Temp)无法进行此操作,因此如果要在函数块(FB)中实现Temp的变量覆盖,必须将函数块(FB)的访问属性从“优化的块访问”修改成“ 标准兼容”。
1.2、函数(FC)在声明变量前,将函数的访问属性从“优化的块访问”修改成“ 标准兼容”,即使这样,在函数(FC)的接口处,也只有Temp变量才能实现变量的覆盖。
2、打开函数(FC)或函数块(FB)的接口界面。
2.1、对函数块(FB)的非Temp变量,函数块(FB)的访问属性可以选用“优化的块访问”。在声明表中输入想要用新的数据类型覆盖的变量(例如:名称:“t_word”,数据类型 “Word”);在“保持性”一列的下拉菜单中选择“在 IDB 中设置”;选择要覆盖变量所在行并右击,在弹出窗口中选择 “添加行”(覆盖的变量只能在被覆盖的变量下一行声明);在添加行中输入变量名(例如:“t_bool”);在下拉菜单中选择关键字 “AT” 并点击 “名称”栏,此时除了变量名称(例如:“t_bool”)之外,在同一区域还会显示被覆盖变量的关键字(例如:AT "t_word");再次点击 “数据类型”区域并声明为数组(例如:“Array[0..15],Bool 类型”)。
2.2、对函数(FC)和函数块(FB)的Temp变量,将访问属性从“优化的块访问”修改成“ 标准兼容”。在声明表中输入想要用新的数据类型覆盖的变量(例如:名称:“t_word”,数据类型 “Word”);选择要覆盖变量所在行并右击,在弹出窗口中选择 “添加行”(覆盖的变量只能在被覆盖的变量下一行声明);在添加行中输入变量名(例如:“t_bool”);在下拉菜单中选择关键字 “AT” 并点击 “名称”栏,此时除了变量名称(例如:“t_bool”)之外,在同一区域还会显示被覆盖变量的关键字(例如:AT "t_word");再次点击 “数据类型”区域并声明为数组(例如:“Array[0..15],Bool 类型”)。
3、至此覆盖变量已经声明完成,可以在编辑器中输入程序。