通讯问题

请问各位大狭,我的一个通讯程序与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

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

相关推荐