Vytvoření knihovny

Vytvoření knihovny je podobné vytváření nového projektu. Klikneme pravým tlačítkem myši na "Projekty knihovny", dále na "Vložit nový projekt knihovny".

Nastavíme umístění knihovny. Nejlepší je uložit si knihovnu do adresáře s projektem.

Knihovní funkce a programy vkládáme stejně jako u projektů.

V projektu si přidáme referenci. Klikneme pravým tlačítkem myši na "Reference" a na "Přidat referenci".

V záložce Projekty vybereme naši knihovnu a potvrdíme.

Nyní již můžeme knihovní funkce používat v našem projektu.


Použití vlastní (uživatelské) knihovny

Vytvoříme si vlastní knihovnu, po kompilaci se knihovna uloží do adresáře s projektem.

Jednou možností, jak v jiném projektu použít již vytvořenou knihovnu, je překopírování souboru s koncovkou ".slb"....

...do složky Library, která je ve složce, kam jste nainstalovali Merbon, (např. C:\Program Files\Merbon\IDE 2.4.0.11 (102168).

V jiném projektu si přidáme referenci.

V záložce Standardní knihovny vybereme naši knihovnu a potvrdíme.

Po přidání reference již můžeme knihovnu používat.

Druhou možností je vložit do soustavy celou knihovnu. Tímto způsobem si budeme moci knihovnu upravovat. Překopírujeme si adresář s knihovnou do adresáře s projektem.

V projektu zkusebni přidáme nový projekt knihovny.

Po vytvoření projektu knihovny vložíme existující knihovnu.

V průzkumníku vybereme soubor zdrojového kódu naší knihovny.

Po přidání reference již můžeme knihovnu používat.


Knihovní prototypy

Od externí verze 2.4.0.x nejsou ve vytvořených knihovnách viditelné proměnné en a eno.
NAMESPACE Lib NAMESPACE Core NAMESPACE V1_0

TYPE
    CoreIOPinSettings : STRUCT
        Visible : BOOL;
    END_STRUCT;

    MultiIoReal : ARRAY[1..16] OF REAL;
    MultiIoInt  : ARRAY[1..16] OF INT;
    MultiIoLint : ARRAY[1..16] OF LINT;
    MultiIoBool : ARRAY[1..16] OF BOOL;
    MultiIoBool8 : ARRAY[1..8] OF BOOL;

    ShortIoBool : ARRAY[0..7] OF BOOL;
    LargeIoBool : ARRAY[0..63] OF BOOL;

    ControllerType : (Heating, Cooling);
    Bit32 : SINT(1..32);
END_TYPE

VAR_GLOBAL
    MultiIoCount : SINT := 16;

    FIRST_IO_INDEX : INT := 1;
    LAST_IO_INDEX  : INT := 16;

    EPSILON        : REAL := 0.000001;
    C_Pi           : REAL := 3.141592;
    C_E            : REAL := 2.718281;
END_VAR

END_NAMESPACE END_NAMESPACE END_NAMESPACE

Datové typy

IO.COMMHANDLE - je datový typ, který používají funkce pro komunikaci po tcp, udp a seriové lince.


Složení bitů

Název funkce

BD18_BIT_COMPOSITION

Volání v ST

PROGRAM BD18_8B_TEST

VAR

    IN1: ARRAY [0 .. 63] OF BOOL;

    O1: LINT;

END_VAR

    O1:= LIB.Core.V1_0.BD18_BIT_COMPOSITION(IN := IN1);

END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Funkce provádí složení více bitů do jedné celočíselné hodnoty.

Vstupy

Vstup | Typ | Význam
ENABLED | BOOL | Povolení provozu
IN | ARRAY [0 .. 63] OF BOOL | Pole vstupních hodnot
BS | BOOL | Znaménko výstupu out; když OUT<0 pak BS=FALSE
IN0 | BOOL | První vstup (jednoduchý typ)
IN1 | BOOL | Druhý vstup (jednoduchý typ)

Výstupy

Výstup | Typ | Význam
OUT | LINT | Výstupní hodnota

Funkce

Blok převádí jednotlivé bity IN[0..63] na lint výstup out. Když OUT<=0 pak BS=FALSE, jinak out>=0.

Příklad použití


Složení 8 bitů

Název funkce

BD18_BIT_COMPOSITION_8BIT

Volání v ST

PROGRAM BD18_8B_TEST

VAR

    IN1: ARRAY [0 .. 7] OF BOOL;

    O1: USINT;

END_VAR

    O1:= LIB.Core.V1_0.BD18_BIT_COMPOSITION_8BIT(IN := IN1);

END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Funkce provádí bitové složení 8 bitů do jedné celočíselné hodnoty.

Vstupy

Vstup | Typ | Význam
ENABLED | BOOL | Povolení provozu
IN | ARRAY [0 .. 7] OF BOOL | Pole vstupních hodnot
IN0 | BOOL | První vstup (jednoduchý typ)
IN1 | BOOL | Druhý vstup (jednoduchý typ)

Výstupy

Výstup | Typ | Význam
OUT | USINT | Výstupní hodnota

Funkce

Blok převádí jednotlivé bity IN[0..7] na USINT výstup OUT.

Příklad použití


Rozklad na bity

Název bloku

BD19_BIT_DECOMPOSITION

Volání v ST

PROGRAM BD19_TEST

VAR

    I1: LINT;

    O1: ARRAY [0 .. 63] OF BOOL;

    FB: LIB.CORE.V1_0.BD19_BIT_DECOMPOSITION;
END_VAR

    FB(IN := I1, OUT=>O1);

END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Funkce provádí bitový rozklad z celočíselné hodnoty na jednotlivé bity (v poli).

Vstupy

Vstup | Typ | Význam
ENABLED | BOOL | Povolení provozu
IN | LINT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
OUT | ARRAY [0 .. 63] OF BOOL | Výstupní pole binárních hodnot
BS | BOOL | Znaménko vstupu in, když IN<0 pak BS=FALSE

Funkce

Blok převádí vstup IN na jednotlivé bity OUT[0..63]. Když je IN<0 pak BS=FALSE, jinak BS=TRUE.

Příklad použití


Rozklad na 8 bitů

Název bloku

BD19_BIT_DECOMPOSITION_8BIT

Volání v ST

PROGRAM BD19_8B_TEST

VAR

    I1: USINT;

    O1: ARRAY [0 .. 7] OF BOOL;

    FB: LIB.CORE.V1_0.BD19_BIT_DECOMPOSITION_8BIT;
END_VAR

    FB(IN := I1, OUT=>O1);

END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Funkce provádí bitový rozklad z celočíselné hodnoty na jednotlivé bity (v poli).

Vstupy

Vstup | Typ | Význam
ENABLED | BOOL | Povolení provozu
IN | USINT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
OUT | ARRAY [0 .. 7] OF BOOL | Výstupní pole hodnot

Funkce

Blok převádí vstup IN na jednotlivé bity OUT[0..7].

Příklad použití


Složení Integer

Název bloku

BD55_INT_COMPOSITION

Volání v ST

PROGRAM BD55
     VAR
     LINT1:LINT;
     ARRAY1 : ARRAY [0..3] OF DINT := [3, 6, 10, 5];
     LOW : ARRAY[0..3] OF LIB.CORE.V1_0.BIT32:= [1, 5, 9, 13];
     HIGH : ARRAY[0..3] OF LIB.CORE.V1_0.BIT32:= [4, 8, 12, 16];
     END_VAR
  LINT1:= LIB.CORE.V1_0.BD55_INT_COMPOSITION(LOW := LOW ,HIGH := HIGH ,BS:=TRUE,IN:=ARRAY1);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok složí ze vstupních dat výstupní hodnotu Integer podle zadaného umístění vstupů.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | ARRAY[0..3] OF DINT | Vstupní data | [0]
BS | BOOL | Znaménko výstupní hodnoty | False
LOW | ARRAY[0..3] OF LIB.CORE.V1_0.BIT32 | první bit z rozsahu, pole o velikost [1..4] s hodnotami 1 až 32 | [1]
HIGH | ARRAY[0..3] OF LIB.CORE.V1_0.BIT32 | poslední bit z rozsahu, pole o velikost [1..4] s hodnotami 1 až 32 | [1]

Výstupy

Výstup | Typ | Význam
=> | lint | Výstupní hodnota

Funkce

Blok složí vstupní data v rozsahu podle zadaných parametrů in, low a high. Výstupní hodnotu lze složit z až čtyř částí. Znaménko výstupu se určí pomocí proměnné bs. Příklad: bity 5 až 8 představují hodnotu 0110, tedy dekadicky 6. Tuto hodnotu chceme interpretovat jako součást čísla integer. Použijeme první pozice vektorů low, high a in, tedy nastavení pro uložení hodnoty 0110 do pátého až osmého bitu bude vypadat takto: low = [5,0,0,0], high = [8,0,0,0] a samotná hodnota in = [6,0,0,0]. POZOR: v případě, kdy se budou rozsahy překrývat, může dojít k chybě.

Příklad použití

Složení výstupní hodnoty podle zadaných požadavků low = [1,5,9,13] a high = [4,8,12,16]. Jednotlivé čtveřice bitů (1...4, 5...8, 9...12 a 13...16, jak určují vektory low a high) obsahují čísla 3, 6, 10 a 5 (viz vstupy dint1...dint3); seřazeno od nejvyššího bitu k nejnižšímu a binárně má číslo tvar 0101 1010 0110 0011, což je dekadicky 23139 - výsledek operace na výstupu bloku.


Rozklad Integer

Název bloku

BD54_INT_DECOMPOSITION

Volání v ST

PROGRAM BD54
 VAR
 ARRAY1: ARRAY [0..3] OF DINT;
 ARRAY2: ARRAY [0..3] OF REAL;
 DINT1: DINT := 23139;
 FB: LIB.CORE.V1_0.BD54_INT_DECOMPOSITION := (LOW := [1, 5, 1, 13] ,HIGH := [4, 8, 8, 16]);
 END_VAR
  FB(IN:= DINT1, OUT=>ARRAY1, DY=>ARRAY2);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok rozloží vstupní data na hodnoty z určeného rozsahu bitů.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | DINT | Vstupní data | 0
LOW | ARRAY[0..3] OF LIB.CORE.V1_0.BIT32 | první bit z rozsahu, pole o velikost [0..3] s hodnotami 1 až 32 | [1]
HIGH | ARRAY[0..3] OF LIB.CORE.V1_0.BIT32 | poslední bit z rozsahu, pole o velikost [0..3] s hodnotami 1 až 32 | [1]

Výstupy

Výstup | Typ | Význam
OUT | ARRAY_DINT | Výstupní hodnota, pole o velikost [0..3]
DY | ARRAY_REAL | Výstupní hodnota, pole o velikost [0..3]
bs | bool | Znaménko vstupní hodnoty

Funkce

Blok rozloží vstupní data v rozsahu podle zadání daného parametry low a high. Low a high jsou vektory, kde každá položka určuje, kde začíná a končí pozice příslušného výsledku. Je možné rozkládat až do 4 výstupů, bitové rozsahy se mohou navzájem překrývat. Příklad: Pro zobrazení hodnoty prvních 4 bitů se vyplní low [1,0,0,0] a high [4,0,0,0] - tedy u prvního výstupu je první (dolní) bit 1, poslední (horní) bit 4. Výsledná hodnota bude na prvním výstupu, resp. v prvním prvku výstupního pole. Obdobně by místo nul ve vektorech výše mohly být vyplněny počáteční a koncové bity u dalších tří výstupů. bs určuje znaménko vstupních dat. Požadovaný zobrazený rozsah může být od 2 bitů až po 32 bitů.

Příklad použití

Rozklad vstupní hodnoty podle zadaných požadavků low = [1,5,1,13] a high = [4,8,8,16]. Vstup, 23139, je binárně 0101 1010 0110 0011. První výstup bere bity 1...4, tedy "0011", což představuje dekadicky číslo 3. Druhý výstup bere bity 5 až 8, tedy "0110", dekadicky 6. Třetí výstup bere bity 1 až 8, tedy "0110 0011", dekadicky 99. Čtvrtý výstup bere poslední čtveřici bitů 13...16, tedy "0101", dekadicky 5. Informace, které byly na bitech mimo určený rozsah, se neberou v úvahu.


On/Off sekvenční regulátor - Chlazení

Název bloku

B30_ON_OFF_CONTROL_SEQUENCE

Volání v ST

PROGRAM B30_TEST
VAR
    IN1, IN2:REAL;
    O1: BOOL;
    FB: LIB.CORE.V1_1.B30_ON_OFF_CONTROL_SEQUENCE;
END_VAR

    FB(X:=IN1, W:= IN2);
    O1:= FB.OUT;
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.1

Popis

Blok slouží jako On/Off sekvenční regulátor parametrizovatelný pomocí typu parametru CONTROLLERTYPE, šířky pásma Xp a offsetu OFF.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
ENABLED | BOOL | Povolení provozu | True
X | REAL | Řízená hodnota (obvykle teplota) | 0
W | REAL | Žádaná hodnota (obvykle teplota) | 22
CONTROLLERTYPE | CONTROLLERTYPE | Typ kontroléru (topení, chlazení) | chlazení
XP | REAL | Šířka pásma (hystereze) | 1
OFF | REAL | Offset, přidáván k žádané hodnotě W | 0

Výstupy

Výstup | Typ | Význam
OUT | BOOL | Výstupní signál (obvykle zavírání/otevírání ventilu)

Výstupní proměnná "OUT" má od verze funkčního bloku 1.1 příznak RETAIN, aby docházelo k uchování posledního stavu při restartu PLC.

Funkce

Blok implementuje sekvenční On/Off regulátor, kde X je zpravidla řízená teplota a W+OFF je žádaná hodnota (parametr OFF je offset). Pojďme vysvětlit proces řízení. Dejme tomu, že teplota X je vysoká, pak se nastaví OUT=TRUE a chlazení (CONTROLLERTYPE=COOLING) je zapnuto. Když teplota X poklesne pod práh W+OFF, blok nastaví OUT=FALSE a chlazení se vypne, takže teplota X může růst. Když teplota vzroste na X=W+OFF+XP, pak je OUT=TRUE a chlazení se opět spustí. Teplota začíná klesat a celý proces se opakuje.

Offset OFF se používá k vyrovnání parametru W. Máme tři možnosti, v závislosti na tom, zda chceme nastavit W jako minimální, maximální nebo střední hodnotu z řízeného rozsahu, viz obrázek níže.

Parametr ENABLED umožňuje vypnout regulátor. Když je ENABLED=TRUE, pak je regulátor vypnutý a OUT=FALSE.

Poznámka:
V levém okraji W+OFF je vždy OUT=FALSE. V pravém krajním bodě W+OFF+XP výstup OUT není určen (záleží, zda je dosažen shora nebo zdola).

Příklad použití


P regulátor - Chlazení

Název bloku

B32_P_CONTROLLER

Volání v ST

PROGRAM B32_TEST
VAR
    XIN,WIN,COOLING:REAL;
    FB: LIB.CORE.V1_0.B32_P_CONTROLLER;
END_VAR
    FB(X:=XIN, W:=WIN, OUT=>COOLING);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok implementuje P regulátor (s parametry: pásmo proporcionality, offset, min/max hodnoty a možnosti nastavit hodnotu pro vypnutý regulátor).

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
W | REAL | Žádaná hodnota (obvykle teplota). | 0
X | REAL | Řízená hodnota (obvykle teplota) | 0
CONTROLLERTYPE | CONTROLLERTYPE | Typ regulátoru (topení / chlazení) | chlazení
ENABLED | BOOL | Povolení činnosti (FALSE vypne regulátor) | True
XP | REAL | Pásmo proporcionality | 30
OFF | REAL | Offset, přidávaný k žádané hodnotě W | 0
MIN | REAL | Minimální hodnota výstupu OUT (obvykle 0) | 0
MAX | REAL | Maximální hodnota výstupu OUT (obvykle 100) | 100
DISVAL | REAL | Hodnota pro výstup OUT při vypnutí regulátoru (ENABLED=FALSE) | 0

Výstupy

Výstup | Typ | Význam
OUT | REAL | Výstupní signál (obvykle ventil, otevření 0 až 100 %)

Funkce

Na vstupu regulátoru je odchylka E=(W+OFF)-X. Výstup regulátoru OUT je dán vztahem OUT=-Xp/100×E+MIN, kde XP je pásmo proporcionality. Tato hodnota je nakonec omezena mezemi MIN a MAX, viz obrázek. Parametr ENABLED umožňuje vypnout regulátor (ENABLED=FALSE, regulátor je vypnutý a OUT=DISVAL). V případě špatného nastavení, když Xp<0 se považuje Xp=0, viz obrázek níže vpravo. Když je MAX<MIN pak je OUT=MAX (menší hodnota z obou).

Příklad použití

Jednoduchá P regulace s použitím analogového časového programu TPG s požadovanou hodnotou.


PI regulátor - Chlazení

Název bloku

B34_PI_CONTROLLER

Volání v ST

PROGRAM B34_TEST
VAR
    XIN,WIN,COOLING:REAL;
    FB: LIB.CORE.V1_0.B34_PI_CONTROLLER;
END_VAR
    FB(X:=XIN, W:=WIN, OUT=>COOLING);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok implementuje PI regulátor (s parametry: pásmo proporcionality, integrační časová konstanta, offset, min/max hodnoty a možnosti nastavit hodnotu pro vypnutý regulátor).

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
W | REAL | Žádaná hodnota (obvykle teplota) | 0
X | REAL | Řízená hodnota (obvykle teplota) | 0
CONTROLLERTYPE | CONTROLLERTYPE | Typ regulátoru (topení/chlazení) | chlazení
BP | BOOL | Když se nastaví na hodnotu TRUE, chová se jako P regulátor (odepnutí integrační složky) | False
ENABLED | BOOL | Povolení činnosti (FALSE vypne regulátor) | True
XP | REAL | Pásmo proporcionality | 30
OFF | REAL | Offset, přidávaný k žádané hodnotě W | 0
TI | REAL | Integrační časová konstanta [s] | 120
MIN | REAL | Minimální hodnota výstupu OUT (obvykle 0) | 0
MAX | REAL | Maximální hodnota výstupu OUT (obvykle 100) | 100
DISVAL | REAL | Hodnota pro výstup OUT při vypnutí regulátoru (ENABLED=FALSE) | 0

Výstupy

Výstup | Typ | Význam
OUT | REAL | Výstupní signál (obvykle ventil, otevření 0 až 100 %)
PFACTOR | REAL | Výstupní signál P
IFACTOR | REAL | Výstupní signál I

Funkce

Na vstupu regulátoru je odchylka E=(W+OFF)-X. Výstup regulátoru OUT je dán OUT=-100/Xp*(E+1/Ti*∫e)+MIN, kde první část je proporcionální složka (P-složka, popsaná v předchozí části) a druhý člen je integrační časová složka (I-složka). Pojďme vysvětlit funkci I-složky pomocí obrázku níže. Když je OUT=0 při t=0 a vstupy jsou W+OFF=0, X=1 pak se zvýší I-složka na OUT=100 při t=Ti. I-složka je omezena na hodnotu 0-100 před sečtením s proporcionální složkou. Výstupní hodnota je nakonec omezena mezemi MIN a MAX, viz obrázek v návodu k bloku B32. I-složka pomáhá optimalizovat regulační proces, "dotáhne" regulovanou veličinu přesně na požadovanou hodnotu, což P-regulátor dokáže jen v jednom bodě.

Blok má vstup BP, který, když je true, nastaví I-složku na 0.

Blok má také vstup ENABLED, který umožňuje vypnutí regulátoru. Když ENABLED=TRUE, pak je regulátor vypnutý a OUT=DISVAL.

Funkce v případě špatného nastavení: pokud Xp<= 0, pak je OUT=MAX. Pro x>=W+OFF a pro X<W+OFF je OUT=MIN. Všimněte si, že v tomto případě I-složka je 0. Když Ti<= 0 pak I-složka je nastavena na 0. Když MAX<MIN pak je OUT=MAX (menší hodnota z obou).

Příklad použití

Jednoduchá PI regulace s použitím analogového časového programu TPG s požadovanou hodnotou.


PID regulátor

PID regulátor - Chlazení

Název bloku

B36_PID_CONTROLLER

Volání v ST

PROGRAM B36_TEST
VAR
    XIN,WIN,COOLING:REAL;
    FB: LIB.CORE.V1_0.B36_PID_CONTROLLER;
END_VAR
    FB(X:=XIN, W:=WIN, OUT=>COOLING);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok implementuje PID regulátor (s parametry: pásmo proporcionality, integrační časová konstanta, derivační časová konstanta, offset, min/max hodnoty a možnosti nastavit hodnotu pro vypnutý regulátor).

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
W | REAL | Žádaná hodnota (obvykle teplota) | 0
X | REAL | Řízená hodnota (obvykle teplota) | 0
CONTROLLERTYPE | CONTROLLERTYPE | Typ regulátoru (topení/chlazení) | chlazení
BP | BOOL | Když se nastaví na hodnotu TRUE, chová se jako P regulátor | False
ENABLED | BOOL | Povolení činnosti (FALSE vypne regulátor) | True
XP | REAL | Pásmo proporcionality | 30
OFF | REAL | Offset, přidávaný k žádané hodnotě W | 0
TI | REAL | Integrační časová konstanta [s] | 120
TD | REAL | Derivační časová konstanta [s] | 1
MIN | REAL | Minimální hodnota výstupu OUT (obvykle 0) | 0
MAX | REAL | Maximální hodnota výstupu OUT (obvykle 100) | 100
DISVAL | REAL | Hodnota pro výstup OUT při vypnutí regulátoru (ENABLED=FALSE) | 0

Výstupy

Výstup | Typ | Význam
OUT | REAL | Výstupní signál (obvykle ventil, otevření 0 až 100 %)
PFACTOR | REAL | Složka P výstupního signálu
IFACTOR | REAL | Složka I výstupního signálu
DFACTOR | REAL | Složka D výstupního signálu

Funkce

Na vstupu regulátoru je odchylka E=(W+OFF)-X. Výstup regulátoru OUT je dán OUT=-100/Xp*(E+1/Ti*∫e+Td*e')+MIN, kde první část je proporcionální složka (P-složka, popsaná v předchozí části), druhá část je integrační časová složka (I-složka) a třetí část je derivační časová složka (D-složka). Výstupní hodnota je nakonec omezena mezemi MIN a MAX, viz obrázek v návodu k bloku B32.

Pojďme vysvětlit funkci D-složky pomocí obrázku níže. Pro zjednodušení budeme považovat Ti=0, kdy se nastaví I-složka na nulu. Když W+OFF=0 a vstup X roste z 0 na 1 v čase t=Td, pak D-složka má konstantní hodnotu rovnu 100 a P-složka roste na hodnotu 100/Xp.

Blok má vstup BP, který, když je true, nastaví I-složku a D-složku na 0.

Blok má také vstup ENABLED, který umožňuje vypnutí regulátoru. Když ENABLED=TRUE, pak je regulátor vypnutý a OUT=DISVAL.

Funkce v případě špatného nastavení: pokud Xp<= 0, pak je OUT=MAX. Pro x>=W+OFF a pro X<W+OFF je OUT=MIN. Všimněte si, že I-složka je v tomto případě 0 . Když Ti<= 0, pak I-složka je nastavena na 0. Když MAX<MIN, pak je OUT=MAX (menší hodnota z obou).

Příklad použití

Jednoduchá PID regulace s použitím analogového časového programu TPG s požadovanou hodnotou.


On/Off sekvenční regulátor - Topení

Název bloku

B31_REVERSE_ON_OFF_CONTROL_SEQUENCE

Volání v ST

PROGRAM B31_TEST
VAR
    IN1, IN2:REAL;
    O1: BOOL;
    FB: LIB.CORE.V1_1.B31_REVERSE_ON_OFF_CONTROL_SEQUENCE;
END_VAR

    FB(X:=IN1, W:= IN2);
    O1:= FB.OUT;
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.1

Popis

Blok slouží jako On/Off sekvenční regulátor parametrizovatelný pomocí typu kontroleru CONTROLLERTYPE, šířky pásma Xp a offsetu OFF.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
ENABLED | BOOL | Povolení provozu | True
X | REAL | Řízená hodnota (obvykle teplota) | 0
W | REAL | Žádaná hodnota (obvykle teplota) | 22
CONTROLLERTYPE | CONTROLLERTYPE | Typ kontroléru (topení, chlazení) | chlazení
XP | REAL | Šířka pásma | 1
OFF | REAL | Offset, přidáván k žádané hodnotě W | 0

Výstupy

Výstup | Typ | Význam
OUT | BOOL | Výstupní signál (obvykle spínání ohřev nebo chlazení)

Výstupní proměnná "OUT" má od verze funkčního bloku 1.1 příznak RETAIN, aby docházelo k uchování posledního stavu při restartu PLC.

Funkce

Blok implementuje sekvenční On/Off regulátor, kde x je zpravidla řízená teplota a w+Off je žádaná hodnota (parametr Off je offset). Pojďme vysvětlit proces řízení: Dejme tomu, že teplota x je nízká, pak se nastaví out=true a topení je zapnuté. Když teplota x vzroste nad práh w+Off, blok nastaví out=false a topení se vypne, takže teplota x může klesnout. Když teplota poklesne na x=w+Off-Xp pak se out=true a topení se opět spustí. Teplota začíná stoupat a celý proces se opakuje.

Offset Off můžete použít dvěma způsoby: můžete nastavit Off=0 a hodnotu x nastavit podle parametru w, nebo nastavit Off=Xp/2 a nastavte střední hodnotu x podle parametru w, viz Obrázek níže.

Parametr enable povoluje vypnout regulátor. Když enable=true pak je regulátor vypnutý a out=false.

Poznámka:
V místě levého okraje w+Off je vždy out=true. V pravém hraničním bodě w+Off+Xp je výstup out není určen (závisí na vnějších okolnostech, zda je dosaženo zdola nebo shora).

Příklad použití


P regulátor - Topení

Název bloku

B33_REVERSE_P_CONTROLLER

Volání v ST

PROGRAM B33_TEST
VAR
    XIN,WIN,COOLING:REAL;
    FB: LIB.CORE.V1_0.B33_REVERSE_P_CONTROLLER;
END_VAR
    FB(X:=XIN, W:=WIN, OUT=>COOLING);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok implementuje P regulátor (s parametry: pásmo proporcionality, offset, min/max hodnoty a možnosti nastavit hodnotu pro vypnutý regulátor).

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
W | REAL | Žádaná hodnota (obvykle teplota) | 0
X | REAL | Řízená hodnota (obvykle teplota) | 0
CONTROLLERTYPE | CONTROLLERTYPE | Typ regulátoru (topení/chlazení) | chlazení
ENABLED | BOOL | Povolení činnosti (FALSE vypne regulátor) | True
XP | REAL | Pásmo proporcionality | 30
OFF | REAL | Offset, přidávaný k žádané hodnotě W | 0
MIN | REAL | Minimální hodnota výstupu OUT (obvykle 0) | 0
MAX | REAL | Maximální hodnota výstupu OUT (obvykle 100) | 100
DISVAL | REAL | Hodnota pro výstup OUT při vypnutí regulátoru (ENABLED=FALSE) | 0

Výstupy

Výstup | Typ | Význam
OUT | REAL | Výstupní signál (obvykle ventil, otevření 0 až 100 %)

Funkce

Na vstupu regulátoru je odchylka E=(W+OFF)-X. Výstup regulátoru OUT je dán vztahem OUT=-Xp/100×E+MIN, kde XP je pásmo proporcionality. Tato hodnota je nakonec omezena mezemi MIN a MAX, viz obrázek. Parametr ENABLED umožňuje vypnout regulátor (ENABLED=FALSE, regulátor je vypnutý a OUT=DISVAL). V případě špatného nastavení, když Xp<0, se považuje Xp=0, viz obrázek níže vpravo. Když je MAX<MIN pak je OUT=MAX (menší hodnota z obou).

Příklad použití


PI regulátor - Topení

Název bloku

B35_REVERSE_PI_CONTROLLER

Volání v ST

PROGRAM B35_TEST
VAR
    XIN,WIN,COOLING:REAL;
    FB: LIB.CORE.V1_0.B35_REVERSE_PI_CONTROLLER;
END_VAR
    FB(X:=XIN, W:=WIN, OUT=>COOLING);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok implementuje PI regulátor (s parametry: pásmo proporcionality, integrační časová konstanta, offset, min/max hodnoty a možnosti nastavit hodnotu pro vypnutý regulátor).

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
W | REAL | Žádaná hodnota (obvykle teplota) | 0
X | REAL | Řízená hodnota (obvykle teplota) | 0
CONTROLLERTYPE | CONTROLLERTYPE | Typ regulátoru (topení/chlazení) | chlazení
BP | BOOL | Když se nastaví na hodnotu TRUE, chová se jako P regulátor (odepnutí integrační složky) | False
ENABLED | BOOL | Povolení činnosti (FALSE vypne regulátor) | True
XP | REAL | Pásmo proporcionality | 30
OFF | REAL | Offset, přidávaný k žádané hodnotě W | 0
TI | REAL | Integrační časová konstanta [s] | 120
MIN | REAL | Minimální hodnota výstupu OUT (obvykle 0) | 0
MAX | REAL | Maximální hodnota výstupu OUT (obvykle 100) | 100
DISVAL | REAL | Hodnota pro výstup OUT při vypnutí regulátoru (ENABLED=FALSE) | 0

Výstupy

Výstup | Typ | Význam
OUT | REAL | Výstupní signál (obvykle ventil, otevření 0 až 100 %)
PFACTOR | REAL | Složka P výstupního signálu
IFACTOR | REAL | Složka I výstupního signálu

Funkce

Na vstupu regulátoru je odchylka e=(w+Off)-x. Výstup regulátoru je dán out=100/Xp×(e+1/Ti×∫e)+MIN, kde první část je proporcionální složka (P-složka, je popsána v předchozí části) a druhá část je integrační časová složka (I-složka). Pojďme vysvětlit funkci I-složky pomocí obrázku níže: Když out=0 pro t=0 a vstupy jsou w+Off=0, x=-1 pak hodnota I-složky roste, out=100 při t=Ti. I-složka je omezena hodnotou 0-100 před sečtením s proporcionální složkou. Na výstupu je hodnota omezena hranicemi MIN a MAX, viz obrázek bloku B33. I-složka pomáhá optimalizovat regulační proces, "dotáhne" regulovanou veličinu přesně na požadovanou hodnotu, což P-regulátor dokáže jen v jednom bodě.

Blok má vstup bp, který když je true nastaví I-složku na 0.

Parametr enable umožňuje vypnout regulátor. Když enable=true, regulátor je vypnutý a out=disval.

Funkce v případě špatného nastavení:
Když Xp<= 0, pak out=MIN pro x>= w+Off a out=MAX pro x<w+Off. Všimněte si, že I-složka je v tomto případě 0 . Když Ti<= 0, pak je I-složka nastavena na 0. Když MAX<MIN, pak y=MAX (menší hodnota z obou).

Příklad použití


PID regulátor - Topení

Název bloku

B37_REVERSE_PID_CONTROLLER

Volání v ST

PROGRAM B37_TEST
VAR
    XIN,WIN,COOLING:REAL;
    FB: LIB.CORE.V1_0.B37_REVERSE_PID_CONTROLLER;
END_VAR
    FB(X:=XIN, W:=WIN, OUT=>COOLING);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok implementuje PID regulátor (s parametry: pásmo proporcionality, integrační časová konstanta, derivační časová konstanta, offset, min/max hodnoty a možnosti nastavit hodnotu pro vypnutý regulátor).

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
W | REAL | Žádaná hodnota (obvykle teplota) | 0
X | REAL | Řízená hodnota (obvykle teplota) | 0
CONTROLLERTYPE | CONTROLLERTYPE | Typ regulátoru (topení/chlazení) | chlazení
BP | BOOL | Když se nastaví na hodnotu TRUE, chová se jako P regulátor | False
ENABLED | BOOL | Povolení činnosti (FALSE vypne regulátor) | True
XP | REAL | Pásmo proporcionality | 30
OFF | REAL | Offset, přidávaný k žádané hodnotě W | 0
TI | REAL | Integrační časová konstanta [s] | 120
TD | REAL | Derivační časová konstanta [s] | 1
MIN | REAL | Minimální hodnota výstupu OUT (obvykle 0) | 0
MAX | REAL | Maximální hodnota výstupu OUT (obvykle 100) | 100
DISVAL | REAL | Hodnota pro výstup OUT při vypnutí regulátoru (ENABLED=FALSE) | 0

Výstupy

Výstup | Typ | Význam
OUT | REAL | Výstupní signál (obvykle ventil, otevření 0 až 100 %)
PFACTOR | REAL | Složka P výstupního signálu
IFACTOR | REAL | Složka I výstupního signálu
DFACTOR | REAL | Složka D výstupního signálu

Funkce

Na vstupu regulátoru je odchylka e=(w+Off)-x. Výstup regulátoru y je dán out=-100/Xp×(e+1/Ti×∫e+ Td×e')+MIN, kde první část je proporcionální složka (P-složka, je popsána v bloku B33), druhá část je integrační časová složka (I-složka, je popsána v bloku B35) a třetí část je derivační časová složka (D-složka). Výstup regulátoru je omezen hranicemi MIN a MAX, viz obrázek v bloku B32.

Pojďme vysvětlit funkci D-složky pomocí obrázku níže. Pro zjednodušení budeme považovat Ti=0, kdy se nastaví I-složka na nulu. Když w+Off=0 a vstup x roste z 0 na -1 v čase t=Td, pak D-složka má konstantní hodnotu rovnu 100 a P-složka roste na hodnotu 100/Xp.

Blok má vstup bp, který, když je true, nastaví I-složku a D-složku na 0.

Parametr enable umožňuje vypnout regulátor. Když enable=true, pak je regulátor vypnutý a out=disval.

Funkce v případě špatného nastavení:
Když Xp<= 0, pak out=MAX pro x>= w+Off a out=MIN pro x< w+Off. Všimněte si, že I-složka a D-složka jsou v tomto případě 0. Když Ti<= 0, I-složka je považována za rovnu 0. Když Td<= 0, D-složka je považována za rovnu 0. Když MAX<MIN, pak out=MAX (menší hodnota z obou).

Příklad použití


Helper: Multi Io Bool 8

Helper: Multi In Bool 8

Název bloku

HELPER_MULTIINBOOL8

Volání v ST

Volání verze V1.0
PROGRAM HELPER
        VAR
    BOOL1, BOOL2: BOOL;
    ARRAYBOOL: ARRAY[0..7] OF BOOL;
    FB: LIB.CORE.V1_0.HELPER_MULTIINBOOL8;
        END_VAR
    FB(IN0:=BOOL1, IN1:=BOOL2, OUTARRAY=>ARRAYBOOL);
END_PROGRAM

Volání verze V1.1
PROGRAM HELPER
        VAR
        BOOL1, BOOL2: BOOL;
        ARRAYBOOL: ARRAY[0..7] OF BOOL;
        FB: LIB.CORE.V1_1.HELPER_MULTIINBOOL8;
        END_VAR
        FB(IN1:=BOOL1, IN2:=BOOL2, OUTARRAY=>ARRAYBOOL);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.1

Popis

Blok slouží k převodu 8 hodnot typu bool do pole boolů.

Vstupy

Vstup | Typ | Význam
IN1..IN8 | BOOL | Vstupní hodnoty

Výstupy

Výstup | Typ | Význam
OUTARRAY | ARRAY[0..7] OF BOOL | Výstupní pole boolů

Příklad použití


Helper: Multi In Lint

Název bloku

HELPER_MULTIINLINT

Volání v ST

Volání verze V1.0
PROGRAM HELPER
    VAR
    LINT1, LINT2: LINT;
    ARRAYLINT: ARRAY[0..15] OF LINT;
    FB: LIB.CORE.V1_0.HELPER_MULTIINLINT;
    END_VAR
    FB(IN0:=LINT1, IN1:=LINT2, OUTARRAY=>ARRAYLINT);
END_PROGRAM

Volání verze V1.1
PROGRAM HELPER
 VAR
 LINT1, LINT2: LINT;
 ARRAYLINT: ARRAY[0..15] OF LINT;
 FB: LIB.CORE.V1_1.HELPER_MULTIINLINT;
 END_VAR
 FB(IN1:=LINT1, IN2:=LINT2, OUTARRAY=>ARRAYLINT);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.1

Popis

Blok slouží k převodu 16 hodnot typu lint do pole lintů.

Vstupy

Vstup | Typ | Význam
IN1...IN16 | LINT | Vstupní hodnoty

Výstupy

Výstup | Typ | Význam
OUTARRAY | ARRAY[0...15] OF LINT | Výstupní pole lint

Příklad použití


Helper: Multi In Real

Název bloku

HELPER_MULTIINREAL

Volání v ST

Volání verze V1.0
PROGRAM HELPER
    VAR
    REAL1, REAL2: REAL;
    ARRAYREAL: ARRAY[0..15] OF REAL;
    FB: LIB.CORE.V1_0.HELPER_MULTIINREAL;
    END_VAR
    FB(IN0:=REAL1, IN1:=REAL2, OUTARRAY=>ARRAYREAL);
END_PROGRAM

Volání verze V1.1
PROGRAM HELPER
        VAR
        REAL1, REAL2: REAL;
        ARRAYREAL: ARRAY[0..15] OF REAL;
        FB: LIB.CORE.V1_1.HELPER_MULTIINREAL;
        END_VAR
        FB(IN1:=REAL1, IN2:=REAL2, OUTARRAY=>ARRAYREAL);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.1

Popis

Blok slouží k převodu 16 hodnot typu real do pole realů.

Vstupy

Vstup | Typ | Význam
IN1..IN16 | REAL | Vstupní hodnoty

Výstupy

Výstup | Typ | Význam
OUTARRAY | ARRAY[0..15] OF REAL | Výstupní pole real

Příklad použití


Helper: Multi Out Bool

Název funkce

HELPER_MULTIOUTBOOL

Volání v ST

Volání verze V1.0
PROGRAM HELPER
    VAR
    BOOL1, BOOL2: BOOL;
    ARRAYBOOL: ARRAY[0..15] OF BOOL;
    END_VAR

    LIB.CORE.V1_0.HELPER_MULTIOUTBOOL(INARRAY := ARRAYBOOL, OUT0 => BOOL1, OUT1 => BOOL2);
END_PROGRAM

Volání verze V1.1
PROGRAM HELPER
        VAR
        BOOL1, BOOL2: BOOL;
        ARRAYBOOL: ARRAY[0..15] OF BOOL;
        END_VAR

        LIB.CORE.V1_1.HELPER_MULTIOUTBOOL(INARRAY := ARRAYBOOL, OUT1 => BOOL1, OUT2 => BOOL2);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.1

Popis

Blok slouží k převodu pole Bool na 16 hodnot typu Bool.

Vstupy

Vstup | Typ | Význam
INARRAY | ARRAY[0..15] OF BOOL | Vstupní pole boolů

Výstupy

Výstup | Typ | Význam
=> | ARRAY[0..15] OF BOOL | Výstupní pole boolů
OUT1..OUT16 | BOOL | Výstupní hodnoty

Příklad použití


Helper: Multi Out Bool 8

Název funkce

HELPER_MULTIOUTBOOL8

Volání v ST

Volání verze V1.0
    VAR
    BOOL1, BOOL2: BOOL;
    ARRAYBOOL: ARRAY[0..7] OF BOOL;
    END_VAR
    LIB.CORE.V1_0.HELPER_MULTIOUTBOOL8(INARRAY := ARRAYBOOL, OUT0 => BOOL1, OUT1 => BOOL2);
END_PROGRAM

Volání verze V1.1
        VAR
        BOOL1, BOOL2: BOOL;
        ARRAYBOOL: ARRAY[0..7] OF BOOL;
        END_VAR
        LIB.CORE.V1_1.HELPER_MULTIOUTBOOL8(INARRAY := ARRAYBOOL, OUT1 => BOOL1, OUT2 => BOOL2);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.1

Popis

Blok slouží k převodu pole boolů na 8 hodnot typu bool.

Vstupy

Vstup | Typ | Význam
INARRAY | ARRAY[0..7] OF BOOL | Vstupní pole boolu

Výstupy

Výstup | Typ | Význam
=> | ARRAY[0..7] OF BOOL | Výstupní pole boo.
OUT1..OUT8 | BOOL | Výstupní hodnoty

Příklad použití


Helper: Multi Out Lint

Název funkce

HELPER_MULTIOUTLINT

Volání v ST

Volání verze V1.0
PROGRAM HELPER
    VAR
    LINT1, LINT2: LINT;
    ARRAYLINT: ARRAY[0..15] OF LINT;
    FB: LIB.CORE.V1_0.HELPER_MULTIOUTLINT;
    END_VAR
    FB(INARRAY:=ARRAYLINT, OUT0=>LINT1, OUT1=>LINT2);
END_PROGRAM

Volání verze V1.1
PROGRAM HELPER
        VAR
        LINT1, LINT2: LINT;
        ARRAYLINT: ARRAY[0..15] OF LINT;
        FB: LIB.CORE.V1_1.HELPER_MULTIOUTLINT;
        END_VAR
        FB(INARRAY:=ARRAYLINT, OUT1=>LINT1, OUT2=>LINT2);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.1

Popis

Blok slouží k převodu pole lintů na 16 hodnot typu lint.

Vstupy

Vstup | Typ | Význam
INARRAY | ARRAY[0..15] OF LINT | Vstupní pole lint.
IN0..IN15 | REAL | Vstupní hodnoty

Výstupy

Výstup | Typ | Význam
OUT0..OUT15 | LINT | Výstupní hodnoty.

Funkce

Vstupy IN0..IN15 jsou nevyužity. V případě nezapojení vstupu INARRAY jsou připojeny na výstupy.

Příklad použití


Helper: Multi Out Real

Název funkce

HELPER_MULTIOUTREAL

Volání v ST

Volání verze V1.0
PROGRAM HELPER
    VAR
    REAL1, REAL2: REAL;
    ARRAYREAL: ARRAY[0..15] OF REAL;
    FB: LIB.CORE.V1_0.HELPER_MULTIOUTREAL;
    END_VAR
    FB(INARRAY:=ARRAYREAL, OUT0=>REAL1, OUT1=>REAL2);
END_PROGRAM

Volání verze V1.1
PROGRAM HELPER
        VAR
        REAL1, REAL2: REAL;
        ARRAYREAL: ARRAY[0..15] OF REAL;
        FB: LIB.CORE.V1_1.HELPER_MULTIOUTREAL;
        END_VAR
        FB(INARRAY:=ARRAYREAL, OUT1=>REAL1, OUT2=>REAL2);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.1

Popis

Blok slouží k převodu pole realů na 16 hodnot typu real.

Vstupy

Vstup | Typ | Význam
INARRAY | ARRAY[0..15] OF REAL | Vstupní pole real
IN0..IN15 | REAL | Vstupní hodnoty

Výstupy

Výstup | Typ | Význam
OUT1..OUT16 | REAL | Výstupní hodnoty

Funkce

Vstupy IN0..IN15 jsou nevyužity. V případě nezapojení vstupu INARRAY jsou připojeny na výstupy.

Příklad použití


ABS

Název funkce

ABS

Volání v ST

PROGRAM ABS_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= ABS(IN:=REAL1);
END_PROGRAM

Popis

Vrátí absolutní hodnotu čísla. Absolutní hodnota čísla je totéž číslo bez znaménka.

Vstupy

Vstup | Typ | Význam
IN | ANY_NUM | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_NUM | Výstupní hodnota

Příklad použití


ADD

Název funkce

ADD

Volání v ST

PROGRAM ADD_DEMO
    VAR
        REAL1,REAL2,REAL3: REAL;
    END_VAR
    REAL3:= ADD(IN1:=REAL1, IN2:=REAL2);
END_PROGRAM

Popis

Funkce add vrátí hodnotu součtu vstupních číselných typu. Počet vstupních číselných typu může být více než 2.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_MAGNITUDE | Vstupní hodnota
IN2 | ANY_MAGNITUDE | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_MAGNITUDE | Výstupní signál

Příklad použití


AVG

Název funkce

AVG

Volání v ST

PROGRAM AVG_DEMO
    VAR
        REAL1,REAL2,REAL3,REAL4: REAL;
    END_VAR
    REAL4:= AVG(IN1:=REAL1, IN2:=REAL2, IN3:=REAL3);
END_PROGRAM

Popis

Vrátí hodnotu aritmetického průměru vstupních hodnot. Počet vstupních hodnot může být více než 2.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_NUM | Vstupní hodnota
IN2 | ANY_NUM | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_NUM | Výstupní signál

Příklad použití


CEIL

Název funkce

CEIL

Volání v ST

PROGRAM CEIL_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= CEIL(IN:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu nejmenšího celého čísla, které není menší než vstupní hodnota.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota

Příklad použití

Příklad výpočtu

Vstupní hodnota | round ( _TO_ ) | floor | ceil | trunc
5.5 | 6 | 5 | 6 | 5
3.8 | 4 | 3 | 4 | 3
2.3 | 2 | 2 | 3 | 3
-2.3 | -2 | -3 | -2 | -2
-3.8 | -4 | -4 | -3 | -3
-5.5 | -6 | -6 | -5 | -5


DIV

Název funkce

DIV

Volání v ST

PROGRAM DIV_DEMO
    VAR
        REAL1,REAL2,REAL3: REAL;
    END_VAR
    REAL3:= DIV(IN1:=REAL1, IN2:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu podílu vstupních hodnot.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_NUM | Vstupní hodnota
IN2 | ANY_NUM | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_NUM | Výstupní signál

Příklad použití


FLOOR

Název funkce

FLOOR

Volání v ST

PROGRAM FLOOR_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= FLOOR(IN:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu největšího celého čísla, které není větší než vstupní hodnota.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota

Příklad použití

Příklad výpočtu

Vstupní hodnota | round ( _TO_ ) | floor | ceil | trunc
5.5 | 6 | 5 | 6 | 5
3.8 | 4 | 3 | 4 | 3
2.3 | 2 | 2 | 3 | 3
-2.3 | -2 | -3 | -2 | -2
-3.8 | -4 | -4 | -3 | -3
-5.5 | -6 | -6 | -5 | -5


MAX

Název funkce

MAX

Volání v ST

PROGRAM MAX_DEMO
    VAR
        REAL1,REAL2,REAL3: REAL;
    END_VAR
    REAL3:= MAX(IN1:=REAL1, IN2:=REAL2);
END_PROGRAM

Popis

Vrátí nejvyšší hodnotu ze vstupních hodnot. Počet vstupních hodnot může být více než 2.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_ELEMENTARY | Vstupní hodnota
IN2 | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_ELEMENTARY | Výstupní hodnota

Příklad použití


MIN

Název funkce

MIN

Volání v ST

PROGRAM MIN_DEMO
    VAR
        REAL1,REAL2,REAL3: REAL;
    END_VAR
    REAL3:= MIN(IN1:=REAL1, IN2:=REAL2);
END_PROGRAM

Popis

Vrátí nejnižší hodnotu ze vstupních hodnot. Počet vstupních hodnot může být více než 2.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_ELEMENTARY | Vstupní hodnota
IN2 | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_ELEMENTARY | Výstupní hodnota

Příklad použití


MOD

Název funkce

MOD

Volání v ST

PROGRAM MOD_DEMO
    VAR
        REAL1,REAL2,REAL3: REAL;
    END_VAR
    REAL3:= MOD(IN1:=REAL1, IN2:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu zbytku po celočíselném dělení vstupních hodnot. Kde IN1 je dělenec a IN2 dělitel.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_NUM | Vstupní hodnota
IN2 | ANY_NUM | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_NUM | Výstupní hodnota

Příklad použití


MUL

Název funkce

MUL

Volání v ST

PROGRAM MUL_DEMO
    VAR
        REAL1,REAL2,REAL3: REAL;
    END_VAR
    REAL3:= MUL(IN1:=REAL1, IN2:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu součinu vstupních hodnot.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_NUM | Vstupní hodnota
IN2 | ANY_NUM | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_NUM | Výstupní hodnota

Příklad použití


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.0

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.

Pro připojení vstupních hodnot lze použít vstupní proměnné IN0, IN1 a IN3 (tj. max. 3 vstupy) nebo vstupní pole IN (multiioreal pro max. 16 vstupů).

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 | MULTIIOREAL | Vstupní hodnota | [0,0,...,0]
INENABLED | MULTIIOBOOL | Povolení vstupu | [False,...,False]
IN0 | REAL | Vstupní hodnota |
IN1 | REAL | Vstupní hodnota |
IN2 | REAL | Vstupní hodnota |
TOL | REAL | Tolerance | 2

Výstupy

Výstup | Typ | Význam
OUT | REAL | Vý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 | BOOL | Znaménko výstupního signálu
BSN | BOOL | Negace 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.


SUB

Název funkce

SUB

Volání v ST

PROGRAM SUB_DEMO
    VAR
        REAL1,REAL2,REAL3: REAL;
    END_VAR
    REAL3:= SUB(IN1:=REAL1, IN2:=REAL2);
END_PROGRAM

Popis

Vrátí rozdíl vstupních hodnot.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_MAGNITUDE | Vstupní hodnota
IN2 | ANY_MAGNITUDE | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_MAGNITUDE | Výstupní hodnota

Příklad použití


TRUNC

Název funkce

TRUNC

Volání v ST

PROGRAM TRUNC_DEMO
    VAR
        REAL1: REAL;
        D1: DINT;
    END_VAR
    D1:= TRUNC(IN:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu zaokrouhlenou na celé číslo, nejbližší směrem k nule.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | DINT | Výstupní hodnota

Příklad použití

Příklad výpočtu

Vstupní hodnota | round ( _TO_ ) | floor | ceil | trunc
5.5 | 6 | 5 | 6 | 5
3.8 | 4 | 3 | 4 | 3
2.3 | 2 | 2 | 3 | 3
-2.3 | -2 | -3 | -2 | -2
-3.8 | -4 | -4 | -3 | -3
-5.5 | -6 | -6 | -5 | -5


TRUNC_TO_LINT

Název funkce

TRUNC_TO_LINT

Volání v ST

PROGRAM TRUNC_TO_LINT_DEMO
    VAR
        REAL1: REAL;
        L1: LINT;
    END_VAR
    L1:= TRUNC(IN:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu zaokrouhlenou na celé číslo, nejbližší směrem k nule.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LINT | Výstupní hodnota

Příklad použití

Příklad výpočtu

Vstupní hodnota | round ( _TO_ ) | floor | ceil | trunc
5.5 | 6 | 5 | 6 | 5
3.8 | 4 | 3 | 4 | 3
2.3 | 2 | 2 | 3 | 3
-2.3 | -2 | -3 | -2 | -2
-3.8 | -4 | -4 | -3 | -3
-5.5 | -6 | -6 | -5 | -5


EQ

Název funkce

EQ

Volání v ST

PROGRAM EQ_DEMO
     VAR
           R1,R2:REAL;
       BOOL1: BOOL;
     END_VAR
    BOOL1:= EQ(IN1 := R1, IN2 := R2);
END_PROGRAM

Popis

Funkce provádí porovnání dvou nebo více vstupů. Při shodě hodnot všech vstupů je výstup TRUE.

Vstupy

Vstup | Typ | Význam
IN1.. | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | BOOL | Výstupní signál

Příklad použití


GE

Název funkce

GE

Volání v ST

PROGRAM GE_DEMO
     VAR
           R1,R2:REAL;
       BOOL1: BOOL;
     END_VAR
    BOOL1:= GE(IN1 := R1, IN2 := R2);
END_PROGRAM

Popis

Funkce provádí porovnání dvou nebo více vstupů. Výstup je TRUE, pokud je hodnota prvního vstupu větší nebo rovna hodnotě druhého vstupu, resp. pokud je hodnota jakéhokoli vstupu větší nebo rovna hodnotě jakéhokoli dalšího vstupu.

Příklad pro 4 vstupy:
9, 8, 6, 4 - True
9, 8, 7, 7 - True
9, 8, 10, 5 - False

Vstupy

Vstup | Typ | Význam
IN1.. | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | BOOL | Výstupní signál

Příklad použití


GT

Název funkce

GT

Volání v ST

PROGRAM GT_DEMO
     VAR
           R1,R2:REAL;
       BOOL1: BOOL;
     END_VAR
    BOOL1:= GT(IN1 := R1, IN2 := R2);
END_PROGRAM

Popis

Funkce provádí porovnání dvou nebo více vstupů. Výstup je TRUE, pokud je hodnota prvního vstupu větší než hodnota druhého vstupu, resp. pokud je hodnota jakéhokoli vstupu větší než hodnota jakéhokoli dalšího vstupu.

Příklad pro 4 vstupy:
9, 8, 6, 4 - True
9, 8, 7, 7 - False
9, 8, 10, 5 - False

Vstupy

Vstup | Typ | Význam
IN1.. | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | BOOL | Výstupní signál

Příklad použití


LE

Název funkce

LE

Volání v ST

PROGRAM LE_DEMO
     VAR
           R1,R2:REAL;
       BOOL1: BOOL;
     END_VAR
    BOOL1:= LE(IN1 := R1, IN2 := R2);
END_PROGRAM

Popis

Funkce provádí porovnání dvou nebo více vstupů. Výstup je TRUE, pokud je hodnota prvního vstupu menší nebo rovna hodnotě druhého vstupu, resp. pokud je hodnota jakéhokoli vstupu menší nebo rovna hodnotě jakéhokoli dalšího vstupu.

Příklad pro 4 vstupy:
5, 7, 9, 10 - True
4, 6, 9, 9 - True
4, 6, 5, 9 - False

Vstupy

Vstup | Typ | Význam
IN1.. | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | BOOL | Výstupní signál

Příklad použití


LT

Název funkce

LT

Volání v ST

PROGRAM LT_DEMO
     VAR
           R1,R2:REAL;
       BOOL1: BOOL;
     END_VAR
    BOOL1:= LT(IN1 := R1, IN2 := R2);
END_PROGRAM

Popis

Funkce provádí porovnání dvou nebo více vstupů. Výstup je TRUE, pokud je hodnota prvního vstupu menší než hodnota druhého vstupu, resp. pokud je hodnota jakéhokoli vstupu menší než hodnota jakéhokoli dalšího vstupu.

Příklad pro 4 vstupy:
5, 7, 9, 10 - True
4, 6, 9, 9 - False
4, 6, 5, 9 - False

Vstupy

Vstup | Typ | Význam
IN1.. | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | BOOL | Výstupní signál

Příklad použití


NE

Název funkce

NE

Volání v ST

PROGRAM NE_DEMO
     VAR
           R1,R2:REAL;
       BOOL1: BOOL;
     END_VAR
    BOOL1:= NE(IN1 := R1, IN2 := R2);
END_PROGRAM

Popis

Funkce provádí porovnání dvou vstupů. Výstup je TRUE, pokud je hodnota prvního vstupu jiná než hodnota druhého vstupu.

Vstupy

Vstup | Typ | Význam
IN1.. | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | BOOL | Výstupní hodnotal

Příklad použití


EXP

Název funkce

EXP

Volání v ST

PROGRAM EXP_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= EXP(REAL1);
END_PROGRAM

Popis

Vrátí hodnotu exponenciální funkce o základu e.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota

Příklad použití


EXP10

Název funkce

EXP10

Volání v ST

PROGRAM EXP10_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= EXP10(REAL1);
END_PROGRAM

Popis

Vrátí hodnotu exponenciální funkce o základu 10, tj. 10^X, kde X je vstupní hodnota.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota

Příklad použití


EXP2

Název funkce

EXP2

Volání v ST

PROGRAM EXP2_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= EXP2(REAL1);
END_PROGRAM

Popis

Vrátí hodnotu exponenciální funkce o základu 2, tj. 2^X, kde X je vstupní hodnota.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota

Příklad použití


EXPT

Název funkce

EXPT

Volání v ST

PROGRAM EXPT_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= EXPT(IN1 := REAL1, IN2 := REAL2);
END_PROGRAM

Popis

Vrátí hodnotu exponenciální funkce o základu T, tj. T^X, kde X je vstupní hodnota.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_REAL | Vstupní hodnota, základ exponenciální funkce
IN2 | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota

Příklad použití


LN

Název funkce

LN

Volání v ST

PROGRAM LN_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= LN(REAL1);
END_PROGRAM

Popis

Vrátí hodnotu přirozeného logaritmu vstupní hodnoty.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota

Příklad použití


LOG

Název funkce

LOG

Volání v ST

PROGRAM LOG_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= LOG(REAL1);
END_PROGRAM

Popis

Vrátí hodnotu desítkového logaritmu.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota

Příklad použití


SQRT

Název funkce

SQRT

Volání v ST

PROGRAM SQRT_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= SQRT(REAL1);
END_PROGRAM

Popis

Vrátí hodnotu druhé odmocniny vstupu.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota

Příklad použití


ISINFINITY

Název funkce

ISINFINITY

Volání v ST

PROGRAM ISINFINITY_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= ISINFINITY(REAL1);
END_PROGRAM

Popis

Porovná hodnotu vstupní proměnné s nekonečnem. Vrátí TRUE, pokud je hodnota kladné nebo záporné nekonečno.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | BOOL | Výstupní hodnota

Příklad použití


ISNAN

Název funkce

ISNAN

Volání v ST

PROGRAM ISNAN_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= ISNAN(REAL1);
END_PROGRAM

Popis

Porovná hodnotu vstupní proměnné s NaN (Not-A-Number, tj. není číslo). Vrátí TRUE, pokud je hodnota rovna NaN.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | BOOL | Výstupní hodnota

Příklad použití


ISNEGATIVEINFINITY

Název funkce

ISNEGATIVEINFINITY

Volání v ST

PROGRAM ISNEGATIVEINFINITY_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= ISNEGATIVEINFINITY(REAL1);
END_PROGRAM

Popis

Porovná hodnotu vstupní proměnné se záporným nekonečnem. Vrátí TRUE, pokud je hodnota záporné nekonečno.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | BOOL | Výstupní hodnota

Příklad použití


ISPOSITIVEINFINITY

Název funkce

ISPOSITIVEINFINITY

Volání v ST

PROGRAM ISPOSITIVEINFINITY_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= ISPOSITIVEINFINITY(REAL1);
END_PROGRAM

Popis

Porovná hodnotu vstupní proměnné s kladným nekonečnem. Vrátí TRUE, pokud je hodnota kladné nekonečno.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | BOOL | Výstupní hodnota

Příklad použití


ADD_DT_TIME

Název funkce

ADD_DT_TIME

Volání v ST

PROGRAM ADD_DT_TIME_DEMO
    VAR
        DT1,DT2: DT;
        TIME1: TIME;
    END_VAR
    DT2:= ADD_DT_TIME(IN1:=DT1, IN2:=TIME1);
END_PROGRAM

Popis

Vrátí hodnotu součtu vstupních hodnot (datumů). Používá se pro přičítání časového přírůstku k proměnné typu datum a čas.

Vstupy

Vstup | Typ | Význam
IN1 | DT | Vstupní hodnota
IN2 | TIME | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | DT | Výstupní signál

Příklad použití


ADD_LDT_LTIME

Název funkce

ADD_LDT_LTIME

Volání v ST

PROGRAM ADD_LDT_LTIME_DEMO
 VAR
 LDT1,LDT2: LDT;
 LTIME1: LTIME;
 END_VAR
 DT2:= ADD_LDT_TIME(IN1:=LDT1, IN2:=LTIME1);
END_PROGRAM

Popis

Vrátí hodnotu součtu vstupních hodnot (datumů). Používá se pro přičítání časového přírůstku k proměnné typu datum a čas.

Vstupy

Vstup | Typ | Význam
IN1 | LDT | Vstupní hodnota
IN2 | LTIME | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LDT | Výstupní signál

Příklad použití


ADD_TOD_TIME

Název funkce

ADD_TOD_TIME

Volání v ST

PROGRAM ADD_TOD_TIME_DEMO
    VAR
        TIME1: TIME;
        TOD1,TOD2: TOD;
    END_VAR
    TOD2:= ADD_TOD_TIME(IN1:=TOD1, IN2:=TIME1);
END_PROGRAM

Popis

Vrátí hodnotu součtu vstupních hodnot (datumů). Používá se pro přičítání časového přírůstku k proměnné typu "čas ve dni".

Vstupy

Vstup | Typ | Význam
IN1 | TOD | Vstupní hodnota
IN2 | TIME | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | TOD | Výstupní signál

Příklad použití


ADD_LTOD_LTIME

Název funkce

ADD_LTOD_LTIME

Volání v ST

PROGRAM ADD_LTOD_LTIME_DEMO
 VAR
 LTIME1: LTIME;
 LTOD1,LTOD2: LTOD;
 END_VAR
 LTOD2:= ADD_LTOD_LTIME(IN1:=LTOD1, IN2:=LTIME1);
END_PROGRAM

Popis

Vrátí hodnotu součtu vstupních hodnot (datumů). Používá se pro přičítání časového přírůstku k proměnné typu "čas ve dni".

Vstupy

Vstup | Typ | Význam
IN1 | LTOD | Vstupní hodnota
IN2 | LTIME | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LTOD | Výstupní signál

Příklad použití


CONCAT_DATE_TOD

Název funkce

CONCAT_DATE_TOD

Volání v ST

PROGRAM CONCAT_DATE_TOD_DEMO
    VAR
        DT1: DT;
        DATE1: DATE;
        TOD1: TOD;
    END_VAR
    DT1:= CONCAT_DATE_TOD(IN1:=DATE1, IN2:=TOD1);
END_PROGRAM

Popis

Sloučí hodnotu vstupních časových hodnot.

Vstupy

Vstup | Typ | Význam
IN1 | DATE | Vstupní hodnota
IN2 | TOD | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | DT | Výstupní signál

Příklad použití


DIVTIME

Název funkce

DIVTIME

Volání v ST

PROGRAM DIVTIME_DEMO
    VAR
        TIME1,TIME2: TIME;
        REAL1: REAL;
    END_VAR
    TIME2:= DIVTIME(IN1:=TIME1, IN2:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu vstupního času vyděleného hodnotou druhého vstupního parametru.

Vstupy

Vstup | Typ | Význam
IN1 | TIME | Vstupní hodnota
IN2 | ANY_NUM | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | TIME | Výstupní signál

Příklad použití


MULTIME

Název funkce

MULTIME

Volání v ST

PROGRAM MULTIME_DEMO
    VAR
        TIME1,TIME2: TIME;
        REAL1: REAL;
    END_VAR
    TIME2:= MULTIME(IN1:=TIME1, IN2:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu vstupního času vynásobeného hodnotou druhého vstupního parametru.

Vstupy

Vstup | Typ | Význam
IN1 | TIME | Vstupní hodnota
IN2 | ANY_NUM | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | TIME | Výstupní hodnota

Příklad použití


SUB_DATE_DATE

Název funkce

SUB_DATE_DATE

Volání v ST

PROGRAM SUB_DATE_DATE_DEMO
    VAR
        DATE1,DATE2: DATE;
        TIME1: TIME;
    END_VAR
    TIME1:= SUB_DATE_DATE(IN1:=DATE1, IN2:=DATE2);
END_PROGRAM

Popis

Vrátí rozdíl vstupních hodnot.

Vstupy

Vstup | Typ | Význam
IN1 | DATE | Vstupní hodnota
IN2 | DATE | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | TIME | Výstupní signál

Příklad použití


SUB_DT_DT

Název funkce

SUB_DT_DT

Volání v ST

PROGRAM SUB_DT_DT_DEMO
    VAR
        DT1,DT2: DT;
        TIME1: TIME;
    END_VAR
    TIME1:= SUB_DT_DT(IN1:=DT1, IN2:=DT2);
END_PROGRAM

Popis

Vrátí rozdíl vstupních hodnot.

Vstupy

Vstup | Typ | Význam
IN1 | DT | Vstupní hodnota
IN2 | DT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | TIME | Výstupní signál

Příklad použití


SUB_DT_TIME

Název funkce

SUB_DT_TIME

Volání v ST

PROGRAM SUB_DT_TIME_DEMO
    VAR
        DT1,DT2: DT;
        TIME1: TIME;
    END_VAR
    DT2:= SUB_DT_TIME(IN1:=DT1, IN2:=TIME1);
END_PROGRAM

Popis

Vrátí rozdíl vstupních hodnot.

Vstupy

Vstup | Typ | Význam
IN1 | DT | Vstupní hodnota
IN2 | TIME | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | DT | Výstupní signál

Příklad použití


SUB_TOD_TIME

Název funkce

SUB_TOD_TIME

Volání v ST

PROGRAM SUB_TOD_TIME_DEMO
    VAR
        TOD1,TOD2: TOD;
        TIME1: TIME;
    END_VAR
    TOD2:= SUB_TOD_TIME(IN1:=TOD1, IN2:=TIME1);
END_PROGRAM

Popis

Vrátí rozdíl vstupních hodnot.

Vstupy

Vstup | Typ | Význam
IN1 | TOD | Vstupní hodnota
IN2 | TIME | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | TOD | Výstupní signál

Příklad použití


SUB_TOD_TOD

Název funkce

SUB_TOD_TOD

Volání v ST

PROGRAM SUB_TOD_TOD_DEMO
    VAR
        TOD1,TOD2: TOD;
        TIME1: TIME;
    END_VAR
    TIME1:= SUB_TOD_TIME(IN1:=TOD1, IN2:=TOD2);
END_PROGRAM

Popis

Vrátí rozdíl vstupních hodnot.

Vstupy

Vstup | Typ | Význam
IN1 | TOD | Vstupní hodnota
IN2 | TOD | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | TIME | Výstupní signál

Příklad použití


ACOS

Název funkce

ACOS

Volání v ST

PROGRAM ACOS_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= ACOS(IN:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu inverzní trigonometrické funkce k funkci cosinus.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota <-1;1>

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota (v radiánech)

Příklad použití


ACOSH

Název funkce

ACOSH

Volání v ST

PROGRAM ACOSH_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= ACOSH(IN:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu inverzní trigonometrické funkce k funkci hyperbolický cosinus.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota (větší nebo rovna jedné)

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota

Příklad použití


ASIN

Název funkce

ASIN

Volání v ST

PROGRAM ASIN_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= ASIN(IN:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu inverzní trigonometrické funkce k funkci sinus.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota <-1;1>

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota (v radiánech)

Příklad použití


ASINH

Název funkce

ASINH

Volání v ST

PROGRAM ASINH_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= ASINH(IN:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu inverzní trigonometrické funkce k funkci hyperbolický sinus.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota

Příklad použití


ATAN

Název funkce

ATAN

Volání v ST

PROGRAM ATAN_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= ATAN(IN:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu inverzní trigonometrické funkce k funkci tangens.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota (v radiánech)

Příklad použití


ATANH

Název funkce

ATANH

Volání v ST

PROGRAM ATANH_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= ATANH(IN:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu inverzní trigonometrické funkce k funkci hyperbolický tangens.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota <-1;1>

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota

Příklad použití


COS

Název funkce

COS

Volání v ST

PROGRAM COS_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= COS(IN:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu trigonometrické funkce cosinus.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota (úhel v radiánech)

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota

Příklad použití


COSH

Název funkce

COSH

Volání v ST

PROGRAM COSH_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= COSH(IN:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu trigonometrické funkce hyperbolický cosinus.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota

Příklad použití


SIN

Název funkce

SIN

Volání v ST

PROGRAM SIN_DEMO

    VAR

        REAL1,REAL2: REAL;

    END_VAR

    REAL2:= SIN(IN:=REAL1);

END_PROGRAM

Popis

Vrátí hodnotu trigonometrické funkce sinus.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota (v radiánech)

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota

Příklad použití


SINH

Název funkce

SINH

Volání v ST

PROGRAM SINH_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= SINH(IN:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu trigonometrické funkce hyperbolický sinus.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota

Příklad použití


TAN

Název funkce

TAN

Volání v ST

PROGRAM TAN_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= TAN(IN:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu trigonometrické funkce tangens.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota (v radiánech)

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota

Příklad použití


TANH

Název funkce

TANH

Volání v ST

PROGRAM TANH_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= TANH(IN:=REAL1);
END_PROGRAM

Popis

Vrátí hodnotu trigonometrické funkce hyperbolický tangens.

Vstupy

Vstup | Typ | Význam
IN | ANY_REAL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_REAL | Výstupní hodnota

Příklad použití


Sinusový Generator

Sinusový Generátor

Název bloku

B3_SINUS_GENERATOR

Volání v ST

PROGRAM B3_TEST
VAR
    O1,O2: REAL;
    FB: LIB.CORE.V1_0.B3_SINUS_GENERATOR:= (T:= T#10S, MINIMUM:= -10, MAXIMUM:= 10);
END_VAR

    FB(OUT => O1, TRES => O2);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok slouží jako generátor sinusového signálu, u kterého lze nastavit periodu, minimální a maximální hodnotu výstupního signálu. Na druhém výstupu je k dispozici čas zbývající do konce periody.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
ENABLE | BOOL | Povolení provozu | True
T | TIME | Perioda výstupního signálu | 5 s
MINIMUM | REAL | Minimální hodnota výstupního sinusového signálu | 0
MAXIMUM | REAL | Maximální hodnota výstupního sinusového signálu | 1
PAUSING | BOOL | Chování při pozastavení | True

Výstupy

Výstup | Typ | Význam
OUT | REAL | Výstupní sinusový signál
TRES | REAL | Zbývající čas do konce periody

Funkce

Výstupní signál OUT dává sinusový signál s periodou T a mezními hodnotami MINIMUM a MAXIMUM. Blok obsahuje výstupní signál Tres, což je zbývající čas od aktuálního okamžiku až do konce periody T, viz níže uvedený obrázek. Blok obsahuje booleovský vstup ENABLE, který umožňuje vypnout sinusový generátor (je vypnutý: ENABLE = false). Chování po vypnutí závisí na nastavení parametru pozastavení PAUSING (viz druhý obrázek dole):

  • PAUSING=FALSE a ENABLE=FALSE - pak je výstup OUT nastaven na hodnotu MINIMUM + MAXIMUM / 2. Když je signál ENABLE nastaven na hodnotu TRUE, pak doba periody začíná běžet od začátku.
  • PAUSING=TRUE a ENABLE=FALSE - pak se výstup OUT nemění. Když je ENABLE nastaven na hodnotu TRUE, pak se pokračuje od místa, kde se skončilo před vypnutím.

Příklad použití

Funkce B3 generuje sinusový signál na výstupu O1, s periodou 10 sekund, minimální hodnotou -10 a maximální hodnotou 10.


Pilový Generator

Pilový Generátor

Název bloku

B4_SAW_GENERATOR

Volání v ST

PROGRAM B4_TEST
VAR
    O1,O2: REAL;
    FB: LIB.CORE.V1_0.B4_SAW_GENERATOR:= (MINIMUM:= 0, MAXIMUM:= 10);
END_VAR

    FB(OUT => O1, TRES => O2);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok slouží jako generátor pilovitého signálu, u kterého lze nastavit dobu trvání minimální hodnoty, dobu běhu pily, dobu trvání maximální hodnoty, minimální a maximální hodnotu výstupního signálu. Na druhém výstupu je k dispozici čas zbývající do konce periody.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
ENABLE | BOOL | Povolení provozu | True
TMIN | TIME | Časový interval, kdy OUT=MINIMUM | 0 s
TRAMP | TIME | Časový interval, během kterého OUT roste od MINIMUM do MAXIMUM | 1 s
TMAX | TIME | Časový interval, kdy OUT=MAXIMUM | 0 s
MINIMUM | REAL | Minimální hodnota výstupního signálu | 0
MAXIMUM | REAL | Maximální hodnota výstupního signálu | 1
PAUSING | BOOL | Chování při pozastavení | True

Výstupy

Výstup | Typ | Význam
OUT | REAL | Výstupní sinusový signál
TRES | REAL | Zbývající čas do konce periody

Funkce

Výstupní signál OUT dává pilovitý signál s intervaly Tmin, Tramp a Tmax a mezními hodnotami MINIMUM a MAXIMUM. Blok obsahuje výstupní signál Tres, což je zbývající čas od aktuálního okamžiku až do konce periody T, viz níže uvedený obrázek. Blok obsahuje booleovský vstup ENABLE, který umožňuje vypnout pilovitý generátor (je vypnutý ENABLE: = false). Chování po vypnutí závisí na nastavení parametru pozastavení PAUSING (viz druhý obrázek dole):

  • PAUSING=FALSE a ENABLE=FALSE: pak je výstup OUT nastaven na hodnotu MINIMUM + MAXIMUM / 2. Když je signál ENABLE nastaven na hodnotu TRUE, pak doba periody začíná běžet od začátku.
  • PAUSING=TRUE a ENABLE=FALSE: pak se výstup OUT nemění. Když je ENABLE nastaven na hodnotu TRUE, pak se pokračuje od místa, kde se skončilo před vypnutím.

Příklad použití

Funkce B4 generuje pilovitý signál na výstupu O1, s periodou 1 sekunda, minimální hodnotou 0 a maximální hodnotou 1.


Analogový inkrementální čítač

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.

B107 Analogový inkrementální čítač.

B107 Analogový inkrementální čítač – když overfl =0. Blok poskytuje nepravdivou hodnotu, když je FUPLA vypnuta.

B107 Analogový inkrementální čítač – když overfl > 0. Blok obsahuje správnou hodnotu, když je FUPLA vypnuta.

Příklad použití

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.


Paměť real

Název bloku

B105_ANALOGMEMORY

Volání v ST

PROGRAM TEST_B105
    VAR
    REAL0, REAL1,REAL2,REAL3,RAL4,REAL5 :REAL;
    SAVE :BOOL;
    FB: LIB.CORE.V1_0.B105_ANALOGMEMORY;
    END_VAR
        FB(CLOCKRISING := SAVE, IN0:=REAL0, IN1:=REAL1, IN2:=REAL2, OUT0=>REAL3, OUT1=>REAL4, OUT2=>REAL5);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok slouží jako paměť typu real. Blok si zapamatuje až 16 hodnot typu real. Zapamatovává si hodnoty buď v reakci na náběžnou hranu (clockrising) nebo na sestupnou hranu (clockfalling).

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
CLOCKRISING | BOOL | Náběžnou hranu se uloží vstupy na výstupy. | False
CLOCKFALLING | BOOL | Sestupnou hranou se uloží vstupy na výstupy. | False
INITIALIZE | REAL | Když initialize = true, tak se na výstupy uloží initvalue | False
IN | MULTIIOREAL | Pole vstupů real z bloku helper_multiinreal | [0,0,...0]
INITVALUE | REAL | Hodnota nastavovaná při inicializaci initialize = true. | 0
IN0,IN1,..,IN15 | REAL | Jednotlivé vstupy |

Výstupy

Výstup | Typ | Význam
OUT | MULTIIOREAL | Pole výstupů real do bloku helper_multioutreal
OUT0,OUT1,..,OUT15 | REAL | Jednotlivé výstupy

Funkce

Signál clockrising reaguje na náběžnou hranu a uloží na výstup vstupy. Stejně tak clockfalling reaguje na sestupnou hranu a uloží vstupy na výstup. Když je initialize = true, tak se na výstup uloží hodnota initvalue. V případě, že initialize = false, výstupy jsou nastaveny podle vstupů. Vstupy je možno připojit dvěma způsoby: buď jako multireal na vstup in nebo samostatně na vstupy in0, in1,... Zvolený signál myší připojíte na vstup in0 a in1, další signály připojujete tak, že táhnete myší signál na modul a v modulu na červený čtverec, kde připojíte proměnnou na in +. Stejně se připojují i výstupy.

Příklad použití

Po příchodu náběžné hrany od signálu bool1 se vstupy uloží na výstup. Vstupy a výstupy jsem připojil jednotlivě.


Posuvný registr

Název bloku

B110_SHIFT_REGISTER

Volání v ST

PROGRAM TEST B110
    VAR
    REAL1: REAL;
    BOOL1: BOOL;
    ARRAYREAL: ARRAY[1..24] OF REAL;
    FB : LIB.CORE.V1_0.B110_SHIFT_REGISTER;
    END_VAR
     FB(IN:=REAL1,BR:=BOOL1,OUT=>ARRAYREAL);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Posuvná paměť na 24 analogových hodnot.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | REAL | Vstupní hodnota | 0
BR | BOOL | Řízení posunu (při náběžné hraně) | False

Výstupy

Výstup | Typ | Význam
OUT | ARRAY[1..24] OF REAL | Pole 1..24
SHIFTTIME | DT | Čas, kdy byl poslední posun

Funkce

Blok funguje jako posuvný registr, při náběžné hraně na vstupu br dojde k uložení vstupní hodnoty in na první pozici výstupu out a všechen předchozí obsah na výstupu se posune o jednu pozici. Výstup shifttime říká, kdy bylo poslední uložení nové hodnoty.

Příklad použití

Blok se používá pro tvorbu orientačních sloupcových grafů, pro výpočty hodinových diferencí atd.


Paměť lint

Název bloku

B106_INTEGERMEMORY

Volání v ST

PROGRAM TEST B106
    VAR
    LINT0,LINT1,LINT2,LINT3,LINT4,LINT5: LINT;
    SAVE: BOOL;
    FB: LIB.CORE.V1_0.B106_INTEGERMEMORY;
    END_VAR
        FB(CLOCKRISING := SAVE, IN0:=LINT0, IN1:=LINT1, IN2:=LINT2, OUT0=>LINT3, OUT1=>LINT4, OUT2=>LINT5);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok slouží jako paměť typu lint. Blok si zapamatuje až 16 hodnot typu lint. Hodnoty se zapisují na výstupy buď v reakci na náběžnou hranu (clockrising), nebo na sestupnou hranu (clockfalling).

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
CLOCKRISING | BOOL | Náběžnou hranou se uloží vstupy na výstupy. | False
CLOCKFALLING | BOOL | Sestupnou hranou se uloží vstupy na výstupy. | False
INITIALIZE | LINT | Když initialize = true, na výstupy se uloží initvalue | False
IN | MULTIIOLINT | Pole vstupů lint z bloku helper_multiinreal | [0,0,...,0]
INITVALUE | LINT | Hodnota nastavovaná při inicializaci (initialize = true). | 0
IN0,IN1,..,IN15 | LINT | Jednotlivé vstupy |

Výstupy

Výstup | Typ | Význam
OUT | MULTIIOLINT | Pole výstupů real do bloku helper_multioutreal
OUT0,OUT1,..,OUT15 | LINT | Jednotlivé výstupy

Funkce

Signál clockrising reaguje na náběžnou hranu a uloží vstupy na výstupy. Stejně tak clockfalling reaguje na sestupnou hranu a uloží vstupy na výstupy. Když je initialize = true, tak se na výstup uloží hodnota initvalue. V případě, že initialize = false, výstupy se nastaví podle vstupů. Vstupy je možno připojit dvěma způsoby: buď jako multireal na vstup in nebo samostatně na vstupy in0,in1,... Zvolený signál myší připojíte na vstupy in0 a in1, další signály připojujete tak, že najedete myší signál na modul a v modulu na červený čtverec, kde připojíte proměnnou na in +. Stejně se připojují i výstupy.

Příklad použití

Při náběžné hraně na vstupu clockrising se vstupy uloží na výstup.


Posuvný registr Integer

Název bloku

B111_INTEGER_SHIFT_REGISTER

Volání v ST

PROGRAM TEST B111
    VAR
    REAL1: REAL;
    BOOL1: BOOL;
    ARRAYINT: ARRAY[1..24] OF INT;
    FB : LIB.CORE.V1_0.B110_SHIFT_REGISTER;
    END_VAR
     FB(IN:=INT1,BR:=BOOL1,OUT=>ARRAYINT);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Posuvná paměť na 24 hodnot typu int.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | INT | Vstupní hodnota | 0
BR | BOOL | Řízení posunu (při náběžné hraně) | False

Výstupy

Výstup | Typ | Význam
OUT | ARRAY[1..24] OF INT | Pole 1..24
SHIFTTIME | DT | Čas, kdy byl poslední posun

Funkce

Blok funguje jako posuvný registr, při náběžné hraně na vstupu br dojde k uložení vstupní hodnoty in na první pozici výstupu out a všechen předchozí obsah na výstupu se posune o jednu pozici. Výstup shifttime říká, kdy bylo poslední uložení nové hodnoty.

Příklad použití


Integrátor

Název bloku

B113_INTEGRATOR

Volání v ST

PROGRAM TEST B113
    VAR
  BOOL1,BOOL2 :BOOL;
  REAL1,REAL2,REAL3: REAL;;
    FB: LIB.CORE.V1_0.B113_INTEGRATOR;
    END_VAR
    FB(IN:=REAL1, ENABLED:=BOOL1,RESET:=BOOL2,OUT=>REAL2,LASTY=>REAL3);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok integruje vstupní signál in v čase: pokud na vstup přivedeme např. výkon ve wattech, na výstupu bloku jsou kumulované wattsekundy.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | REAL | Vstupní data | 0
ENABLED | BOOL | Povolení integrování vstupu | False
RESET | BOOL | Reset výstupní hodnoty | False

Výstupy

Výstup | Typ | Význam
OUT | REAL | Aktuální výsledek
LASTY | REAL | Výsledek před posledním resetem

Funkce

Funkce integruje vstupní signál in podle času. Interval výsledku od doby posledního reset a po dobu Enabled=true. Po resetu se výsledek uloží na výstup lasty.

Příklad použití

Příklad integrování. Aktuální hodnota je na vstupu in (10), tato hodnota se každou vteřinu přičítá do výsledné hodnoty out (zde 21120). Výsledek před posledním resetem se dá použít např. pro pozdější (následný) odečet hodnoty z minulého dne, pokud by se integrátor resetoval o půlnoci.


RAND

Název funkce

RAND

Volání v ST

PROGRAM RAND_DEMO
    VAR
        LR1: LREAL;
    END_VAR
    LR1:= RAND();
END_PROGRAM

Popis

Vrátí hodnotu náhodného čísla v intervalu nula až jedna.

Výstupy

Výstup | Typ | Význam
=> | LREAL | Výstupní hodnota

Příklad použití


Analogový demultiplexer

Název bloku

B10_ANALOGUE_DEMULTIPLEXER

Volání v ST

PROGRAM B10_TEST
VAR
    INPUT:REAL;
    SELECTOR:INT;
    O1,O2: REAL;
    FB: LIB.CORE.V1_0.B10_ANALOGUE_DEMULTIPLEXER;
END_VAR
    FB(IN:=INPUT, SEL:=SELECTOR);
    O1:=FB.OUT[1];
    O2:=FB.OUT[2];
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok implementuje demultiplexer pro hodnoty formátu REAL.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | REAL | Vstupní hodnota | 0
SEL | INT | Volič výstupu | 0
DEFAULT | REAL | Základní hodnota všech výstupů | 0

Výstupy

Výstup | Typ | Význam
OUT | ARRAY [1..16] OF REAL | Výstupní signál

Funkce

Blok implementuje analogový demultiplexer. Nastavení SEL=1 znamená, že IN je nakopírováno na výstup OUT[1], SEL=2 znamená, že IN je nakopírováno na výstup OUT[2], atd. Na všech ostatních výstupech je nastavena hodnota podle parametru DEFAULT. Funkce v případě špatného nastavení (SEL<1 nebo SEL>16): všechny výstupy jsou nastaveny na hodnotu DEFAULT.

Příklad použití


Integer demultiplexer

Název bloku

B12_INTEGER_DEMULTIPLEXER

Volání v ST

PROGRAM B12_TEST
VAR
        INPUT:INT;
    SELECTOR:INT;
    O1,O2: INT;
    FB: LIB.CORE.V1_1.B12_INTEGER_DEMULTIPLEXER;
END_VAR
    FB(IN:=INPUT, SEL:=SELECTOR);
    O1:=FB.OUT[1];
    O2:=FB.OUT[2];
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.1

Popis

Blok implementuje demultiplexer pro hodnoty formátu INT.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | INT | Vstupní hodnota | 0
SEL | INT | Volič výstupu | 0
DEFAULT | INT | Základní hodnota všech výstupů | 0

Výstupy

Výstup | Typ | Význam
OUT | ARRAY [1..16] OF INT | Výstupní signál

Funkce

Blok implementuje analogový demultiplexer. Nastavení SEL=1 znamená, že IN je nakopírováno na výstup OUT[1], SEL=2 znamená, že IN je nakopírováno na výstup OUT[2], atd. Na všech ostatních výstupech je nastavena hodnota podle parametru DEFAULT. Funkce v případě špatného nastavení (SEL<1 nebo SEL>16): všechny výstupy jsou nastaveny na hodnotu DEFAULT.

Příklad použití


MUX

Název funkce

MUX

Volání v ST

PROGRAM MUX_DEMO
     VAR
       REAL1: REAL;
           INT1:INT;
     END_VAR
    REAL3:= MUX(K:=0, IN0:=1, IN2:=3, IN3:=4);
END_PROGRAM

Popis

Funkce provádí multiplexer pro vstupní signály. Vstupní signál K určuje, který vstup IN bude přiveden na výstup funkce. Při hodnotě K=0 je na výstupu hodnota vstupu IN0. Při hodně K, která je mimo rozsah definovaných vstupů, bude na výstupu vždy hodnota z prvního platného vstupu.

Vstupy

Vstup | Typ | Význam
IN0.. | ANY | Vstupní hodnota
K | ANY_INT | Vstupní hodnota, selektor

Výstupy

Výstup | Typ | Význam
=> | ANY | Výstupní hodnota

Příklad použití


SEL

Název funkce

SEL

Volání v ST

PROGRAM SEL_DEMO
     VAR
       REAL1: REAL;
           BOOL1:BOOL;
     END_VAR
    REAL3:= SEL(G:=BOOL1, IN0:=1, IN1:=3);
END_PROGRAM

Popis

Funkce realizuje přepínač pro dva vstupní signály, který je řízený binárním vstupem G. Při hodnotě G=0 je na výstupu hodnota vstupu IN0.

Vstupy

Vstup | Typ | Význam
IN0 | ANY | Vstupní hodnota
IN1 | ANY | Vstupní hodnota
G | BOOL | Vstupní hodnota, selektor

Výstupy

Výstup | Typ | Význam
=> | ANY | Výstupní signál

Příklad použití


GETDELTATIME

Název funkce

GETDELTATIME

Volání v ST

PROGRAM GETDELTATIME_DEMO
    VAR
        TIME1: TIME;
    END_VAR
    TIME1:= GETDELTATIME();
END_PROGRAM

Popis

Vrátí hodnotu rozdílu času od minulé iterace.

Výstupy

Výstup | Typ | Význam
=> | TIME | Výstupní hodnota

Příklad použití

Pro úsporu prostředků lze použít funkci GELDELTATIME4.


GETDELTATIME4

Název funkce

GETDELTATIME4

Volání v ST

PROGRAM GETDELTATIME4_DEMO
    VAR
        UD1: UDINT;
    END_VAR
    UD1:= GETDELTATIME4();
END_PROGRAM

Popis

Vrátí hodnotu rozdílu času od minulé iterace, jednotkou je ms (milisekunda).

Výstupy

Výstup | Typ | Význam
=> | UDINT | Výstupní hodnota

Příklad použití

Alternativně lze použít funkci GELDELTATIME.


Časový posun letní/zimní čas

Název funkce

GETDSTOFFSET

Volání v ST

PROGRAM GETDSTOFFSET_DEMO
    VAR
        TIME_OUT: TIME;
    END_VAR
    TIME_OUT:=GETDSTOFFSET(T:=GETLOCALTIME());
END_PROGRAM

Popis

Blok vrací posun času. Když je zimní čas, vrací 0 hodin, při letním čase vrací 1 hodinu. Ke změně dochází o půlnoci.

Vstupy

Vstup | Typ | Význam
T | DT | Vstupní datum a čas.

Výstupy

Výstup | Typ | Význam
=> | TIME | Výstupní hodnota

Příklad použití


GETEVALTIME

Název funkce

GETEVALTIME

Volání v ST

PROGRAM GETEVALTIME_DEMO
    VAR
        TIME1: TIME;
    END_VAR
    TIME1:= GETEVALTIME();
END_PROGRAM

Popis

Vrátí hodnotu celkového času běhu.

Výstupy

Výstup | Typ | Význam
=> | TIME | Výstupní hodnota

Příklad použití

Pro úsporu prostředků lze použít funkci GETEVALTIME4.


GETEVALTIME4

Název funkce

GETEVALTIME4

Volání v ST

PROGRAM GETEVALTIME4_DEMO
    VAR
        UD1: UDINT;
    END_VAR
    UD1:= GETEVALTIME4();
END_PROGRAM

Popis

Vrátí hodnotu celkového času běhu, jednotkou je ms (milisekunda).

Výstupy

Výstup | Typ | Význam
=> | UDINT | Výstupní hodnota

Příklad použití

Alternativně lze použít funkci GETEVALTIME.


GETLOCALTIME

Název funkce

GETLOCALTIME

Volání v ST

PROGRAM GETLOCALTIME_DEMO
    VAR
        DT1: DT;
    END_VAR
    DT1:= GETLOCALTIME();
END_PROGRAM

Popis

Vrátí hodnotu místního času.

Výstupy

Výstup | Typ | Význam
=> | DT | Výstupní hodnota

Příklad použití


Časový posun

Název funkce

GETTIMEZONEOFFSET

Volání v ST

PROGRAM GETTIMEZONEOFFSET_DEMO
    VAR
        TIME_OUT: TIME;
    END_VAR
    TIME_OUT:=GETTIMEZONEOFFSET();
END_PROGRAM

Popis

Blok vrací posun času podle časové zóny, která je nastavená v projektu.

Výstupy

Výstup | Typ | Význam
=> | TIME | Výstupní hodnota

Příklad použití


GETUTCTIME

Název funkce

GETUTCTIME

Volání v ST

PROGRAM GETUTCTIME_DEMO
    VAR
        DT1: DT;
    END_VAR
    DT1:= GETUTCTIME();
END_PROGRAM

Popis

Vrátí hodnotu UTC času.

Výstupy

Výstup | Typ | Význam
=> | DT | Výstupní hodnota

Příklad použití


Čas PC

Název bloku

B99_PCTIMENODE

Volání v ST

PROGRAM TEST B99
    VAR
     LINT1 : LINT; // CAS V SEKUNDÁCH
     SINT1,SINT2,SINT3 :SINT;
    END_VAR
    LINT1 := LIB.CORE.V1_0.B99_PCTIMENODE(LOCAL:=TRUE, SEC=>SINT1,MIN=>SINT2,HOUR=>SINT3);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok vrací systémový čas PLC ve formátu UTC nebo podle místní časové zóny. Dále vrací dílčí části času.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
LOCAL | BOOL | Místní nebo UTC čas (UTC =false, místní =true) | True

Výstupy

Výstup | Typ | Význam
=> | LINT | Čas v s
MSEC | INT | Milisekundy (Není podporováno v miniPLC)
SEC | SINT | Sekundy
MIN | SINT | Minuty
HOUR | SINT | Hodiny
DAY | SINT | Dny
WDAY | SINT | Den v týdnu (0 = neděle, 1 = pondělí, ..., 6 = sobota)
MON | SINT | Měsíce
YEAR | INT | Roky
DAYLIGHT | BOOL | daylight=true znamená, že právě je letní čas (má význam jen u lokálního času)
REMAINDAY | SINT | Počet dní do konce měsíce (poslední den: remainday = 0)

Funkce

Blok nabízí aktuální čas SoftPLC. Výstup => dává celkový čas v sekundách od 1.1.1970, 0:00 a výstup wday určuje den v týdnu (0 = neděle, 1 = pondělí, ..., 6 = sobota).

Parametr local určuje, zda jsou nastaveny výstupy na místní čas počítače nebo na čas UTC (local=true znamená čas PC).

Poznámka

V MiniPLC projektů výstup msec=0.

Příklad použití

Blok vrací místní čas a informaci o tom že je letní čas. Výstup REMAINDAY se dá použít pro vzorkování, odečty nebo hlášení kumulovaných hodnot (kalorimetry, elektroměry...) ke konci měsíce - nemusíme řešit, zda měsíc má 31, 30 nebo 28 dní, odečet se provede, je-li REMAINDAY = 0.


Čas/Datum převod na sekundy

Název bloku

B97_TIME_DATE_TO_TOTAL_SECONDS

Volání v ST

PROGRAM TEST_B97
    VAR
    SINT1,SINT2,SINT3,SINT4,SINT5,SINT7 :SINT;
    INT6:INT6;
    UDINT1: UDINT;
    FB: LIB.CORE.V1_0.B97_TIME_DATE_TO_TOTAL_SECONDS;
    END_VAR
    FB(SEC:= SINT1, MIN:= SINT2,HOUR:=SINT3,DAY:=SINT4,MON:=SINT5,YEAR:=INT6,TOT=>UDINT1,WDAY=>SINT7);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok převádí datum a čas na celkový počet sekund. Druhým výstupem je den v týdnu.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
SEC | SINT | Sekundy | 0
MIN | SINT | Minuty | 0
HOUR | SINT | Hodiny | 0
DAY | SINT | Dny | 0
MON | SINT | Měsíce | 0
YEAR | INT | Roky | 0

Výstupy

Výstup | Typ | Význam
TOT | UDINT | Výsledek v sekundách od 1.1.1970, 00:00 UTC
WDAY | SINT | Den v týdnu (0 = neděle, 1 = pondělí, ..., 6 = sobota)

Funkce

Blok převádí datum a čas na výslednou hodnotu v sekundách od 1.1.1970, 00:00. Navíc, výstup wday určuje den v týdnu (0 = neděle, 1 = pondělí, ..., 6 = sobota). Například 1.1.1970 01:00 – hodinu po referenčním čase (tj., sec=0, min=0, hour=1, day=1, mon=1, year=1970) výstupy jsou tot=3600 a wday=4.

Příklad použití


Celkem sekund - převod na Čas/Datum

Název bloku

B98_TOTAL_SECONDS_TO_TIME_DATE

Volání v ST

PROGRAM TEST B98
    VAR
    SINT1,SINT2,SINT3,SINT4,SINT5,SINT7: SINT;
    INT6,INT8: INT;
    FB : LIB.CORE.V1_0.B98_TOTAL_SECONDS_TO_TIME_DATE;
    END_VAR
    FB(IN:=GETLOCALTIME(),SEC=>SINT1,MIN=>SINT2,HOUR=>SINT3,DAY=>SINT4,MON=>SINT5,YEAR=>INT6,WDAY=>SINT7,REAMINDAY=>INT8);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok převede celkovou hodnotu datumu a času na dílčí části.

Vstupy

Vstup | Typ | Význam
IN | DT | Vstup datumu a času

Výstupy

Výstup | Typ | Význam
SEC | SINT | Sekundy
MIN | SINT | Minuty
HOUR | SINT | Hodiny
DAY | SINT | Dny
MON | SINT | Měsíce
YEAR | INT | Roky
WDAY | SINT | Den v týdnu (0 = neděle, 1 = pondělí, ..., 6 = sobota)
REMAINDAY | INT | Počet dní do konce měsíce (poslední den: remainday = 0)

Funkce

Blok převádí celkový čas in referenčního formátu 1.1.1970, 00:00. Výsledný výstupy sec, min, hour, day, mon a year. Například in=3600 výstup je následující: sec=0, min=0, hour=1, day=1, mon=1, year=1970. Kromě toho výstup wday určuje den v týdnu (0 = neděle, 1 = pondělí, ..., 6 = sobota). Všimněte si, že vstupní hodnoty mají být UTC čas. Když in < 0, předpokládá se, že in = 0.

Příklad použití


COMPOSEDATETIME

Název bloku

COMPOSEDATETIME

Volání v ST

PROGRAM COMPOSEDATETIME_DEMO
    VAR
        DT1: DT;
        Y,MILIS:INT;
        M,D,H,MI,S:SINT;
    END_VAR
    DT := COMPOSEDATETIME(YEAR := Y, MONTH := M, DAY := D, HOURS := H, MINUTES := MI, SECONDS := S, MILISECONDS := MILIS);
END_PROGRAM

Popis

Vrátí hodnotu odpovídající kombinaci vstupních časových hodnot, zadaných ve formě celých čísel.

Vstupy

Vstup | Typ | Význam
YEAR | INT | Vstupní hodnota
MONTH | SINT | Vstupní hodnota
DAY | SINT | Vstupní hodnota
HOURS | SINT | Vstupní hodnota
MINUTES | SINT | Vstupní hodnota
SECONDS | SINT | Vstupní hodnota
MILISECONDS | INT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | DT | Výstupní signál

Příklad použití


Převod na lokální čas

Název funkce

CONVERTTOLOCALTIME

Volání v ST

PROGRAM CONVERTTOLOCALTIME_DEMO
    VAR
        TIME_OUT: DT;
    END_VAR
    TIME_OUT:=CONVERTTOLOCALTIME(T:=GETUTCTIME());
END_PROGRAM

Popis

Blok převede datum a čas ve formátu UTC na lokální datum a čas.

Vstupy

Vstup | Typ | Význam
T | DT | Vstupní UTC datum a čas.

Výstupy

Výstup | Typ | Význam
=> | DT | Výstupní lokální datum a čas.

Příklad použití


Převod na UTC čas

Název funkce

CONVERTTOUTCTIME

Volání v ST

PROGRAM CONVERTTOUTCTIME_DEMO
    VAR
        TIME_OUT: DT;
    END_VAR
    TIME_OUT:=CONVERTTOUTCTIME(T:=GETLOCALTIME());
END_PROGRAM

Popis

Blok převede lokální datum a čas (podle časové zóny) na UTC.

Vstupy

Vstup | Typ | Význam
T | DT | Vstupní lokální datum a čas.

Výstupy

Výstup | Typ | Význam
=> | DT | Výstupní UTC datum a čas.

Příklad použití


DATETOTALDAYS

Název funkce

DATETOTALDAYS

Volání v ST

PROGRAM DATETOTALDAYS_DEMO
    VAR
        D1: DATE;
        LR1:LREAL;
    END_VAR
    LR1 := DATETOTALDAYS(IN1 := D1);
END_PROGRAM

Popis

Vrátí hodnotu odpovídající počtu dní od začátku našeho letopočtu.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_DATE | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LREAL | Výstupní signál

Příklad použití


DATETOTALHOURS

Název funkce

DATETOTALHOURS

Volání v ST

PROGRAM DATETOTALHOURS_DEMO
    VAR
        DT1: DT;
        LR1:LREAL;
    END_VAR
    LR1 := DATETOTALHOURS(IN1 := DT1);
END_PROGRAM

Popis

Vrátí hodnotu odpovídající počtu hodin od začátku našeho letopočtu.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_DATE | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LREAL | Výstupní signál

Příklad použití


DATETOTALMILLISECONDS

Název funkce

DATETOTALMILLISECONDS

Volání v ST

PROGRAM DATETOTALMILLISECONDS_DEMO
    VAR
        DT1: DT;
        LR1:LREAL;
    END_VAR
    LR1 := DATETOTALMILLISECONDS(IN1 := DT1);
END_PROGRAM

Popis

Vrátí hodnotu odpovídající počtu milisekund (tisícin sekundy) od začátku našeho letopočtu.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_DATE | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LREAL | Výstupní signál

Příklad použití


DATETOTALMINUTES

Název funkce

DATETOTALMINUTES

Volání v ST

PROGRAM DATETOTALMINUTES_DEMO
    VAR
        DT1: DT;
        LR1:LREAL;
    END_VAR
    LR1 := DATETOTALMINUTES(IN1 := DT1);
END_PROGRAM

Popis

Vrátí hodnotu odpovídající počtu minut od začátku našeho letopočtu.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_DATE | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LREAL | Výstupní signál

Příklad použití


DATETOTALSECONDS

Název funkce

DATETOTALSECONDS

Volání v ST

PROGRAM DATETOTALSECONDS_DEMO
    VAR
        DT1: DT;
        LR1:LREAL;
    END_VAR
    LR1 := DATETOTALSECONDS(IN1 := DT1);
END_PROGRAM

Popis

Vrátí hodnotu odpovídající počtu sekund od začátku našeho letopočtu.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_DATE | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LREAL | Výstupní signál

Příklad použití


DECOMPOSEDATE

Název funkce

DECOMPOSEDATE

Volání v ST

PROGRAM DECOMPOSEDATE_DEMO
    VAR
        DT1: DT;
        O1,Y:INT;
        M,D,DOW:SINT;
    END_VAR
    O1 := DECOMPOSEDATE(T := DT1, YEAR => Y, MONTH => M, DAY => D, DAYOFWEEK => DOW);
END_PROGRAM

Popis

Provede dekompozici proměnné datum a čas na jednotlivé složky času v celočíselných hodnotách.

Vstupy

Vstup | Typ | Význam
T | DT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | INT | Výstupní signál, hodnota 1 odpovídá úspěšnému vykonání převodu.
YEAR | INT | Počet let
MONTH | SINT | Počet měsíců
DAY | SINT | Počet dnů
DAYOFWEEK | SINT | Den v týdnu (Pondělí 1 ... Neděle 7)

Příklad použití


DECOMPOSETIME

Název funkce

DECOMPOSETIME

Volání v ST

PROGRAM DECOMPOSETIME_DEMO
    VAR
        DT1: DT;
        O1,MS:INT;
        H,M,S:SINT;
    END_VAR
    O1 := DECOMPOSETIME(T := DT1, HOURS => H, MINUTES => M, SECONDS => S, MILLISECONDS => MS);
END_PROGRAM

Popis

Provede dekompozici proměnné datum a čas na jednotlivé složky času v celočíselných hodnotách.

Vstupy

Vstup | Typ | Význam
T | DT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | INT | Výstupní signál, hodnota 1 odpovídá úspěšnému vykonání převodu.
HOURS | INT | Počet hodin
MINUTES | SINT | Počet minut
SECONDS | SINT | Počet sekund
MILLISECONDS | INT | Počet milisekund

Příklad použití


Konverze času

Název bloku

B100_TIME_CONVERSION

Volání v ST

PROGRAM B100_TEST
VAR
    XSEC, XMIN, XHOUR: UDINT;
    YSEC ,YMIN, YHOUR: UDINT;
    FB: LIB.CORE.V1_0.B100_TIME_CONVERSION;
END_VAR

    FB(SEC := XSEC MIN := XMIN, HOUR := XHOUR, YSEC => YSEC, YMIN => YMIN, YHOUR => YHOUR);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok slouží k převodu libovolného tvaru data a času na výstupní hodnoty rozpočítané do správného formátu.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
SEC | UDINT | libovolný počet sekund | 0
MIN | UDINT | libovolný počet minut | 0
HOUR | UDINT | libovolný počet hodin | 0
DAY | UDINT | libovolný počet dní | 0
MON | UDINT | libovolný počet měsíců | 0
YEAR | UDINT | libovolný počet let | 0

Výstupy

Výstup | Typ | Význam
YSEC | UDINT | počet sekund
YMIN | UDINT | počet minut
YHOUR | UDINT | počet hodin
YDAY | UDINT | počet dní
YMON | UDINT | počet měsíců
YYEAR | UDINT | počet let

Funkce

Vstupní signály lze nastavit libovolně od nuly výše. Na výstupu se datum a čas přepočte do správného formátu. Při přepočtech se měsíc považuje za 30 dní. Při přepočtu na rok se rok bere jako 365 dní a čtvrt dne.

Příklad použití

Funkce sečte vstupy 85 s, 75 min a 5 hodin. Výsledkem je správný formát 6 hodin, 16 min a 25 s.


TIMETOTALDAYS

Název funkce

TIMETOTALDAYS

Volání v ST

PROGRAM TIMETOTALDAYS_DEMO
    VAR
        T1: TIME;
        LR1:LREAL;
    END_VAR
    LR1 := DATETOTALDAYS(IN1 := T1);
END_PROGRAM

Popis

Vrátí hodnotu odpovídající počtu dní jako desetinné číslo.

Vstupy

Vstup | Typ | Význam
IN1 | TIME | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LREAL | Výstupní hodnota

Příklad použití


TIMETOTALHOURS

Název funkce

TIMETOTALHOURS

Volání v ST

PROGRAM TIMETOTALHOURS_DEMO
    VAR
        T1: TIME;
        LR1:LREAL;
    END_VAR
    LR1 := DATETOTALHOURS(IN1 := T1);
END_PROGRAM

Popis

Vrátí hodnotu odpovídající počtu hodin jako desetinné číslo.

Vstupy

Vstup | Typ | Význam
IN1 | TIME | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LREAL | Výstupní hodnota

Příklad použití


TIMETOTALMILLISECONDS

Název funkce

TIMETOTALMILLISECONDS

Volání v ST

PROGRAM TIMETOTALMILLISECONDS_DEMO
    VAR
        T1: TIME;
        LR1:LREAL;
    END_VAR
    LR1 := DATETOTALMILLISECONDS(IN1 := T1);
END_PROGRAM

Popis

Vrátí hodnotu odpovídající počtu milisekund (tisícin sekundy).

Vstupy

Vstup | Typ | Význam
IN1 | TIME | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LREAL | Výstupní hodnota

Příklad použití


TIMETOTALMINUTES

Název funkce

TIMETOTALMINUTES

Volání v ST

PROGRAM TIMETOTALMINUTES_DEMO
    VAR
        T1: TIME;
        LR1:LREAL;
    END_VAR
    LR1 := DATETOTALMINUTES(IN1 := T1);
END_PROGRAM

Popis

Vrátí hodnotu odpovídající počtu minut jako desetinné číslo.

Vstupy

Vstup | Typ | Význam
IN1 | TIME | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LREAL | Výstupní hodnota

Příklad použití


TIMETOTALSECONDS

Název funkce

TIMETOTALSECONDS

Volání v ST

PROGRAM TIMETOTALSECONDS_DEMO
    VAR
        T1: TIME;
        LR1:LREAL;
    END_VAR
    LR1 := TIMETOTALSECONDS(IN1 := T1);
END_PROGRAM

Popis

Vrátí hodnotu odpovídající počtu sekund jako desetinné číslo.

Vstupy

Vstup | Typ | Význam
IN1 | TIME | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LREAL | Výstupní hodnota

Příklad použití


Filtr

Název bloku

B86_FILTER

Volání v ST

PROGRAM TEST FILTER
    VAR
    REAL1,REAL2,REAL3 :REAL;
    FB: LIB.CORE.V1_0.B86_FILTER;
    END_VAR
        FB(IN:= REAL1, INDT:=REAL2, OUT=>REAL3);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok slouží k analogové filtraci vstupního signálu - potlačení náhlých výkyvů či špiček.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | REAL | Vstupní zkreslený signál | 0
INA | REAL | NEPOUŽÍVAT | 0
INDT | REAL | Efektivní doba filtrace. Nastavte DT jako 10-30 % z období užitečného signálu (Tperiod = 900 s => DT = 90-270 s) | 90

Výstupy

Výstup | Typ | Význam
OUT | REAL | Filtrovaný signál

Funkce

Blok provádí analogovou filtraci. Výstup out dává vážený průměr, kde starší hodnoty jsou méně důležité, tedy jsou brány s menší váhou. Váhy jsou určeny parametrem indt podle vzorce q=1/(1+4Dt/t) (tzv. exponenciální rozpad).

B86 Filtr – Sinusový signál s periodou T=10 s. X je signál s bílým šumem.

B86 Filtr – x - sinusový signál s bílým šumem a y - filtrovaný signál s parametrem indt = 3.

B86 Filtr – x - sinusový signál s bílým šumem a y - filtrovaný signál s parametrem indt = 6.

B86 Filtr – x - sinusový signál s bílým šumem a y - filtorvaný signál s parametrem indt = 9.

B86 Filtr – x - sinusový signál s bílým šumem a y - filtrovaný signál s parametrem indt = 20.

Zvyšováním parametru indt mimo doporučený rozsah se zvyšuje zpoždění signálu oproti signálu bez šumu. Zároveň dochází k vyhlazení původního sinusového signálu, což způsobuje snížení amplitudy výstupního signálu.

Příklad použití


Pulsní šířková modulace

Pulsně šířková modulace

Název bloku

B87_PULSE_WIDTH_MODULATION

Volání v ST

PROGRAM TEST_B87
    VAR
    BOOL1,BOOL2 : BOOL;
    REAL1 :REAL;
    TIME1 : TIME;
    FB: LIB.CORE.V1_0.B87_PULSE_WIDTH_MODULATION;
    END_VAR
    FB(IN:= REAL1, ENABLED:= BOOL1,T:=T#10S,MIN:=0,MAX:=100,OUT=>BOOL2,TRES=>TIME1);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok převádí vstupní signál 0...100 % v pulsně šířkovou modulaci, tedy v binární periodický signál, jehož perioda je určena parametrem T a střída (poměr aktivní části periody k délce periody) vstupní hodnotou IN.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | REAL | Vstupní hodnota | 0
ENABLE | BOOL | Povolení generátoru (true - generátor běží) | True
T | TIME | Perioda generátoru | 15 m
MIN | REAL | Minimální hodnota spuštění generátoru | 0
MAX | REAL | Maximální hodnota spuštění generátoru | 100

Výstupy

Výstup | Typ | Význam
OUT | BOOL | Výstup generátoru
OUTN | BOOL | Negace výstupu generátoru
TRES | TIME | Zbývající čas periody v ms

Funkce

Blok implementuje pulsní šířkovou modulaci. Vstup In je převeden na periodický logický signál s periodou t. Hodnota vstupního signálu je proporcionálně převedena (pro min <= In <= max). Když In <= min pak out = false po celou dobu t, když In >= max pak out=true po celou dobu t.

Výstup outn je negací výstupu out. Blok obsahuje zbývající čas tres jako výstup, což je čas, zbývající do konce aktuální periody.

Vstup enable umožňuje vypnout Blok B87 a nastaví výstup následně out=false a tres=0.

Funkce v případě špatného nastavení

Když vstup in je skryt nebo min > max nebo min <= 0 pak out= false.

Na obrázku je jako příklad vstupem x hodnota od 0 do 1, do bloku se však přivádí hodnota od 0 do 100.

Příklad použití

U výstupních modulů s triaky pro řízení modulovaného el. ohřevu nebo termických pohonů radiátorových ventilů. Nepoužívejte u výstupních modulů s reléovými výstupy, relé by se ucvakalo.


Změna stavu s konstantním sklonem

Název bloku

B84_SLEW_RATE_LIMIT

Volání v ST

PROGRAM TEST B84
    VAR
    REAL1,REAL2 : REAL;
    FB : LIB.CORE.V1_0.B84_SLEW_RATE_LIMIT;
    END_VAR
    FB(IN:=REAL1, TDOWN:=T#3S, TUP:=T#3S, OUT=>REAL2);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok zamezí skokovým změnám výstupu, nastavením času tup a tdown se určí sklon změny z 0 na 100 za zadaný čas. Sklon náběhu a sestupu se nastavuje zvlášť.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | REAL | Vstupní signál | 0
TDOWN | TIME | Čas sestupu z hodnoty 100 do 0 | 30 s
TUP | TIME | Čas náběhu z hodnoty 0 do 100 | 30 s

Výstupy

Výstup | Typ | Význam
OUT | REAL | Omezený výstupní signál
SIGN | BOOL | Znaménko výstupního signálu

Funkce

Blok převádí vstup in na výstup out s omezením maximálního sklonu výstupního signálu out v čase. Sklon je definován parametry Tdown a Tup, zvlášť pro klesající a pro rostoucí případ. Tdown je čas potřebný pro změnu y z hodnoty 100 na 0 a Tup je čas potřebný pro změnu y z hodnoty 0 na 100. Když vstup in mění svou hodnotu pomalu, pak out=in, jinak se snaží následovat vstup s maximálním povoleným sklonem definovaným parametry Tdown a Tup.

Když nastavíte Tdown=0, pak je snížení hodnoty in převedeno okamžitě na výstup out, podobně je tomu u Tup. Při spuštění programu je výstup out nastaven okamžitě podle vstupu in.
Výstup sign určuje znaménko výstupu out. Když y>= 0, sign=true, jinak sign=false.

Funkce v případě špatného nastavení

Když Tdown<= 0, předpokládá se, že Tdown=0, když Tup<= 0 tak se předpokládá, že Tup=0.

Obrázek 1: B84 Změna stavu s konstantním sklonem – Tup=3 s. Sklon zůstává konstantní.

Příklad použití

Průběh náběhu ze vstupní hodnoty 0 do 100 při požadovaném čase náběhu Tup = 2000 (s).


Změna stavu s konstantním časem změny

Název bloku

B85_VARIABLESLEWRATELIMIT

Volání v ST

PROGRAM TEST B85
    VAR
    REAL1,REAL2 : REAL;
    FB : LIB.CORE.V1_0.B85_VARIABLESLEWRATELIMIT;
    END_VAR
    FB(IN:=REAL1, TDOWN:=T#3S ,TUP:=T#3S,OUT=>REAL2);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok zamezí skokovým změnám výstupu. Změna na výstupu se bude projevovat postupně po konstantní dobu náběhu (Tup) nebo sestupu (Tdown).

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | REAL | Vstupní signál | 0
TDOWN | TIME | Čas sestupu | 30 s
TUP | TIME | Čas náběhu | 30 s

Výstupy

Výstup | Typ | Význam
OUT | REAL | Omezený výstupní signál
BS | BOOL | Znaménko výstupního signálu
NBS | BOOL | Negace znaménka výstupního signálu

Funkce

Blok převádí vstup in na výstup out se zpožděním následujícího typu: každá klesající změna in způsobí lineární pokles out=in v čase Tdown sekund. Stejné je to pro rostoucí změnu in způsobí lineární růst y tak, že out=in v Tup sekundách, viz Obrázek níže. To znamená, že můžeme ovládat oba směry zvlášť.

Když nastavíme Tdown=0, pak jakákoliv sestupná hrana in je okamžitě přenesena na výstup out, podobně je tomu u Tup. Při spuštění programu se na výstup out nastaví hodnota vstupu in.

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.

Funkce v případě špatného nastavení

Když Tdown<= 0, předpokládá se, že Tdown=0; když Tup<= 0, předpokládá se, že Tup=0.

B85 Změna stavu s konstantním časem změny – Tup=3 s. Všimněte si, že změna času se rovná Tup pro jakoukoliv změnu hodnoty in, směrnice je tedy na rozdíl od bloku B84 variabilní.

Příklad použití

Přiklad zobrazuje změnu vstupní hodnoty in z 0 na 100 s dobou náběhu Tup=3 s.


LIMIT

Název funkce

LIMIT

Volání v ST

PROGRAM LIMIT_DEMO
    VAR
        REAL1,REAL2: REAL;
    END_VAR
    REAL2:= LIMIT(IN:=REAL1, MN:= 0, MX:=10); //LZE VOLAT I JAKO REAL2:= LIMIT(REAL1, 0, 10)
END_PROGRAM

Popis

Omezuje rozsah hodnot výstupní proměnné do rozmezí od MN (minimum) do MX (maximum). Funkci lze ekvivalentně popsat jako MIN(MAX(IN,MN),MX).

Vstupy

Vstup | Typ | Význam
IN | ANY_ELEMENTARY | Vstupní hodnota
MN | ANY_ELEMENTARY | Minimální hodnota
MX | ANY_ELEMENTARY | Maximální hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_ELEMENTARY | Výstupní hodnota

Příklad použití


Omezení

Název bloku

B82_LIMITS

Volání v ST

PROGRAM TEST2_B82
 VAR
 FB : LIB.CORE.V1_2.B82_LIMITS;
 IN_V:REAL;
 MAXIMUM_V:REAL:=20;
 MINIMUM_V:REAL:=0;
 OUT_V:REAL;
 END_VAR
FB(IN:=IN_V, MAXIMUM:=MAXIMUM_V, MINIMUM:=MINIMUM_V);
OUT_V:=FB.OUT;
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.2

Popis

Blok umožňuje omezení vstupního signálu horní a dolní mezí. Blok umí omezit signál i z jedné strany, z druhé strany signál může jít do (mínus) nekonečna.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | REAL | Vstupní signál | 0
MAXIMUM | REAL | Horní hranice | 1
MINIMUM | REAL | Dolní hranice | 0
MAXON | BOOL | Povolení horní hranice | True
MINON | BOOL | Povolení dolní hranice | True

Výstupy

Výstup | Typ | Význam
OUT | REAL | Omezený výstupní signál
SIGN | BOOL | Znaménko výstupního signálu

Funkce

Blok omezuje vstupní signál x shora a zdola.

  • Když minon=true pak signál x pak je signál omezen dolní hranicí minimum.
  • Když minon=false pak není dolní mez použita.
  • Když maxon=true pak x je omezeno horní hranicí maximum.
  • Když maxon=false pak není horní mez použita.
Výstup sign je znaménko výstupu y. Když y>= 0 sign=true, jinak sign=false.

Funkce v případě špatného nastavení

Když minon=maxon=true a maximum<minimum pak y=maximum (nižší hodnota z obou).

Příklad použití

Funkce B82 při omezení shora maximum=100.

Starší verze

Verze V1.0 byla vedena jako funkce. V1.1 má zachována funkci, ale je definována jako funkční blok. Nově se tedy dají vstupy / výstupy do grafu a blok se dá dát do manuálního módu.


Lineární interpolace

Název bloku

B83_LINEARINTERPOLATION

Volání v ST

PROGRAM TEST B83
    VAR
     FB : LIB.CORE.V1_0.B83_LINEARINTERPOLATION;
    END_VAR
    FB(IN:=REAL1, XVALUES:=POLE,YVALUES:=POLE2,ENABLEVALUES:=POLE3,RECALCULATESLOPES:=BOOL1,
        ENABLEMIN:=TRUE,ENABLEMAX:=TRUE,XMIN:=0,XMAX:=50,OUT=>REAL2);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok převede vstupní signál na výstup pomocí interpolační přímky.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | REAL | Vstupní signál | 0
XVALUES | ARRAY[1..10] OF REAL | Pole souřadnic X 1-10 | [0,0,...,0]
YVALUES | ARRAY[1..10] OF REAL | Pole souřadnic Y 1-10 | [0,0,...,0]
ENABLEVALUES | ARRAY[1..10] OF BOOL | Pole povolení souřadnic | [False,...,False]
ENABLEMIN | BOOL | Povolení minimálního alarmu | False
ENABLEMAX | BOOL | Povolení maximálního alarmu | False
XMIN | REAL | Mez alarmu min | 0
XMAX | REAL | Mez alarmu max | 0
RECALCULATESLOPES | BOOL | Náběžnou hranou dojde k přepočítání křivek a uplatnění nových hodnot XValues/YValues/EnableValues | False

Výstupy

Výstup | Typ | Význam
OUT | REAL | Výstupní hodnota
MINALARM | BOOL | Alarm minima
MAXALARM | BOOL | Alarm maxima

Funkce

Blok implementuje přenosovou funkci, která je tvořena souřadnicemi xvalues a yvalues, tyto souřadnice musí být povoleny enablevalues. Vstupní hodnotu lze omezit pomocí hodnot xmin a xmax, které musí být povoleny enablemin a enablemax. Výpočet přímky se provádí při inicializaci a při kalibraci, která nastane při náběžné hraně recalculateslopes. Za krajními body přímky pokračuje přímka se stejnou směrnicí jako navazující směr mezi dvěma krajními body.

Příklad použití


Dvoubodová funkce

Název bloku

B80_TWOPOINTFUNCTION

Volání v ST

Volání verze V1.0
PROGRAM TEST_B80
    VAR
    REAL1,REAL2: REAL;
    END_VAR
    REAL2 := LIB.CORE.V1_0.B80_TWOPOINTFUNCTION(IN:=REAL1, X1:=20,X2:=20,Y1:=0,Y2:=100);
END_PROGRAM

Volání verze V1.1
PROGRAM TEST2_B80
    VAR
        FB:LIB.CORE.V1_1.B80_TWOPOINTFUNCTION;
        IN_V:REAL;
        X1_V:REAL:=20;
        X2_V:REAL:=20;
        Y1_V:REAL:=0;
        Y2_V:REAL:=100;
        OUT_V:REAL;
    END_VAR
FB(IN:=IN_V, X1:=X1_V, X2:=X2_V, Y1:=Y1_V, Y2:=Y2_V);
OUT_V:=FB.OUT;
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.1

Popis

Lineární funkce specifikovaná pomocí dvou zadaných bodů mění hodnotu výstupu v závislosti na vstupní hodnotě.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | REAL | Vstupní signál | 0
X1 | REAL | 1.bod x souřadnice | 20
X2 | REAL | 2.bod x souřadnice | 50
Y1 | REAL | 1.bod y souřadnice | 0
Y2 | REAL | 2.bod y souřadnice | 100

Výstupy

Výstup | Typ | Význam
OUT | REAL | Výstupní signál
SIGN | BOOL | Znaménko výstupu

Funkce

Blok implementuje přenosovou funkci, danou dvěma body [X1,Y1] a [X2,Y2], viz Obrázek níže. Body nemají dané pořadí, oba případy X1<X2 nebo X1>X2 jsou možné. Když X1=X2 pak y=Y1 pro x<X1, y=Y2 jinak, viz obrázek 2 níže. Výstup sign určuje znaménko výstupu y. Když y>= 0 sign=true, jinak sign=false.

funkce může být klesající nebo rostoucí [X1,Y1], [X2,Y2].

v případě, že X1=X2: hodnota při x=X1=X2 je dána výstupem Y2.

Příklad použití

Odezva funkce s vnitřními parametry x1=20, x2=20, y1=0, y2=100. Funkce se používá především pro přepočet řídicích sekvencí (ze signálu 0...100 % (požadavek na topení) nebo -100...100 % (požadavek na chlazení nebo na topení) chceme vyrobit několik sekvencí 0...100 % pro řízení ventilu chlazení, ventilu topení, rekuperační klapky, dohřevu atd.)

Starší verze

Verze V1.0 byla vedena jako funkce. V1.1 má zachována funkci, ale je definována jako funkční blok. Nově se tedy dají vstupy / výstupy do grafu a blok se dá dát do manuálního módu.


Čtyřbodová funkce

Název bloku

B81_FOURPOINTFUNCTIONNODE

Volání v ST

PROGRAM TEST2_B80
 VAR
 FB:LIB.CORE.V1_0.B81_FOURPOINTFUNCTIONNODE;
 IN_V:REAL;
 X1_V:REAL:=0;
 X2_V:REAL:=20;
 X3_V:REAL:=60;
 X4_V:REAL:=80;
 Y1_V:REAL:=0;
 Y2_V:REAL:=100;
 Y3_V:REAL:=150;
 Y4_V:REAL:=180;
 OUT_V:REAL;
 END_VAR
FB(IN:=IN_V, X1:=X1_V, X2:=X2_V, X3:=X3_V, X4:=X4_V, Y1:=Y1_V, Y2:=Y2_V, Y3:=Y3_V, Y4:=Y4_V);
OUT_V:=FB.OUT;
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok slouží pro definování libovolné křivky pomocí čtyř bodů.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | REAL | Vstupní signál | 0
X1 | REAL | 1.bod, x souřadnice | 0
X2 | REAL | 2.bod, x souřadnice | 1
X3 | REAL | 3.bod, x souřadnice | 2
X4 | REAL | 4.bod, x souřadnice | 3
Y1 | REAL | 1.bod, y souřadnice | 0
Y2 | REAL | 2.bod, y souřadnice | 1
Y3 | REAL | 3.bod, y souřadnice | 2
Y4 | REAL | 4.bod, y souřadnice | 3

Výstupy

Výstup | Typ | Význam
OUT | REAL | Výstupní signál
SIGN | BOOL | Znaménko výstupu

Funkce

Blok definuje libovolnou křivku pomocí čtyř bodů – [X1,Y1], [X2,Y2],[X3,Y3],[X4,Y4]. Funkce je, jak je vidět níže na obrázku, před prvním a za posledním definovaným bodem konstantní.

Příklad použití

V příkladu chceme definovat funkci, která bude odpovídat obrázku níže. Funkce má mít směrnici jedna pro všechny hodnoty vyšší než nula. "Všechny" hodnoty v našem případě znamená pro všechny hodnoty do hodnoty 1000. Funkce tedy bude nadefinována následovně - [X1,Y1]=[0,0], [X2,Y2]=[X3,Y3]=[X4,Y4]=[1000,1000].


BCD_TO_UDINT

Název funkce

BCD_TO_UDINT

Volání v ST

PROGRAM BCD_TO_UDINT_DEMO
    VAR
        W: WORD;
        U: UDINT;
    END_VAR
    U:= BCD_TO_UDINT(IN1:=W);
END_PROGRAM

Popis

Funkce provádí konverzi bitového pole (ANY_BIT) na celočíselný typ. Například hodnotu dvojkového čísla 2#0011_0110_1001 převede na celočíselnou hodnotu 369. Formát BCD (binary coded decimal) vypadá tak, že vždy čtyři bity představují jednu číslici, celé číslo je dekadické a je reprezentováno čtveřicemi bitů - jednotlivými číslicemi.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_BIT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | UDINT | Výstupní hodnota

Příklad použití

Převod bitového pole o hodnotě 2#0001_0010 (dekadicky 18) na odpovídající hodnotu celočíselného čísla 12.


BCD_TO_UINT

Název funkce

BCD_TO_UINT

Volání v ST

PROGRAM BCD_TO_UINT_DEMO
    VAR
        W: WORD;
        U: UINT;
    END_VAR
    U:= BCD_TO_UINT(IN1:=W);
END_PROGRAM

Popis

Funkce provádí konverzi bitového pole (ANY_BIT) na celočíselný typ. Například hodnotu dvojkového čísla 2#0011_0110_1001 převede na celočíselnou hodnotu 369.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_BIT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | UINT | Výstupní hodnota

Příklad použití

Převod bitového pole o hodnotě 2#0001_0010 (dekadicky 18) na odpovídající hodnotu celočíselného čísla 12.


BCD_TO_ULINT

Název funkce

BCD_TO_ULINT

Volání v ST

PROGRAM BCD_TO_ULINT_DEMO
    VAR
        W: WORD;
        U: ULINT;
    END_VAR
    U:= BCD_TO_ULINT(IN1:=W);
END_PROGRAM

Popis

Funkce provádí konverzi bitového pole (ANY_BIT) na celočíselný typ. Například hodnotu dvojkového čísla 2#0011_0110_1001 převede na celočíselnou hodnotu 369.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_BIT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ULINT | Výstupní hodnota

Příklad použití

Převod bitového pole o hodnotě 2#0001_0010 (dekadicky 18) na odpovídající hodnotu celočíselného čísla 12.


BCD_TO_USINT

Název funkce

BCD_TO_USINT

Volání v ST

PROGRAM BCD_TO_USINT_DEMO
    VAR
        W: WORD;
        U: USINT;
    END_VAR
    U:= BCD_TO_USINT(IN1:=W);
END_PROGRAM

Popis

Funkce provádí konverzi bitového pole (ANY_BIT) na celočíselný typ. Například hodnotu dvojkového čísla 2#0011_0110_1001 převede na celočíselnou hodnotu 369.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_BIT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | UINT | Výstupní hodnota

Příklad použití

Převod bitového pole o hodnotě 2#0001_0010 (dekadicky 18) na odpovídající hodnotu celočíselného čísla 12.


DT_TO_DATE

Název funkce

DT_TO_DATE

Volání v ST

PROGRAM DT_TO_DATE_DEMO
    VAR
        DT1: DT;
        DATE1: DATE;
    END_VAR

    DATE1:=DT_TO_DATE(DT1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru datumu.

Vstupy

Vstup | Typ | Význam
IN1 | DT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | DATE | Výstupní hodnota

Příklad použití


DATE_TO_LDATE

Název funkce

DATE_TO_LDATE

Volání v ST

PROGRAM DATE_TO_LDATE_DEMO
     VAR
           LDATE1: LDATE;
       DATE1: DATE;
     END_VAR
    LDATE1:=DATE_TO_LDATE(DATE1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru datumu.

Vstupy

Vstup | Typ | Význam
in1 | DATE | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LDATE | Výstupní hodnota

Příklad použití


DATE_TO_DT

Název funkce

DATE_TO_DT

Volání v ST

PROGRAM DATE_TO_DT_DEMO
     VAR
           DT1: DT;
       DATE1: DATE;
     END_VAR
    DT1:=DATE_TO_DT(DATE1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru absolutního času.

Vstupy

Vstup | Typ | Význam
in1 | DATE | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | DT | Výstupní hodnota

Příklad použití


DATE_TO_LDT

Název funkce

DATE_TO_LDT

Volání v ST

PROGRAM DATE_TO_LDT_DEMO
     VAR
           DATE1: DATE;
       LDT1: LDT;
     END_VAR
    LDT1:=DATE_TO_LDT(DATE1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru absolutního času.

Vstupy

Vstup | Typ | Význam
in1 | DATE | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LDT | Výstupní hodnota

Příklad použití


DATE_TO_LTOD

Název funkce

DATE_TO_LTOD

Volání v ST

PROGRAM DATE_TO_LTOD_DEMO
     VAR
           DATE1: DATE;
       LTOD1: LTOD;
     END_VAR
    LTOD1:=DATE_TO_LTOD(DATE1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru denního času.

Vstupy

Vstup | Typ | Význam
in1 | DATE | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LTOD | Výstupní hodnota

Příklad použití


DATE_TO_TOD

Název funkce

DATE_TO_TOD

Volání v ST

PROGRAM DATE_TO_TOD_DEMO
     VAR
           DATE1: DATE;
       TOD1: TOD;
     END_VAR
    TOD1:=DATE_TO_TOD(DATE1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru denního času.

Vstupy

Vstup | Typ | Význam
in1 | DATE | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | TOD | Výstupní hodnota

Příklad použití


DT_TO_LDT

Název funkce

DT_TO_LDT

Volání v ST

PROGRAM DT_TO_LDT_DEMO
    VAR
        DT1: DT;
        LDT1: LDT;
    END_VAR

    LDT1:=DT_TO_LDT(DT1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru absolutního času.

Vstupy

Vstup | Typ | Význam
IN1 | DT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LDT | Výstupní hodnota

Příklad použití


DT_TO_LTOD

Název funkce

DT_TO_LTOD

Volání v ST

PROGRAM DT_TO_LTOD_DEMO
    VAR
        DT1: DT;
        LTOD1: LTOD;
    END_VAR

    LTOD1:=DT_TO_LTOD(DT1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru denního času.

Vstupy

Vstup | Typ | Význam
IN1 | DT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LTOD | Výstupní hodnota

Příklad použití


DT_TO_TOD

Název funkce

DT_TO_TOD

Volání v ST

PROGRAM DT_TO_TOD_DEMO
    VAR
        DT1: DT;
        TOD1: TOD;
    END_VAR

    TOD1:=DT_TO_TOD(DT1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru denního času.

Vstupy

Vstup | Typ | Význam
IN1 | DT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | TOD | Výstupní hodnota

Příklad použití


LDATE_TO_DATE

Název funkce

LDATE_TO_DATE

Volání v ST

PROGRAM LDATE_TO_DATE_DEMO
    VAR
        LDATE1: LDATE;
        DATE1: DATE;
    END_VAR

    DATE1:=LDATE_TO_DATE(LDATE1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru datumu.

Vstupy

Vstup | Typ | Význam
IN1 | LDATE | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | DATE | Výstupní hodnota

Příklad použití


LDATE_TO_DT

Název funkce

LDATE_TO_DT

Volání v ST

PROGRAM LDATE_TO_DT_DEMO
    VAR
        LDATE1: LDATE;
        DT1: DT;
    END_VAR

    DT1:=LDATE_TO_DT(LDATE1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru denního času.

Vstupy

Vstup | Typ | Význam
IN1 | LDATE | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | DT | Výstupní hodnota

Příklad použití


LDT_TO_DATE

Název funkce

LDT_TO_DATE

Volání v ST

PROGRAM LDT_TO_DATE_DEMO
     VAR
           DATE1: DATE;
       LDT1: LTD;
     END_VAR
    DATE1:=LDT_TO_DATE(LDT1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru datumu.

Vstupy

Vstup | Typ | Význam
in1 | LDT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | DATE | Výstupní hodnota

Příklad použití


LDT_TO_DT

Název funkce

LDT_TO_DT

Volání v ST

PROGRAM LDT_TO_DT_DEMO
     VAR
           LDT1: LDT;
       DT1: DT;
     END_VAR
    DT1:=LDT_TO_DT(LDT1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru absolutního času.

Vstupy

Vstup | Typ | Význam
in1 | LDT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | DT | Výstupní hodnota

Příklad použití


LDT_TO_LDATE

Název funkce

LDT_TO_LDATE

Volání v ST

PROGRAM LDT_TO_LDATE_DEMO
     VAR
           LDT1: LDT;
       LDATE1: LDATE;
     END_VAR
    LDATE1:=LDT_TO_LDATE(LDT1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru datumu.

Vstupy

Vstup | Typ | Význam
in1 | LDT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LDATE | Výstupní hodnota

Příklad použití


LDT_TO_TOD

Název funkce

LDT_TO_TOD

Volání v ST

PROGRAM LDT_TO_TOD_DEMO
     VAR
           LDT1: LDT;
       TOD1: TOD;
     END_VAR
    TOD1:=LDT_TO_TOD(LDT1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru denního času.

Vstupy

Vstup | Typ | Význam
in1 | LDT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | TOD | Výstupní hodnota

Příklad použití


LTIME_TO_TIME

Název funkce

LTIME_TO_TIME

Volání v ST

PROGRAM LTIME_TO_TIME_DEMO
     VAR
           LTIME1: LTIME;
       TIME1: TIME;
     END_VAR
    TIME1:=LTIME_TO_TIME(LTIME1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru trvání času.

Vstupy

Vstup | Typ | Význam
in1 | LTIME | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | TIME | Výstupní hodnota

Příklad použití


LTOD_TO_DT

Název funkce

LTOD_TO_DT

Volání v ST

PROGRAM LTOD_TO_DT_DEMO
    VAR
        LTOD1: LTOD;
        DT1: DT;
    END_VAR

    DT1:=LTOD_TO_DT(LTOD1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru denního času.

Vstupy

Vstup | Typ | Význam
IN1 | LTOD | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | DT | Výstupní hodnota

Příklad použití


LTOD_TO_LDT

Název funkce

LTOD_TO_LDT

Volání v ST

PROGRAM LTOD_TO_LDT_DEMO
    VAR
        LTOD1: LTOD;
        LDT1: LDT;
    END_VAR

    LDT1:=LTOD_TO_LDT(LTOD1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru denního času.

Vstupy

Vstup | Typ | Význam
IN1 | LTOD | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LDT | Výstupní hodnota

Příklad použití


LTOD_TO_TOD

Název funkce

LTOD_TO_TOD

Volání v ST

PROGRAM LTOD_TO_TOD_DEMO
    VAR
        LTOD1: LTOD;
        TOD1: TOD;
    END_VAR

    TOD1:=LTOD_TO_TOD(LTOD1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru denního času.

Vstupy

Vstup | Typ | Význam
IN1 | LTOD | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | TOD | Výstupní hodnota

Příklad použití


TO_BCD_BOOL

Název funkce

TO_BCD_BOOL

Volání v ST

PROGRAM TO_BCD_BYTE_DEMO
    VAR
        BOOL1: BOOL;
        U: UDINT;
    END_VAR
    BOOL1:= TO_BCD_BOOL(IN1:=U);
END_PROGRAM

Popis

Funkce provádí konverzi celého čísla (ANY_INT) na logickou hodnotu (BOOL). Hodnotu 0 převede na FALSE, ostatní hodnoty převede na TRUE.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_INT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | BOOL | Výstupní hodnota

Příklad použití


TIME_TO_LTIME

Název funkce

TIME_TO_LTIME

Volání v ST

PROGRAM TIME_TO_LTIME_DEMO
     VAR
           LTIME1: LTIME;
       TIME1: TIME;
     END_VAR
    LTIME1:=TIME_TO_LTIME(TIME1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru trvání času.

Vstupy

Vstup | Typ | Význam
in1 | TIME | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LTIME | Výstupní hodnota

Příklad použití


TO_BCD_BYTE

Název funkce

TO_BCD_BYTE

Volání v ST

PROGRAM TO_BCD_BYTE_DEMO
    VAR
        B: BYTE;
        U: UDINT;
    END_VAR
    B:= TO_BCD_BYTE(IN1:=U);
END_PROGRAM

Popis

Funkce provádí konverzi celého čísla (ANY_INT) na bitové pole (BYTE). Například celočíselnou hodnotu 36 převede na dvojkové číslo 2#0011_0110 (54 dekadicky). Formát BCD (binary coded decimal) vypadá tak, že vždy čtyři bity představují jednu číslici, celé číslo je dekadické a je reprezentováno čtveřicemi bitů - jednotlivými číslicemi.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_INT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | BYTE | Výstupní hodnota

Příklad použití


TO_BCD_DWORD

Název funkce

TO_BCD_DWORD

Volání v ST

PROGRAM TO_BCD_DWORD_DEMO
    VAR
        D: DWORD;
        U: UDINT;
    END_VAR
    D:= TO_BCD_DWORD(IN1:=U);
END_PROGRAM

Popis

Funkce provádí konverzi celého čísla (ANY_INT) na bitové pole (DWORD). Například celočíselnou hodnotu 36 převede na dvojkové číslo 2#0011_0110 (54 dekadicky). Formát BCD (binary coded decimal) vypadá tak, že vždy čtyři bity představují jednu číslici, celé číslo je dekadické a je reprezentováno čtveřicemi bitů - jednotlivými číslicemi.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_INT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | DWORD | Výstupní hodnota

Příklad použití


TO_BCD_LWORD

Název funkce

TO_BCD_LWORD

Volání v ST

PROGRAM TO_BCD_LWORD_DEMO
    VAR
        L: LWORD;
        U: UDINT;
    END_VAR
    L:= TO_BCD_LWORD(IN1:=U);
END_PROGRAM

Popis

Funkce provádí konverzi celého čísla (ANY_INT) na bitové pole (LWORD). Například celočíselnou hodnotu 36 převede na dvojkové číslo 2#0011_0110 (54 dekadicky). Formát BCD (binary coded decimal) vypadá tak, že vždy čtyři bity představují jednu číslici, celé číslo je dekadické a je reprezentováno čtveřicemi bitů - jednotlivými číslicemi.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_INT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LWORD | Výstupní hodnota

Příklad použití


TO_BCD_WORD

Název funkce

TO_BCD_WORD

Volání v ST

PROGRAM TO_BCD_WORD_DEMO
    VAR
        W: WORD;
        U: UDINT;
    END_VAR
    W:= TO_BCD_WORD(IN1:=U);
END_PROGRAM

Popis

Funkce provádí konverzi celého čísla (ANY_INT) na bitové pole (WORD). Například celočíselnou hodnotu 36 převede na dvojkové číslo 2#0011_0110 (54 dekadicky). Formát BCD (binary coded decimal) vypadá tak, že vždy čtyři bity představují jednu číslici, celé číslo je dekadické a je reprezentováno čtveřicemi bitů - jednotlivými číslicemi.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_INT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | WORD | Výstupní hodnota

Příklad použití


TO_BYTE

Název funkce

TO_BYTE

Volání v ST

PROGRAM TO_BYTE_DEMO
     VAR
           B1: BYTE;
       INT1: INT;
     END_VAR
    B1:=TO_BYTE(INT1);
END_PROGRAM

Popis

Funkce převede na výstup bitovou hodnotu vstupní hodnoty.

Vstupy

Vstup | Typ | Význam
IN | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | BYTE | Výstupní hodnota

Příklad použití

Příklad výpočtu

Vstupní hodnota | round ( _TO_ ) | floor | ceil | trunc
5.5 | 6 | 5 | 6 | 5
3.8 | 4 | 3 | 4 | 3
2.3 | 2 | 2 | 3 | 3
-2.3 | -2 | -3 | -2 | -2
-3.8 | -4 | -4 | -3 | -3
-5.5 | -6 | -6 | -5 | -5


TO_DINT

Název funkce

TO_DINT

Volání v ST

PROGRAM TO_DINT_DEMO
     VAR
           D1: DINT;
       INT1: INT;
     END_VAR
    D1:=TO_DINT(INT1);
END_PROGRAM

Popis

Funkce převede na výstup celočíselnou hodnotu vstupní hodnoty.

Vstupy

Vstup | Typ | Význam
IN | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | DINT | Výstupní hodnota

Příklad použití

Příklad výpočtu

Vstupní hodnota | round ( _TO_ ) | floor | ceil | trunc
5.5 | 6 | 5 | 6 | 5
3.8 | 4 | 3 | 4 | 3
2.3 | 2 | 2 | 3 | 3
-2.3 | -2 | -3 | -2 | -2
-3.8 | -4 | -4 | -3 | -3
-5.5 | -6 | -6 | -5 | -5


TO_DWORD

Název funkce

TO_DWORD

Volání v ST

PROGRAM TO_DWORD_DEMO
     VAR
           D1: DWORD;
       INT1: INT;
     END_VAR
    D1:=TO_DWORD(INT1);
END_PROGRAM

Popis

Funkce převede na výstup bitovou hodnotu vstupní hodnoty.

Vstupy

Vstup | Typ | Význam
IN | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | DWORD | Výstupní hodnota

Příklad použití

Příklad výpočtu

Vstupní hodnota | round ( _TO_ ) | floor | ceil | trunc
5.5 | 6 | 5 | 6 | 5
3.8 | 4 | 3 | 4 | 3
2.3 | 2 | 2 | 3 | 3
-2.3 | -2 | -3 | -2 | -2
-3.8 | -4 | -4 | -3 | -3
-5.5 | -6 | -6 | -5 | -5


TO_INT

Název funkce

TO_INT

Volání v ST

PROGRAM TO_INT_DEMO
     VAR
           I1: INT;
       R1: REAL;
     END_VAR
    I1:=TO_INT(R1);
END_PROGRAM

Popis

Funkce převede na výstup celočíselnou hodnotu vstupní hodnoty.

Vstupy

Vstup | Typ | Význam
IN | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | INT | Výstupní hodnota

Příklad použití

Příklad výpočtu

Vstupní hodnota | round ( _TO_ ) | floor | ceil | trunc
5.5 | 6 | 5 | 6 | 5
3.8 | 4 | 3 | 4 | 3
2.3 | 2 | 2 | 3 | 3
-2.3 | -2 | -3 | -2 | -2
-3.8 | -4 | -4 | -3 | -3
-5.5 | -6 | -6 | -5 | -5


TO_LINT

Název funkce

TO_LINT

Volání v ST

PROGRAM TO_LINT_DEMO
     VAR
           LI1: LINT;
       R1: REAL;
     END_VAR
    LI1:=TO_LINT(R1);
END_PROGRAM

Popis

Funkce převede na výstup celočíselnou hodnotu vstupní hodnoty.

Vstupy

Vstup | Typ | Význam
IN | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LINT | Výstupní hodnota

Příklad použití

Příklad výpočtu

Vstupní hodnota | round ( _TO_ ) | floor | ceil | trunc
5.5 | 6 | 5 | 6 | 5
3.8 | 4 | 3 | 4 | 3
2.3 | 2 | 2 | 3 | 3
-2.3 | -2 | -3 | -2 | -2
-3.8 | -4 | -4 | -3 | -3
-5.5 | -6 | -6 | -5 | -5


TO_LREAL

Název funkce

TO_LREAL

Volání v ST

PROGRAM TO_LREAL_DEMO
     VAR
           LI1: LINT;
       LR1: LREAL;
     END_VAR
    LR1:=TO_LREAL(LI1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru reálného čísla.

Vstupy

Vstup | Typ | Význam
IN | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LREAL | Výstupní hodnota

Příklad použití


TO_LWORD

Název funkce

TO_LWORD

Volání v ST

PROGRAM TO_LWORD_DEMO
     VAR
           LW1: LWORD;
       INT1: INT;
     END_VAR
    LW1:=TO_LWORD(INT1);
END_PROGRAM

Popis

Funkce převede na výstup bitovou hodnotu vstupní hodnoty.

Vstupy

Vstup | Typ | Význam
IN | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LWORD | Výstupní hodnota

Příklad použití

Příklad výpočtu

Vstupní hodnota | round ( _TO_ ) | floor | ceil | trunc
5.5 | 6 | 5 | 6 | 5
3.8 | 4 | 3 | 4 | 3
2.3 | 2 | 2 | 3 | 3
-2.3 | -2 | -3 | -2 | -2
-3.8 | -4 | -4 | -3 | -3
-5.5 | -6 | -6 | -5 | -5


TO_REAL

Název funkce

TO_REAL

Volání v ST

PROGRAM TO_REAL_DEMO
     VAR
           I1: INT;
       R1: REAL;
     END_VAR
    R1:=TO_REAL(I1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru reálného čísla.

Vstupy

Vstup | Typ | Význam
IN | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | REAL | Výstupní hodnota

Příklad použití


TO_SINT

Název funkce

TO_SINT

Volání v ST

PROGRAM TO_SINT_DEMO
     VAR
           I1: SINT;
       R1: REAL;
     END_VAR
    I1:=TO_SINT(R1);
END_PROGRAM

Popis

Funkce převede na výstup celočíselnou hodnotu vstupní hodnoty.

Vstupy

Vstup | Typ | Význam
IN | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | SINT | Výstupní hodnota

Příklad použití

Příklad výpočtu

Vstupní hodnota | round ( _TO_ ) | floor | ceil | trunc
5.5 | 6 | 5 | 6 | 5
3.8 | 4 | 3 | 4 | 3
2.3 | 2 | 2 | 3 | 3
-2.3 | -2 | -3 | -2 | -2
-3.8 | -4 | -4 | -3 | -3
-5.5 | -6 | -6 | -5 | -5


TO_STRING

Název funkce

TO_STRING

Volání v ST

PROGRAM TO_STRING_DEMO
     VAR
           I1: INT;
       S1: STRING;
     END_VAR
    S1:=TO_STRING(I1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru řetězce.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_MAGNITUDE | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | STRING | Výstupní hodnota

Příklad použití


TO_UDINT

Název funkce

TO_UDINT

Volání v ST

PROGRAM TO_UDINT_DEMO
     VAR
           UD1: UDINT;
       R1: REAL;
     END_VAR
    UD1:=TO_UDINT(R1);
END_PROGRAM

Popis

Funkce převede na výstup celočíselnou hodnotu vstupní hodnoty.

Vstupy

Vstup | Typ | Význam
IN | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | UDINT | Výstupní hodnota

Příklad použití

Příklad výpočtu

Vstupní hodnota | round ( _TO_ ) | floor | ceil | trunc
5.5 | 6 | 5 | 6 | 5
3.8 | 4 | 3 | 4 | 3
2.3 | 2 | 2 | 3 | 3
-2.3 | 0 | -3 | -2 | -2
-3.8 | 0 | -4 | -3 | -3
-5.5 | 0 | -6 | -5 | -5


TO_ULINT

Název funkce

TO_ULINT

Volání v ST

PROGRAM TO_ULINT_DEMO
     VAR
           UL1: ULINT;
       R1: REAL;
     END_VAR
    UL1:=TO_ULINT(R1);
END_PROGRAM

Popis

Funkce převede na výstup celočíselnou hodnotu vstupní hodnoty.

Vstupy

Vstup | Typ | Význam
IN | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ULINT | Výstupní hodnota

Příklad použití

Příklad výpočtu

Vstupní hodnota | round ( _TO_ ) | floor | ceil | trunc
5.5 | 6 | 5 | 6 | 5
3.8 | 4 | 3 | 4 | 3
2.3 | 2 | 2 | 3 | 3
-2.3 | 0 | -3 | -2 | -2
-3.8 | 0 | -4 | -3 | -3
-5.5 | 0 | -6 | -5 | -5


TO_USINT

Název funkce

TO_USINT

Volání v ST

PROGRAM TO_USINT_DEMO
     VAR
           US1: USINT;
       R1: REAL;
     END_VAR
    US1:=TO_USINT(R1);
END_PROGRAM

Popis

Funkce převede na výstup celočíselnou hodnotu vstupní hodnoty.

Vstupy

Vstup | Typ | Význam
IN | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | USINT | Výstupní hodnota

Příklad použití

Příklad výpočtu

Vstupní hodnota | round ( _TO_ ) | floor | ceil | trunc
5.5 | 6 | 5 | 6 | 5
3.8 | 4 | 3 | 4 | 3
2.3 | 2 | 2 | 3 | 3
-2.3 | 0 | -3 | -2 | -2
-3.8 | 0 | -4 | -3 | -3
-5.5 | 0 | -6 | -5 | -5


TO_WORD

Název funkce

TO_WORD

Volání v ST

PROGRAM TO_WORD_DEMO
     VAR
           W1: WORD;
       INT1: INT;
     END_VAR
    W1:=TO_WORD(INT1);
END_PROGRAM

Popis

Funkce převede na výstup bitovou hodnotu vstupní hodnoty.

Vstupy

Vstup | Typ | Význam
IN | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | WORD | Výstupní hodnota

Příklad použití

Příklad výpočtu

Vstupní hodnota | round ( _TO_ ) | floor | ceil | trunc
5.5 | 6 | 5 | 6 | 5
3.8 | 4 | 3 | 4 | 3
2.3 | 2 | 2 | 3 | 3
-2.3 | -2 | -3 | -2 | -2
-3.8 | -4 | -4 | -3 | -3
-5.5 | -6 | -6 | -5 | -5


TOD_TO_LTOD

Název funkce

TOD_TO_LTOD

Volání v ST

PROGRAM TOD_TO_LTOD_DEMO
    VAR
        TOD1: TOD;
        LTOD1: LTOD;
    END_VAR

    LTOD1:=TOD_TO_LTOD(TOD1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru denního času.

Vstupy

Vstup | Typ | Význam
IN1 | TOD | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LTOD | Výstupní hodnota

Příklad použití


Čítač

Název bloku

BD30_COUNTER

Volání v ST

PROGRAM BD30_COUNTER_DEMO
    VAR
     L1: LINT;
     FB1: LIB.CORE.V1_0.BD30_COUNTER;
     FB2: LIB.CORE.V1_0.BD2_PULSE_GENERATOR;
    END_VAR

    FB2();
    FB1(BX := FB2.OUT);
    L1 := FB1.OUT;

END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok implementuje pulsní čítač. Počet impulsů se uloží do výstupu OUT. Hodnota OUT může být zvýšena o 1 při náběžné hraně vstupu BX nebo sestupnou hranou vstupu BXF. Kromě výstupu OUT může být snížena o 1 náběžnou hranou vstupu BXD nebo sestupnou hranou vstupu BXDF. Parametr MINIMUM určuje nejnižší možnou hodnotu výstupu OUT, parametr MAXIMUM určuje nejvyšší možnou hodnotu výstupu OUT, takže možnými hodnotami jsou MINIMUM,MINIMUM+1,MINIMUM+2,...,MAXIMUM-1,MAXIMUM. Počítadlo se chová na hranicích MINIMUM, MAXIMUM podle parametru BRING:

  • BRING=TRUE: Čítač čítá cyklicky. Když čítač dosáhne hodnoty OUT=MAXIMUM a poté zvýší, pak přeteče a počítá se znovu od MINIMUM. Obdobně, pokud čítač dosáhne hodnoty OUT=MINIMUM a zároveň snižuje, pak se počítá znovu od MAXIMUM dolů.
  • BRING=FALSE: Když čítač dosáhne hodnoty OUT=MAXIMUM a poté zvýší, pak se výstup zastaví na této hodnotě, dále již neroste. Podobně pokud čítač dosáhne OUT=MINIMUM, při dalším snížení se zastaví na hodnotě MINIMUM.

Čítač může být resetován (nastaven na hodnotu MINIMUM) vstupem BR. Když BR=TRUE pak OUT=MINIMUM a čítání je zakázáno.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
BX | BOOL | Náběžná hrana zvýší hodnotu OUT o 1 | False
BXF | BOOL | Sestupná hrana zvýší hodnotu OUT o 1 | False
BXD | BOOL | Náběžná hrana sníží hodnotu OUT o 1 | False
BXDF | BOOL | Sestupná hrana sníží hodnotu OUT o 1 | False
BR | BOOL | Reset: Když BR=TRUE, pak OUT=MINIMUM | False
MINIMUM | LINT | Minimální hodnota výstupu OUT | 0
MAXIMUM | LINT | Maximální hodnota výstupu OUT | 10000
BRING | BOOL | Přepínač přetečení. Když BRING=TRUE pak čítač počítá stále dokola, když BRING=FALSE pak čítač zůstane na hraniční hodnotě MINIMUM, MAXIMUM i když je nucen k přetečení. | False

Výstupy

Výstup | Typ | Význam
OUT | LINT | Hodnota čítače (OUT se může rovnat MINIMUM,MINIMUM+1,MINIMUM+2,...,MAXIMUM-1,MAXIMUM)

Příklad použití


CTD_DINT

Název bloku

CTD_DINT

Volání v ST

PROGRAM CTD_DINT_DEMO
     VAR
     BOOL1,BOOL2,BOOL3: BOOL;
     DINT1,DINT2: DINT;
     FB:CTD_DINT;
    END_VAR
    FB(CD:=BOOL1,LD:=BOOL2,PV:=DINT1,Q=>BOOL3,CV=>DINT2);
END_PROGRAM

Popis

Blok funguje jako čítač, odčítající impulsy od zadané hodnoty podle vstupu pv až k nule.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
CD | BOOL | Odečte 1 při náběžné hraně. | False
LD | BOOL | Nastaví hodnotu čítače na počáteční hodnotu. | False
PV | DINT | Počáteční hodnota čítače. | 0

Výstupy

Výstup | Typ | Význam
Q | BOOL | Stav, kdy čítač dočítal (čítač dočítal q=true).
CV | DINT | Aktuální hodnota čítače.

Příklad použití


CTD

Název bloku

CTD

Volání v ST

PROGRAM CTD_DEMO
     VAR
     BOOL1,BOOL2,BOOL3: BOOL;
     INT1,INT2: INT;
     FB:CTD;
    END_VAR
    FB(CD:=BOOL1,LD:=BOOL2,PV:=INT1,Q=>BOOL3,CV=>INT2);
END_PROGRAM

Popis

Blok funguje jako čítač, odčítající impulsy od zadané hodnoty podle vstupu pv až k nule.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
CD | BOOL | Odečte 1 při náběžné hraně. | False
LD | BOOL | Nastaví hodnotu čítače na počáteční hodnotu. | False
PV | INT | Počáteční hodnota čítače. | 0

Výstupy

Výstup | Typ | Význam
Q | BOOL | Stav, kdy čítač dočítal (čítač dočítal q=true).
CV | INT | Aktuální hodnota čítače.

Příklad použití


CTD_LINT

Název bloku

CTD_LINT

Volání v ST

PROGRAM CTD_LINT_DEMO
     VAR
     BOOL1,BOOL2,BOOL3: BOOL;
     LINT1,LINT2: LINT;
     FB:CTD_LINT;
    END_VAR
    FB(CD:=BOOL1,LD:=BOOL2,PV:=LINT1,Q=>BOOL3,CV=>LINT2);
END_PROGRAM

Popis

Blok funguje jako čítač, odčítající impulsy od zadané hodnoty podle vstupu pv až k nule.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
CD | BOOL | Odečte 1 při náběžné hraně. | False
LD | BOOL | Nastaví hodnotu čítače na počáteční hodnotu. | False
PV | LINT | Počáteční hodnota čítače. | 0

Výstupy

Výstup | Typ | Význam
Q | BOOL | Stav, kdy čítač dočítal (čítač dočítal q=true).
CV | LINT | Aktuální hodnota čítače.

Příklad použití


CTD_UDINT

Název bloku

CTD_UDINT

Volání v ST

PROGRAM CTD_UDINT_DEMO
     VAR
     BOOL1,BOOL2,BOOL3: BOOL;
     UDINT1,UDINT2: UDINT;
     FB:CTD_UDINT;
    END_VAR
    FB(CD:=BOOL1,LD:=BOOL2,PV:=UDINT1,Q=>BOOL3,CV=>UDINT2);
END_PROGRAM

Popis

Blok funguje jako čítač, odčítající impulsy od zadané hodnoty podle vstupu pv až k nule.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
CD | BOOL | Odečte 1 při náběžné hraně. | False
LD | BOOL | Nastaví hodnotu čítače na počáteční hodnotu. | False
PV | UDINT | Počáteční hodnota čítače. | 0

Výstupy

Výstup | Typ | Význam
Q | BOOL | Stav, kdy čítač dočítal (čítač dočítal q=true).
CV | UDINT | Aktuální hodnota čítače.

Příklad použití


CTD_ULINT

Název bloku

CTD_ULINT

Volání v ST

PROGRAM CTD_ULINT_DEMO
     VAR
     BOOL1,BOOL2,BOOL3: BOOL;
     ULINT1,ULINT2: ULINT;
     FB:CTD_ULINT;
    END_VAR
    FB(CD:=BOOL1,LD:=BOOL2,PV:=ULINT1,Q=>BOOL3,CV=>ULINT2);
END_PROGRAM

Popis

Blok funguje jako čítač, odčítající impulsy od zadané hodnoty podle vstupu pv až k nule.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
CD | BOOL | Odečte 1 při náběžné hraně. | False
LD | BOOL | Nastaví hodnotu čítače na počáteční hodnotu. | False
PV | ULINT | Počáteční hodnota čítače. | 0

Výstupy

Výstup | Typ | Význam
Q | BOOL | Stav, kdy čítač dočítal (čítač dočítal q=true).
CV | ULINT | Aktuální hodnota čítače.

Příklad použití


CTU_DINT

Název bloku

CTU_DINT

Volání v ST

PROGRAM CTU_DINT_DEMO
     VAR
     BOOL1,BOOL2,BOOL3: BOOL;
     DINT1,DINT2: DINT;
     FB:CTU;
    END_VAR
    FB(CU:=BOOL1,R:=BOOL2,PV:=DINT1,Q=>BOOL3,CV=>DINT2);
END_PROGRAM

Popis

Blok funguje jako čítač, přičítající impulsy od nuly do zadané hodnoty podle vstupu pv.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
CU | BOOL | Přičte 1 při náběžné hraně. | False
R | BOOL | Reset na nulu. | False
PV | DINT | Konečná hodnota čítače. | 0

Výstupy

Výstup | Typ | Význam
Q | BOOL | Stav, kdy čítač dočítal (čítač dočítal q=true).
CV | DINT | Aktuální hodnota čítače.

Příklad použití


CTU

Název bloku

CTU

Volání v ST

PROGRAM CTU_DEMO
     VAR
     BOOL1,BOOL2,BOOL3: BOOL;
     INT1,INT2: INT;
     FB:CTU;
    END_VAR
    FB(CU:=BOOL1,R:=BOOL2,PV:=INT1,Q=>BOOL3,CV=>INT2);
END_PROGRAM

Popis

Blok funguje jako čítač, přičítající impulsy od nuly do zadané hodnoty podle vstupu pv.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
CU | BOOL | Přičte 1 při náběžné hraně. | False
R | BOOL | Reset na nulu. | False
PV | INT | Konečná hodnota čítače. | 0

Výstupy

Výstup | Typ | Význam
Q | BOOL | Stav, kdy čítač dočítal (čítač dočítal q=true).
CV | INT | Aktuální hodnota čítače.

Příklad použití


CTU_LINT

Název bloku

CTU_LINT

Volání v ST

PROGRAM CTU_LINT_DEMO
     VAR
     BOOL1,BOOL2,BOOL3: BOOL;
     LINT1,LINT2: LINT;
     FB:CTU;
    END_VAR
    FB(CU:=BOOL1,R:=BOOL2,PV:=LINT1,Q=>BOOL3,CV=>LINT2);
END_PROGRAM

Popis

Blok funguje jako čítač, přičítající impulsy od nuly do zadané hodnoty podle vstupu pv.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
CU | BOOL | Přičte 1 při náběžné hraně. | False
R | BOOL | Reset na nulu. | False
PV | LINT | Konečná hodnota čítače. | 0

Výstupy

Výstup | Typ | Význam
Q | BOOL | Stav, kdy čítač dočítal (čítač dočítal q=true).
CV | LINT | Aktuální hodnota čítače.

Příklad použití


CTU_UDINT

Název bloku

CTU_UDINT

Volání v ST

PROGRAM CTU_UDINT_DEMO
     VAR
     BOOL1,BOOL2,BOOL3: BOOL;
     UDINT1,UDINT2: UDINT;
     FB:CTU;
    END_VAR
    FB(CU:=BOOL1,LD:=BOOL2,PV:=UDINT1,Q=>BOOL3,CV=>UDINT2);
END_PROGRAM

Popis

Blok funguje jako čítač, přičítající impulsy od nuly do zadané hodnoty podle vstupu pv.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
CU | BOOL | Přičte 1 při náběžné hraně. | False
R | BOOL | Reset na nulu. | False
PV | UDINT | Konečná hodnota čítače. | 0

Výstupy

Výstup | Typ | Význam
Q | BOOL | Stav, kdy čítač dočítal (čítač dočítal q=true).
CV | UDINT | Aktuální hodnota čítače.

Příklad použití


CTU_ULINT

Název bloku

CTU_ULINT

Volání v ST

PROGRAM CTU_ULINT_DEMO
     VAR
     BOOL1,BOOL2,BOOL3: BOOL;
     ULINT1,ULINT2: ULINT;
     FB:CTU;
    END_VAR
    FB(CU:=BOOL1,R:=BOOL2,PV:=ULINT1,Q=>BOOL3,CV=>ULINT2);
END_PROGRAM

Popis

Blok funguje jako čítač, přičítající impulsy od nuly do zadané hodnoty podle vstupu pv.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
CU | BOOL | Přičte 1 při náběžné hraně. | False
R | BOOL | Reset na nulu. | False
PV | ULINT | Konečná hodnota čítače. | 0

Výstupy

Výstup | Typ | Význam
Q | BOOL | Stav, kdy čítač dočítal (čítač dočítal q=true).
CV | ULINT | Aktuální hodnota čítače.

Příklad použití


CTUD_DINT

Název bloku

CTUD_DINT

Volání v ST

PROGRAM CTUD_DINT_DEMO
     VAR
     BOOL1,BOOL2,BOOL3,BOOL4,BOOL5,BOOL6: BOOL;
     DINT1,DINT2: DINT;
     FB:CTUD_DINT;
    END_VAR
    FB(CU:=BOOL1,CD:=BOOL2,R:=BOOL3,LD:=BOOL4,PV:=DINT1,QU=>BOOL5,QD=>BOOL6,CV=>DINT2);
END_PROGRAM

Popis

Blok funguje jako čítač a zároveň odčítač. Pokud je zároveň vstup r i ld ve stavu true, tak má r vyšší prioritu.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
CU | BOOL | Přičte 1 při náběžné hraně. | False
CD | BOOL | Odečte 1 při náběžné hraně. | False
R | BOOL | Reset na nulu. | False
LD | BOOL | Nastaví hodnotu čítače na maximální hodnotu. | False
PV | DINT | Maximální hodnota čítače. | 0

Výstupy

Výstup | Typ | Význam
QU | BOOL | Stav, kdy je čítač na maximální hodnotě.
QD | BOOL | Stav, když je čítač vynulován.
CV | DINT | Aktuální hodnota čítače.

Příklad použití


CTUD

Název bloku

CTUD

Volání v ST

PROGRAM CTUD_DEMO
     VAR
     BOOL1,BOOL2,BOOL3,BOOL4,BOOL5,BOOL6: BOOL;
     INT1,INT2: INT;
     FB:CTUD;
    END_VAR
    FB(CU:=BOOL1,CD:=BOOL2,R:=BOOL3,LD:=BOOL4,PV:=INT1,QU=>BOOL5,QD=>BOOL6,CV=>INT2);
END_PROGRAM

Popis

Blok funguje jako čítač a zároveň odčítač. Pokud je zároveň vstup r i ld ve stavu true, tak má r vyšší prioritu.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
CU | BOOL | Přičte 1 při náběžné hraně. | False
CD | BOOL | Odečte 1 při náběžné hraně. | False
R | BOOL | Reset na nulu. | False
LD | BOOL | Nastaví hodnotu čítače na maximální hodnotu. | False
PV | INT | Maximální hodnota čítače. | 0

Výstupy

Výstup | Typ | Význam
QU | BOOL | Stav, kdy je čítač na maximální hodnotě.
QD | BOOL | Stav, když je čítač vynulován.
CV | INT | Aktuální hodnota čítače.

Příklad použití


ctud_lint

Název bloku

CTUD_LINT

Volání v ST

PROGRAM CTUD_LINT_DEMO
     VAR
     BOOL1,BOOL2,BOOL3,BOOL4,BOOL5,BOOL6: BOOL;
     LINT1,LINT2: LINT;
     FB:CTUD_LINT;
    END_VAR
    FB(CU:=BOOL1,CD:=BOOL2,R:=BOOL3,LD:=BOOL4,PV:=LINT1,QU=>BOOL5,QD=>BOOL6,CV=>LINT2);
END_PROGRAM

Popis

Blok funguje jako čítač a zároveň odčítač. Pokud je zároveň vstup r i ld ve stavu true, tak má r vyšší prioritu.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
CU | BOOL | Přičte 1 při náběžné hraně. | False
CD | BOOL | Odečte 1 při náběžné hraně. | False
R | BOOL | Reset na nulu. | False
LD | BOOL | Nastaví hodnotu čítače na maximální hodnotu. | False
PV | LINT | Maximální hodnota čítače. | 0

Výstupy

Výstup | Typ | Význam
QU | BOOL | Stav, kdy je čítač na maximální hodnotě.
QD | BOOL | Stav, když je čítač vynulován.
CV | LINT | Aktuální hodnota čítače.

Příklad použití


CTUD_UDINT

Název bloku

CTUD_UDINT

Volání v ST

PROGRAM CTUD_UDINT_DEMO
     VAR
     BOOL1,BOOL2,BOOL3,BOOL4,BOOL5,BOOL6: BOOL;
     UDINT1,UDINT2: UDINT;
     FB:CTUD_UDINT;
    END_VAR
    FB(CU:=BOOL1,CD:=BOOL2,R:=BOOL3,LD:=BOOL4,PV:=UDINT1,QU=>BOOL5,QD=>BOOL6,CV=>UDINT2);
END_PROGRAM

Popis

Blok funguje jako čítač a zároveň odčítač. Pokud je zároveň vstup r i ld ve stavu true, tak má r vyšší prioritu.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
CU | BOOL | Přičte 1 při náběžné hraně. | False
CD | BOOL | Odečte 1 při náběžné hraně. | False
R | BOOL | Reset na nulu. | False
LD | BOOL | Nastaví hodnotu čítače na maximální hodnotu. | False
PV | UDINT | Maximální hodnota čítače. | 0

Výstupy

Výstup | Typ | Význam
QU | BOOL | Stav, kdy je čítač na maximální hodnotě.
QD | BOOL | Stav, když je čítač vynulován.
CV | UDINT | Aktuální hodnota čítače.

Příklad použití


CTUD_ULINT

Název bloku

CTUD_ULINT

Volání v ST

PROGRAM CTUD_ULINT_DEMO
     VAR
     BOOL1,BOOL2,BOOL3,BOOL4,BOOL5,BOOL6: BOOL;
     ULINT1,ULINT2: ULINT;
     FB:CTUD_ULINT;
    END_VAR
    FB(CU:=BOOL1,CD:=BOOL2,R:=BOOL3,LD:=BOOL4,PV:=ULINT1,QU=>BOOL5,QD=>BOOL6,CV=>ULINT2);
END_PROGRAM

Popis

Blok funguje jako čítač a zároveň odčítač. Pokud je zároveň vstup r i ld ve stavu true, tak má r vyšší prioritu.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
CU | BOOL | Přičte 1 při náběžné hraně. | False
CD | BOOL | Odečte 1 při náběžné hraně. | False
R | BOOL | Reset na nulu. | False
LD | BOOL | Nastaví hodnotu čítače na maximální hodnotu. | False
PV | ULINT | Maximální hodnota čítače. | 0

Výstupy

Výstup | Typ | Význam
QU | BOOL | Stav, kdy je čítač na maximální hodnotě.
QD | BOOL | Stav, když je čítač vynulován.
CV | ULINT | Aktuální hodnota čítače.

Příklad použití


AND

Název funkce

AND

Volání v ST

PROGRAM AND_DEMO
     VAR
       BOOL1,BOOL2,BOOL3: BOOL;
     END_VAR
    BOOL3:= BOOL1 AND BOOL2;
END_PROGRAM

Popis

Funkce provádí logický součin dvou nebo více vstupů.

Vstupy

Vstup | Typ | Význam
IN1.. | ANY_BIT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | BOOL | Výstupní signál

Příklad použití


NEG

Název funkce

NEG

Volání v ST

PROGRAM NEG_DEMO
     VAR
      REAL1,REAL2: REAL;
     END_VAR
    REAL2:= NEG(REAL1);
END_PROGRAM

Popis

Funkce provádí negaci vstupu.

Vstupy

Vstup | Typ | Význam
IN | ANY_NUMBER | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_NUMBER | Výstupní signál

Příklad použití


NOT

Název funkce

NOT

Volání v ST

PROGRAM NOT_DEMO
     VAR
      BOOL1,BOOL2: BOOL;
     END_VAR
    BOOL2:= NOT BOOL1;
END_PROGRAM

Popis

Funkce provádí negaci vstupu.

Vstupy

Vstup | Typ | Význam
IN | ANY_BIT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_BIT | Výstupní hodnota

Příklad použití


OR

Název funkce

OR

Volání v ST

PROGRAM OR_DEMO
     VAR
       BOOL1,BOOL2,BOOL3: BOOL;
     END_VAR
    BOOL3:= BOOL1 OR BOOL2;
END_PROGRAM

Popis

Funkce provádí logický součet dvou nebo více vstupů.

Vstupy

Vstup | Typ | Význam
IN1.. | ANY_BIT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_BIT | Výstupní hodnota

Příklad použití


ROL

Název funkce

ROL

Volání v ST

PROGRAM ROL_DEMO
     VAR
      WORD1,WORD2: WORD;
    INT1: INT;
     END_VAR
    WORD2:= ROL(IN:=WORD1,N:=INT1);
END_PROGRAM

Popis

Funkce provádí rotaci vstupu doleva.

Vstupy

Vstup | Typ | Význam
IN | ANY_BIT | Vstupní hodnota
N | ANY_INT | Počet bitů o kolik se hodnota pootočí směrem doleva

Výstupy

Výstup | Typ | Význam
=> | ANY_BIT | Výstupní hodnota

Příklad použití


ROR

Název funkce

ROR

Volání v ST

PROGRAM ROR_DEMO
     VAR
      WORD1,WORD2: WORD;
    INT1: INT;
     END_VAR
    WORD2:= ROR(IN:=WORD1,N:=INT1);
END_PROGRAM

Popis

Funkce provádí rotaci vstupu doprava.

Vstupy

Vstup | Typ | Význam
IN | ANY_BIT | Vstupní hodnota
N | ANY_INT | Počet bitů o kolik se hodnota pootočí směrem doprava

Výstupy

Výstup | Typ | Význam
=> | ANY_BIT | Výstupní hodnota

Příklad použití


SHL

Název funkce

SHL

Volání v ST

PROGRAM SHL_DEMO
     VAR
      WORD1,WORD2: WORD;
    INT1: INT;
     END_VAR
    WORD2:= SHL(IN:=WORD1,N:=INT1);
END_PROGRAM

Popis

Funkce provádí bitový posun vstupu. Hodnotu doplňuje zleva nulami.

Vstupy

Vstup | Typ | Význam
IN | ANY_BIT | Vstupní hodnota
N | ANY_INT | Počet bitů, o kolik se hodnota posune směrem doleva

Výstupy

Výstup | Typ | Význam
=> | ANY_BIT | Výstupní hodnota

Příklad použití


SHR

Název funkce

SHR

Volání v ST

PROGRAM SHR_DEMO
     VAR
      WORD1,WORD2: WORD;
    INT1: INT;
     END_VAR
    WORD2:= SHR(IN:=WORD1,N:=INT1);
END_PROGRAM

Popis

Funkce provádí bitový posun vstupu. Hodnotu doplňuje zprava nulami.

Vstupy

Vstup | Typ | Význam
IN | ANY_BIT | Vstupní hodnota
N | ANY_INT | Počet bitů, o kolik se hodnota posune směrem doprava

Výstupy

Výstup | Typ | Význam
=> | ANY_BIT | Výstupní hodnota

Příklad použití


XOR

Název funkce

XOR

Volání v ST

PROGRAM XOR
     VAR
       BOOL1,BOOL2,BOOL3: BOOL;
     END_VAR
    BOOL3:= BOOL1 XOR BOOL2;
END_PROGRAM

Popis

Funkce provádí exkluzivní disjunkci dvou nebo více vstupů. Výstup je true pokud lichý počet vstupů odpovídá stavu true.

Vstupy

Vstup | Typ | Význam
IN1.. | ANY_BIT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_BIT | Výstupní hodnota

Příklad použití


Pulzní generátor

Název bloku

BD2_PULSE_GENERATOR

Volání v ST

PROGRAM TEST_BD2
    VAR
    B1 : BOOL;
    FB : LIB.CORE.V1_0.BD2_PULSE_GENERATOR;
    END_VAR
    FB();
    B1 := FB.OUT;
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok slouží jako generátor binárních pulzů, u kterého lze nastavit dobu trvání vysoké a nízké výstupní úrovně.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
ENABLE | BOOL | Povolení provozu | True
PAUSING | BOOL | Typ chování po změně signálu ENABLE (při volbě FALSE se začíná generovat výstup od začátku periody, při volbě TRUE se pokračuje od místa, kde bylo generování přerušeno) | True
TFALSE | TIME | Interval pro trvání výstupního signálu v hodnotě FALSE | 1 s
TTRUE | TIME | Interval pro trvání výstupního signálu v hodnotě TRUE | 1 s

Výstupy

Výstup | Typ | Význam
OUT | BOOL | Výstupní signál
OUTN | BOOL | Výstupní negovaný signál
TRES | REAL | Zbývající čas do konce periody [s]

Funkce

Funkční blok BD2 generuje pulzy na výstupu OUT a inverzní pulzy na negovaném výstupu OUTN.

Příklad použití

Blok se používá jako "blikátko" pro generování periodického signálu pro testování nebo spouštění pravidelných událostí (vzorkování, reset, ...). Zvažte, zda není někdy lepší použít signál vycházející z proměnné RTC/UTC, ten je v případě např. minutových impulsů synchronizován s reálným časem. Blok BD2 má naopak tu výhodu, že periodu lze pozastavit (při nastavení PAUSING = true).


Externí paměť alarmů

Název bloku

BD57_ALARMMEMORYEXT

Volání v ST

PROGRAM TEST BD57
    VAR
    BOOL1, BOOL2, BOOL3, BOOL4, BOOL5, BOOL6:BOOL;
    FB : LIB.CORE.V1_1.BD57_ALARMMEMORYEXT;
    END_VAR
     FB.IN[1] := BOOL3;
     FB.IN[2] := BOOL4;
     FB(ACK:=BOOL1,RESET:=BOOL2);
     BOOL5 := FB.OUT[1];
     BOOL6 := FB.OUT[2];
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.1

Popis

Blok slouží jako paměť alarmů s možností zapamatovat si až 16 alarmových hlášení.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | MULTIIOBOOL | Vstupy alarmů | [False,...,False]
ACK | BOOL | Potvrzení. Když IN=TRUE a je náběžná hrana ACK pak ACKNOWLEDGED=TRUE (a stále MEMORY=TRUE) | False
RESET | BOOL | Reset paměti alarmů | False
IN0,IN1,..,IN15 | BOOL | Jednotlivé vstupy alarmů |

Výstupy

Výstup | Typ | Význam
OUT | MULTIIOBOOL | Výstupy alarmů.
ACKNOWLEDGED | MULTIIOBOOL | Stavový vektor "Potvrzen"
MEMORY | BOOL | Stavový vektor "Paměť alarmu"
ALRSTATUS | INT | Uložený stav alarmů.
OUT0,OUT1,..,OUT15 | BOOL | Výstupy alarmů - jednotlivě

Funkce

Blok zaznamenává alarmové stavy. Při příchodu alarmu od některého vstupu in si blok zapamatuje alarm a změní daný výstup out, paměť alarmů nastaví na memory=true. Při náběžné hraně od vstupu ACK se na výstupu ACKNOWLEDGED uloží aktuální stav hlášení alarmů. Výstupy out a paměť memory lze vyresetovat náběžnou hranou vstupu reset. POZOR rozsah v ST je od 1 do 16.

Hodnoty výstupu alrstatus:

  • alrstatus=256 - min jeden alarm je aktivní.
  • alrstatus=512 - v paměti acknowledged je min jeden alarm aktivní
  • alrstatus=1024 - memory= true, alarm je nebo byl aktivní, ale ještě ho nikdo nevyresetoval.

Hodnota alrstatus může být součtem dílčích hlášení.

Příklad použití

V proměnné ALRSTATUS se uchovává aktuální stav alarmu. Ten může být jeden z následujících:
  • 0: Normal - alarm není přítomen
  • 1280: Alarm - vstup IN je v TRUE, nepotvrzeno, alarm lze potvrdit náběžnou hranou na vstupu ACK
  • 1792: Potvrzen - vstup IN je stále v TRUE, na ACK byla přivedena náběžná hrana
  • 1024: Odezněl - vstup IN přešel z TRUE do FALSE, alarm nebyl potvrzen ani smazán
  • 1536: Nesmazán - alarm byl ve stavu Potvrzen, načež vstup IN přešel do FALSE, alarm lze smazat náběžnou hranou na vstupu RESET a tím přivést do stavu Normal.


Logická paměť

Název bloku

BD51_BOOLEAN_MEMORY

Volání v ST

PROGRAM TEST BD51
    VAR
     BOOL1, BOOL2, BOOL3, BOOL4, BOOL5, BOOL6, BOOL7, BOOL8: BOOL;
    FB : LIB.CORE.V1_0.BD51_BOOLEAN_MEMORY;
    END_VAR
    FB.IN[1]:=BOOL3;
    FB.IN[2]:=BOOL4;
    FB.IN[3]:=BOOL5;
    FB(BR:= BOOL1,DELAYONLY:=BOOL2);
    BOOL6 := FB.OUT[1];
    BOOL7 := FB.OUT[2];
    BOOL8 := FB.OUT[3];
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok slouží jako propust nebo jako zpožďovač, který zpozdí výstup o jeden cyklus oproti vstupu.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | MULTIIOBOOL | Pole vstupů | [False,...,False]
BR | BOOL | Řízení náběžnou hranou | False
BF | BOOL | Řízení sestupnou hranou | False
BINIT | BOOL | Inicializace, pokud je binit=false pak out=binitval | True
BINITVAL | BOOL | Hodnota inicializace. | False
DELAYONLY | BOOL | Funkce výstupu | False
IN0..IN15 | BOOL | Vstupy |

Výstupy

Výstup | Typ | Význam
OUT | MULTIIOBOOL | Pole výstupů
OUT0..OUT15 | BOOL | Výstupy

Funkce

Pokud je vstup delayonly= true, tak se blok chová jako zpožďovač o jeden cyklus. Pokud vstup delayonly= false, blok je řízen signály br a bf. Signál br reaguje na náběžnou hranu a uloží na výstup hodnoty proměnných ze vstupů. Stejně tak bf reaguje na sestupnou hranu a uloží vstupy na výstup. Když je binit = false, tak se na výstup uloží hodnota binitval. V případě, že binit = true, výstupy nejsou inicializované. Vstupy je možno připojit dvěma způsoby, buď jako multireal na vstup in nebo samostatně na vstupy in0, in1,..: zvolený signál myší připojíte na vstup in0,in1 a další signály připojujete tak, že natáhnete myší signál na modul a v modulu na červený čtverec, kde připojíte proměnnou na in+. Stejně se připojují i výstupy. POZOR, rozsah indexování v ST je od 1 do 16, nikoliv 0 ... 15.

Příklad použití


F_TRIG

Název bloku

F_TRIG

Volání v ST

PROGRAM F_TRIG_DEMO
     VAR
     BOOL1,BOOL2: BOOL;
     FB:F_TRIG;
    END_VAR
    FB(CLK:=BOOL1,Q=>BOOL2);
END_PROGRAM

Popis

Blok reaguje na sestupnou hranu a při jejím příchodu na výstup vyšle jednotkový impuls (impuls o délce trvání jednoho programového cyklu).

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
CLK | ANY_BOOL | Vstup reagující na sestupnou hranu. | False

Výstupy

Výstup | Typ | Význam
Q | BOOL | Výstupní signál

Příklad použití


Flip-flop obvod

Název bloku

BD52_FLIPFLOP

Volání v ST

PROGRAM TESTST
    VAR
    BOOL1, BOOL2, BOOL3, BOOL4, BOOL5 :BOOL;
    FB : LIB.CORE.V1_0.BD52_FLIPFLOP;
    END_VAR
    FB(IN:=BOOL1,INF:=BOOL2,IND:=BOOL3,INFD:=BOOL4,OUT =>BOOL5);
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok ovládá výstupní hodnotu v závislosti na vstupech, které reagují buď na náběžnou nebo sestupnou hranu a tím výstup setují (nastavují do TRUE) nebo resetují (nastavují do FALSE).

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | BOOL | Náběžná hrana nastaví na out=true | False
INF | BOOL | Sestupná hrana nastaví na out=true | False
IND | BOOL | Náběžná hrana nastaví na out=false | False
INFD | BOOL | Sestupná hrana nastaví na out=false | False

Výstupy

Výstup | Typ | Význam
OUT | BOOL | Výstupní hodnota
OUTN | BOOL | Negovaný výstup out

Funkce

Blok implementuje jednoduchou logickou paměť. Jakákoliv náběžná hrana od vstupu in a jakákoliv sestupná hrana od vstupu inf nastaví out=true. Jakákoliv náběžná hrana od vstupu ind a jakákoliv sestupná hrana od vstupu infd nastaví out=false. Když přijde více náběžných hran ve stejném čase, hodnota out=false je preferovaná. Viz obrázek níže. Výstup outn je negací výstupu out.

BD52 Flip-flop obvod – pro jednoduchost inf=infd=false. Všimněte si, že pokud přijde více náběžných hran, přednostně se nastaví stav out=false.

Příklad použití

BD52 - ukázka sepnutí výstupu náběžnou hranou na vstupu in.


Logická propust

Název bloku

BD53_LATCHFLIPFLOPNODE

Volání v ST

PROGRAM TEST_BD53
VAR
    BOOL1, BOOL2, BOOL3, BOOL4, BOOL5, BOOL6, BOOL7: BOOL;
    FB : LIB.CORE.V1_0.BD53_LATCHFLIPFLOPNODE;
END_VAR
    FB.IN[1]:=BOOL2;
    FB.IN[2]:=BOOL3;
    FB.IN[3]:=BOOL4;
    FB(ENABLED:=BOOL1);
    BOOL5 := FB.OUT[1];
    BOOL6 := FB.OUT[2];
    BOOL7 := FB.OUT[3];
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok slouží jako propust logických hodnot.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
ENABLED | BOOL | Povolení enable=true pak out0=in0,... | False
IN0,IN1,..,IN15 | BOOL | Jednotlivé vstupy |
IN | MULTIIOBOOL | Pole vstupů | [False]

Výstupy

Výstup | Typ | Význam
OUT | MULTIIOBOOL | Pole výstupů
OUT0,OUT1,..,OUT15 | BOOL | Jednotlivé výstupy

Funkce

Blok slouží jako datová propust: když enable=true, pak se všechny vstupy zobrazí na výstupech. Pokud enable=false, na výstupu je poslední hodnota. POZOR: rozsah indexů v ST je od 1 do 16, nikoli 0...15.

Příklad použití


Paměť alarmů

Název bloku

BD50_ALARM_MEMORY

Volání v ST

PROGRAM TEST_BD50
    VAR
    BOOL1, BOOL2, BOOL3, BOOL4, BOOL5, BOOL6:BOOL;
    FB : LIB.CORE.V1_0.BD50_ALARM_MEMORY;
    END_VAR
     FB.IN[1] := BOOL3;
     FB.IN[2] := BOOL4;
     FB(ACK:=BOOL1,RESET:=BOOL2);
     BOOL5 := FB.OUT[1];
     BOOL6 := FB.OUT[2];
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok slouží jako paměť alarmů, s možností zapamatovat si až 16 alarmových hlášení.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | MULTIIOBOOL | Vstupy alarmů. | [False,...,False]
ACK | BOOL | Potvrzení. Když IN=TRUE a je náběžná hrana ACK pak ACKNOWLEDGED=TRUE (a stále MEMORY=TRUE) | False
RESET | BOOL | Reset paměti alarmů. | False
IN0,IN1,..,IN15 | BOOL | Vstupy alarmů - jednotlivě |

Výstupy

Výstup | Typ | Význam
OUT | MULTIIOBOOL | Výstupy alarmů.
ACKNOWLEDGED | MULTIIOBOOL | Stavový vektor "Potvrzen"
MEMORY | BOOL | Stavový vektor "Paměť alarmu"
ALRSTATUS | INT | Uložený stav alarmů.
OUT0,OUT1,..,OUT15 | BOOL | Výstupy alarmů - jednotlivě

Funkce

Blok zaznamenává alarmové stavy. Při příchodu alarmu od některého vstupu in si blok zapamatuje alarm a změní daný výstup out, paměť alarmů nastaví na memory=true. Při náběžné hraně od vstupu ACK se na výstupu ACKNOWLEDGED uloží aktuální stav hlášení alarmů. Výstupy out a paměť memory lze vyresetovat náběžnou hranou vstupu reset. POZOR, rozsah v ST je od 1 do 16.

Hodnoty výstupu alrstatus:

  • alrstatus=256 - min jeden alarm je aktivní.
  • alrstatus=512 - v paměti acknowledged je min jeden alarm aktivní
  • alrstatus=1024 - memory= true, alarm je nebo byl aktivní, ale ještě ho nikdo nevyresetoval.

Hodnota alrstatus může být součtem dílčích hlášení, viz možné stavy níže.

Příklad použití

V proměnné ALRSTATUS se uchovává aktuální stav alarmu. Ten může být jeden z následujících:
  • 0: Normal - alarm není přítomen
  • 1280: Alarm - vstup IN je v TRUE, nepotvrzeno, alarm lze potvrdit náběžnou hranou na vstupu ACK
  • 1792: Potvrzen - vstup IN je stále v TRUE, na ACK byla přivedena náběžná hrana
  • 1024: Odezněl - vstup IN přešel z TRUE do FALSE, alarm nebyl potvrzen ani smazán
  • 1536: Nesmazán - alarm byl ve stavu Potvrzen, načež vstup IN přešel do FALSE, alarm lze smazat náběžnou hranou na vstupu RESET a tím přivést do stavu Normal.


R_TRIG

Název bloku

R_TRIG

Volání v ST

PROGRAM R_TRIG_DEMO
     VAR
     BOOL1,BOOL2: BOOL;
     FB:R_TRIG;
    END_VAR
    FB(CLK:=BOOL1,Q=>BOOL2);
END_PROGRAM

Popis

Blok reaguje na náběžnou hranu a při jejím příchodu na výstup vyšle jednotkový impuls (impuls o délce jednoho programového cyklu).

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
CLK | ANY_BOOL | Vstup reagující na náběžnou hranu. | False

Výstupy

Výstup | Typ | Význam
Q | BOOL | Výstupní signál

Příklad použití


RS

Název bloku

RS

Volání v ST

PROGRAM RS_DEMO
     VAR
     BOOL1,BOOL2,BOOL3: BOOL;
     FB:RS;
    END_VAR
    FB(R1:=BOOL2,S:=BOOL3,Q1=>BOOL1);
END_PROGRAM

Popis

Klopný obvod funguje jako klasický klopný obvod RS. Proměnná "s" - set slouží k nastavení výstupu. Proměnná "r1" - reset slouží k resetování výstupu. V případě, kdy na obou vstupech je true, na výstupu je false.

Vstupy reagují na náběžnou hranu, hodnoty na výstupu tedy zůstanou i po skončení signálu na vstupu.

S | R1 | Q1
0 | 0 | předchozí stav
1 | 0 | 1
0 | 1 | 0
1 | 1 | 0

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
S | ANY_BOOL | Set | False
R1 | ANY_BOOL | Reset | False

Výstupy

Výstup | Typ | Význam
Q1 | BOOL | Výstup klopného obvodu

Příklad použití


Jednoduchá paměť alarmů

Název bloku

BD49_SINGLEALARMMEMORY

Volání v ST

PROGRAM TEST_BD49
    VAR
    BOOL1, BOOL2, BOOL3:BOOL;
    FB : LIB.CORE.V1_0.BD49_SINGLEALARMMEMORY;
    END_VAR

    FB(IN:=BOOL1, RESET:=BOOL2);
    BOOL3 := FB.MEMORY;
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Tento blok vám pomůže zvládnout zpracování alarmových hlášení. Připojte alarmový signál na vstup IN. Náběžná hrana vstupu IN nastaví výstup MEMORY=TRUE (paměť alarmu). Alarm může být po odeznění resetován při náběžné hraně vstupu RESET (reset alarmu). V tomto případě, když IN=FALSE, se výstup MEMORY resetováním nastaví na FALSE. Když je alarm stále aktivní (IN=TRUE), nemůže být resetován vstupem RESET, lze jej jen potvrdit vstupem ACK.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | BOOL | Vstup alarmu | False
ACK | BOOL | Potvrzení. Když IN=TRUE a je náběžná hrana ACK pak ACKNOWLEDGED=TRUE (a stále MEMORY=TRUE) | False
RESET | BOOL | Reset paměti alarmů | False

Výstupy

Výstup | Typ | Význam
ACKNOWLEDGED | BOOL | Zapamatované - potvrzené alarmové hlášení
MEMORY | BOOL | Alarm; když přijde alarmové hlášení, tak MEMORY=TRUE
ALRSTATUS | INT | Uložený stav alarmů (bit 8 odpovídá IN=TRUE, bit 9 odpovídá ACKNOWLEDGED=TRUE, bit 10 odpovídá MEMORY=TRUE)

Příklad použití

V proměnné ALRSTATUS se uchovává aktuální stav alarmu. Ten může být jeden z následujících:
  • 0: Normal - alarm není přítomen
  • 1280: Alarm - vstup IN je v TRUE, nepotvrzeno, alarm lze potvrdit náběžnou hranou na vstupu ACK
  • 1792: Potvrzen - vstup IN je stále v TRUE, na ACK byla přivedena náběžná hrana
  • 1024: Odezněl - vstup IN přešel z TRUE do FALSE, alarm nebyl potvrzen ani smazán
  • 1536: Nesmazán - alarm byl ve stavu Potvrzen, načež vstup IN přešel do FALSE, alarm lze smazat náběžnou hranou na vstupu RESET a tím přivést do stavu Normal.


Paměť alarmu se zpožděním

Název bloku

BD56_SINGLEALARMMEMORYDELAY

Volání v ST

PROGRAM TEST BD56
VAR
    BOOL1,BOOL2,BOOL3,BOOL4,BOOL5 :BOOL;
    TIME1 : TIME;
    INT1:INT;
    FB : LIB.CORE.V1_1.BD56_SINGLEALARMMEMORYDELAY;
END_VAR
    FB(IN:=BOOL1,ACK:=BOOL2,RESET:=BOOL3,DELAY:=TIME1);
    BOOL4 := FB.ACKNOWLEDGED;
    BOOL5 := FB.MEMORY;
    INT1 := FB.ALRSTATUS;
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.1

Popis

Blok slouží jako alarm s pamětí, blok reaguje na alarm až po uplynutí určitého času.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | BOOL | Vstup alarmu | False
ACK | BOOL | Zapamatovat stav alarmu | False
RESET | BOOL | Reset paměti alarmu | False
DELAY | TIME | Zpoždění | 30 s

Výstupy

Výstup | Typ | Význam
ACKNOWLEDGED | BOOL | Zapamatované alarmové hlášení
MEMORY | BOOL | Paměť alarmu
ALRSTATUS | INT | Stav alarmu - kompozice vstupu, paměti a informace o potvrzení

Funkce

Blok zaznamenává alarmové hlášení. Při příchodu alarmu od vstupu in si blok uloží alarm do paměti až po uplynutí doby delay. Při náběžné hraně od vstupu ack se na výstupu acknowledged uloží informace o tom, že alarm byl potvrzen. Paměťový bit memory lze vyresetovat náběžnou hranou vstupu reset1 nebo reset2.

Hodnoty výstupu alrstatus:

  • alrstatus=256 - min. jeden alarm je aktivní.
  • alrstatus=512 - v paměti acknowledged je min jeden alarm aktivní
  • alrstatus=1024 - memory = true, alarm je nebo byl aktivní, ale ještě ho nikdo nevyresetoval.

Hodnota alrstatus může být součtem dílčích hlášení.

Příklad použití

V proměnné ALRSTATUS se uchovává aktuální stav alarmu. Ten může být jeden z následujících:
  • 0: Normal - alarm není přítomen
  • 1280: Alarm - vstup IN je v TRUE, nepotvrzeno, alarm lze potvrdit náběžnou hranou na vstupu ACK
  • 1792: Potvrzen - vstup IN je stále v TRUE, na ACK byla přivedena náběžná hrana
  • 1024: Odezněl - vstup IN přešel z TRUE do FALSE, alarm nebyl potvrzen ani smazán
  • 1536: Nesmazán - alarm byl ve stavu Potvrzen, načež vstup IN přešel do FALSE, alarm lze smazat náběžnou hranou na vstupu RESET a tím přivést do stavu Normal.


SR

Název bloku

SR

Volání v ST

PROGRAM SR_DEMO
     VAR
     BOOL1,BOOL2,BOOL3: BOOL;
     FB:SR;
    END_VAR
    FB(R:=BOOL2,S1:=BOOL3,Q1=>BOOL1);
END_PROGRAM

Popis

Klopný obvod, funguje jako klasický klopný obvod RS. Proměnná "s1" - set slouží k nastavení výstupu. Proměnná "r" - reset slouží k resetování výstupu. V případě, kdy na obou vstupech je true, na výstupu je true.

Vstupy reagují na náběžnou hranu, hodnoty na výstupu tedy zůstanou i po skončení signálu na vstupu.

S1 | R | Q1
0 | 0 | předchozí stav
1 | 0 | 1
0 | 1 | 0
1 | 1 | 1

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
S1 | ANY_BOOL | Set | False
R | ANY_BOOL | Reset | False

Výstupy

Výstup | Typ | Význam
Q1 | BOOL | Výstup klopného obvodu

Příklad použití


Toggle

Název funkčního bloku

Toggle

Volání v ST

PROGRAM Blok
VAR
    FB:Lib.Core.V1_0.Toggle;
    in_var:bool;
    out_var:bool;
END_VAR
    FB(In:=in_var, out=>out_var);

END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok funguje jako přepínač. Vstup reaguje na náběžnou hranu. Při první náběžné hraně dojde k přepnutí výstupu na TRUE. Při druhé náběžné hraně dojde k přepuntí výstupu na FALSE.

Vstupy

Vstup | Typ | Význam
IN | BOOL | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
OUT | BOOL | Výstupní hodnota


Digitální demultiplexer

Název bloku

BD11_DIGITAL_DEMULTIPLEXER

Volání v ST

PROGRAM BD11_TEST
VAR
    INPUT:REAL;
    SELECTOR:LINT;
    IN1: BOOL;
    OUT1: LIB.CORE.V1_0.MULTIIOBOOL;
    FB: LIB.CORE.V1_0.BD11_DIGITAL_DEMULTIPLEXER;
END_VAR
    FB(IN:=IN1, SEL:=SELECTOR);
    OUT1:=FB.OUT;
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok implementuje demultiplexor pro logické hodnoty. Pokud je SEL=1, pak na první prvek výstupního pole OUT se přenáší hodnota ze vstupu IN. Pokud je SEL=2, hodnota ze vstupu IN se přenáší na druhý prvek výstupního pole, atd. Všechny ostatní výstupy jsou nastaveny na hodnotu parametru DEFAULT.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | BOOL | Vstupní hodnota | False
SEL | LINT | Volič výstupu | 0
DEFAULT | BOOL | Základní hodnota všech výstupů | False

Výstupy

Výstup | Typ | Význam
OUT | MULTIIOBOOL | Výstupní signál

Příklad použití


Digitální filtr

Název bloku

BD15_DIGITAL_FILTER

Volání v ST

PROGRAM BD15_TEST
VAR
    IN1, OUT1: BOOL;
    FB: LIB.CORE.V1_0.BD15_DIGITAL_FILTER;
END_VAR
    FB(IN:=IN1);
    OUT1:=FB.OUT;
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.0

Popis

Blok převádí vstup IN na výstup OUT s jedním omezením – blok neumožňuje měnit logickou hodnotu OUT více jak jednou za T sekund. Blok filtruje rychlé oscilace od vstupu, Viz. obrázek níže. Blok je obvykle připojen do zařízení, které trpí rychlým zapínáním a vypínáním.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | BOOL | Vstupní hodnota | False
T | TIME | Blok neumožňuje měnit výstup OUT rychleji než jednou za T sekund | 5 s

Výstupy

Výstup | Typ | Význam
OUT | BOOL | Filtrovaný výstupní signál
TRES | TIME | Čas bloku je připraven změnit výstup (TRES = 0 - blok je připraven, TRES > 0 - blok čeká)

Příklad použití


MONOSTABLEFLIPFLOP

Název bloku

MONOSTABLEFLIPFLOP

Volání v ST

PROGRAM MONOSTABLEFLIPFLOP_DEMO
     VAR
     TIME1:TIME;
       BOOL1,BOOL3: BOOL;
     TIME1: TIME;
     FB:LIB.CORE.V1_0.MONOSTABLEFLIPFLOP;
     END_VAR
    FB(DELAY:=TIME1,IN:=BOOL1,OUT=>BOOL3);
END_PROGRAM

Popis

Při příchodu náběžné hrany impulsu na vstup in funkce na výstupu out zobrazí hodnotu true po dobu delay.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | ANY_BIT | Vstupní hodnota | False
DELAY | TIME | Délka impulsu | 10 s

Výstupy

Výstup | Typ | Význam
OUT | BIT | Výstupní signál
TRES | TIME | Zbývající čas
IN | BIT | Signál kopírující vstupní hodnotu proměnné IN

Příklad použití


MONOSTABLEFLIPFLOPNONRST

Název bloku

MONOSTABLEFLIPFLOP

Volání v ST

PROGRAM MONOSTABLEFLIPFLOPNONRST_DEMO
     VAR
     TIME1:TIME;
       BOOL1,BOOL3: BOOL;
     TIME1: TIME;
     FB:LIB.CORE.V1_0.MONOSTABLEFLIPFLOPNONRST;
     END_VAR
    FB(DELAY:=TIME1,IN:=BOOL1,OUT=>BOOL3);
END_PROGRAM

Popis

Funkce při příchodu impulsu na vstup in na výstupu out zobrazí hodnotu true po dobu delay. V případě příchodu další hrany na vstupu in v okamžiku, kdy výstup out je ještě true, hrana na vstupu in nemá na výstup žádný vliv.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | ANY_BIT | Vstupní hodnota | False
DELAY | TIME | Délka impulsu | 10 s

Výstupy

Výstup | Typ | Význam
OUT | BIT | Výstupní signál
TRES | TIME | Zbývající čas
IN | BIT | Signál kopírující vstupní hodnotu proměnné IN

Příklad použití


TP

Název bloku

TP

Volání v ST

PROGRAM TP
     VAR
     BOOL1,BOOL2: BOOL;
     TIME1,TIME2: TIME;
     FB:TP;
    END_VAR
    FB(IN:=BOOL1,PT:=TIME1,Q=>BOOL2,ET=>TIME2);
END_PROGRAM

Popis

Při náběžné hraně vstupního signálu se na výstupu vygeneruje impuls o délce pt.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | ANY_BOOL | Vstupní signál | False
PT | ANY_TIME | Délka výstupního impulsu | 0 s

Výstupy

Výstup | Typ | Význam
Q | BOOL | Výstupní signál
ET | TIME | Čas od zapnutí vstupního signálu in

Příklad použití


Zpožděné vypnutí

Název bloku

BD13_SWITCHOFFDELAY

Volání v ST

PROGRAM BD13_TEST
VAR
    IN1,OUT1: BOOL;
    FB: LIB.CORE.V1_1.BD13_SWITCHOFFDELAY;
END_VAR
    FB(IN:=IN1);
    OUT1:=FB.OUT;
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.1

Popis

Blok zpoždění vypnutí transformuje vstupní signál IN tak, že každá sestupná hrana je zpožděna o TOFF. Náběžná hrana signálu IN není zpožděna. Parametr TRES udává zbývající čas do vypnutí. Vstup RESET slouží k vynulování hodnoty TRES.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | BOOL | Vstupní hodnota | False
RESET | BOOL | Vynuluje hodnotu TRES | False
IGNORESTARTEDGE | BOOL | Pokud je TRUE, nedojde k inicializaci po startu programu | False
TOFF | TIME | Hodnota zpoždění pro vypnutí | 30 s

Výstupy

Výstup | Typ | Význam
OUT | BOOL | Výstupní signál
TRES | TIME | Zbývající čas do vypnutí

Příklad použití

"Prodloužený odpad relé" se používá například pro doběh čerpadla po uzavření ventilu topného okruhu: pokud signál na ventilu klesne pod 3 %, čerpadlo běží ještě několik minut a pak se vypne. Tím se okruh (spolu s hysterezí komparátoru) ošetří proti častému zapínání a vypínání čerpadla při kolísání řídicího signálu pro ventil kolem mezní (3 %) hodnoty.

Starší verze

Verze V1.0 je označena jako BROKEN. Obsahovala chybu inicializace vstupu IGNORESTARTEDGE. Při prvním cyklu běhu programu byla ignorována hodnota na vstupu IN a nebyl započat odpočet zpožděné reakce, i když byl blok jinak správně nastaven.


TOF

Název bloku

TOF

Volání v ST

PROGRAM TOF_DEMO
     VAR
     BOOL1,BOOL2: BOOL;
     TIME1,TIME2: TIME;
     FB:TOF;
    END_VAR
    FB(IN:=BOOL1,PT:=TIME1,Q=>BOOL2,ET=>TIME2);
END_PROGRAM

Popis

Blok provádí zpoždění odepnutí vstupního signálu. Sepnutí není zpožděno.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | BOOL | Vstupní signál | False
PT | TIME | Čas zpoždění odepnutí | 0 s

Výstupy

Výstup | Typ | Význam
Q | BOOL | Výstupní signál
ET | TIME | Čas od vypnutí vstupního signálu in

Příklad použití


Zpožděné zapnutí

Název bloku

BD12_SWITCHONDELAY

Volání v ST

PROGRAM BD12_TEST
VAR
    IN1,OUT1: BOOL;
    FB: LIB.CORE.V1_1.BD12_SWITCHONDELAY;
END_VAR
    FB(IN:=IN1);
    OUT1:=FB.OUT;
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.1

Popis

Blok zpoždění zapnutí transformuje vstupní signál IN tak, že každá náběžná hrana je zpožděna o TON. Sestupná hrana signálu IN není zpožděna. Parametr TRES udává zbývající čas do vypnutí. Vstup RESET slouží k vynulování hodnoty TRES.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | BOOL | Vstupní hodnota | False
RESET | BOOL | Vynuluje hodnotu TRES | False
IGNORESTARTEDGE | BOOL | Pokud je TRUE, nedojde k inicializaci po startu programu | False
TON | TIME | Hodnota zpoždění pro zapnutí | 30 s

Výstupy

Výstup | Typ | Význam
OUT | BOOL | Výstupní signál
TRES | TIME | Zbývající čas do vypnutí

Příklad použití

Jeden z nejpoužívanějších bloků. Využívá se například pro zpoždění alarmových signálů jako ošetření proti příliš rychlému vyvolání alarmu: alarmový stav musí trvat nejméně 10 sekund a teprve potom je odstaveno zařízení, vyvolán alarm ve vizualizaci atd.

Starší verze

Verze V1.0 je označena jako BROKEN. Obsahovala chybu inicializace vstupu IGNORESTARTEDGE. Při prvním cyklu běhu programu byla ignorována hodnota na vstupu IN a nebyl započat odpočet zpožděné reakce, i když byl blok jinak správně nastaven.


TON

Název bloku

TON

Volání v ST

PROGRAM TON_DEMO
     VAR
     BOOL1,BOOL2: BOOL;
     TIME1,TIME2: TIME;
     FB:TON;
    END_VAR
    FB(IN:=BOOL1,PT:=TIME1,Q=>BOOL2,ET=>TIME2);
END_PROGRAM

Popis

Blok provádí zpoždění sepnutí vstupního signálu. Odepnutí není zpožděno.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | BOOL | Vstupní signál | False
PT | TIME | Čas zpoždění náběhu | 0 s

Výstupy

Výstup | Typ | Význam
Q | BOOL | Výstupní signál
ET | TIME | Čas od zapnutí vstupního signálu in

Příklad použití


Zpožděné zapnutí/vypnutí

Název bloku

BD14_SWITCHONOFFDELAY

Volání v ST

PROGRAM BD14_TEST
VAR
    IN1,OUT1: BOOL;
    FB: LIB.CORE.V1_1.BD14_SWITCHONOFFDELAY;
END_VAR
    FB(IN:=IN1);
    OUT1:=FB.OUT;
END_PROGRAM

Knihovna

LIB\CORE

Verze

V1.1

Popis

Blok zpoždění zapnutí/vypnutí transformuje vstupní signál IN tak, že každá náběžná hrana je zpožděna o TON a každá sestupná hrana signálu IN je zpožděna o TOFF. Parametr TRES udává zbývající čas zpoždění. Vstup RESET slouží k vynulování hodnoty TRES.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | BOOL | Vstupní hodnota | True
RESET | BOOL | Vynuluje hodnotu TRES | False
IGNORESTARTEDGE | BOOL | Pokud je TRUE, nedojde k inicializaci po startu programu | False
TOFF | TIME | Hodnota zpoždění pro vypnutí | 30 s
TON | TIME | Hodnota zpoždění pro zapnutí | 30 s

Výstupy

Výstup | Typ | Význam
OUT | BOOL | Výstupní signál
TRES | TIME | Zbývající čas zpoždění

Příklad použití

Jedná se v podstatě o digitální filtr, který ignoruje příliš rychlé změny signálu.

Starší verze

Verze V1.0 je označena jako BROKEN. Obsahovala chybu inicializace vstupu IGNORESTARTEDGE. Při prvním cyklu běhu programu byla ignorována hodnota na vstupu IN a nebyl započat odpočet zpožděné reakce, i když byl blok jinak správně nastaven.


TO_BOOL

Název funkce

TO_BOOL

Volání v ST

PROGRAM TO_BOOL_DEMO
     VAR
           BOOL1: BOOL;
       INT1: INT;
     END_VAR
    BOOL1:=TO_BOOL(INT1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu posledního bitu vstupní hodnoty.

Vstupy

Vstup | Typ | Význam
IN | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | BOOL | Výstupní hodnota

Příklad použití


BYTES_TO_STRING

Název funkce

BYTES_TO_STRING

Volání v ST

PROGRAM BYTES_TO_STRING_DEMO
     VAR
        L:DINT:=4;
        BYTE1 ARRAY[0..3] OF BYTE :=[65,64,65,55];
        OUTPUT_STRING: STRING;
        BYTES: BYTE_PTR;
     END_VAR
        BYTES:=ADR(BYTE[0]);
        OUTPUT_STRING:=BYTES_TO_STRING(BYTES:=BYTES, L:=L);
END_PROGRAM

Popis

Funkce převede hodnotu ASCII znaku na řetězec znaků.

Vstupy

Vstup | Typ | Význam
BYTES | BYTE_PTR | Ukazatel na první byte, kde jsou uloženy znaky v ASCII kodu.
L | DINT | Počet vyčítaných znaků.

Výstupy

Výstup | Typ | Význam
=> | STRING | Výstupní řetězec znaků.

Příklad použití


CONCAT

Název funkce

CONCAT

Volání v ST

PROGRAM CONCAT_DEMO
     VAR
       STRING1,STRING2,STRING3: STRING;
     END_VAR
    STRING1:=CONCAT(IN1:=STRING2,IN2:=STRING3);
END_PROGRAM

Popis

Funkce sloučí všechny řetězce na vstupech v jeden výstupní.

Vstupy

Vstup | Typ | Význam
IN1.. | ANY_STRING | Vstupní část řetězce

Výstupy

Výstup | Typ | Význam
=> | ANY_STRING | Výstupní řetězec

Příklad použití


DELETE

Název funkce

DELETE

Volání v ST

PROGRAM DELETE_DEMO
    VAR
      IN1,OUT1: STRING;
      L1, P1: INT;
    END_VAR
    OUT1:=DELETE(IN1:=IN1,L:=L1,P:=P1);
END_PROGRAM

Popis

Funkce DELETE smaže část vstupního stringu. Pro správnou funkci je potřeba, aby délka smazaného úseku byla větší než 0. Počátek "p" musí být větší než 0 a menší než celkový počet znaků ve stringu. Pokud je mazaný úsek mimo vstupní string, jedná se o chybu v zadání parametrů. Při špatném zadání hodnoty "l" a "p" dojde k vyvolání výjimky a zastavení chodu plc. Pokud jsou výjimky zakázány na výstupu se zobrazí poslední správný výsledek.

Vstupy

Vstup | Typ | Význam
IN | ANY_STRING | Vstupní řetězec
L | ANY_INT | Délka smazané části
P | ANY_INT | Pozice, od které bude část stringu smazána, od začátku p=1

Výstupy

Výstup | Typ | Význam
=> | ANY_STRING | Výstupní řetězec

Příklad použití


INSERT

Název funkce

INSERT

Volání v ST

PROGRAM INSERT_DEMO
    VAR
      STRING1,STRING2,STRING3: STRING;
      INT1: INT;
    END_VAR
    STRING1:=INSERT(IN1:=STRING2,IN2:=STRING3,P:=INT1);
END_PROGRAM

Popis

Funkce sloučí dva řetězce s možností toho, že druhý řetězec bude vnořený do prvního.

Vstupy

Vstup | Typ | Význam
IN1,IN2 | ANY_STRING | Vstupní řetězce
DECIMAL | ANY_INT | Pozice, za kolikátým symbolem začne druhý řetězec

Výstupy

Výstup | Typ | Význam
=> | ANY_STRING | Výstupní řetězec

Příklad použití


FIND

Název funkce

FIND

Volání v ST

PROGRAM FIND_DEMO
    VAR
    STRING1,STRING2: STRING;
    OUT: INT;
    END_VAR
    OUT3:= FIND(IN1:=STRING1, IN2:=STRING2);
END_PROGRAM

Popis

Funkce slouží k nalezení pozice znaku/řetězce v řetězci. Vrací hodnotu začátku prvního výskytu IN2 v IN1. Pokud není výskyt nalezen, OUT:=0.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_STRING | Vstupní hodnota
IN2 | ANY_CHARS | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_INT | Výstupní signál

Příklad použití


LEFT

Název funkce

LEFT

Volání v ST

PROGRAM LEFT_DEMO
    VAR
      STRING1,STRING2: STRING;
      INT1: INT;
    END_VAR
    STRING2:=LEFT(IN:=STRING1,L:=INT1);
END_PROGRAM

Popis

Funkce vrátí část řetězce. Velikost řetězce určí vstupní proměnná l, která značí kolik symbolů (vybráno zleva) bude zobrazeno na výstupu.

Vstupy

Vstup | Typ | Význam
IN | ANY_STRING | Vstupní řetězce
L | ANY_INT | Počet symbolů

Výstupy

Výstup | Typ | Význam
=> | ANY_STRING | Výstupní řetězec

Příklad použití


LEN

Název funkce

LEN

Volání v ST

PROGRAM LEN_DEMO
    VAR
      STRING1: STRING;
      INT1: INT;
    END_VAR
    INT1:=LEN(IN:=STRING1);
END_PROGRAM

Popis

Funkce zjistí délku řetězce.

Vstupy

Vstup | Typ | Význam
IN | ANY_STRING | Vstupní řetězec

Výstupy

Výstup | Typ | Význam
=> | ANY_INT | Délka řetězce

Příklad použití


LINT_TO_STRING

Název funkce

LINT_TO_STRING

Volání v ST

PROGRAM LINT_TO_STRING_DEMO
     VAR
     STRING1: STRING;
       LINT1: LINT;
     END_VAR
    STRING1:=LINT_TO_STRING(LINT1);
END_PROGRAM

Popis

Funkce převede hodnotu vstupu na řetězec.

Vstupy

Vstup | Typ | Význam
IN | ANY_LINT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | ANY_STRING | Výstupní hodnota převedená na řetězec

Příklad použití


LREAL_TO_STRING

Název funkce

LREAL_TO_STRING

Volání v ST

PROGRAM LREAL_TO_STRING_DEMO
    VAR
      STRING1: STRING;
      LREAL1: LREAL;
      USINT1: USINT;
    END_VAR
    STRING1:=LREAL_TO_STRING(VALUE:=LREAL1,DECIMAL:=USINT1);
END_PROGRAM

Popis

Funkce převede hodnotu vstupu value na řetězec. Vstupní hodnotou decimal se nastaví, kolik bude převedeno desetinných míst.

Vstupy

Vstup | Typ | Význam
VALUE | ANY_LREAL | Vstupní hodnota
DECIMAL | ANY_USINT | Počet desetinných míst

Výstupy

Výstup | Typ | Význam
=> | ANY_STRING | Výstupní hodnota převedená na řetězec

Příklad použití


MID

Název funkce

MID

Volání v ST

PROGRAM MID_DEMO
    VAR
      STRING1,STRING2: STRING;
      INT1, INT2: INT;
    END_VAR
    STRING1:=MID(IN:=STRING2,L:=INT2,P:=INT1);
END_PROGRAM

Popis

Funkce vrátí část vstupního řetězce. Velikost výstupního řetězce určí vstupní proměnná L, která značí kolik symbolů bude zobrazeno na výstupu od pozice P.

Vstupy

Vstup | Typ | Význam
IN | ANY_STRING | Vstupní řetězec
L | ANY_INT | Délka výstupního řetězce
P | ANY_INT | Pozice za kolikátým symbolem začne kopírování do výstupního řetězce

Výstupy

Výstup | Typ | Význam
=> | ANY_STRING | Výstupní řetězec

Příklad použití


REPLACE

Název funkce

REPLACE

Volání v ST

PROGRAM REPLACE_DEMO
    VAR
      IN1,IN2,OUT1: STRING;
      L1, P1: INT;
    END_VAR
    OUT1:=REPLACE(IN1:=IN1,IN2:=IN2,L:=L1,P:=P1);
END_PROGRAM

Popis

Funkce REPLACE nahradí část vstupního stringu in1 za string in2. Počátek "p" musí být větší než nula a menší než celkový počet znaků ve vstupním stringu in1. Pokud je nahrazený úsek mimo vstupní string jedná se o chybu v zadání parametrů. Při špatném zadání hodnoty "l" a "p" dojde k vyvolání výjimky a zastavení chodu PLC. Pokud jsou výjimky zakázány na výstupu se zobrazí poslední správný výsledek.

Vstupy

Vstup | Typ | Význam
IN1 | ANY_STRING | Vstupní řetězec, ve kterém se bude část nahrazovat
IN2 | ANY_STRING | Vstupní řetězec, kterým se bude nahrazovat
L | ANY_INT | Délka nahrazené části
P | ANY_INT | Pozice, od které bude část stringu nahrazena, od začátku p=1

Výstupy

Výstup | Typ | Význam
=> | ANY_STRING | Výstupní řetězec

Příklad použití


RIGHT

Název funkce

RIGHT

Volání v ST

PROGRAM RIGHT_DEMO
    VAR
      STRING1,STRING2: STRING;
      INT1: INT;
    END_VAR
    STRING2:=RIGHT(IN:=STRING1,L:=INT1);
END_PROGRAM

Popis

Funkce vrátí část řetězce. Velikost řetězce určí vstupní proměnná l, která značí, kolik symbolů (vybráno zprava) bude zobrazeno na výstupu.

Vstupy

Vstup | Typ | Význam
IN | ANY_STRING | Vstupní řetězce
L | ANY_INT | Počet symbolů

Výstupy

Výstup | Typ | Význam
=> | ANY_STRING | Výstupní řetězec

Příklad použití


STRING_TO_BYTES

Název funkce

STRING_TO_BYTES

Volání v ST

PROGRAM STRING_TO_BYTES_DEMO
VAR
    L: dint:=4;
    in_string: string := "AA@A";
    bytes: bytearray;
    in_string_ref : ref_to string;
END_VAR
  in_string_ref := REF in_string;
  bytes:=string_to_bytes(str:=in_string_ref,l:=L);
END_PROGRAM

Popis

Funkce převede řetězec znaků na hodnoty ASCII kódu.

Vstupy

Vstup | Typ | Význam
STR | STRING_REF | Vstupní řetězec znaků
L | DINT | Počet posílaných znaků

Výstupy

Výstup | Typ | Význam
=> | BYTEARRAY | Pole hodnot ASCII znaků

Příklad použití


Odesílání emailů - ST

Název funkce

SENDMAIL

Volání v ST

PROGRAM TEST_SENDMAIL
 VAR
        TESTEMAIL:BOOL:=TRUE;

    CHANNEL : STRING[64] := 'ALRCHANNEL';
        SENDER : STRING[64] := 'INFO@DOMAT.CZ';
        RECIPIENT : STRING[64] := 'SUPPORT@DOMAT.CZ';
        SUBJECT : STRING[64];
        MESSAGE : STRING[64];

 END_VAR

 IF TESTEMAIL THEN
     SUBJECT := 'TEST';
    MESSAGE := 'TESTOVACI EMAIL BYL POSLAN.';
     MESSAGING.SENDMAIL(CHANNEL, SENDER, RECIPIENT, SUBJECT, MESSAGE);
       TESTEMAIL := FALSE;
 END_IF;

END_PROGRAM

Knihovna

MESSAGING

Verze

V1.0

Popis

Volaná funkce posílá v každém výpočetním cyklu PLC jeden email. Z důvodu bezpečnosti doporučujeme jeho použití pouze v ST kódu. Při psaní programu je třeba dbát zvýšené opatrnosti, aby nedošlo nechtěnému zahlcení adresáta nebo SMTP serveru emaily. Pokud je potřeba odesílat zprávy na více adres, je potřeba použít blok vícekrát, nebo si před něj vytvořit přepínač, adres. Je ale potřeba dodržet pravidlo, kdy v jeden moment dochází k odeslání pouze jednoho emailu. Mezi emaily by měla být pauza minimálně jedné vteřiny, ideálně však i více. Pokud toto pravidlo není dodrženo, dojde k zaplnění fronty pro odeslání.

Vstupy

Vstup | Typ | Význam
CHANNEL | STRING_REF | reference na proměnnou s názvem komunikačního spojení (definuje se v možnostech PLC; viz níže)
FROM | STRING_REF | reference na proměnnou s emailovou adresu, ze které je posílán email
TO | STRING_REF | reference na proměnnou s emailovou adresu adresáta
SUBJECT | STRING_REF | reference na proměnnou s předmětem emailu
MESSAGE | STRING_REF | reference na proměnnou se samotnou emailovou zprávu

Výstupy

Výstup | Typ | Význam
=> | SINT | číselný status; výsledek kontroly nastavení systému

Funkce

Při každém volání funkce sendmail v programu je poslán jeden email z definovaného emailového účtu from na adresu to. Předmět emailové zprávy je definován v proměnné subject a samotné tělo v message.

Proměnná channel odkazuje na definované komunikační spojení. To je třeba vytvořit v možnostech PLC. Dvojklikem na PLC zobrazte jeho nabídku a vyberte záložku Definice hlášení a pravým kliknutím zobrazíte nabídku, ve které vyberete Přidat alarmový kanál.

Nyní definujete název, který je vstupem proměnné channel. Dále definujete typ spojení SMTP. Kliknutím vyberete kanál a v jeho vlastnostech nastavíte server, ze které bude email odesílán, a port na kterém bude RT komunikovat. V případě nutnosti přihlašování je třeba nastavit Používat přihlašování na true a následně vyplnit Jméno uživatele (standardně emailová adresa) a Heslo. Nakonec potvrdíte všechny změny klinutím na OK v červeně označeném dialogu.

Pozor, je nutné ověřit možnosti připojení PLC na emailový server.

Výstupní proměnná result hlásí výsledek kontroly nastavení systému.

Číselný status | Význam
0 | OK
8 | Plná emailová fronta
16 | Neznámý kanál
24 | Chyba - hodnota číselného statusu nelze určit
jiné | Interní chyba - kontaktujte technickou podporu Domat Control System

Příklad použití

Typicky lze tato funkce využít pro hlášení alarmových stavů. Odeslání emailu je spuštěno nastalým alarmovým stavem. Příklad viz výše Volání v ST.


Odesílání emailů - FUPLA

Název bloku

SENDMAILTRIG

Volání v ST

Pro tento účel je vhodnější využít blok sendmail.

Knihovna

MESSAGING

Verze

V1.0

Popis

Blok posílá pro jeden povel (přechod z false do true) jeden email. Pokud je potřeba odesílat zprávy na více adres, je potřeba použít blok vícekrát, nebo si před něj vytvořit přepínač, adres. Je ale potřeba dodržet pravidlo, kdy v jeden moment dochází k odeslání pouze jednoho emailu. Mezi emaily by měla být pauza minimálně jedné vteřiny, ideálně však i více. Pokud toto pravidlo není dodrženo, dojde k zaplnění fronty pro odeslání.

Vstupy

Vstup | Typ | Význam
CHANNEL | STRING | název komunikačního spojení (definuje se v možnostech PLC; viz níže)
FROM | STRING | emailová adresa, ze které je posílán email
RECIPIENT | STRING | emailová adresa adresáta
SUBJECT | STRING | předmět emailu
MESSAGE | STRING | samotná emailová zpráva
SEND | BOOL | povel pro odeslání emailu

Výstupy

Výstup | Typ | Význam
RESULT | SINT | číselný status; výsledek kontroly nastavení systému

Funkce

Při každém přechodu proměnné send z false do true je poslán jeden email z definovaného emailového účtu from na adresu recipient. Předmět emailové zprávy je definován v proměnné subject a samotné tělo v message.

Proměnná channel odkazuje na definované komunikační spojení. To je třeba vytvořit v možnostech PLC. Dvojklikem na PLC zobrazte jeho nabídku a vyberte záložku Definice hlášení a pravým kliknutím zobrazíte nabídku, ve které vyberete Přidat alarmový kanál.

Nyní definujete název, který je vstupem proměnné channel. Dále definujete typ spojení SMTP. Kliknutím vyberete kanál a v jeho vlastnostech nastavíte server, ze které bude email odesílán, a port na kterém bude RT komunikovat. V případě nutnosti přihlašování je třeba nastavit Používat přihlašování na true a následně vyplnit Jméno uživatele (standardně emailová adresa) a Heslo. Nakonec potvrdíte všechny změny klinutím na OK v červeně označeném dialogu.

Pozor, je nutné ověřit možnosti připojení PLC na emailový server.

Výstupní proměnná result hlásí výsledek kontroly nastavení systému.

Číselný status | Význam
0 | OK
8 | Plná emailová fronta
16 | Neznámý kanál
24 | Chyba - hodnota číselného statusu nelze určit
jiné | Interní chyba - kontaktujte technickou podporu Domat Control System

Příklad použití

Typicky lze tato funkce využít pro hlášení alarmových stavů. Odeslání emailu je spuštěno nastalým alarmovým stavem. Další email se pošle v případě, že alarm odezněl, byl resetován a následně znovu nastal. Alarm je aktivní, když hodnota proměnné teplota překročí hodnotou proměnné teplotni_limit.


Odesílání emailů – ST – z více účtů

Název funkce

SENDMAILCUSTOM

Volání v ST

PROGRAM TEST_SENDMAILCUSTOM
 VAR
        TESTEMAIL : BOOL :=TRUE;
    HOST : STRING[64] := 'SMTP.DOMAT.CZ';
        PORT : UINT := 25;
        USER : STRING[64] := 'INFO@DOMAT.CZ';
        PASSWORD : STRING[64] := '1234';
    SENDER : STRING[64] := 'INFO@DOMAT.CZ';
        RECIPIENT : STRING[64] := 'SUPPORT@DOMAT.CZ';
        SUBJECT : STRING[64];
        MESSAGE : STRING[64];
 END_VAR

 IF TESTEMAIL THEN
     SUBJECT := 'TEST';
    MESSAGE := 'TESTOVACI EMAIL BYL POSLAN.';
     MESSAGING.SENDMAILCUSTOM(HOST, PORT, USER, PASSWORD, SENDER, RECIPIENT, SUBJECT, MESSAGE);
       TESTEMAIL := FALSE;
 END_IF;
END_PROGRAM

Knihovna

MESSAGING

Verze

V1.0

Popis

Volaná funkce posílá v každém výpočetním cyklu PLC jeden email. Z důvodu bezpečnosti doporučujeme jeho použití pouze v ST kódu. Psaní programu je třeba dbát zvýšené opatrnosti, aby nedošlo nechtěnému zahlcení adresáta emaily. Tato funkce umožňuje (oproti sendmail a sendmailtrig) průběžně měnit emailové účty, ze kterých je email odesílán. Pokud je potřeba odesílat zprávy na více adres, je potřeba použít blok vícekrát, nebo si před něj vytvořit přepínač, adres. Je ale potřeba dodržet pravidlo, kdy v jeden moment dochází k odeslání pouze jednoho emailu. Mezi emaily by měla být pauza minimálně jedné vteřiny, ideálně však i více. Pokud toto pravidlo není dodrženo, dojde k zaplnění fronty pro odeslání.

Vstupy

Vstup | Typ | Význam
HOST | STRING_REF | reference na proměnnou s názvem serveru, ze kterého je posílán email
PORT | UINT | číslo portu, který využívá PLC pro emailovou komunikaci
USERNAME | STRING_REF | reference na proměnnou s uživatelským jménem účtu, ze kterého je posílán email
PASSWORD | STRING_REF | reference na proměnnou s heslem do uživatelského účtu, ze kterého je posílán email
CHANNEL | STRING_REF | reference na proměnnou s názvem komunikačního spojení (definuje se v možnostech PLC; viz níže)
FROM | STRING_REF | reference na proměnnou s emailovou adresu, ze které je posílán email
TO | STRING_REF | reference na proměnnou s emailovou adresu adresáta
SUBJECT | STRING_REF | reference na proměnnou s předmětem emailu
MESSAGE | STRING_REF | reference na proměnnou se samotnou emailovou zprávu

Výstupy

Výstup | Typ | Význam
=> | SINT | číselný status; výsledek kontroly nastavení systému

Funkce

Při každém volání funkce sendmailcustom v programu je poslán jeden email z definovaného emailového účtu username a adresy from na adresu to. Předmět emailové zprávy je definován v proměnné subject a samotné tělo v message.

Tato funkce nemá definované parametry připojení k serveru v Definici hlášení. Tyto hodnoty musí být definovány v proměnných, které jsou připojeny na vstupy funkce host, port, username a password. Díky to mohou být tyto parametry měněny v průběhu programu a může se měnit uživatelský účet, ze kterého je email odesílán.

Pozor, je nutné ověřit možnosti připojení PLC z místa instalace na emailový server.

Výstupní proměnná result hlásí výsledek kontroly nastavení systému.

Číselný status | Význam
0 | OK
8 | Plná emailová fronta
16 | Neznámý kanál
24 | Chyba - hodnota číselného statusu nelze určit
jiné | Interní chyba - kontaktujte technickou podporu Domat Control System

Příklad použití

Typicky lze tato funkce využít pro hlášení alarmových stavů. Odeslání emailu je spuštěno nastalým alarmovým stavem. Příklad viz výše, Volání v ST.


Zavření portu

Název funkce

CLOSEPORT

Funkce

Funkce uzavře komunikaci na daném portu.

Vstupy

Vstup | Typ | Význam
HANDLE | IO.COMMHANDLE | Parametry k běžící komunikaci

Výstupy

Výstup | Typ | Význam
=> | BOOL | Výstup: 0...Komunikace neukončena 1...Komunikace ukončena

Příklad volání v ST:

PROGRAM main
(program's body)
 var
 def : string;
 handle : io.commhandle;
 state : int := 0;
 data : array[0..31] of byte;
 dataRecv : array[0..31] of byte;
 received : int;
 end_var
case state of
    0:
        (*def := 'tcp:192.168.1.4:7';*)
        (*def := 'udp:192.168.1.4:7';*)
        def := 'serial:10:9600,8,N,1';
        handle := io.openport(def);
        if handle >= 0 then
            state := 1;
        end_if;
    1:
         if io.getportstatus(handle) = 0 then (* OperationStatus_Ok *)
             (* spojeni navazano *)
             data[0] := 5;
             data[1] := 10;
             data[2] := 6;
             data[3] := 11;
             if io.writeport(handle, adr data[0], 10) then
                 state := 2;
             end_if;
         end_if;
     2:
         if io.getportstatus(handle) = 0 then (* OperationStatus_Ok *)
             (* vsechna data odeslana *)
            state := 3;
         end_if;
     3:
         received := io.readport(handle, adr dataRecv[0], 20);
         if received > 0 then
             (* nejaka data prijata *)
             io.closeport(handle);
             state := 4;
         else
             io.getportstatus(handle);
         end_if;
     else
         state := 4;
end_case;
END_PROGRAM


Stav portu

Název funkce

GETPORTSTATUS

Funkce

Funkce zjistí status komunikace. Významné hodnoty jsou popsány níže, ostatní hodnoty představují interní chybu.

Vstupy

Vstup | Typ | Význam
HANDLE | IO.COMMHANDLE | Parametry běžící komunikace

Výstupy

Výstup | Typ | Význam
=> | INT | Výstup: 0 (OK) 25 (nepodařilo se otevřít port) 31 (empty - prázdný buffer) 34 (busy - jsou odvysilávána data)

Příklad volání v ST:

PROGRAM main
(program's body)
 var
 def : string;
 handle : io.commhandle;
 state : int := 0;
 data : array[0..31] of byte;
 dataRecv : array[0..31] of byte;
 received : int;
 end_var
case state of
    0:
        (*def := 'tcp:192.168.1.4:7';*)
        (*def := 'udp:192.168.1.4:7';*)
        def := 'serial:10:9600,8,N,1';
        handle := io.openport(def);
        if handle >= 0 then
            state := 1;
        end_if;
    1:
         if io.getportstatus(handle) = 0 then (* OperationStatus_Ok *)
             (* spojeni navazano *)
             data[0] := 5;
             data[1] := 10;
             data[2] := 6;
             data[3] := 11;
             if io.writeport(handle, adr data[0], 10) then
                 state := 2;
             end_if;
         end_if;
     2:
         if io.getportstatus(handle) = 0 then (* OperationStatus_Ok *)
             (* vsechna data odeslana *)
            state := 3;
         end_if;
     3:
         received := io.readport(handle, adr dataRecv[0], 20);
         if received > 0 then
             (* nejaka data prijata *)
             io.closeport(handle);
             state := 4;
         else
             io.getportstatus(handle);
         end_if;
     else
         state := 4;
end_case;
END_PROGRAM


Otevření portu

Název funkce

OPENPORT

Funkce

Funkce otevře komunikaci podle zadaných parametrů. Umožňuje komunikovat po TCP, UDP nebo sériové lince.

Vstupy

Vstup | Typ | Význam
DEFINITION | STRING_REF | Přístupové parametry dané komunikace, viz příklad

Výstupy

Výstup | Typ | Význam
=> | IO.COMMHANDLE | Parametry běžící komunikace

Příklad volání v ST:

PROGRAM main
(program's body)
 var
 def : string;
 handle : io.commhandle;
 state : int := 0;
 data : array[0..31] of byte;
 dataRecv : array[0..31] of byte;
 received : int;
 end_var
case state of
    0:
        (*def := 'tcp:192.168.1.4:7';*)
        (*def := 'udp:192.168.1.4:7';*)
        def := 'serial:10:9600,8,N,1';
        handle := io.openport(def);
        if handle >= 0 then
            state := 1;
        end_if;
    1:
         if io.getportstatus(handle) = 0 then (* OperationStatus_Ok *)
             (* spojeni navazano *)
             data[0] := 5;
             data[1] := 10;
             data[2] := 6;
             data[3] := 11;
             if io.writeport(handle, adr data[0], 10) then
                 state := 2;
             end_if;
         end_if;
     2:
         if io.getportstatus(handle) = 0 then (* OperationStatus_Ok *)
             (* vsechna data odeslana *)
            state := 3;
         end_if;
     3:
         received := io.readport(handle, adr dataRecv[0], 20);
         if received > 0 then
             (* nejaka data prijata *)
             io.closeport(handle);
             state := 4;
         else
             io.getportstatus(handle);
         end_if;
     else
         state := 4;
end_case;
END_PROGRAM


Čtení dat z portu

Název funkce

READPORT

Funkce

Funkce readport čte data z daného portu.

Vstupy

Vstup | Typ | Význam
DATA | BYTE_PTR | Adresa, kam se zapisují načtená data
HANDLE | IO.COMMHANDLE | Parametry k běžící komunikaci
MAXLENGTH | INT | Maximální délka dat

Výstupy

Výstup | Typ | Význam
=> | INT | Výstup: 0...Data nepřijata 1...Data přijata

Příklad volání v ST:

PROGRAM main
(program's body)
 var
 def : string;
 handle : io.commhandle;
 state : int := 0;
 data : array[0..31] of byte;
 dataRecv : array[0..31] of byte;
 received : int;
 end_var
case state of
    0:
        (*def := 'tcp:192.168.1.4:7';*)
        (*def := 'udp:192.168.1.4:7';*)
        def := 'serial:10:9600,8,N,1';
        handle := io.openport(def);
        if handle >= 0 then
            state := 1;
        end_if;
    1:
         if io.getportstatus(handle) = 0 then (* OperationStatus_Ok *)
             (* spojeni navazano *)
             data[0] := 5;
             data[1] := 10;
             data[2] := 6;
             data[3] := 11;
             if io.writeport(handle, adr data[0], 10) then
                 state := 2;
             end_if;
         end_if;
     2:
         if io.getportstatus(handle) = 0 then (* OperationStatus_Ok *)
             (* vsechna data odeslana *)
            state := 3;
         end_if;
     3:
         received := io.readport(handle, adr dataRecv[0], 20);
         if received > 0 then
             (* nejaka data prijata *)
             io.closeport(handle);
             state := 4;
         else
             io.getportstatus(handle);
         end_if;
     else
         state := 4;
end_case;
END_PROGRAM


Zápis dat do portu

Název funkce

WRITEPORT

Funkce

Funkce writeport zapíše data na zadaný port.

Vstupy

Vstup | Typ | Význam
DATA | BYTE_PTR | Adresa dat určených k zápisu
HANDLE | IO.COMMHANDLE | Parametry běžící komunikace
LENGTH | INT | Velikost zapisovaného pole

Výstupy

Výstup | Typ | Význam
=> | BOOL | Výstup: 0...data nebyla zapsána 1...data byla zapsána

Příklad volání v ST:

PROGRAM main
(program's body)
 var
 def : string;
 handle : io.commhandle;
 state : int := 0;
 data : array[0..31] of byte;
 dataRecv : array[0..31] of byte;
 received : int;
 end_var
case state of
    0:
        (*def := 'tcp:192.168.1.4:7';*)
        (*def := 'udp:192.168.1.4:7';*)
        def := 'serial:10:9600,8,N,1';
        handle := io.openport(def);
        if handle >= 0 then
            state := 1;
        end_if;
    1:
         if io.getportstatus(handle) = 0 then (* OperationStatus_Ok *)
             (* spojení navázáno *)
             data[0] := 5;
             data[1] := 10;
             data[2] := 6;
             data[3] := 11;
             if io.writeport(handle, adr data[0], 10) then
                 state := 2;
             end_if;
         end_if;
     2:
         if io.getportstatus(handle) = 0 then (* OperationStatus_Ok *)
             (* všechna data odeslána *)
            state := 3;
         end_if;
     3:
         received := io.readport(handle, adr dataRecv[0], 20);
         if received > 0 then
             (* nějaká data přijata *)
             io.closeport(handle);
             state := 4;
         else
             io.getportstatus(handle);
         end_if;
     else
         state := 4;
end_case;
END_PROGRAM


Přijímání SMS

Název funkce

RECEIVESMS

Volání v ST

TYPE KRATKY_STRING : STRING[160]; END_TYPE
PROGRAM TEST_RECEIVESMS
VAR_OUTPUT
    SMSRES : INT := 0;
    SMS_RECEIVE : BOOL := FALSE;
    SMS_CHANNEL : ARRAY[0..9] OF STRING;
    SMS_SENDER : ARRAY[0..9] OF KRATKY_STRING;
    SMS_MESSAGE : ARRAY[0..9] OF STRING;
    RECEIVE_TIME : ARRAY[0..9] OF DT;
    RESULT : ARRAY[0..9] OF INT;
    I : INT := 0;
END_VAR

IF SMS_RECEIVE THEN
    FOR i := 0 TO 9 DO
        RESULT[I] := MESSAGING.RECEIVESMS(CHANNEL =>
        SMS_CHANNEL[I], SENDER => SMS_SENDER[I], MESSAGE =>
        SMS_MESSAGE[I], RECEIVETIME => RECEIVE_TIME[I]);
    END_FOR;
    SMS_RECEIVE := FALSE;
END_IF;
MESSAGING.SENDSMS();

END_PROGRAM

Knihovna

MESSAGING

Verze

V1.0

Popis

Volaná funkce se dotazuje připojených modemů na přijaté SMS zprávy v každém výpočetním cyklu PLC. Tato funkce je určena pouze pro ST kód, tak aby funkce byla volaná pouze tehdy, když chceme zjistit stav příchozích zpráv.

Výstupy

Výstup | Typ | Význam
=> | INT | číselný status; výsledek kontroly nastavení systému
CHANNEL | STRING | kanál, na kterém je připojen modem, který obdržel zprávu
SENDER | STRING | odesílatel
MESSAGE | STRING | přijatá SMS zpráva (základní ASCII znaky)
RECEIVETIME | DT | čas, kdy byla SMS zpráva přijata

Funkce

Při každém volání funkce receivesms v programu se funkce doptává připojených modemů na přijaté SMS zprávy. Výstupem je název kanálu channel, ze kterého byla SMS zpráva vyčtena, odesílatel sender, čas přijetí zprávy receivetime, samotná SMS zpráva message a výsledek čtení z daného místa.

Proměnná channel odkazuje na definované komunikační spojení. To je třeba vytvořit v možnostech PLC: Dvojklikem na PLC zobrazte jeho nabídku a vyberte záložku Definice hlášení a pravým kliknutím zobrazíte nabídku, ve které vyberete Přidat alarmový kanál.

Nyní definujete název, který je vstupem proměnné channel. Dále definujete typ spojení GSM. Kliknutím vyberete kanál a v jeho vlastnostech nastavíte port, na kterém bude RT komunikovat s modemem. Dále se definují komunikační vlastnosti kanálu. V případě zabezpečené SIM karty je třeba zadat PIN kód. Nakonec potvrdíte všechny změny klinutím na OK v červeně označeném dialogu.

V případě použití některého ze standardně dodávaných modemů (Siemens TC-35, Wavecom), je možné vybrat v Nastavení AT příkazů předdefinované příkazy pro nastavení modemu. Následně klikněte na tlačítko Použít. Potřebné AT příkazy se následně doplní do tabulky. Zmáčkněte tlačítko Zavřít a potvrďte změny klinutím na OK v červeně označeném dialogu. V případě jiného typu modemu, je třeba nastavit modem jeho příslušnými AT příkazy. (V případě problému s nastavením jiného typu modemu kontaktujte technickou podporu Domat Control System.)

Výstupní proměnná result hlásí výsledek kontroly nastavení systému.

Číselný status | Význam
0 | OK
16 | Neznámý kanál
24 | Chyba - hodnota číselného statusu nelze určit
25 | Nemožnost otevřít port nebo inicializovat GSM modem (např. chybně zadané číslo portu)
26 | Timeout při provádění AT příkazu (default 2 s)
31 | Není k dispozici žádná zpráva
42 | Chyba GSM kanálu (např. špatný PIN, nedostupnost sítě, …)
jiné | Interní chyba - kontaktujte technickou podporu Domat Control System

Příklad použití

Tato funkce může být použita k zadání řetězce (string) do PLC pomocí SMS zprávy. Příklad viz výše Volání v ST. Je zde použit standardní počet 10 úložných míst, ze kterých se vyčítají aktuální přijaté SMS zprávy. Všechny odpovídající místa v polích sms_receive, sms_channel, sms_sender, sms_message, receive_time a result jsou parametry jedné SMS zprávy. Aktuálně vyčtené zprávy mají na odpovídajícím místě v results číslo 0. V případě jiného čísla na některé z pozic results nedošlo k vyčtení SMS zprávy z tohoto místa a na odpovídající pozici v ostatních polích sms_receive, sms_channel, sms_sender, sms_message a receive_time je buď prázdné místo, nebo poslední zpráva, která byla na toto místo uložena. Velikost přijaté zprávy je omezena na 160 znaků.


Odesílání SMS - ST

Název funkce

SENDSMS

Volání v ST

PROGRAM TEST_SENDSMS
 VAR
        TESTSMS:BOOL:=TRUE;

    CHANNEL : STRING[64] := 'ALRCHANNEL';
        RECIPIENT : STRING[64] := '00420123456789';
        MESSAGE : STRING[64];

 END_VAR

 IF TESTSMS THEN
     MESSAGE := 'TESTOVACI SMS BYLA POSLANA.';
     MESSAGING.SENDSMS(CHANNEL,RECIPIENT,MESSAGE);
       TESTSMS := FALSE;
 END_IF;

END_PROGRAM

Knihovna

MESSAGING

Verze

V1.0

Popis

Volaná funkce posílá v každém výpočetním cyklu PLC jednu SMS zprávu. Z důvodu bezpečnosti doporučujeme její použití pouze v ST kódu. Při psaní programu je třeba dbát zvýšené opatrnosti, aby nedošlo k nechtěnému zahlcení adresáta SMS zprávami. Pokud je potřeba odesílat zprávy na více čísel, je potřeba použít blok vícekrát, nebo si před něj vytvořit přepínač čísel. Je ale potřeba dodržet pravidlo, kdy v jeden moment dochází k odeslání pouze jedné zprávy. Většina GSM brán má jistý paměťový limit, například limit 4 zpráv. Pokud tedy na bránu pošleme více než 4 zprávy naráz, zbylé zprávy budou z fronty zahozeny. Doporučujeme tedy zprávy odesílat postupně s rozestupy například 10 s.

Vstup | Typ | Význam
CHANNEL | STRING_REF | reference na proměnnou s názvem komunikačního spojení (definuje se v možnostech PLC; viz níže)
RECIPIENT | STRING_REF | reference na proměnnou s telefonním číslem příjemce
MESSAGE | STRING_REF | reference na proměnnou se samotnou SMS zprávu (základní ASCII znaky)

Výstupy

Výstup | Typ | Význam
=> | SINT | číselný status; výsledek kontroly nastavení systému

Funkce

Při každém volání funkce sendsms v programu je poslána jedna SMS z definovaného GSM modemu na telefonní číslo příjemce recipient. Obsah SMS zprávy je vkládán do proměnné message.

Proměnná channel odkazuje na definované komunikační spojení. To je třeba vytvořit v možnostech PLC. Dvojklikem na PLC zobrazte jeho nabídku a vyberte záložku Definice hlášení a pravým kliknutím zobrazíte nabídku, ve které vyberete Přidat alarmový kanál.

Nyní definujete název, který je vstupem proměnné channel. Dále definujete typ spojení GSM. Kliknutím vyberete kanál a v jeho vlastnostech nastavíte port, na kterém bude RT komunikovat s modemem. Dále se definují komunikační vlastnosti kanálu. V případě zabezpečené SIM karty je třeba zadat PIN kód. Nakonec potvrdíte všechny změny kliknutím na OK v červeně označeném dialogu.

V případě použití některého ze standardně dodávaných modemů (Siemens TC-35, Wavecom), je možné vybrat v Nastavení AT příkazů předdefinované příkazy pro nastavení modemu. Následně klikněte na tlačítko Použít. Potřebné AT příkazy se následně doplní do tabulky. Zmáčkněte tlačítko Zavřít a potvrďte změny klinutím na OK v červeně označeném dialogu. V případě jiného typu modemu je třeba nastavit modem jeho příslušnými AT příkazy. (Při problému s nastavením jiného typu modemu kontaktujte technickou podporu Domat Control System.)

Výstupní proměnná result hlásí výsledek kontroly nastavení systému.

Číselný status | Význam
0 | OK
16 | Neznámý kanál
24 | Chyba - hodnota číselného statusu nelze určit
25 | Nemožnost otevřít port nebo inicializovat GSM modem (např. chybně zadané číslo portu)
26 | Timeout při provádění AT příkazu (default 2 s)
42 | Chyba GSM kanálu (např. špatný PIN, nedostupnost sítě, …)
jiné | Interní chyba - kontaktujte technickou podporu Domat Control System

Příklad použití

Typicky lze tato funkce využít pro hlášení alarmových stavů. Odeslání SMS je spuštěno nastalým alarmovým stavem. Příklad viz výše Volání v ST.


Odesílání SMS - FUPLA

Název bloku

SENDSMSTRIG

Volání v ST

Pro tento účel je vhodnější využít blok sendsms.

Knihovna

MESSAGING

Verze

V1.0

Popis

Blok posílá pro jeden povel (přechod z false do true) jednu SMS zprávu. Pokud je potřeba odesílat zprávy na více čísel, je potřeba použít blok vícekrát, nebo si před něj vytvořit přepínač čísel. Je ale potřeba dodržet pravidlo, kdy v jeden moment dochází k odeslání pouze jedné zprávy. Většina GSM brán má jistý paměťový limit, například limit 4 zpráv. Pokud tedy na bránu pošleme více než 4 zprávy naráz, zbylé zprávy budou z fronty zahozeny. Doporučujeme tedy zprávy odesílat postupně s rozestupy například 10 s.

Vstupy

Vstup | Typ | Význam
CHANNEL | STRING | název komunikačního spojení (definuje se v možnostech PLC; viz níže)
RECIPIENT | STRING | telefonní číslo příjemce
MESSAGE | STRING | samotná SMS zpráva (základní ASCII znaky)
SEND | BOOL | povel pro odeslání SMS zprávy

Výstupy

Výstup | Typ | Význam
RESULT | SINT | číselný status; výsledek kontroly nastavení systému

Funkce

Při každém přechodu proměnné send z false do true je poslána jedna SMS zpráva z definovaného GSM modemu na telefonní číslo příjemce recipient. Obsah SMS zprávy je vkládán do proměnné message.

Proměnná channel odkazuje na definované komunikační spojení. To je třeba vytvořit v možnostech PLC: Dvojklikem na PLC zobrazte jeho nabídku, vyberte záložku Definice hlášení a pravým kliknutím zobrazíte nabídku, ve které vyberete Přidat alarmový kanál.

Nyní definujete název, který je vstupem proměnné channel. Dále definujete typ spojení GSM. Kliknutím vyberete kanál a v jeho vlastnostech nastavíte port, na kterém bude RT komunikovat s modemem. Dále se definují komunikační vlastnosti kanálu. Při použítí mark220 rev. 2.0 nebo mark320 rev. 2.0 nastavte softwarové řízení toku dat - RTS/CTS. V případě zabezpečené SIM karty je třeba zadat PIN kód. Nakonec potvrdíte všechny změny klinutím na OK v červeně označeném dialogu.

V případě použití některého ze standardně dodávaných modemů (Siemens TC-35, Wavecom), je možné vybrat v Nastavení AT příkazů předdefinované příkazy pro nastavení modemu. Následně klikněte na tlačítko Použít. Potřebné AT příkazy se pak doplní do tabulky. Zmáčkněte tlačítko Zavřít a potvrďte změny kliknutím na OK v červeně označeném dialogu. V případě jiného typu modemu je třeba nastavit modem jeho příslušnými AT příkazy. (Při problému s nastavením jiného typu modemu kontaktujte technickou podporu Domat Control System.)

Výstupní proměnná result hlásí výsledek kontroly nastavení systému.

Číselný status | Význam
0 | OK
1 | Neznámá proměnná
2 | Neúspěšný zápis
3 | Nesoulad velikostí
4 | Nespecifikovaná chyba
5 | Odepřený zápis
6 | Neplatný stav
7 | Nepodařilo se načíst obraz
8 | Plná e-mailová schránka
9 | Příliš dlouhá adresa doručovatele
10 | Příliš dlouhá adresa odesílatele
11 | Příliš dlouhý předmět
12 | Příliš dlouhá zpráva
13 | Příliš dlouhý název serveru
14 | Jméno uživatele v definici hlášení je příliš dlouhé
15 | Heslo v definici hlášení je příliš dlouhé
16 | Neznámý kanál
17 | Neznámé zdrojové kódování
18 | Neznámé cílové kódování
19 | Neúspěšná konverze
20 | Neplatný zdroj konverze
21 | Zahlcený zdroj konverze
22 | Zahlcená cesta pro konverzi
23 | Připojeno
24 | Chyba - hodnota číselného statusu nelze určit
25 | Nemožnost otevřít port nebo inicializovat GSM modem (např. chybně zadané číslo portu)
26 | Timeout při provádění AT příkazu (výchozí 2 s)
27 | Neznámý AT příkaz
28 | Neplatný obraz
29 | Neplatný nejméně významný bit
30 | Obraz byl označený jako neplatný
31 | Prázdný
32 | Překrytí
33 | Obnovení procesu
34 | Zaneprázdněný
35 | Port je používán
36 | Chyba v GUID
37 | Neplatný cyklický redundantní součet
38 | Neplatný typ zásobníku
39 | Neplatná úloha
40 | Mimo definovaný dosah
41 | Chyba GSM modemu
42 | Chyba GSM kanálu (např. špatný PIN, nedostupnost sítě, …)
43 | Čekání na PIN kód
44 | Čekání na PUK kód
45 | Špatně zadaný PIN kód
46 | Služba - GSM Prompt
47 | Plná schránka GSM modemu (viz. Ošetření plné schránky)
48 | Zkrácený
49 | Neznámé zařízení
50 | Nevyvážená závorka
51 | Neplatná třída
52 | Žádná volná paměť
53 | Soubor nenalezen
54 | Plný běh
55 | Zastavený stav
56 | Neznámá metadata
57 | Chyba sběrnice
58 | NVRAM není k dispozici
59 | Chyba konfigurace
60 | Neplatný nastavený port
61 | Žádné zařízení

Použití komunikačního portu X3 na PLC řady Wall

Pro komunikaci s GSM modemem GSM-BGS-T2M nebo GSM-BGS-E2N přes port X3 v režimu RS-232 je nutné použít rovný sériový kabel D-SUB 09 samec-samec

Chybový stav 47 - Plná schránka GSM modemu

Plná schránka na GSM modemu vznikne více požadavky na odeslání alarmové SMS zprávy v krátkém časovém intervalu. Plná schránka GSM modemu se vyprázdní až po provedení náběžné hrany na proměnnou send funkčního bloku "sendsmstrig". Na snímku je uvedené možné řešení v případě zahlcení schránky. Před logickým OR je použitý pulsní encoder, který po definovaném čase na vstupní proměnné PT vrátí na výstupní proměnné Q "False". V případě, že funkční blok sendsmstrig na výstupní proměnné Result vrací chybový stav 47, porovnávací funkce "EQ" vyhodnotí na výstupu "True" a tím dojde k povolení procesu pulzního generátoru, na kterém je nutné nastavit dostatečně dlouhý interval pro trvání výstupního signálu v hodnotě "False" TFALSE a pouze vteřinový interval v hodnotě "True" TTRUE. Tímto dojde k opakování cyklu pro odeslání alarmové SMS.

Příklad použití

Typicky lze tato funkce využít pro hlášení alarmových stavů. Odeslání SMS je spuštěno nastalým alarmovým stavem. Další SMS se pošle v případě, že alarm odezněl, byl resetován a následně znovu nastal. Alarm je aktivní, když hodnota proměnné teplota překročí hodnotou proměnné teplotni_limit.


Bitová rotace

Název bloku

T14_BIT_ROTATION

Volání v ST

PROGRAM TEST14
    VAR
        INT1,INT2,INT3,INT4: INT;
        BOOL1,BOOL2,BOOL3,BOOL4,BOOL5,BOOL6,BOOL7,BOOL8: BOOL;
        FB: LIB.HVAC.V1_0.T14_BIT_ROTATION;
    END_VAR
    FB.INI[1]:=BOOL3;
    FB.INI[2]:=BOOL4;
    FB.INI[3]:=BOOL5;
    FB.LISTOFENABLED[1]:=INT2;
    FB.LISTOFENABLED[2]:=INT3;
    FB.LISTOFENABLED[3]:=INT4;
    FB(BX:= BOOL1, BXF:= BOOL2, NUMOFENABLEDOUTPUTS:= INT1);
    BOOL6:=FB.OUT[1];
    BOOL7:=FB.OUT[2];
    BOOL8:=FB.OUT[3];
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Bitová rotace je funkční blok, který slouží k posunu bitů v definovaném vektoru na základě náběžné nebo sestupné hrany na vstupech.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
BX | BOOL | Vstup, reagující na náběžnou hranu: vektor při ní rotuje o jednu pozici dopředu | False
BXF | BOOL | Vstup, reagující na sestupnou hranu: vektor při ní rotuje o jednu pozici dopředu | False
INI | MULTIIOBOOL | Počáteční bitový vzor výstupů | [True, False,...,False]
LIST OF ENABLED | MULTIIOINT | Pole čísel výstupů, které se účastní rotace | [1,0,...,0]
NUM OF ENABLED OUTPUTS | INT | Počet položek, které se zúčastní rotace | 1

Výstupy

Výstup | Typ | Význam
OUT | MULTIIOBOOL | Výstupní rotovaný vektor
SHIFT | INT | Indikuje, o kolik pozic je vektor rotován

Funkce

Pozor: Funkční blok používá vlastní typy knihovny multiiobool a multiioint, což jsou pole (array [1...16]) boolovských a integerových hodnot. Pro převod na jednotlivé binární a integerové hodnoty používejte funkce helper_multiinbool a helper_multioutbool, které rozkládají pole na řadu binárních nebo integerových hodnot.

Proměnná INI musí obsahovat počáteční vzor, nejčastěji to je “1 z n”, “2 z n” atd., tedy např. [1, 1, 0, 0, 0, 0, 0, 0]. Při posunu vzor rotuje směrem “dopředu”, takže po prvním impulsu má výstupní vektor tvar [0, 1, 1, 0, 0, 0, 0, 0] a proměnná shift má hodnotu 1, po druhém pak [0, 0, 1, 1, 0, 0, 0, 0] a shift = 2 atd. Po počtu impulsů rovném NUM OF ENABLED OUTPUTS se vektor vrací do původního stavu a SHIFT = 0.

V proměnné NUM OF ENABLED OUTPUTS se zadá počet výstupů, které se zúčastní rotace; maximum je 16.

Proměnná ListOfEnabled je pole s čísly výstupů, které se zúčastní rotace. Tedy například pro prvních 8 výstupů bude vektor mít tvar [1, 2, 3, 4, 5, 6, 7, 8]. (Obvyklé použití bude právě n výstupů následujících za sebou. Pokud by se rotace zúčastnilo 5 výstupů, a to 1, 3, 4, 5 a 7, vektor bude mít tvar [1, 3, 4, 5, 7] a NUM OF ENABLED OUTPUTS bude rovno 5.

Výše uvedené proměnné mají význam v případě, že některé výstupy chceme z rotace vyřadit, např. pro poruchu agregátu.

Příklad použití

Blok se používá jako zdroj signálu pro střídání pořadí kotlů, cyklické prohazování pořadí čerpadel, vícestupňových el. ohřevů apod. kvůli jejich rovnoměrnému opotřebení.


Čtvrthodinové maximum

Název bloku

T34_E_MAX

Volání v ST

PROGRAM TEST_T34
    VAR
        REAL1,REAL2,REAL3,REAL4,REAL5: REAL;
          BOOL1,BOOL2: BOOL;
        UDINT1,UDINT2:UDINT;
        ARRAYOFUDINT1,ARRAYOFUDINT2,ARRAYOFUDINT3: ARRAY[0..7] OF UDINT;
        ARRAYOFBOOL1: ARRAY[0..7] OF BOOL;
        ARRAYOFREAL1: ARRAY[0..7] OF REAL;
        FB: LIB.HVAC.V1_0.T34_E_MAX;
    END_VAR
    FB(TIN:=UDINT1, EIN:= REAL1, BGRP:=ARRAYOFBOOL1, EMAX:=REAL2, TPERIOD:=UDINT2, TNMIN:=ARRAYOFUDINT1, TFMIN:=ARRAYOFUDINT2, TFMAX:=ARRAYOFUDINT3, DOFF:= REAL3, D:=ARRAYOFREAL1, BWARN=>BOOL1, BCRIT=>BOOL2, BYGRP=>ARRAYOFBOOL1, ESOLL=>REAL4, EEST=>REAL5);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Blok reguluje čtvrthodinové maximum (el. energii spotřebovanou během 15 minut) odpínáním až 8 skupin spotřebičů.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
TIN | UDINT | Aktuální čas periody ve vteřinách | 0
EIN | REAL | Kumulovaná energie, spotřebovaná během aktuální periody | 0
BGRP | ARRAY[0..7] OF BOOL | Signály o chodu skupin, pokud jsou k dispozici (jinak musí být vstup nastaven na true) | [False,...,False]
EMAX | REAL | Hodnota čtvrthodinového maxima; max. množství energie, které se smí spotřebovat během periody, viz pozn. níže | 100
TPERIOD | UDINT | Měřená perioda, obvykle 900 s (= 15 min) | 900
TNMIN | ARRAY[0..7] OF UDINT | Minimální povolená doba provozu skupiny | [0,0,...,0]
TFMIN | ARRAY[0..7] OF UDINT | Minimální doba vypnutí po odstavení skupiny (např. pro chladicí kompresory) | [0,0,...,0]
TFMAX | ARRAY[0..7] OF UDINT | Maximální povolená doba odstavení skupiny (po jejím uplynutí se skupina povolí, i když by došlo k překročení maxima) | [0,0,...,0]
DOFF | REAL | Diference pro bezpečné připínání skupin | 0
D | ARRAY[0..7] OF REAL | Diference pro odpínání jednotlivých skupin (odpovídá příkonům skupin, tj. spotřeba dané skupiny za periodu) | [10,10,...,10]

Výstupy

Výstup | Typ | Význam
BWARN | BOOL | Signál varování - aktuální spotřeba překročila hodnotu ESOL
BCRIT | BOOL | Signál alarmu - aktuální spotřeba překročila hodnotu EMAX
BYGRP | ARRAY[0..7] OF BOOL | Výstupy pro povolení nebo odepnutí jednotlivých skupin spotřebičů
ESOL | REAL | Ideální spotřeba k aktuálnímu času (pro info)
EEST | REAL | Predikovaná spotřeba ke konci periody (pro info)

Funkce

Blok čte ze vstupního modulu M710 dvě hodnoty: spotřebu el. energie v aktuální čtvrthodině (počet impulsů elektroměru násobený konstantou na impuls, což odpovídá spotřebované energii) a čas aktuální čtvrthodiny v sekundách (tento čas je nulován synchronizačním impulsem z elektroměru, přivedeným na modul M710). Blok počítá podle zadané maximální spotřeby pro čtvrthodinu (EMAX) ideální spotřebu ESOL k aktuálnímu času, což je hodnota lineárně vzrůstající od 0 v čase 0 po EMAX v čase ke konci čtvrthodiny. Dále je počítána predikovaná spotřeba EEST, tedy energie spotřebovaná ke konci čtvrthodiny za předpokladu, že spotřeba bude růst stejným tempem jako dosud. Ideální spotřeba je porovnávána s aktuální spotřebou a pokud je ideální spotřeba překročena, tedy hrozí překročení emax ke konci čtvrthodiny, dochází k postupnému odpínání skupin spotřebičů. Pakliže se během dalšího průběhu čtvrthodiny aktuální spotřeba dostává pod přímku ESOL, skupiny se postupně opět připínají. Diference d určují oblasti odpínání a připínání jednotlivých skupin, DOFF je bezpečnostní oblast, za níž začíná zpětné připínání.

Místo modulu M710 je možné použít softwarovou strukturu, která na vstup TIN přivede aktuální čas periody ve vteřinách (tedy postupně vzrůstající hodnotu 0...900 pro případ čtvrthodiny) a na vstup EIN spotřebovanou práci (neboli energii) od začátku periody (čtvrthodiny).

Výstupy pro povolování skupin spotřebičů jsou k dispozici v podobě pole binárních hodnot BYGRP. Vstupní pole BGRP slouží k zadání informace o tom, které skupiny jsou právě aktivní a tedy jejich odepnutí má smysl. Neaktivní skupiny jsou přeskakovány.

Vektory s časovými parametry TNMIN, TFMIN a TFMAX umožňují zadat omezení pro max. a min. dobu vypnutí a minimální dobu běhu (TNMIN, tedy když je skupina povolena, neodstaví se před uplynutím této doby, ani kdyby to algoritmus vyžadoval).

Poznámka: Hodnota emax je zadávána v kWh za (typicky) 15 minut. Jedná se o energii, práci, nikoli o příkon. Ačkoli je udávána v kilowatthodinách, tato energie je spotřebována během periody, tedy např. patnácti minut. Pokud máme budovu se sjednaným příkonem 1000 kW, maximální práce spotřebovaná za čtvrthodinu je 250 kWh. Hodnota emax tedy není průměrný příkon (v kW), hodnota průměrného příkonu by byla rovna emax pouze v případě, že by perioda byla jedna hodina.

Příklad použití

Dvě proměnné, které snímají počet impulsů energie a čas čtvrthodiny v modulu M710, jsou přivedeny na vstupy TIN a EIN. Proměnná E_MAX je hodnota MAX. čtvrthodinové spotřeby. Povely k odpínání skupin jsou ve výstupní proměnné BYGRP, což je pole s osmi hodnotami typu bool. Blok HELPER_MULTIOUTBOOL8 slouží jako “dekodér” pole na 8 binárních proměnných, aby bylo možné strukturu použít i v jazyce FUPLA; v ST by se odkázalo přímo na BYGRP[INDEX], tedy na prvek pole. Na vstupu BGRP je vektor skupin, které jsou právě v provozu; pole je sestaveno z proměnných OPER_CHILLERS, OPER_DHW_EL_1 a OPER_DHW_EL_2. Signály chodu máme tedy pouze u skupin 1, 4 a 5; ostatní skupiny 2, 3, 6, 7 a 8 signál o chodu nemají k dispozici (nejspíše se jedná o větší množství malých zařízení, spojených do skupin).


Rekuperace

Název bloku

T39_RECUPERATION

Volání v ST

PROGRAM TEST_T39
    VAR
        X,Y,Z: REAL;
        O1,O2,O3: REAL;
        FB: LIB.HVAC.V1_0.T39_RECUPERATION;
    END_VAR
    FB(DEMAND:= X, T_EXTERIOR:= Y, T_EXHAUST:= Z);
    O1:= FB.HEATDEMAND;
    O2:= FB.COOLDEMAND;
    O3:= FB.RECUPERATION;
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Blok slouží jako rozhodovací a regulační prvek pro řízení deskového nebo rotačního rekuperátoru či směšovací klapky u VZT jednotky. Na základě požadavku topení nebo chlazení z regulátoru a teplot na vstupu (T_EXTERIOR) a odtahu (T_EXHAUST) jednotky vytváří tři sekvence:

  • sekvenci topení pro ventil registru ohřevu
  • sekvenci chlazení pro ventil chladicího registru
  • sekvenci rekuperační pro řízení otáček rotačního rekuperátoru či řízení polohy klapky obtoku deskového rekuperátoru nebo směšovací klapky.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
DEMAND | REAL | Požadavek topení nebo chlazení, -100 (chlazení) ...100 (topení) (%) | 0
T_EXTERIOR | REAL | Teplota na sání VZT, teplota venkovního vzduchu (°C) | 0
T_EXHAUST | REAL | Teplota odtahového vzduchu, teplota v místnosti (°C) | 0
DCREC | REAL | Hodnota požadavku na chlazení pro start rekuperace (vytváří zónu necitlivosti), typicky -5 (%) | -5
DCVLV | REAL | Hodnota požadavku na chlazení pro start sekvence chlazení, 0...100 (%) | -10
DHREC | REAL | Hodnota požadavku na ohřev pro start rekuperace (vytváří zónu necitlivosti), typicky 5 (%) | 50
DHVLV | REAL | Hodnota požadavku na ohřev pro start sekvence topení, 0...100 (%) | 70

Výstupy

Výstup | Typ | Význam
RECUPERATION | REAL | Signál pro rekuperační člen, 0...100 (%)
COOLDEMAND | REAL | Signál pro ventil chlazení, 0...100 (%)
HEATDEMAND | REAL | Signál pro ventil ohřevu, 0...100 (%)
COOLRECREADY | BOOL | Informace, že rozhodovací logika je ve stavu rekuperace chlazení (případ 4 výše)
HEATRECREADY | BOOL | Informace, že rozhodovací logika je ve stavu rekuperace topení (případ 2 výše)

Funkce

Signál DEMAND je třeba nastavit tak, aby se měnil v rozsahu 0...100 % (požadavek na ohřev přívodního vzduchu) a 0…-100 % (požadavek na ochlazení přívodního vzduchu). Zdrojem tohoto signálu je obvykle PI regulátor na přívodu VZT jednotky.

V bloku jsou jako vstupy i parametry necitlivost DCREC a DHREC, které určují, od kolika procent požadavku se má začít rekuperovat. Zabraňují startu rekuperátoru při příliš nízkých hodnotách požadavku.

Vnitřní logika bloku rozhodne, o který z následujících čtyř případů se jedná:

  1. Je požadavek na topení (tedy DEMAND > DHREC), teplota na sání VZT jednotky je vyšší než teplota na odtahu. Rekuperace nemá smysl, je výhodnější použít teplejší venkovní vzduch (místnost je zřejmě podchlazená).
  2. Je požadavek na topení, teplota na sání VZT jednotky je nižší než teplota na odtahu. Rekuperace se vyplatí, protože zužitkujeme tepelnou energii odtahového vzduchu.
  3. Je požadavek na chlazení (tedy DEMAND < DCREC), teplota na sání VZT jednotky je nižší než teplota na odtahu. Rekuperace nemá smysl, je výhodnější použít chladnější venkovní vzduch (místnost je zřejmě přehřátá).
  4. Je požadavek na chlazení, teplota na sání VZT jednotky je vyšší než teplota na odtahu. Místnost je nachlazená. Rekuperace se vyplatí, protože zužitkujeme chladicí energii odtahového vzduchu.

Pro situace 1 a 3 se výstupy pro ohřev a chlazení (HEATDEMAND a COOLDEMAND) chovají stejně, jako kdyby byly připojeny přímo na výstup přívodního regulátoru (s odpovídajícím přepočtem sekvence chlazení, tedy 0 % - ventil na chlazení uzavřen, -100 % - ventil na chlazení zcela otevřen. Výstup RECUP je trvale v 0.

V případech 2 a 4 je nejdříve aktivována rekuperace, a teprve pokud se požadavek na energii dále zvětšuje (výsledek PI algoritmu přívodního regulátoru), otevírá i ventil na topení, případně na chlazení. Parametry DCVLV a DHVLV určují, jaký poměr má přínos rekuperace a přímý ohřev nebo chlazení. Čím větší je výkon rekuperátoru vůči výkonu topného či chladicího registru, tím vyšší by měly být hodnoty parametrů.

Sekvence ventilů 0...100 % jsou rozpočteny mezi DCVLV (resp. DHVLV) a -100 % (resp. 100 %), viz obrázek.

Příklad použití

Funkce B80 obrací sekvenci pro obtokovou klapku z 0...100 % na 100...0 % tak, aby při maximálním požadavku na rekuperaci byla obtoková klapka uzavřena.

Výběr maxima, Protizámraz, připojuje požadavek na otevření ventilu od ochrany proti zámrazu.


Ekvitermní křivka

Název bloku

T1_EQUITHERMAL_CURVE

Volání v ST

PROGRAM T1_TEST
    VAR
        REAL1,REAL2,REAL3,REAL4,REAL5,REAL6,REAL7,REAL8,REAL9,REAL10,REAL11,REAL12,REAL13,REAL14,REAL15,REAL16,REAL17,REAL18,REAL19: REAL;
        BOOL1:BOOL;
        FB: LIB.HVAC.V1_0.T1_EQUITHERMALCURVE;
    END_VAR
    FB(IN:= REAL1, BR:= BOOL1, FDY:= REAL2, FX1:= REAL3, FX2:= REAL4, FX3:= REAL4, FX4:= REAL5, FY1:= REAL6, FY2:= REAL7, FY3:= REAL8, FY4:= REAL9, TDY:= REAL10, TX1:= REAL11, TX2:= REAL12, TX3:= REAL13, TX4:= REAL14, TY1:= REAL15, TY2:= REAL16, TY3:= REAL17, TY4:= REAL18, OUT=> REAL19);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Ekvitermní křivka počítá požadovanou teplotu topné vody na základě venkovní teploty: čím je venkovní teplota nižší, tím je požadovaná teplota vody vyšší. Blok obsahuje dvě čtyřbodové křivky (pro den a pro noc).

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
BR | BOOL | Přepínání lineární interpolace, viz níže | False
IN | REAL | Vstup pro venkovní teplotu (°C) | 0
FDY | REAL | Korekce výstupní teploty noční křivky (K) | 0
FX1 | REAL | X - souřadnice 1. bodu noční křivky (°C) | -15
FX2 | REAL | X - souřadnice 2. bodu noční křivky (°C) | -5
FX3 | REAL | X - souřadnice 3. bodu noční křivky (°C) | 0
FX4 | REAL | X - souřadnice 4. bodu noční křivky (°C) | 15
FY1 | REAL | Y - souřadnice 1. bodu noční křivky (°C) | 80
FY2 | REAL | Y - souřadnice 2. bodu noční křivky (°C) | 60
FY3 | REAL | Y - souřadnice 3. bodu noční křivky (°C) | 40
FY4 | REAL | Y - souřadnice 4. bodu noční křivky (°C) | 30
TDY | REAL | Korekce výstupní teploty denní křivky (K) | 0
TX1 | REAL | X - souřadnice 1. bodu denní křivky (°C) | -15
TX2 | REAL | X - souřadnice 2. bodu denní křivky (°C) | -5
TX3 | REAL | X - souřadnice 3. bodu denní křivky (°C) | 0
TX4 | REAL | X - souřadnice 4. bodu denní křivky (°C) | 15
TY1 | REAL | Y - souřadnice 1. bodu denní křivky (°C) | 80
TY2 | REAL | Y - souřadnice 2. bodu denní křivky (°C) | 60
TY3 | REAL | Y - souřadnice 3. bodu denní křivky (°C) | 40
TY4 | REAL | Y - souřadnice 4. bodu denní křivky (°C) | 30

Výstupy

Výstup | Typ | Význam
OUT | REAL | Požadovaná teplota topné vody (°C)

Funkce

Vstupní teplota je přepočítána lineární interpolací v úseku, vymezeném sousedními hodnotami parametrů venkovní teploty. Blok obsahuje dvě čtyřbodové křivky (pro den a pro noc), mezi nimiž se přepíná proměnnou BR: pokud je TRUE, platí křivka TX - TY, pokud je FALSE, platí křivka FX - FY. Vstup BR se obvykle napojí na časový program, pokud je použita zvláštní noční křivka. Proměnné *dy slouží pro posuv celé křivky po ose y, tedy jejich hodnoty se přičítají ke spočítané teplotě topné vody; mohou být připojeny na výstup regulátoru pro korekci podle referenčního prostoru, pak je možné zohlednit tepelné zisky vzniklé např. osluněním fasády.

Pokud je venkovní teplota menší, než hodnota *X1, teplota topné vody je omezena hodnotou *Y1. Totéž platí pro venkovní teploty vyšší než *X4, kde teplota topné vody neklesne pod *Y4.

Příklad použití

Blok se používá především v ekvitermně řízených topných okruzích. Lze jej využít také pro řízení max. teploty kotlů nebo výměníku, případně jako obecný “linearizační” blok s křivkou definovanou 4 body. Na obrázku níže je jednoduchý ekvitermní regulátor (blok B35), který získává požadovanou hodnotu z výstupu ekvitermní křivky (blok T1). Proměnná tout je venkovní teplota. Mezi denní a noční křivkou přepíná binární časový program T17, připojený na vstup BR.

V některých případech je vhodné venkovní teplotu před přivedením do ekvitermní křivky filtrovat v čase nebo ošetřit proti přerušenému vedení k čidlu.


Regulátor minima a maxima

Název bloku

T33_MIN_MAX_CONTROLLER

Volání v ST

PROGRAM TEST_T33
    VAR
        REAL1,REAL2,REAL3,REAL4,REAL5,REAL6,REAL7,REAL8: REAL;
        BOOL1,BOOL2,BOOL3,BOOL4,BOOL5,BOOL6,BOOL7,BOOL8: BOOL;
        FB: LIB.HVAC.V1_0.T33_MIN_MAX_CONTROLLER;
    END_VAR
    FB(IN:= REAL1, WALARMAX:= REAL1, WALARMIN:= REAL2, WMAX:= REAL3, WMIN:= REAL4, XPALARMAX:= REAL5, XPALARMIN:= REAL6, XPMAX:= REAL7, XPMIN:= REAL8, BALARMAX=> BOOL1, BALARMAXN=> BOOL2, BALARMIN=> BOOL3, BALARMINN=> BOOL4, BMAX=> BOOL5, BMAXN=>BOOL6, BMIN=> BOOL7, BMINN=>BOOL8);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Blok udržuje měřenou veličinu, např. tlak v systému topení, v požadovaném rozmezí a hlásí překročení alarmových mezí.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | REAL | Měřená veličina | 0
WALARMAX | REAL | Požadovaná hodnota havarijního maxima | 220
WALARMIN | REAL | Požadovaná hodnota havarijního minima | 80
WMAX | REAL | Požadovaná hodnota provozního maxima | 180
WMIN | REAL | Požadovaná hodnota provozního minima | 120
XPALARMAX | REAL | Hystereze havarijního maxima | 20
XPALARMIN | REAL | Hystereze havarijního minima | 20
XPMAX | REAL | Hystereze provozního maxima | 20
XPMIN | REAL | Hystereze provozního minima | 20

Výstupy

Výstup | Typ | Význam
BALARMAX | BOOL | Signál havarijního maxima
BALARMAXN | BOOL | Signál havarijního maxima, negovaný
BALARMIN | BOOL | Signál havarijního minima
BALARMINN | BOOL | Signál havarijního minima, negovaný
BMAX | BOOL | Signál provozního maxima
BMAXN | BOOL | Signál provozního maxima, negovaný
BMIN | BOOL | Signál provozního minima
BMINN | BOOL | Signál provozního minima, negovaný

Funkce

Blok obsahuje čtveřici prahových spínačů. Při udržování tlaku v topném systému se signál provozního minima použije na dopouštění, signál provozního maxima na odpouštění, signál havarijního minima pro blokování chodu technologií a signál havarijního maxima pro signalizaci překročení maximálního tlaku. Je samozřejmě možné regulovat a hlídat i jiné veličiny, podle způsobu regulace se použijí příslušné vstupy a výstupy. Hystereze zabraňuje kmitání kolem požadované hodnoty.

Hystereze, neboli pásmo Xp, se používá pro zabránění zákmitů výstupního signálu.

Podobně je tomu u alarmových signálů:
alarms

Blok lze použít například pro regulaci tlaku, hladiny, ale i dvoustavovou regulaci topení a chlazení. Výhodou jsou čtyři komparátory v jednom bloku, což šetří prostor ve schématu a zlepšuje čitelnost.

Příklad použití

Blok porovnává měřený tlak vody PWATER s požadovanou hodnotu PWATERSETPT. Při poklesu tlaku pod provozní minimum otevírá dopouštěcí ventil SOLENOIDVALVE, při vzrůstu tlaku nad provozní MINIMUM + HYSTEREZE ventil zavírá. Při překročení hodnoty WALARMAX nebo poklesu pod hodnotu WALARMIN jsou vyvolány příslušné alarmy alarmovými bloky, minimální tlak navíc blokuje provoz kotelny. Provoz je obnoven až po kvitování a smazání alarmu (výstup MEMORY musí být FALSE).


Počitadlo provozních hodin

Název bloku

T32_OPERATING_HOURS

Volání v ST

PROGRAM TEST_T32
    VAR
          BOOL1,BOOL2,BOOL3: BOOL;
          TIME1,TIME2:TIME;
          DT1: DT;
        FB: LIB.HVAC.V1_0.T32_OPERATING_HOURS;
    END_VAR
    FB(BSET:= BOOL1, ENABLED:= BOOL2, IN:= BOOL3,TINIT:= TIME1, OUT=> TIME2, TSET=>DT1);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Blok měří celkovou dobu aktivity binárního vstupu, tedy kumulovanou provozní dobu připojeného agregátu (čerpadla, ventilátoru, kotle…).

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
BSET | BOOL | Náběžná hrana nastaví počitadlo na hodnotu TINIT | False
ENABLE | BOOL | Aby blok počítal, musí být tento vstup TRUE | False
IN | BOOL | Vstup pro signál o chodu agregátu | False
TINIT | TIME | “Počáteční” hodnota pro nulování čítače, obvykle 0 | 0

Výstupy

Výstup | Typ | Význam
OUT | TIME | Kumulovaný čas, po který byl vstup IN ve stavu TRUE
TSET | DT | Datum a čas posledního nastavení na počáteční hodnotu (náběžné hrany na vstupu BSET jako UTC

Funkce

Blok pracuje jako stopky. Měření času se spouští přechodem vstupu IN do True, zastavuje se přechodem vstupu IN do False. Nastavení do výchozího stavu se provádí přivedením náběžné hrany na vstup bset, přičemž blok do proměnné OUT zapíše místo kumulovaného času hodnotu TINIT. Od ní pak začíná další počítání času. Zároveň se do proměnné TSET zaznamená čas posledního nastavení na počáteční hodnotu.

Příklad použití

Proměnná PUMP1FB indikuje chod čerpadla. Doba chodu je sumarizována v bloku T32 a pokud celková doba chodu překročí hodnotu PUMP_SERVICE_TIME, je vygenerován alarm s upozorněním na nutnost servisní prohlídky.


Měřič výkonu

Název bloku

T36_POWER_METER

Volání v ST

PROGRAM TEST_T36
    VAR
        PMIN: UDINT;
        PMOUT: REAL;
        FB: LIB.HVAC.V1_0.T36_POWER_METER;
    END_VAR
    FB(IN:= PMIN, OUT=> PMOUT);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Blok počítá výkon (nebo jinou okamžitou veličinu, jako průtok atd.) z kumulované hodnoty, přiváděné na vstup (energie, množství vody). Slouží pro výpočet okamžitých hodnot pro zobrazení na grafech toků energie v budově, optimalizaci řízení zdrojů energií atd.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
IN | UDINT | Počet vstupních impulsů (“jednotek energie”), kumulovaná hodnota z čítače, kalorimetru, elektroměru, vodoměru nebo podobného zařízení | 0
N | INT | Počet posledních impulsů, které se berou v úvahu pro kalkulaci | 16
K | REAL | Kumulovaná hodnota, příslušející jednomu impulsu (pro případ, že se nejedná již o numerické vyjádření kumulované hodnoty např. v kWh (v tom případě se použije konstanta 1) | 1
DECAY | REAL | Koeficient exponenciálního útlumu. Hodnota se pohybuje v rozmezí (0...1), přičemž 1 znamená nulový útlum, tedy všech n posledních impulsů má stejnou váhu. Čím více se hodnota decay blíží k 0, tím více jsou starší impulsy tlumeny, tedy mají na výstupní hodnotu menší vliv. | 1
OMIT | INT | Počet vynechaných vzorků. Při OMIT = 1 se vynechává jeden nejvyšší a jeden nejnižší vzorek. | 0

Výstupy

Výstup | Typ | Význam
OUT | REAL | Hodnota okamžité veličiny

Funkce

Hodnota, přivedená na vstup, je pravidelně vzorkována. Při její změně se zaznamená čas, který uběhl mezi přírůstkem počtu impulsů. Parametr n je potřeba nastavit tak, aby odrážel frekvenci vstupních impulsů a povahu měřené veličiny - čím je n vyšší, tím více se “derivovaný” signál průměruje s minulými vzorky a jeho průběh je hladší, čím je n nižší, tím přesněji výstup odráží okamžitou situaci.

Příklad použití

Funkce T36 kalkulují přibližný příkon budovy a příkon chladicích strojů podle kumulovaných hodnot z impulsních měřičů elektřiny. Na výstupu odečítacího bloku je přibližný příkon ostatních zařízení: celkový příkon mínus příkon chladicích strojů.


Střídání čerpadel

Název bloku

T35_PUMP_SWITCH

Volání v ST

PROGRAM TEST_T35
    VAR
          BOOL1,BOOL2,BOOL3,BOOL4: BOOL;
          UINT1,UINT2,UINT3,UINT4: UINT;
          INT1: INT;
          UDINT1,UDINT2: UDINT;
          FB: LIB.HVAC.V1_0.T35_PUMP_SWITCH;
    END_VAR
    FB(ENABLED:= BOOL1, BOK1:= BOOL1, BOK2:= BOOL2, SEC:= UINT1, MIN:= UINT2, HOUR:= UINT3, DAY:= UINT4, WHICH=> INT1, OUT1=> BOOL3, OUT2=> BOOL4, TRES=> UDINT1, TSHIFT=> UDINT2);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Blok zajišťuje pravidelné střídání dvojice čerpadel a jejich záskok při poruše jednoho z nich.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
ENABLED | BOOL | Požadavek na chod jednoho z čerpadel | False
BOK1 | BOOL | Signál o tom, že čerpadlo 1 není v poruše, tedy že je připraveno k funkci | False
BOK2 | BOOL | Signál o tom, že čerpadlo 2 není v poruše, tedy že je připraveno k funkci | False
SEC | UINT | Počet sekund, definice doby pro střídání | 5
MIN | UINT | Počet minut, definice doby pro střídání | 0
HOUR | UINT | Počet hodin, definice doby pro střídání | 0
DAY | UINT | Počet dní, definice doby pro střídání | 0

Výstupy

Výstup | Typ | Význam
WHICH | INT | Číslo čerpadla, které je právě aktivní (1 nebo 2)
OUT1 | BOOL | Povel k sepnutí čerpadla 1
OUT2 | BOOL | Povel k sepnutí čerpadla 2
TRES | UDINT | Čas, zbývající do příštího střídání (s)
TSHIFT | UDINT | Datum a čas posledního střídání (s od 1.1.1970)

Funkce

Je-li vstup enabled aktivní, je povoleno první čerpadlo. Čas jeho běhu se kumuluje a jakmile dosáhne dobu pro střídání, první čerpadlo je odstaveno a povoluje se čerpadlo druhé. Po dosažení doby pro střídání se pak druhé čerpadlo odstavuje a povoluje se čerpadlo první. Čerpadla se tak cyklicky střídají vždy poté, co kumulovaná doba chodu aktivního čerpadla je rovna nastavené době pro střídání.

Pokud kdykoli během provozu čerpadla přestane být aktivní příslušný signál BOK…, což znamená poruchu čerpadla, bez ohledu na zbývající čas se příslušné čerpadlo vypne a je aktivováno čerpadlo jiné.

Proměnná TRES udává dobu do příštího střídání v s, proměnná TSHIFT udává absolutní čas, kdy naposledy střídání proběhlo.

Příklad použití

Blok B31 pracuje jako zdroj povelu pro nabíjecí čerpadlo TUV. Funkce NOT, AND, Alarm a NOT zpracovávají povel na čerpadlo (PUMPX) a signál chodu čerpadla (PUMPXFB). Pokud je požadavek na čerpadlo (vstup ENABLED), je vydám povel ke startu čerpadla, které je právě na řadě. Jestli se ani po uplynutí zpoždění v alarmovém bloku (10 s) nevrátí zpětné hlášení chodu, znamená to, že je čerpadlo v poruše nebo ručně vypnuto. V takovém případě je signál BOK1 nebo BOK2 ve stavu FALSE a aktivuje se záložní čerpadlo.


Měřič spotřeby

Average power meter

Název bloku

T37_AveragePowerMeter

Popis

Výpočet derivace vstupního průběhu. Derivace je stanovena ze vzorků jejichž časová vzdálenost odpovídá definovanému časovému oknu.

Použití v ST

PROGRAM test
    VAR
    apm: LIB.HVAC.V1_0.T37_AveragePowerMeter;
    END_VAR

END_PROGRAM

Knihovna

LIB\HVAC

,

Verze

V1.0

Popis vstupů a výstupů

Vstupy | Jméno | Datový typ | Retain | Nutno připojit | Význam
 | In | udint | Ne | Ano | Vstupní čítač
 | N | udint | Ne | Ne | Počet vzorků v kruhovém bufferu
 | Reset | bool | Ne | Ne | Reset bloku
 | WLen | time | Ne | Ne | Délka čásového okna

Výstupy | Jméno | Datový typ | Význam
 | Out | real | Hodnota derivace

Podrobný popis funkce

Vstup
je vzorkován s definovanou periodou a vzorky jsou ukládány do vnitřního
kruhového bufferu. Počet prvků kruhového bufferu a perioda vzorkování
jsou definovány vstupními parametry. Z nejmladšího a nejstaršího vzorku
se provede výpočet derivace. Použítí pro specifické vstupní průběhy,
kde není vhodné vzorkovat pouze na základě změny vstupu.


Rosný bod

Název funkce

T28_DEW_POINT

Volání v ST

PROGRAM TEST_T28
    VAR
          REAL1,REAL2,REAL3: REAL;
    END_VAR
    REAL1:= LIB.HVAC.V1_0.T28_DEW_POINT(TEMP:=REAL2, RH:=REAL3);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Funkce počítá z teploty a relativní vlhkosti vzduchu jeho rosný bod při standardním tlaku 101 325 Pa.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
TEMP | REAL | Teplota vzduchu (°C) | 22
RH | REAL | Relativní vlhkost vzduchu (%rH) | 70

Výstupy

Výstup | Typ | Význam
=> | REAL | Teplota rosného bodu vzduchu (°C)

Funkce

Rosný bod je teplota, při níž začne vlhkost obsažená ve vzduchu kondenzovat. Funkce počítá tuto teplotu z teploty a relativní vlhkosti měřeného vzduchu. Vodní pára kondenzuje na plochách a tělesech, která mají teplotu nižší, než je teplota rosného bodu. Pak se na nich tvoří kapky kondenzátu. Chceme-li tedy odvlhčovat vzduch, musíme jej ochladit na teplotu nižší, než je jeho rosný bod. Čím větší je rozdíl teploty rosného bodu a teploty vzduchu, tím vyšší účinek odvlhčování má.

Příklad použití

Z teploty a relativní vlhkosti, měřené v místnosti, se počítá teplota rosného bodu. Po přičtení bezpečnostní konstanty, cca. 3 K, se na tuto bezpečnou teplotu směšováním omezuje teplota chladicí vody, přiváděné do velkoplošných chladicích panelů. Tím je zaručeno, že povrchová teplota panelů nebude nižší než teplota rosného bodu, a tedy nedojde ke kondenzaci vlhkosti na panelech. Tomuto zapojení se říká aktivní ochrana proti kondenzaci vlhkosti (rosení). Aktivní ochrana sice snižuje účinnost chlazení, zato ale není třeba vybavovat každý panel čidlem kondenzace, a především chlazení je omezováno spojitě - postupně, takže i při vyšších nebezpečích kondenzace má chlazení alespoň částečně zachovanou funkci.


Entalpie

Název funkce

T29_ENTHALPY

Volání v ST

PROGRAM TEST_T29
    VAR
        REAL1,REAL2,REAL3,REAL4,REAL5,REAL6: REAL;
    END_VAR
    REAL1:= LIB.HVAC.V1_0.T29_ENTHALPY(P:= REAL2, TEMP:= REAL3, RH:= REAL4, PWATER=>REAL5,R=> REAL6);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Funkce počítá z tlaku, teploty a relativní vlhkosti vzduchu jeho entalpii, tedy energii vlhkého vzduchu, parciální tlak vodní páry a absolutní vlhkost vzduchu.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
P | REAL | Tlak (Pa), běžná hodnota je 101325 Pa | 0
TEMP | REAL | Teplota vzduchu (°C) | 22
RH | REAL | Relativní vlhkost vzduchu (%rH) | 70

Výstupy

Výstup | Typ | Význam
=> | REAL | Entalpie vlhkého vzduchu (kJ/kg)
PWATER | REAL | Parciální tlak vodní páry
R | REAL | Absolutní vlhkost (g/kg suchého vzduchu)

Funkce

Jedním z nejdůležitějších vzduchotechnických výpočtů je zjišťování množství tepla, které je nutné k tomu, abychom vzduch v místnosti upravili na požadovanou teplotu a vlhkost. V těchto případech je nutné vzduch, jehož? stav je znám, pomocí vhodných úprav (směšování, ohřev, chlazení, zvlhčování a odvlhčování) převést do stavu požadovaného. Většina z popsaných způsobů úpravy vzduchu vede také ke změně obsahu tepla upravovaného vzduchu. V termodynamice se obsah tepla v látce o hmotnosti 1 kg označuje jako měrná entalpie h [kJ/kg]. Entalpie je veličina relativní: absolutně suchý vzduch o teplotě 0 °C a teoretickým obsahem vody X = 0 g/kg má definován obsah tepla H = 0 kJ/kg; tento stav vzduchu odpovídá nulovému bodu na stupnici entalpie. Hodnoty entalpie < 0 kJ/kg se označují jako negativní (se znaménkem mínus).

Příklad použití

Regulátor absolutní vlhkosti (g/kg); používá se například u vzduchotechniky pro technologická zařízení, kde je nutné udržovat ve vzduchu konstantní obsah vody, i když technologie ztrátovým teplem ovlivňuje teplotu. Jeho výstupem je řízen zvlhčovač. Obvykle bývá doplněn nezávislým regulátorem teploty, který kompenzuje změny teploty v prostoru. Další použití může být v rekuperačních jednotkách, kde entalpie poskytuje představu o účinnosti rekuperace a energetických poměrech v jednotlivých sekcích.


Solární kalkulátor

Název funkce

T40_SOLARCALCULATOR

Volání v ST

PROGRAM TEST_T40
    VAR
          DT1,DT2,DT3: DT;
          REAL1,REAL2,REAL3,REAL4: REAL;
          BOOL1: BOOL;
          FB: LIB.HVAC.V1_0.T40_SOLARCALCULATOR;
    END_VAR
    FB(DATETIME:= DT1, LATITUDE:= REAL1, LONGITUDE:= REAL2, SUNSHINE=> BOOL1, AZIMUTH=> REAL3, ALTITUDE=> REAL4, SUNRISE=> DT2, SUNSET=> DT3);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Funkce počítá pro zadaný čas a zeměpisnou délku a šířku polohu Slunce vzhledem k místu pozorovatele. Dále poskytuje proměnnou s informací, zda je Slunce nad obzorem, a čas východu a západu Slunce v aktuálním dni. Blok se používá pro řízení žaluzií či rolet a v aplikacích pro monitoring fotovoltaických elektráren.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
DATETIME | DT | Datum a čas, pro které se poloha slunce počítá | 0001-01-01-00:00:00
LATITUDE | REAL | Zeměpisná šířka ve stupních (°) jako desetinné číslo | 50
LONGITUDE | REAL | Zeměpisná délka ve stupních (°) jako desetinné číslo | 14,3999996185303

Výstupy

Výstup | Typ | Význam
SUNSHINE | BOOL | True, pokud je Slunce nad obzorem
AZIMUTH | REAL | Vodorovný úhel, pod nímž je Slunce vzhledem k pozorovateli
ALTITUDE | REAL | Svislý úhel, pod nímž je Slunce vzhledem k pozorovateli
SUNRISE | DT | Datum a čas východu Slunce v aktuálním dni
SUNSET | DT | Datum a čas západu Slunce v aktuálním dni

Funkce

Solární kalkulátor vychází z rovnic pro zdánlivý pohyb Slunce kolem Země. Zeměpisná šířka a délka budou obvykle konstanty - výpočet má smysl pro místo instalace PLC.

Příklad použití

Proměnná ALARMS_ENABLED je dále použita k odblokování veškerých alarmů ve FV elektrárně. Alarmy mohou být aktivní pouze pokud jsou povoleny globální proměnnou ENABLE_ALARMS, pokud je Slunce nad obzorem (výstup SUNSHINE bloku T40 je TRUE) a čidlo osvitu měří hodnotu vyšší než asi 300 W/m2.


Časový program, bool

Název bloku

T17_BOOLEAN_SCHEDULER

Volání v ST

PROGRAM TEST_T17
VAR
    FB : LIB.HVAC.V1_0.T17_BOOLEAN_SCHEDULER := (TPGVALUE := [(STARTTIME := 0, STATE := FALSE),
    (STARTTIME := 210, STATE := TRUE),
    (STARTTIME := 420, STATE := FALSE)],
    EXCEPTIONS := [(STARTTIME := 1000, ENDTIME := 2000, STATE := FALSE)]);
    DT1:DT;
    BOOL1:BOOL;
END_VAR
    DT1:=getlocaltime();
    FB(CURRENTTIME:=DT1, OUT=>BOOL1);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Časový program je zdroj binárního signálu, který se mění podle týdenního kalendáře s max. 42 událostmi (změnami stavu). Je možné vložit i výjimky, ohraničené datem a časem.

Vstupy

Vstup | Typ | Význam
CURRENTTIME | DT | Datum a čas, pro případ, že je nutné použít jiné než aktuální systémové datum a čas
DEFAULTVALUE | BOOL | Hodnota nastavená na výstup v případě en=false

Výstupy

OUT BOOL Aktuální stav časového programu

Funkce

Časový program porovnává aktuální datum a čas s předpisem v tabulce a výslednou hodnotu posílá na výstup. Ten nabývá hodnot true nebo false. Editace časového programu je možná z IDE nebo HMI - LCD displeje, webového rozhraní, touchscreenu, vizualizace nebo jiného klienta).

Popis vnitřních struktur

Popis | Význam
STATE | Aktuální stav časového programu
STARTTIME | Minuty od začátku dne

Příklad použití

Časový program se používá pro povolení chodu zařízení podle provozních hodin, pro nastavování nočních poklesů atd. (Pro vícestavové řízení použijte blok T19_INT_SCHEDULER, pro přímé zadávání požadovaných hodnot T18_REAL_SCHEDULER.)

Na obrázku je časový program použit pro přepínání denní a noční ekvitermní křivky. Ve dne je ve stavu TRUE, v noci ve stavu FALSE.

V editoru je pak vyplněno, že od 6:00 do 22:00 je časový program ve stavu TRUE:


Časový program základní, bool

Název bloku

T17_BOOLEAN_SCHEDULER_BASE

Volání v ST

PROGRAM TEST_T17_BASE
    VAR
        FB : LIB.HVAC.V1_0.T17_BOOLEAN_SCHEDULER_BASE := (TPGVALUE := [(STARTTIME := 0, STATE := FALSE),
        (STARTTIME := 210, STATE := TRUE),
        (STARTTIME := 420, STATE := FALSE)],
        DT1:DT;
        BOOL1:BOOL;
    END_VAR
    DT1:=getlocaltime();
    FB(CURRENTTIME:=DT1, OUT=>BOOL1);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Časový program základní je zdroj binárního signálu, který se mění podle týdenního kalendáře s max. 42 událostmi (změnami stavu). U tohoto bloku není možné použít výjimky. Pro použití výjimek použijte prosím T17_BOOLEAN_SCHEDULER.)

Vstupy

Vstup | Typ | Význam
CURRENTTIME | DT | datum a čas, pro případ, že je nutné použít jiné než aktuální systémové datum a čas
DEFAULTVALUE | BOOL | hodnota nastavená na výstup v případě en=false

Výstupy

OUT BOOL aktuální stav časového programu

Funkce

Časový program porovnává aktuální datum a čas s předpisem v tabulce a výslednou hodnotu posílá na výstup. Ten nabývá hodnot true nebo false. Editace časového programu je možná z IDE nebo HMI - LCD displeje, webového rozhraní, touchscreenu, vizualizace nebo jiného klienta).

Popis vnitřních struktur

Popis | Význam
STATE | Aktuální stav časového programu
STARTTIME | Minuty od začátku dne

Příklad použití

Časový program se používá pro povolení chodu zařízení podle provozních hodin, pro nastavování nočních poklesů atd. (Pro vícestavové řízení použijte blok T19_INT_SCHEDULER, pro přímé zadávání požadovaných hodnot T18_REAL_SCHEDULER.)

Na obrázku je časový program použit pro přepínání denní a noční ekvitermní křivky. Ve dne je ve stavu TRUE, v noci ve stavu FALSE.

V editoru je pak vyplněno, že od 6:00 do 22:00 je časový program ve stavu TRUE:


Časový program, integer

Název bloku

T19_INT_SCHEDULER

Volání v ST

PROGRAM TEST_T19
    VAR
        FB : LIB.HVAC.V1_0.T19_INT_SCHEDULER := (TPGVALUE := [(STARTTIME := 0, STATE := 0),
        (STARTTIME := 1630, STATE := 7),
        (STARTTIME := 1750, STATE := 0),
        (STARTTIME := 3070, STATE := 7),
        (STARTTIME := 3190, STATE := 0),
        (STARTTIME := 65535, STATE := 0)],
        EXCEPTIONS := [(STARTTIME := 1000, ENDTIME := 2000, STATE := 0)]);
        DT1:DT;
        INT1:UINT;
    END_VAR
    DT1:=getlocaltime();
    FB(CURRENTTIME:=DT1, OUT=> INT1);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Časový program je zdroj proměnné typu integer, která se mění podle týdenního kalendáře s max. 42 událostmi (změnami stavu). Je možné vložit i výjimky, ohraničené datem a časem.

Vstupy

Vstup | Typ | Význam
CURRENTTIME | DT | Datum a čas, pro případ, že je nutné použít jiné než aktuální systémové datum a čas
DEFAULTVALUE | UINT | Hodnota nastavená na výstup v případě en=false

Výstupy

OUT UINT Aktuální stav časového programu

Funkce

Časový program porovnává aktuální datum a čas s předpisem v tabulce a výslednou hodnotu posílá na výstup. Ten nabývá hodnot v rozmezí definovaném typem integer. Editace časového programu je možná z IDE nebo HMI - LCD displeje, webového rozhraní, touchscreenu, vizualizace nebo jiného klienta).

Popis vnitřních struktur

Popis | Význam
STATE | Aktuální stav časového programu
STARTTIME | Minuty od začátku dne

Příklad použití

Časový program se používá pro vícestavové řízení, jako například přepínání mezi stavy Komfort, Pokles, Úspora a Vypnuto. (Pro povolení chodu zařízení podle provozních hodin, pro nastavování nočních poklesů atd. použijte blok T17_BOOLEAN_SCHEDULER, pro přímé zadávání požadovaných hodnot T18_REAL_SCHEDULER.)

Na obrázku je časový program použit pro přepínání stupňů ventilátoru ve stavech Vypnuto / Stupeň 1 / Stupeň 2 / Podle CO2. V režimu řízení podle CO2 je na základě hladiny CO2 v místnosti přepínáno mezi 1. a 2. stupněm.

V editoru je pak vyplněno krátké ranní provětrávání od 7:00 na 2. stupeň, provoz na první stupeň v době ranního a večerního provozu a automatické řízení podle CO2 přes den.


Časový program základní, integer

Název bloku

T19_INT_SCHEDULER_BASE

Volání v ST

PROGRAM TEST_T19_BASE
    VAR
        FB : LIB.HVAC.V1_1.T19_INT_SCHEDULER_BASE := (TPGVALUE := [(STARTTIME := 0, STATE := 0),
        (STARTTIME := 1630, STATE := 7),
        (STARTTIME := 1750, STATE := 0),
        (STARTTIME := 3070, STATE := 7),
        (STARTTIME := 3190, STATE := 0),
        (STARTTIME := 65535, STATE := 0)]);
        DT1:DT;
        INT1:UINT;
    END_VAR
     DT1:=getlocaltime();
    FB(CURRENTTIME:=DT1, OUT=> INT1);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.1

Popis

Časový program je zdroj proměnné typu integer, která se mění podle týdenního kalendáře s max. 42 událostmi (změnami stavu). U tohoto bloku není možné použít výjimky. Pro použití výjimek použijte prosím T18_INTEGER_SCHEDULER.)

Vstupy

Vstup | Typ | Význam
CURRENTTIME | DT | Datum a čas, pro případ, že je nutné použít jiné než aktuální systémové datum a čas
DEFAULTVALUE | UINT | Hodnota nastavená na výstup v případě en=false

Výstupy

OUT UINT Aktuální stav časového programu

Funkce

Časový program porovnává aktuální datum a čas s předpisem v tabulce a výslednou hodnotu posílá na výstup. Ten nabývá hodnot v rozmezí definovaném typem integer. Editace časového programu je možná z IDE nebo HMI - LCD displeje, webového rozhraní, touchscreenu, vizualizace nebo jiného klienta).

Popis vnitřních struktur

Popis | Význam
STATE | Aktuální stav časového programu
STARTTIME | Minuty od začátku dne

Příklad použití

Časový program se používá pro vícestavové řízení, jako například přepínání mezi stavy Komfort, Pokles, Úspora a Vypnuto. (Pro povolení chodu zařízení podle provozních hodin, pro nastavování nočních poklesů atd. použijte blok T17_BOOLEAN_SCHEDULER, pro přímé zadávání požadovaných hodnot T18_REAL_SCHEDULER.)

Na obrázku je časový program použit pro přepínání stupňů ventilátoru ve stavech Vypnuto / Stupeň 1 / Stupeň 2 / Podle CO2. V režimu řízení podle CO2 je na základě hladiny CO2 v místnosti přepínáno mezi 1. a 2. stupněm.

V editoru je pak vyplněno krátké ranní provětrávání od 7:00 na 2. stupeň, provoz na první stupeň v době ranního a večerního provozu a automatické řízení podle CO2 přes den.


Časový program, real

Název bloku

T18_REAL_SCHEDULER

Volání v ST

PROGRAM TEST_T18
    VAR
        FB : LIB.HVAC.V1_0.T18_REAL_SCHEDULER := (TPGVALUE := [(STARTTIME := 0, STATE := 0),
        (STARTTIME := 370, STATE := 1),
        (STARTTIME := 650, STATE := 3),
        (STARTTIME := 2070, STATE := 8)],
        EXCEPTIONS := [(STARTTIME := 1000, ENDTIME := 2000, STATE := 3)]);
        DT1:DT;
        REAL1:REAL;
    END_VAR
    DT1:=getlocaltime();
    FB(CURRENTTIME:=DT1, OUT=> REAL1);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Časový program je zdroj proměnné typu real, která se mění podle týdenního kalendáře s max. 42 událostmi (změnami stavu). Je možné vložit i výjimky, ohraničené datem a časem.

Vstupy

Vstup | Typ | Význam
CURRENTTIME | DT | Datum a čas, pro případ, že je nutné použít jiné než aktuální systémové datum a čas
DEFAULTVALUE | REAL | Hodnota nastavená na výstup v případě en=false

Výstupy

OUT REAL Aktuální stav časového programu

Funkce

Časový program porovnává aktuální datum a čas s předpisem v tabulce a výslednou hodnotu posílá na výstup. Ten nabývá hodnot v rozmezí definovaném typem real. Editace časového programu je možná z IDE nebo HMI - LCD displeje, webového rozhraní, touchscreenu, vizualizace nebo jiného klienta).

Popis vnitřních struktur

Popis | Význam
STATE | Aktuální stav časového programu
STARTTIME | Minuty od začátku dne

Příklad použití

Časový program se používá pro přímé zadávání požadovaných hodnot. (Pro povolení chodu zařízení podle provozních hodin, pro nastavování nočních poklesů atd. použijte blok boolean_scheduler, pro vícestavové řízení, jako například přepínání mezi stavy Komfort, Pokles, Úspora a Vypnuto blok INT_SCHEDULER.)

Na obrázku je časový program T18 použit pro zadávání požadované teploty VZT jednotky. K požadované hodnotě je připočtena korekce z místního ovladače (AHU1_TEMP_CORR) a výsledek je přiveden jako požadovaná teplota do PI regulátoru na přívodu.

V editoru je nastavena základní požadovaná hodnota pro dobu mimo provoz 18 °C, v provozní době VZT reguluje na 21 °C:


Časový program základní, real

Název bloku

T18_REAL_SCHEDULER_BASE

Volání v ST

PROGRAM TEST_T18_BASE
    VAR
        FB : LIB.HVAC.V1_0.T18_REAL_SCHEDULER_BASE := (TPGVALUE := [(STARTTIME := 0, STATE := 0),
        (STARTTIME := 370, STATE := 1),
        (STARTTIME := 650, STATE := 3),
        (STARTTIME := 2070, STATE := 8)],
        DT1:DT;
        REAL1:REAL;
    END_VAR
    DT1:=getlocaltime();
    FB(CURRENTTIME:=DT1, OUT=> REAL1);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Časový program je zdroj proměnné typu real, která se mění podle týdenního kalendáře s max. 42 událostmi (změnami stavu). U tohoto bloku není možné použít výjimky. Pro použití výjimek použijte prosím T18_REAL_SCHEDULER.)

Vstupy

Vstup | Typ | Význam
CURRENTTIME | DT | Datum a čas, pro případ, že je nutné použít jiné než aktuální systémové datum a čas
DEFAULTVALUE | REAL | Hodnota nastavená na výstup v případě en=false

Výstupy

OUT REAL Aktuální stav časového programu

Funkce

Časový program porovnává aktuální datum a čas s předpisem v tabulce a výslednou hodnotu posílá na výstup. Ten nabývá hodnot v rozmezí definovaném typem real. Editace časového programu je možná z IDE nebo HMI - LCD displeje, webového rozhraní, touchscreenu, vizualizace nebo jiného klienta).

Popis vnitřních struktur

Popis | Význam
STATE | Aktuální stav časového programu
STARTTIME | Minuty od začátku dne

Příklad použití

Časový program se používá pro přímé zadávání požadovaných hodnot. (Pro povolení chodu zařízení podle provozních hodin, pro nastavování nočních poklesů atd. použijte blok boolean_scheduler, pro vícestavové řízení, jako například přepínání mezi stavy Komfort, Pokles, Úspora a Vypnuto blok INT_SCHEDULER.)

Na obrázku je časový program T18 použit pro zadávání požadované teploty VZT jednotky. K požadované hodnotě je připočtena korekce z místního ovladače (AHU1_TEMP_CORR) a výsledek je přiveden jako požadovaná teplota do PI regulátoru na přívodu.

V editoru je nastavena základní požadovaná hodnota pro dobu mimo provoz 18 °C, v provozní době VZT reguluje na 21 °C:


Tříbodová regulace se zpětnou vazbou

Název bloku

T6_THREE_POINT_CONTROL_FEEDBACK

Volání v ST

PROGRAM TEST_T6
    VAR
        REAL1,REAL2,REAL3: REAL;
        TIME1,TIME2 :TIME;
        BOOL1,BOOL2 :BOOL;
        FB: LIB.HVAC.V1_0.T6_THREE_POINT_CONTROL_FEEDBACK;
    END_VAR
    FB(IN := REAL1, FBK:= REAL2, TRUN:= TIME1, TOVER:= TIME2, DX:= REAL3, CLOSE=> BOOL1, OPEN=>BOOL2);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Blok převádí spojitý signál 0...100 % na impulsy otevírání a zavírání pro řízení tříbodové periferie, tedy pohonu klapky nebo ventilu. Pro přesné určení polohy pohonu používá zpětnovazební signál.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
DX | REAL | Necitlivost na vstupní signál (0...100 %) | 1
FBK | REAL | Zpětnovazební signál (0...100 %) | 0
IN | REAL | Vstupní signál (0...100 %) | 0
TOVER | TIME | Doba přeběhu přes krajní pozice pro bezpečné otevření či zavření | 1 s
TRUN | TIME | Doba přeběhu pohonu z jedné krajní polohy do druhé (z 0 na 100 % nebo zpět) | 10 s

Výstupy

Výstup | Typ | Význam
CLOSE | BOOL | Povel k zavírání
OPEN | BOOL | Povel k otevírání

Funkce

Tento blok je vhodný pro ventily, které mají spojitý snímač polohy s výstupem 0...10 V nebo odporovým - jeho signál je přiveden na vstup FBK a blok reguluje aktivací výstupů OPEN a CLOSE tak, aby FBK byl roven vstupu IN. Je to vlastně regulátor, který se snaží udržet hodnoty IN a FBK na stejné úrovni.

Příklad použití


Tříbodová regulace

Název bloku

T2_THREE_POINT_CONTROL

Volání v ST

PROGRAM TEST_T2
    VAR
        REAL1: REAL;
        TIME1,TIME2,TIME3: TIME;
        BOOL1,BOOL2,BOOL3,BOOL4: BOOL;
        FB: LIB.HVAC.V1_2.T2_THREE_POINT_CONTROL;
    END_VAR
    FB(IN:= REAL1, BR:= BOOL1, TRUN:= TIME1, TOVER:= TIME2, DELTAT:= TIME3, BSP:= BOOL2, CLOSE=> BOOL3, OPEN=> BOOL4, Y=> REAL1);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.2

Popis

Blok převádí spojitý signál 0...100 % na impulsy otevírání a zavírání pro řízení tříbodové periferie, tedy pohonu klapky nebo ventilu.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
BR | BOOL | Resetovací (synchronizační) vstup pro přechod do bezpečné polohy a vynulování vnitřního počitadla polohy | False
BSP | BOOL | Definice bezpečné polohy: TRUE = 100 % (otevřeno), FALSE = 0 % (zavřeno) | False
DELTAT | TIME | Minimální doba výstupního impulsu | 2 s
IN | REAL | Vstupní signál, 0...100 % | 0
TOVER | TIME | Doba přeběhu přes krajní pozice pro bezpečné otevření či zavření | 3 s
TRUN | TIME | Doba přeběhu pohonu z jedné krajní polohy do druhé (z 0 na 100 % nebo zpět) | 65 s
EnableStartReset | BOOL | Po restartu PLC se nejprve spustí resetovací sekvenci ventilu a až následně je regulováno podle vstupu IN. | True

Výstupy

Výstup | Typ | Význam
CLOSE | BOOL | Povel k zavírání
OPEN | BOOL | Povel k otevírání
Y | REAL | Předpokládaná poloha ventilu (nyní rovno vstupu IN)

Funkce

Před vysláním výstupního impulsu je aktuální hodnota vstupu porovnána s předchozí hodnotou na vstupu a zapamatována. Při zjištěném rozdílu (tedy pokud došlo od posledního výpočtu ke změně řídicího signálu IN) je spočítán směr a délka výstupního impulsu jako poměrná část doby přeběhu, např. při změně z 15 na 20 % (tedy o 5 %) a délce přeběhu 65 s je délka impulsu 5 / 100 * 65 s = 3.25 s, kladná hodnota je směr “otevírat”. Během této doby je algoritmus na změny vstupního signálu necitlivý.

Pokud je spočítaná délka impulsu menší než zadaná hodnota deltat, mohlo by to znamenat, že vlivem hystereze převodů a mechanických odporů nebude s pohonem vůbec hnuto. Proto impuls není generován, ale uložen v paměti a výstup je aktivován až tehdy, překročí-li souhrnná délka akumulovaných impulsů hodnotu deltat. Pak je na výstup poslán jediný impuls o souhrnné délce.

Je-li vstupní signál > 99.9 %, výstup OPEN je trvale ve stavu TRUE. Je-li vstupní signál < 0.1 %, výstup CLOSE je trvale ve stavu TRUE.

Synchronizační vstup br slouží k pravidelnému synchronizování pohonu, tedy zaručenému přejetí do bezpečného stavu (obvykle “zavřeno”) a vynulování vnitřní logiky bloku. Synchronizace by měla probíhat např. 1x denně. K synchronizaci dojde při příchodu náběžné hrany na vstup BR.

Příklad použití

Tříbodový ventil je řízen PI regulátorem topení B35. Výstupní spojitý signál 0...100 % je převeden na tříbodový signál, jímž jsou řízeny binární výstupy pro ventil H1_VAL_CLOSE a H1_VAL_OPEN. Nezapomeňte správně nastavit parametry s dobou přeběhu ventilu a bezpečnou polohou. Časový program generuje jednou denně krátký impuls (např. 1 minuta), jehož náběžná hrana pohon synchronizuje. (Jeden časový program lze použít pro synchronizaci všech ventilů v PLC, což šetří paměť.)

Starší verze

Verze V1.0, V1.1 jsou označeny jako ZASTARALÉ. Neobsahovala vstup EnableStartReset. V určitých situacích se mohla lišit předpokládaná poloha ventilu v bloku s reálnou polohou ventilu.


Tříbodový P regulátor

Název bloku

T8_THREE_POINT_CONTROLLER

Volání v ST

PROGRAM TEST_T8
    VAR
        REAL1,REAL2,REAL3,REAL4,REAL5,REAL6 : REAL;
        TIME1,TIME2,TIME3,TIME4,TIME5,TIME6 :TIME;
        BOOL1,BOOL2,BOOL3,BOOL4,BOOL5,BOOL6 :BOOL;
        FB: LIB.HVAC.V1_0.T8_THREE_POINT_CONTROLLER;
    END_VAR
    FB(X:= REAL1, W:= REAL2, BCRASH:= BOOL1, BR:= BOOL2, ENABLED:= BOOL3, BSP:= BOOL4, TOLMIN:= REAL3, TOLMAX:= REAL4, TROPEN:= TIME1, TRCLOSE:= TIME2, T0:= TIME3, TIMPMIN:= TIME4, TIMPMAX:= TIME5, CLOSE=>BOOL5, OPEN=>BOOL6, OUT=>REAL5, TIMEPERIOD=>TIME6);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Blok pracuje jako P regulátor s tříbodovým výstupem.

Vstupy

Vstup Typ Význam Výchozí hodnota
X REAL Skutečná (měřená) hodnota regulované veličiny 0
W REAL Požadovaná hodnota regulované veličiny 0
BCRASH BOOL Signál pro rychlé uvedení do bezpečné polohy, při aktivaci je výstup pro uvedení do bezpečné polohy trvale aktivní False
BR BOOL Resetovací (synchronizační) vstup pro přechod do bezpečné polohy a vynulování vnitřního počitadla polohy False
ENABLED BOOL Povolena synchronizace False
T0 TIME Délka mezery (pauzy) mezi impulsy
4 s
TIMPMAX TIME Max. délka výstupního impulsu
2,5 s
TIMPMIN TIME Min. délka výstupního impulsu
1,5 s
TOLMAX real Horní omezení tolerance
  • |X-W|>TOLMAX – délka řídicího impulsu je TIMPMAX,
  • TOLMIN<=|X-W|<=TOLMAX – délka řídicího impulsu se periodicky mění mezi TIMPMIN a TIMPMAX.
2
TOLMIN REAL Spodní omezení tolerance - při |X-W|<TOLMIN jsou výstupy neaktivní
1
TRCLOSE TIME Čas přeběhu pohonu ze 100 % do 0 % 65 s
TROPEN TIME Čas přeběhu pohonu z 0 % do 100 % 65 s

Výstupy

Výstup | Typ | Význam
CLOSE | BOOL | Povel k zavírání
OPEN | BOOL | Povel k otevírání
OUT | REAL | Předpokládaná poloha ventilu (0-100 %)
TIMEPERIOD | TIME | Pomocná hodnota - spočítaná délka periody řídicích impulsů

Funkce

Blok se používá v případech, kde chceme řídit tříbodovou výstupní periferii (pohon ventilu nebo klapky) pomocí P regulátoru. Délka výstupního impulsu je proporcionálně úměrná rozdílu mezi skutečnou a požadovanou hodnotou. Místo zesílení či šířky pásma se nastavují parametry T0, TIMPMAX a TIMPMIN.

Příklad použití

Použití je podobné jako u funkčního bloku T2, kde P-kontroler je již obsažen v bloku T8 a nemusí tak být tedy použit jako samostatný blok.


Get Exception Error Code

Název funkce

GETEXCEPTIONERRORCODE

Funkce

Funkce vrací čísla chybových hlášení.

Vstupy

Vstup | Typ | Význam
TASKID | SINT | ID tasku který se bude sledovat.

Výstupy

Výstup | Typ | Význam
=> | DINT | Číslo vyjímky která právě nastala.

Chybová hlášení:

    oError = 0,
    FormatCategory        = 0x01000000,
    BuiltInCategory       = 0x02000000,
    InterpretCategory     = 0x04000000,

    Format                = 0 + FormatCategory,
    BuiltIn               = 0 + BuiltInCategory,

    StackOverflow         = 0 + InterpretCategory,
    InvalidOpcode         = 1 + InterpretCategory,
    InvalidOperands       = 2 + InterpretCategory,
    TwoOperandsRequired   = 3 + InterpretCategory,
    OperandRequired       = 4 + InterpretCategory,
    AddrUIDsDoNotMatch    = 5 + InterpretCategory,
    NonexistentStackEntry = 6 + InterpretCategory,
    AddressRequired       = 7 + InterpretCategory,
    InvalidAddress        = 8 + InterpretCategory,
    OffsetOutOfRange      = 9 + InterpretCategory,
    InvalidParameter      = 10 + InterpretCategory,
    ParamCountMismatch    = 11 + InterpretCategory,
    IntegerRequired       = 12 + InterpretCategory,
    ParamMissing          = 13 + InterpretCategory,
    InvalidCALLParameter  = 14 + InterpretCategory,
    ParamSizeMismatch     = 15 + InterpretCategory,
    InvalidReturnValue    = 16 + InterpretCategory,
    NoReturnValue         = 17 + InterpretCategory,
    SizeMismatch          = 18 + InterpretCategory,
    HaltedProgram         = 19 + InterpretCategory,
    DivideByZero          = 20 + InterpretCategory,
    BadStackOnReturn      = 21 + InterpretCategory,
    ThreeOperandsRequired = 22 + InterpretCategory,
    UserException         = 23 + InterpretCategory,
    OutOfBoundsException  = 24 + InterpretCategory


Získání startovacích parametrů programu

Název funkce

GETSTARTUPFLAGS

Popis

Volaná funkce na výstupu vrací hodnotu, která signalizuje, po jakém procesu byl program spuštěn.

Výstupy

Výstup | Typ | Význam
=> | UDINT | číselný status; výsledek kontroly nastavení systému

Funkce

Po spuštění programu výstup funkce getstartupflags vrátí číselný status, který signalizuje, po jakém procesu došlo ke spuštění programu. Status indikuje, jestli se jedná o první spuštění programu po spuštění RT (zapnutí napájení, teplý restart, studený restart), spuštění programu s on-line změnami nebo spuštění programu jako po studeném restartu. Výstupní proměnná => hlásí výsledek spuštění programu.

Bit výstupní proměnné | Význam
0 | První start programu po spuštění RT (typicky po zapnutí napájení)
1 | Start programu s požadovanými On-line změnami
2 | Studený start

Bity mohou být kombinovány, např. hodnota 5 (bity 0 a 2, tedy 1 + 4 = 5) znamená první start programu po spuštění napájení, zároveň jde o studený start. Příklad použití Stavová hodnota na výstupu této funkce indikuje akci, po které byl na PLC program spuštěn. V aplikaci je tak možné rozlišit, zda šlo o start programu po výpadku napájení nebo po některém z řízených restartů. Na základě této informace je možné zvolit např. různé způsoby nabíhání technologie.


Mutex Lock

Název funkce

MUTEXLOCK

Funkce

Funkce MutexLock slouží k zamknutí zámku ve vztahu ke komunikacím (SSCP server, Modbus server, LCD, ...). Nemá žádný parametr a vrací vždy hodnotu false. Dá se použít k ochraně změn proměnných ve struktuře ve chvíli, kdy se s ní něco dělá v ST. Blok se uzavře mezi MutexLock a MutexUnlock. V kódu musí být stejný počet MutexLock a MutexUnlock. Uzamčení je aktivní jen v rámci jednoho cyklu, po jeho skončení se vždy odemyká.

Výstupy

Výstup | Typ | Význam
=> | SINT | Výstup


Mutex Unlock

Název funkce

MUTEXUNLOCK

Funkce

Funkce MutexUnlock slouží k odemknutí zámku ve vztahu ke komunikacím (SSCP server, Modbus server, LCD, ...). Nemá žádný parametr a vrací vždy hodnotu false. Dá se použít k ochraně změn proměnných ve struktuře ve chvíli, kdy se s ní něco dělá v ST. Blok se uzavře mezi MutexLock a MutexUnlock. V kódu musí být stejný počet MutexLock a MutexUnlock. Uzamčení je aktivní jen v rámci jednoho cyklu, po jeho skončení se vždy odemyká.

Výstupy

Výstup | Typ | Význam
=> | SINT | Výstup


Resume Normal Tasks

Název funkce

RESUMENORMALTASK

Funkce

Funkce znovu rozjede zaseklé tasky.

Výstupy

Výstup | Typ | Význam
=> | SINT | Výstup.


Nastavení systémového času

Název funkce

SETSYSTEMTIME

Volání v ST

PROGRAM TEST_SETSYSTEMTIME

VAR
  system_time : dt;
  utc : bool;
  set_time : bool;
END_VAR

 IF set_time THEN
 setsystemtime(system_time, UTC);
 set_time := FALSE;
 END_IF;

END_PROGRAM

Popis

Volaná funkce nastavuje systémový čas PLC na zadanou hodnotu. Používá se pro řízenou synchronizaci vnitřních hodin PLC.

Vstupy

Vstup | Typ | Význam
systemTime | DT | Požadovaný čas
utc | BOOL | Povolení časové zóny (Pokud je UTC = „false“, je údaj na vstupu systemTime považován za lokální čas podle definované časové zóny. Pokud je UTC = „true“, je nastaven UTC čas)

Výstupy

Výstup | Typ | Význam
=> | INT | číselný status; výsledek kontroly nastavení času

Funkce

Funkce setsystemtime provádí nastavení požadovaného systémového času ze vstupní proměnné systemTime. Vstupní proměnnou UTC je možné nastavovat lokální nebo UTC čas. Výstup funkce => vrací výsledek nastavení času.

Číselný status | Význam
0 | Nastavení času nebylo provedeno
1 | Nastavení času bylo provedeno


Řízené zastavení runtimu

Název funkce

STOPINTERFACEENTRYPOINT

Volání v ST

PROGRAM TEST_STOPINTERFACEENTRYPOINT

VAR
 waitforstop : bool;
 time_out : time;
 stopacknowledge : bool;
 enable : bool;
END_VAR

 IF enable THEN
 STOPINTERFACEENTRYPOINT(waitforstop, time_out,stopacknowledge);
 END_IF;

END_PROGRAM

Popis

Volaná funkce umožňuje bezpečné ukončení technologického procesu při zastavení runtimu. Se zastavením runtimu se čeká do té doby, než jsou splněny podmínky pro bezpečné odstavení technologie.

Vstupy

Vstup | Typ | Význam
waitforstop | BOOL | Funkce uvedení technologie do bezpečného stavu je aktivní (pokud je waitforstop = true, bude se při zastavování programu čekat na indikaci ukončení od běžící aplikace)
timeout | TIME | Bezpečný limit (30 vteřin je maximální čas, který bude RT čekat na indikaci bezpečného odstavení – pak dojde k zastavení RT bez ohledu na stav stopacknowledge)
stopacknowledge | BOOL | Indikace úspěšného odstavení technologie (stopacknowledge = true)

Výstupy

Výstup | Typ | Význam
=> | BOOL | Ukončovací status (=> = true, nastal požadavek na zastavení RT)
onlinechanges | BOOL | Budou se provádět on-line změny (odstavení technologie je nežádoucí)

Funkce

V případě, že vstupní proměnná waitforstop je true, runtime na PLC se po příkazu k zastavení (např. z IDE) nezastaví hned. Bude čekat na splnění jedné ze dvou podmínek, která nastane dříve:
- nastavení stopacknowledge na hodnotu true, čímž program hlásí runtimu, že byly splněny podmínky pro bezpečné odstavení technologie a je možné runtime zastavit
- uplynutí času, který se nastavuje v proměnné timeout, což je maximální čekací doba na odstavení. Po uplynutí této doby bude runtime zastaven, i když stopacknowledge je ve stavu false. Jakmile tedy runtime dostane příkaz k zastavení, výstup funkce je nastaven na true. Runtime ale běží dál. Program se tak „dozví“ o požadavku na zastavení RT a může spustit sekvenci pro bezpečné odstavení technologie (např. uzavře přívod páry, vypne elektrické ohřevy apod.). Jsou-li poté splněny podmínky pro bezpečné odstavení, např. pokles teploty výměníku pod určitou hodnotu, prokazatelné zavření ventilů pomocí signálu z koncových spínačů atd., program zapíše do proměnné stopacknowledge hodnotu true. Teprve poté se runtime zastaví. Je-li aktivní výstup onlinechanges, znamená to, že budou prováděny online změny. Není tedy nutné technologický proces bezpečně ukončovat, i když na výstupu funkce požadavek na zastavení runtimu nastane. Parametr timeout se přebírá v okamžiku začátku zastavování runtimu. Změna jeho hodnoty během zastavování již nemá na funkci vliv.


LDATE_TO_LDT

Název funkce

LDATE_TO_LDT

Volání v ST

PROGRAM LDATE_TO_LDT_DEMO
    VAR
        LDATE1: LDATE;
        LDT1: LDT;
    END_VAR

    LDT1:=LDATE_TO_LDT(LDATE1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru datumu.

Vstupy

Vstup | Typ | Význam
IN1 | LDATE | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LDT | Výstupní hodnota

Příklad použití


LDT_TO_LTOD

Název funkce

LDT_TO_LTOD

Volání v ST

PROGRAM LDT_TO_LTOD_DEMO
     VAR
           LDT1: LDT;
       LTOD1: LTOD;
     END_VAR
    LTOD1:=LDT_TO_LTOD(LDT1);
END_PROGRAM

Popis

Funkce převede na výstup hodnotu vstupní hodnoty ve tvaru denního času.

Vstupy

Vstup | Typ | Význam
in1 | LDT | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | LTOD | Výstupní hodnota

Příklad použití


TO_UINT

Název funkce

TO_UINT

Volání v ST

PROGRAM TO_UINT_DEMO
     VAR
           U1: UINT;
       R1: REAL;
     END_VAR
    U1:=TO_UINT(R1);
END_PROGRAM

Popis

Funkce převede na výstup celočíselnou hodnotu vstupní hodnoty.

Vstupy

Vstup | Typ | Význam
IN | ANY_ELEMENTARY | Vstupní hodnota

Výstupy

Výstup | Typ | Význam
=> | UINT | Výstupní hodnota

Příklad použití

Příklad výpočtu

Vstupní hodnota | round ( _TO_ ) | floor | ceil | trunc
5.5 | 6 | 5 | 6 | 5
3.8 | 4 | 3 | 4 | 3
2.3 | 2 | 2 | 3 | 3
-2.3 | 0 | -3 | -2 | -2
-3.8 | 0 | -4 | -3 | -3
-5.5 | 0 | -6 | -5 | -5


M090 - Převodník Modbus TCP / DALI

Popis

M090 je sériový převodník, který pracuje jako Modbus TCP server (přijímá telegramy Modbus TCP) a řídí sběrnici DALI (Digital Addressable Light Interface), která může obsahovat až 64 předřadníků DALI. Převodník dále obsahuje webové rozhraní pro manuální zadávání příkazů DALI včetně konfigurace sběrnice a diagnostických příkazů.

Vstupy

Vstup | Typ ST | Popis
AllBlock | m090_dali_master_input | Zprava od telegrafu.
StatusLamp m090_status_lamp Status světel je pole v rozsahu 0...63 (světlo s adresou 1 odpovídá pozici 0) se strukturou prvků:
  • status - Status předřadníku (0 = OK , 1 = Chyba)
  • failure - Selhání světla (0 = OK, 1 = chyba světla)
  • poweron - Stav světla (0 = zhasnuto, 1 = rozsvíceno)
  • limiterror - Poslední požadavek na aktuální svítivost (0 = byl v rozsahu MIN/MAX, 1 = Nebyl v rozsahu MIN/MAX)
  • fadeready - stmívání/rozsvícení (0 = neprobíhá stmívání, 1 = právě probíhá stmívání)
  • resetstate - aktuální stav předřadníku (0 = není v reset stavu, 1 = je v reset stavu)
  • missingshortaddress - nepoužívá se
  • powerfailure - nepoužívá se

Příklad zápisu pro světlo s adresou 1: onoff1:=hw.$Domat_M090_StatusLamp$[0].poweron;
Všechny parametry jsou typu bool.

Výstupy

Výstup | Typ ST | Popis
ControlBlock0...ControlBlock7 | m090_dali_master_block | Zprávy telegrafu s požadavky.
DigitalDrivingBallast | Array [0..7] of byte | Ovládání světel ON/OFF. Příklad ovládání světel: hw.$Domat_M090_DigitalDrivingBallast$[0]:=button; //Světlo 1 hw.$Domat_M090_DigitalDrivingBallast$[63]:=button; //Světlo 64 Proměnná button je typu bool.
DigitalDrivingBroadcast | bool | Ovládání všech světel ON/OFF.
DigitalDrivingGroup | Array [0..1] of byte | Ovládání skupin ON/OFF. Příklad ovládání světel ve skupině: hw.$Domat_M090_DigitalDrivingGroup$[0]:=button; //skupina 1 hw.$Domat_M090_DigitalDrivingGroup$[15]:=button; //skupina 16 Proměnná button je typu bool.
IntensityOfBallast | Array [0..63] of int | Ovládání pomocí intenzity. Příklad ovládání světla na adrese 1: hw.$Domat_M090_IntensityOfBallast$[0]:=Intensity; Proměnná Intensity je typu int.
IntensityOfBroadcast | int | Ovládání všech světel pomocí intenzity.
IntensityOfGroup | Array [0..15] of int | Ovládání skupin pomocí intenzity. Příklad ovládání skupiny světel: hw.$Domat_M090_IntensityOfGroup$[0]:=Intensity; Proměnná Intensity je typu int.

Pozor:

K použití tohoto zařízení je potřeba knihovna DALI.


Tříbodová regulace pulsní

Tříbodová regulace pulsní - BROKEN

Název bloku

T4_PULSE_THREE_POINT_CONTROL

Volání v ST

PROGRAM TEST_T4
    VAR
        REAL1,REAL2,REAL3: REAL;
        TIME1,TIME2,TIME3: TIME;
        BOOL1,BOOL2,BOOL3,BOOL4,BOOL5: BOOL;
        FB: LIB.HVAC.V1_0.T4_PULSE_THREE_POINT_CONTROL;
    END_VAR
    FB(IN:= REAL1, BR:= BOOL1, BCRASH:= BOOL2,  BSP:= BOOL3, TOL:= REAL2, TRUN:= TIME1, T0:= TIME2, TIMP:= TIME3, CLOSE=> BOOL4, OPEN=> BOOL5, Y=> REAL3);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Blok je označen jako BROKEN. Není umístěn v průzkumníku bloků FUPLA a není nadále podporován.

Blok převádí spojitý signál 0...100 % na impulsy otevírání a zavírání pro řízení tříbodové periferie, tedy pohonu klapky nebo ventilu. Tento blok je vhodný pro ventily, kde je vyžadována pomalá reakce na řídicí signál, např. ventily na parním výměníku. Na rozdíl od bloku T2 je zde délka pulsu a periody neaktivity dána napevno parametry Timp a T0.

Vstupy

Vstup | Typ | Význam | Výchozí hodnota
BCRASH | BOOL | Signál pro rychlé uvedení do bezpečné polohy, při aktivaci je výstup pro uvedení do bezpečné polohy trvale aktivní | False
BR | BOOL | Resetovací (synchronizační) vstup pro přechod do bezpečné polohy a vynulování vnitřního počitadla polohy | False
BSP | BOOL | Definice bezpečné polohy: TRUE = 100 % (otevřeno), FALSE = 0 % (zavřeno) (výchozí hodnota: FALSE) | False
IN | REAL | Vstupní signál, 0...100 % | 0
T0 | TIME | Doba klidového stavu | 4 s
TIMP | TIME | Doba aktivity (impulsu) | 1,5 s
TOL | REAL | Necitlivost (tolerance) na změnu vstupního signálu | 1
TRUN | TIME | Doba přeběhu pohonu z jedné krajní polohy do druhé (z 0 na 100 % nebo zpět) | 65 s

Výstupy

Výstup | Typ | Význam
CLOSE | BOOL | Povel k zavírání
OPEN | BOOL | Povel k otevírání
Y | REAL | Předpokládaná poloha ventilu (nyní rovno vstupu IN)

Funkce

Před vysláním výstupního impulsu je aktuální hodnota vstupu porovnána s předchozí hodnotou na vstupu a zapamatována. Při zjištěném rozdílu (tedy pokud došlo od posledního výpočtu ke změně řídicího signálu IN) vyšším než tolerance TOL je generován impuls pro pohyb příslušným směrem. Impuls má délku TIMP. Impulsy jsou proloženy dobami neaktivity T0. Během doby TIMP a T0 je algoritmus na změny vstupního signálu necitlivý.

Je-li vstupní signál > 99.9 %, výstup OPEN je trvale ve stavu TRUE. Je-li vstupní signál < 0.1 %, výstup CLOSE je trvale ve stavu TRUE.

Synchronizační vstup br slouží k pravidelnému synchronizování pohonu, tedy zaručenému přejetí do bezpečného stavu (obvykle “zavřeno”) a vynulování vnitřní logiky bloku. Synchronizace by měla probíhat např. 1x denně. K synchronizaci dojde při příchodu náběžné hrany na vstup BR.

Příklad použití

Použití je podobné jako u bloku T2.


Časový program s externím kalendářem, integer

Název bloku

T19_INT_SCHEDULER_CAL

Volání v ST

PROGRAM TEST_T19_CAL
    VAR
        FB : LIB.HVAC.V1_0.T19_INT_SCHEDULER_CAL := (TPGVALUE := [(STARTTIME := 0, STATE := 0),
        (STARTTIME := 500, STATE := 1),
        (STARTTIME := 650, STATE := 0),
        (STARTTIME := 2160, STATE := 1),
        (STARTTIME := 2350, STATE := 0),
        (STARTTIME := 65535, STATE := 0)]);
        DT1:DT;
        TIME1:TIME;
        UINT1,UINT2,UINT3:UINT;
    END_VAR
    DT1:=getlocaltime();
    FB(DEFAULTVALUE:= UINT1,CURRENTTIME:= DT1,IN[1]:= BOOL1,IN[2]:= BOOL2,IN[3]:= BOOL3,NEXTOUTPUT=> UINT2,OUT=> UINT3,TIMENEXTCHANGE=> TIME1);
END_PROGRAM

Knihovna

LIB\HVAC

Verze

V1.0

Popis

Časový program je zdroj proměnné typu integer, která se mění podle týdenního kalendáře s max. 42 událostmi (změnami stavu). U tohoto bloku není možné použít výjimky. Pro použití výjimek použijte prosím T18_INTEGER_SCHEDULER.)

Vstupy

Vstup | Typ | Význam
CURRENTTIME | DT | Datum a čas, pro případ, že je nutné použít jiné než aktuální systémové datum a čas
DEFAULTVALUE | UINT | Hodnota nastavená na výstup v případě en=false

Výstupy

OUT UINT Aktuální stav časového programu

Funkce

Časový program porovnává aktuální datum a čas s předpisem v tabulce a výslednou hodnotu posílá na výstup. Ten nabývá hodnot v rozmezí definovaném typem integer. Editace časového programu je možná z IDE nebo HMI - LCD displeje, webového rozhraní, touchscreenu, vizualizace nebo jiného klienta).

Příklad použití

Časový program se používá pro vícestavové řízení, jako například přepínání mezi stavy Komfort, Pokles, Úspora a Vypnuto. (Pro povolení chodu zařízení podle provozních hodin, pro nastavování nočních poklesů atd. použijte blok T17_BOOLEAN_SCHEDULER, pro přímé zadávání požadovaných hodnot T18_REAL_SCHEDULER.)

Na obrázku je časový program použit pro přepínání stupňů ventilátoru ve stavech Vypnuto / Stupeň 1 / Stupeň 2 / Podle CO2. V režimu řízení podle CO2 je na základě hladiny CO2 v místnosti přepínáno mezi 1. a 2. stupněm.

V editoru je pak vyplněno krátké ranní provětrávání od 7:00 na 2. stupeň, provoz na první stupeň v době ranního a večerního provozu a automatické řízení podle CO2 přes den.