Vai al contenuto

Blocco funzione per gestione tempi On/Off random

Home Forum Programmazione IEC 61131 (LogicLab) Blocco funzione per gestione tempi On/Off random

Stai visualizzando 1 post (di 1 totali)
  • Autore
    Post
  • #34877
    Sergio Bertana
    Amministratore del forum

    Molte volte per eseguire tests su apparecchiature occorre disporre di un comando di On/Off con tempi di ciclo variabili e casuali, utilizzando le funzioni SysGetSysTime e SysGetRandom nei sistemi Sline è possibile realizzare un semplice blocco funzione che realizza tale funzione.

    Ecco il codice in linguaggio ST.

        TimePsd:=SysGetSysTime(TRUE)-TimeBf; (* Time passed (uS) *)
        TimeBf:=SysGetSysTime(FALSE); (* Time buffer (uS) *)
       
        IF (DelayTm > TimePsd) THEN
            DelayTm:=DelayTm-TimePsd; (* Delay time (uS) *)
        ELSE
            (* Eseguo inversione uscita e calcolo il relativo tempo di ritardo. *)

            Out:=Out XOR TRUE; (* Output status *)
            IF (NOT(Out)) THEN   (* Calcolo tempo di off. *)
                DelayTm:=(MinOffTime*1000)+((MaxOffTime-MinOffTime)*TO_UDINT(SysGetRandom(TRUE)*1000));
            ELSE  (* Calcolo tempo di on. *)
                 DelayTm:=(MinOnTime*1000)+((MaxOnTime-MinOnTime)*TO_UDINT(SysGetRandom(TRUE)*1000));
            END_IF;
         END_IF;

    Allego per il download l’estratto del manuale supporto programmazione IEC con le note relative, ed il progetto LogicLab.

Stai visualizzando 1 post (di 1 totali)
  • Devi essere connesso per rispondere a questo topic.