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

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

Thema: Variable Datenlänge über TRCV_C

  1. #1
    Registriert seit
    13.07.2010
    Beiträge
    71
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,
    ich habe ein kleines Problem beim Empfangen eines Arrays über TRCV_C.
    Der komplette Array hat jedes Mal unterschiedliche LÄngen und schwankt zwischen 45 und 62 Byte. (Das ganze läuft auf S7 V10.5)
    Zum besseren Verständniss: Von einer Applikation kommt ein Array, der in den ersten 11 Byte bestimmte Werte aufweist wie z.b. Byte,byte,int, char, etc. Ab der Adresse 12 befindet sich ein Array of char. Dieser Àrray ist bei jedem Vorgang unterschiedlich lang.
    Das Problem ist jetzt, wenn ich bei dem TRCV_C Baustein über ANY den Empfangsbereich festlege, die Bytelänge der zu erwartenden Daten angeben muss. Sind die Daten anschließend genauso lang, wie angegeben, klappt auch alles und sie werden in den DB geschrieben. Ist der Array aber kürzer müssen die Daten zweimal empfangen werden, damit sie in dem Array of Char auftauchen. Beim erneuten Scannen verschieben sich die Daten und werden so unbrauchbar.

    Meine Idee war zuerst den Baustein einfach über "COM-RST" neu zu starten, aber da traten nur ungewollte Fehler in der Kommunikationsverbindung auf.

    Hat jemand vlt noch eine Idee wie das klappen könnte?

    Gruß
    Lord Cartman
    Zitieren Zitieren Variable Datenlänge über TRCV_C  

  2. #2
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Zitat Zitat von Lord Cartman Beitrag anzeigen
    Dieser Àrray ist bei jedem Vorgang unterschiedlich lang.
    Hi Lord Cartman (Adel ist auch vorhanden),

    kannst du nicht dafür sorgen dass das Array immer gleich lang ist, sprich mit Leerzeichen auffüllen?

    Oder kannst du die Länge beim senden eingeben?
    Ich kenne den TRCV_C jetzt nicht.

    Beim normalen Send-Baustein (FC5) wird ja auch der Bereich angegeben (über den Anyzeiger) und explizit wie viel Byte davon gesendet werden sollen.
    Geändert von Paule (21.12.2010 um 19:56 Uhr) Grund: Ergänzung
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  3. #3
    Registriert seit
    13.07.2010
    Beiträge
    71
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hehe, aber mehr schein als sein

    Die Idee mit den Leerzeichen auffüllen hatte ich schon, das lief auch einwandfrei. Leider sollte aber die Lösung flexibel gestaltet werden für spätere eventuelle Änderungen.

    Die Länge kann ich beim Senden leider nicht angeben, selbst wenn das gehen würde, weigert sich die SPS/der baustein irgendwelche Daten zu empfangen, bis die geforderte LÄnge erreicht wurde.
    Es gibt ja diesen Ad-hoc Modus mit dem genau dies möglich sein sollte, aber als ich das ausprobieren wollte, is mir aufgefallen dass ich die ganze zeit schon mit diesem modus arbeite.

    also wenn die länge letztendlich immer die gleiche und zudem bekannt ist, is alles kein problem, nur mit dieser variablen länge haperts...

    Gruß
    Lord Cartman

  4. #4
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    Hallo,

    schau mal ins Handbuch (S.189)

    http://www.grollmus.de/simatic_s7_ha...emhandbuch.pdf
    Angehängte Grafiken Angehängte Grafiken
    • Dateityp: jpg tr.jpg (91,4 KB, 42x aufgerufen)

  5. #5
    Registriert seit
    13.07.2010
    Beiträge
    71
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Verpolt,

    in dem "großen" Benutzerhandbuch steht auf seite 1001 dass bei LEN=0 die Daten sofort verfügbar sind, solang die Länge der Date unter der maximalen angegebenen Länge liegt.

    Leider hatte ich die ganze Zeit bereits diese Einstellung, aber ohne Erfolg.
    Echt merkwürdig dass die Daten nicht angezeigt werden...

    Gruß

  6. #6
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Hallo Lord Cartman,

    wie wäre es denn, wenn Du noch ein weiteres Telegramm schickst, in dem nur die Länge steht,
    dann kannst Du Dir für Dein Empfangsfach den Any mit der richtigen Länge zusammenbasteln.

    Grüße
    Gebs

  7. #7
    Registriert seit
    13.07.2010
    Beiträge
    71
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Gebs,

    an sich ne gute Idee. Leider soll/kann wirklich nur dieses eine Telegramm gesendet werden, deswegen müssen die Daten direkt nach jedem Senden angezeigt werden.

    Gruß

  8. #8
    Registriert seit
    17.01.2010
    Beiträge
    197
    Danke
    81
    Erhielt 21 Danke für 20 Beiträge

    Frage

    Länge = 1 ?

  9. #9
    Registriert seit
    13.07.2010
    Beiträge
    71
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Bimbo,

    falls du am Eingang LEN den wert 1 setzen meinst, das funktioniert auch nicht. Die Idee hatte ich auch schon. Zwar werden dann sofort alle Daten empfangen, aber der gesamte Array wird dann nur in die erste speicherstelle geschrieben.

    hmm. vlt lässt sich aber mit ner passenden auswertung noch was zusammenbauen...
    ich probier mal

  10. #10
    Registriert seit
    27.08.2003
    Ort
    Schweitenkirchen
    Beiträge
    472
    Danke
    101
    Erhielt 73 Danke für 59 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Kannst du in deine Telegramme am Anfang die Länge eintragen?
    So eine Art Header.
    In der SPS einen Aufruf der nur die Länge ausliest (mit fester LEN nur für Header) und im 2. Aufruf wird bei LEN die Länge des Header eingetragen.

    Evtl vorher die Headerlänge noch abziehen so dass nur die Nutzdaten geholt werden.
    Wenn ich einen meiner Finger in eines deiner Nasenlöcher stecke, haben wir beide nen Finger in der Nase

Ähnliche Themen

  1. FC über in-Variable aufrufen
    Von Gerri im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 05.07.2010, 14:31
  2. Konsistenze Datenlänge des SFC20 BLKLMOV
    Von DSP2 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 11.04.2008, 09:26
  3. Bildwechsel über Variable
    Von Outrider im Forum HMI
    Antworten: 8
    Letzter Beitrag: 04.04.2008, 06:34
  4. Max Datenlänge von SFC14
    Von guenni im Forum Feldbusse
    Antworten: 19
    Letzter Beitrag: 23.03.2007, 18:12
  5. Bildanwahl OP7 über Variable
    Von lsr im Forum HMI
    Antworten: 4
    Letzter Beitrag: 20.11.2005, 16:41

Lesezeichen

Berechtigungen

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