1 完整的一条指令, 应该包含指令符+ 操作数( 当然不包括那些单指令, 比如 NOT 等)。其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。我们知道,在 PLC 中划有各种用途的存储区, 比如物理输入输出区 P、映像输入区 I、映像输出区 Q、位存储区 M、定时器 T、计数器 C、数据区 DB 和L等, 同时我们还知道, 每个区域可以用位( BIT ) 、字节( BYTE ) 、字( WORD ) 、双字( DWORD )来衡量,或者说来指定确切的大小。当然定时器 T、计数器 C 不存在这种衡量体制, 它们仅用位来衡量。由此我们可以得到, 要描述一个地址,至少应该包含两个要素: 1 、存储的区域 2 、这个区域中具体的位置比如: A 其中的 A 是指令符, 是A 的操作数,也就是地址。这个地址由两部分组成: Q :指的是映像输出区 :就是这个映像输出区第二个字节的第 0 位。由此,我们得出,一个确切的地址组成应该是: 〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗. 〖位数值〗地址标识符例如: 。其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。这样,一个确切的地址组成,又可以写成: 地址标识符+ 确切的数值单元【间接寻址的概念】寻址,就是指定指令要进行操作的地址。给定指令操作的地址方法,就是寻址方法。在谈间接寻址之前, 我们简单的了解一下直接寻址。所谓直接寻址, 简单的说, 就是直接给出指令的确切操作数, 像上面所说的, A ,就是直接寻址,对于 A 这个指令来说, 就是它要进行操作的地址。这样看来, 间接寻址就是间接的给出指令的确切操作数。对,就是这个概念。比如:A Q[MD100] ,A T[DBW100] 。程序语句中用方括号[] 标明的内容, 间接的指明了指令要进行的地址,这两个语句中的 MD100 和 DBW100 称为指针 Pointer ,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。间接由此得名。西门子的间接寻址方式有两大类型:存储器间接寻址和寄存器间接寻址。【存储器间接寻址】存储器间接寻址的地址给定格式是: 地址标识符+ 指针。指针所指示存储单元中所包含的数值,就是地址的确切数值单元。存储器间接寻址具有两个指针格式:单字和双字。单字指针是一个 16bit 的结构,从 0-15bit ,指示一个从 0-65535 的数值,这个数值就是被寻址的存储区域的编号。双字指针是一个 32bit 的结构,从 0-2bit ,共三位,按照 8 进制指示被寻址的位编号,也就是 0-7 ;而从 3-18bit ,共 16 位,指示一个从 0-65535 的数值,这个数值就是被寻址的字节编号。指针可以存放在 M、 DI 、 DB 和L 区域中,也就是说,可以用这些区域的内容来做指针。 2 单字指针和双字指针在使用上有很大区别。下面举例说明: L DW#16#35 //将 32位 16 进制数 35 存入 ACC1 T MD2 // 这个值再存入 MD2 ,这是个 32 位的位存储区域 L +10 //将 16 位整数 10 存入 ACC1 , 32位 16 进制数 35 自动移动到// ACC2 T MW100 // 这个值再存入 MW1
STEP7编址详解 来自淘豆网www.taodocs.com转载请标明出处.