• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
浮生若夢
級別: 略有小成
精華主題: 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重新編輯 ]
浮生若夢
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 61 個
工控威望: 200 點
下載積分: 2395 分
在線時間: 86(小時)
注冊時間: 2013-05-28
最后登錄: 2017-12-31
查看浮生若夢的 主題 / 回貼
1樓  發(fā)表于: 2014-04-07 12:25
圖片共3 張,中間第二張圖片,跳轉標號m003只有一個,不是截圖上的“有2個跳轉標號m003” 不知道我這樣解釋師傅們聽明白了沒。。。。
sjm213
有小知識,無大學問。
級別: 論壇版主

精華主題: 7 篇
發(fā)帖數(shù)量: 5176 個
工控威望: 7399 點
下載積分: 157935 分
在線時間: 3137(小時)
注冊時間: 2007-11-21
最后登錄: 2024-09-21
查看sjm213的 主題 / 回貼
2樓  發(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,在它的基礎上加上偏移量就是實際地址;
如DBX[AR1,P#0.1]就是指DB9.DBX0.1,
W[AR1,P#8.0]就是指DB9.DBW8。
浮生若夢
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 61 個
工控威望: 200 點
下載積分: 2395 分
在線時間: 86(小時)
注冊時間: 2013-05-28
最后登錄: 2017-12-31
查看浮生若夢的 主題 / 回貼
3樓  發(fā)表于: 2014-04-08 11:50
引用
引用第2樓sjm213于2014-04-08 09:04發(fā)表的中去  :
OB1中:
IN0=P#DB9.DBX0.0
//表示IN0處為指針,指針指向DB9.DBX0.0

FC35中:
.......

感謝版主大人的熱心回復!
另外,我這里還有些疑問,fc35,前四行語句,我的理解是:
把指針值 DB9.DBW0放到#TEMP2中去,
fc35,第五,六,行語句,是將 DB9.DBD2裝載到地址寄存器AR1中去,
fc35,第七行語句,是打開數(shù)據(jù)塊 DB9.DBW0,但這樣理解好像也不對。
我對300的指針這塊還是不理解。
sjm213
有小知識,無大學問。
級別: 論壇版主

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

浮生若夢
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 61 個
工控威望: 200 點
下載積分: 2395 分
在線時間: 86(小時)
注冊時間: 2013-05-28
最后登錄: 2017-12-31
查看浮生若夢的 主題 / 回貼
5樓  發(fā)表于: 2014-04-08 15:25
再次謝謝版主,
關于指針這塊,我再研究下,有問題時,還得請教您,謝謝。
浮生若夢
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 61 個
工控威望: 200 點
下載積分: 2395 分
在線時間: 86(小時)
注冊時間: 2013-05-28
最后登錄: 2017-12-31
查看浮生若夢的 主題 / 回貼
6樓  發(fā)表于: 2014-04-10 12:30
引用
引用第4樓sjm213于2014-04-08 13:01發(fā)表的  :
前四行是把“9”這個數(shù)放到#TEMP2中,所以第七行的OPN DB[#TEMP]實際上就是打開數(shù)據(jù)塊DB9;
五、六行指針指向DBX0.0,而不是DBX2.0(這個DBX0.0是從OB1調用FC35塊時的P#DB9.DBX0.0得來的)。
看指針的數(shù)據(jù)結構:
[attachment=119802]


版主請看,我這樣的理解對嗎?
另外我還是想不明白,累加器和地址寄存器都是32位的,它們怎么能裝得下48位的pointer 類型的數(shù)據(jù)呢?
浮生若夢
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 61 個
工控威望: 200 點
下載積分: 2395 分
在線時間: 86(小時)
注冊時間: 2013-05-28
最后登錄: 2017-12-31
查看浮生若夢的 主題 / 回貼
7樓  發(fā)表于: 2014-04-10 12:37

另外,我這里還有以前自己分析過的一段程序,對于程序中指針部分的理解,總感覺有問題,還望版主大人指教,在這里先說聲,謝謝了,謝謝版主大人耐心解答,才使得我們這樣的新手少走彎路。
lichenhui333
只有搞不定的人,沒有搞不定的事。
級別: 工控俠客
精華主題: 0
發(fā)帖數(shù)量: 566 個
工控威望: 4091 點
下載積分: 7994 分
在線時間: 506(小時)
注冊時間: 2010-12-21
最后登錄: 2020-12-14
查看lichenhui333的 主題 / 回貼
8樓  發(fā)表于: 2014-04-10 13:50
里面不會出現(xiàn)6個字節(jié)的,當裝載雙字時,ACUU1里面的原有內容自動轉存到ACUU2里面去了。ACUU2里面原有內容被覆蓋。這樣ACUU1里面的就裝載雙字了。
[ 此帖被lichenhui333在2014-04-10 13:59重新編輯 ]
chinasiemens
級別: *
精華主題: * 篇
發(fā)帖數(shù)量: * 個
工控威望: * 點
下載積分: * 分
在線時間: (小時)
注冊時間: *
最后登錄: *
查看chinasiemens的 主題 / 回貼
9樓  發(fā)表于: 2014-04-10 17:12
圍觀大神
浮生若夢
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 61 個
工控威望: 200 點
下載積分: 2395 分
在線時間: 86(小時)
注冊時間: 2013-05-28
最后登錄: 2017-12-31
查看浮生若夢的 主題 / 回貼
10樓  發(fā)表于: 2014-04-10 20:14
引用
引用第8樓lichenhui333于2014-04-10 13:50發(fā)表的  :
里面不會出現(xiàn)6個字節(jié)的,當裝載雙字時,ACUU1里面的原有內容自動轉存到ACUU2里面去了。ACUU2里面原有內容被覆蓋。這樣ACUU1里面的就裝載雙字了。

pointer類型的數(shù)據(jù)是直接裝載到 ACCU1中去的,但 ACCU1是32位,pointer類型數(shù)據(jù)是48位啊。
zhangdingye
生命沒有投機,平凡也能創(chuàng)造奇跡!
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 142 個
工控威望: 296 點
下載積分: 7283 分
在線時間: 74(小時)
注冊時間: 2011-09-14
最后登錄: 2014-04-14
查看zhangdingye的 主題 / 回貼
11樓  發(fā)表于: 2014-04-13 16:49
哥們  你的程序是怎么從電腦上面 弄下來的   不是 復制粘貼不行嗎
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go