guwen
Level-2
- Beiträge
- 66
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo zusammen,
ich bin am verzweifeln.
Im Einsatz habe ich den Wago 750-849 und die CoDeSys 2.3.9.26.
Ich versuche die Windrichtung (0-360°) in einen String (Nord / Süd...) zu wandeln. Das funktioniert soweit mit meiner kleinen Funktion.
Merkwürdig ist, dass die IF Anweisung nur dann ausgeführt wird, wenn entweder i eine gerade Zahl (2, 4, 6,...) ist, oder demzufolge die Summe der Variablen Hop*i ein ganzzahliges Ergebnis liefern. Andernfalls wird die gesamte IF Anweisung scheinbar ignoriert.
Weiß jemand Rat?
Gruß und Danke
Guwen
Hier der Quellcode:
FUNCTION WindrichtungToString : STRING
VAR_INPUT
WindDirection: REAL; (* Windrichtung von 0 - 360° *)
END_VAR
VAR
WindValue : STRING; (*Zeigt den Wert der Windrichtung als String*)
i : INT; (* allg. Zähler *)
END_VAR
VAR CONSTANT
Hop : REAL := 22.5; (* ein Sprung um 22,5° *)
END_VAR
WindValue := REAL_TO_STRING(Winddirection);
FOR i := 0 TO 15 BY 1 DO
IF WindDirection > (Hop * INT_TO_REAL(i)) AND WindDirection <= (Hop * INT_TO_REAL(i + 1)) THEN
CASE i OF
0,15 : WindrichtungToString :='Nord (';
1,2 : WindrichtungToString := 'Nord-Ost (';
3,4 : WindrichtungToString := 'Ost (';
5,6 : WindrichtungToString := 'Süd-Ost (';
7,8 : WindrichtungToString := 'Süd (';
9,10 : WindrichtungToString := 'Süd-West (';
11,12 : WindrichtungToString := 'West (';
13,14 : WindrichtungToString := 'Nord-West (';
END_CASE;
END_IF;
i := i +1;
END_FOR;
WindrichtungToString := CONCAT(WindrichtungToString, WindValue);
WindrichtungToString := CONCAT(WindrichtungToString, '°)');
ich bin am verzweifeln.
Im Einsatz habe ich den Wago 750-849 und die CoDeSys 2.3.9.26.
Ich versuche die Windrichtung (0-360°) in einen String (Nord / Süd...) zu wandeln. Das funktioniert soweit mit meiner kleinen Funktion.
Merkwürdig ist, dass die IF Anweisung nur dann ausgeführt wird, wenn entweder i eine gerade Zahl (2, 4, 6,...) ist, oder demzufolge die Summe der Variablen Hop*i ein ganzzahliges Ergebnis liefern. Andernfalls wird die gesamte IF Anweisung scheinbar ignoriert.
Weiß jemand Rat?
Gruß und Danke
Guwen
Hier der Quellcode:
FUNCTION WindrichtungToString : STRING
VAR_INPUT
WindDirection: REAL; (* Windrichtung von 0 - 360° *)
END_VAR
VAR
WindValue : STRING; (*Zeigt den Wert der Windrichtung als String*)
i : INT; (* allg. Zähler *)
END_VAR
VAR CONSTANT
Hop : REAL := 22.5; (* ein Sprung um 22,5° *)
END_VAR
WindValue := REAL_TO_STRING(Winddirection);
FOR i := 0 TO 15 BY 1 DO
IF WindDirection > (Hop * INT_TO_REAL(i)) AND WindDirection <= (Hop * INT_TO_REAL(i + 1)) THEN
CASE i OF
0,15 : WindrichtungToString :='Nord (';
1,2 : WindrichtungToString := 'Nord-Ost (';
3,4 : WindrichtungToString := 'Ost (';
5,6 : WindrichtungToString := 'Süd-Ost (';
7,8 : WindrichtungToString := 'Süd (';
9,10 : WindrichtungToString := 'Süd-West (';
11,12 : WindrichtungToString := 'West (';
13,14 : WindrichtungToString := 'Nord-West (';
END_CASE;
END_IF;
i := i +1;
END_FOR;
WindrichtungToString := CONCAT(WindrichtungToString, WindValue);
WindrichtungToString := CONCAT(WindrichtungToString, '°)');