S
sps_nath
Guest
-> Hier kostenlos registrieren
Das soll ein Programm zum Einlesen eines Analogwertes sein
Es funktioniert soweit auch aber der Stringscan am Ende will nicht so wie ich es gerne will.
Obwohl weiter hinten ein Minuszeichen steht wird meine Variable Ex_minus niemals true
Kann mir jemand einen Tip geben sonst verzweifle ich bald.
Compilerfehler gibt es keine.
Function_Block FB1
VAR_TEMP
Analogwert: WORD;
Ergebnis: STRING[ 20 ];
Help, Lauf, Laenge: INT;
Wert: REAL;
Ex_minus: BOOL;
END_VAR
BEGIN
Analogwert := PEW760 ;
Help :=WORD_TO_INT (Analogwert);
// Normierung des Wertes zwischen –104 und +104 °C Ergebnis ist ein //REALwert
Wert:=((-104.0 * ( 2048 – Help)) + ( Help * 104.0)) / 2048 ;
// Wert in einen String umwandeln
Ergebnis := R_STRNG( IN:= Wert);
// Stringlänge
Laenge := LEN( S:= Ergebnis);
// Der String sieht jetzt ungefähr so aus :
// -1.234567e-001
// Und ich möchte den String scannen um heraus zu finden ob ein Minus vorm Exponent steht
// Das erste Minus will ich ignorieren deswegen ab Position 2
FOR Lauf:= 2 TO Laenge DO
IF MID( IN:= Ergebnis, L:= 1, P:= Lauf) = ‘-‘ THEN
Ex_minus:= true;
Exit;
ELSE
Ex_minus:= false;
END_IF;
END_FOR;
// Auswertung der Variablen Ex_minus
End_Function_Block
Es funktioniert soweit auch aber der Stringscan am Ende will nicht so wie ich es gerne will.
Obwohl weiter hinten ein Minuszeichen steht wird meine Variable Ex_minus niemals true
Kann mir jemand einen Tip geben sonst verzweifle ich bald.
Compilerfehler gibt es keine.
Function_Block FB1
VAR_TEMP
Analogwert: WORD;
Ergebnis: STRING[ 20 ];
Help, Lauf, Laenge: INT;
Wert: REAL;
Ex_minus: BOOL;
END_VAR
BEGIN
Analogwert := PEW760 ;
Help :=WORD_TO_INT (Analogwert);
// Normierung des Wertes zwischen –104 und +104 °C Ergebnis ist ein //REALwert
Wert:=((-104.0 * ( 2048 – Help)) + ( Help * 104.0)) / 2048 ;
// Wert in einen String umwandeln
Ergebnis := R_STRNG( IN:= Wert);
// Stringlänge
Laenge := LEN( S:= Ergebnis);
// Der String sieht jetzt ungefähr so aus :
// -1.234567e-001
// Und ich möchte den String scannen um heraus zu finden ob ein Minus vorm Exponent steht
// Das erste Minus will ich ignorieren deswegen ab Position 2
FOR Lauf:= 2 TO Laenge DO
IF MID( IN:= Ergebnis, L:= 1, P:= Lauf) = ‘-‘ THEN
Ex_minus:= true;
Exit;
ELSE
Ex_minus:= false;
END_IF;
END_FOR;
// Auswertung der Variablen Ex_minus
End_Function_Block