曙海教育集团论坛PLC编程专区PLC编程系列 → 回复帖子

  回复帖子
用户名:   *您没有注册?
密码:   *忘记论坛密码?    标题采用“回复:XXX....”
主题标题:  *不得超过 200 个汉字
当前心情
上一页 发帖表情 下一页
内容
高级设置: 签名: 回帖通知:
 

主题新回顾(发布时间:2010-12-9 10:19:41)
--  作者:wangxinxin
--  一个间接寻址的例子程序源代码。讨论下编程思想。完善代码注释
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"/>