恭喜,你发布的帖子
发布于 2016-01-27 08:41:38
3楼
上班没有太多事情,就根据楼主的要求试着做了一下,通过仿真软件看应该是能达到要求,楼主看一下
//将要被记录的数据DB2中
//记录数据的数组,在DB3中
//FC块设定4个ANY类型的临时变量
A I 0.0
FP M 70.0
JCN b
NOP 0
**I0.0 作为记录数据的触发条件
L L#620
SLD 3
T MD 60
L 32
a: T MW 50
L P##Last
LAR1
L W#16#1004
T LW [AR1,P#0.0]
L W#16#A
T LW [AR1,P#2.0]
L 3
T LW [AR1,P#4.0]
L MD 60
L P#DBX 0.0
OD
T LD [AR1,P#6.0]
L P##Next
LAR1
L W#16#1004
T LW [AR1,P#0.0]
L W#16#A
T LW [AR1,P#2.0]
L 3
T LW [AR1,P#4.0]
L MD 60
L P#DBX 20.0
OD
T LD [AR1,P#6.0]
CALL "BLKMOV"
SRCBLK :=#Last
RET_VAL:=MW30
DSTBLK :=#Next
L 0
T DB3.DBD 640
T DB3.DBD 644
T DB3.DBD 648
T DB3.DBD 652
T DB3.DBD 656
// 这个是将32号数组清零,可以要 也可以不要
L MD 60
L 160
-I
T MD 60
L MW 50
LOOP a
NOP 0
//这个循环用来把0到31号数组一次向后移位,是先从最开始被写进去的数据开始
L P##Send
LAR1
L W#16#1004
T LW [AR1,P#0.0]
L W#16#A
T LW [AR1,P#2.0]
L 2
T LW [AR1,P#4.0]
L P#DBX 0.0
T LD [AR1,P#6.0]
L P##First
LAR1
L W#16#1004
T LW [AR1,P#0.0]
L W#16#A
T LW [AR1,P#2.0]
L 3
T LW [AR1,P#4.0]
L P#DBX 0.0
T LD [AR1,P#6.0]
CALL "BLKMOV"
SRCBLK :=#Send
RET_VAL:=MW30
DSTBLK :=#First
//移位完成后将要记录的数据写入数据记录区的第一数组位置
请填写推广理由:
分享
只看
楼主