如何通过关键字“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 with AT)
下面举例说明如何通过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"中。
2、FB块“WordToBoolAT”
利用FB “WordToBoolAT”可以从一个数据类型为"Word"的变量中提取最多16个信号(数据类型为“Bool”的变量)。输入变量"conveyor"的内容被传送到静态变量"statConveyor"并被声明为带关键字“AT”的变量"statMotors"覆盖。然后数组类型变量"statMotors"的每一位被分配到Bool数据类型的输出变量中。
这两个FB块在OB1中调用。
这里有程序全局库模板,可以下载导入到新建项目,在博图中打开和编辑使用,导入完之后,从全局库中将"BoolToWordAT","BoolToWordAT_DB","WordToBoolAT","WordToBoolAT_DB","DB"和"Main"拖拽到程序块文件夹,将变量拖拽到PLC变量文件夹。
来源:网络,版权归原作者,侵删
温馨提示
如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注我。
上课时间:
第一个月周一到周五
9:00-12:00 14:00-17:30
第二个月周一到周六
9:00-12:00 14:00-17:30
休息时间可以随时学习提问,实操练习
领取专属 10元无门槛券
私享最新 技术干货