小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

S7-200間接尋址

 航1jfsl52loy81 2018-09-25
?S7-200間接尋址
對(duì)指令的操作數(shù)的指定方式,我將其理解為“尋址”。
下面將以我個(gè)人的理解對(duì)西門子S7-200的尋址方式進(jìn)行描述,如有不當(dāng)之處,還請(qǐng)廣大讀者指正。
在程序中絕大部分的指令都帶有操作數(shù),所謂的操作數(shù),是執(zhí)行這一指令時(shí)被這一指令加以操作、處理的數(shù)值。對(duì)指令的操作數(shù)的指令方式大致的總結(jié)一下,可以概括為如下幾個(gè)類型:
1:指令的操作數(shù)為“立即數(shù)”,(如:15、16#F、2#1111等、、、、、、)。
LD M0.0
MOVW +255, VW0
+I +45, VW0
這是一條加法指令,被加數(shù)為:255、加數(shù)為45執(zhí)行這條指令后計(jì)算出來的“和”存放在VW0這一存儲(chǔ)器內(nèi)。
LD M0.0
MOVB 15, VB0
這是一條傳指令,譯為:將15傳送至存儲(chǔ)器VB0內(nèi)。
2:指令的操作數(shù)沒有直接的給出,而是給出它所在的地址。
LD M0.0
MOVW VW0, VW4
-I VW2, VW4
這是一條減法指令,譯為:將存儲(chǔ)器VW0內(nèi)的數(shù)值減去存儲(chǔ)器VW2內(nèi)的數(shù)值,將“差”存放在存儲(chǔ)器VW4內(nèi)。
3:指令的操作數(shù)沒有直接的給出,而是給出它所在的地址的“地址”,在S7-200中,將這種尋址方式稱之為“指針尋址”。
下面,我們一起來學(xué)習(xí)一下關(guān)于指針的使用方法:
在使用指針進(jìn)行間接尋址的過程中,會(huì)涉及到的兩個(gè)符號(hào):
&:建立指針(進(jìn)行間接訪問的區(qū)域)
*:讀取指針(讀取指針間接指定的地址)
下面是使用指針的一般步驟:
1:建立指針
建立指針需要使用雙字傳送指令,如下所示:
LD M0.0
MOVD &MB0, VD10
譯為:在VD10建立指針,指針指向被間接訪問的首地址MB0。
在建立指針時(shí)需要注意如下幾個(gè)問題:
①可以進(jìn)行間接訪問的區(qū)域,包括如下幾個(gè)區(qū)域:I、Q、M、S、V、T(當(dāng)前值)、C(當(dāng)前值)。在S7-200中位狀態(tài)是不能進(jìn)行間接指定的,所以這里特別強(qiáng)調(diào)只是訪問定時(shí)器及計(jì)數(shù)器的當(dāng)前值,而不是其位狀態(tài)。
②可以作為建立指針的區(qū)域,包括如下幾個(gè)區(qū)域:V、L、及累加器AC1至AC3。且只能是雙字(32bit)類型的地址。
③在建立指針時(shí)在存儲(chǔ)器前加“&”這個(gè)符號(hào)的表示進(jìn)行間接訪問的區(qū)域的首地址,所以除定時(shí)器T及計(jì)數(shù)器C外都必須是以字節(jié)的形式出現(xiàn)的。
2:讀取指針
在讀取指針時(shí),有如下幾種不同的情況出現(xiàn):
①以字節(jié)的形式讀取指針:
LD M0.0
MOVD &MB0, VD10
MOVB *VD10, VB30
譯為:在VD10建立指針,指針指向以MB0為首地址的地址,讀取在指針VD10所指向的首地址開始的一個(gè)字節(jié)(即以MB0開始的一個(gè)字節(jié),很明顯就是MB0本身),所以,讀取指針時(shí)將MB0放到VB30。
②以字的形式讀取指針:
LD M0.0
MOVD &MB0, VD10
MOVW *VD10, MW20
譯為:在VD10建立指針,指針指向以MB0為首的地址,讀取在
指針VD10所指向的首地址開始的一個(gè)字(即以MB0開始的一個(gè)字,很明顯就是MW0),所以,讀取指針時(shí)將MW0放到MW20。
③以雙字的形式讀取指針:
LD M0.0
MOVD &VB0, VD10
MOVD *VD10, VD40
譯為:在VD10建立指針,指針指向以VB0為首的地址,讀取在指針VD10所指向的首地址開始的一個(gè)雙字(即以VB0開始的一個(gè)雙字,很明顯就是VD0),所以,讀取指針時(shí)將VD0放到VD40。
3:修改指針
修改指針是在使用指針尋址中關(guān)健的一部分,修改指針是將指針指向的首地址進(jìn)行適當(dāng)?shù)钠?,使之指向我們需要訪問的地址,這樣我們可以比較方便的使用在這一存儲(chǔ)區(qū)的某一具體地址,使程序的靈活性有所增加。
修改指針的方法大致的可以概括為如下幾種:
①使用加法或減法指令,對(duì)指針進(jìn)行指定常數(shù)作為偏移量的修改指針。
②使用加“1”或減“1”指令,對(duì)指針進(jìn)行1個(gè)單位(字節(jié))的偏移。
下面將以實(shí)際情況為例來說明修改批指針的方法:
例1:
網(wǎng)絡(luò)1:
LD M0.0
MOVD &VB0, VD10
MOVD *VD10, VD40
+D 4, VD10
網(wǎng)絡(luò)2:
LD M0.1
MOVD *VD10, VD44
譯為:在VD10建立指針,指針指向以VB0為首的地址,讀取在指針VD10所指向的首地址開始的一個(gè)雙字(即以VB0開始的一個(gè)雙字,很明顯就是VD0),所以,讀取指針時(shí)將VD0放到VD40。然后對(duì)指針進(jìn)行修改,對(duì)其指定4個(gè)單位的偏移量,即指針此時(shí)指向的首地址為VB4。
在下一網(wǎng)絡(luò)中又以雙字的形式讀取指針。所以,此時(shí)讀取指針是將以VB4為首的一個(gè)雙字傳送至VD44(即VD4傳送至VD44)。
例2:
網(wǎng)絡(luò)1:
LD M0.0
MOVD &VB0, VD10
MOVB *VD10, MB0
INCD VD10
網(wǎng)絡(luò)2:
LD M0.1
MOVB *VD10, MB1
譯為:在VD10建立指針,指針指向以VB0為首的地址,讀取在指針VD10所指向的首地址開始的一個(gè)字節(jié)(即以VB0開始的一個(gè)字節(jié),很明顯就是VB0),所以,讀取指針時(shí)將VB0放到MB0。然后對(duì)指針進(jìn)行修改,對(duì)其進(jìn)行一個(gè)單位(字節(jié))的偏移,即指針此時(shí)指向的首地址為VB1。
在下一網(wǎng)絡(luò)中又以字節(jié)的形式讀取指針。所以,此時(shí)讀取指針是將以VB1為首的一個(gè)字節(jié)傳送至MB1(即VB1傳送至MB1)。
在程序中,如果希望以連續(xù)的形式去間接訪問地址(即:讀取VB0后希望下一次讀取的是VB1、讀取VW0后希望下一次讀取的是VW2、讀取VD0后希望下一次讀取的是VD4),修改指針時(shí),需要注意以下問題:
①讀取下一個(gè)字節(jié):
網(wǎng)絡(luò)1:
LD M0.0
MOVD &VB0, VD10
MOVB *VD10, VB100
+D 1, VD10
網(wǎng)絡(luò)2:
LD M0.1
MOVB *VD10, VB100
第一次讀指針時(shí),讀取的是VB0。
第二次讀指針時(shí),讀取的是VB1。
②讀取下一個(gè)字:
網(wǎng)絡(luò)1:
LD M0.0
MOVD &VB0, VD10
MOVW *VD10, VW100
+D 2, V
VD10
網(wǎng)絡(luò)2:
LD M0.1
MOVW *VD10, VW100
第一次讀指針時(shí),讀取的是VW0。
第二次讀指針時(shí),讀取的是VW2。
③讀取下一個(gè)雙字:
網(wǎng)絡(luò)1:
LD M0.0
MOVD &VB0, VD10
MOVD *VD10, VD100
+D 4, VD10
網(wǎng)絡(luò)2:
LD M0.1
MOVD *VD10, VD100
第一次讀指針時(shí),讀取的是VD0。
第二次讀指針時(shí),讀取的是VD4。
綜上所述,在以連續(xù)方式讀取指針時(shí):
⑴讀取下一個(gè)字節(jié),修改指針時(shí)“加1”。
⑵讀取下一個(gè)字,修改指針時(shí)“加2”。
⑶讀取下一個(gè)雙字,修改指針時(shí)“加4”。
下面,給出兩個(gè)應(yīng)用實(shí)例,讀者可自行分析其工作原理。
例1:
網(wǎng)絡(luò)1:
LD I1.0
EU
MOVD &VB0, VD100
S M0.0, 1
網(wǎng)絡(luò)2:
LD M0.0
FOR VW1000, 1, 10
網(wǎng)絡(luò)3:
LD Always_On:SM0.0
MOVW VW1000, VW1002
+I VW1000, VW1002
MOVW VW1002, *VD100
+D 2, VD100
網(wǎng)絡(luò)4:
NEXT
網(wǎng)絡(luò)5:
LDW>= VW1000, 10
R M0.0, 1
例2:
網(wǎng)絡(luò)1:
LD M0.0
MOVD &VB300, VD131
MOVW 0, VW129
網(wǎng)絡(luò)2:
LD M0.0
FOR VW125, 1, 6
網(wǎng)絡(luò)3:
LD SM0.0
MOVB *VD131, AC0
+I AC0, VW129
+D 1, VD131
網(wǎng)絡(luò)4:
NEXTS7-200cpu允許使用指針對(duì)下述存儲(chǔ)區(qū)進(jìn)行間接尋址:I, Q, V, M, S, T和C。但不能對(duì)獨(dú)立的位或模擬量進(jìn)行間接尋址。指針為雙字值,用來存放另一個(gè)存儲(chǔ)器的地址,只能用V, L或累加器AC1,AC2和AC3作指針。為了生成指針,必須用雙字傳送指令(MOVD)將某個(gè)位置的地址移入另一個(gè)位置或累加器作為指針。
MOVD &VB200,AC1
MOVW *AC1,AC0

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多