-> Hier kostenlos registrieren
(Kategorie Perfektionismus)
Manchmal könnte ich am TIA-Compiler "verzweifeln". Für einne anspruchsvollen Kunden benötige ich möglichst warnungsfreien Code. Die zweite Zeile in dem untenstehenden Codefetzen bekomme ich jedoch nicht warnungsfrei, egal welche Umformatierung ich anwende. Eigentlich will ich nur die Nachkommastellen von 0-6 möglichst selbsterklärend errechnen und die hier nicht dargestellte Standardoperation multiplizieren, runden, dividieren ausführen.
Klar, der Baustein funzt auch mit dem Gekringel problemlos. Aber wie kann ich das schreiben, ohne dass gemoppert wird.
Die Meldung lautet: Das Vorzeichen oder die Genauigkeit des Werts können verloren gehen.
Manchmal könnte ich am TIA-Compiler "verzweifeln". Für einne anspruchsvollen Kunden benötige ich möglichst warnungsfreien Code. Die zweite Zeile in dem untenstehenden Codefetzen bekomme ich jedoch nicht warnungsfrei, egal welche Umformatierung ich anwende. Eigentlich will ich nur die Nachkommastellen von 0-6 möglichst selbsterklärend errechnen und die hier nicht dargestellte Standardoperation multiplizieren, runden, dividieren ausführen.
Klar, der Baustein funzt auch mit dem Gekringel problemlos. Aber wie kann ich das schreiben, ohne dass gemoppert wird.
Die Meldung lautet: Das Vorzeichen oder die Genauigkeit des Werts können verloren gehen.
Code:
FUNCTION "Kommastellen kürzen" : Real
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
Realzahl : Real;
Nachkommastellen : USInt;
END_VAR
VAR_TEMP
"Nachkommastellen limitiert" : USInt;
Faktor : UDInt;
END_VAR
BEGIN
#"Nachkommastellen limitiert":= LIMIT(MN:=USInt#0, IN:=#Nachkommastellen, MX:=USInt#6);
#Faktor := 10 ** #"Nachkommastellen limitiert";
END_FUNCTION