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

上传人:j7****6 文档编号:62264138 上传时间:2018-12-19 格式:PPT 页数:23 大小:332.50KB
返回 下载 相关 举报
西门子s7-300+400高级编程培训教材,内部教材4、间接寻址和地址寄存器指令_第1页
第1页 / 共23页
西门子s7-300+400高级编程培训教材,内部教材4、间接寻址和地址寄存器指令_第2页
第2页 / 共23页
西门子s7-300+400高级编程培训教材,内部教材4、间接寻址和地址寄存器指令_第3页
第3页 / 共23页
西门子s7-300+400高级编程培训教材,内部教材4、间接寻址和地址寄存器指令_第4页
第4页 / 共23页
西门子s7-300+400高级编程培训教材,内部教材4、间接寻址和地址寄存器指令_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《西门子s7-300+400高级编程培训教材,内部教材4、间接寻址和地址寄存器指令》由会员分享,可在线阅读,更多相关《西门子s7-300+400高级编程培训教材,内部教材4、间接寻址和地址寄存器指令(23页珍藏版)》请在金锄头文库上搜索。

1、间接寻址及地址寄存器指令,L W AR1, P#200.0,- - - -,1,2,9,10,#Ini_Value,#Par_Pointer,#Counter,?,?,?,STEP 7 中可能的寻址方式,寻址方式,直接寻址,间接寻址,绝对寻址,符号寻址,存储器间接寻址,寄存器间接寻址,示例: A I 4.0 A “Mot_on“ OPN DBMW10 A IMD30 A IAR1,P#0.0 A AR1,P#0.0 L IW10 L #Num SP T“runtime“ L IW“Number“ L IDAR1,P#5.0 T WAR1,P#0.0,16位指针 (DB, T, C),32位指针

2、 内部区域,32位指针 内部区域,32位指针 交叉区域,变量直接寻址,存储单元位置 (示例),I,37.4,地址,附加访问宽度,字节,字,双字,含义,输入,Q,27.7,字节,字,双字,输出,PIB,655,字节,字,双字,外设输入,PQB,653,字节,字,双字,外设输出,M,55.0,字节,字,双字,位(Bit)存储器,T,114,-,定时器,C,13,-,计数器,DBX,2001.6,字节(DBB), 字(DBW), 双字(DBD),通过DB寄存器寻址的数据,DIX,406.1,字节(DIB), 字(DIW), 双字(DID),通过DI寄存器寻址的数据,L,88.5,字节(LB), 字(

3、LW), 双字 (LD),本地数据堆栈,DB中地址标识符直接寻址,打开的数据块,在数据块中装载和传递,OPN DB 19 OPN “Values“ OPN DI 20 组合指令 (包含OPN D DB),L DBB 1 装载数据字节1 L DBW 2 装载数据字2(字节2/3) L 5 装载数字5 T DBW 4 传递到字4 L A 装载ASCII字符A L DIB28 装载数据字节28 =I 比较 A DBX 0.0 从0字节的第0位开始扫描 L DB19.DBW4 从DB 19中装载数据字4 L “Values”.Number_1 符号访问变量 Number_1. DB19 具有变量名“V

4、alues” A DB10.DBX4.7 从DB 10 的第4个字节的第7位开始扫描,用于DB寄存器的指令: CDB:交换DB寄存器内容 将DB寄存器内容装载到ACCU1中 L DBNO (将打开的DB号装载到ACCU1中) L DINO (将打开的DI号装载到ACCU1中) 装载数据块长度 L DBLG (将打开的DB的长度/字节装载到ACCU1中) L DILG (将打开的DI的长度/字节装载到ACCU1中),在程序中分析数据块DB相关信息,指令执行前:,指令执行后:,CDB,123,24,24,123,DB寄存器,DI寄存器,字格式的16位指针(用于对DB、T、C进行寻址) L 11 T

5、 MW 60 OPN DBMW 60 OPN DB 11 双字格式的32位指针(用于对I、Q、M.进行寻址) L P#24.0 T MD 50 L I W MD50 L IW 24 存储 访问 地址 区域 宽度,存储器间接寻址,用于存储器间接寻址的指针结构,16位指针的结构: 为0 . 65 535 之间的无符号整数,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0,20,215,27,146,32位指针的结构(内部区域):,B,B,B,B,B,B,B,B,B,B,B,B,B,X,X,X,15 14 13

6、 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,31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16,20,22,位地址,字节地址(无符号整数),20,215,未定义,装载32位指针常量(内部区域): L P#25.3 (P = 指针,字节地址= 25,位地址:3),存储器间接寻址的特性,用于存储16位和32位指针的地址区域: 位(Bit)存储区(绝对寻址或符号寻址) 例如: OPN DBMW30,OPN DI“Motor_1” 等。 A IMD30,T QD“Speed_1“

7、,等) 本地数据堆栈(绝对寻址或符号寻址, 例如: OPN DBLW10,OPN DI#DB_NO等。 A ILD10,T QD#Par_Pointer,等。) 全局(共享) 数据块(只能进行绝对寻址,DB必须预先打开, 例如: OPN DBDBW0 (覆盖掉DB寄存器内容!),OPN DIDBW22等。 A IDBD10,T QDDBD22,等。) 背景数据块(只能进行绝对寻址,DI必须预先打开, 例如: OPN DBDIW20,OPN DIDIW0 (覆盖掉DI寄存器内容!),等。 A IDID10, T QDDID22等。) 向FB和FC传递指针的特点 在参数里传递的指针不能直接用于存储

8、器间接寻址。 用于存储器间接寻址而传递的指针,在访问之前必须拷贝到临时变量里去,间接寻址示例,FC30:间接寻址示例 Network(段) 1:使用间接寻址方式打开DB L #dbnumber / 将DB号拷贝到MW100 T MW 100 / OPN DBMW 100 / 打开DB Network (段) 2: 循环删除 L P#18.0 / 将终端地址(DBW18)作为指针 T MD 40 / 传送到MD 40; L 10 / 将循环计数器值设置为10 next: T MB 50 / 传到MB 50中; L 0 / 装载初始值 T DBWMD 40 / 传到DB50中; L MD 40 /

9、 装载指针 L P#2.0 / 并减去2个字节 -D / 然后再传回 T MD 40 / 到MD 40; L MB 50 / 装载循环计数器 LOOP next / 减去2个字节,条件满足则跳转;,练习4.1:用间接寻址的方法进行循环编程,- - - -,Meas_Value1,Meas_Value2,Meas_Value9,Meas_Value10,Meas_Value11,#Ini_Value,1.0,2.0,9.0,10.0,11.0 . . .,等等。,DB41,0,4,32,36,40,DB中指向地址的指针,#Par_Pointer,#Counter,字节地址,内部区域,寄存器间接寻

10、址,LAR1 P#10.0 / 设置AR1 AR1: 00000000 0000 0000 0000 0000 0101 0000 + 200 L M W AR1, P#200.0 存储区域 访问 地址 偏移 扩展指令: L MW 210 宽度 寄存器 常量,AR 1或AR2中的内部区域指针:,B,B,B,B,B,B,B,B,B,B,B,B,B,X,X,X,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,31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16,20

11、,22,位地址,字节地址(无符号整数),20,215,未定义,指令语法规则:,交叉区域,寄存器间接寻址,LAR1 P#I10.0 /设置AR1 AR1: 10000001 0000 0000 0000 0000 0101 0000 L W AR1, P#200.0 + 200 访问 地址 偏移 扩展指令: L IW 210 宽度 寄存器 常量,AR 1或AR 2中的交叉区域指针:,B,B,B,B,B,B,B,B,B,B,B,B,B,X,X,X,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,31 30

12、29 28 27 26 25 24 23 22 21 20 19 18 17 16,位地址,字节地址(无符号整数),地址标识符,指令语法规则:,Bit 31=0: 内部区域 Bit 31=1: 交叉区域,地址标识符: 000 I/O 001 输入(PII) 010 输出(PIQ) 011 位(Bit)存储器 100 DB寄存器中的数据 101 DB寄存器2中的数据(DI) 110 自有本地数据 111 调用块的LD(本地数据),用于装载地址寄存器的指令,装载地址寄存器 LARn (n =1 or 2): 将ACCU1中的内容装载到ARn LARn 将中的内容装载到ARn LARn P# 将中的

13、地址装载到ARn : 处理器寄存器: AR1,AR2 (比如: LAR1 AR2 及LAR2 AR1) 32位变量: MD,LD, DBD,DID (比如: L DBD5等) 32位符号变量: 32位全局变量(比如: LAR1 “索引”,等) (全局和局域的) 以及OB,FB及FC的TEMP(临时)变量 (比如: LAR1 #Address,等) P# 指向布尔型绝对地址 En.m,An.m,Mn.m,Ln.m,DBXn.m,DIXn.m 指针: (比如: LAR1 P#M5.3, LAR2 P#I3.6,等) 指向本地、符号地址 OB: TEMP(临时)变量 (比如: LAR1 P#Par_

14、Pointer, 等) FB: IN-,OUT-, INOUT-,STAT- 及TEMP- FC:TEMP(临时)变量(LAR1 P#Loop,等),其它用于地址寄存器的指令,传送出地址寄存器内容 TARn (n =1 or 2): 从Arn传送到ACCU1 TARn 从Arn传送到 : 处理器寄存器: AR2 (比如:TAR1 AR2 ) 32位绝对地址变量: MDn, LDn, DBDn, DIDn (如TAR2 MD5等) 32位符号变量: 32位全局变量(比如TAR1 “Index”,等) (全局和局域的) 及OB,FB及FC的TEMP(临时)变量 (比如TAR1 #Address等) 地址寄存器内容交换(Swap)指令 TAR 将地址寄存器AR1和AR2的内容相互交换 地址寄存器加指令 +ARn 将ACCU1-L内容加到ARn +ARn P#n.m 将内部区域指针P#n.m加到AR1或AR2中去,寄存器间接寻址的特性,在STL/LAD/FBD编辑器内使用AR1 当访问FC中的参数时,如果参数为复杂数据类型(ARRAY、STRUCT、DATE_AND_TIME) ,则AR1寄存器和DB寄存器内容将会被覆盖掉。 当访问FB中的INOUT参数时,如果该INOUT参数是复杂数据类型(ARR

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号