有沒有讓DB塊里面數(shù)據(jù) 移位的系統(tǒng)功能塊
劉玉蓉
發(fā)布于2014-10-14 17:52
246
0
標(biāo)簽:
就是讓把dbw8移動(dòng)到dbw10 dbw6到dbw8 以此類推
類似這樣的功能塊有嗎 還是需要自己編寫
佳答案
1、沒有這樣的功能塊需要自己編寫。
這個(gè)問題看似簡單,但要注意的是不要丟失原數(shù)據(jù),方法就是首先要將原數(shù)據(jù)塊進(jìn)行備份。
備份的方法就是:
使用系統(tǒng)功能塊SFC 20 "BLKMOV” (塊移動(dòng))可將存儲(chǔ)器區(qū)(= 源區(qū)域)的內(nèi)容復(fù)制到另一個(gè)存儲(chǔ)
器區(qū)(= 目標(biāo)區(qū)域)。例如DB0拷入DB1.
CALL "BLKMOV"
SRCBLK :=P#DB0.DBX0.0 BYTE 20
RET_VAL:=MW0
DSTBLK :=P#DB1.DBX0.0 BYTE 20
2、編程,信手編了幾句,僅供參考:
用循環(huán)語句。例如將DB 1的20個(gè)字,按要求送入DB 0中,即把dbw0移動(dòng)到dbw2 dbw2到dbw4......。
L P#0.0 //初始讀指針
LAR1
L P#0.0 //初始寫指針
LAR2
L 20 // 20個(gè)字的循環(huán)計(jì)數(shù)為初值
M001: T MB 10 //計(jì)數(shù)值 送入MB 10
L DB1.DBW [AR1,P#0.0] // //取數(shù)據(jù)
T DB0.DBW [AR1,P#2.0] //按寫指針指示的地址寫數(shù)據(jù)
+AR1 P#2.0 //讀指針指向下一數(shù)據(jù)地址
+AR1 P#2.0 //寫指針指向下一數(shù)據(jù)地址
L MB 10 //取循環(huán)計(jì)數(shù)值
LOOP M001 //循環(huán)計(jì)數(shù)值如為0則結(jié)束循環(huán);如不為0減1后則轉(zhuǎn)向標(biāo)號(hào)為M001的語句,繼續(xù)循環(huán)。
3、上述程序執(zhí)行后 DB1保持了DB0的原數(shù)據(jù),DB0為排列后數(shù)據(jù)。