1.直接尋址
s7系列plc的編程指令支持直接尋址與間接尋址兩種尋址方式。
直接尋址通過直接給出信號地址進(jìn)行,它可以用于所有的編程元件(i、q、m、sm、v、l、s、t、c、ac、hc等)。
[例8-5]利用直接尋址的方式,將標(biāo)志存儲器mb10的內(nèi)容一次性在qb2上輸出的程序如圖8-4.1所示。
圖中的mov b在s7-200plc中為字節(jié)移動指令,en為啟動條件,in端為需要移動的數(shù)據(jù)地址,out端為移動目標(biāo)位置地址,smo.o為plc內(nèi)部的恒“1”信號。有關(guān)本指令的更具體說明可以詳見plc編程的有關(guān)章節(jié)。
2.間接尋址
s7-200的間接尋址方式中,操作數(shù)指定的是操作對象所存放的地址,而不具體指明操作對象。因此,間接尋址方式需要通過“地址指針”進(jìn)行。
所謂“地址指針”是間接尋址時專門用來存儲地址的寄存器。在s7-200 plc中,建立地址指針應(yīng)注意以下幾點:
①只能用變量v、局部變量l或累加器ac1、ac2、ac3作為地址指針(aco不可使用)。
②建立地址指針,必須用雙字的形式將間接尋址需要的存儲器地址移動到地址指針中;存儲器地址前加符號“&”進(jìn)行標(biāo)記,“&”表明移動的只是址,而不是該存儲器的具體內(nèi)容。
③間接尋j時,應(yīng)在地址指針的前面加“*”標(biāo)記,表示該操作數(shù)為間接尋址的地址指針。
④允許利用地址指針訪問的存儲器為i、q、v、m、s以及定時器t、計數(shù)器c的當(dāng)前值,但模擬量輸入/輸出ai/aq、高速計數(shù)器hc、特殊標(biāo)志sm以局部變量l不能通過地址指針進(jìn)行訪問。
⑤s7-200的間接尋址不可以用于二進(jìn)制位信號、高速計數(shù)器hc、局部變量l,如不可以對i0.2、q0.2、hc1、lw2等使用間接尋址。
[例1]以ac1(累加器1)作為地址指針,將變量存儲器vb200~vb203中4字節(jié)數(shù)據(jù)(12345678)移動到標(biāo)志寄存器mbo~mb3中的程序如圖8-4.2所示。
程序分為4段,第1段利用雙字移動指令movd(在梯形圖中的符號為mov__ dw)將地址vb200移動到地址指針ac1中。
第2段利用字移動指令movw,將地址指針aci中地址vb200所存儲的內(nèi)容(vb200、vb201中的值1234)移動到mwo。
第3段將地址指針中的地址加2(ac1的地址變?yōu)関b202)。
第4段將地址指針ac1中地址vb202中所存儲的內(nèi)容(vb202、vb203中的值5678)移動到mw2。
圖中有關(guān)mov指令的具體說明可以詳見第10章10.4節(jié)的有關(guān)章節(jié)。
[例2]以ld10(局部變量10)作為指針,將由偏移量存儲器vd1004所確定的變量存儲器vw中的內(nèi)容移動到vw1900的程序如圖8-4.3所示。
程序分為3段,第l段利用雙字移動指令movd(在梯形圖中的符號為mov dw)將地址vbo移動到地址指針ld10中。
第2段將指針中的地址vbo加上偏移量存儲器vd1004的內(nèi)容(ld10的地址變?yōu)関bo+偏移量),確定移動目標(biāo)。
第3段將指針ld10中地址“vbo+偏移量”中所存儲的內(nèi)容移動到vw1900。
本例中如果vd1004中的內(nèi)容為1000,則變量存儲器vw1000中的內(nèi)容將被復(fù)制到vw 1900中;若改變vd1004中的內(nèi)容為1100,則變量存儲vw1100中的內(nèi)容將被復(fù)制到vw1900中。