当前位置:文档之家› SIEMENS_PLC间接寻址及地址寄存器指令

SIEMENS_PLC间接寻址及地址寄存器指令

间接寻址及地址寄存器指令
?
?
?
1 2
#Ini_Value
9 10 #Counter
L
W
[AR1,
P#200.0]
SIMATIC S7
Siemens AG 2001. All rights reserved.
Date: File:
2013-5-2 PRO2_04E.1
SITRAIN Training for
4
2.0
#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.
Date: File:
Automation and Drives
交叉区域,寄存器间接寻址

AR 1或AR 2中的交叉区域指针:
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 0 0 0 0 R R R 0 0 0 0 0 B B B B B B B B B B B B B B B B X X X 地址标识符 Bit 31=0: 内部区域 Bit 31=1: 交叉区域 字节地址(无符号整数) 位地址
Automation and Drives
STEP 7 中可能的寻址方式
寻址方式
直接寻址
间接寻址
绝对寻址
符号寻址
存储器间接寻址
寄存器间接寻址
16位指针 (DB, T, C)
示例: A I 4.0 L IW10 A "Mot_on" L #Num OPN DB[MW10] SP T["runtime"]
组合指令 (包含OPN D DB..)
L DB19.DBW4
L “Values”.Number_1
A DB10.DBX4.7
从DB 10 的第4个字节的第7位开始扫描
SIMATIC S7
Siemens AG 2001. All rights reserved.
Date: File:
2013-5-2 PRO2_04E.4
32位指针 内部区域
32位指针 内部区域
32位指针 交叉区域
A I[MD30] L IW["Number"]
A I[AR1,P#0.0] L ID[AR1,P#5.0]
A [AR1,P#0.0] T W[AR1,P#0.0]
SIMATIC S7
Siemens AG 2001. All rights reserved.
Date: File:
2013-5-2 PRO2_04E.6
SITRAIN Training for
Automation and Drives
用于存储器间接寻址ห้องสมุดไป่ตู้指针结构

16位指针的结构:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0
215 20 22 20
未定义
字节地址(无符号整数)
位地址
装载32位指针常量(内部区域): L P#25.3 (P = 指针,字节地址= 25,位地址:3)
SIMATIC S7
Siemens AG 2001. All rights reserved.
Date: File:
2013-5-2 PRO2_04E.7

SIMATIC S7
Siemens AG 2001. All rights reserved.
Date: File:
2013-5-2 PRO2_04E.5
SITRAIN Training for
Automation and Drives
存储器间接寻址

字格式的16位指针(用于对DB、T、C进行寻址)
SITRAIN Training for
Automation and Drives
在程序中分析数据块DB相关信息
用于DB寄存器的指令:

CDB:交换DB寄存器内容
DB寄存器 123 24
DI寄存器
24 指令执行前:
CDB
123 指令执行后:

将DB寄存器内容装载到ACCU1中 L DBNO (将打开的DB号装载到ACCU1中) L DINO (将打开的DI号装载到ACCU1中) 装载数据块长度 L DBLG (将打开的DB的长度/字节装载到ACCU1中) L DILG (将打开的DI的长度/字节装载到ACCU1中)
SIMATIC S7
Siemens AG 2001. All rights reserved.
Date: File:
2013-5-2 PRO2_04E.9
SITRAIN Training for
Automation and Drives
练习4.1:用间接寻址的方法进行循环编程
字节地址 0
DB41 1.0 Meas_Value[1] Meas_Value[2]
SITRAIN Training for
Automation and Drives
存储器间接寻址的特性
用于存储16位和32位指针的地址区域:
位(Bit)存储区(绝对寻址或符号寻址) 例如: OPN DB[MW30],OPN DI[“Motor_1”] 等。 A I[MD30],T QD["Speed_1"],等) 本地数据堆栈(绝对寻址或符号寻址, 例如: 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],等。) 背景数据块(只能进行绝对寻址,DI必须预先打开, 例如: OPN DB[DIW20],OPN DI[DIW0] (覆盖掉DI寄存器内容!!!),等 。 A I[DID10], T QD[DID22]等。)
L
W
访问 宽度
[AR1,
地址 寄存器
P#200.0]
偏移 常量 扩展指令: L
IW 210
SIMATIC S7
Siemens AG 2001. All rights reserved.
Date: File:
2013-5-2 PRO2_04E.12
SITRAIN Training for
Automation and Drives
用于装载地址寄存器的指令
装载地址寄存器
LARn (n =1 or 2): LARn <地址> LARn P#<地址>

将ACCU1中的内容装载到ARn 将<地址>中的内容装载到ARn 将<地址>中的地址装载到ARn AR1,AR2 (比如: LAR1 AR2 及LAR2 AR1) MD,LD, DBD,DID (比如: L DBD5等) 32位全局变量(比如: LAR1 “索引”,等) 以及OB,FB及FC的TEMP(临时)变量 (比如: LAR1 #Address,等)
215 27 20
146
为0 ... 65 535 之间的无符号整数

32位指针的结构(内部区域):
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 B B B B B B B B B B B B B B B B X X X
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
循环删除
// // // // // // // // // // // // 将终端地址(DBW18)作为指针 传送到MD 40; 将循环计数器值设置为10 传到MB 50中; 装载初始值 传到DB50中; 装载指针 并减去2个字节 然后再传回 到MD 40; 装载循环计数器 减去2个字节,条件满足则跳转;

地址标识符:
000 010 100 110
I/O 输出(PIQ) DB寄存器中的数据 自有本地数据
001 011 101 111
输入(PII) 位(Bit)存储器 DB寄存器2中的数据(DI) 调用块的LD(本地数据)

指令语法规则:
LAR1 P#I10.0 //设置AR1
AR1: 10000001 0000 0000 0000 0000 0101 0000 + 200
SITRAIN Training for
Automation and Drives
间接寻址示例
FC30:间接寻址示例
Network(段) 1:使用间接寻址方式打开DB
L #dbnumber T MW 100 OPN DB[MW 100] // 将DB号拷贝到MW100 // // 打开DB
Network (段) 2:
+ 200
L
M
W
[AR1,
P#200.0]
存储区域 访问 宽度
地址 寄存器
相关主题