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

Ergebnis 1 bis 4 von 4

Thema: TCON variable Datenlänge

  1. #1
    Registriert seit
    08.01.2015
    Ort
    Leipzig
    Beiträge
    37
    Danke
    3
    Erhielt 2 Danke für 2 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich baue mal wieder an unserer SPS weiter. Das Thema ist Kommunikation mit einem PC über TCP.

    Wir wollen also zwischen einer S7-1214C und einem PC über Ethernet Befehle übertragen. Am PC wird z.Z. einfach nur HyperTerm verwendet was später durch ein C# Programm ersetzt werden soll. Der Verbindungsaufbau mittels TCON und senden bzw. empfangen mit TRCV und TSEND gehen grundsätzlich.

    TRCV:
    Stelle ich LEN auf 0 und ADHOC=True ist der Baustein ja auf den Empfang von variablen Längen eingestellt. Mir fehlt jetzt aber die zündende Idee wie ich aus den Empfangenen Daten das gesendete Datenpaket extrahieren kann. Der Aufbau der Befehle bzw. der Datenpakete ist noch nicht festgelegt. Hier kann ich also auch Vorschläge bringen wie dieses auszusehen hat (Anfangs-/ Endekennung,…) Inhalt könnte z.B. sein „SystemOK“, „AOIready“, „ResultTrue“, „ResultFalse“,…

    Gebt mir mal bitte einen kräftigen Schubser (für Anfänger verständlich).

    Danke
    Uli
    Zitieren Zitieren TCON variable Datenlänge  

  2. #2
    Registriert seit
    11.12.2009
    Beiträge
    2.113
    Danke
    388
    Erhielt 390 Danke für 271 Beiträge

    Standard

    Du willst Dir also ein eigenes Telegramm "basteln".

    Im einfachsten Fall könnte etwas so aussehen:

    Code:
    MEINTELEGRAMANFANG;WERT1=123;WERT2=345;WERT3=123.45;MEINTELEGRAMENDE;
    Dann könntest Du im Code Erstmal nach MEINTELEGRAMMANFANG; und MEINTELEGRAMMENDE; Parsen und weißt wo die Daten liegen. Alternativ
    kannst Du auch die Telegrammlänge übermitteln, um die Zeit für die Suche nach dem Telegrammende zu sparen.
    Danach kannst Du entweder gezielt nach Werten parsen "WERT1=" oder "WERT3=" oder einfach sagen "ermittle alles was es gibt und speicher es weg.
    Dazu könntest Du von Telegramm anfang bis zum ersten "=" suchen, dazwischen dann auswerten was es ist (z.B. Wert1 oder Wert3) und dann den Wert zwischen
    "=" und ";" in die passende Variable schaufeln.

    Ein ganz anderer Ansatz wäre, für jede Variable oder Funktion ein Telegramm zu entwerfen.

    Das könnte dann wie folgt aussehen

    Code:
    TELEGRAMMANFANG;TELEGRAMMID=123;WERT=4711;TELEGRAMMENDE;
    Code:
    TELEGRAMMANFANG;TELEGRAMMID=314;SOLLWERT=12;HYSTERESE=0.5;WARNUNG=11.5;TELEGRAMMENDE;
    Über die TelegramID wird festgelegt was für ein Telegramm das ist bzw. welche Variable da geschrieben wird.
    Du bist sehr flexibel, weil Du für eine neue Fuktion einfach ein neues Telegramm entwirfst.
    Außerdem ist die Zykluszeit damit geschont, weil Du dort nur nach der TelegrammID parsen musst (die immer an der gleichen stelle steht!)
    und dann entscheidest was Du mit den Variablen dahinter machst. Wenn Du Dir das parsen komplett sparen willst könntest Du auch eine feste Zeichenanzahl festlegen z.B.
    Code:
    TELEGRAMMANFANG;TELEGRAMMID=000123;WERT=0004711;TELEGRAMMENDE;
    Dann würde bei dem Telegramm immer alles an der gleichen stelle sitzen, und du könntest z.B. mit

    Code:
    EMPFANGSPUFFER[28]*100000 +  EMPFANGSPUFFER[29]*10000 + EMPFANGSPUFFER[30]*1000 + EMPFANGSPUFFER[31]*100 + EMPFANGSPUFFER[32]*10 + EMPFANGSPUFFER[33]*1
    Die ID immer an der gleichen stelle auslesen.

    Viele Wege führen nach ROM... hab dir mal ein paar Aufgezeigt. Haben alle ihre Vor- und Nachteile... und Vollständig ist diese Liste sicher nicht!

    Grüße

    Marcel

    Grüße

    Marcel
    Geändert von Matze001 (21.08.2015 um 08:14 Uhr)
    Stell Dir vor es geht, und keiner kriegts hin!

  3. #3
    Uli001 ist offline Benutzer
    Themenstarter
    Registriert seit
    08.01.2015
    Ort
    Leipzig
    Beiträge
    37
    Danke
    3
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo Matze001,

    erst einmal vielen Dank für deine Antwort und Entschuldigung dass ich nicht darauf reagiert habe. Ich war und bin auch morgen wieder mit meinem kranken Kind zuhause. Dort habe ich keine Programmierumgebung und ehrlich gesagt auch andere Aufgaben als was für Arbeit zu machen. Das dringendste mache ich natürlich trotzdem.

    Melde mich wenn ich wieder an dem Thema auf Arbeit dran bin.

    Danke
    Uli

  4. #4
    Registriert seit
    11.12.2009
    Beiträge
    2.113
    Danke
    388
    Erhielt 390 Danke für 271 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ganz ruhig Habe Dir ja nur Möglichkeiten aufgezeigt... was Du nun damit machen willst
    ist dir überlassen. Wenn Du es komplett ignoriert hättest wäre es mir auch egal, denn vielleicht
    hat in Zukunft mal jemand anderes was ähnliches vor und hat gleich ein paar Ideen.

    Grüße

    Marcel

    P.S: Gute Besserung an das Kind...
    Stell Dir vor es geht, und keiner kriegts hin!

Ähnliche Themen

  1. Step 7 ET200S - maximale Datenlänge für UBLKMOV
    Von schuld im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 18.07.2014, 09:00
  2. Step 7 Variable datenlänge empfangen mit Fb64
    Von RMLIF im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 21.06.2013, 08:39
  3. Variable Datenlänge über TRCV_C
    Von Lord Cartman im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 04.01.2011, 14:33
  4. Konsistenze Datenlänge des SFC20 BLKLMOV
    Von DSP2 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 11.04.2008, 09:26
  5. Max Datenlänge von SFC14
    Von guenni im Forum Feldbusse
    Antworten: 19
    Letzter Beitrag: 23.03.2007, 18:12

Stichworte

Lesezeichen

Berechtigungen

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