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

Ergebnis 1 bis 5 von 5

Thema: TCP-Packet in Structured Text aufbauen

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    Ich hoffe mal, dass ich das richtige Forum ausgewählt habe..

    Wir arbeiten in Structured Text auf eine B&R Steuerung und wollen Daten per TCP auf einen Industrie PC übertragen. Die Übertragung an sich funktioniert, so
    dass wir jetzt daran arbeiten, das TCP-Packet aufzubauen. Wir haben Variablen mit verschiedenen Typs, die wir übertragen wollen, können sie aktuell nur leider
    nicht in ein Array kopieren. In C würde ich in die Richtung arbeiten:

    void* buffer = malloc(100);
    int ID = 23;
    memcpy((int*)(buffer),ID,4);
    float foo = 17.2;
    memcpy((float*)(buffer+4),foo,4);

    Könnte mir also jemand sagen, wie ich Reals und Ints so in ein Array kopieren kann, damit ich es per TCP verschicken kann?

    Nikolas
    Zitieren Zitieren TCP-Packet in Structured Text aufbauen  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.170
    Danke
    922
    Erhielt 3.287 Danke für 2.656 Beiträge

    Standard

    Du könntest alle Zahlen in Klartext (CHAR, STRING) umwandeln und in ein ARRAY OF CHAR (oder BYTE) packen.
    Oder ein ARRAY OF BYTE benutzen und alle Datentypen in die Einzel-Bytes zerlegen.
    Etwa so:
    Code:
    buffer[0] := INT_TO_BYTE(intvar);       //L-Byte
    buffer[1] := INT_TO_BYTE(intvar/256);   //H-Byte
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #3
    NikolasE ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    16.08.2013
    Beiträge
    0
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke. Werden wir mal ausprobieren!

  4. #4
    Registriert seit
    12.04.2010
    Beiträge
    300
    Danke
    22
    Erhielt 54 Danke für 52 Beiträge

    Standard

    Zitat Zitat von NikolasE Beitrag anzeigen
    Hallo

    Ich hoffe mal, dass ich das richtige Forum ausgewählt habe..

    Wir arbeiten in Structured Text auf eine B&R Steuerung und wollen Daten per TCP auf einen Industrie PC übertragen. Die Übertragung an sich funktioniert, so
    dass wir jetzt daran arbeiten, das TCP-Packet aufzubauen. Wir haben Variablen mit verschiedenen Typs, die wir übertragen wollen, können sie aktuell nur leider
    nicht in ein Array kopieren. In C würde ich in die Richtung arbeiten:

    void* buffer = malloc(100);
    int ID = 23;
    memcpy((int*)(buffer),ID,4);
    float foo = 17.2;
    memcpy((float*)(buffer+4),foo,4);

    Könnte mir also jemand sagen, wie ich Reals und Ints so in ein Array kopieren kann, damit ich es per TCP verschicken kann?

    Nikolas
    Hallo,
    du könntest auch einen Datentyp erzeugen, welcher die Daten abbildet. Dieser 'Transfer' Datentyp enthält alles was du zum IPC senden willst

    Das ganze könnte dann auch so aussehen


    Transfer.ID = 23
    Transfer.foo = 17.2
    usw....

    Symbolisch wird das dann so irgendwie gesendet.

    send (...., adr(Transfer), sizeof(Transfer), ....)

    Am IPC nimmst du auch einen Datentyp der genauso aussieht...

    receive (.... , &Transfer, &rec_len, ...)

    Aufpassen muss man wegen Alignement, d.h. wenn du Struktur innerhalb einer Struktur machst, bzw. nur ein einzelnes Byte oder Bool, dann musst du Füllbytes im IPC reingeben, der Compiler für die Steuerung macht das automatisch ohne dich darauf hinzuweisen.

    Gutes Gelingen
    BG
    BB

  5. #5
    NikolasE ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    16.08.2013
    Beiträge
    0
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    So haben wir es jetzt auch gelöst und sind zufrieden damit. Wir verschicken jetzt ints (2Byte) und floats (4Byte) und achten drauf, dass die integer immer nur in einer geraden Anzahl auftreten, also float int int float statt float int float int. Dann baut der Compiler auch keine Padding Byte mehr ein und diet Daten liegen schön sequenziell im Speicher.

    Nikolas

Ähnliche Themen

  1. Sonstiges Simotion Scout structured text PT Puls geht nicht.
    Von Jorrit im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 03.07.2013, 15:39
  2. Structured Text gemäß IEC 61131-3)
    Von megni im Forum CODESYS und IEC61131
    Antworten: 25
    Letzter Beitrag: 11.06.2013, 12:59
  3. Structured Text (ST)
    Von nourdine im Forum PC- und Netzwerktechnik
    Antworten: 6
    Letzter Beitrag: 29.11.2009, 17:13
  4. [ ST - Structured Text ] Pointer Casten
    Von caret im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 16.10.2009, 22:38
  5. Structured Text RSLogix
    Von kammi-kaze im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 20.07.2009, 15:01

Stichworte

Lesezeichen

Berechtigungen

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