====== Čítač (Counter) ======
{{ :files:img_warning-line_b.png?nolink |}}
{{:en:hw:08_safety-instructions_pseudo-ISO-7010-info.png?nolink |(i)}}
Tato funkce je dostupná pouze na následujících vstupech a výstupech:
* **Digitální vstupy**
===== Jak to funguje =====
Čítač (Counter) je vysokorychlostní počítadlo náběžných hran signálů, které je nezávislé na řídicím softwaru. Jednoduše řečeno, čítač dokáže sčítat velmi přesně i velmi krátké pulzy.
Čítačové vstupy jsou vhodné zejména pro odečet údajů z elektroměrů, vodoměrů, plynoměrů a dalších pulzních měřičů tvořících součást systémů MaR, VZT, atd. Rovněž naleznou využití i při odečtu otáček motorů. Pro tyto účely v jednotkách naleznete registry o celkové velikosti 32 bitů. Při překročení maximální hodnoty (4 294 967 295) se čítač automaticky vynuluje. Čítačové vstupy lze použít až do frekvence 10 kHz. V knihovních zařízeních Mervis IDE jsou označeny jako vstupy ''CNT''.
Tyto ''CNT'' proměnné jsou typu read-only, tedy pouze pro čtení. Pokud potřebujete hodnotu čítače nastavit je nutné použít přidruženou ''CNT_set'' proměnnou.
==== Rozdíl mezi HW a SW čítačem ====
Programy vytvářené v Mervis IDE nejsou dostatečně rychlé pro detekci rychlých změn digitálních vstupů (např. pomocí funkčního bloku "Pulse Counter (BD30). Pokud například vlastníte autodráhu a chcete počítat průjezdy autíček cílovou čárou, samotný Mervis IDE nebude schopný je detekovat - při rychlosti až 80 km/h a délce autíčka cca 10 cm trvá průjezd přes senzor sotva 4,5 ms.
/* */
Pro demonstrační účely je zde ukázáno počítadlo v SW. NA obrázku níže je zobrazen režim ladění se zkušebním programem.
{{ .:counter:counter_00-counter-hw-vs-sw-demo.png?direct |}}
Jak můžete vidět, program detekuje náběžné hrany na vstupu ''Patron_S167_DI_1.01'' pomocí bloku ''Pulse counter (BD30)'', a zároveň na stejném vstupu pulzy počítá pomocí hardwarového čítače. Pokud mají čítače stejnou hodnotu, na kontroléru se rozsvítí dioda ''X2''. Pokud čítače nejsou shodné, dioda bude zhasnuta.
V okamžiku spuštění ladění jsou oba čítače na hodnotě 0. Ke vstupu ''DI1.1'' připojíme kontaktní spínač a začneme jej co nejrychleji spínat a rozepínat. Jak vidíte, softwarový čítač zachytil pouze 76 pulzů, zatímco hardwarový celých 81. Změna se zdá být malá, ale v praktických aplikacích jako čtení otáček motoru může SW čítač zahltit snadněji.
===== Způsob použití vstupního čítače =====
{{ :files:img_warning-line_b.png?nolink |}}
{{ :en:hw:08_safety-instructions_pseudo-ISO-7010-info.png?nolink |(i)}}
**Poznámka:** \\
HW čítač závisí na nastavení funkce [[.:description-of-debounce-hidden|debounce]]. To znamená, že **Debounce** musí být nastaven na nižší hodnotu než je očekávaná délka sledovaných pulzů.
Každý **digitální vstup** je vybaven čítačem, který lze použít bez předchozího nastavování. Čítač je dostupný pod globální proměnnou. //Příklad: Pro vstup nazvaný ''Patron_S167_DI_1.01'' je přidružený čítač pojmenovaný jako ''Patron_S167_CNT_1.01''.//
==== Změna hodnoty čítače ====
Proměnné vstupních čítačů jsou pouze pro čtení, nelze je proto nastavovat či resetovat přímo v programu či skrze prohlížeč proměnných v módu ladění. Tyto proměnné se nastavují pomocí proměnné "set"; u čítače ''Patron_S167_CNT_1.01'' má tato proměnná název ''Patron_S167_CNT_1.01_set''. //Příklad: změnou hodnoty v proměnné ''Patron_S167_CNT_1.01_set'' na hodnotu 23 se změní hodnota v ''Patron_S167_CNT_1.01'' na 23.//
=== Resetování čítače ===
Pro resetování čítače na původní hodnotu je nutné použít výše zmíněnou "set" proměnnou. Pro změnu musíte "set" proměnnou nastavit na jinou hodnotu než je Vaše požadovaná počáteční hodnota a následně na požadovanou výchozí hodnotu. Tento postup bude fungovat při změnách proměnných v režimu ladění, ale pokud chcete resetovat čítače programově, tak by se měla použít lepší metoda popsána níže
Pro práci s proměnnými použitými v tomto odstavci je nutné mít v [[cs:sw:01-mervis:autogen-hidden|nastavení autogenu]] zaškrtnuté pole "Včetně atributů". Tato metoda také používá proměnnou "set", ale pouze pro čtení požadované hodnoty. Nejdříve musíme mít nastavenou hodnotu proměnné "set" na požadovanou výchozí hodnotu čítače, následně pošleme náběžnou hranu do proměnné ForceComm, v našem případě má název ''Patron_S167_NCnt1.01_wr_woch_forcecomm''. Po chvíli by se hodnota z proměnné ''Patron_S167_CNT_1.01_set'' měla objevit v proměnné čítače
''Patron_S167_CNT_1.01''.
{{ :files:img_warning-line_b.png?nolink |}}
{{ :en:hw:08_safety-instructions_pseudo-ISO-7010-info.png?nolink |(!)}}
**Poznámka:** \\
Jednoduše řečeno, ForceComm proměnná zkopíruje hodnotu proměnné "set" do Čítače.