版主及各位大侠,请问SIEMENS S7-300/400FC,FB编程中,使用指针有什么限制及注意事项?为何下面一段程序在FC中使用正常,移植到FB中会引起FB工作异常?
// -> Load Pointer to the User-Defined Variables !
L P##uTPIF // #uTPIF是在IN/OUT接口区定义的UDT类型变量
LAR1 // *
L W [AR1,P#0.0] // *
T #DB_PTR.iDBNO //#DB_PTR.iDBNO是在Temp区域定义的临时变量
OPN DB [#DB_PTR.iDBNO] // *
L D [AR1,P#2.0] // *
T #DB_PTR.pAREA //#DB_PTR.pAREA是在Temp区域定义的临时变量
LAR1 // *
LAR2 P##uTmp_TPIF //#uTmp_TPIF是在Temp区域定义的UDT临时变量,UDT类型与#uTPIF相同
// Load Input Variable to Internal Variable
L D [AR1,P#0.0] // = Input-Variable
T LD [AR2,P#0.0] // = Internal-Variable
L D [AR1,P#4.0] // = Input-Variable
T LD [AR2,P#4.0] // = Internal-Variable
**********FC,FB逻辑控制程序****************
LAR2 P##uTmp_TPIF // Pointer to Internal-Variable
OPN DB [#DB_PTR.iDBNO] // Pointer to Input-Variable
LAR1 #DB_PTR.pAREA // *
// Save Internal Variable to Input Variable
L LD [AR2,P#0.0] // Save Internal in Input Variable !
T D [AR1,P#0.0] // *
L LD [AR2,P#4.0] // Save Internal in Input Variable !
T D [AR1,P#4.0] // *
此段程序的功能是,首先将#uTPIF中定义的数据读入#uTmp_TPIF变量中,在中间的逻辑控制中使用#uTmp_TPIF中的地址,最后再将#uTmp_TPIF中的数据写回到#uTPIF变量中。
希望各位高手帮忙分析以下出错原因,谢谢!