技术论坛

 回复:S7-300/400中FC,FB使用指针的区别?

返回主题列表
作者 主题
shanghaiyutian
游士

经验值:274
发帖数:67
精华帖:2
楼主    2009-03-09 14:44:20
主题:S7-300/400中FC,FB使用指针的区别?
版主及各位大侠,请问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变量中。

希望各位高手帮忙分析以下出错原因,谢谢!
四书五经
侠圣

经验值:3667
发帖数:762
精华帖:58
    2009-03-15 22:32:39
精华帖  主题:回复:S7-300/400中FC,FB使用指针的区别?
楼主也是高人啊!
把楼主的程序放到FB中,用模拟器来模拟果然会出现问题。呵呵,经过我的不懈努力,最终在技术资源库中得到解释。
[COLOR=red]为什么在保存块后使用AR2的间接调用被本地静态变量所替换?
描述:
STEP 7 编辑器使用区域内部的直接寻址进行对背景数据的符号访问,也就是访问功能块的所有参数和静态变量。DI寄存器包含背景数据块号而地址寄存器AR2包含多重背景数据块中的背景数据区的地址偏移量。AR2寄存器和DI寄存器作为基本地址寄存器用于功能块中所有参数和静态变量的寻址。
[/COLOR]
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。