如何正確使用S7-200 SMART間接尋址?
一、導讀
1.間接尋址的概念
對S7-200SMART PLC來說,尋址分為直接尋址、間接尋址和立即尋址三種。直接尋址就是直接對數(shù)據(jù)進行賦值;間接尋址主要用于需要在程序中修改地址的場合,特別是處理數(shù)據(jù)內(nèi)容比較多的情況,使用間接尋址編程靈活,節(jié)省程序空間。立即尋址是指常數(shù)尋址,如讀取I0.0、VW0的狀態(tài)是不確定的,而讀取一個常數(shù),如10這樣 的一個常量,是能直接找到它的具體值。
1)直接尋址舉例: MW10 ?VW20 ?VD300 I0.0 Q0.5 VB30 ?…
2)間接尋址使用指針訪問存儲器中的數(shù)據(jù)。(指針指到哪里就是哪里的地址)指針是包含另一個存儲單元地址的雙字存儲單元。
二、使用間接尋址
使用間接尋址的方式存取數(shù)據(jù)主要分為以下三個步驟來實現(xiàn):
1.建立指針
使用間接尋址之前,應創(chuàng)建一個指針。指針以雙字的形式存儲要訪問的存儲器的地址,只能用V存儲器、L存儲器或者累加器AC作為指針。建立指針時,用雙字傳送指令MOV D將需要間接尋址的存儲器起始地址送到指針中,如圖1所示。指針的輸入數(shù)應該以“&”符號開頭來表明存儲區(qū)的地址,注意不是其內(nèi)容將移動到指令的輸出操作數(shù)中。

VD10就是指針(存放需要間接尋址的存儲器起始地址VB100)
2.指針偏移
通過加減乘除使指針偏移,比如將VD10加上2,則此時VD100指向VB102;如圖2所示。

VD10的指針+2之后則是VD12,實際指向的就是VB102
3.引用指針
操作數(shù)前加“*”號,表示指令中的操作數(shù)是一個指針。
將指針指向的地址存儲的數(shù)據(jù)調(diào)取出來;通過*VD100提取數(shù)據(jù)(*是取值符),見上圖,就是把VB102的值傳送給VB1000
*(取值符)說明
“*+指針”使用在字節(jié)的位置,訪問的是指針指向地址開始的字節(jié)變量;
“*+指針”使用在字的位置,訪問的是指針指向地址開始的字變量;
“*+指針”使用在雙字的位置,訪問的是指針指向地址開始的雙字變量(也含有浮點數(shù))
三、間接尋址的應用案例
通過FORNEXT指令完成把1-100依次放入VW100-VW298之中(100個字),示例參考程序如圖3所示。

四、結(jié)語
通過講解間接尋址的步驟再結(jié)合示例的分享,相信大家已經(jīng)掌握了其基本的使用。下面為大家分享關于間接尋址幾點需要注意的:
(1)間接尋址使用指針訪問存儲器中的數(shù)據(jù)。指針還可以作為參數(shù)傳遞至子程序。
(2)0指針是包含另一個存儲單元地址的雙字存儲單元。只能將V區(qū)、L區(qū)或累加器寄存器(AC1、AC2、AC3)用作指針。
(3)要創(chuàng)建指針,必須使用“MOV_DW”指令,將間接尋址的存儲單元地址(&+VBx)移至指針位置。
(4)允許間接尋址訪問的存儲區(qū):l、Q、V、M、S、Al、AQ、SM、T和C(其中T、C僅限當前值)。
(5)間接尋址訪問最小單位為字節(jié),不能訪問單個位或訪問HC、L或累加器寄存器。
(6)指針使用必定經(jīng)過建立指針、偏移指針、引用指針三步;
(7)偏移指針時根據(jù)訪問數(shù)據(jù)的不同,指針值偏移也有區(qū)別。
(8)引用指針時可分別訪問字節(jié)、字、雙字、浮點數(shù)。
來源:技成培訓網(wǎng),作者:眭相建,未經(jīng)授權不得轉(zhuǎn)載!
粉絲福利
微信掃碼領西門子全系列PLC電子資料包
