Datenbaustein(342BYTE) per TCP Verbindung übertragen

cboerm

Level-1
Beiträge
58
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe eine TCP-Verbindung und möchte einen kompletten Datenbaustein mit 342 Bytes von einer Steuerung zur einer anderen Steuerung übertragen.

Ich habe es mit AG SEND und AGRCEV probiert. Es werden auch Daten übertragen, aber irgendwie nicht richtig.


Ich habe eine CP 343-1 Lean als Aktiver Partner und eine CP 3431-Advanced als Passiver Partner.

Hoffendlich kann mir jemand helfen;-)

Gruß
cboerm
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo cboerm,

Ich hatte mal das selbe Problem glaube ich.
Siemens hat mir dann gesagt, man soll bei solchen Mengen
Iso on TCP Verbindungen nehmen.
Bei mir gings dann.

MfG
Nospsguru
 
Hallo cboerm,

Ich hatte mal das selbe Problem glaube ich.
Siemens hat mir dann gesagt, man soll bei solchen Mengen
Iso on TCP Verbindungen nehmen.
Bei mir gings dann.

MfG
Nospsguru

Ich glaub, die Begrenzung auf 240Byte war früher mal.
Auszug aus Beitrag 26708188:
Konfigurationshinweis:

Für die Kommunikation über die SEND/RECEIVE-Schnittstelle der S7-300 bzw. S7-400 Industrial Ethernet CPs werden die folgenden Kommunikationsbausteine im STEP 7-Anwenderprogramm der CPU aufgerufen.
  • FC5/6 "AG_SEND / AG_RECV" in der S7-300 CPU zur Datenübertragung von bis zu 8192 Byte bzw. in der S7-400 CPU zur Datenübertragung von max. bis zu 240 Byte.
  • FC50/60 "AG_LSEND / AG_LRECV" in der S7-400 CPU zur Datenübertragung von bis zu 8192 Byte. Diese Kommunikationsbausteine gibt es nicht für die S7-300 CPU.
Ein Beispiel zur Beschaltung der Bausteine findet man HIER.

Approx
 
@Approx

Ja der DONE und der NDR Ausgang geht auf TRUE.


Geht das eigendlich nur mit AG SEND/AGRECV oder kann man auch PUT Bausteine verwenden?
 

Anhänge

  • AG RECV.JPG
    AG RECV.JPG
    15,8 KB · Aufrufe: 29
  • AG SEND.JPG
    AG SEND.JPG
    18 KB · Aufrufe: 27
Zuviel Werbung?
-> Hier kostenlos registrieren
Beginne doch mal damit, uns deine genauen Probleme zu schildern. Dann braucht keiner die Glaskugel zu polieren... :confused:

Sind das die Send/Receive einer CPU? Du hast beim Send und beim Receive zwei unterschiedliche CP-Adressen (LADDR) angegeben. Des Weiteren ist der Empfangs-, und der Sende-DB ein und derselbe. In der Praxis nimmt man entweder zwei unterschiedliche DB's für die jeweilige Datenrichtung, oder man teilt einen DB in eine "Empfangs-Struct" und eine "Sende-Struct".

Gruß Approx
 
Zuletzt bearbeitet:
Sind das die Send/Receive einer CPU? Du hast beim Send und beim Receive zwei unterschiedliche CP-Adressen (LADDR) angegeben. Des Weiteren ist der Empfangs-, und der Sende-DB ein und derselbe. In der Praxis nimmt man entweder zwei unterschiedliche DB's für die jeweilige Datenrichtung, oder man teilt einen DB in eine "Empfangs-Struct" und eine "Sende-Struct".
Ich denke auch das dass der Fehler ist.

Ferner hast Du am Send Baustein als Status Wort das MW 92 angegeben und am Recv ist das Error-Bit M92.0
Solche Doppelbelegungen sind nicht gut.
 
Das mit MW92 und M92.0 macht nichts, da sich der SEND Baustein in einer anderen S7 Steuerung sowie extra Projekt befindet. Der RECV Baustein hat ebenfalls eine extra Steuerung und Projekt.
Die Datenbausteine sind in beiden Projekten gleich, das soll so wegen der Übersichtlichkeit. Wenn man das eine Projekt kennt, kennt man auch das andere, weil beide Projekte in etwa die selben Bausteine und Funktionen erfüllen.


Die LADDR Adresse bekomme ich doch von NETPRO so vorgegeben oder ? Ich habe diese Adressen einfach genommen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, wenn sich Send und Recv in unterschiedlichen Projekten befinden passt das natürlich.
Die LADDR Adresse bekomme ich doch von NETPRO so vorgegeben oder ? Ich habe diese Adressen einfach genommen.
Warum die Verbindungsnummer 5?
Gibt es vier andere Verbindungen die funktionieren?

Ich habe es mit AG SEND und AGRCEV probiert. Es werden auch Daten übertragen, aber irgendwie nicht richtig.
Was meinst Du mit "irgendwie nicht richtig"?

Beachten musst Du das die 342 Byte nicht Konsistent übertragen werden.
 
Paule das hast du richtig verstanden.

Es gibt noch 4 andere Verbindungen.
Eine ISO-ON-TCP
3 TCP Verbinungen(alle passiv)


Beachten musst Du das die 342 Byte nicht Konsistent übertragen werden.

Was meinst du mit Konsistent? Wird der DB nicht vollständig übertragen?

Wenn ich den sendeten und gesendeten DB beobachte, dann unterscheiden die sich Inhaltlich. In dem einem Element stehen z.B gant andere Werte als im Originalen.


Muss das so? Oder hat jemand eine bessere Lösung wie man den DB übertragen kann?

Gruß
 
Wenn ich den sendeten und gesendeten DB beobachte, dann unterscheiden die sich Inhaltlich. In dem einem Element stehen z.B gant andere Werte als im Originalen.
Ja, das könnte ein Konsistenz Problem sein.
Abhilfe:
Du legst Dir einen zweiten DB an mit der Größe Deines Empfangs-DB's.
Wenn nun das NDR-Bit kommt kopierst Du mit einer Positiven Flanke den Empfangs-DB per SFC20 (Blockmove) auf den zweiten DB, aber nur dann.
Und mit dem zweiten DB kannst Du dann arbeiten.

Code:
     U #NDR
     FP #M x.y
     SPBN END
     CALL SFC20
     SRCBLK : Empfangs-DB
     RET_VAL: #Status
     DSTBLK : Arbeits-DB
END:NOP 0
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Bereichslänge...

Wenn du die Kopplung eingerichtet hast, und zwischenzeitlich die Länge des zu empfangenden Daten geändert hast, kann es sein das du beide CPs auf Stop machen und dann wieder starten musst. Da bei der normalen TCP/IP Verbindung es sonst zu einem Versatz kommen kann!
 
@Paule:

Ich werde das gleich morgen früh ausprobieren. Dankeschön. Ich melde mich ob es geklappt hat und nun funktioniert.

@Jochen Kühner:

Ich habe zwischenzeilich mal die Länge geändert, um die Funktion zu testen. Habe aber die CPU's nicht neugestartet.
 
Danke an alle die zur Lösung beigetragen haben.

Vielleicht lässt Du auch andere User partizipieren, indem Du die Lösung des Problemes nicht für Dich behälst. Denn da ganz oben auf dieser Page steht geschrieben: Wissen ist das einzige Gut das sich vermehrt wenn man es teilt!

Du hast schließlich aus der Problembeschreibung schon ein Geheimnis gemacht...:p
Gruß Approx
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe die Lösung von Paule genommen.

Der gesendete Datenbaustein wird erst nach dem Ende der Übertragung, signalisiert durch NDR, mit dem SFC20 in einem anderen (Arbeitsdatenbaustein) kopiert.

Danach lief es ohne Probleme bis jetzt.

Die TCP-Verbindung habe ich beibehalten.

Mein Fehler war nur, das ich während der Übertragung des DB's schon auf diesen Zugreifen und weiterverarbeiten wollte.

Gruß
cboerm
 
Zurück
Oben