• Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search

    Vlastní funkční blok - sepnutí výstupu na určitý čas

    Mervis
    2
    4
    1184
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      akubicek last edited by

      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?

      1 Reply Last reply Reply Quote 0
      • T
        TomasKnot last edited by TomasKnot

        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/

        1 Reply Last reply Reply Quote 0
        • A
          akubicek last edited by

          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.

          1 Reply Last reply Reply Quote 0
          • T
            TomasKnot last edited by TomasKnot

            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

            1 Reply Last reply Reply Quote 0
            • First post
              Last post