.

地址

.
.

小心!

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

.语法:

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

<内存区域前缀> : I | Q | M
<大小前缀> : X | B | W | D
<内存位置> : <数字> ( .<数字> )* // 根据目标系统而定
 

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

.

内存范围前缀

 

I

“输入”的输入内存范围

对于通过输入驱动器的物理输入,“传感器”

Q

“输出”的输出内存范围

对于通过输出驱动器的物理输出,“执行器”

M

内存范围标志

.

大小前缀

数据类型

数据宽度

没有大小前缀

 

一位

X

 

一位

B

BYTE

8位

W

WORD

16位

D

DWORD

32位

.

.例如

%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)—参见上文。此外,你还必须指定所需的大小前缀:BYTE, WORD, DWord(请参见上文:X, B, W, D)

当前的设备配置和设备设置(硬件结构,设备描述,I / O设置)起着决定性的作用。请特别注意在具有“字节寻址模式”的设备和具有“面向字的IEC寻址模式”的设备的位地址解释中的差异。例如,在字节寻址设备中,位地址%IX5.5的点之前的数字寻址字节5。另一方面,在字寻址设备中,它寻址字5。相反,使用字或字节地址进行寻址与设备类型无关:%IW5始终对字5进行寻址,字节地址%IB5始终对字节5进行寻址。无论大小和寻址方式如何,都可以使用相同的地址信息寻址不同的存储单元。

下表显示了位,字节,字和双字的字节寻址和面向字的IEC寻址的比较。它还显示了在字节寻址情况下存在的重叠内存范围(另请参见下表下方的示例)。

关于语法,请注意IEC寻址模式始终是面向字的。在这种情况下,字号位于该点之前,而位数位于该点之前。

N = 字节数

.

.字节寻址模式下存储器范围重叠的示例

D0包含B0-B3,W0包含B0和B1,W1包含B1和B2,W2包含B2和B3。因此,为避免重叠,不得使用W1(也包括D1,D2和D3)进行寻址。

.

.另请参考