西門子s7-1200的間接尋址需要通過(guò)數(shù)據(jù)塊中的數(shù)組來(lái)實(shí)現(xiàn)。指令fieldread通過(guò)索引(又稱為下標(biāo))變量從數(shù)組中讀取數(shù)值,指令fieldwrite 通過(guò)索引變量向數(shù)組中寫數(shù)值,使用這兩條指令可以實(shí)現(xiàn)間接尋址。
索引變量是間接尋址中的地址指針,它的值是要讀寫的數(shù)組元素的索引值。地址指針就像收音機(jī)調(diào)臺(tái)的指針,改變指針的位置,指針指向不同電臺(tái)。改變地址指針中的索引值,指針“指向”數(shù)組不同的元素。間接尋址的優(yōu)點(diǎn)是可以在程序處理期間,通過(guò)改變指針的值動(dòng)態(tài)地修改指令中的地址。
首先生成一個(gè)名為“數(shù)據(jù)塊1”的全局?jǐn)?shù)據(jù)塊db2,在數(shù)據(jù)塊中生成名為“數(shù)組1”的數(shù)組array[1..10] of int,其元素的數(shù)據(jù)類型為int。
這兩條指令沒(méi)有列入指令列表和高級(jí)指令列表,編程時(shí)將收藏夾中的空邏輯框插入程序,點(diǎn)擊其中紅色的“”,打開下拉式列表框,可以看到列表框底部的指令fieldwrite或fieldread。點(diǎn)擊生成的指令框中的“?”,用列表設(shè)置要寫入或讀取的數(shù)據(jù)類型為int(見下圖)。兩條指令的參數(shù)member的實(shí)參必須是數(shù)組的第一個(gè)元素“數(shù)據(jù)塊1”.數(shù)組1[1]。
指令的輸入?yún)?shù)索引值“index”是要讀寫的數(shù)組中的元素的下標(biāo),數(shù)據(jù)類型為dint(雙整數(shù))。參數(shù)“value”是要寫入數(shù)組元素的值或要讀取的數(shù)組元素的值。
下圖中的fieldwrite指令將常數(shù)25寫入數(shù)組1中的元素“數(shù)組1[3]”。fieldread指令讀取數(shù)組元素“數(shù)組1[3]”的值,將它保存到mw20。改變index的值,可以讀寫別的數(shù)組元素的值。
800)this.width=800>