TIA String oder char array to REAL konvertieren

ludi81

Level-1
Beiträge
66
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,Ich habe meines Wissens ein gängiges Problem. Aber leider habe ich noch keine Lösung im Internet gefunden.Ich empfange mittels RS232 Schnittstelle Daten von einem Sensor (CSV). Mit String Manipulationsfunktionen habe ich jetzt einen String mit einer Zahl (z.b. -03.1234). Wie kann ich diesen String jetzt elegant in eine REAL Zahl umwandeln, damit ich Vergleichsoperationen ausführen kann (z.b. kleiner als -3)?Gibt es in SCL bereits einige Funktionen und Funktionsbausteine um gescheit mit CSV Daten zu arbeiten? Denn mir kommt einfach vor, dass ich es zu kompliziert mache.DankeLudi
 
Zuletzt bearbeitet:
Sieh dir in SCL mal im Seitenmenü ... Erweiterte-Anweisungen / String + Char / S_CONV ... an.
Doppelklick drauf, Typen auswählen.
Dann wird ein "STRING_TO_REAL" eingefügt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Problem macht nur die Darstellung in Exponentialschreibweise.

In AWL (1500) geht's da noch anders : VAL_STRG und STRG_VAL Hier gehen auch Dezimalzahlen in "normaler" schreibweise...
Aber leider nur in AWL !
 
:confused: Keine Ahnung was du meinst. Real-Werte werden grundsätzlich in der Exponentialschreibweise dargestellt.
Gib uns mal ein paar Details/Screenshots/etc. was du meinst.
 
Ist in der Hilfe beschrieben: (mit Beispielen zur konvertierung)

PLC programmieren/Referenzen (S7-1200, S7-1500)/STRG_VAL
PLC programmieren/Referenzen (S7-1200, S7-1500)/VAL_STRG

geht wohl auch in FUP/KOP und mit der 1200 aber:
Die Anweisung "STRG_VAL" wird in der Programmiersprache SCL nicht unterstützt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ah! Sorry, mein Fehler. Wusste nicht das Strg_VAL einen Parameter "FORMAT" hat.
Das mit dem String_to_Real scheint unter SCL tatsächlich schwieriger zu sein.
Wurde HIER im Forum auch schon mal diskutiert...

Der String muss anscheinend tatsächlich in folgendem Format daherkommen...
±v.nnnnnnnE±xx
where
± Sign
v 1 digit before the decimal point
n 7 digits after the decimal point
x 2 exponential digits

Es wäre vielleicht einen Blick Wert einen Wrapper-FC für STRG_VAL zu schreiben (Wenn es sich in FUP ausgeht) und den dann in SCL aufzurufen....
 
Hallo,

ich verstehe die Hilfe ein wenig anders. Bei mir steht:

Die Konvertierung fängt mit dem ersten Zeichen der Zeichenkette (STRING) an und endet am Kettenende oder am ersten Zeichen, das nicht zulässig ist. Zulässig für die Konvertierung sind die folgenden Zeichen:


  • Ziffer

  • Vorzeichen

  • Punkt
Das erste Zeichen der Zeichenkette darf ein Vorzeichen (+, -) oder eine Ziffer sein. Führende Leerzeichen werden ignoriert. Bei der Konvertierung von Gleitpunktzahlen dient der Punkt als Trennung. Die exponentielle Notation "e" oder "E" ist nicht erlaubt. Das Komma als Tausender-Trennzeichen links vom Dezimalpunkt ist erlaubt und wird ignoriert. Wenn der Aufbau der Zeichenkette für die Konvertierung ungültig ist oder ein Überlauf auftritt, wird der Freigabeausgang ENO auf "0" gesetzt.



Da steht eindeutig, dass "e" und "E" nicht erlaubt sind. Ich verwende TIA V13.

Hat jemand eine Idee?
Danke
 
Zurück
Oben