Step 7 SFB15/14 Put/Get mit mehreren Datenbausteinen?

JFKjo

Level-2
Beiträge
90
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich habe eine Frage zur Beschaltung von Put/Get.
Ausgangslage:

Die Partner SPS stellt mit in DB1, DB2, DB3 und DB4 Daten zum Empfangen zur Verfügung.
Diese Daten möchte ich nun per GET Lesen und auf der SPS in ebenfalls 4 eigenen Datenbausteinen Ablegen.
Code:
      CALL  SFB   14 , DB10
       REQ   :=M1.0
       ID    :=W#16#1
       NDR   :=#HM_NDR_Rec1
       ERROR :=#HM_ERROR_Rec1
       STATUS:=#HM_STATUS_Rec1
       ADDR_1:=P#DB1.DBX0.0 BYTE 100  //Partner CPU: 
       ADDR_2:=P#DB2.DBX0.0 BYTE 20   //Partner CPU: 
       ADDR_3:=P#DB3.DBX0.0 BYTE 50   //Partner CPU: 
       ADDR_4:=P#DB4.DBX0.0 BYTE 20   //Partner CPU: 
       RD_1  :=P#DB1.DBX0.0 BYTE 100  // Empfangsbereich: 
       RD_2  :=P#DB2.DBX0.0 BYTE 20   // Empfangsbereich: 
       RD_3  :=P#DB3.DBX0.0 BYTE 50   // Empfangsbereich: 
       RD_4  :=P#DB4.DBX0.0 BYTE 20   // Empfangsbereich:

Wäre das so möglich oder muss ich für jeden Datenbaustein einen eigenen GET-Aufruf anlegen?

Danke und Grüße
 
Wenn Du eine S7-400 hast dann sollte das so funktionieren.
Ich meine (nicht sicher), man musste noch beachten, daß der erste Bereich der Längste sein muß. (bzw. der erste GET-Auftrag nach CPU-Start muß der Längste des ganzen Programms sein)

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn Du eine S7-300 hast dann musst du für jeden Datenbaustein einen eigenen GET-Aufruf anlegen. Die Kommunikation über PUT/GET kann man übrigens auch mittels PLCSIM ganz gut testen.

Onkel
 
Erst einmal danke für die Antworten.
Die Master SPS ist eine S7-400 und die Partner SPS eine S7-300.

@Dagobert: Danke für den Tip
 
Aufpassen! Pro Get Aufruf können nur maximal ca. 150 Bytes Daten gelesen werden. Braucht man mehr, müssen mehrere Aufrufe gemacht werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aufpassen! Pro Get Aufruf können nur maximal ca. 150 Bytes Daten gelesen werden. Braucht man mehr, müssen mehrere Aufrufe gemacht werden.
Sicher dass das für die 400er stimmt? Soweit ich weiß treffen die "160 Bytes" nur zu, wenn die 300er der aktive Partner ist.


Unbenannt.jpg

Unbenannt_.jpg
 
Also ich hatte schon ein paar mal den Fall, dass das nicht funktioniert hat. Sowohl zwischen zwei s7 300 als auch mit einer s7 400, die der aktive Part war.
 
Code:
      CALL  SFB   14 , DB10
       REQ   :=M1.0
       ID    :=W#16#1
       NDR   :=#HM_NDR_Rec1
       ERROR :=#HM_ERROR_Rec1
       STATUS:=#HM_STATUS_Rec1
       ADDR_1:=P#DB1.DBX0.0 BYTE 100  //Partner CPU: 
       ADDR_2:=P#DB2.DBX0.0 BYTE 20   //Partner CPU: 
       ADDR_3:=P#DB3.DBX0.0 BYTE 50   //Partner CPU: 
       ADDR_4:=P#DB4.DBX0.0 BYTE 20   //Partner CPU: 
       RD_1  :=P#DB1.DBX0.0 BYTE 100  // Empfangsbereich: 
       RD_2  :=P#DB2.DBX0.0 BYTE 20   // Empfangsbereich: 
       RD_3  :=P#DB3.DBX0.0 BYTE 50   // Empfangsbereich: 
       RD_4  :=P#DB4.DBX0.0 BYTE 20   // Empfangsbereich:
Ich hab des grad mal schnell ausprobiert (CPU 414-2DP + CP443-1 liest per Ethernet aus CPU 315-2PN/DP) - es funktioniert problemlos. :D

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab des grad mal schnell ausprobiert (CPU 414-2DP + CP443-1 liest per Ethernet aus CPU 315-2PN/DP) - es funktioniert problemlos. :D
Erstaunt, dass etwas das Siemens im Handbuch beschreibt auch so funktioniert? ;-)
Eigentlich sollte es nicht notwendig sein, da etwas zu "probieren".
 
Erstaunt, dass etwas das Siemens im Handbuch beschreibt auch so funktioniert? ;-)
Eigentlich sollte es nicht notwendig sein, da etwas zu "probieren".

mein Grundsatz aus 30 Jahren Automatisierungserfahrung:
"traue nur dem was du auch selbst ausprobiert hast" ;)

aber mal im Ernst, warum Siemens ne simple AS-AS Kommunikation so kompliziert macht, ist mir auch ein Rätsel...

ein par Kommunikationsbausteine geliefert, die ohne komplizierte äußere Beschaltung funktionieren und schon wäre die Welt auch ohne I4.0 viel einfacher...

Gruss.
 
Zurück
Oben