step7db块寻址_step7中的难点:间接寻址示例,中文详细注释。
step7中的難點(diǎn):間接尋址示例,中文詳細(xì)注釋。
推薦歡迎糾錯(cuò),防止誤導(dǎo)。
FUNCTION "DBtoDB" : VOID //該功能塊的作用是把一個(gè)數(shù)據(jù)塊中的指定的一批數(shù)據(jù),復(fù)制到另一個(gè)塊的指定位置。
TITLE =??????????????????//標(biāo)題,這里沒(méi)有指定
AUTHOR : BaiZH?????????? //作者 感謝您,BaiZH,通過(guò)您的這個(gè)例子我基本入明白了間接尋址的用法。不過(guò)具體在什么情況下使用我還得繼續(xù)努力。
FAMILY : IR?????????????? //分類(lèi)
NAME : DBtoDB??????????????//名稱(chēng)
VERSION : 0.1??????????????//版本
VAR_INPUT??????????????????????????????????????????????????????????????//輸入型變量聲明開(kāi)始
SRC_DB : INT ; //Source DB Block Number?????????????????????????? //整型值,要復(fù)制的源數(shù)據(jù)塊塊號(hào)
SRC_SttAddr : INT ; //Start Address of the Sending Data in SRC_DB??//源數(shù)據(jù)塊的要復(fù)制的數(shù)據(jù)起始地址
SendNum : INT ; //Words Number Need Sending???????????????????????? //要復(fù)制的數(shù)據(jù)量
DST_DB : INT ; //Destination DB Block Number?????????????????????? //目標(biāo)數(shù)據(jù)塊號(hào)
DST_SttAddr : INT ; //Start Address of the Receiving Data in DST_DB //目標(biāo)數(shù)據(jù)塊中數(shù)據(jù)起始地址
END_VAR
VAR_IN_OUT??????????????????????????????????????????????????????????????//輸入輸出變量聲明
Enable : BOOL ; //Enable Bit????????????????????????????????????????//使能此功能塊位
END_VAR
VAR_TEMP????????????????????????????????????????????????????????????????//聲明臨時(shí)變量
DB_LOAD_TEMP : INT ;?????????????????????????????????????????????? //存放臨時(shí)數(shù)據(jù)塊塊號(hào)
Loop_Val : INT ;???????????????????????????????????????????????????? //Send Data Loop Value //循環(huán)次數(shù)
DB_SAVE : INT ;???????????????????????????????????????????????????? //保存進(jìn)入此函數(shù)前,系統(tǒng)已經(jīng)打開(kāi)的數(shù)據(jù)塊號(hào)
DI_SAVE : INT ;???????????????????????????????????????????????????? //同上
AR1_SAVE : DWORD ;????????????????????????????????????????????????????//保存進(jìn)入此函數(shù)前,地址寄存器1中的值
AR2_SAVE : DWORD ;???????????????????????????????????????????????? //同上
END_VAR
BEGIN??//在STEP7的BLOCK中編輯時(shí)的程序主要從這里開(kāi)始
NETWORK
TITLE =Send Data
//Move data from DB to DB
A???? #Enable;????//使能位,ENABLE為1執(zhí)行以下程序
JCN?? END;???????? //否則跳轉(zhuǎn)到最后
TAR1??#AR1_SAVE; // Save AR and Opened DB //保存進(jìn)入此函數(shù)前的數(shù)據(jù)到臨時(shí)變量中,以備離開(kāi)時(shí)復(fù)原
TAR2??#AR2_SAVE;
L???? DBNO;???? //同上,保存調(diào)用前的現(xiàn)場(chǎng)數(shù)據(jù),以備調(diào)用完畢復(fù)原主程序的現(xiàn)場(chǎng)數(shù)據(jù)
T???? #DB_SAVE;??//一個(gè)DBNO,一個(gè)DINO,是因?yàn)橐瑫r(shí)打開(kāi)兩個(gè)數(shù)據(jù)塊,只能一個(gè)背景數(shù)據(jù)塊,一個(gè)共享數(shù)據(jù)塊。
L???? DINO;
T???? #DI_SAVE;
L???? #SRC_DB; //Open DB??//把要打開(kāi)的數(shù)據(jù)塊塊號(hào)通過(guò)中間變量#DB_LOAD_TEMP傳送
T???? #DB_LOAD_TEMP;
OPN?? DB [#DB_LOAD_TEMP];
L???? #DST_DB; //Open DB
T???? #DB_LOAD_TEMP;
OPN?? DI [#DB_LOAD_TEMP];
L???? #SRC_SttAddr; //Load Start Address //要復(fù)制的數(shù)據(jù)起始地址
SLD?? 3; //左移位,使的地址指針最右邊三位保證為0,確保符合地址格式的要求。詳細(xì): http://bbs.e10000.cn/a/a.asp?B=302&;ID=608300
LAR1??;
L???? #DST_SttAddr;
SLD?? 3;
LAR2??;
L???? #SendNum;??開(kāi)始循環(huán)程序,把復(fù)制的數(shù)據(jù)量放入循環(huán)變量中
LP1:??T???? #Loop_Val; //Move Data
L???? DBW [AR1,P#0.0];
T???? DIW [AR2,P#0.0];
+AR1??P#2.0;??//指針移位
+AR2??P#2.0;
L???? #Loop_Val;
LOOP??LP1; //循環(huán)變量減1,判斷循環(huán)條件
LAR1??#AR1_SAVE; //Recover Original AR and DB//這里在執(zhí)行完功能后,開(kāi)始恢復(fù)調(diào)用前的主程序現(xiàn)場(chǎng)數(shù)據(jù)。
LAR2??#AR2_SAVE;
OPN?? DB [#DB_SAVE];
OPN?? DI [#DI_SAVE];
SET?? ; //系統(tǒng)將RLO置1,代表FB(FC)執(zhí)行完畢,相當(dāng)于功能塊的ENO使能輸出位。再次感謝cvlsam。
R???? #Enable;
END:??NOP?? 0;
END_FUNCTION
總結(jié)
以上是生活随笔為你收集整理的step7db块寻址_step7中的难点:间接寻址示例,中文详细注释。的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python中view的用法_APIvi
- 下一篇: 汇智创科机器人_【汇智创科机器人招聘信息