发布于 2012-12-13 22:59:36
14楼
多样板?还是第一次听到这种叫法。西门子的手册中一般都是叫做多重背景的。
其实AR2里保存的是多重背景数据块里地址的偏移量。
在FB被调用的时候,会自动将背景数据块号放在DB寄存器2(也就是DI寄存器),而起始地址放在AR2中。
也就是说一般情况下FB被调用的时候,AR2就存放的是P#DBX0.0;但当FB以多重背景的方式被调用的时候,AR2里存放的就是FB在多重背景DB块中的地址偏移值。
举个例子来说:
FB1以多重背景的方式调用FB2,FB1的多重背景数据块为DB1。在DB1中会产生一个与FB2的背景数据块大小一致的区域,假设其地址从DBX200.0开始。
在FB1被调用时,AR2指向DBX0.0。
在FB2被调用时,AR2指向DBX200.0。
很明显,楼主在9楼的程序,就是在多重背景FB中进行pointer指针的形参传递。