有个问题想请各位大侠确定一下,FOR循环中能能否用DB寻址。
我下面这段程序,循环里面注释处,用DB9.DBD0实现不了我想要的功能,但换成一个常数或者一个双字的M寄存器地址就可以,想请各位大侠确定一下,FOR循环中能能否用DB寻址
A "HMI_启动"
FP M 520.0
JNB M001
L 0
T MD 534
L P#0.0
LAR1
L 5
back: T MD 530
OPN DB11
L MD 534
L MD 116
*D
L DB9.DBD0 //此处改为一个数,或者是MD就OK
+D
T DBD [AR1,P#0.0]
T DBD [AR1,P#4.0]
T MD 650
T MD [AR1,P#660.0]
L P#10.0
+AR1
L 1
L MD 534
+D
T MD 534
L MD 530
LOOP back
M001: NOP 0
最佳答案
可以的,问题是打开db11后,你又打开了db9,而你却要把数据传送的db11,所以仅仅把打开db11换个位置即可,请看:
back: T MD 530
//OPN DB11
L MD 534
L MD 116
*D
L DB9.DBD0 //此处改为一个数,或者是MD就OK
+D
OPN DB11
T DBD [AR1,P#0.0]
T DBD [AR1,P#4.0]
T MD 650
T MD [AR1,P#660.0]
L P#10.0
+AR1
L 1
L MD 534
+D
T MD 534
L MD 530
LOOP back
M001: NOP 0
提问者对于答案的评价:
谢谢您,按照您这种方法可以,我知道用OPN这条指令时,之前打开的数据块就会关闭,现在这种情况确实是用OPN打开的块被关闭了,,难道用绝对寻址方式DB9.DBD0也算打开了对应的DB块
最佳答案作者回复:
DB9.DBD0也算打开了对应的DB块,是的
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc245536.html