閉環(huán)控制模塊
間接尋址方式是將一個(gè)數(shù)據(jù),假設(shè)A的數(shù)據(jù)信息快遞到另一個(gè)雙字長度的數(shù)據(jù)B地址中,可允許訪問存儲(chǔ)區(qū)如I、Q、V區(qū)等,實(shí)際應(yīng)用大多使用V區(qū)的原因是V區(qū)可使用的存儲(chǔ)空間相對(duì)較大。這么簡單的幾句話,對(duì)于一個(gè)尚未理解尋址方式的編程者可能會(huì)很糾結(jié)。我是這樣來理解這個(gè)問題,假設(shè)有一個(gè)數(shù)據(jù)A,要求將這個(gè)A放入到一個(gè)被好的數(shù)據(jù)中。A假設(shè)為實(shí)際的數(shù)據(jù),所放入的數(shù)據(jù)地址為一個(gè)“箱子”,那么這個(gè)“箱子”總需要給它編的號(hào)牌吧,相當(dāng)于現(xiàn)在我們兌換的*,你讓西門子網(wǎng)站的工作人員把你所需要的*寄給你,你總得告訴他(她)們,你所在的地址信息,如果你沒有明確告知你所在的地址信息,估計(jì)辛苦賺來西幣換取的*還不一定寄到你手中,告訴的過程實(shí)際上就是指針的應(yīng)用,經(jīng)常在兌換*的同事,我的理解與經(jīng)常在調(diào)用指針的原理在一定意義上的雷同了的。
我用200smart V存儲(chǔ)區(qū)記錄數(shù)據(jù),來描述兌換*的過程(比喻可能不太且當(dāng)),假設(shè),我兌換了一個(gè)當(dāng)今的“不倒杯”(話說這種杯子我也兌換了幾個(gè),送給幾個(gè)還在讀書或已經(jīng)參加了工作了的侄女們),這個(gè)相當(dāng)于是實(shí)際現(xiàn)實(shí)的數(shù)據(jù)(一個(gè)實(shí)際的物品),我得告知西門子網(wǎng)站的工作人員,我現(xiàn)在的住址是中國 浙江 XXX地方,這個(gè)相當(dāng)于*需要寄往的地址信息,在指針的應(yīng)用中相當(dāng)于具體的地址區(qū)域。我的地址區(qū)域本身沒有*(地址僅僅是一個(gè)V存儲(chǔ)區(qū),沒有實(shí)際的杯子數(shù)據(jù)),而是需要依靠西門子網(wǎng)站的工作人員寄給我的“不倒杯”(相當(dāng)于實(shí)際的數(shù)據(jù))。
對(duì)于200 smart PLC的指針用“&”符號(hào)來標(biāo)記,相當(dāng)于我西門子網(wǎng)站工作人員的地址信息,而我需要拿的*杯子數(shù)量在指針應(yīng)用中以“*”符號(hào)來標(biāo)記。
200 smart PLC指針的取址以字節(jié)形式來描述,如、&VB0,這個(gè)是規(guī)約,沒有其它方式。而尋址方式則以你所需要的數(shù)據(jù)類型來描述。假設(shè),我需要尋址的數(shù)據(jù)地址為字節(jié),則采用指令MOV_B;如果我需要的數(shù)據(jù)地址為一個(gè)雙字,則采用指令MOV_DW來尋址。說來說去的把本是已經(jīng)模糊了的數(shù)據(jù)搞的這么復(fù)雜有用嗎?其實(shí),問題在后面的實(shí)際應(yīng)用上。
如果有一個(gè)項(xiàng)目,需要把一個(gè)變化的數(shù)據(jù)分別依次寫入到自VB10為首的一串連續(xù)的10個(gè)字節(jié)數(shù)據(jù)地址區(qū)中,那利用指針方式編輯程序就容易的多了。當(dāng)然,這些地址區(qū)只要是有規(guī)律的編排不是連續(xù)的也可以尋址,如首字節(jié)VB10,第二個(gè)字節(jié)存放地址是VB20以此類推也可以。
閉環(huán)控制模塊下面以編程的方式來描述指針存放數(shù)據(jù)的過程(編程思路):
1) 首先,定義好數(shù)據(jù)區(qū)。假設(shè),源數(shù)據(jù)VB0,它需要把變化了的10個(gè)數(shù)據(jù)依次分別寫入到自VB10為首的10個(gè)連續(xù)的數(shù)據(jù)存儲(chǔ)區(qū),止VB19。
2) 在調(diào)用這些數(shù)據(jù)區(qū)地址前,先初始化這些數(shù)據(jù)地址區(qū)的數(shù)據(jù)均為0,以便能夠真實(shí)、準(zhǔn)確反映實(shí)際的數(shù)據(jù),這個(gè)要養(yǎng)成良好的習(xí)慣。
3) 這些存儲(chǔ)區(qū)事先規(guī)劃好了是一串連續(xù)的數(shù)據(jù)存儲(chǔ)區(qū),所以,在實(shí)際應(yīng)用中僅僅需要在數(shù)據(jù)傳送完畢后,數(shù)據(jù)地址的指針加1,相當(dāng)于所需要存儲(chǔ)數(shù)據(jù)的地址下移一個(gè)字節(jié)。實(shí)際上這些上、下移動(dòng)的指針地址,如果是以字節(jié)為單位的僅僅也只能是字節(jié)上、下移動(dòng)一個(gè)字節(jié),字為單位的移動(dòng)2個(gè)字節(jié),雙字或浮點(diǎn)數(shù)為單位的移動(dòng)4個(gè)字節(jié)。
4) 再者,因?yàn)槭孪榷x好了僅僅是存儲(chǔ)10個(gè)數(shù)據(jù),所以,當(dāng)指針下移的次數(shù)達(dá)到了10次(個(gè)),需要再將指針地址向上移動(dòng)到原指針地址。這樣便于重新開始下一輪的數(shù)據(jù)記錄。