Zeit messen

Thorsten16

Level-1
Beiträge
9
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Ich möchte gerne bei meiner Programmsimulation die benötigte Zeit messen. Dabei würde ich einfach die Systemzeit vor und nach dem Programmablauf aufnehmen und dann voneinander subtrahieren, oder mit einer anderen Funktion irgendwie die Zeit messen.
Dazu habe ich auch schon einige Beitrage gefunden, jedoch immer unter Benutzung von fremden Bibliotheken wie zb. der von Oscat, bei deren Einbindung in mein Codesys (3.5.5.0) ich aber immer scheitere.
Nun habe ich einige schon implementierte Funktionen gefunden, wie z.B. SysTimeGetMs, SysTimeRtcGet oder SysRtcGetTime.
Diese habe ich unter "Bibliotheksverwalter -> Bibliothek hinzufügen" auch hoffentlich richtig implementiert, jedoch wirft mir Codesys beim Programmstart immer einen Fehler aus.
Der Rückgabetyp dieser Funktionen ist mal UINT, DATE_AND_TIME oder auch mal DWORD, je nachdem was in der Beschreibung im Bibliotheksverwalter steht, jedoch bekomme ich jedes mal beim Zuweisen der Funktion zu meiner Variablen des eigentlich richtigen Types eine Fehlermeldung wie z.B. diese: Typ 'SYSRTCGETTIME(sysrtc23, 3.4.0.0 (system))' kann nicht in Typ 'DATE_AND_TIME' konvertiert werden".
Ich würde mich freuen, wenn mir jemand bei meinem Problem helfen könnte.
Vielen Dank im Voraus.
Mit freundlichen Grüßen
Thorsten
 
Hi,

ich hab momentan kein Codesys zur Hand jedoch sollte folgendes Funktionieren:

Code:
dwOldSysTime := SysTimeGetMs(); // Merken der Systemzeit in Millisekunden, ich gehe davon aus es ist ein DWORD, daher muss dwOldSysTime ein DWORD sein

// Hier könnte Code Stehen der gemessen werden soll....


dwTimediff := SysTimeGetMs() - dwOldSysTime;  // Berechnung der Zeitdifferenz in Millisekunden



Versuch es mal damit, bzw. mit ähnlichem Code. Falls das nicht geht, meldest dich einfach nochmal mit möglichen Fehlern, da ich es wie gesagt nicht testen konnte.


Gruß Stefan
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Gordrin,
Die Funktion funktioniert wunderbar. Als ich diese Funktion ausprobiert habe, habe ich immer eine Zeitdifferenz von 0ms herausbekommen, weil das Programm wohl einfach so schnell abläuft.Wenn ich jedoch einen Haltepunkt aktiviere und kurz warte, bekomme ich eine Zeitdifferenz > 0 angezeigt.
Vielen Dank für deine Hilfe.
Gruß Thorsten
 
Hi,
ich würde die beiden Zeilen umgekehrt und direkt nacheinander schreiben, also erst die Berechnung und dann die Zeit für den nächsten Zyklus speichern. Das hat den Vorteil, dass du auch die Zeit für Systemfunktionen (Lesen der Eingänge, Schreiben der Ausgänge) mit erfasst.
Gruß
Holger
 
Zurück
Oben