Diskuse2 Elektrika.cz

HYBRIDNÍ zóna => TECO - Foxtrot chytré instalace. ODBORNÍCI radí spotřebitelům! => Firemní podpora => Technická podpora výrobce TECO Kolín radí odborníkům => Topic started by: Erhard Mareček on 20.07.2012, 12:24

Title: Foxtrot - jak zjistit čas jednotlivých programů, popřípadě procesů?
Post by: Erhard Mareček on 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?
Title: Re: Foxtrot - jak zjistit čas jednotlivých programů, popřípadě procesů?
Post by: Petr Liskar on 20.07.2012, 23:05
Zkuste použít funkci GetRTC na začátku a na konci měřeného úseku.
Title: Re: Foxtrot - jak zjistit čas jednotlivých programů, popřípadě procesů?
Post by: Milan Bydžovský on 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