马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
描述 通过关键字 “AT” 可覆盖一个已声明的变量为其它类型的变量,比如通过 Bool 型数组访问 Word 变量的各个位。此类处理时间明显快于早期版本 STEP 7 的数据转换指令。 使用关键字 “AT” 覆盖变量时,需要满足以下条件。 - 对于 S7-1200,组态软件至少 STEP 7 (TIA 博途) V11.0+SP1+Update 2 (或更高) ,并且固件版本为 V2.0(或更高)。
- 对于 S7-1500,组态软件至少 STEP 7 (TIA 博途) V12 (或更高)。
注意 - 在 S7-1200 和 S7-1500 里 STL,LAD,FBD 和 GRAPH ,都可以实现覆盖。
- 对于 SCL,所有系列的 CPU 都可以实现覆盖。
- 在下面的块中可以实现变量覆盖:
- 覆盖变量的数据宽度必须小于等于被覆盖变量的数据宽度。
- 不能覆盖 VARIANT 和 INSTANCE 数据类型的变量。
- 不能覆盖已在接口中声明为来自库的块参数。
- 不能覆盖已在接口中声明为参数的 PLC 结构化的变量。
在FC 或 FB 的块接口参数区,编程覆盖变量。按照下表所述过程声明变量。
序号 | 操作步骤 | 1 | 创建一个函数或功能块。有两种方法在块接口处用“AT”指令实现变量覆盖:- 方法 1
在功能块的接口处,欲实现被覆盖的变量必须在“保持性”一列选择“在 IDB 中设置”选项。然而,对于函数和临时变量无法进行此操作。 - 方法 2
在声明变量前,将块的访问属性从“优化的块访问”修改成“ 标准兼容”。
- 欲实现这种更改,先在项目导航中右击块,在弹出菜单中选择“属性...”。
- 进入“属性”选项卡,取消“优化的块访问”属性(去掉对勾)。
- 点击 OK 保存设置。
西门子PLC编程软件
| 2 | 打开块和块的接口界面。 注意
下面的描述是基于方法1的。 | 3 | 在声明表中输入想要用新的数据类型覆盖的变量。- 例如:名称: “t_word”, 数据类型 “Word”。
| 4 | 在“保持性”一列的下拉菜单中选择“在 IDB 中设置”。 注意
如第一步所述,对于函数和临时变量无法进行此操作。因此必须如方法2所述事先更改块访问属性。 | 5 | 选择要覆盖变量所在行并右击。 | 6 | 在弹出窗口中选择 “添加行”。覆盖的变量只能在被覆盖的变量下一行声明。 | 7 | 在添加行中输入变量名。 | 8 | 在 “数据类型”栏首先输入字母 “A”,等到数据类型窗口打开后就可选择。 | 9 | 在下拉菜单中选择关键字 “AT” 并点击 “名称”栏。此时除了变量名称(例如:“t_bool”)之外,在同一区域还会显示被覆盖变量的关键字。 | 10 | 再次点击 “数据类型”区域并声明为数组。 - 例如:“Array[0..15],Bool 类型”。
至此覆盖变量已经声明完成,可以在编辑器中输入程序。
图. 02 |
对 某些应用,在STEP 7 中可能需要将多个信号组合成一个控制字或从一个控制字中提取单独的信号。“STEP7_V11_AT_KeyWord.zip” 下载附件包含一个STEP 7 V11 程序,实现将多个信号(数据类型为 “Bool” 的变量)变量组合在一个 “Word”类型的变量中并再次从中提取这些信号。以下的块包含在 STEP 7 程序中:
FC块“FC_Bool_to_Word_AT” 的说明 利 用FC “FC_Bool_to_Word_AT” 可在一个字中组合多达 16 个位。每个 Bool 类型输入变量被分配到临时的 “t_bool” 数组变量并被带关键字 “AT” 的 “t_word” 变量覆盖。然后临时变量 “t_word” 的内容被传输到输出变量 “SaveWord” 中。
图. 03
FC块“FC_Word_to_Bool_AT” 的说明 利用FC “FC_Word_to_Bool_AT” 可以从一个数据类型为 "Word" 的变量中提取最多 16 个信号 (数据类型为 “Bool” 的变量) 。输入变量 “I_Word” 的内容被分配到临时变量 “t_word” 并被声明为带关键字 “AT” 的变量 “t_bool” 覆盖。然后数组类型变量 “t_bool” 的每一位被分配到 Bool 数据类型的输出变量中。
图. 04
这两个FC在 OB1 “Main” 中调用和参数化。 注意:经测试,在DB块里没法使用这个~
|