有没有让DB块里面数据 移位的系统功能块
刘玉蓉
发布于2014-10-14 17:52
246
0
标签:
就是让把dbw8移动到dbw10 dbw6到dbw8 以此类推
类似这样的功能块有吗 还是需要自己编写
佳答案
1、没有这样的功能块需要自己编写。
这个问题看似简单,但要注意的是不要丢失原数据,方法就是首先要将原数据块进行备份。
备份的方法就是:
使用系统功能块SFC 20 "BLKMOV” (块移动)可将存储器区(= 源区域)的内容复制到另一个存储
器区(= 目标区域)。例如DB0拷入DB1.
CALL "BLKMOV"
SRCBLK :=P#DB0.DBX0.0 BYTE 20
RET_VAL:=MW0
DSTBLK :=P#DB1.DBX0.0 BYTE 20
2、编程,信手编了几句,仅供参考:
用循环语句。例如将DB 1的20个字,按要求送入DB 0中,即把dbw0移动到dbw2 dbw2到dbw4......。
L P#0.0 //初始读指针
LAR1
L P#0.0 //初始写指针
LAR2
L 20 // 20个字的循环计数为初值
M001: T MB 10 //计数值 送入MB 10
L DB1.DBW [AR1,P#0.0] // //取数据
T DB0.DBW [AR1,P#2.0] //按写指针指示的地址写数据
+AR1 P#2.0 //读指针指向下一数据地址
+AR1 P#2.0 //写指针指向下一数据地址
L MB 10 //取循环计数值
LOOP M001 //循环计数值如为0则结束循环;如不为0减1后则转向标号为M001的语句,继续循环。
3、上述程序执行后 DB1保持了DB0的原数据,DB0为排列后数据。