S7-300輸入問題
劉玉蓉
發(fā)布于2014-10-11 17:13
2
0
標簽:
我想用LOOP加變址實現(xiàn)輸入I0.0對應Q0.0,I100.0對應Q100.0,怎樣編寫程序,望解決。
佳答案
L P#0.0 //初始讀指針
LAR1
L 8 // 8個位(0-7)的循環(huán)計數(shù)為初值
M001: T MB 10 //計數(shù)值 送入MB 10
A I [AR1,P#0.0] //按讀指針指示的地址讀數(shù)據(jù)
= Q[AR1,P#0.0] //按寫指針指示的地址寫數(shù)據(jù)
+AR1 P#0.1 //讀指針指向下一數(shù)據(jù)地址
L MB 10 //取循環(huán)計數(shù)值
LOOP M001 //循環(huán)計數(shù)值如為0則結束循環(huán);如不為0減1后則轉向標號為M001的語句,繼續(xù)循環(huán)。
首先對一樓的回答表示敬佩。
我的回答與一樓的不同之處在于:
,沒有使用AR2。對于初學者來說,要謹慎使用AR2。具體原因,可以參看對AR2的使用描述。簡單的講,AR1是完全由用戶賦值、供用戶使用,而AR2可能會被系統(tǒng)賦值,或系統(tǒng)也會使用到AR2的內(nèi)容。所以建議,對AR2理解不深的用戶不要再程序中使用AR2。
第二、使用的偏移不一樣。一樓用戶的語句是 +AR1 p#1.0這表示按字節(jié)偏移。我的語句是+AR1 P#0.1這表示是按位偏移。
第三、結果不同。一樓用戶的結果是Q0.0=I0.0,Q1.0=I1.0,Q2.0=I2.0……Q100.0=I100.0。而我的結果是Q0.0=I0.0,Q0.1=I0.1……Q0.7=I0.7因為我只循環(huán)了八次,所以到Q0.7=I0.7就結束了。