Vai al contenuto

Problema con function block eTP

Home Forum Informazioni ambiente di sviluppo LogicLab Problema con function block eTP

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Autore
    Post
  • #74382
    [email protected]
    Partecipante

    Ho un problema molto banale con questo function block, ma nonostante diverse prove non riesco a trovare la soluzione…

    Purtroppo nella sezione KwnoledgeBase di questo funcion block il link punta su un indirizzo sbagliato (manda a SysGetPhrDI) e non ho quindi potuto approfondire come è strutturato il FB. Ho utilizzato questo FB come temporizzatore luci scale; funziona tutto, ma vorrei inserire un reset del conteggio; temo però di sbagliare sintassi perchè scrivendo:

    // La pressione di SB3 azzera il conteggio
    
    IF (SB3=TRUE) THEN
        ScalaTerra1.ET:=0; 
    END_IF;

    dove:
    SB3 è la serie dei pulsanti scala
    ScalaTerra1 è il FB

    Tutto il resto funziona bene, ma non riesco ad azzerare il conteggio ogni volta che viene ripremuto il pulsante. Portando il FB nella schermata di watch, alla prima pressione di SB3 parte il conteggio, ma le pressioni successive non lo azzerano.

    Sapreste suggerirmi una soluzione.

    #74385
    Sergio Bertana
    Amministratore del forum

    Mentre utilizzavi il FB eTP, abbiamo rilasciato con il package Pck055a010  la nuova versione TP timer pulse. La nuova versione funziona esattamente come la precedente, l’unica differenza è che ora i valori di PT ed ET sono in formato TIME. Nella pagina di manuale abbiamo riportato il diagramma di funzionamento che credo dia una idea di come utilizzare il FB.

    Ma veniamo alla tua domanda, ET è una uscita del FB quindi anche se tu la azzeri il FB la continuerà a settare con il suo valore interno. Per gestire la luce scala, basta appoggiare SB3 (serie dei pulsanti scala) sull’ingresso IN del FB. Come vedi dal digramma di funzionamento sulla attivazione di IN si attiva l’uscita Q che rimane attiva per il tempo impostato in PT. Trascorso il tempo l’uscita Q si disattiva indipendentemente dallo stato dell’ingresso IN, ecco un esempio di utilizzo.

    ScalaTerra1.IN:=SB3; //Comando ingresso
    ScalaTerra1(); //Eseguo il timer luce scala
    Lampada:=ScalaTerra1.Q; //Gestisco la lampada

    Per avere una nuova attivazione dell’uscita Q devi disattivare l’ingresso IN e poi riattivarlo,

    #74476
    [email protected]
    Partecipante

    Grazie mille per la risposta, ma temo di non essere riuscito a spiegarmi. Questo è il programma attualmente in uso:

    //Luce Scala
    ScalaTerra1(IN:=SB3,PT:=65000);// Iniziallizzazione FB
    IF (ScalaTerra1.Q) THEN //la pressione del pulsante causa l'attivazione per un tempo impostato
        L2:=TRUE; //Le luci scala vengono attivate
        L3:=TRUE; //Gli sbarchi vengono attivati
    ELSE
        L2:=FALSE; //Le luci scala vengono disattivate
        L3:=FALSE; //Gli sbarchi vengono disattivati
    END_IF;

    Il mio problema sarebbe quello di azzerare il conteggio (azzerare il valore ET). Le luci scale restano attive per circa 1 minuto, ma capita che quando le mie figlie sono sulle scale e la luce è già stata accesa in precedenza (magari sono appena scese, vogliono risalire immediatamente e trovano quindi la luce già accesa), loro iniziano a salire e la luce si spegne quando sono a metà scala.

    Vorrei quindi che, ripremendo uno dei pulsanti luce scala, si azzerasse il conteggio ET. Avete qualche idea su come si possa fare?

    Grazie a tutti in anticipo…

    #74477
    [email protected]
    Partecipante

    Buongiorno, Ho risolto!! Avevo solo sbagliato il FB…

    Nella stessa libreria c’era anche TOFF (timer OFF) che lavora proprio come serve a me.

    Essendo poi strutturato esattamente come TP, è stato sufficiente caricare nel progetto il FB e modificare il Type di ScalaTerra1 da TP a TOFF, ed ora funziona correttamente.

    Grazie ancora a tutti

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