在变量声明中,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_VARxVar := TRUE;
当写入变量xVar时,输出内存范围QX0.0到QX0.7受到影响。