書名: 西門子S7-200 SMART PLC編程技巧與案例作者名: 韓相爭編著本章字?jǐn)?shù): 1169字更新時間: 2020-04-29 18:04:09
1.4 S7-200 SMART PLC的尋址方式
在執(zhí)行程序過程中,處理器根據(jù)指令中所給的地址信息來尋找操作數(shù)的存放地址的方式叫尋址方式。S7-200 SMART PLC的尋址方式有立即尋址、直接尋址和間接尋址,如圖1-17所示。

圖1-17 尋址方式
1.4.1 立即尋址
可以立即進行運算操作的數(shù)據(jù)叫立即數(shù),對立即數(shù)直接進行讀寫的操作尋址稱為立即尋址。立即尋址可用于提供常數(shù)和設(shè)置初始值等。立即尋址的數(shù)據(jù)在指令中常常以常數(shù)的形式出現(xiàn),常數(shù)可以為字節(jié)、字、雙字等數(shù)據(jù)類型。CPU通常以二進制方式存儲所有常數(shù),指令中的常數(shù)也可按十進制、十六進制、ASCII等形式表示,具體格式如下。
二進制格式:在二進制數(shù)前加2#表示二進制格式,如:2#1010。
十進制格式:直接用十進制數(shù)表示即可,如:8866。
十六進制格式:在十六進制數(shù)前加16#表示十六進制格式,如:16#2A6E。
ASCII碼格式:用單引號ASCII碼文本表示,如:‘Hi'。
需要指出,“#”為常數(shù)格式的說明符,若無“#”則默認(rèn)為十進制。
重點提示:
此段文字很短,但點明數(shù)值的格式,請讀者加以重視,尤其是在功能指令中,對此應(yīng)用很多。
1.4.2 直接尋址
直接尋址是指在指令中直接使用存儲器或寄存器地址編號,直接到指定的區(qū)域讀取或?qū)懭霐?shù)據(jù)。直接尋址有位、字節(jié)、字和雙字等尋址格式,如:I1.5,QB0,VW100,VD100,具體圖例與圖1-13~圖1-16大致相同,這里不再贅述。
需要說明的是,位尋址的存儲區(qū)域有I、Q、M、SM、L、V、S;字節(jié)、字、雙字尋址的存儲區(qū)域有I、Q、M、SM、L、V、S、AI、AQ。
1.4.3 間接尋址
間接尋址是指數(shù)據(jù)存放在存儲器或寄存器中,在指令中只出現(xiàn)所需數(shù)據(jù)所在單元的內(nèi)存地址,即指令給出的是存放操作數(shù)地址的存儲單元的地址,我們把存儲單元地址的地址稱為地址指針。在S7-200 SMART PLC中只允許使用指針對I、Q、M、L、V、S、T(僅當(dāng)前值)、C(僅當(dāng)前值)存儲區(qū)域進行間接尋址,而不能對獨立位(bit)或模擬量進行間接尋址。
(1)建立指針
間接尋址前必須事先建立指針,指針為雙字(即32位),存放的是另一個存儲器的地址,指針只能為變量存儲器(V)、局部存儲器(L)或累加器(AC1、AC2、AC3)。建立指針時,要使用雙字傳送指令(MOVD)將數(shù)據(jù)所在單元的內(nèi)存地址傳送到指針中,雙字傳送指令(MOVD)的輸入操作數(shù)前需加“&”號,表示送入的是某一存儲器的地址,而不是存儲器中的內(nèi)容,例“MOVD &VB200,AC1”指令,表示將VB200的地址送入累加器AC1中,其中累加器AC1就是指針。
(2)利用指針存取數(shù)據(jù)
在利用指針存取數(shù)據(jù)時,指令中的操作數(shù)前需加“*”號,表示該操作數(shù)作為指針,如“MOVW*AC1,AC0”指令,表示把AC1中的內(nèi)容送入AC0中,間接尋址圖示如圖1-18所示。

圖1-18 間接尋址圖示
(3)間接尋址舉例
用累加器(AC1)作地址指針,將變量存儲器VB200、VB201中的2個字節(jié)數(shù)據(jù)內(nèi)容1234移入到標(biāo)志位寄存器MB0、MB1中。
解析:如圖1-19所示。

圖1-19 間接尋址舉例
①建立指針,用雙字節(jié)移位指令MOVD將VB200的地址移入AC1中。
②用字移位指令MOVW將AC1中的地址VB200所存儲的內(nèi)容(VB200中的值為12,VB201中的值為34)移入MW0中。