Profiler

Profiler 1:

Diese Funktionalität ist in der SPS unter Windows CE nicht verfügbar!

Profiler 2:

Mit dem Funktionsbaustein "Profiler" können Messungen der Ausführungszeit vom SPS-Code durchgeführt werden. Intern wird eine Instanz des GETCPUACCOUNT-Funktionsbausteines aufgerufen. Über eine steigende Flanke an dem START-Eingang wird der Messvorgang gestartet und bei einer fallenden Flanke gestoppt. Die Messungen werden intern ausgewertet und stehen am DATA-Ausgang in einer Struktur vom Typ PROFILERSTRUCT für weitere Verarbeitung zur Verfügung. Neben der aktuellen, minimalen und maximalen Ausführungszeit wird von dem Funktionsbaustein die mittlere Ausführungszeit der letzten 10 Messungen berechnet. Die Anzahl der gemittelten Messwerte kann über die globale Variable MAX_AVERAGE_MEASURES auf 2 bis 100 Messwerte konfiguriert werden. Die gemessenen Zeiten werden in Mikrosekunden ausgegeben. Die Ausgangsvariable DATA.MasureCycle gibt Auskunft über die gesamte Anzahl der bereits durchgeführten Messungen. Um die Ausführungszeit von einem bestimmten Programmabschnitt der SPS zu messen, muss der Messvorgang über eine steigende START-Flanke am Anfang des zu messenden Programmabschnitts gestartet und am Ende über eine fallende START-Flanke gestoppt werden. Alle Werte am DATA-Ausgang können zurückgesetzt werden wenn gleichzeitig mit der steigenden Flanke am START auch eine steigende Flanke am RESET-Eingang erzeugt wird. Die alten Messwerte werden so zu Beginn einer neuen Messung zurückgesetzt und aus den folgenden Aufrufen des Funktionsbausteins neu berechnet.

Bemerkung:

Die ermittelten Zeiten können von den tatsächlichen Werten abweichen, da bereits für die Aufrufe des GETCPUACCOUNT-Funktionsbausteins einige Zeit benötigt wird. Diese Zeit ist rechnerabhängig und ist in den ermittelten Zeiten enthalten.

VAR_INPUT

VAR_INPUT
    START  : BOOL;
    RESET  : BOOL;
END_VAR

START: Über eine positive Flanke an diesem Eingang wird die Messung der Ausführungszeit gestartet. Über eine negative Flanke an diesem Eingang wird die Messung gestoppt und die aktuelle, minimale, maximale und mittlere Ausführungszeit neu berechnet. Die Variable DATA.MeasureCycle wird dabei inkrementiert.

RESET: Wenn gleichzeitig mit einer steigenden Flanke am START-Eingang auch eine steigende Flanke an diesem Eingang erzeugt wurde dann werden alle Variablen am DATA-Ausgang zurückgesetzt. Die alten Werte für die aktuelle, minimale, maximale und mittlere Ausführungszeit werden dabei zurückgesetzt und für die nächsten Messungen neu berechnet.

VAR_OUTPUT

VAR_OUTPUT
    BUSY  : BOOL;
    DATA  : PROFILERSTRUCT;
END_VAR

BUSY: Beim Starten des Messvorgangs wird dieser Ausgang gesetzt und bleibt gesetzt, bis die Zeitmessung abgeschlossen wurde. Nachdem der BUSY-Ausgang zurückgesetzt wurde, stehen die aktuellen Zeiten am DATA-Ausgang zur Verfügung.

DATA: Struktur vom Typ PROFILERSTRUCT mit den gemessenen Zeiten in [µs].

Beispiel 1:

PROGRAM ProfilerTest_ST
VAR
   Profiler1     : PROFILER;
   ProfilerData  : PROFILERSTRUCT;
   a             : LREAL;
END_VAR

Online Ansicht der gemessenen Zeiten:

Profiler 3:

Beispiel 2:

PROGRAM ProfilerTest_FUP
VAR
   Profiler2      :PROFILER;
   Profiler2_Busy :BOOL;
   Profiler2_Data :PROFILERSTRUCT;
   b              :LREAL;
END_VAR

Online Ansicht der gemessenen Zeiten:

Profiler 4:

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken (Kategoriegruppe)

TwinCAT v3.1.0

PC oder CX (x86, x64)

Tc2_Utilities (System)