Vlastní funkční blok - sepnutí výstupu na určitý čas
-
Dobry den,
je možné v jazyce ST při vytváření funkčního bloku použít nějakou funkci, která sepne výstup, resp. přiřadí výstupu typu bool honotu true po určitý čas, řekněme 5 vterin? Jakym zpusobem vytvorit cyklus s urcitym poctem iteraci?
-
Dobrý den,
Možností je několik, můžete použít blok Monostable FlipFlp, Pulse Generator nebo Pulse Encoder, ale určitě jsou i další možnosti jak dosáhnout stejného výsledku. Funkční bloky lze v jazyce ST volat pomocí funkčního syntaxu.
Např z jednoho našeho modulu:
VAR monostable_block : lib.Core.V1_0.MonostableFlipFlop; END_VAR IF (inp_value <> previous_inp) THEN monostable_block.en := TRUE; monostable_block.Delay := hold_time; monostable_block.In := TRUE; monostable_block(); monostable_block.In := FALSE; END_IF; monostable_block(); previous_inp := inp_value; out_force := monostable_block.Out; out_value := inp_value;
Iterování se dělá pomocí FOR,WHILE,REPEAT nebo CASE ST příkazů. Jako tutoriál pro ST mohu např. doporučit: http://www.plcacademy.com/structured-text-tutorial/
-
Dekuji za radu. Co se tyce iteraci, cykly jsou mi jasne, ale nevim, jak udelat cyklus, kdy se iterace provede rekneme 3x s odstupem napr. 10 vterin.
-
Na to stačí použít právě nějaký blok jako je např. monostable, a volat ho při každém zavolání rodičovské funkce - pokud je hodnota .Out TRUE pak ho vyresetovat a udělat další část iterace.
V tom případě pak není potřeba použít cyklu, ale stačí IF