Obsah

Chytrý průměr

Název bloku

B48_SMART_AVERAGE

Volání v ST

PROGRAM B48_TEST
VAR 
   IN1, IN2, IN3:REAL;
 FB: LIB.CORE.V1_0.B48_SMART_AVERAGE;
END_VAR
 
 FB(IN[1]:=IN1, IN[2]:= IN2);
    O1:= FB.OUT;
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.1

Popis

Tento blok je rozšířením bloku AVG. Blok AVG počítá obyčejný aritmetický průměr, který může způsobit problémy v reálných aplikacích. Ukažme si následující příklad: Mějme několik teploměrů (3,4,…), připojených k bloku AVG, který nám vypočítá průměrnou teplotu. Pokud se kterýkoli z teploměrů rozbije a poskytuje špatnou hodnotu (např. 10000), pak je průměrná teplota nepoužitelná, i když je počet funkčních teploměrů vysoký.

Oproti tomu blok B48 nejprve vypočítá pravděpodobnou průměrnou hodnotu vynecháním všech nerelevantních hodnot. To je dosaženo pomocí mediánu všech vstupních hodnot. Označme tento pravděpodobný průměr jako M. Všechny vstupní hodnoty X, které jsou blíže M do vzdálenosti tol jsou použity pro výpočet průměru, tj. OUT je roven aritmetickému průměru z těchto hodnot. Všechny ostatní hodnoty se neberou v úvahu.

Výstup BS určuje znaménko výstupu OUT. Když OUT>= 0 BS=TRUE, jinak BS=FALSE. Výstup BSN je negací výstupu BS.

Když je počet připojených zařízení roven třem, pak je blok schopen zvládnout jednu špatnou hodnotu. Když je počet připojených zařízení roven pěti, pak je blok schopen zvládnout dvě neplatné hodnoty. Obecně pokud je připojených n zařízení, kde n je libovolné číslo, pak je blok schopen zvládnout n-1/2×n špatných hodnot.

Vstupní signály je třeba povolit v proměnné INENABLED (například inenabled[1]:=true; pro vstup IN1).

Vstupy

Vstup Typ Význam Výchozí hodnota
IN MULTIIOREALVstupní hodnota[0,0,…,0]
INENABLEDMULTIIOBOOLPovolení vstupu[False,…,False]
IN1 REAL Vstupní hodnota
IN2 REAL Vstupní hodnota
TOL REAL Tolerance 2

Výstupy

VýstupTyp Význam
OUT REALVýstupní signál
VAL INT Počet vstupů použitých při výpočtu výstupního signálu
INVAL INT Počet vynechaných vstupů
BS BOOLZnaménko výstupního signálu
BSN BOOLNegace bs

Příklad použití


U hodnoty real3 došlo k utržení čidla, které pak ukazuje rozpojený kabel a falešnou teplotu 200 °C. Průměrná teplota v místnosti se bere pouze z čidel real1 a real2.