TON timer Problem in function block

lorenzop
2022-03-28
2022-03-30
  • lorenzop - 2022-03-28

    Hi,
    I have a problem with the timer TON into a function block

    I have this into the function block

    TON_Rit_Start(IN:= (AUTOMATICO AND START_AUTO),PT:= UINT_TO_TIME(T_RIT_START));
    IF TON_Rit_Start.Q THEN
    OUT := TRUE;
    END_IF

    And this is the call into the main program

    Gestione_Motori(AUTOMATICO := TRUE,
    START_AUTO := GVL.motore.Scarto.wStart,
    T_RIT_START := 2000,
    OUT => VAR1);

    When GVL.motore.Scarto.wStart is setted to TRUE the function don't start count and i have the OUT value always false

    PLS HELP ME

     

    Last edit: lorenzop 2022-03-28
  • gatto

    gatto - 2022-03-29

    Ciao,
    for me, it work
    see attached files

     
    • lorenzop - 2022-03-30

      Ciao,
      ho fatto una POU e una funzione a parte proprio uguali a quelle che mi hai mandato, perΓ² continua a non andare, sembra che anche se il TON ha l'IN per partire a contare non conti

       

      Last edit: lorenzop 2022-03-30
      • hermsen

        hermsen - 2022-03-30

        Only English please!

         
      • hermsen

        hermsen - 2022-03-30

        Only English please!

         
  • dFx

    dFx - 2022-03-30

    Hint

    Functions have no internal status information, which means that functions do not save the values of their variables until the next call. Calls of a function with the same input variable values always supply the same output value. Therefore, functions may not use global variables and addresses!

    source : https://help.codesys.com/webapp/_cds_obj_function;product=codesys;version=3.5.14.0

     
  • gatto

    gatto - 2022-03-30

    Ciao, il blocco POU, dove viene richiamato l' FB, deve essere elaborato.
    Io nel main task richiamo un POU di nome Main e poi in Main richiamo tutti gli altri blocchi. Quindi anche il POU_lorenzo deve essere richiamato nel Main.
    Un modo per vedere se un blocco viene richiamato Γ¨ inserire al suo interno un controllo.
    Per esempio dentro al tuo Fb dichiari la tag control:WORD;
    Nel codice del tuo FB scrivi control := control + 1 ;
    Andando online devi vedere la tag che incrementa ad ogni ciclo.

    Hello, the POU block, where the FB is called, must be processed.
    In the main task I call a POU called Main and then in Main I call all the other blocks. Therefore also the POU_lorenzo must be called in the Main.
    One way to see if a block is called is to insert a control into it.
    For example inside your FB you declare the tag
    control : WORD ;
    In your FB code write this
    control := control + 1 ;
    Going online you have to see the tag that increments each cycle.

     
  • gatto

    gatto - 2022-03-30

    And of course like dFx suggest you can't use Functions because haven't internal status information. As i wrote i used a FB

     

Log in to post a comment.