時(shí)間:2012-12-31 來源:武漢網(wǎng)whw.cc 作者:whw.cc 我要糾錯(cuò)
這一個(gè)例子地作者是BaiZH,我在學(xué)習(xí)后依據(jù)本人地懂得加了漢字解釋,興許對(duì)于新人有所輔助。感激BaiZH忘我供給源碼,感謝cvlsam不厭這煩地指導(dǎo),有所領(lǐng)悟不敢獨(dú)享。
背景常識(shí)
歡送糾錯(cuò),避免誤導(dǎo)。
FUNCTION"DBtoDB":VOID//該功效塊地作用是把1個(gè)數(shù)據(jù)塊中地指定地1批數(shù)據(jù),復(fù)制到另1個(gè)塊地指定地位。
TITLE=//題目,這里不指定
AUTHOR:BaiZH//作者感謝您,BaiZH,通過你地這一個(gè)例子我基礎(chǔ)入清楚了間接尋址地用法。不外詳細(xì)在神馬情形下應(yīng)用我還得持續(xù)盡力。
FAMILY:IR//分類
NAME:DBtoDB//名稱
VERSION:0.1//版本
VAR_INPUT//輸入型變量聲明開始
SRC_DB:INT;//SourceDBBlockNumber//整型值,要復(fù)制地源數(shù)據(jù)塊塊號(hào)
SRC_SttAddr:INT;//StartAddressoftheSendingDatainSRC_DB//源數(shù)據(jù)塊地要復(fù)制地?cái)?shù)據(jù)起始地址
SendNum:INT;//WordsNumberNeedSending//要復(fù)制地?cái)?shù)據(jù)量
DST_DB:INT;//DestinationDBBlockNumber//目標(biāo)數(shù)據(jù)塊號(hào)
DST_SttAddr:INT;//StartAddressoftheReceivingDatainDST_DB//目的數(shù)據(jù)塊中數(shù)據(jù)起始地址
END_VAR
VAR_IN_OUT//輸入輸出變量申明
Enable:BOOL;//EnableBit//使能此功能塊位
END_VAR
VAR_TEMP//聲明臨時(shí)變量
DB_LOAD_TEMP:INT;//寄存暫時(shí)數(shù)據(jù)塊塊號(hào)
Loop_Val:INT;//SendDataLoopValue//循環(huán)次數(shù)
DB_SAVE:INT;//保存進(jìn)入此函數(shù)前,體系有翻開地?cái)?shù)據(jù)塊號(hào)
DI_SAVE:INT;//同上
AR1_SAVE:DWORD;//保存進(jìn)入此函數(shù)前,地址存放器1中地值
AR2_SAVE:DWORD;//同上
END_VAR
BEGIN//在STEP7地BLOCK中編纂時(shí)地程序重要從這里開始
NETWORK
TITLE=SendData
//MovedatafromDBtoDB
A#Enable;//使能位,ENABLE為1執(zhí)行以下程序
JCNEND;//否則跳轉(zhuǎn)到最后
TAR1#AR1_SAVE;//SaveARandOpenedDB//保留進(jìn)入此函數(shù)前地?cái)?shù)據(jù)到常設(shè)變量中,以備分開時(shí)還原
TAR2#AR2_SAVE;
LDBNO;//同上,保存調(diào)用前地現(xiàn)場數(shù)據(jù),以備調(diào)用結(jié)束恢復(fù)主程序地現(xiàn)場數(shù)據(jù)
T#DB_SAVE,三菱伺服驅(qū)動(dòng)器;//1個(gè)DBNO,1個(gè)DINO,是由于要同時(shí)打開兩個(gè)數(shù)據(jù)塊,只能1個(gè)背景數(shù)據(jù)塊,1個(gè)共享數(shù)據(jù)塊。
LDINO;
T#DI_SAVE;
L#SRC_DB;//OpenDB//把要打開地?cái)?shù)據(jù)塊塊號(hào)通過旁邊變量#DB_LOAD_TEMP傳遞。它地利益援用cvlsam地指點(diǎn),詳細(xì)
T#DB_LOAD_TEMP;
OPNDB[#DB_LOAD_TEMP];
L#DST_DB;//OpenDB
T#DB_LOAD_TEMP;
OPNDI[#DB_LOAD_TEMP];
L#SRC_SttAddr;//LoadStartAddress//要復(fù)制地?cái)?shù)據(jù)起始地址
SLD3;//左移位,使地地址指針最右邊3位保障為0,確保合乎地址格局地請(qǐng)求。具體
LAR1;
L#DST_SttAddr;
SLD3;
LAR2;
L#SendNum;開始循環(huán)程序,把復(fù)制地?cái)?shù)據(jù)量放入輪回變量中
LP1:T#Loop_Val,三菱PLC;//MoveData
LDBW[AR1,P#0,三菱.0];
TDIW[AR2,P#0.0];
+AR1P#2.0;//指針移位
+AR2P#2.0,三菱伺服電機(jī);
L#Loop_Val;
LOOPLP1;//循環(huán)變量減1,斷定循環(huán)前提
LAR1#AR1_SAVE;//RecoverOriginalARandDB//這里在履行完功能后,開端恢復(fù)調(diào)用前地主程序現(xiàn)場數(shù)據(jù)。
LAR2#AR2_SAVE;
OPNDB[#DB_SAVE];
OPNDI[#DI_SAVE];
SET;//系統(tǒng)將RLO置1,代表FB(FC)執(zhí)行完畢,相稱于功能塊地ENO使能輸出位。再次感謝cvlsam。
R#Enable;
END:NOP0;
END_FUNCTION
本文章由:http://www.lk30*** 整理發(fā)布!
標(biāo)簽:
關(guān)于我們 | 打賞支持 | 廣告服務(wù) | 聯(lián)系我們 | 網(wǎng)站地圖 | 免責(zé)聲明 | 幫助中心 | 友情鏈接 |
Copyright © 2022 whw.cc Inc. All Rights Reserved. 武漢網(wǎng) 版權(quán)所有
鄂ICP備19009404號(hào)-6 公安備 42010502000112