官术网_书友最值得收藏!

1.4.2 變址尋址

1.變址尋址、變址寄存器和變址操作數

變址尋址是一種最復雜的尋址方式,變址就是把操作數的地址進行了修改,要到修改后的地址(變址)去尋找操作數,而這個功能是由變址寄存器和變址操作數完成的。

三菱FX系列有兩個特別的數據寄存器V、Z,它們主要用作運算操作數地址的修改。它們的編址為V0~V7和Z0~Z7,共16個,其中V0和Z0也可寫成V、Z。利用V0~V7和Z0~Z7進行地址修改的尋址方式叫變址尋址。

變址寄存器V、Z在使用上沒有差別,可以任意使用,不存在優先級,變址的功能也可完全一樣。但是在進行32位變址操作時,也必須由V、Z組成的32位數作為變址操作數的組合。這時對V、Z組成32位數就有了規定,當V、Z組成32位數時,必須由相同編址的V、Z組成,V為高位,Z為低位。這樣,總共只有V0Z0、V1Z1…V7Z7 8組32位數,其他任意組合都是非法的,例如V1V0、Z3Z2、V125等。

變址操作數由兩個編程元件組合而成,前一個編程元件為可以進行變址操作的軟元件,后一個編程元件為變址寄存器V、Z中的一個,如圖1-43所示。

圖1-43 變址操作數

對FX系列來說,可以進行變址操作的編程軟元件有:X,Y,M,S,KnX,KnY,KnM,KnS,T,C,D,R,P及常數K,H。因此,下列組合都是合法的變址操作數。

X0V2 D10Z3 K2X10V0 K15Z5 T5Z1 C10V4

變址操作數是如何進行變址的呢?變址尋址的方式規定如下。

(1)變址后的操作編程軟元件性質不變。

(2)變址后的操作數地址為變址操作編程軟元件的編號加上變址寄存器的數值。

關于操作數地址將在下面做詳細說明。

變址尋址主要用在功能指令中,在功能指令的操作數中,也不是所有操作數都可以進行變址操作的。在下文的指令講解中,凡是可進行變址操作的操作數均在其右側加點表示,如圖1-44所示。

圖1-44 功能指令中變址操作表示

FX3系列的基本指令中的LD,LDI,AND,ANI,OR,ORI,OUT,SET,RST,PLS,PLF等指令使用的軟元件X,Y,M(特殊輔助M除外),T,C(0~199)均可使用變址操作數進行變址尋址。

2.指令的變址尋址及應用

1)位元件X,Y,M,S

【例6】請說明變址操作數的X0V2地址,設(V2)=K10。

X0V2,變址操作后的地址編號為K0+K10=K10,但輸入口X是八進制編址的,偏移10個后,不是X10,而應為X12,即變址操作后的地址為X12。這一點在使用時務必注意。

【例7】某些功能指令在使用時受到使用次數的限制。例如,脈寬指令PWM,如果想要在程序中使用多次則可應用變址操作,其效果和同一指令在程序中使用多次效果一樣。圖1-45表示了輸出脈寬指令PWM可以分別在Y0或Y1口輸出的梯形圖程序。

X010=ON時,Z0=0,Y000Z0=Y000(即PWM指令的脈沖從Y000口輸出);當X010=OFF時,Z0=1,發生地址偏移,Y000Z0=Y001(即PWM指令的脈沖從Y001口輸出)。這樣,利用變址操作等于兩次使用了PWM指令。

圖1-45 例7程序梯形圖

【例8】請說明變址操作數的M3V0地址,設(V0)=K10。

M3V0,變址地址編號為K3+K10=K13,即變址后操作地址為M13,與十進制編址的狀態繼電器S類似。

【例9】請對圖1-46所示的梯形圖執行過程進行說明。

CMP為比較輸出指令。當X000=ON時,偏移量為0,則比較輸出M0~M2;當X000=OFF時,偏移量為K10,則比較輸出M10~M12。利用變址操作,可以得到兩組不同的輸出繼電器M。

圖1-46 例8程序梯形圖

2)組合位元件KnX,KnY,KnM,KnS

【例10】請說明變址操作數的K2X0V4地址,設(V4)=K5。

K2X0V4,同樣,X為八進制編制的,變址后的組合位元件應為K2X5,即由X5,X6,X7,X10,X11,X12,X13,X14,8個位元件組合成的組合位元件,使用起來很不方便。因此,建議當使用組合位元件KnX,KnY時,位元件首址最好為X0,X10等,變址寄存器的值最好為K0,K8,K16等,這樣變址后地址為KnX0,KnX10,KnX20等。組合位元件的組數n不能變址操作,不能出現K3V0X0這樣的變址操作數。

【例11】請對圖1-47所示的梯形圖執行過程進行說明。

圖1-47 例11程序梯形圖

當X000=ON時,M7~M0的狀態控制輸出為Y7~Y0;當X000=OFF時,M17~M10的狀態控制輸出為Y7~Y0。

3)數據寄存器D

【例12】請說明變址操作數的D0Z6地址,設(Z6)=K10。

數據寄存器D是最常用的變址操作編程元件,為十進制編制,所以,變址后的地址編號為K0+K10=K10,即D10。

【例13】如圖1-48所示,如果(D0)=H0032,(V2)=H0010,(D10)=H000F,(D16)=H0020,指令執行后,對應的幾個輸出口Y置“1”。

圖1-48 例13程序梯形圖

分析:(V2)=H0010=K16,D0V2=D0+16=D16,即使用D16的內容對輸出口Y0~Y7進行控制,對應關系如下:

可見,僅Y5輸出置“1”。

在控制程序中,經常用到數據求和。如果要設計一個累加程序,不用間接尋址的話,那就要每兩個數用一次加法指令ADD,直到所有被加數累加完才得到結果,程序非常冗長,占用很多存儲空間,而且指令執行時間也加長。如果使用變址尋址,則程序設計變得非常簡單。

【例14】把D11~D20的內容進行累加,結果送D21。應用變址尋址程序設計如圖1-49所示。

圖1-49 變址尋址累加程序

第一次執行,V0=0,(D21)+(D11)→(D21),D21的值為D11;

第二次執行,V0=1,(D21)+(D12)→(D21),D21的值為(D11)+(D12)。

以后每執行一次V0加1,D11+V0為新的被加數地址,依次類推,直到V0等于9為止。最后就是(D11)+(D12)+(D13)+…+(D20)→(D21)。

4)定時器T、計數器C

【例15】請說明變址操作數的T0Z2地址,設(Z2)=K8。

變址操作數的地址編號為K0+K8=K8,即變址后的操作為T 8。

【例16】利用定時器變址操作編寫的顯示定時器T0~T9當前值的程序,如圖1-50所示。計數器的變址操作和定時器類似,不再贅述。

圖1-50 例16程序梯形圖

5)指針P

指針P也可進行變址操作,這時,表示轉移的地址發生了偏移。一般在程序中用的較少。

6)常數K、H

常數K、H也可進行變址操作,但操作結果不是偏移的地址,而是一個數。

【例17】請說明下面常數變址操作數的結果。

(V0)=K10   K20V0=K30

(V1)=H12   K20V1=K38

(Z0)=H25   H02Z0=H27=K39

(Z4)=K103   H123Z4=H18A=K394

3.32位指令變址尋址應用

當指令于32位應用時,也可以進行變址操作,其變址操作仍然為兩個編程元件的組合,例如,D0Z0。其中,D0表示32位可以進行變址操作的編程元件(D1,D0),Z0表示32位的變址寄存器(V0,Z0)。三菱FX系列規定,變址寄存器組成32位寄存器時,必須(V,Z)配對組成,其中V為高16位,Z為低16位。配對時必須編號相同,只能配對為(V0,Z0),(V1,Z1),(V2,Z2),…,(V7,Z7)。編號不同不能配對,變址操作數由各自的低8位組合而成,這樣,變址操作數的變址寄存器只能是Z。

應用32位變址尋址時,應特別注意,不能隨意用MOV將變址值送入Z,一定要用DMOV將變址值送入(V,Z)。

【例18】下面為一個32位指令變址尋址應用程序,如圖1-51所示,請給予說明。說明見梯形圖。

圖1-51 例18程序梯形圖

主站蜘蛛池模板: 高邮市| 拜城县| 敖汉旗| 德庆县| 那曲县| 金阳县| 兴山县| 沈丘县| 涡阳县| 岳普湖县| 石首市| 红桥区| 察隅县| 呼玛县| 乌鲁木齐市| 台湾省| 萨嘎县| 肥东县| 拉孜县| 邳州市| 惠水县| 五原县| 桦南县| 浦江县| 信宜市| 嘉黎县| 神木县| 尉犁县| 高碑店市| 新宁县| 镇巴县| 泰兴市| 大兴区| 彭阳县| 河东区| 左贡县| 六枝特区| 鄂州市| 北辰区| 凯里市| 云阳县|