SIEMENS STEP7 间接寻址

合集下载

STEP 7 Professional V11 使用SCL对S7

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 间接寻址指令

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编程的地址概念详解及示例

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指针寻址教学

西门子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间接寻址)

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地址详解

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中如何对于一个项目实例进行间接域寻址

在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自动化系统" 手册中可以找到关于该主题的进一步信息,另外通过在线帮助输入"直接和间接寻址"也是非常有用的.。

SIEMENS STEP7 间接寻址ppt课件

SIEMENS STEP7 间接寻址ppt课件

Date: File:
2021/3/23 SSP2_03C.24
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2021/3/23 SSP2_03C.25
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2021/3/23 SSP2_03C.22
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2021/3/23 SSP2_03C.1
Information and Training Center Knowledge for Automation
立即寻址的例子
SIMATIC S7
SIMATIC S7
Siemens AG 2000. All rights reserved.
Date: File:
2021/3/23 SSP2_03C.23
Information and Training Center Knowledge for Automation
SIMATIC S7
Siemens AG 2000. All rights reserved.

西门子S7-300高级编程培训4间接寻址和地址寄存器

西门子S7-300高级编程培训4间接寻址和地址寄存器

Date: File:
2011-9-5 PRO2_04E.4
SITRAIN Training for
Automation and Drives
在程序中分析数据块DB相关信息 在程序中分析数据块 相关信息
用于DB寄存器的指令: 用于 寄存器的指令: 寄存器的指令
CDB:交换DB寄存器内容 :交换 寄存器内容
DB41 1.0 2.0 Meas_Value[1] Meas_Value[2]
#Ini_Value
-
32 #Counter 36 40
9.0 10.0 11.0 . . .
Meas_Value[9] Meas_Value[10] Meas_Value[11] 等等。 等等。
SIMATIC S7
Siemens AG 2001. All rights reserved.
组合指令 包含OPN D DB..) (包含 )
L DB19.DBW4
L “Values”.Number_1
A DB10.DBX4.7
的第4个字节的第 个字节的第7位开始扫描 从DB 10 的第 个字节的第 位开始扫描
SIMATIC S7
Siemens AG 2001. All rights reserved.
SITRAIN Training for
Automation and Drives
间接寻址示例
FC30:间接寻址示例 : Network(段) 1:使用间接寻址方式打开 ( :使用间接寻址方式打开DB L #dbnumber T MW 100 OPN DB[MW 100] Network (段) 2: L T L next: T L T L L -D T L LOOP P#18.0 MD 40 10 MB 50 0 DBW[MD 40] MD 40 P#2.0 MD 40 MB 50 next // 将DB号拷贝到 号拷贝到MW100 号拷贝到 // // 打开DB 打开 循环删除 // // // // // // // // // // // // 将终端地址( 将终端地址(DBW18)作为指针 ) 传送到MD 40; 传送到 ; 将循环计数器值设置为10 将循环计数器值设置为 传到MB 50中; 传到 中 装载初始值 传到DB50中; 传到 中 装载指针 并减去2个字节 并减去 个字节 然后再传回 到MD 40; ; 装载循环计数器 减去2个字节 条件满足则跳转; 个字节, 减去 个字节,条件满足则跳转;

S7-300间接寻址及地址寄存器指令3

S7-300间接寻址及地址寄存器指令3

"Motor_1".speed AUTOMATE Technology (Shanghai) Co., Ltd.© 2014
ANY数据类型的结构 ANY数据类型指针
Byte n Byte n+2
16#10 复制系数
Data type
Byte n+4
DB号
Byte n+6 1 O O O _ O R R R _ O O O O _ O B B B Byte n+8 B B B B _ B B B B _ B B B B _ B X X X
参数类型
BLOCK_FB BLOCK_FC BLOCK_DB BLOCK_SDB COUNTER TIMER
标识符
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0E 13
标识符
17 18 19 1A 1C 1D
AUTOMATE Technology (Shanghai) Co., Ltd.© 2014
间接寻址及地址寄存器指令
上海冠致工业自动化有限公司
AUTOMATE Technology (Shanghai) Co., Ltd.© 2014
1
在STEP7软件中,使用变量地址的方式有很多种 ,有最直接的直接寻址方式,有间接寻址方式;每 种都有自己的使用范围,一下来讲讲比较难掌握的
间接寻址方式。
AUTOMATE Technology (Shanghai) Co., Ltd.© 2014
P#DB43.DBX0.0 REAL 8
EN FC 43 ENO Measured_values Sum
Mean_value
AUTOMATE Technology (Shanghai) Co., Ltd.© 2014

step7中的难点:间接寻址示例,中文详细注释

step7中的难点:间接寻址示例,中文详细注释

FUNCTION "DBtoDB" : VOID //该功能块的作用是把一个数据块中的指定的一批数据,复制到另一个块的指定位置。

TITLE = //标题,这里没有指定AUTHOR : BaiZH //作者感谢您,BaiZH,通过您的这个例子我基本入明白了//接寻址的用法。

不过具体在什么情况下使用我还得继续努//力。

FAMIL Y : IR //分类NAME : DBtoDB //名称VERSION : 0.1 //版本V AR_INPUT //输入型变量声明开始SRC_DB : INT ; //Source DB Block Number //整型值,要复制的源数据块块号SRC_SttAddr : INT ; //Start Address of the Sending Data in SRC_DB//源数据块的要复制的数据起始地址SendNum : INT ; //Words Number Need Sending //要复制的数据量DST_DB : INT ; //Destination DB Block Number //目标数据块号DST_SttAddr : INT ; //Start Address of the Receiving Data in DST_DB //目标数据块中数据起始地址END_V ARV AR_IN_OUT //输入输出变量声明Enable : BOOL ; //Enable Bit //使能此功能块位END_V ARV AR_TEMP //声明临时变量DB_LOAD_TEMP : INT ; //存放临时数据块块号Loop_Val : INT ; //Send Data Loop Value //循环次数DB_SAVE : INT ; //保存进入此函数前,系统已经打开的数据块号DI_SA VE : INT ; //同上AR1_SA VE : DWORD ; //保存进入此函数前,地址寄存器1中的值AR2_SA VE : DWORD ; //同上END_V ARBEGIN //在STEP7的BLOCK中编辑时的程序主要从这里开始NETWORKTITLE =Send Data//Move data from DB to DBA #Enable; //使能位,ENABLE为1执行以下程序JCN END; //否则跳转到最后TAR1 #AR1_SA VE; // Save AR and Opened DB //保存进入此函数前的数据到临时变量中,以备离开时复原TAR2 #AR2_SA VE;L DBNO; //同上,保存调用前的现场数据,以备调用完毕复原主程序的现场数据T #DB_SA VE; //一个DBNO,一个DINO,是因为要同时打开两个数据块,只能一个背景数据块,一个共享数据块。

西门子PLC高级编程3_间接寻址及地址寄存器指令

西门子PLC高级编程3_间接寻址及地址寄存器指令

A DBX 0.0
从0字节的第0位开始扫描
L DB19.DBW4 从DB 19中装载数据字4
L “Values”.Number_1 符号访问变量
Number_1. DB19 具有变量名“Values”
A DB10.DBX4.7 从DB 10 的第4个字节的第7位开始扫描
SIMATIC S7
Siemens AG 2001. All rights reserved.
地址标识符
Bit 31=0: 内部区域 Bit 31=1: 交叉区域
字节地址(无符号整数)
位地址
地址标识符:
000 I/O
010 输出(PIQ) 100 DB寄存器中的数据 110 自有本地数据
001 输入(PII) 011 位(Bit)存储器 101 DB寄存器2中的数据(DI) 111 调用块的LD(本地数据)
Date: File:
2018/7/13 PRO2_04E.2
SITRAIN Training for
Automation and Drives
地址
I Q PIB PQB M T C DBX DIX L
变量直接寻址
存储单元位置 (示例)
37.4 27.7 655 653 55.0 114 13 2001.6 406.1 88.5
循环删除
// 将终端地址(DBW18)作为指针 // 传送到MD 40; // 将循环计数器值设置为10 // 传到MB 50中; // 装载初始值 // 传到DB50中; // 装载指针 // 并减去2个字节 // 然后再传回 // 到MD 40; // 装载循环计数器 // 减去2个字节,条件满足则跳转;
L 11 T MW 60

SIEMENSSTEP7间接寻址

SIEMENSSTEP7间接寻址
比较
02 Siemens Step7 中的间接寻址
Step7 中的间接寻址方式
01
间接寻址是通过间接地址指针来访问存储单元的寻址方 式。在 Step7 中,间接寻址主要应用于数组、结构体等 复杂数据类型的访问。
02
间接寻址通过使用指针变量来间接指向目标数据,从而 实现数据的间接访问。
03
间接寻址的地址计算涉及指针变量的值计算,以确定目 标数据的实际地址。
Siemens Step7 间 接寻址
目录
• 间接寻址简介 • Siemens Step7 中的间接寻址 • 间接寻址的编程示例 • 间接寻址的优缺点 • 间接寻址的常见问题与解决方案 • 间接寻址的未来发展与展望
间接寻址简介
01
定义与特点
01
定义
间接寻址是一种在编程中通过间接变量访问实际变量的 方法。在Siemens Step7中,间接寻址允许我们通过间 接变量来访问数据块中的数据。
间接寻址的地址计算
01
地址计算是间接寻址中关键的一步,它涉及到指针 变量的值调整和偏移计算。
02
地址计算通常涉及加减运算,以根据指针变量当前 指向的地址,计算出目标数据的实际地址。
03
地址计算过程中需要考虑数据类型的大小和字节顺 序,以确保正确访问目标数据。
间接寻址的指令应用
01
间接寻址在 Step7 中广泛应用于指令操作,如数据块读写、结 构体访问等。
数据块访问权限问题
总结词
在Step7中,数据块访问权限问题也是一个常见问题,可能导致程序无法正常访问数据 块。
详细描述
当使用间接寻址时,如果访问的数据块没有正确的访问权限,程序将无法读取或写入数 据块。为了避免这个问题,程序员需要确保数据块具有正确的访问权限,并且在使用间

西门子间接寻址的详细介绍

西门子间接寻址的详细介绍

西门子间接寻址的详细介绍在先前所说的存储器间接寻址中,间接指针用M、DB、DI和L直接指定,就是说,指针指向的存储区内容就是指令要执行的确切地址数值单元。

但在寄存器间接寻址中,指令要执行的确切地址数值单元,并非寄存器指向的存储区内容,也就是说,寄存器本身也是间接的指向真正的地址数值单元。

从寄存器到得出真正的地址数值单元,西门子提供了两种途径:1、区域内寄存器间接寻址2、区域间寄存器间接寻址地址寄存器间接寻址的一般格式是:〖地址标识符〗〖寄存器,P#byte.bit〗,比如:DIX[AR1,P#1.5] 或M[AR1,P#0.0] 。

〖寄存器,P#byte.bit〗统称为:寄存器寻址指针,而〖地址标识符〗在上帖中谈过,它包含〖存储区符〗+〖存储区尺寸符〗。

但在这里,情况有所变化。

比较一下刚才的例子:DIX [AR1,P#1.5]X [AR1,P#1.5]DIX可以认为是我们通常定义的地址标识符,DI是背景数据块存储区域,X是这个存储区域的尺寸符,指的是背景数据块中的位。

但下面一个示例中的M呢?X只是指定了存储区域的尺寸符,那么存储区域符在哪里呢?毫无疑问,在AR1中!DIX [AR1,P#1.5] 这个例子,要寻址的地址区域事先已经确定,AR1可以改变的只是这个区域内的确切地址数值单元,所以我们称之为:区域内寄存器间接寻址方式,相应的,这里的[AR1,P#1.5] 就叫做区域内寻址指针。

X [AR1,P#1.5] 这个例子,要寻址的地址区域和确切的地址数值单元,都未事先确定,只是确定了存储大小,这就是意味着我们可以在不同的区域间的不同地址数值单元以给定的区域大小进行寻址,所以称之为:区域间寄存器间接寻址方式,相应的,这里的[AR1,P#1.5] 就叫做区域间寻址指针。

既然有着区域内和区域间寻址之分,那么,同样的AR1中,就存有不同的内容,它们代表着不同的含义。

【AR的格式】地址寄存器是专门用于寻址的一个特殊指针区域,西门子的地址寄存器共有两个:AR1和AR2,每个32位。

西门子S7-300高级编程培训教材,内部教材_4、间接寻址和地址寄存器指令

西门子S7-300高级编程培训教材,内部教材_4、间接寻址和地址寄存器指令

地址标识符
Bit 31=0: 内部区域 Bit 31=1: 交叉区域
字节地址(无符号整数)
位地址
地址标识符:
000 I/O
010 输出(PIQ) 100 DB寄存器中的数据 110 自有本地数据
001 输入(PII) 011 位(Bit)存储器 101 DB寄存器2中的数据(DI) 111 调用块的LD(本地数据)
LI
W
[MD50]
L IW 24
存储 访问 区域 宽度
地址
SIMATIC S7
Siemens AG 2001. All rights reserved.
Date: File:
2023/1/19 PRO2_04E.6
SITRAIN Training for
Automation and Drives
用于存储器间接寻址的指针结构
间接寻址及地址寄存器指令
? ?
?
1
2
-
-
-
#Ini_Value
-
9 10
#Counter
L W [AR1, P#200.0]
SIMATIC S7
Siemens AG 2001. All rights reserved.
Date: File:
2023/1/19 PRO2_04E.1
SITRAIN Training for
循环删除
// 将终端地址(DBW18)作为指针 // 传送到MD 40; // 将循环计数器值设置为10 // 传到MB 50中; // 装载初始值 // 传到DB50中; // 装载指针 // 并减去2个字节 // 然后再传回 // 到MD 40; // 装载循环计数器 // 减去2个字节,条件满足则跳转;

西门子PLC寻址方式

西门子PLC寻址方式

寻址方式
所谓寻址方式是指指令得到操作数的方式,可以直接或间接给出操作数的地址。

STEP-7有4种寻址方式:立即寻址、存储器直接寻址、存储器间接寻址和寄存器间接寻址。

1、立即寻址
立即寻址是对常数或常量的寻址方式,其特点是操作数直接包含其中,或指令操作数是唯一的。

2、存储器直接寻址
存储器直接寻址的特点是直接给出存储器的存储单元地址。

3、存储器间接寻址
存储器间接寻址的特点是用指针进行寻址。

操作数存储在由于指针给出的存储单元中,根据要描述的地址复杂程度,地址指针可以是字或双字的,存储指针的存储器也应是字或双字的。

对于T、C、FB、FC、DB,由于其地址范围为-,可使用字指针;对于I、Q、M等,可能要使用双字指针。

使用双字指针时,必须保证指针中的位编号为“0”。

4、寄存器间接寻址
寄存器间接寻址的特点是通过地址寄存器寻址。

S7中有两个地址寄存器:AR1和AR2,地址寄存器的内容加上偏移量形成地址指针,指向操作数所在的存储单元。

寄存器间接寻址有两种形式:区域内寄存器间接寻址和区域司寄存器间接寻址。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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
相关文档
最新文档