大家好,先谢谢了。
OB1 调用FB312,(DB312).
FB调用FC108。
变量关系请见附图。DBFB_AKZ 为FC108的输入变量,数据类型为Pointer.
DN17_900_Y12为FB312的静态变量。
请问, FC108里,
1 AR1最后的数据是多少?
2 #dbfb里保存的是多少?
2 最后的OPN DB,打开的是哪个DB?
3 监控栏,V 20.0是什么意思?STANDAND列显示的是哪个寄存器的数?
谢谢。
问题补充:
谢谢。
那么对于
L P##DBFB_AKZ //如果DBFB_AKZ用DB312.DBX10.0代替,为什么ACC1的值是870000a0,而不是840000a0?
LAR1
L W [AR1,P#0.0] //经过这一步,为什么ACC1变成了138了?
T #dbfb
L D [AR1,P#2.0] //AR1+2.0为什么是840000a0?而不是870000c0?
LAR1
OPN DB [#dbfb]
图片说明:
最佳答案
你的DBFB_AKZ 输入变量是P#DB312.DBX10.0,#dbfb里保存的是312,16进制为138,所以最后的OPN DB打开的是DB312。AR1最后的数据是DBX10.0,STANDAND列显示的是累加器1的数值。
这是典型的间接寻址,请参见:
《详解西门子间接寻址.pdf》下载:
http://ishare.iask.sina.com.cn/f/3022080.html
《S7-300和S7-400寻址》下载:
http://www.ad.siemens.com.cn/download/docMessage.aspx?ID=1597&loginID=&srno=&sendtime=
提问者对于答案的评价:
谢谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc233068.html