• Welcome to Diskuse2 Elektrika.cz. Please login or sign up.
 

Foxtrot - jak zjistit čas jednotlivých programů, popřípadě procesů?

Started by Erhard Mareček, 20.07.2012, 12:24

previous topic - next topic

Erhard Mareček

Zjistit celkovou dobu smyčky ve Foxtrotu je snadné. Jak ale zjistit kolik času si vezmou jednotlivé programy, případně procesy?

Petr Liskar

Zkuste použít funkci GetRTC na začátku a na konci měřeného úseku.

Milan Bydžovský

Čas s přesností na stovky microsekund lze získa pomocí systémové instrukce.
Vytvořil jsem knihovnu SysTimerLib, kterou si můžete stáhnout zde: http://sdrv.ms/QjXxgC
Knihovna obsahuje jedinou funkci get100us, která vrací hodnotu čítače.

Použití může vypadat následovně:

PROGRAM prgMain
  VAR
    start    : UDINT; //pocatecni stav citace
    duration : UDINT; //doba trvani ve stovkach microsekund
    i        : UINT;
  END_VAR

  start := get100us();
  //zacatek mereneho useku
  FOR i := 0 TO 1000 DO
    i := i;
  END_FOR;
  //konec mereneho useku
  duration := get100us() - start;
 
END_PROGRAM