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

Ergebnis 1 bis 5 von 5

Thema: ASCII-codierter Array of Word nach String konvertieren

  1. #1
    Registriert seit
    26.10.2011
    Beiträge
    32
    Danke
    8
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich stehe gerade vor folgendem Problem:
    Ich habe ne S7-314 und ein KTP 400comfort.
    Die 314 liest von einem IO-Link-Teilnehmer verschiedene Werte aus. Darunter auch den Produkttyp. Dieser wird in ein ASCII-codiert in ein Array of Word geschrieben (Ziffern und Buchstaben).
    Diesen will ich nun gerne als Klartext auf der HMI darstellen können. Ich kann auf dem KTP aber nur einen String als "Text" ausgeben.
    Gibt es da eine Möglichkeit?

    Also in aller Kürze:
    Aus ASCII (Hex) "5452 3734 3332" soll "TR7432" werden.
    Zitieren Zitieren ASCII-codierter Array of Word nach String konvertieren  

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

    Standard

    Kann das KTP Array of Chars?
    Evtl. mal damit probieren.
    Aber erst 2 Bytes nach String Anfang projektieren.

    Wenn die Länge des empfangegen Strings immer gleich ist,
    die "Words" per Blockmove in einen String kopieren.
    Musst dich dann evtl. noch um die 2 Headerbytes des Strings kümmern.
    Darin steht die Länge des Strings und die Menge an enthaltenen Zeichen.

    Den Weg würd ich versuchen
    Wenn ich einen meiner Finger in eines deiner Nasenlöcher stecke, haben wir beide nen Finger in der Nase

  3. Folgender Benutzer sagt Danke zu Zefix für den nützlichen Beitrag:

    D-Platoon (09.11.2011)

  4. #3
    Registriert seit
    26.10.2011
    Beiträge
    32
    Danke
    8
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hallo Zefix,

    entschuldige die späte Antwort.
    Ich glaube ich habe das Problem nicht genau genug beschrieben:
    Gleich vorab: Ich arbeite mit dem TIA-Portal.
    Ich schreibe die Daten vom IO-Link-Modul in ein Array [0..10] of Word.
    Egal ob das der Produktname oder ein Temperaturwert ist.
    Dieser wird dann in einem weiteren Baustein in die entsprechende "Schublade" (Struct mit den entsprechnden Variablen für jeden Parameter) gesteckt, entsprechend umgewandelt (z.B. ein Temperaturwert in eine Realzahl) und abgespeichert, damit das HMI darauf zugreifen kann.
    Bei den Werten ist das alles auch gar kein Problem. Das KTP greift auf den entsprechenden Wert zu in zeigt ihn korrekt an.
    Das Problem liegt bei den Zeichenketten, also dem Text.
    Wenn ich diesen direkt, ohne weitere Umwandlung in meine oben genannte Schublade stecke (es ist dann immer noch ein Array [0..10] of Word) und auf dem KTP anzeigen will wird auf diesem nur "5452" (was ja bekanntlich "TR" bedeutet) angezeigt. Denn ich muss dort bei "Format" "Hexadezimal" (oder auch Dezimal) auswählen, damit es mir erlaubt ist dem E/A-Feld die Variable (aber auch hier nur das erste Wort) zuzuweisen.
    Wähle ich eine "Zeichenkette" aus, muss das Eingabeformat ein "String" sein.

    Ich hoffe, die Problemstellung ist jetzt klarer.

    Edit:
    Die Länge des Strings ist von Parameter zu Parameter unterschiedlich.

    Edit Edit:
    Ich hab gerade noch ein bisschen gespielt.
    So wie es aussieht ist das Problem behoben. Ich werde berichten, wenn ich es mit Sicherheit weiß!
    Geändert von D-Platoon (01.11.2011 um 16:19 Uhr) Grund: Problem vermutlich behoben

  5. #4
    Registriert seit
    26.10.2011
    Beiträge
    32
    Danke
    8
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Also ich habe das Programm nochmals auf Herz und Nieren geprüft und es funktioniert jetzt.
    Es hat, genau wie du gesagt hattest, mit BLKMOV geklappt. Ich musste mich dabei nichtmal um die Headerbytes kümmern. Hatte da wohl zu kompliziert gedacht

    Vielen Dank für deinen Tipp!

  6. #5
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von D-Platoon Beitrag anzeigen
    Also in aller Kürze:
    Aus ASCII (Hex) "5452 3734 3332" soll "TR7432" werden.
    Was jetzt?

    "5452...." ist jetzt Hex, also sowieso schon ASCII "TR...". Dann musst du wahrscheinlich für deinen String noch den Header ergänzen.
    Wenn "5452...." allerdings ASCII sein sollte - was ich für sehr unwarscheinlich halte - wirds interessanter, ist aber auch zu schaffen.


    EDIT:
    Sorry, nicht bis zum Ende gelesen....
    Geändert von Aventinus (09.11.2011 um 15:22 Uhr) Grund: Sorry...
    mfG Aventinus

Ähnliche Themen

  1. DATE_AND_TIME in String konvertieren
    Von toto45 im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 14.03.2012, 13:58
  2. String nach Date_and_Time konvertieren
    Von McFly82 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 02.08.2011, 14:16
  3. Word übertragen in String=ASCII
    Von Trötschi im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 26.08.2010, 07:55
  4. Word in ASCII
    Von rerdma3s im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 08.11.2009, 13:22
  5. Antworten: 13
    Letzter Beitrag: 24.09.2009, 12:54

Lesezeichen

Berechtigungen

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