# AT 声明

在变量声明中，AT代码将项目变量分配给设备树中配置的PLC的特定输入地址、输出地址或内存地址。您还可以在PLC配置中的设备I/O映射对话框中定义将变量赋值给某个地址。

语法：

<变量名> AT <地址> : <数据类型>;

<地址> : %<内存空间前缀> ( <规格前缀> )? <内存位置>

AT声明允许您为地址指定一个有意义的名称。您可以仅在一个位置(例如声明中)对输入或输出信号进行任何必要的更改，例如在声明处。

> 例如

> VAR wInput AT %IW0 : WORD; END_VAR | 带有输入字地址信息的变量声明
> VAR xActuator AT %QW0 : BOOL; END_VAR | 布尔变量声明 注意：对于布尔变量，如果没有指定单个位地址，则在内部分配一个字节。xActuator的变化将影响QX0.0到QX0.7的范围。
> VAR xSensor AT IX7.5 : BOOL; END_VAR | 布尔变量声明，显式指定单个位地址。在访问时，只读取输入的7.5位。
> VAR xSensor AT IX* : BOOL; END_VAR | 对于地址规范，给出的是占位符*，而不是内存位置。最后的地址规范在变量配置中完成。 注意：这在功能块中是可能的。

如果你将一个变量赋值给一个地址，请注意以下几点:

- 您不能写入放在输入端的变量。这将导致编译器错误。
- 您只能对局部变量和全局变量执行声明，而不能对POUs的输入/输出变量执行声明。
- 此外，AT声明不能用于持久变量列表。
- 如果对结构组件或函数块变量使用AT声明，则所有实例使用相同的内存。这就像在传统编程语言(如C语言)中使用静态变量一样。
- 结构的内存布局也取决于目标系统。

提示！

如果没有显式地指定单个位地址，那么布尔变量将按字节分配。

> 例如

> PROGRAM PLC_PRG
> VAR
> xVar AT %QW0 : BOOL;
> END_VAR

> xVar := TRUE;
> 当写入变量xVar时，输出内存范围QX0.0到QX0.7受到影响。