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

Seite 3 von 6 ErsteErste 12345 ... LetzteLetzte
Ergebnis 21 bis 30 von 56

Thema: TCP/IP Telegrammaustausch mit PC variable Telegrammlänge

  1. #21
    Registriert seit
    22.05.2005
    Ort
    sonniges Maifeld
    Beiträge
    1.067
    Danke
    77
    Erhielt 205 Danke für 159 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Eine Idee hätte ich noch:

    Empfange das Telegramm in deine 40Byte. Dann suchst du in den 40Byte nach dem Startzeichen von dem Telegramm und schaufelst es Byte für Byte dahin wo du es brauchst bzw. weiter auswerten willst. Dann bügelst du die 40 Byte mit Nullen und kannst ein neues Telegramm empfangen und auswerten ...
    "Man kann auf seinem Standpunkt stehen, aber man sollte nicht darauf sitzen" - Erich Kästner

  2. #22
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Nur eine Frage am Rande: Die Siemens füllt den Puffer nicht von vorne, wenn ich sage ich möchte 100 Zeichen empfangen und bekommen nur 50? Stehen die dann wirklich irgendwo in diesem Puffer?
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  3. #23
    3DA ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.07.2008
    Beiträge
    20
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Grubba,


    wieso nicht funktioniert hätte?

    Das könnte doch funktionieren, nur 1 Byte als Speicher anzugeben und dann Byteweise das Telegramm zu empfangen bis ich den Telegrammabschluss erhalten habe oder?!

  4. #24
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Zitat Zitat von 3DA Beitrag anzeigen
    Hallo Grubba,


    wieso nicht funktioniert hätte?

    Das könnte doch funktionieren, nur 1 Byte als Speicher anzugeben und dann Byteweise das Telegramm zu empfangen bis ich den Telegrammabschluss erhalten habe oder?!
    Das geht minimal auf den Datendurchsatz. Bei einer Zykluszeit von 10 ms und imer entsprechendem Flankenwechsel kommt man so doch schon auf berauschende 50 Bytes/s.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  5. #25
    Registriert seit
    12.02.2008
    Ort
    Westfalen (Dort wo's Schwarzbrot gibt)
    Beiträge
    417
    Danke
    8
    Erhielt 87 Danke für 72 Beiträge

    Standard

    Hatte noch im Hinterkopf, dass man die Empfangsdatenlänge und die Länge des Empfangsdatenfach getrennt vorgeben kann, aber dem ist ja nicht so.

    Trägst Du nun 1 Byte als Empfangspuffer ein und der Partner sendet z.B. 10 Bytes, wird der FB 10 Zyklen lang NDR True liefern, und bei jedem Aufruf 1 Byte abholen. Dabei bügelt er aber jedesmal das erste Byte im Empfangs-DB mit dem aktuellen Empfangsbyte über.

    Deshalb wirds so wohl nicht gehen...

  6. #26
    Registriert seit
    12.02.2008
    Ort
    Westfalen (Dort wo's Schwarzbrot gibt)
    Beiträge
    417
    Danke
    8
    Erhielt 87 Danke für 72 Beiträge

    Standard

    So, auf ein letztes...

    Habe überlesen, das Du ja eine Endekennung des Telegramms bekommst. Wenn Du jetzt wirklich immer nur 1 Byte ausliest, könnte es so evtl. doch so gehen:

    - Ziel DB anlegen, mit genug Bytes für maximales Telegramm
    - AnyPointer basteln, der nach jedem NDR die Zieladresse in Deinem Ziel-DB um 1 erhöht, (aber immer noch 1 Byte gross)
    - Nach Empfang der Endekennung Pointer wieder auf 1. Byte im Ziel-DB zurücksetzen.

    Ist ähnlich wie der letzte Vorschlag von Lars, dass Problem sehe ich darin, das der Siemens FB die aktuellen Empfangsdaten da ablegt, wo die alten Empfangsdaten aufhören. Wenn die Sende und Empfangslänge übereinstimmen - wunderbar. Ansonsten gibts immer einen Versatz von Empfang zu Empfang. Bei Empfangslänge von 1 hast Du dieses Problem halt nicht.

  7. #27
    Registriert seit
    06.01.2005
    Ort
    im schönen Lipperland
    Beiträge
    4.472
    Danke
    498
    Erhielt 1.143 Danke für 736 Beiträge

    Standard

    Irgendwo in den tiefen des Siemens-Supportes habe ich mal was über genau dieses Problem gelesen. Dort wurde auch ein Lösungsansatz incl. Programmbaustein vorgestellt.

    Hast du da schon mal gesucht ?
    Früher gab es Peitschen .... heute Terminkalender

  8. #28
    3DA ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.07.2008
    Beiträge
    20
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Nein noch nicht... hast du zufällig noch die Beitrags-ID?

    Wenn's da wirklich was von Siemens gäbe, würde ich ja direkt von

    meinem Glauben abfallen

  9. #29
    Registriert seit
    06.01.2005
    Ort
    im schönen Lipperland
    Beiträge
    4.472
    Danke
    498
    Erhielt 1.143 Danke für 736 Beiträge

    Standard

    ID: 19033929

    ID: 8707570

    ID: 16825843


    Vielleicht hilft es ja weiter.........
    Früher gab es Peitschen .... heute Terminkalender

  10. #30
    Registriert seit
    25.08.2003
    Beiträge
    332
    Danke
    46
    Erhielt 54 Danke für 46 Beiträge

    Lächeln


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Grubba Beitrag anzeigen
    Weiß es jetzt zwar nicht genau (und kanns jetzt auch gerade nicht testen), aber ich denke das NDR erst dann kommt, wenn der Empfangspuffer komplett gefüllt ist. Lege ich also einen Puffer von 100 Byte an, würde NDR erst dann True werden, wenn mind. 100 Byte empfangen worden sind.
    Hallo Grubba,
    ganz genauso ist es. Der CP sammelt erst, nach Erreichen der 100 Byte (obiges Beispiel) kommt das NDR.

    Achtung! Jetzt kommt ein neuer Aspekt:
    Der CP empfängt auch noch Daten und puffert diese zwischen, wenn die CPU in Stop ist! Nach CPU Anlauf können also unschöne Effekte passieren! Dieses ist mir zumindest bei einer S7-400 schon einmal passiert.

    Zur Problemlösung:
    Ich würde auch ein AG_Receive mit LEN = 1 Byte machen und einen eigenen Puffer im DB füllen. Ist zwar der Nutzdatenanteil kleiner, aber was soll's.

    Gruß
    Flinn

Ähnliche Themen

  1. S7 Variable in Java Variable umwandeln
    Von maxi81 im Forum HMI
    Antworten: 0
    Letzter Beitrag: 26.11.2010, 17:55
  2. Telegrammlänge Ethernet/IP
    Von Michitronik im Forum Feldbusse
    Antworten: 2
    Letzter Beitrag: 16.04.2010, 20:12
  3. INT Variable
    Von snowkopp im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 21.09.2009, 22:59
  4. Antworten: 7
    Letzter Beitrag: 05.03.2008, 07:38
  5. OP7 Variable
    Von godi im Forum HMI
    Antworten: 5
    Letzter Beitrag: 25.04.2006, 22:09

Stichworte

Lesezeichen

Berechtigungen

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