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

Ergebnis 1 bis 9 von 9

Thema: Daten empfangen über TCP/IP mit TwinCAT

  1. #1
    Registriert seit
    18.01.2010
    Beiträge
    7
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich bin Neu-Einsteiger in der SPS-Programmierung und bin gerade dabei eine Anbindung zu einer Auswerteeinheit zu programmieren. Dabei bin ich auf folgendes Problem gestoßen: Beim Empfangen der Daten werden diese alle in ein 1 Array hintereinander geschrieben, obwohl es sich bei den Daten um 3 einzelne Telegramme der Auswerteeinheit handelt. Ich möchte aber diese drei Telegramme irgendwie voneinander trennen. Ich weiß, dass es bei Siemens einen Modus (Adhoc-Modus) gibt bei dem direkt nach Empfang eines Telegrammes ein Flag gesetzt wird und nicht erst wenn das Array voll ist. Weiß jemand, ob es so etwas auch in der TwinCAT-Programmierung gibt oder wie man das Problem anderst lösen könnte?
    Ich hoffe, irgendjemand kann mir helfen. Freue mich über jede Hilfe.
    Zitieren Zitieren Daten empfangen über TCP/IP mit TwinCAT  

  2. #2
    Registriert seit
    09.01.2008
    Beiträge
    85
    Danke
    5
    Erhielt 13 Danke für 12 Beiträge

    Standard

    Hallo,

    ich denke mal du ließt die Daten als String in der SPS ein, oder? Wenn ja, hast Du am Ende eines jeden Strings eine Null-Terminierung. Auf diese Kannst Du dann reagieren, und den nächsten String einlesen. Dafür gibt es auch fertige Bausteine bei Beckhoff.

    Gruß Scrat

  3. #3
    blubb89 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.01.2010
    Beiträge
    7
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi,
    danke für deine Antwort Scrat. Das Beispiel, wie man das beim Einlesen eines Strings macht, hab ich auch schon gesehen. Allerdings lese ich die Daten in einem Array Of Byte ein. Und da kann ich nicht mehr nach der Null-Terminierung suchen. Gibt es hierfür eine andere Möglichkeit?

    Gruß blubb89

  4. #4
    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

    Allerdings lese ich die Daten in einem Array Of Byte ein. Und da kann ich nicht mehr nach der Null-Terminierung suchen. Gibt es hierfür eine andere Möglichkeit?
    Na, daran solls nicht scheitern....
    Wenn das Byte den Wert 0 hat, hast Du die Nullterminierung doch schon gefunden.

  5. #5
    blubb89 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.01.2010
    Beiträge
    7
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Bei mir ist nicht das ganze Array mit sinnvollen Bytes gefüllt, sondern nur 6 Stück und der Rest habe ich mit 0 gefüllt. Nach diesen könnte ich suchen, wenn nicht in dem ersten Byte aus der Antwort der Auswerteeinheit eine 0 empfangen würde (und das ist der Fall). Er würde dann schon nach dem ersten Byte die Nullterminierung finden und das wäre falsch.

  6. #6
    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

    Kannst Du für jeden Datensatz eine bestimmte Länge definieren oder variieren diese in der Länge?

    Wenn nicht, könntest Du immer einen Zeiger im Array verschieben und den nächsten Datensatz einlesen.

    Ansonsten könnte man sich selbst eine entsprechende Sequenz programmieren, nach der gesucht wird. Doof ist dann natürlich, das die Messwerte zufällig diese Sequenz ergeben. Würdest Du z.B. dafür aber 4 Byte verwenden, wäre diese Wahrscheinlichkeit aber schon bei 2^32. Sprich 4 Milliarden und ein paar kaputte.

  7. #7
    Registriert seit
    09.11.2007
    Ort
    Rhein Main (Darmstadt)
    Beiträge
    663
    Danke
    61
    Erhielt 112 Danke für 80 Beiträge

    Standard

    Genau dafür hat man Protokolle erfunden, einfachstes Beispiel:

    Das erste Zeichen ist das Startzeichen (STX), das darf nie in einem Text vorkommen.

    Nach dem STX wird gesucht im Stream, danach kommen weitere Zeichen bis zu einem besonderen Zeichen, das markiert das Ende der Nutzdaten (ETX).

    Die Daten zwischen Start und Ende Zeichen sind dann die Nutzdaten.

    Verfeinert werden kann dann das Protokoll mit einer CheckSumme, das ist in der Regel das Zeichen vor dem Ende Zeichen, auch bietet sich an, hinter dem Startzeichen zu senden, wie lang das Telegramm sein wird. etc etc.

    Einfache Übertragungen machen auch Pausen zwischen 2 Datenströmen, die man auswerten kann etc...

    Mal ein paar Beispiele für simpel Protokolle:

    Einfacher Text, gefolgt von einem Zeilenvorschub Zeichen (Bosch Rexroth auf der Diagnose Schnittstelle)

    Einfacher Text, Zeilenvorschub + Pause (WTW Messgeräte, KLM PS 3 im SIO Betrieb)

    STX, ... ETX im Prinzip alle aktuellen Netzwerke in beliebigen weiteren Verfeinerungen

    Anscheinend ist im Datenstrom des Themenstarters die Null das Startzeichen STX, ggf identisch mit den Endezeichen ETX oder es gibt eine Pauseninformation.

    Die Protokolle werden leider oft von den Lieferanten der Geräte wie ein Geheimnis gehandelt, da sie ihre speziellen Diagnose Systeme oder Programmier Software gegen Kohle an den Mann bringen wollen.
    Als Freelancer immer auf der Suche nach interessanten Projekten.
    Zitieren Zitieren Protokolle  

  8. #8
    Registriert seit
    05.02.2009
    Beiträge
    9
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Servus Leuts,

    wo finde ich den einen Senden/Empfangen FB für Beckhoff Steuerungen?

    MfG

    zwuebbl
    Zitieren Zitieren TCP/IP Beckhoff  

  9. #9
    Registriert seit
    09.01.2008
    Beiträge
    85
    Danke
    5
    Erhielt 13 Danke für 12 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    einen passenden Baustein findest Du in der Bibliothek von TwinCAT TCP/IP Server.

    Schau mal hier in die .chm rein. Da sind Beispielprojekte drinne:
    http://download.beckhoff.com/downloa...cPIPServer.chm

    Gruß Scrat

  10. Folgender Benutzer sagt Danke zu Scrat für den nützlichen Beitrag:

    zwuebbl (13.09.2010)

Ähnliche Themen

  1. daten über PN senden und empfangen
    Von Servernexus im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 04.08.2011, 16:43
  2. Daten über mehrere Wochen aufzeichnen mit TwinCAT
    Von olitheis im Forum CODESYS und IEC61131
    Antworten: 15
    Letzter Beitrag: 18.05.2009, 08:15
  3. SMS Empfangen mit Twincat
    Von schnee600 im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 24.10.2008, 22:37
  4. Antworten: 7
    Letzter Beitrag: 03.04.2008, 21:32
  5. CP340 - Daten über RS232 senden und Empfangen
    Von smartie im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 24.08.2007, 10:15

Lesezeichen

Berechtigungen

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