在1500编程时,fb程序块中定义了SaveAR2(DWORD),块初始时TAR2#SaveAR2,在块最后LAR2#SaveAR2但提示“在对背景数据块进行符号化访问时,对寄存器AR2的修改无效”。这是什么原因,s7v5.5时同样程序,不存在这样的问题,请高手解答
最佳答案
错了
您可以通过下方的信息,查看帮助
帮助里面这么说的:
在STL中存取背景数据块S7-1500
词汇表
消息604:4374的帮助
消息604:4572的帮助信息
简介
“OPNDI”或“CDB”指令将数据块加载到DI寄存器中。在S7-300/400中,此处打开的块将作为背景数据块。FB块接口的局部形参的后续符号寻址(IN、OUT、InOut、Static)将不再对在块调用中指定为背景数据块的数据块进行寻址,而是对位于DI寄存器中的数据块进行寻址。要随后对块接口中的局部形参进行符号寻址,则必须将背景数据块加载到DI寄存器中。
即使在执行指令"LAR2","+AR"和"TAR"之后,S7-300/400中也无法从块接口对形参进行符号寻址,这是由于这些指令破坏了参数的访问方式。
S7-1500中已修正该错误:如果在S7-1500中对块接口中的局部形参进行符号寻址(例如,使用指令L#myIn),则需始终访问块调用中指定为背景数据块的数据块。虽然OPNDILAR2,+AR2,TDB,TAR指令将更改DI或地址寄存器中的数据,但在对局部形参进行寻址时不会对这些寄存器中的数据进行判断。
对背景数据块中局部变量访问的移植
移植过程不会更改已编程的访问方式。但是,如果更改了引用程序中的OPNDI,LAR2,+AR2,TDB,TAR,指令,则该程序的定义可能会发生变更。
要恢复最初的程序定义,则必须手动更改该程序。通常无需再通过寄存器对数据进行寻址。但是,可以使用背景数据块中的ARRAY间接索引ARRAY中的元素。
提问者对于答案的评价:
谢谢
专家置评
已阅,最佳答案正确。