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

Ergebnis 1 bis 5 von 5

Thema: Fehlerbehandlung für STRING_TO_...

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen.

    Ich erhalte von einem RS232-Messgerät einen STRING und möchte diesen in einen LREAL konvertieren. Es könnte vorkommen, dass in diesen String zb ein Buchstabe gerät. Die Funktion liefert dann aber leider trotzdem einen Wert zurück nämlich 0. Diesen Fehler muss ich irgendwie abfangen. Hat jemand eine Idee wie ich das machen könnte? Den String vorher evtl mit anderen Funktionen auf Richtigkeit überprpüfen zB? Aber Wie???

    Hab beim googeln herrausgefunden, dass bei Simatic in solchen Fällen ein Fehlerbit gesetzt wird. Aber ist das bei TwinCat auch der Fall?
    http://www.sps-forum.de/showthread.p...NG_TO_INT-quot

    im Idealfall sieht der STRING den ich erhalte so aus:
    +1.20315000E+02<CR>

    Darauf wende ich folgenden Code an:
    lr_ValueT2210:= STRING_TO_LREAL(LEFT(DataTransmissionT2210.s_ReceivedString,15));

    mfg
    Eike
    Zitieren Zitieren Fehlerbehandlung für STRING_TO_...  

  2. #2
    Registriert seit
    19.12.2006
    Beiträge
    185
    Danke
    25
    Erhielt 26 Danke für 21 Beiträge

    Standard

    Und wieso fragst du nicht ab, ob das Ergebnis der Konvertierung > 0 ist und interpretierst es dann als i.O. ?

    Du kannst auch das Ergebnis der Stringkonvertierung im Falle von 0 mit dem Empfangsstring vergleichen. So kannst du ermitteln, ob das Ergebnis wirklich dem Wert 0 entspricht und nicht ein Fehler in der Konvertierung war.

    Zum Beispiel:

    lrErgebnis:=STRING_TO_LREAL(sEmpfangsstring);

    bKonvertierungOK:= ( (lrErgebnis > 0) OR (lrErgebnis=0 AND sEmpfangsstring= '0') );

    Hier davon ausgegangen, dass der Empfangsstring bei Messwert 0 = '0' ist.

    Daniel
    Geändert von mkd (11.02.2013 um 22:07 Uhr)

  3. #3
    Monty87 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.10.2012
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Naja der Wert genau 0 ist zwar selten aber als Messwert nicht unmöglich, da kann ich ihn nicht einfach ausschließen...

  4. #4
    Registriert seit
    01.10.2009
    Ort
    Regensburg
    Beiträge
    77
    Danke
    8
    Erhielt 11 Danke für 11 Beiträge

    Standard

    Hallo,

    eine Möglichkeit wäre den String nach Vorzeichen, Dezimalzeichen und Nummern zu durchsuchen und nur zulässige Bytes erst mal in einem anderen String zwischenspeichern und dann konvertieren.

    Ist evtl. ein bischen aufwändiger, funktioniert aber dafür zuverlässig.

    cheers

  5. #5
    Monty87 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.10.2012
    Beiträge
    23
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @mkd
    Dein Nachtrag ist ne sehr gute Idee
    Das sollte funktionieren


    Vielen Dank

    @DaHauser
    so in die Richtung ging auch meine Überlegung Aber ich glaube die erste Variante ist etwas einfacher
    trotzdem Vielen Dank

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 20.08.2009, 14:10
  2. Antworten: 2
    Letzter Beitrag: 03.01.2009, 11:42
  3. Fehlerbehandlung VB6 bzw. VBA
    Von HaSchi im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 14.12.2008, 18:20
  4. Antworten: 4
    Letzter Beitrag: 09.04.2008, 14:04
  5. Netzspannungsüberwachung mit Fehlerbehandlung
    Von rs-plc-aa im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 26.07.2006, 19:33

Lesezeichen

Berechtigungen

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