干貨!尋址方式詳解
高天宇
發(fā)布于2018-06-13 17:55
1558
0
標(biāo)簽:尋址方式
分類:尋址方式從大的方面可以分成直接尋址和間接尋址。
直接尋址就像甲要和乙說話直接叫乙的名字就可以了,甲直接和乙建立聯(lián)。
間接尋址就像甲要和乙說話,而乙在另外一個城市,甲就寫了一封信通過郵遞員送給乙,甲通過郵遞員間接和乙建立聯(lián)系,這就叫間接尋址。間接尋址中指針就充當(dāng)了郵遞員的角色。
直接尋址分為:絕對地址尋址,符號尋址
間接尋址分為:存儲器間接尋址,寄存器間接尋址。
一、直接尋址
直接尋址是簡單的尋址方法,也是編程中常用的尋址方式。
①絕對地址尋址
絕對地址尋址就是直接調(diào)用要使用的地址
示例:
I0.0 Q1.0 MW0
②符號尋址
符號尋址就是通過符號表中的絕對地址的命名進(jìn)行尋址
示例:
用下圖中的I_Motor_Start進(jìn)行尋址。
二、間接尋址
間接尋址是比較復(fù)雜的尋址方式,也是我們這里重點(diǎn)講解的地方,間接尋址需重點(diǎn)理解指針的概念。
指針:理解指針主要需要理解指針的兩個特性。
A.存儲性:存儲性指的是指針也是一段存儲空間,它的存儲內(nèi)容是地址。
B.指向性:因?yàn)橹羔槾娣诺膬?nèi)容是地址,那么指針中存放的是哪一個地址,我們就說指針指向了這個地址所對應(yīng)的存儲空間,這就是指針的指向性。
A.存儲器間接尋址
【A1】16位指針尋址:
1)、16位指針存儲空間
16位指針存儲空間是16位,2個字節(jié),通過這2個字節(jié)的空間來存放變量的地址。
2)、16位指針尋址范圍
16位指針只能對計時器(T),計數(shù)器(C),數(shù)據(jù)塊(DB,DI)的號,程序塊(FB,FC)的號進(jìn)行尋址,也就是這2個字節(jié)的存儲空間中只能存放計時器的編號,計數(shù)器的編號,數(shù)據(jù)塊的編號,程序塊的編號。
3)、16位指針尋址表示格式
16位指針尋址表示格式為:區(qū)域標(biāo)示符[16位地址指針]
示例:
DB [MW0] //表示對DB塊進(jìn)行尋址,MW0中如果存儲的是1,那么該尋址結(jié)果為DB1,也就是通過該指令找到了DB1數(shù)據(jù)塊。
T [MW2] //表示對計時器進(jìn)行尋址,MW2中如果存放的是2,那么該尋址結(jié)果為T2,也就是通過該指令找到了計時器T2。
4)、16位指針尋址程序示例
例1:
L 2 //將2進(jìn)行裝載
T MW 0 //將2傳送到MW0
A I 0.0 //如果I0.0 = True
L S5T#10S //裝載時間
SD T [MW0] //T開始計時
例2:
L 1 //將1進(jìn)行裝載
T MW 0 //將1傳送到MW0
OPN DB [MW 0] //打開DB1
L 10 //將10進(jìn)行裝載
T DBW 0 //將10傳送到DB1.DBW0中
L DBW 0 //將DB1.DBW0進(jìn)行裝載
T MW 2 //將DB1.DBW0傳送到MW2中
【A2】32位指針尋址
1)、32位指針存儲空間
32位指針存儲空間是32位,4個字節(jié),通過這4個字節(jié)的空間來存放變量的地址。
2)、 32位指針尋址范圍
32位指針能對I、Q、M、L、數(shù)據(jù)塊的位、字節(jié)、字、雙字進(jìn)行尋址,也就是這4個字節(jié)的存儲空間中能對上述存儲類型中的位、字節(jié)、字、雙字的地址進(jìn)行存儲。
3)、32位指針存儲格式
4)、32位指針尋址表示格式
32位指針尋址表示格式為:地址存儲器標(biāo)示符[32位地址指針]
示例:
I[MD0] //I表示輸入存儲區(qū),MD0存儲地址信息。
Q[MD4] //Q表示輸出存儲區(qū),MD4存儲地址信息。
5)、32位指針三種尋址方法
①直接輸入10進(jìn)制數(shù)尋址(復(fù)雜不直觀的尋址方式,不推薦使用)。
②將輸入的10進(jìn)制數(shù)左移3位進(jìn)行尋址(比較直觀的尋址方式)。
③利用 P#字節(jié).位 格式進(jìn)行尋址(直觀方便的尋址方式,推薦使用)。
6)、32位指針三種尋址方法舉例
例1 :直接輸入10進(jìn)制數(shù)尋址
該程序?qū)崿F(xiàn)的是兩個數(shù)相加的功能。
這里我們要重點(diǎn)理解為什么第六句將10傳送到了MW4中,而不是MW32中,為什么第八句將15傳送到了MW6中,而不是MW48中。
這是因?yàn)?2,和48存放到指針中是按照32位二進(jìn)制數(shù)進(jìn)行存放的,下面我們通過將48存放到MD24來進(jìn)行舉例說明
由上圖可知將48放進(jìn)MD24則MW[MD24]指向了MW6 例2:左移3為進(jìn)行尋址
由于將10進(jìn)制數(shù)對應(yīng)的2進(jìn)制數(shù)左移三位后,字節(jié)存儲區(qū)的二進(jìn)制數(shù)和該10進(jìn)制數(shù)對應(yīng)的2進(jìn)制數(shù)又相同了,而位存儲區(qū)變?yōu)?,所以這樣的尋址要比例1的尋址方式顯得更為直觀,便于使用和理解。 例3:以 P#字節(jié).位 格式進(jìn)行尋址
通過這個實(shí)例我們可以發(fā)現(xiàn)直接使用P#字節(jié).位的尋址方式是直觀方便的。
B.寄存器間接尋址
寄存器間接尋址使用的是CPU的地址寄存器AR1和AR2
B1)、尋址格式
區(qū)域標(biāo)示符[AR1/AR2,P#X]
注:
①AR1/AR2表示地址寄存器AR1或者AR2,地址寄存器中只能存放地址。
②P#X表示偏移量X是偏移具體數(shù)值。
B2)、寄存器間接尋址示例
作者: 馬樂
本文為原創(chuàng)內(nèi)容,如需轉(zhuǎn)載請注明出處,違者必究!
推薦課程:
西門子S7-200SMART PLC編程應(yīng)用入門
西門子S7-300應(yīng)用精講