Vai al contenuto

Come ottenere un impulso ogni 100 mS

Home Forum Programmazione IEC 61131 (LogicLab) Come ottenere un impulso ogni 100 mS

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Autore
    Post
  • #35970
    Anonimo
    Inattivo

    Arrivo dalla programmazione dei Vs sistemi serie Picosyst, all’interno dell’ambiente di sviluppo vi erano delle flags impulsive con base tempi predefinite. Io utilizzavo la PLCPulse100 per scandire un tempo. Nell’ambiente LogicLab esiste qualcosa di simile ?

    #39448
    Sergio Bertana
    Amministratore del forum

    In logicLab non abbiamo più gestito flags impulsive come in Remoter (L’ambiente di sviluppo famiglia Picosyst), ma è estremamente facile realizzare in proprio queste flags. La funzione SysGetSysTime ritorna il valore di tempo espresso su di una variabile UDINT che si incrementa ogni 1 uS. Utilizzando un UDINT avremo il roll over del valore ogni 4294.967295 secondi (71 minuti).

    Utilizzando questa funzione è possibile gestire in linguaggio ST una flags con impulso di un loop di programma che si attiva ogni 100mS. Ecco il listato del programma.

      PLCPulse100:=FALSE; (* Pulse bit every 100 mS *)
      IF ((SysGetSysTime(TRUE)-TimeBf) >= 100000) THEN
        TimeBf:=SysGetSysTime(TRUE); (* Time buffer (uS) *)
        PLCPulse100:=TRUE; (* Pulse bit every 100 mS *)
      END_IF;

    E solo modificando il valore di tempo nella IF ((SysGetSysTime(TRUE)-TimeBf) >= 100000) sarà possibile generare tutte le flags impulsive che servono.

    In linguaggio ladder utilizzando il FB eTON è facilmente realizzabile la gestione di flags impulsive (Screenshot). Ho realizzato il programma Pulse100mS che contiene i due esempi in linguaggio LD ed ST (Download programma).

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