优秀的编程知识分享平台

网站首页 > 技术文章 正文

在博途S7-1200中怎样通过关键字 "AT" 实现变量覆盖?

nanyue 2024-09-15 23:22:38 技术文章 5 ℃

SIMATIC 识别一系列关键字,这些关键字有固定的定义且在程序中有特定含义。不应使用这些关键字作为变量或常量的名称。

比如本文中将要讲到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 (或更高)。

二、通过举例来具体说明怎么使用

1、首先建立一个FB快,建立一个变量b,数据类型为Dword,

2、在保持性选择为“在IDB中设置”

3、在变量b在下一行中添加变量c,在数据类型中选择AT

4、再在变量c的数据类型选择数组,

5、在output中声明4个变量a1~a4。数据类型选择为byte

6、编写如下程序,实现分别输出AT覆盖的内容

比如c[0]=16#12,c[1]=16#34,c[2]=16#56,c[3]=16#78

7、在OB1中调用,并仿真如下

三、应用说明

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

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

FB块“WordToBoolAT”

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

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

Tags:

最近发表
标签列表