浮生若夢
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 61 個
工控威望: 200 點
下載積分: 2395 分
在線時間: 86(小時)
注冊時間: 2013-05-28
最后登錄: 2017-12-31
查看浮生若夢的 主題 / 回貼
樓主  發(fā)表于: 2014-04-07 12:14
各位師傅好,我這里有一段西門子300 plc 的程序,看不太明白,望師傅不吝賜教,謝謝。
這段指針和循環(huán),不知道該怎么看?



     
[ 此帖被浮生若夢在2014-04-07 12:22重新編輯 ]
sjm213
有小知識,無大學問。
級別: 論壇版主

精華主題: 7 篇
發(fā)帖數(shù)量: 5212 個
工控威望: 7436 點
下載積分: 159003 分
在線時間: 3172(小時)
注冊時間: 2007-11-21
最后登錄: 2024-12-24
查看sjm213的 主題 / 回貼
1樓  發(fā)表于: 2014-04-08 09:04
OB1中:
IN0=P#DB9.DBX0.0
//表示IN0處為指針,指針指向DB9.DBX0.0

FC35中:
L P##IN0
LAR1
L W[AR1,P#0.0]
T #TEMP2
L D[AR1,P#2.0]
LAR1
OPN DB[#TEMP2]
這段程序代表將數(shù)據(jù)塊號“9”取出來放到#TEMP2中,將指針實際地址取出備用,然后打開數(shù)據(jù)塊DB9;

接下來的程序都是傳送+四則運算了,可自己分析;
所有間接尋址上的AR1都指DB9.DBX0.0,在它的基礎(chǔ)上加上偏移量就是實際地址;
如DBX[AR1,P#0.1]就是指DB9.DBX0.1,
W[AR1,P#8.0]就是指DB9.DBW8。
sjm213
有小知識,無大學問。
級別: 論壇版主

精華主題: 7 篇
發(fā)帖數(shù)量: 5212 個
工控威望: 7436 點
下載積分: 159003 分
在線時間: 3172(小時)
注冊時間: 2007-11-21
最后登錄: 2024-12-24
查看sjm213的 主題 / 回貼
2樓  發(fā)表于: 2014-04-08 13:01
前四行是把“9”這個數(shù)放到#TEMP2中,所以第七行的OPN DB[#TEMP]實際上就是打開數(shù)據(jù)塊DB9;
五、六行指針指向DBX0.0,而不是DBX2.0(這個DBX0.0是從OB1調(diào)用FC35塊時的P#DB9.DBX0.0得來的)。
看指針的數(shù)據(jù)結(jié)構(gòu):