如何通过关键字“AT”覆盖一个 S7-1200/S7-1500 中已声明的变量,在以后的编程过程中也可能会用到此功能。这里的“AT”不是以前我们step7程序自定义的高电平位AT,高电平位在1500CPU中系统存储器位可以直接启用,“%M1.2(AlwaysTRUE)”就是始终为1,低电平位“%M1.3 (AlwaysFALSE)”始终为0.如下图:
说明:
使用关键字“AT”结构覆盖变量时,需要满足以下条件。
1、对于 S7-1200,组态软件至少 STEP 7 (TIA 博途) V11.0+SP1+Update 2 (或更高),并且固件版本为 V2.0(或更高)。
2、对于 S7-1500,组态软件至少 STEP 7 (TIA 博途) V12 (或更高)。
更多信息参考STEP7(TIA博途)F1在线帮助,使用AT覆盖变量(Overlapping tags withAT)
下面举例说明如何通过BOOL类型的数组访问WORD类型变量的单独的位。
1、创建一个FB块。在S7-1500中新创建的块默认都是“优化的块访问”。在S7-300/S7-400中块都是“标准的块访问”。如果要在S7-1500中使用这些块,将块改为“优化的块访问”。
2、打开块和块的接口区,在声明表中输入想要用新的数据类型覆盖的变量。例如:名称"statConveyor",数据类型“Word”。
3、在“保持性”一列的下拉菜单中选择“在IDB中设置”。
4、选择要覆盖变量所在行右键,在弹出窗口中选择“添加行”。覆盖的变量只能在被覆盖的变量下一行声明。在添加行中输入变量名。例如"statMotors"。
5、在“数据类型”列输入字母 “A”,等到数据类型窗口打开后就可选择。
6、在下拉菜单中选择关键字 “AT” 并点击 “名称”列。此时除了变量名称(例如"statMotors")之外,在同一区域还会显示被覆盖变量的关键字。 在这个例子中是:AT"statConveyor"。
点击“数据类型”区域并声明为数组。例如:“Array[0..15],Bool”。
这样就覆盖变量声明完成了,可以编程序了。
注意:FC块和临时变量只有当块属性为“标准的块访问”时才能使用该功能。需要到块属性里,在“属性”标签下取消使能“优化的块访问”。
如下图:
对某些应用,在STEP7中可能需要将多个信号组合成一个控制字或从一个控制字中提取单独的信号。
1、FB块 “BoolToWordAT” 的说明
利用FB “BoolToWordAT” 可在一个字中组合 16 个位。每个 Bool 类型输入变量被分配到静态变量"statMotors"数组并被带关键字 “AT”的"statConveyor"变量覆盖。静态变量"statConveyor"的内容被传输到输出变量"conveyor"中。
对某些应用,在STEP7中可能需要将多个信号组合成一个控制字或从一个控制字中提取单独的信号。
1、FB块 “BoolToWordAT” 的说明
这两个FB块在OB1中调用。
这里有程序全局库模板,可以下载导入到新建项目,在博图中打开和编辑使用,导入完之后,从全局库中将"BoolToWordAT","BoolToWordAT_DB","WordToBoolAT", "WordToBoolAT_DB","DB" 和"Main"拖拽到程序块文件夹,将变量拖拽到PLC变量文件夹。