分享

给大家简单的介绍一下FB块的AT功能

 金玉满堂jjnla8 2019-11-20

如何通过关键字“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 (或更高)

更多信息参考STEP7TIA博途)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中可能需要将多个信号组合成一个控制字或从一个控制字中提取单独的信号。

1FB “BoolToWordAT” 的说明

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

2FB“WordToBoolAT”

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

这两个FB块在OB1中调用。

这里有程序全局库模板,可以下载导入到新建项目,在博图中打开和编辑使用,导入完之后,从全局库中将'BoolToWordAT''BoolToWordAT_DB' 'WordToBoolAT' 'WordToBoolAT_DB''DB'  'Main'拖拽到程序块文件夹,将变量拖拽到PLC变量文件夹。

来源:网络,版权归原作者,侵删

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多