请教:FC/FB中地址寄存器AR1,AR2的使用
功能描述:
1·M0.0代表1#故障,M1.0代表2#故障,M2.0代表3#故障;
2·M0.0为1,MW80为1,M0.0为0,MW80为0;M1.0为1,MW82为2,M1.0为0,MW82为0;以此类推
我通过直接寻址实现了,判断当M0.0为1时,将固定地址与MW80作比较;当M1.0为1时,将固定地址与MW82作比较,以此类推。
目前想通过FC 编写一个循环程序简化程序,考虑在FC中使用地址寄存器,创建FC后,建立input :a1(bool),a2(word),a1连接M0.0,a2连接MW80,在FC中通过
L P##a1
LAR1
L P##a2
LAR2
。
。
。
+AR1 P#1.0
+AR2 P#2.0
实现功能,但是功能无法实现,第一次使用地址寄存器,请高手指点一下我在地址寄存器使用上的错误。
部分测试代码如下:
L #queue_db
T #queue_dbtmp
OPN DB [#queue_dbtmp]
L P##error_frt_Baddr
LAR1
L P##error_frt_Waddr
LAR2
L #Queue_max_number
ll0: T #num_loop1
A(
L #queue_number
L 0
>I
)
A [AR1,P#0.0]
// = "1#驱动"
JNB s1
///////////////////////////////
L #queue_number
ll1: T #num_loop2
CALL "FIFO"
TABLE :=DBW0
RET_VAL:=#cache_data1
A(
L #cache_data1
L W [AR2,P#0.0]
<>I
)
JNB s2
CALL "ATT"
DATA :=#cache_data1
TABLE:=DBW0
s2: NOP 0
NOP 0
L #num_loop2
LOOP ll1
s1: NOP 0
NOP 0
+AR1 P#0.1
+AR2 P#2.0
L #num_loop1
LOOP ll0
ed: NOP 0