Step 7 PUT funkntioniert, GET nicht

Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
PUT funktioniert, GET nicht

Hallo,

ich habe die Aufgabe bekommen, bei einem bestehenden Projekt, neben einer bereits funktionierenden PUT Verbindung auch noch eine GET Verbindung einzubauen. Ich habe das versucht, so wie ich mir vorgestellt habe, dass es funktinieren sollte, aber der GET Baustein gibt immer Fehler #1 aus. Es handelt sich dabei um zwei S7400 CPUs, die im selben Netzwerk sind. Ich habe schon gegoogelt bzw. mehrfach dieses und das Siemens Support Forum durchforstet, habe aber nichts gefunden oder war zu blöd etwas zu finden das mir hilft.

Ich habe noch nie vorher mit diesen Bausteinen gearbeitet, daher bin ich mir nicht zu 100% sicher ob ich den GET Baustein richtig parametriert habe.

Ich möchte von der CPU2 8 Bytes ab DB2.DBX218.0 auf DB58 ab Byte 70 lesen. Wie oben bereits geschrieben, das Senden der 20 Bytes von CPU1 an CPU2 funktioniert bereits.

Bitte macht mich nicht fertig wegen der Bezeichnungen und Merker. Das werde ich alles nachziehn und ordentlich benennen, wenn das GET funktioniert.

Code:
//Set datatransfer

      UN    "RTO_COM_Speicher".res_1_1
      UN    "RTO_COM_Speicher".res_1_2
      L     S5T#250MS
      SE    T     44
      U     T     44
      =     "RTO_COM_Speicher".res_1_0

//SFB          
      CALL  "PUT" , "DB_PUT_CTP"
       REQ   :="RTO_COM_Speicher".res_1_0
       ID    :=W#16#10
       DONE  :="RTO_COM_Speicher".res_1_1
       ERROR :="RTO_COM_Speicher".res_1_2
       STATUS:=#Status_send
       ADDR_1:=P#DB58.DBX20.0 BYTE 20   //schreibe Datenbereich Partner SPS
       ADDR_2:=
       ADDR_3:=
       ADDR_4:=
       SD_1  :=P#DB58.DBX20.0 BYTE 20   //lese Datenbereich auf eigener SPS
       SD_2  :=
       SD_3  :=
       SD_4  :=

//MHO 20200427 / Get signals from RTO 2
      UN    M    400.1                  // "DB_PUT_GET_Komm".RTO2_FA2.GET.OUT_NDR
      UN    M    400.2                  // "DB_PUT_GET_Komm".RTO2_FA2.GET.OUT_ERROR
      L     S5T#250MS
      SE    T     50

      U     T     50
      =     M    400.0                  // "DB_PUT_GET_Komm".RTO2_FA2.GET.IN_REQ

      CALL  "GET" , "DI_GET_RTO2"
       REQ   :=M400.0
       ID    :=W#16#10
       NDR   :=M400.1
       ERROR :=M400.2
       STATUS:=#RTO2_GET_STATUS
       ADDR_1:=P#DB2.DBX218.0 BYTE 8    //Partner schreibt
       ADDR_2:=
       ADDR_3:=
       ADDR_4:=
       RD_1  :=P#DB58.DBX70.0 BYTE 8    //CPU liest
       RD_2  :=
       RD_3  :=
       RD_4  :=

Sieht jemand von euch einen Fehler?

LG
 
Zuletzt bearbeitet:
Kannst Du die CPU in STOP setzen und wieder RUN? Nachdem eine Instanz das erste mal verwendet wurde kann ID nicht mehr geändert werden und die Datengröße nicht mehr vergrößert werden.
Deine GET und PUT sind die SFB14/SFB15 (keine ladbaren FB!)?

Harald
 
Bitteschön.

Noch ein Tipp: falls Du mal mehr als einen Bereich (ADDR_2...) verwendest, und später dann doch nicht mehr, dann am besten den IDB neu generieren und initialisieren und in die CPU laden, weil der erste unbenutzte Sende/Empfangsparameter muß einen NIL-Pointer enthalten (16#10 00 00 00 00 00 00 00 00 00). Beim CALL einfach nicht mehr beschalten reicht nicht, weil da der zuletzt angeschaltete ANY im IDB erhalten bleibt.

Harald
 
Zurück
Oben