====== Čítač s hlídáním přetečení ====== {{:cs:mervis-ide:35-help:incrementalcounter.png}} ==== Celé jméno ==== Lib.Mervis.v1_0.IncrementalCounter ==== Potřebné reference projektu ==== * Lib.Mervis ===== Popis ===== Pomocný blok sloužící pro ošetření čítačových vstupů, u kterých hrozí riziko přetečení. ===== Použití v ST ===== program test var inp: lib.mervis.v1_0.IncrementalCounter; end_var inp(); end_program ===== Vstupy ===== |Jméno|Datový typ|Retain|Nutno připojit |Význam| |In |udint|Ne |Ano |Vstupní hodnota čítače | | |Set |bool |Ne |Ne |Vynulování čítače | | |Overflow |udint|Ne |Ne |Maximální hodnota vstupního čítače pro zpracování přetečení (pokud je =0 nevyužívá se)| | |Step |udint|Ne |Ne | | | |PulseWeight|real |Ne |Ne |Váha pulsu, použito na přepočet hodnoty čítače na fyzikální hodnotu | | |Offset |real |Ne |Ne |Offset počtu pulsů, použito na přepočet hodnoty čítače na fyzikální hodnotu | | ===== Výstupy ===== |Jméno|Datový typ |Význam| |Out |udint|Výstup | | |Weighted |real |Výstup přepočtený pomocí PulseWeight a Offset na fyzikální hodnotu| | |OverflowFlag |bool |Příznak přetečení | | |OverflowCount|udint|Počet přetečení čítače | | ===== Podrobný popis funkce ===== Blok se používá pro ošetření hodnoty z čítače, který často přetéka. Blok uvnitřn obsahuje 32bitový čítač, který vždy inkrementuje o daný počet příchozích pulsů (rozdíl oproti minulému výpočetnímu cyklu). Pokud je tento rozdíl záporný, bere se toto jako přetečení a chování závisí od hodnoty parametru //Overflow//: * Overflow = 0 -> změna se ignoruje a stav vnitřního čítače se nemění. * Overflow > 0 -> čítač přetekl, k vnitřnímu stavu se přičte rozdíl //Overflow// - //Předposlední vstupní hodnota// a také //současný stavu čítače// Výstup //Weighted// se počítá jako lineární transformace vnitřní stavu čítače, tedy //Weighted = PulseWight * Out + Offset//