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

Ergebnis 1 bis 6 von 6

Thema: Umwnadeln von ASCII-Zeichen in REAL

  1. #1
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich habe eine Kommunikation mit einem Keyence TM3000 Messystem.

    Dieses sendet mir Daten via RS232. Gesendet werden ASCIIzeichen
    Die Daten stehen nun wie folgt in meinem CP Lesepuffer:

    Lesebyte[1] = '+'
    Lesebyte[2] = '0'
    Lesebyte[3] = '0'
    Lesebyte[4] = '5'
    Lesebyte[5] = '.'
    Lesebyte[6] = '9'
    Lesebyte[7] = '0'
    Lesebyte[8] = '9'
    Lesebyte[9] = ',' // Trennzeichen für den nächsten Wert

    Wie mache ich nun daraus einen Realwert?
    Gibts da Bausteine für, oder hat jemand schon mal soetwas gemacht?
    Zitieren Zitieren Umwnadeln von ASCII-Zeichen in REAL  

  2. #2
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Habe gerade gelesen es gibt ein String to REAL?
    Aber leider geht dort nur eine Vorkommastelle.
    Gibts noch irgendwie was Ähnliches?
    Geändert von Bensen83 (12.04.2012 um 12:21 Uhr)

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.710
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Hallo Benson,

    da wirst du dir wohl (oder übel) etwas selber bauen müssen.
    Zunächst würde ich mir das Byte-Array in seine Einzel-Teile zerlegen - also für jedes Element, das durch Semikolon getrennt ist einen eigenen String bauen und den dann mit einer eigenen Wandlungsroutine zu einer REAL-Zahl umbauen.
    Ich kann mich aber auch erinnern, dass wir so etwas ähnliches vor einiger Zeit hier schon mal hatten ...

    Gruß
    Larry

  4. #4
    Registriert seit
    14.09.2011
    Beiträge
    109
    Danke
    17
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Hmm, schon mal in die String Funktionen von der OSCAT.de Lib geguckt:
    http://www.oscat.de/

    Da wäre, zitat aus der OSCAT.de Doku:
    13.31. FLOAT_TO_REAL
    Type Funktion : REAL
    Input FLT : STRING(20) (Gleitkommazahl)
    Output REAL (REAL Wert der Gleitkommazahl)

    FLOAT_TO_REAL wandelt eine als STRING vorliegende Gleitpunktzahl in einen Datentyp REAL um. Bei Der Umwandlung werden '.' oder ',' als Kom-
    ma interpretiert und 'E' oder 'e' als Trennzeichen des Exponenten. Die Zeichen '-0123456789' werden Ausgewertet und alle anderen in FLT vorkommenden Zeichen werden ignoriert.
    Gruß
    Euer Schatten

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

    Standard

    Ja das war ich

    Ich hab es mit zwei DINT gelöst, einen für Vorkomma, einen für Nachkomma.
    Du könntest die noch verrechnen und dann entsprechend zusammenbauen, die Siemensbausteine sind aber sehr wählerisch mit dem Format der Eingangsparameter.

    Grüße

    Marcel

  6. #6
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Leute, hatbe es etwas anderst gelöst, habe mir einen Baustein geschrieben, welcher das ASCII ARRAY in ein REAL ARRAY umwandelt.

    Dies passiert folgendermaßen.
    Wenn eine Zahl zwischen 0 und 9 erkannt wird dann wird dieser wert mit dem vorherigen wert addiert.
    Wird nun das dezimaltrennzeichen "." erkannt, so wird der Teiler /10.0 dividiert.
    Die nächste zahl wird nun auch wieder addiert allerdings mit dem Faktor 1/Teiler, also 1/10.0.
    Da nun der Teiler schon ungleich 1.0 ist, wir er bei jeder erkannten Zahl wiederum mit 1/10.0 multipliziert.
    somit ergibt sich bei der nächsten addition ein Faktor von 1/100.0.
    wird ein "," erkannt, so ist deklariert, dass eine neu zahl beginnt die bis jetzt bestehende Zahl wird gespeichert und der speicherindex wird erhöht.
    Zitieren Zitieren Habe es anderst gelöst  

Ähnliche Themen

  1. ASCII Zeichen in DB
    Von Servernexus im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 12.12.2011, 11:24
  2. ASCII Zeichen auf OP270 anzeigen
    Von nicorola im Forum HMI
    Antworten: 3
    Letzter Beitrag: 02.04.2010, 12:52
  3. Ein ASCII-Zeichen im DB nach Integer
    Von noeppkes im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 09.11.2007, 11:42
  4. ASCII Zeichen vergleichen und auswerten
    Von TimFelix im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 29.04.2006, 15:26
  5. ASCII-Zeichen über Profibus
    Von Anonymous im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 29.01.2004, 12:21

Lesezeichen

Berechtigungen

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