Diskuse Elektrika.cz

HYBRIDNÍ zóna => Technická podpora výrobce TECO Kolín radí odborníkům => Téma založeno: Erhard Mareček 20.07.2012, 12:24



Název: Foxtrot - jak zjistit čas jednotlivých programů, popřípadě procesů?
Přispěvatel: Erhard Mareček 20.07.2012, 12:24
Zjistit celkovou dobu smyčky ve Foxtrotu je snadné. Jak ale zjistit kolik času si vezmou jednotlivé programy, případně procesy?


Název: Re: Foxtrot - jak zjistit čas jednotlivých programů, popřípadě procesů?
Přispěvatel: Petr Liskar 20.07.2012, 23:05
Zkuste použít funkci GetRTC na začátku a na konci měřeného úseku.


Název: Re: Foxtrot - jak zjistit čas jednotlivých programů, popřípadě procesů?
Přispěvatel: Milan Bydžovský 21.07.2012, 13:37
Č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 (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