Skip to main content

AT声明

使用清晰的配置编辑器进行 I/O 映射

我们建议不要按此处所述分配内存地址,因为这可能会导致清晰度降低。

我们建议在配置编辑器中为变量分配内存地址 编辑 I/O 映像 设备的。

这个 AT 变量声明中的关键字为项目变量分配设备树中配置的控制器的特定输入地址、输出地址或内存地址。

AT 声明可以为地址指定一个有意义的名称。您只能在一处对传入或传出信号进行任何必要的更改,例如在声明中。

提示

您只可以在一个位置(例如,在声明中)对输入或输出信号进行任何必要的更改。

有关更多信息,请参阅:

语法

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

<变量名>

必填项

% <地址>

必填项

存储区中的地址

% <内存区域编号> <大小前缀> <内存位置>

<内存区域前缀>

必填项

  • I: 输入存储区域

    用于存储输入信号和输入的存储区域

    用于通过输入驱动器和传感器进行物理输入

  • Q: 输出存储区域

    输出信号和输出的存储区域

    通过输出驱动器和执行器进行物理输出

  • M: 标记存储区域

<大小前缀>

可选

  • 没有大小前缀:位

    单位

  • X: 位

    单位

  • B: 字节

    8 位数据宽度

  • W: 单词

    16 位数据宽度

  • D: Dword

    32 位数据宽度

<内存位置>

<位置编号 > . <位位置编号>

示例: %IB2.4 代表第 3 字节的第 5 位

<位置编号>

必填项

编号取决于目标系统,从 0 开始。

. <位位置编号>

可选

0..7 表示一个字节

<数据类型>

可选

数据类型应与大小前缀相匹配。

21. 例子
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

指定地址时,使用占位符代替存放位置 * 指定的。最终地址指定在变量配置中进行。

注意:这在功能块中是可能的。



有用的提示

重要

除非您明确指定一位地址,否则布尔变量是按字节分配的。

重要

映射到布尔变量的单个位地址有限制。无法将这些变量与 VAR_IN_OUTREFERENCE TO,或者 ADR 操作员。

将变量分配给地址时,必须考虑以下事项:

  • 您不能写入分配给输入的变量。这会导致编译器错误。

  • 你可以做 AT 声明仅适用于局部和全局变量,不适用于 POU 的输入和输出变量。

  • 你一定不能使用 AT 永久变量列表中的声明。

  • 如果你使用 AT 结构成员或函数块变量的声明,则所有实例使用相同的内存。这相当于在 “C” 等经典编程语言中使用 “静态变量”。

  • 结构的内存布局也取决于目标系统。

示例

PROGRAM PLC_PRG
VAR
    xVar AT %QW0 : BOOL;
END_VAR
xVar := TRUE;

写变量时 xVar 是的起始内存区域 QX0.0 直到 QX0.7 做作的。