展开查看
比如DB1中所有的数据都是双整数(Dint)格式,通过某一个计算出来的值映射到DB2中去,所有地址都对应,是否有块可以调用或则自行编写个程序块,例如以下:
db1.dbd0/4→db2.dbd0,db1.dbd4/4→db2.dbd4,db1.dbd8/4→db2.dbd8.....,总数可以设定
提问者:efmecg
这个可以自己编写一个程序,用指针的方式进行;不是很理解你说的那个,你的计算值到底怎么回事,但是可以写一个如何将DB1里的10个双字写到DB2里,顺序是对应的
OPN DB1
OPN DB2
LAR1 0 连个数据块都是从0开始的,
LAR2 0
L 10 //10个双字的计算
_001:T MW100
L DB1.DBD[AR1,P#0.0] 取DB1的数据给DB2
T DB2.DBD[AR2,P#0.0]
+AR1 P#4.0 地址寄存器自加,中间有没有逗号我忘记了,自己实践看看吧
+AR2 P#4.0
L MW100
LOOP _001
NOP 0
如果直接复制可以利用SFC20,SFC81的,但是OPN DB1
OPN DB2
LAR1 0 连个数据块都是从0开始的,
LAR2 0
L 10 //10个双字的计算
_001:T MW100
L DB1.DBD[AR1,P#0.0] 取DB1的数据给DB2
T DB2.DBD[AR2,P#0.0]
+AR1 P#4.0 地址寄存器自加,中间有没有逗号我忘记了,自己实践看看吧
+AR2 P#4.0
L MW100
LOOP _001
NOP 0
这个程序段有问题,一个是不能同时打开两个DB块,另一个就是“ L DB1.DBD[AR1,P#0.0] 取DB1的数据给DB2
T DB2.DBD[AR2,P#0.0]”这两条有错误,设定不对,无法执行