Vai al contenuto

Come rendere ritentivo valore quota della FB IOEncoder

Home Forum Programmazione IEC 61131 (LogicLab) Come rendere ritentivo valore quota della FB IOEncoder

Stai visualizzando 3 post - dal 1 a 3 (di 3 totali)
  • Autore
    Post
  • #35347
    Paolo
    Partecipante

    Testando l’FB “IOEncoder” ho riscontrato che la variabile collegata all’uscita “Quote” si azzera sia all’accensione di SlimLine, e sia al trasferimento del programma dopo modifica. Ho provato ad utilizzare una variabile del tipo UDINT, Indirizzo Auto con attributo RETAIN ed una UDINT, Indirizzo MW100.2048 ma senza successo.

    Ho provato anche ad appoggiare (MOVE) il contenuto di “Quote” in un’altra variabile RETAIN per poi riportarla (MOVE) in “Quote” allo start-up, ma all’abilitazione dell’FB l’uscita si azzera.

    Chiedo cortesemente se esiste una soluzione che a me sfugge per mantenere il valore di “Quote” anche dopo la riaccensione della CPU ?

    #37608
    Sergio Bertana
    Amministratore del forum

    Hai fatto un po di confusione… Intanto la variabile Quote è una variabile di output del blocco funzione, pertanto non la puoi valorizzare con istruzioni di MOVE. E se in uscita tu la appoggi su di una variabile di tipo retain, l’FB alla accensione azzera sempre il valore di Quote, e quindi di conseguenza azzererà anche il valore della variabile di appoggio.

    Il giusto approccio per soluzionare il tuo problema è di utilizzare come valore di quota una variabile UDINT di tipo RETAIN (Oppure una variabile allocata a partire da MD100.2048) e di utilizzare il valore Quote in uscita dalla FB per calcolare lo spostamente dell’encoder. Con il valore di spostamento calcolato potrai poi aggiornare il valore della variabile di quota, che in questo caso manterrà il suo valore allo spegnimento.

    Per spiegare il concetto ho realizzato un semplice programma di esempio che utilizza i due I/O di un modulo SlimLine per gestire il conteggio di quota da un encoder (Stampa e Download programma).

    Nell’esempio il valore di quota da utilizzare è quello presente nella variabile RETAIN Quote, ti ricordo che per azzerare il valore di quota devi utilizzare una istruzione di MOVE scrivendo il valore “0” nella variabile. In questo modo è anche possibile utilizzando l’istruzione MOVE presettare il valore di quota.

    #37609
    Sergio Bertana
    Amministratore del forum

    Per semplificarti il lavoro e come aiuto propedeutico allo sviluppo di FB da parte dei clienti, ho convertito l’esempio precedente utilizzando un blocco funzione FBEncoderOnIO costruito ad hoc (Di cui riporto il codice sorgente). Come vedi nel programma (Stampa e Download sorgente), il programma ladder si è enormemente semplificato, in pratica viene eseguito il solo blocco funzione.

    Per poter gestire la variabile di Quote con attributo RETAIN ho passato allla FB come input l’indirizzo della variabile, in questo modo il blocco funzione può operare su di essa sia in lettura che in scrittura.

    Anche in questo esempio puoi azzerare o presettare il valore di Quote semplicemente con istruzioni MOVE.

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