恭喜,你发布的帖子
发布于 2016-08-26 08:41:40
5楼
楼上的程序虽然有注释,表示一点都没看懂....等有空学习一下
用间接寻址的话,比如5个数据,从MB20中采集数据,送到MB21-25
L 24
L 8
*I
LAR1
L 5
NEXT: T MW 0
L MB [AR1,P#0.0]
T MB [AR1,P#1.0]
L -8
+AR1
L MW 0
LOOP NEXT
每执行一次,从M20读一个数据,送入MB21,并往下堆
感谢超哥指点,我学习了一下你的程序,不知道我理解是否正确。有几点不太理解还要请教一下。
LAR1 P##anySendOfst //FB temp区,数据类型Any
L B#16#10 //for s7
T B [AR1,P#0.0]
L B#16#5 //int 指定数据类型
T B [AR1,P#1.0]
L B#16#84 //memoey area = db 指定读写的区域
T B [AR1,P#6.0]
L B#16#0 //always 0
T B [AR1,P#7.0]
//////////以上都是#anySendOfst是any的Temp进行赋值操作
/////////这边是已经就直接保存在#anySendOfst里了吗?
L 64 //rep. factor 指定读取的个数
T W [AR1,P#2.0]
L #DBNO //db number 指定读取的DB号
T W [AR1,P#4.0]
L #OFFSET //address info 指定读取的DB偏移地址
SLW 3
T W [AR1,P#8.0]
//////////以上是根据接口输入来指定DB号,以及开始的地址,DB数据的寻址
CALL "BLKMOV"
SRCBLK :=#anySendOfst //FB temp区,数据类型Any
//这边就是经过赋值指向DB的any#anySendOfs
RET_VAL:=#SFC20RET_S
DSTBLK :=#arySendOffset //FB temp区,STAT区都可以数据类型Array
//这边数据类型为何是Array? 是不是any?
有错的地方还希望超哥帮忙解释下,谢谢啦~
请填写推广理由:
分享
只看
楼主