exponentielle Zahlen verursachen Fehler

Stromtier

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe folgendes Problem:

nach einen Fu_Linear_2punkt FB bekomme ich eine exponentielle Zahl (real, z.B. 9,15553e-004). Bei der weiteren Verwendung dieses Wertes kommt es zu Problemen. Z.B. bei der ROUND Funktion (Oscat), aber auch z.B. bei der MIN Funktion. Der Wert, der danach angezeit wird wird auch exponentiell dargestellt, obwohl auf eine Kommastalle gerundet werden sollte. Mit "normalen" Real- Zahlen kommt die Funktion aber klar. Ich habe nicht viel Ahnung davon, sieht mir aber nach einem Überlauf aus.
Gibt es dafür eine Lösung und wenn ja: wie sieht diese aus?

danke für die Hilfe,

Andreas
 
Worüber lässt du dir die Werte denn anzeigen?
Denn die Darstellungsart von Gleitkommazahlen ist rein eine Sache des Anzeigeprogramms, ob z.B. der Wert Eins als "1", "1,0", "1,000" oder als "1,0e+0" angezeigt wird.
Die Binärdarstellung (in deinem Fall in der SPS) ist in allen Fällen die gleiche.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Thomas,

die Werte sehe im im onlinemodus (Codesys). Aufgefallen ist es aber bei der Webvisu, weil die ROUND Funktion nicht das tat was sie sollte. Der Wert wurde mit wesentlich mehr Kommastellen angezeigt. Auch die Webvisu schein ein Problem damit zu haben, da ich dort als Format z.b. %2.1f angegeben hatte. Eine MIN Funktion hat z.B. folgende Eingangswerte: 10000 und 9,15553e-004. Der Ausgangswert war aber eine 6 stellige Zahl (sowas wie 348721). Irgendwo ist da der Wurm drin.
Wenn ich morgen wieder an der Anlage bin mache ich mal einen Screenshot.


Andreas
 
Hallo,

ich bin der Sache noch ein mal nachgegangen und hab noch folgendes entdeckt:
Das Problem besteht nur bei Funktionsblöcken die ich selber angelegt habe und dann mehrfach verwende. Ich muss das mal Laie beschreiben:
ich habe einen Baustein zur Konvertierung und Überwachung von Analogeingängen angelegt (Name: AE_Konvertierung_WORD) diesen habe ich dann in den folgenden Programmen mehrfach verwendet und folgend deklariert:

VAR
AE_Konv_Aussentemp: AE_Konvertierung_WORD;
AE_Konv_Drucktransmitter_Druckluftanlage: AE_Konvertierung_WORD;
AE_Konv_Durchflusssensor_Druckluft: AE_Konvertierung_WORD;
AE_Konv_Differenzdrucktransmitter_Umgebung_TO: AE_Konvertierung_WORD;
AE_Konv_Stellung_Zuluftklappe_TO_ist: AE_Konvertierung_WORD;
usw....

Nun sollte der entsprechende FB doch auch je Instanz einzeln behandelt werden (wie ein Bibliotheksbaustein), oder habe ich da noch einen Fehler?
Scrrenshot des mehrfach verwendeten FB`s:
FB_mehrfachaufruf_1.jpg
FB_mehrfachaufruf_2.jpg




Meine Art dies so zu lösen entspricht sicherlich nicht der eines Profis, aber ich komme (in den meissten Fällen ;) ) am besten damit klar.

Andreas
 
Zurück
Oben