-> Hier kostenlos registrieren
Hallo, ich bin relativ unerfahren mit Programmierung in Codysys und versuche eine Funktion zu schreiben, die eine REAL Zahl als STRING speichert, um danach einzelne "Zeichen" zu manipulieren.
Ich brauche die Funktion zum einlesen der Daten in Excel! Excel scheint Probleme mit dem Punkt als Dezimalzeichen in Verbindung mit REAL Zahlen zu haben.
Beispiel: Aus "4.589E-3" macht Excel "4,59E+00" trotz korrekter Angabe des Dezimalzeichens beim Öffnen der Datei.
Ich wollte ursprünglich wie in C++ mein String als Array aus "Char" interpretieren, nur leider geht es nicht, da Codesys scheinbar anders vorgeht. Zusätzlich gibt es den Datentypen "Char" gar nicht, oder er wurde gut versteckt
Mein Vorgehen war jetzt den String in ein Byte-Array zu schreiben. Dort stehen dann die Zahlen drin, die das Zeichen aus der ASCII-Tabelle abbilden (->schon überprüft).
Das Problem ergibt sich nun beim Umwandeln von Byte nach String... die Funktion Byte_to_String macht im Prinzip nichts außer nur die Zahlen des Byte-Arrays zu kopieren.
Es sollte allerdings anstatt der Zahl, das entsprechende ASCII-Zeichen gespeichert werden.
Edit: Es handelt sich um eine Wago SPS!
Ich brauche die Funktion zum einlesen der Daten in Excel! Excel scheint Probleme mit dem Punkt als Dezimalzeichen in Verbindung mit REAL Zahlen zu haben.
Beispiel: Aus "4.589E-3" macht Excel "4,59E+00" trotz korrekter Angabe des Dezimalzeichens beim Öffnen der Datei.
Ich wollte ursprünglich wie in C++ mein String als Array aus "Char" interpretieren, nur leider geht es nicht, da Codesys scheinbar anders vorgeht. Zusätzlich gibt es den Datentypen "Char" gar nicht, oder er wurde gut versteckt

Mein Vorgehen war jetzt den String in ein Byte-Array zu schreiben. Dort stehen dann die Zahlen drin, die das Zeichen aus der ASCII-Tabelle abbilden (->schon überprüft).
Das Problem ergibt sich nun beim Umwandeln von Byte nach String... die Funktion Byte_to_String macht im Prinzip nichts außer nur die Zahlen des Byte-Arrays zu kopieren.
Es sollte allerdings anstatt der Zahl, das entsprechende ASCII-Zeichen gespeichert werden.
Edit: Es handelt sich um eine Wago SPS!
Code:
FUNCTION TO_EXCEL : STRING
VAR_INPUT
Input_Data:REAL; (*Eingabedaten*)
END_VAR
VAR
help_array:ARRAY[0..80] OF BYTE;
i,lenght:INT;
ptr:POINTER TO STRING;
END_VAR
ptr:=ADR(help_array);
ptr^:=REAL_TO_STRING(Input_Data); (*in help_array steht der Zahlenwert von Input_Data als String gespeichert*)
(* Suche in help_array nach '.' und ersetze durch ','*)
FOR i:=0 TO LEN(REAL_TO_STRING(Input_Data)) DO
IF help_array[i] = 46 THEN (*46 enspricht '.'*)
help_array[i]:=44; (*44 enspricht ','*)
END_IF;
(*Hier sollten nun mein neuer String zusammengesetzt werden*)
TO_EXCEL:= CONCAT(TO_EXCEL,BYTE_TO_STRING(help_array[i]));
END_FOR;