Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Mit TURCV UDP Nachrichten empfangen die länger sind als 2048 Byte?

  1. #1
    Registriert seit
    09.07.2018
    Beiträge
    26
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich bekomme UDP-Nachrichten zugesendet die aus mehreren Fragmenten bestehen (In meinem Fall 2). Zusammen bilden diese Fragmente eine Datenlänge von 2085 Byte's (1472 + 613).
    Wenn ich im Baustein LEN auf 0 lasse (So ist es empfohlen) dann bekomme ich den Error 8085 -> [Parameter LEN ist größer als der größte zulässige Wert, oder Sie haben einen der Parameter LEN oder DATA gegenüber dem Erstaufruf geändert] <- Es wird also scheinbar die Gesamtlänge betrachtet.
    Wenn ich LEN auf zB 2048 stelle bekomme ich den Error 80C9 -> [Bei RFC1006 / UDP: Die empfangenen Daten sind länger als erwartet (Größe des Empfangspuffers überschritten).] <-
    Kann ich die Fragmente ggf auch Einzeln empfangen, oder den Empfangspuffer vergrößern?
    Die Daten die gesendet werden kann ich leider nicht beeinflussen.

    MfG Ben
    Zitieren Zitieren Mit TURCV UDP Nachrichten empfangen die länger sind als 2048 Byte?  

  2. #2
    Registriert seit
    17.12.2012
    Beiträge
    10
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Du kannst z.B. LEN = 100 machen und mit dem DONE den Index eines Arrays weiterschalten.

  3. #3
    BenWolf ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.07.2018
    Beiträge
    26
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Reallife Beitrag anzeigen
    Du kannst z.B. LEN = 100 machen und mit dem DONE den Index eines Arrays weiterschalten.

    Ich bekomme ja gar kein DONE.

  4. #4
    Registriert seit
    17.12.2012
    Beiträge
    10
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    DONE ist nur einen Zyklus lang TRUE. Häng mal ein CTU dran.

  5. #5
    BenWolf ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.07.2018
    Beiträge
    26
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Reallife Beitrag anzeigen
    DONE ist nur einen Zyklus lang TRUE. Häng mal ein CTU dran.
    DONE wird wirklich nicht TRUE^^
    Ich bekomme nur eine Fehlermeldung 80C9 (Die kommt ja auch nur zyklisch)

    Das Problem scheint: Die UDP-Nachricht ist länger als 2048 Byte. Sie besteht allerdings aus 2 Fragmenten, die beide kleiner sind. Ich dachte es gibt vllt eine Möglichkeit die Fragmente einzeln auszulesen, oder ggf eine ganz andere Möglichkeit.

    Hast du dir denn schon mal Nachrichten gesendet die länger waren als die 2048 Byte? Wenn das grundsätzlich gehen würde (egal wie) dann mache ich ja vllt woanders einen Fehler

  6. #6
    Registriert seit
    06.08.2010
    Ort
    Köln
    Beiträge
    280
    Danke
    16
    Erhielt 50 Danke für 35 Beiträge

    Standard

    Aus der Hilfe:
    Empfang von mehr als 1472 Bytes
    Ab Firmware-Stand V2.5 der S7-1500-CPUs können Sie bei Datenübertragung über UDP nicht mehr bis zu 1472 Bytes, sondern bis zu 2048 Bytes empfangen.
    Falls Ihre empfangende Baugruppe allerdings max. 1472 Bytes unterstützt und Ihre sendende Baugruppe mehr als 1472 Bytes überträgt, liefert TURCV im Parameter STATUS den Wert W#16#8085 oder W#16#80C9.
    Vielleicht hilft hier ein FW-Update...

  7. #7
    BenWolf ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.07.2018
    Beiträge
    26
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von NBerger Beitrag anzeigen
    Aus der Hilfe:


    Vielleicht hilft hier ein FW-Update...
    Ich habe ja die FW 2.5
    Es geht ja um über 2048 Byte

  8. #8
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    13.133
    Danke
    1.072
    Erhielt 3.884 Danke für 3.134 Beiträge

    Standard

    Zitat Zitat von BenWolf Beitrag anzeigen
    Zitat Zitat von Reallife Beitrag anzeigen
    Du kannst z.B. LEN = 100 machen und mit dem DONE den Index eines Arrays weiterschalten.
    Ich bekomme ja gar kein DONE.
    Hast Du das denn mal ausprobiert?

    Dem TURCV sagt man nicht wie lang die Nachricht ist, sondern wieviele Bytes man aus dem Empfangspuffer abholen will (was im Idealfall die Länge der Nachricht ist, aber nicht so sein muß). Und immer wenn mindestens so viele Bytes empfangen wurden liefert TURCV diese Anzahl Bytes. Die weiteren Bytes der Nachricht (und ggf. der nächsten Nachricht) holt man mit weiteren Aufrufen von TURCV ab. Um alle 2085 Bytes der Nachricht aus dem Empfangspuffer abzuholen, könntest Du 3 * je 695 Bytes abholen und in einem Byte-Array wieder zu 2085 Bytes zusammensetzen. PS: wenn Deine Schnittstelle generell fähig ist, Nachrichten mit 2085 Bytes Länge zu empfangen.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. #9
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.866
    Danke
    209
    Erhielt 437 Danke für 349 Beiträge

    Standard

    wenn ich

    Empfang von mehr als 1472 Bytes
    Ab Firmware-Stand V2.5 der S7-1500-CPUs können Sie bei Datenübertragung über UDP nicht mehr bis zu 1472 Bytes, sondern bis zu 2048 Bytes empfangen.
    Falls Ihre empfangende Baugruppe allerdings max. 1472 Bytes unterstützt und Ihre sendende Baugruppe mehr als 1472 Bytes überträgt, liefert TURCV im Parameter STATUS den Wert W#16#8085 oder W#16#80C9.

    richtig verstehe, gehen doch nur 2048 bytes
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  10. #10
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    13.133
    Danke
    1.072
    Erhielt 3.884 Danke für 3.134 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Was meinst Du eigentlich mit "Fragmente"? Sind es in Wahrheit 2 Nachrichten (Pakete)? Dann muß Deine PN-Schnittstelle auch keine UDP-Nachrichten > 2048 Byte können. Welche CPU hast Du eigentlich?

    Warum wird bei Deiner Anwendung UDP verwendet? Bei UDP gibt es keine Garantie, daß ein einmal gesendetes Paket auch ankommt, daß Pakete in der gleichen Reihenfolge ankommen, in der sie gesendet wurden, oder daß ein Paket nur einmal beim Empfänger ankommt. Deine Anwendung muß mit allen Problem-Fällen klarkommen. Deine Anwendung muß erkennen können, zu welchem "Fragment" die abgeholte Bytefolge gehört. Sind in den Nachrichten Header- und Steuerbytes und evtl. Nachrichtennummern enthalten, anhand denen Dein Programm die korrekte Position der abgeholten Bytefolgen in den ursprünglichen Fragmenten und ggf. die Zugehörigkeit zum selben Nachrichtenpaar erkennen kann?

    Ich schätze, Du müßtest zunächst 613 Byte mit TURCV aus dem Empfangspuffer abholen, dann anhand des Inhalts der 613 Bytes feststellen, ob die von dem 613-Byte-Fragment oder von dem 1472-Byte-Fragment stammen, und bei letzterem noch die restlichen 859 Bytes des 1472-Byte-Fragments abholen. Danach wieder 613 Bytes abholen usw. usf. ...

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 19.05.2016, 17:19
  2. Antworten: 1
    Letzter Beitrag: 02.09.2015, 00:59
  3. Can Nachrichten senden / empfangen
    Von fdisk im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 10.08.2011, 12:14
  4. Can Nachrichten senden / empfangen
    Von fdisk im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 09.08.2011, 16:30
  5. Antworten: 0
    Letzter Beitrag: 17.08.2010, 10:46

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •