发布于 2012-11-02 10:40:07
3楼
楼主的概念有误,还是需要先补一下关于指针的知识,尤其是ANY指针。
“#SenderBuffer的数据传递给了#TargetData,#TargetData又怎么传递给实际的变量地址”
#SenderBuffer的数据 !并没有 !传递给了#TargetData 而是传递给了#TargetData指向的地址
这里的#TargetData是any指针,里面保存的就是地址。
楼主图里的程序就是如何构建这个指针的,从楼主的提示#CommuDB_Num为100
那么#TargetData=P#DB100.DBX0.0 BYTE 32
SFC20的工作就是把SRCBLK指向的地址区域里的数据传送到DSTBLK指向的地址区域
另外源与目标长度不一致时也是可以传送的,具体如何工作请F1
不过这里我有一个小疑问,从楼主的图上来看,FB块里是定义了sourcedata的指针的
从命名来看,sourcedata应该才是数据源的地址指针,而SenderBuffer应该是实际数据的缓冲
但在使用sfc20的时候却没有使用sourcedata,反而用了#SenderBuffer,是不是笔误写错了?!
亦或者#SenderBuffer的前10个字节保存的就是一个ANY指针,这里就不得而知了。