以文本方式查看主题

-  曙海教育集团论坛  (http://sun4.cn/bbs/index.asp)
--  PLC编程系列  (http://sun4.cn/bbs/list.asp?boardid=59)
----  一个间接寻址的例子程序源代码。讨论下编程思想。完善代码注释  (http://sun4.cn/bbs/dispbbs.asp?boardid=59&id=2328)

--  作者:wangxinxin
--  发布时间:2010-12-9 10:19:41
--  一个间接寻址的例子程序源代码。讨论下编程思想。完善代码注释
FUNCTION "DBtoDB" : VOID
TITLE =
AUTHOR : BaiZH
FAMILY : IR
NAME : DBtoDB
VERSION : 0.1
VAR_INPUT
SRC_DB : INT ; //Source DB Block Number
SRC_SttAddr : INT ; //Start Address of the Sending Data in SRC_DB
SendNum : INT ; //Words Number Need Sending
DST_DB : INT ; //Destination DB Block Number
DST_SttAddr : INT ; //Start Address of the Receiving Data in DST_DB
END_VAR
VAR_IN_OUT
Enable : BOOL ; //Enable Bit
END_VAR
VAR_TEMP
DB_LOAD_TEMP : INT ;
Loop_Val : INT ; //Send Data Loop Value
DB_SAVE : INT ;
DI_SAVE : INT ;
AR1_SAVE : DWORD ;
AR2_SAVE : DWORD ;
END_VAR
BEGIN
NETWORK
TITLE =Send Data
//Move data from DB to DB
A #Enable;
JCN END;
TAR1 #AR1_SAVE; // Save AR and Opened DB
TAR2 #AR2_SAVE;
L DBNO;
T #DB_SAVE;
L DINO;
T #DI_SAVE;
L #SRC_DB; //Open DB
T #DB_LOAD_TEMP; //这里为什么要多用个“#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
SLD 3; //这里为什么用这个指令?有什么用?
LAR1 ;
L #DST_SttAddr;
SLD 3;
LAR2 ;
L #SendNum;
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;
LAR1 #AR1_SAVE; //Recover Original AR and DB
LAR2 #AR2_SAVE;
OPN DB [#DB_SAVE];
OPN DI [#DI_SAVE];
SET ;
R #Enable;
END: NOP 0;
END_FUNCTION
<link href="/templates/xhtml2/skins/xhtml/digg/style3/style.css" type="text/css" rel="stylesheet"/>