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