【工控技术】TIA 博途 V13 中怎样通过关键字 "AT" 实现变量覆盖?

通过关键字 “AT” 可覆盖一个 S7-1200/S7-1500 中已声明的变量。

说明

可以在FB和FC的接口参数区进行变量覆盖。

使用关键字 “AT” 覆盖变量时,需要满足以下条件。 

  • 对于 S7-1200,组态软件至少 STEP 7 (TIA 博途) V11.0+SP1+Update 2 (或更高) ,并且固件版本为V2.0(或更高)。

  • 对于 S7-1500,组态软件至少 STEP 7 (TIA 博途) V12 (或更高)。

下面的例子展示如何通过BOOL类型的数组访问WORD类型变量的单独的位。

  1. 创建一个FB块

    注意

    在S7-1200/S7-1500中新创建的块默认都是“优化的块访问” 。在S7-300/S7-400中块都是“标准的块访问”。如果要在S7-1200/S7-1500中使用这些块,建议您将块改为“优化的块访问”以确保更好的性能。打开块的属性,在“属性”标签下使能“优化的块访问”。

  2. 打开块和块的接口区。

  3. 在声明表中输入想要用新的数据类型覆盖的变量。例如:名称"statConveyor",数据类型“Word”。

  4. 在“保持性”这一列的下拉菜单中选择“在IDB中设置”。

  5. 选择要覆盖变量所在行并右击。

  6. 在弹出窗口中选择 “添加行”。覆盖的变量只能在被覆盖的变量下一行声明。

  7.  在添加行中输入变量名。例如"statMotors"。

  8. 在“数据类型”列首先输入字母 “A”,等到数据类型窗口打开后就可选择。

    注意

    FC块和临时变量只有当块属性为“标准的块访问”时才能使用该功能。您需要到块属性里,在“属性”标签下取消使能“优化的块访问”。

  9.  在下拉菜单中选择关键字 “AT” 并点击 “名称”列。此时除了变量名称(例如 "statMotors")之外,在同一区域还会显示被覆盖变量的关键字。 在这个例子中是:AT "statConveyor"。


图.1

        10 .再次点击“数据类型”区域并声明为数组。例如:“Array[0..15],Bool”。

至此覆盖变量已经声明完成,可以在编辑器中输入程序。

例子程序
对某些应用,在STEP 7  中可能需要将多个信号组合成一个控制字或从一个控制字中提取单独的信号。

FB块 “BoolToWordAT” 的说明

利用FB “BoolToWordAT” 可在一个字中组合多达 16 个位。每个 Bool  类型输入变量被分配到静态变量"statMotors"数组并被带关键字 “AT” 的"statConveyor"变量覆盖。然后静态变量"statConveyor"的内容被传输到输出变量"conveyor"中。


 图.2
FB块“WordToBoolAT” 

利用FB “WordToBoolAT” 可以从一个数据类型为 "Word" 的变量中提取最多 16 个信号 (数据类型为 “Bool”的变量) 。输入变量 "conveyor" 的内容被传送到静态变量 "statConveyor" 并被声明为带关键字 “AT” 的变量"statMotors"  覆盖。然后数组类型变量 "statMotors" 的每一位被分配到 Bool  数据类型的输出变量中。


图.3

这两个FB在 OB1  “Main” 中调用和参数化。

把相关文件复制到一个单独的目录下然后双击解压文件。解压的库将自动与所有子程序关联。使用 STEP 7 (TIA 博途)打开和编辑该库。

  1. 将"BoolToWordAT","BoolToWordAT_DB", "WordToBoolAT", "WordToBoolAT_DB","DB" 和 "Main"拖拽到程序块文件夹。

  2. 将"Tags"拖入“PLC变量表”文件夹。

对于上面的例子在1500中使用时,建议使用片访问以获得更好的性能。