Step 7 Put Get Verbindung

MW22

Level-1
Beiträge
40
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin zusammen,

ich versuche soeben eine PUT GET verbindung zwischen einer 315-2PN/DP (Master - TIA Projektiert) und einer 1515F2-PN/DP (slave) zu projektieren.
In der Verbindungsdiagnose steht, dass eine Verbindung aufgebaut wurde.
So sieht meine Verbindung aus.
1701338144063.png

Auf der 1515 Seite habe Vollzugriff eingestellt sowie die PUT GET Verbindung freigegeben.

Die Bausteine wurden folgendermaßen anparametriert. Die DBS sind Identisch da ich diese einfach kopiert habe und
nur die Nummer geändert. Diese sind auch nicht optimiert.

1701338301260.png


Als Fehler bekomme ich bei

GET: Zugriffsfehler bei der Partner CPU
PUT: Fehler in den Sendebereichszeigern SD_i bezüglich der Datenlänge oder des Datentyps

Hat jemand noch eine Idee warum diese Verbindung nicht funktioniert?

MfG MW22
 
Kannst du den genauen Fehlercode mal posten?

Der Put und der Get Aufruf ist auf der gleichen SPS? Müssten dann die Verbindungs-IDs nicht eindeutig sein? Sonst sind diese IDs aber nicht weiter in Verwendung bei dir oder?

/edit: Möglicherweise ist es auch ein Problem, dass du den gleichen Bereich lesen und schreiben willst. Da kommen sich Put/Get vermutlich auch gegenseitig in die Quere.
 
Kannst du den genauen Fehlercode mal posten?
GetError : 16#0008
PutError : 16#0004
Der Put und der Get Aufruf ist auf der gleichen SPS? Müssten dann die Verbindungs-IDs nicht eindeutig sein? Sonst sind diese IDs aber nicht weiter in Verwendung bei dir oder?
Ja genau der Aufruf von Put / Get ist in der selben SPS (315) und im gleichen Baustein untereinander.
Die ID's sind auf "W#16#10" und in die Verbindung habe ich auf Hex 10 eingestellt.
 
"PUT_S" und "GET_S"
Mit Hilfe der Anweisung "PUT_S" können Sie bei S7-300 Daten in eine remote CPU schreiben. Mit Hilfe der Anweisung "GET_S" können Sie bei S7-300 Daten aus einer remoten CPU auslesen. Dabei kann die S7-Verbindung sowohl über die integrierte Schnittstelle als auch über einen CP erfolgen.

"PUT_E" und "GET_E"
Die Anweisungen "PUT_E" und "GET_E" unterstützen nur S7-Verbindungen über die integrierte PROFINET-Schnittstelle. An diesen Anweisungen können bis zu 4 Quell- und Zielbereiche angegeben werden. Diese 4 Bereiche dürfen zusammen die Anzahl von 160 Byte Daten nicht überschreiten.

Welche Unterschiede gibt es zwischen den verschiedenen Anweisungen "PUT" und "GET" für S7-Kommunikation und S7-Basiskommunikation?​


Wie projektieren und programmieren Sie für den Datenaustausch zwischen S7-CPUs eine S7-Verbindung und die Anweisungen "PUT" und "GET"?​

 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke!!!!! Ja 400 war zu lange. Habe 128 Byte eingestellt und nun wuppt es :)
Du könntest auch anstatt PUT/GET mit offener Kommunikation mit TSEND/TRCV und z.B. ISO-on-TCP-Protokoll arbeiten, da kannst du problemlos einige KB versenden und brauchst in der S7-1500 das PUT/GET nicht freigeben und kannst mit "optimierten" DB arbeiten.
 
Zuletzt bearbeitet:
Hallo zusammen,

ich möchte mich hier ebenfalls mit einklinken, da ich aktuell bei meinem Projekt nicht weiterkomme. Die Verbindung zwischen den beiden CPUs scheint grundsätzlich zu bestehen, sowohl auf meiner Seite als auch auf der Partner-CPU ist die Verbindung sichtbar und als aufgebaut markiert.

Allerdings gelingt es mir nicht, den entsprechenden Datenbaustein auszulesen.

Die Implementierung wurde in SCL vorgenommen. Eventuell liegt hier bereits der Fehler, den ich bislang nicht erkennen konnte. Es handelt sich um zwei CPU 1510SP F-1 PN.

Hier der relevante Auszug aus meinem SCL-Code (FB):

"DB_GET_TEST"(
REQ := TRUE,
ID := #VerbindungID,
NDR => #NDR_GET,
ERROR => #Error_GET,
STATUS => #Status_GET,
ADDR_1 := P#DB410.DBX0.0 BYTE 1000,
RD_1 := P#DB500.DBX0.0 BYTE 1000
);

Meine Frage:
Könnten die 1000 Byte möglicherweise zu groß für den Lesevorgang sein? Gibt es hier eine bekannte Begrenzung oder einen empfohlenen Maximalwert, den ich beachten sollte?

Für jeden Hinweis oder Lösungsansatz bin ich sehr dankbar!
 
Zuletzt bearbeitet:
Könnten die 1900 Byte möglicherweise zu groß für den Lesevorgang sein? Gibt es hier eine bekannte Begrenzung oder einen empfohlenen Maximalwert, den ich beachten sollte?
Probiere das einfach aus, z.B. mit 128 Byte (taste dich ggf. an die max Größe heran). Das geht schneller als hier einen Beitrag zu posten ;). Oder frage eine Suchmaschine (oder notfalls KI) deiner Wahl "put get S7-1500 maximale länge" oder benutze hier die Forumsuche.
Die max Länge dürfte bei ca. 380 .. 512 Byte liegen. Steht eventuell auch in den technischen Daten deiner CPU oder generell im "Kompendium CPU-CPU Kommunikation" PS: Kapitel 32.2

Und schmiere den Fehlerstatus deines GET-Aufrufs nicht einfach weg, sondern werte ihn aus. Da wirst du Hinweise zum Problem erhalten.

PS: zwischen zwei S7-1500 würde ich nicht PUT/GET benutzen, sondern offene Kommunikation (TSEND, TRCV) oder Profinet IO.
 
Dazu kommt noch: wenn man die selbe Instanz von GET mit verschiedenen Aufträgen verwendet, dann entscheidet bei der S7-400 der erste Aufruf über die max Größe. Ich weiß nicht, ob das bei S7-1500 auch so ist - da ist PUT/GET aber sowieso eine maximal ungeeignete Kommunikation (und muss deshalb auch extra freigeschaltet/erlaubt werden).
 
Zurück
Oben