====== Analogový inkrementální čítač ====== {{:cs:mervis-ide:35-help:b107.png}} ===== Název bloku ===== B107_ANALOGUEINCREMENTALCOUNTER ===== Volání v ST ===== PROGRAM B107 TEST VAR REAL1, REAL2: REAL; RESET: BOOL; FB: LIB.CORE.V1_0.B107_ANALOGUEINCREMENTALCOUNTER; END_VAR FB(IN:=REAL1, STEP:=1, OVERFL :=0, BSET:=RESET, OUT=>REAL2); END_PROGRAM ===== Knihovna ===== LIB\CORE ===== Verze ===== V1.0 ===== Popis ===== Blok slouží jako čítač pulsů, který je schopen eliminovat přetečení. Blok zvládá počítat vážený výstup. Využívá se při počítání pulzů od elektroměru. ===== Vstupy ===== |Vstup |Typ |Význam |Výchozí hodnota| |IN |REAL|Vstupní signál (obvykle analogový čítač s možností přetečení) |0 | |BSET |BOOL|Náběžnou hranou nastaví do počátečního stavu x0=x, add=0 a y začne na 0 |False | |STEP |REAL|Obvyklý krok vstupu x (obvykle step=1 pro x=1,2,3,...) |1 | |OVERFL|REAL|Přetečení rozsahu (když x=0,...,65535 pak overfl=65536, když overfl <= 0, pak se vstup přetečením nastaví automaticky)|0 | |K |REAL|Koeficient |1 | |KY0 |REAL|Přídavná konstanta výstupu Ky (Ky=K*y+Ky0) |0 | ===== Výstupy ===== |Výstup |Typ |Význam | |OUT |REAL|Výstupní signál (trvale inkrementovaný čítač bez horní hranice) | |KY |REAL|Vážený výstup //Ky=K*y+Ky0// | |ADD |REAL|Přidaná hodnota k výstupu //y// zamezující přetečení (//y=x+add-x0//). To je zvýšení při zadání přetečení.| |X0 |REAL|Počáteční hodnota vstupu (když je náběžná hrana od bset, tak //x0=x//) | |BOVERFL|BOOL|Puls 1 s signalizuje přetečení vstupu //x// | |NOVERFL|INT |Počet vstupních přetečení (od posledního resetu bset) | |XLAST |REAL|Hodnota vstupu //x// v předchozím Fupla kroku (interně užitečné pro automatické nastavení přetečení) | ===== Funkce ===== Blok implementuje čítač pulsů, který je schopen eliminovat přetečení. Dejme tomu, že vstup //x// se zvyšuje takto: ////0,1,2,3,...,65534,65535,0,1,2,...// -// pak je výstup //y// ////0,1,2,3,...,65534,65535,65536,65537,65538,...//.atd.// Blok také obsahuje vážený výstup //Ky=K*y+Ky0//, kde //K// a //Ky0// jsou libovolně nastavitelné parametry. Například pokud jeden impuls znamená //0.2 kWh// na připojeném elektroměru, pokud jste nastavili //K=0.2//, //Ky0=3000// pak hodnota //Ky// měří energii v //kWh// a začíná na hodnotě //3000 kWh//.\\ \\ Parametr //step//, který je přírůstkem vstupu: Když se vstup //x// zvýší o jeden (tj. vstup vypadá takto //1,2,3,4,...//) pak //step=1//. Když se vstup //x// zvýší o desetinu (např. //0.1//, tj. vstup je //0.1,0.2,0.3,0.4,...//) pak //step=0.1// atd. Tento parametr definuje hodnotu prahu – když vstup //x// poklesne vice než o //5*step//, pak se předpokládá, že došlo k přetečení. Mohou nastat dva scénáře: * //overfl=0// – přetečení se nastaví automaticky podle aktuální a poslední hodnoty vstupu //x// (výstup //xlast//). Implicitní nastavení. * //overfl>0// (doporučeno) – hodnota se nastaví podle přetečení od připojeného zařízení (když //x=0,...,65535// pak //overfl=65536//). Velkou výhodou je, že blok je schopen zvládnout přetečení, i když je Fupla na chvíli vypnutá (např. výpadek napájení) a stále dává správnou hodnotu výstupu //y//, viz obrázek 3 níže. Výstupní hodnota //y// může být resetována vstupem //bset// – když přijde náběžná hrana, pak //y=0//. Není možné nastavit výstupní hodnotu //y// na jinou hodnotu. Když potřebujete přesunout jinou hodnotu, použijte výstup //Ky// místo výstupu //y// a přesuňte ji parametrem //Ky0//.\\ \\ Když dojde k přetečení, logický výstup //boverfl// bude //true// na jednu sekundu a výstup //noverfl// (počet přetečení) se zvýší o jednu. Když je blok resetován vstupem //bset//, pak //noverfl// je nastaven na nulu.\\ \\ Existuje více výstupů s doplňujícími informacemi: //x0//, //bset// a //bset//, viz výše uvedená tabulka s popisem.\\ \\ ===== Poznámka ===== Důrazně doporučujeme nastavit parametr //overfl// podle přetečení zařízení připojeného ke vstupu //x//, například //overfl=65536//. Blok je pak schopen zvládnout přetečení, i když je FUPLA na chvíli vypnuta (například při výpadku napájení), a stále dává správnou hodnotu výstupu //y//, viz obrázek 3. ===== Funkce v případě špatného nastavení ===== Když //overfl<0//, pak se předpokládá, že //overfl=0//.\\ {{:cs:mervis-ide:35-help:b107_1.png}} B107 Analogový inkrementální čítač. {{:cs:mervis-ide:35-help:b107_2.png}} B107 Analogový inkrementální čítač – když //overfl =0//. Blok poskytuje nepravdivou hodnotu, když je FUPLA vypnuta. {{:cs:mervis-ide:35-help:b107_3.png}} B107 Analogový inkrementální čítač – když //overfl > 0//. Blok obsahuje správnou hodnotu, když je FUPLA vypnuta. ===== Příklad použití ===== {{:cs:mervis-ide:35-help:b107_example.png}} Funkce čítá vstupní hodnotu //real1//, při nastavení //step//=1, //overfl//=1. Nulování čítače se provádí náběžnou hranou proměnné //reset//.