LTIME Division

Gerrion

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag,

ich arbeite an einem Programm in welchem ich zwei LTIME Variablen dividieren möchte.

Leider klappt das ganz nicht wirklich gut, da ich bei der Umwandlung der Datentypen immer einen Fehler rein bekomme.
Momentan rechne ich beide LTIME Variablen durch die LTIME_TO_ULINT Funktion um, um diese dann miteinander zu dividieren.
Die Leute, welche sich auskennen werden vermutlich sofort wissen, dass die Umrechnung so nicht funktionieren kann, denn ich bekomme fehlerhafte Werte nach der Verrechnung.

Gibt es eine bessere Lösung, vielleicht sogar direkt einen Baustein für mein Problem?
Im Endeffekt soll die mittlere Zykluszeit über 20s errechnet werden.

Vielen Dank im Voraus.
 
Es einfachste wäre du zählst die Zylen hoch und startest einen timer und alle 20 Sekunden berechnet du die durchschnittliche Zykluszeit. Also dann musst nur 20000/Zyklen rechnen.
Also einen 20 sekunden impuls der wo deinen Zähler Rücksetzt und die berechnung startet. Vorsicht das hierbei können kleine Unterschiede bezüglich genaugigkeit. Kommt halt drauf an wie genau du es haben willst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Im Endeffekt soll die mittlere Zykluszeit über 20s errechnet werden.
Ich verstehe nicht, warum man durch eine Zeit dividieren muss, um einen Mittelwert zu berechnen.
Normalerweise bildet man die Summe von n Werten (z.B. Zeitwerten) und dividiert sie durch die (ganzzahlige) Anzahl n der Werte.
 
Das stimmt, ich habe mich leider vertan, als ich das Problem zusammenfassen wollte.

Ich möchte die Anzahl der Zyklen durch die gesammelte Zeit teilen.
Ich denke, dass ich mit den Wertebereichen der Integer nicht hinkomme.
Im Moment Teile ich ungefähr 60 Zyklen durch 10s590ms.
 
D.h., Du dividierst tatsächlich die Anzahl der Werte durch die Summe der Werte? Berechnest also den Kehrwert des Mittelwertes?
Wenn der Divisor (wesentlich) grösser ist als der Dividend, kann eigentlich immer nur 0 dabei herauskommen.

Beschreib bitte mal etwas ausführlicher, was genau Du warum so machst.
 
Okay, also ich zähle ein mal die Zyklen hoch (Variable A)
Dann zähle ich die Zykluszeit (B) und addiere diese mit jedem Zyklus immer weiter auf um eine Gesamtzeit (C) zu erhalten.

Jetzt möchte ich ich Grunde nur A/C Rechnen.

A ist ein INT und C TIME.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Im Moment Teile ich ungefähr 60 Zyklen durch 10s590ms.
Da soll dann etwa 0.009 Zyklen/ms oder 9 Zyklen/s rauskommen? Da brauchst Du Nachkommastellen. Du musst über LREAL oder REAL rechnen. Und/oder erst mit 1000 multiplizieren.

Harald
 
Falls sich Dein Problem in Luft aufgelöst haben sollte, freue ( 🤣 ) ich mich gerne mit Dir.
Auch für andere, die irgendwann mal über diesen Thread stolpern, wäre es schön, wenn Du kurz berichten könntest, ob bzw. wie Du das Problem lösen oder vielleicht umgehen konntest!
Vielsten Dank im Vorhinein!
Gruss, Heinileini
 
Zurück
Oben