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