Vai al contenuto

Messaggi consigliati

Inserito:

Ciao a tutti
con RSlogix500
ho la necessità  di attivare una sequenza di tre pompe in sequenza a distanza di un tempo "T"  l'una dall'altra, avviate  da un consenso eterno. Mi spiego meglio:
   
    - arriva il consenso
    - si avvia la pompa P1
    - dopo un tempo "T" si ferma e si avvia la pompa P2
    - trascorso lo stesso tempo "T" si ferma e si avvia la pompa P3
    -  trascorso lo stesso tempo "T" si ferma e termina la sequenza in attesa di un nuovo consenso.

 sono tre giorni che mi sto scervellando senza venirne a capo. Potreste aiutarmi?

un grazie anticipato a tutti
Pietro
 

Inserita:

Le soluzioni applicabili sono diverse e di fatto semplici e banali.

 

Ma per rispondere in modo adeguato alla tua domanda, prima sono necessarie alcune domande di completamento delle informazioni che hai dato:

- quale rapporto di conoscenza hai con la programmazione dei PLC e in particolare dei modelli programmabili con RXlogic500? cambia la soluzione applicabile

- che CPU hai? cambiano il funzionamento di alcune funzioni e le variabili utilizzabili

- i tempi sono fissatti una volta per tutte o devono essere impostabili dall'utente?

- I tempi come sono espressi? in: secondi, minuti, ore?

- quindi tempo minimo e massimo quanto devono essere?

- i tempi sono tutti diversi?

- alla fine del ciclo occorre un ulteriore tempo di pausa?

- se il consenso resta il ciclo si deve ripetere all'infinito?

Inserita:

Ciao Marco
innanzitutto grazie per avermi risposto
Allora il modello di CPU che utilizzo è: 1747-L542B 5/04 32K dell'Allen-Bradley e, credo di avere (almeno credo) un discreto livello di programmazione maturata in 35 anni di servizio come manutentore impiantista in una grossa fabbrica .
     Detto questo ti dico che il modello di programmazione che utilizzo è quello a ladder (se è quello che intendevi), e le mie esigenze son le seguenti:
 A una certa ora (definita da un timer esterno il cui consenso rimane attivo per 1') devo innaffiare un prato avendo a disposizione 3 pompe, dove ognuna di loro serve una zona diversa. 
      La mia intenzione era che all'attivazione del timer (che dopo 1' appunto si stacca), parte la prima pompa e rimane attiva per 10' (tempo stabilito utilizzando un timer interno al programma), dopo, 30" di pausa e  parte la seconda pompa e anch'essa deve rimanere attiva per 10', infine sempre dopo 30" di pausa,  parte la terza pompa che rimarrà accesa per altri 10'. Al termine la sequenza si ferma fino al successivo intervento del timer esterno.
       I tempi di durata dell'innaffiamemnto, li definisco in sede di programmazione ed eventualmente li cambio modificando il programma.
                    Tutto questo lo faccio per non far rimanere contemporaneamente attive più di una pompa

   ti rinrazio ancora
     Pietro

Inserita:

Ciao, ti posto una risposta generica dalla IA. 

Dovrai adattarla al tuo linguaggio del plc:

 

 

Risposta da IA:


"La Logica degli Stati Stato = 0: Idle (Attesa pressione tasto di START)

 

Stato = 10: $OUT_1$ attiva per 10 secondi

Stato = 20: $OUT_2$ attiva per 20 secondi

Stato = 30: $OUT_3$ attiva per 30 secondi

 


Stato = 0         START                                 +--------+
------[ = ]--------[ ]----------------------------------( MOVE   )
    Variable: Stato                                     ( Val: 10)
    Value: 0                                            +--------+

 

Stato = 10                                                 OUT_1
------[ = ]-------------------------------------------------( )----
    Variable: Stato
    Value: 10

   Stato = 10                                           +--------+
------[ = ]---------------------------------------------| TON    |
    Variable: Stato                                     | T1     |
    Value: 10                                     10s---| PT    Q|----( ) Temp_Done1
                                                        +--------+

  Temp_Done1                                            +--------+
------[ ]-----------------------------------------------( MOVE   )
                                                        ( Val: 20)
                                                        +--------+

 

Stato = 20                                                 OUT_2
------[ = ]-------------------------------------------------( )----
    Variable: Stato
    Value: 20

   Stato = 20                                           +--------+
------[ = ]---------------------------------------------| TON    |
    Variable: Stato                                     | T2     |
    Value: 20                                     20s---| PT    Q|----( ) Temp_Done2
                                                        +--------+

  Temp_Done2                                            +--------+
------[ ]-----------------------------------------------( MOVE   )
                                                        ( Val: 30)
                                                        +--------+

 

Stato = 30                                                 OUT_3
------[ = ]-------------------------------------------------( )----
    Variable: Stato
    Value: 30

   Stato = 30                                           +--------+
------[ = ]---------------------------------------------| TON    |
    Variable: Stato                                     | T3     |
    Value: 30                                     30s---| PT    Q|----( ) Temp_Done3
                                                        +--------+

  Temp_Done3                                            +--------+
------[ ]-----------------------------------------------( MOVE   )
                                                        ( Val: 0 )
                                                        +--------+

 

 

Perché questo approccio è vantaggioso?
Sicurezza: Le uscite non possono MAI sovrapporsi perché dipendono dal valore univoco della variabile Stato

Flessibilità: Se un domani volessi aggiungere un pulsante di STOP per azzerare tutto a metà ciclo, ti basterebbe un solo rung finale: Se STOP -> MOVE 0 in Stato.

Diagnostica immediata: Guardando il valore numerico di Stato online sul PLC sai esattamente in quale secondo della sequenza ti trovi."

Inserita:

 

Ciao

Grazie per il suggerimento. il tempo di editarlo e ti farò sapere.


     Pietro

Marco Fornaciari
Inserita:

Il ladder è il linguaggio da usare con quella CPU, ma la mia domanda era rivolta proprio al metodo di approccio alla programmazione e all'uso delle relative istruzioni e variabili.

Sicuramente hai esperienza di manutenzione ma non mi pare di creazione di un programma ex novo.

 

La proposta di thinking è una traccia fra le tante, ed è molto usata, ma presuppone saper usare le variabili numeriche, ma è incompleta rispetto alla tua descrizione.

Poi all'atto pratico mancano anche altre cose, per esempio la gestione dei feed back delle pompe: se una non parte o/e scatta un termico cosa deve succedere, se voglio comandare in manuale come faccio, ecc. ecc.

 

Un altro metodo è quello dell'uso dei set e reset come si farebbe in elettromeccanica con relè a memoria.

Poi ce ne sono altri.

 

Prova poi ci saprai dire.

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...