Fehlerbehandlung für STRING_TO_...

Monty87

Level-1
Beiträge
23
Reaktionspunkte
0
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.php/25927-Errorhandling-für-quot-STRING_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
 
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
 
Zuletzt bearbeitet:
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
 
@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
 
Zurück
Oben