我想把一个DB[A]块中的第X个字开始,长度为Y个字放到DB块中,从第1个字开始。
应该怎么写程序呢
用SFC20块,用常数没问题,可是我需要把起始位,长度变为变量,这样该怎么写?
ASs='html_titleimg_p' STyle='text-align:CEnter;'>
问题补充:
在ANY指针里LoadSyntax-ID是指什么?
最佳答案
LAR1P##SendDB
LB#16#10//LoadSyntax-ID
TLB[AR1,P#0.0]
LB#16#2//装载数据类型,2代表BYTE
TLB[AR1,P#1.0]
L#Length//数据长度
TLW[AR1,P#2.0]
L#DB_No//DB号
TLW[AR1,P#4.0]
L#OFFSET//起始地址变量,比如想从DBX1.0开始,就给OFFSET赋值8
LP#DBX0.0
+D
TLD[AR1,P#6.0]
看一下any指针的结构就很容易做到啦,any的第2字节可以改读取长度,6字节可以改读取起始地址。上面只是个例子。类似于P#DB1.DBX0.0BYTE228通过sfC20BLKMOV传送给P#DB2.DBX0.0BYTE228,这其中的DB号,DBX0.0起始位置BYTE数据类型228数据长度都可以用变量代替,就可以做到了。
提问者对于答案的评价:
LB#16#10//LoadSyntax-ID是什么意思?为什么是10
最佳答案作者回复:
规定的就是B#16#10,参考西门子的手册。你用ANY指针第0字节就给B#16#10就行了。
这个应该跟系统有关。