Step 7 Erwartetes Verhalten bei zu kleinem Zielspeicherbereich GET-Verbindung

Januar

Level-2
Beiträge
238
Reaktionspunkte
52
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Gemeinde,

ich habe eine Altanlage bekommen, die es zu erweitern gilt, allerdings herrscht aktuell Unklarheit, ob wir den korrekten Programmstand erhalten haben. Stutzig macht mich insbesondere folgendes:

Zwischen zwei S7-300-SPS gibt es mittels PUT/GET einen Datenaustausch. In beiden CPU sind die entsprechenden DBs angelegt, allerdings ist in der CPU mit der GET-Funktion der DB zu klein.
Der GET-Baustein soll 82 Byte aus der fremden Steuerung (DB241) in die eigene Steuerung (DB241) schreiben. In der fremden Steuerung ist der DB auch 82 Byte groß, in der eigenen Steuerung allerdings nur 54 Byte.

Ein Vergleich vor Ort ist aktuell nicht möglich und eine Simulation zu Hause warf mehr Fragen als Antworten auf. Im Internet habe ich leider auf Anhieb auch keine Aussage dazu gefunden, wie sich die Funktion verhält, wenn der Zielspeicherbereich zu klein für die Daten ist.

Was wäre hier das zu erwartende Verhalten, wenn dieser Code wie beschrieben in der CPU läuft? Werden die überschüssigen 28 Byte einfach ins Nirvana geschrieben und alles läuft weiter? Oder überprüft der GET-Baustein den Zielbereich und gibt einen Fehler aus? Geht evtl sogar die CPU in Stopp?

Gruß, Januar
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Werden die überschüssigen 28 Byte einfach ins Nirvana geschrieben und alles läuft weiter?
Da kommt eine Fehlermeldung ( Quell / Zielbereich ungleich o.ä. ).

Du müsstest ja nur auf beiden Seiten
Der GET-Baustein soll 82 Byte aus der fremden Steuerung (DB241) in die eigene Steuerung (DB241) schreiben. In der fremden Steuerung ist der DB auch 82 Byte groß, in der eigenen Steuerung allerdings nur 54 Byte.
Entweder den eigenen Bereich vergrößern oder auf der Partnerseite nur 54 Byte senden.
 
Ich vermute es kommt ERROR und STATUS = 4 "Errors in the receive area pointers RD_i involving the data length or the data type."
Nur wenn die Datenlängen übereinstimmen werden die Daten konsistent in den Empfangsdatenbereich übertragen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mir ist schon klar, wie ich den Fehler behebe, wenn er denn wirklich auftreten sollte.
Die Frage war ja bloß, ob es in der Form, wie es uns vorliegt, plausibel sein kann. Es ist nämlich der Programmstand des AGs, der mir gerade Kopfzerbrechen bereitet.

Was passiert mit den 54 Byte, für die ja dann Platz wären? Kommen die verlässlich an, oder funktioniert GET dann komplett nicht?
 
1701074557777.png
Dies ist ein Screenshot aus dem Programm. In der Partner-CPU ist DB241 auch 82 Byte groß. Nur in der CPU, die den Aufruf von FB4 "GET" tätigt, ist DB241 nur 54 Byte groß. Die Struktur der 54 Byte sind in beiden CPU identisch.
 
Ein Vergleich vor Ort ist aktuell nicht möglich
Ich vermute das Offline Projekt stimmt mit das Online Programm nicht überein.
Entweder ist die Bereichszeiger unterschiedlich, oder die Empfangs-DB ist unterschiedlich.

Es hört sich an als man hat bei den IBN als das allerletzte die Datenaustauch getestet, und einige Änderungen eigeführt weil die Datenbereieche in die beide Seiten unterschiedlich wäre.
Das hat dann funktioniert, aber man hat vergessen ein Backup zu machen.
 
Was für eine CPU genau ist da eingebaut? Steckt eine Speicherkarte drin? Falls ja, was für eine (nicht rausziehen!) ?
Falls das eine ältere CPU mit FLASH MC ist: da hat man vielleicht das RAM-nach-ROM-kopieren vergessen, und dann ist nach Urlöschen das alte Programm von der MC wieder da.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Laut HW-Konfig handelt es sich um eine CPU315-2 PN/DP (6ES7 315-2EH13-0AB0; V2.6). Die Partner-CPU, aus der die Daten stammen, ist eine CPU315-2 DP (6ES7 315-2AG10-0AB0; V2.0).
Die Kommunikation läuft über jeweils verbaute CP343-1.
 
Zurück
Oben