SIEMENS STEP7 间接寻址
STEP 7 Professional V11 使用SCL对S7

描述 M5.3 I5.3 Q5.3 DB1.DBX5.3 DB1.DBX5.3 DB1.DBX5.3 DB1.DBX5.3 DB1.DBX5.3 DB1.DBX5.3 DB1.DBX5.3 DB1.DBX5.3
表2
2
字节寻址
字节寻址 M区 I区 Q区 DB MB(Byte_Offset) IB(Byte_Offset) QB(Byte_Offset)
变量表达式
描述 MB5 IB5 QB5 DB1.DBB5 DB1.DBB5 DB1.DBB5 DB1.DBB5 DB1.DBB5
%DB1.DB(Byte_Offset) BlockDB.DBB5 BlockDB.DB(Byte_Offset) WORD_TO_BLOCK_DB(#DB_NO).DBB5 WORD_TO_BLOCK_DB(#DB_NO).DB(Byte_Offset)
表3
3
字寻址
字寻址 M区 I区 Q区 DB MW(Byte_Offset) IW(Byte_Offset) QW(Byte_Offset)
变量表达式
描述 MW5 IW5 QW5 DB1.DBW5 DB1.DBW5 DB1.DBW5 DB1.DBW5 DB1.DBW5
%DB1.DW(Byte_Offset) BlockDB.DBW5 BlockDB.DW(Byte_Offset) WORD_TO_BLOCK_DB(#DB_NO).DBW5 WORD_TO_BLOCK_DB(#DB_NO).DW(Byte_Offset)
类型
描述 表示字节偏移地址,预定义为 5; 表示位偏移地址,预定义为 3; 表示 DB 数据块,预定义为 DB1; 表示 DB 数据块的编号,预定义为 1;
BLOCK_DB WORD
FieldRead 和 FieldWrite 间接寻址指令

FieldRead 和FieldWrite 间接寻址指令从STEP7 Basic V10.5 + SP2 以上可以使用 FieldRead 和 FieldWrite 指令对数组单元进行间接寻址.指令的调用:STEP7 Basic V10.5 + SP2 版本软件在指令树里无法直接找到 FieldRead 和FieldWrite 指令,调用这两个指令必须先从工具栏中调用一个空指令块,双击问号,从下拉菜单中选择添加指令,操作步骤如图1.图1. 调用 FieldRead 和 FieldWrite 指令从TIA V11起 FieldRead 和 FieldWrite 指令就可以在指令树里直接找到了。
创建DB块,并建立 Array 数据类型的变量图2. 创建DB块并定义数组FieldRead 指令INDEX: 要读取的数组的单元号MEMBER: 数组单元首地址VALUE: 存储读出的数据下例中是读取数组单元[1]中的数据11,并保存在参数 VALUE: MB110 中。
图3. 读取数组单元中的数据FieldWrite 指令INDEX: 要写入的数组的单元号VALUE: 要写入的数据MEMBER: 数组单元首地址下例中是向数组单元[2]中写入数值5。
图4. 向数组单元中写入数据常见问题为什么软件里无法找到 FieldRead 和 FieldWrite 指令?答:只有 STEP7 Basic V10.5 + SP2 以上的版本才支持 FieldRead 和FieldWrite指令,并且指令树里也无法找到,只能通过调用空指令块,并在下拉菜单里选择使用这两个指令。
FieldRead 和 FieldWrite指令是否可以对其它数据区或数据类型实现间接寻址?答:FieldRead 和 FieldWrite指令只能对DB块中的数组单元进行间接寻址访问,DB 块中的其它数据类型以及其它数据区如M, I,Q 区数据都不支持这个功能。
step编程的地址概念详解及示例

step编程的地址概念详解及示例标签:无标签step7编程的地址概念详解及示例完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT等)。
其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。
我们知道,在PLC中划有各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,或者说来指定确切的大小。
当然定时器T、计数器C不存在这种衡量体制,它们仅用位来衡量。
由此我们可以得到,要描述一个地址,至少应该包含两个要素:1、存储的区域2、这个区域中具体的位置比如:A Q2.0其中的A是指令符,Q2.0是A的操作数,也就是地址。
这个地址由两部分组成:Q:指的是映像输出区2.0:就是这个映像输出区第二个字节的第0位。
由此,我们得出,一个确切的地址组成应该是:〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗,例如:DBX200.0。
DB X 200 . 0其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。
这样,一个确切的地址组成,又可以写成:地址标识符+ 确切的数值单元【间接寻址的概念】寻址,就是指定指令要进行操作的地址。
给定指令操作的地址方法,就是寻址方法。
在谈间接寻址之前,我们简单的了解一下直接寻址。
所谓直接寻址,简单的说,就是直接给出指令的确切操作数,象上面所说的,A Q2.0,就是直接寻址,对于A这个指令来说,Q2.0就是它要进行操作的地址。
这样看来,间接寻址就是间接的给出指令的确切操作数。
对,就是这个概念。
比如:A Q[MD100] ,A T[DBW100]。
程序语句中用方刮号[ ] 标明的内容,间接的指明了指令要进行的地址,这两个语句中的MD100和DBW100称为指针Pointer,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。
西门子PLC指针寻址教学

0 0 0 0 0 0 0 0 0 0 0 0 0 BBBBBBBBBBBBBBBBXXX
215
20 22 20
未定义
字节地址(无符号整数)
位地址
指令语法规则:
LAR1 P#10.0
// 设置AR1 AR1: 00000000 0000 0000 0000 0000 0101 0000
LM W
[AR1, P#200.0]
+ 200存储区域访问 宽度地址 寄存器
偏移 常量
扩展指令:
L MW 210
SIMATIC S7
Siemens AG 2001. All rights reserved.
Date: File:
2019/10/24 PRO2_04E.11
SITRAIN Training for
Automation and Drives
OPN DB 19 OPN "Values" OPN DI 20
组合指令 (包含OPN D DB..)
L DBB 1 L DBW 2 L5 T DBW 4 L ‘A’ L DIB28 ==I
装载数据字节1 装载数据字2(字节2/3) 装载数字5 传递到字4 装载ASCII字符A 装载数据字节28 比较
本地数据堆栈(绝对寻址或符号寻址,
例如:
OPN DB[LW10],OPN DI[#DB_NO]等。
A I[LD10],T QD[#Par_Pointer],等。)
全局(共享) 数据块(只能进行绝对寻址,DB必须预先打开, 例如: OPN DB[DBW0] (覆盖掉DB寄存器内容!!!),OPN DI[DBW22]等。 A I[DBD10],T QD[DBD22],等。)
STE[7间接寻址)

【间接寻址的概念】寻址,就是指定指令要进行操作的地址。
给定指令操作的地址方法,就是寻址方法。
在谈间接寻址之前,我们简单的了解一下直接寻址。
所谓直接寻址,简单的说,就是直接给出指令的确切操作数,象上面所说的,A Q2.0,就是直接寻址,对于A这个指令来说,Q2.0就是它要进行操作的地址。
这样看来,间接寻址就是间接的给出指令的确切操作数。
对,就是这个概念。
比如:A Q[MD100] ,A T[DBW100]。
程序语句中用方刮号 [ ] 标明的内容,间接的指明了指令要进行的地址,这两个语句中的MD100和DBW100称为指针Pointer,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。
间接由此得名。
西门子的间接寻址方式计有两大类型:存储器间接寻址和寄存器间接寻址。
现在,我们来分析一下上述例子中的A I[MD104] 为什么最后是对I1.2进行与逻辑操作。
通过L L#+10 ,我们知道存放在MD104中的值应该是:MD104:0000 0000 0000 0000 0000 0000 0000 1010当作为双字指针时,就应该按照3-18bit指定byte,0-2bit指定bit来确定最终指令要操作的地址,因此:0000 0000 0000 0000 0000 0000 0000 1010 = 1.2【地址寄存器间接寻址】在先前所说的存储器间接寻址中,间接指针用M、DB、DI和L 直接指定,就是说,指针指向的存储区内容就是指令要执行的确切地址数值单元。
但在寄存器间接寻址中,指令要执行的确切地址数值单元,并非寄存器指向的存储区内容,也就是说,寄存器本身也是间接的指向真正的地址数值单元。
从寄存器到得出真正的地址数值单元,西门子提供了两种途径:1、区域内寄存器间接寻址2、区域间寄存器间接寻址地址寄存器间接寻址的一般格式是:〖地址标识符〗〖寄存器,P#byte.bit〗,比如:DIX[AR1,P#1.5] 或M[AR1,P#0.0] 。
间接寻址及地址寄存器指令

0 0 0 0 0 0 0 0 0 0 0 0 0 BBBBBBBBBBBBBBBBXXX
215
20 22 20
未定义
字节地址(无符号整数)
位地址
指令语法规则:
LAR1 P#10.0
// 设置AR1 AR1: 00000000 0000 0000 0000 0000 0101 0000
LM W
[AR1, P#200.0]
SIMATIC S7
Siemens AG 2001. All rights reserved.
Date: File:
2020/12/27 PRO2_04E.9
SITRAIN Training for
Automation and Drives
练习4.1:用间接寻址的方法进行循环编程
#Ini_Value
// // 打开DB
Network (段) 2:
L P#18.0 T MD 40 L 10 next: T MB 50 L0 T DBW[MD 40] L MD 40 L P#2.0 -D T MD 40 L MB 50 LOOP next
循环删除
// 将终端地址(DBW18)作为指针 // 传送到MD 40; // 将循环计数器值设置为10 // 传到MB 50中; // 装载初始值 // 传到DB50中; // 装载指针 // 并减去2个字节 // 然后再传回 // 到MD 40; // 装载循环计数器 // 减去2个字节,条件满足则跳转;
SIMATIC S7
Siemens AG 2001. All rights reserved.
Date: File:
2020/12/27 PRO2_04E.13
SITRAIN Training for
step7地址详解

西门子的间接寻址方式计有两大类型:存储器间接寻址和寄存器间接寻址。
【存储器间接寻址】
存储器间接寻址的地址给定格式是:地址标识符+指针。指针所指示存储单元中所包含的数值,就是地址的确切数值单元。
存储器间接寻址具有两个指针格式:单字和双字。
这样看来,间接寻址就是间接的给出指令的确切操作数。对,就是这个概念。
比如:A Q[MD100] ,A T[DBW100]。程序语句中用方刮号 [ ] 标明的内容,间接的指明了指令要进行的地址,这两个语句中的MD100和DBW100称为指针Pointer,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。间接由此得名。
完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT等)。其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。
我们知道,在PLC中划有各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,或者说来指定确切的大小。当然定时器T、计数器C不存在这种衡量体制,它们仅用位来衡量。由此我们可以得到,要描述一个地址,至少应该包含两个要素:
现在,我们来分析一下上述例子中的A I[MD104] 为什么最后是对I1.2进行与逻辑操作。
通过L L#+10 ,我们知道存放在MD104中的值应该是:
MD104:0000 0000 0000 0000 0000 0000 0000 1010
当是对P区域寻址时,AR=800xxxxx
当是对I区域寻址时,AR=810xxxxx
在S7-200中如何对于一个项目实例进行间接域寻址

说明:
以下描述了在STEP 7 MicroWIN中可能的一种间接寻址使用.
例子中包含了OB1,一个数据块和一个状态表.
OB1包含4段程序。
500)this.width=500" border=0>
图1:在SFC功能块中的4段程序
注意第2段程序:
*AC1 中的(*)星号意味着正使用AC1所指向的地址内容,而并非AC1本身的值另一部分是数据块.
500)this.width=500" border=0>
图2:需要一个状态表用于测试和监控.
500)this.width=500" border=0>
图3:下载程序到控制器中,然后打开状态表,点击"Table Status" 观察变化.
首先保持监控当前的状态,可以看到VB200 到VB210 的值为1-10.而VB 220 之后全为空白.
当I0.0 为1时,这两点将被创建.
当I0.1为1时,从VB200 开始的连续前4个字节将被传送到VB220-VB223 中.
在第3段程序中将I0.0 置0可以分别增加1个地址字节,通过触发I0.2的上升沿可以增加多个地址字节.
在第4段程序中将I0.0 置0可以分别减少1个地址字节,通过触发I0.3的上升沿可以减少多个地址字节.
从入口条目为1109582.的"S7-200自动化系统" 手册中可以找到关于该主题的进一步信息,另外通过在线帮助输入"直接和间接寻址"也是非常有用的.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2015-5-13 SSP2_03C.11
Information and Training Center Knowledge for Automation
0
0
SIMATIC S7
Siemens AG 2000. All rights reserved.
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2015-5-13 SSP2_03C.5
Information and Training Center Knowledge for Automation
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2015-5-13 SSP2_03C.26
Information and Training Center Knowledge for Automation
Date: File:
2015-5-13 SSP2_03C.20
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2015-5-13 SSP2_03C.21
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2015-5-13 SSP2_03C.18
Information and Training Center Knowledge for Automation
2015-5-13 SSP2_03C.14
Information and Training Center Knowledge for Automation
寄存器间接寻址的例子
指针常数#P5.0 对应的二进制数为2#0000 0000 0000 0000 00000000 0010 1000。 L P#5.0 //将间接寻址的指针装入累加器1 LAR1 //将累加器1 中的内容送到地址寄存器1 A M[AR1, P#2.3] //AR1 中的P#5.0 加偏移量P#2.3, 实际上是对M7.3 进行 操作 = Q[AR1, P#0.2] //逻辑运算的结果送Q5.2 L DBW[AR1, P#18.0] //将DBW23 装入累加器1 区域间间接寻址 L P#M6.0 //将存储器位M6.0 的双字指针装入累 加器1 LAR1 //将累加器1 中的内容送到地址寄存器1 T W[AR1, P#50.0] //将累加器1 的内容传送到存储器字MW56 P#M6.0 对应的二进制数为2#1000 0011 0000 0000 0000 000000110000 。因为地址指针P#M6.0 中已经包含有区域信息,使用间接寻址的指令T W[AR1, P#50]中没有必要再用地址标识符M。
LAR2 P#24.0 //将不带存储区标识符32 位指针常数装入AR2
TAR1 DBD20 //AR1 中的内容传送到数据双字DBD20 TAR2 MD24 //AR2 中的内容传送到存储器双字MD24
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
SIMATIC S7
Siemens AG 2000. All rights reserved. Date: File: 2015-5-13 SSP2_03C.15 Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2015-5-13 SSP2_03C.22
Information and Training Center Knowledge for Automation
Date: File:
2015-5-13 SSP2_03C.16
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2015-5-13 SSP2_03C.17
Date: File:
2015-5-13 SSP2_03C.8
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2015-5-13 SSP2_03C.9
Date: File:
2015-5-13 SSP2_03C.12
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2015-5-13 SSP2_03C.13
Date: File:
2015-5-13 SSP2_03C.3
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2015-5-13 SSP2_03C.4
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2015-5-13 SSP2_03C.10
Information and Training Center Knowledge for Automation
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2015-5-13 SSP2_03C.30
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2015-5-13 SSP2_03C.19
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2015-5-13 SSP2_03C.23
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2015-5-13 SSP2_03C.6
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Information and Training Center Knowledge for Automation
地址寄存器的装入与传送指令
可以不经过累加器1,与地址寄存器AR1 和AR2 交换数据。下面是应用 实例:
LAR1 DBD20 //将数据双字DBD20 中的指针装入AR1
LAR2 LD180 //将局域数据双字LD180 中的指针装入AR2 LAR1 P#M10.2 //将带存储区标识符的32 位指针常数装入AR1
Date: File:
2015-5-13 SSP2_03C.7
Information and Training Center Knowledge for Automation