S7系列plc的編程指令支持直接尋址與間接尋址兩種尋址方式。
直接尋址通過(guò)直接給出信號(hào)地址進(jìn)行,它可以用于所有的編程元件(I、Q、M、SM、V、L、S、T、C、AC、HC等)。
[例8-5]利用直接尋址的方式,將標(biāo)志存儲(chǔ)器MB10的內(nèi)容一次性在QB2上輸出的程序如圖8-4.1所示。

圖中的MOV B在S7-200PLC中為字節(jié)移動(dòng)指令,EN為啟動(dòng)條件,IN端為需要移動(dòng)的數(shù)據(jù)地址,OUT端為移動(dòng)目標(biāo)位置地址,SMO.O為PLC內(nèi)部的恒“1”信號(hào)。有關(guān)本指令的更具體說(shuō)明可以詳見(jiàn)plc編程的有關(guān)章節(jié)。
2.間接尋址
S7-200的間接尋址方式中,操作數(shù)指定的是操作對(duì)象所存放的地址,而不具體指明操作對(duì)象。因此,間接尋址方式需要通過(guò)“地址指針”進(jìn)行。
所謂“地址指針”是間接尋址時(shí)專門(mén)用來(lái)存儲(chǔ)地址的寄存器。在S7-200 PLC中,建立地址指針應(yīng)注意以下幾點(diǎn):
①只能用變量V、局部變量L或累加器AC1、AC2、AC3作為地址指針(ACO不可使用)。
②建立地址指針,必須用雙字的形式將間接尋址需要的存儲(chǔ)器地址移動(dòng)到地址指針中;存儲(chǔ)器地址前加符號(hào)“&”進(jìn)行標(biāo)記,“&”表明移動(dòng)的只是址,而不是該存儲(chǔ)器的具體內(nèi)容。
③間接尋j時(shí),應(yīng)在地址指針的前面加“*”標(biāo)記,表示該操作數(shù)為間接尋址的地址指針。
④允許利用地址指針訪問(wèn)的存儲(chǔ)器為I、Q、V、M、S以及定時(shí)器T、計(jì)數(shù)器C的當(dāng)前值,但模擬量輸入/輸出AI/AQ、高速計(jì)數(shù)器HC、特殊標(biāo)志SM以局部變量L不能通過(guò)地址指針進(jìn)行訪問(wèn)。
⑤S7-200的間接尋址不可以用于二進(jìn)制位信號(hào)、高速計(jì)數(shù)器HC、局部變量L,如不可以對(duì)I0.2、Q0.2、HC1、LW2等使用間接尋址。
[例1]以AC1(累加器1)作為地址指針,將變量存儲(chǔ)器VB200~VB203中4字節(jié)數(shù)據(jù)(12345678)移動(dòng)到標(biāo)志寄存器MBO~MB3中的程序如圖8-4.2所示。
程序分為4段,第1段利用雙字移動(dòng)指令MOVD(在梯形圖中的符號(hào)為MOV__ DW)將地址VB200移動(dòng)到地址指針AC1中。
第2段利用字移動(dòng)指令MOVW,將地址指針ACI中地址VB200所存儲(chǔ)的內(nèi)容(VB200、VB201中的值1234)移動(dòng)到MWO。
第3段將地址指針中的地址加2(AC1的地址變?yōu)閂B202)。
第4段將地址指針AC1中地址VB202中所存儲(chǔ)的內(nèi)容(VB202、VB203中的值5678)移動(dòng)到MW2。
圖中有關(guān)MOV指令的具體說(shuō)明可以詳見(jiàn)第10章10.4節(jié)的有關(guān)章節(jié)。
[例2]以LD10(局部變量10)作為指針,將由偏移量存儲(chǔ)器VD1004所確定的變量存儲(chǔ)器VW中的內(nèi)容移動(dòng)到VW1900的程序如圖8-4.3所示。
程序分為3段,第l段利用雙字移動(dòng)指令MOVD(在梯形圖中的符號(hào)為MOV DW)將地址VBO移動(dòng)到地址指針LD10中。
第2段將指針中的地址VBO加上偏移量存儲(chǔ)器VD1004的內(nèi)容(LD10的地址變?yōu)閂BO+偏移量),確定移動(dòng)目標(biāo)。
第3段將指針LD10中地址“VBO+偏移量”中所存儲(chǔ)的內(nèi)容移動(dòng)到VW1900。
本例中如果VD1004中的內(nèi)容為1000,則變量存儲(chǔ)器VW1000中的內(nèi)容將被復(fù)制到VW 1900中;若改變VD1004中的內(nèi)容為1100,則變量存儲(chǔ)VW1100中的內(nèi)容將被復(fù)制到VW1900中。

[例1]以AC1(累加器1)作為地址指針,將變量存儲(chǔ)器VB200~VB203中4字節(jié)數(shù)據(jù)(12345678)移動(dòng)到標(biāo)志寄存器MBO~MB3中的程序如圖8-4.2所示。
程序分為4段,第1段利用雙字移動(dòng)指令MOVD(在梯形圖中的符號(hào)為MOV__ DW)將地址VB200移動(dòng)到地址指針AC1中。
第2段利用字移動(dòng)指令MOVW,將地址指針ACI中地址VB200所存儲(chǔ)的內(nèi)容(VB200、VB201中的值1234)移動(dòng)到MWO。
第3段將地址指針中的地址加2(AC1的地址變?yōu)閂B202)。
第4段將地址指針AC1中地址VB202中所存儲(chǔ)的內(nèi)容(VB202、VB203中的值5678)移動(dòng)到MW2。
圖中有關(guān)MOV指令的具體說(shuō)明可以詳見(jiàn)第10章10.4節(jié)的有關(guān)章節(jié)。
[例2]以LD10(局部變量10)作為指針,將由偏移量存儲(chǔ)器VD1004所確定的變量存儲(chǔ)器VW中的內(nèi)容移動(dòng)到VW1900的程序如圖8-4.3所示。
程序分為3段,第l段利用雙字移動(dòng)指令MOVD(在梯形圖中的符號(hào)為MOV DW)將地址VBO移動(dòng)到地址指針LD10中。
第2段將指針中的地址VBO加上偏移量存儲(chǔ)器VD1004的內(nèi)容(LD10的地址變?yōu)閂BO+偏移量),確定移動(dòng)目標(biāo)。
第3段將指針LD10中地址“VBO+偏移量”中所存儲(chǔ)的內(nèi)容移動(dòng)到VW1900。
本例中如果VD1004中的內(nèi)容為1000,則變量存儲(chǔ)器VW1000中的內(nèi)容將被復(fù)制到VW 1900中;若改變VD1004中的內(nèi)容為1100,則變量存儲(chǔ)VW1100中的內(nèi)容將被復(fù)制到VW1900中。