Skip to main content

地址

小心

如果使用指向地址的指针,则可以在在线更改期间移动地址的内容。如果使用绝对地址,则地址的内容在在线更改期间不会更改。

句法:

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

% <地址>

必填项

存储区中的地址

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

<内存区域前缀>

必填项

  • I: 输入存储区域

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

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

  • Q: 输出存储区域

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

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

  • M: 标记存储区域

<大小前缀>

可选

  • 没有大小前缀:位

    单个位

  • X: 位

    单个位

  • B: 字节

    8 位数据宽度

  • W: 单词

    16 位数据宽度

  • D: Dword

    32 位数据宽度

<内存位置>

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

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

<位置编号 >

必填项

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

. <位位置编号>

可选

0..7 表示一个字节

定义地址时,您使用特定的字符串来表示内存位置和大小。地址标有百分号 (%),后跟内存范围前缀、可选大小前缀和内存范围位置。用于寻址内存位置的编号取决于目标系统。

202. 例子

%QX7.5

%Q7.5

输出位的单个位地址 7.5

%IW215

输入字的字地址 215

%QB7

输出字节 7 的字节地址

%MD48

标志存储器中存储器位置 48 处双字的地址

%IW2.5.7.1

输入字的字地址;取决于当前控制器配置的解释

VAR 
    wVar AT %IW0 : WORD; 
END_VAR

带有输入字地址信息的变量声明

VAR 
    xActuator AT %QW0 : BOOL; 
END_VAR

布尔变量声明

注意:对于布尔变量,如果未指定单个位地址,则在内部分配一个字节。值的变化 xActuator 影响范围从 QX0.0QX0.7.

VAR 
    xSensor AT %IX7.5 : BOOL; 
END_VAR

明确指定单个位地址的布尔变量声明

访问时,仅读取输入位 7.5。



记忆位置

确保地址有效,如下所示:

要在应用程序中映射有效地址,您首先需要知道流程图像中的所需位置。这意味着适用的内存区域:输入存储器区域 (I)、输出存储区 (Q),或标记存储区域 (M)(见上文)。此外,你需要指定所需的大小前缀:位, BYTEWORDDWORD (见上文: XBWD)

当前使用的设备配置和设备设置(硬件结构、设备描述、I/O 设置)起着决定性的作用。

请特别注意采用字节寻址的设备和采用以字为导向的 IEC 寻址设备之间在位地址解释上的差异。

就位地址而言 %IX5.5,点之前的数字在字节寻址设备中指向字节 5,在文字寻址设备中寻址单词 5。

相比之下,使用字或字节地址寻址与设备类型无关: %IW5,始终对单词 5 进行寻址,并使用字节地址 %IB5 总是字节 5。因此,根据大小和寻址模式,您可以使用相同的地址信息寻址不同的存储单元。

下表显示了位、字节、字和双字的字节寻址和以字为导向的 IEC 寻址的比较。它还显示了用于字节寻址的重叠存储区域。参见表格末尾的示例。

关于语法,请注意,IEC 寻址始终以文字为导向。单词编号位于点之前,位数位于点之后。

_cds_img_memorycells.png

n = 字节数

203. 用于字节寻址的重叠存储区域示例

D0 包含 B0 - B3W0 包含 B0B1W1 包含 B2B3W2 包含 B4B5

W1,但也是 D1D2,以及 D3 不得用于寻址。这样可以避免重叠