Zeitmessung im us bereich #Hilfe bei SysTimeGetUs()

CodeSysStarter

New member
Beiträge
4
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Moin Ich schlage mich seit einer Woche mit einem Problem rum.

Ich möchte eine Zeitmessung machen. Messe Systemzeit an Punkt A und an Punkt B. Die Differenz ergibt die Laufzeit.
Soweit so gut.

In meinem Programm habe Ich mit SysTimeGetMs() aus der SysTimeCore bereits eine Funktionierende aber nicht ausreichende Zeitmessung implementiert.
Jetzt möchte Ich SysTimeGetUs() verwenden und habe keine Idee wie ich mit dier funktion umgehen soll.
Im speziellen wie müssen die Pramameter übergeben werden. Welche Parameter müssen über geben werden?

Ich verwende Codesys 3.5 Patch 2 und alles soll erstmal auf dem Imulator laufen.

ICh bin für jede Hilfe Dankbar.

mfg CodeSysStarter
 

_Eddi_

Well-known member
Beiträge
168
Punkte Reaktionen
25
Also soweit ich Dokumentation dazu gefunden habe (Google ist da nicht besonders hiflreich): SysTimeGetUs bekommt als in/out-Parameter die Variable, in der die Zeit gespeichert werden soll, und gibt als Rückgabewert einen Fehlercode.
 
OP
C

CodeSysStarter

New member
Beiträge
4
Punkte Reaktionen
0
Ist den die messende Task schnell genug für die Genauigkeitsanforderung?

Also die zeitdifferenz ist im normalen durchlauf gleich 0 im debug moduss nicht. scheint also zu funktionieren. die übergabe Variable sind ihrgend wie auch pointer oder timer pointer das versteh ich gerade garnicht. Ein kleines Code Beispiel wäre sehr hilfreich
 
OP
C

CodeSysStarter

New member
Beiträge
4
Punkte Reaktionen
0
Ja also ich hatte das mal porbiert wie folgt:

VAR
t1: TIMER;
END_VAR

___________________________

fehler := SysTimeGetUs(ADR (t1));

dabei wirft der kompiler mir aber vor das Ich einen wert mit schreibzugriff über geben muss
 
W

weißnix_

Guest
Zuviel Werbung?
->Hier kostenlos registrieren
Du musst mal nachsehen, welche Datentypen die Funktion haben möchte.
Ichkenne die Funktion nicht, habe hier aber ein Beispiel mit deren Anwendung+ Variablendeklaration gefunden. Gemessen wird hier eine Codeausführungszeit.
 
Zuletzt bearbeitet:

HausSPSler

Well-known member
Beiträge
696
Punkte Reaktionen
201
Hi
so:

1. SysTime library im Bibliotheksmanager hinzu
2. Dekalration:

Code:
VAR
 dwTime: DWORD;
 st1, st2: SysTime;
 std: SysTimeDate;
 TimeStamp: SYSTIME;
 i: DINT;
 diValue1: DINT:=10000;
 diCounter: DINT;
 nState: INT;
END_VAR

Implementierung:

Code:
SysTimeGetUs(st1);
 
//code to measure
FOR i:=1 TO diValue1 DO
 diCounter:=diCounter+1;
END_FOR
 

SysTimeGetUs(st2);
dwTime := ANY_TO_DWORD(st2 - st1);

Grüße
 
OP
C

CodeSysStarter

New member
Beiträge
4
Punkte Reaktionen
0
Danke für die Unterstüzung,
@weißnix_ und @Edwin:

Danke für die grandiose Hilfe:
Der gebene Link war Super hilfreich und das Code Bsp noch viel mehr.
Ich hatte erwarteet das Codesys alle Projekt bekannten Datentypen farblich hervorhebt ,aber das war wohl mein Trugschluss.
Aufjedenfall läuft es jetzt.

Danke für die schnelle und kompetente Unterstüzung
 
Oben