例如输出6个随机数分别送到MD0,MD4,MD8,MD12,MD16,MD20。主要想熟悉一下循环自加LOOP,和地址指针。
最佳答案
随机数没有真正的随机数,只有伪随机数。
指针用法:
FUNCTioN"NS_aver_sum_deta":VOID
TITLE=
VERSION:0.1
VAR_INPUT
db_no:POintER;
pv:REAL;//测量信号
END_VAR
VAR_TEMP
temp_ar1:DWORD;//地址寄存器
temp_ar2:DWORD;
ar1data1:DWORD;//前一个数地址
ar1data2:DWORD;//后一个数地址
ar1data3:DWORD;//第一个数地址
DB_ID:WORD;
ZQP_SUM:REAL;
count:DWORD;
END_VAR
BEGIN
NETWORK
TITLE=
//初始化
TAR1#temp_ar1;
TAR2#temp_ar2;
LP##db_no;
LAR1;
LW[AR1,P#0.0];
T#DB_ID;
OPNDB[#DB_ID];
LAR1P#26.0;
TAR1#ar1data1;
+AR1P#4.0;
TAR1#ar1data2;
NETWORK
TITLE=
//写数据
LDBW24;
_0a1:TDBW22;
LDBD[#ar1data2];
TDBD[#ar1data1];
LAR1#ar1data1;
+AR1P#4.0;
TAR1#ar1data1;
+AR1P#4.0;
TAR1#ar1data2;
LDBW22;
LOOP_0a1;
L#pv;
TDBD[#ar1data1];
LDBD26;
-R;
TDBD4;//deta
NETWORK
TITLE=
//初始化数据计算
L0.000000e+000;
T#ZQP_SUM;
NETWORK
TITLE=
//初始化指针
TAR1#temp_ar1;
TAR2#temp_ar2;
LAR1P#26.0;
TAR1#ar1data1;
+AR1P#4.0;
TAR1#ar1data2;
NETWORK
TITLE=
//数据累计
LDBW24;
_0a4:TDBW22;
LDBD[#ar1data1];
L#ZQP_SUM;
+R;
T#ZQP_SUM;
LAR1#ar1data1;
+AR1P#4.0;
TAR1#ar1data1;
+AR1P#4.0;
TAR1#ar1data2;
LDBW22;
LOOP_0a4;
L#ZQP_SUM;
TDBD8;
LDBW24;
ITD;
DTR;
/R;
TDBD0;
NETWORK
TITLE=
LAR1#temp_ar1;
LAR2#temp_ar2;
NETWORK
TITLE=
SET;
SAVE;
BEU;
END_FUNCTION
图片说明:
提问者对于答案的评价:
xiexie