TAR2 LAR2

在1500编程时,FB程序块中定义了SaveAR2(DWORD),块初始时 TAR2  #SaveAR2,在块最后     LAR2  #SaveAR2  但提示“在对背景数据块进行符号化访问时,对寄存器AR2的修改无效”。这是什么原因,s7 v5.5时同样程序,不存在这样的问题,请高手解答

最佳答案

错了
您可以通过下方的信息,查看帮助
帮助里面这么说的:
在 STL 中存取背景数据块 S7-1500    
词汇表 
消息 604:4374 的帮助 
消息 604:4572 的帮助信息 
简介 

“OPN DI”或“CDB”指令将数据块加载到 DI 寄存器中。 在 S7-300/400 中,此处打开的块将作为背景数据块。 FB 块接口的局部形参的后续符号寻址(IN、OUT、InOut、Static)将不再对在块调用中指定为背景数据块的数据块进行寻址,而是对位于 DI 寄存器中的数据块进行寻址。 要随后对块接口中的局部形参进行符号寻址,则必须将背景数据块加载到 DI 寄存器中。

即使在执行指令 "L AR2", "+ AR" 和 "TAR" 之后,S7-300/400 中也无法从块接口对形参进行符号寻址,这是由于这些指令破坏了参数的访问方式。

S7-1500 中已修正该错误: 如果在 S7-1500 中对块接口中的局部形参进行符号寻址(例如,使用指令 L #myIn),则需始终访问块调用中指定为背景数据块的数据块。 虽然 OPN DI L AR2, +AR2, TDB, TAR 指令将更改 DI 或地址寄存器中的数据,但在对局部形参进行寻址时不会对这些寄存器中的数据进行判断。

对背景数据块中局部变量访问的移植

移植过程不会更改已编程的访问方式。 但是,如果更改了引用程序中的 OPN DI, L AR2, +AR2, TDB, TAR, 指令,则该程序的定义可能会发生变更。 
要恢复最初的程序定义,则必须手动更改该程序。 通常无需再通过寄存器对数据进行寻址。 但是,可以使用背景数据块中的 ARRAY 间接索引 ARRAY 中的元素。

提问者对于答案的评价:
谢谢

专家置评

已阅,最佳答案正确。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc130392.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年5月29日 下午7:17
下一篇 2017年5月29日 下午7:17

相关推荐