間接尋址是指用指針來(lái)訪(fǎng)問(wèn)存儲(chǔ)區(qū)的數(shù)據(jù)。指針以雙字的形式存儲(chǔ)其它存儲(chǔ)區(qū)的地址,只能將 V 存儲(chǔ)單元、L 存儲(chǔ)單元或累加器寄存器(AC1、AC2、AC3)用作指針。
注意:S7-200 SMART CPU 允許指針訪(fǎng)問(wèn)下列存儲(chǔ)區(qū): I、Q、V、M、S、AI、AQ、SM、T(僅限當(dāng)前值)和 C(僅限當(dāng)前值)。不能使用間接尋址訪(fǎng)問(wèn)單個(gè)位或訪(fǎng)問(wèn) HC、L 或累加器存儲(chǔ)區(qū)。
要?jiǎng)?chuàng)建指針,必須使用“移動(dòng)雙字”指令,將間接尋址的存儲(chǔ)單元地址移至指針位置。;用“&”符號(hào)加上要訪(fǎng)問(wèn)的存儲(chǔ)區(qū)地址可建立一個(gè)指針,當(dāng)指令中的操作數(shù)是指針時(shí),應(yīng)該在操作數(shù)前加上“*”號(hào)。
如下圖所示為以創(chuàng)建和使用指針示例。在該示例中,輸入*AC1 表示 AC1 存儲(chǔ)指向“移動(dòng)字”(MOVW) 指令引用的字長(zhǎng)度值的指針,在 VB200 和 VB201 中存儲(chǔ)的值被移至累加器 AC0。
圖1.創(chuàng)建和使用指針舉例
其中:
注意:修改指針的值時(shí),請(qǐng)記住調(diào)整所訪(fǎng)問(wèn)數(shù)據(jù)的大小:訪(fǎng)問(wèn)字節(jié)時(shí),指針值加 1;訪(fǎng)問(wèn)定時(shí)器 或計(jì)數(shù)器的字或當(dāng)前值時(shí),指針值加 2;訪(fǎng)問(wèn)雙字時(shí),指針值加 4。
例程所需條件:
1、軟件版本:STEP 7-Micro/WIN SMART V2.3
2、SMART CPU固件版本:V1.0及以上
3、通訊硬件:TP電纜(以太網(wǎng)電纜)
所實(shí)現(xiàn)的功能:
索引號(hào)VW1008=0時(shí),將指定的配方0(VB100~VB104) 數(shù)據(jù)傳送到(VB1500~VB1504)
索引號(hào)VW1008=1時(shí),將指定的配方1(VB105~VB109) 數(shù)據(jù)傳送到(VB1500~VB1504)
索引號(hào)VW1008=2時(shí),將指定的配方2(VB110~VB114) 數(shù)據(jù)傳送到(VB1500~VB1504)
索引號(hào)VW1008=3時(shí),將指定的配方3(VB115~VB119) 數(shù)據(jù)傳送到(VB1500~VB1504)
依次類(lèi)推,具體的程序說(shuō)明,參考例程內(nèi)的描述。
例程所需條件:
1、軟件版本:STEP 7-Micro/WIN SMART V2.3
2、SMART CPU固件版本:V1.0及以上
3、通訊硬件:TP電纜(以太網(wǎng)電纜)
所實(shí)現(xiàn)的功能:
索引號(hào)VW1008=0時(shí),將(VB1500~VB1504)數(shù)據(jù)傳送到指定的配方0(VB100~VB104)
索引號(hào)VW1008=1時(shí),將(VB1500~VB1504)數(shù)據(jù)傳送到指定的配方1(VB105~VB109)
索引號(hào)VW1008=2時(shí),將(VB1500~VB1504)數(shù)據(jù)傳送到指定的配方2(VB110~VB114)
索引號(hào)VW1008=3時(shí),將(VB1500~VB1504)數(shù)據(jù)傳送到指定的配方3(VB115~VB119)
依次類(lèi)推,具體的程序說(shuō)明,參考例程內(nèi)的描述。
例程所需條件:
1、軟件版本:STEP 7-Micro/WIN SMART V2.3
2、SMART CPU固件版本:V1.0及以上
3、通訊硬件:TP電纜(以太網(wǎng)電纜)
所實(shí)現(xiàn)的功能:
本例程可以實(shí)現(xiàn)對(duì)區(qū)任意字節(jié)數(shù)據(jù)的訪(fǎng)問(wèn)。
VD1000作為指針,指向VB0,然后利用VD1004存儲(chǔ)的地址偏移量改變指針值,即,VD1000指向VD1000+VD1004的地址,并將該地址的數(shù)據(jù)復(fù)制到VB1008。
通過(guò)改變VD1004,可以訪(fǎng)問(wèn)V區(qū)的任意單元。
舉例:
VD1004=0時(shí),將VB0的數(shù)據(jù)傳送到VB1008,
VD1004=1時(shí),將VB1的數(shù)據(jù)傳送到VB1008,
VD1004=100時(shí),將VB100的數(shù)據(jù)傳送到VB1008,
依次類(lèi)推,具體的程序說(shuō)明,參考例程內(nèi)的描述。
本例程僅供參考,程序中的CPU版本、類(lèi)型可能與用戶(hù)實(shí)際使用不同,用戶(hù)可能需要先對(duì)例子程序做修改和調(diào)整,才能將其用于測(cè)試。本例程的作者和擁有者對(duì)于該例程的功能性和兼容性不負(fù)任何責(zé)任,使用該例程的風(fēng)險(xiǎn)完全由用戶(hù)自行承擔(dān)。由于它是免費(fèi)的,所以不提供任何擔(dān)保,錯(cuò)誤糾正和熱線(xiàn)支持,用戶(hù)不必為此聯(lián)系西門(mén)子技術(shù)支持與服務(wù)部門(mén)。
電話(huà):13818569113 15721373211
郵箱:fushidianji@139.com
網(wǎng)址:http://www.jiansujiabc.com
地址:上海青浦區(qū)北青公路7171號(hào)111-112室