请问各位大狭,我的一个通讯程序与6AR70通讯,请你们帮我看看错在哪,装置报A083,我用PQW写就可以,很迷惑,不知道问题出在哪了,下面是我的程序,我是新手,请多指教,谢谢
CALL "DPRD_DAT"
LADDR :=W#16#108
RET_VAL:=MW2
RECORD :=P#DB1.DBX4.0 BYTE 8
CALL "DPWR_DAT"
LADDR :=W#16#108
RECORD :=P#DB1.DBX0.0 BYTE 8
RET_VAL:=MW4
OPN DB 1
L P#DBX 0.0
LAR1
A I 0.0
= DBX [AR1,P#0.0]
A I 0.2
= DBX [AR1,P#0.3]
A DBX [AR1,P#4.0]
= Q 0.0
A DBX [AR1,P#5.1]
= Q 0.1
问题补充:
我用的是PPO 1,4PKW 2PZD
最佳答案
SFC14/15有地址冲突,因为"DPWR_DAT"从DB1.DBX0.0 开始写8个字节(BYTE 8)已经是包括DB1.DW0-DB1.DBW6,占用了"DPRD_DAT"的存储区域。而且不可能是BYTE 8(4个字),因为组态时只可能2/6/104个字,比如PPO3/4/5。
如果是PPO3(PZD2/2,2个字,BYTE 4),如果你的DB1还是4个字,那程序中应该是:
CALL "DPRD_DAT"
LADDR :=W#16#108
RET_VAL:=MW2
RECORD :=P#DB1.DBX4.0 BYTE 4
CALL "DPWR_DAT"
LADDR :=W#16#108
RECORD :=P#DB1.DBX0.0 BYTE 4
RET_VAL:=MW4
即可。
而对于:
“OPN DB 1
L P#DBX 0.0
LAR1
A I 0.0
= DBX [AR1,P#0.0]
A I 0.2
= DBX [AR1,P#0.3]
A DBX [AR1,P#4.0]
= Q 0.0
A DBX [AR1,P#5.1]
= Q 0.1
”
你可以直接写:
A I 0.0
= DB1,DBX0.0
A I 0.2
= DB1.DBX0.3
A DB1.DBX4.0
= Q 0.0
A DB1.DBX5.1
= Q 0.1
补充:
PPO 1,4PKW 2PZD :PKW是读写参数,PZD是数据读写,如你程序所写,通常都是数据读写,所以同如上PPO3通讯程序即可。
提问者对于答案的评价:
XIEXIE
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc188589.html