Vai al contenuto
PLC Forum


Alternare 3 Pompe


GIANLUCA 1

Messaggi consigliati


  • Risposte 54
  • Created
  • Ultima risposta

Top Posters In This Topic

  • GIANLUCA 1

    30

  • batta

    15

  • Andrea_Aset

    4

  • franco1

    3

Ok

Mandami il tuo indirizzo che ti invio un progettino di esempio dove tu puoi estrapolare i blocchi.

Se vuoi vedere come funzione puoi avviare il simulatore e provare con la vat.

Fondamentalmente il blocco da un numero di sequenza in base alla prima turbina/Pompa abilitata che tu puoi usare come vuoi.

per la gestione delle ore di lavoro dovrai abilitare un ingresso che cambiera la sequenza in base alle ore di lavoroo.

Andrea

Link al commento
Condividi su altri siti

salve ho seguito il consiglio ma il conteggio si ferma a 2 e non capisco perchè.

Nel mio esempio, se noti, c'è scritto: prendi la variabile "A", somma 1 e metti il risultato ancora nella variabile "A". Così facendo hai incrementato di una unità il valore della variabile "A".

Nel tuo esempio invece hai scritto: prendi la variabile "A", somma 1 e metti il risultato nella variabile "B". Direi che non è la stessa cosa.

Per quanto riguarda la proposta di Andrea_Aset di fornirti un blocco già fatto, io considero l'offerta lodevole, ma sbagliata, perché così non impari.

Tieni presente che questa dell'alternanza è una cosa banale. Se non superi da solo questo ostacolo, cosa farai quando ti si presenteranno problemi più complessi?

Link al commento
Condividi su altri siti

per l'offerta di andrea hai raggione Batta così non imparo ma visto che la sessione di laurea è il mese prossimo il tempo inizia a stringere...

poi mi sono accorto dell'errore e ho provato a rifare seguendo un tuo precedente consiglio:

contap2.png

w798.png

come puoi notare però continua a piantarsi dopo che arriva a 2 il che mi preoccupa....

PS ho rifatto lo stesso errore e me ne sono accorto rileggendo il tuo messaggio precedente e guerdando cio che ho postato

Modificato: da GIANLUCA 1
Link al commento
Condividi su altri siti

c'è un problema! sto provando ad incrementare la stessa variabile però in awl è possibile scrivere ciò che tu mi hai detto ma in kop non riesco!!

a meno che non ci sia qualche altro passaggio da fare...

PS: non è l'alternanza a complicarmi la vita bensì contare il tempo....

Modificato: da GIANLUCA 1
Link al commento
Condividi su altri siti

come puoi notare però continua a piantarsi dopo che arriva a 2 il che mi preoccupa....

Nel tuo esempio ci sono due errori:

1) manca l'istruzione "SPB M000" dopo "ON "P1""

2) la variabile #tempo_iniziale è dichiarata come IN anziché come IN_OUT

Non capisco però perché tu voglia usare una FC per fare un semplice incremento.

Link al commento
Condividi su altri siti

dal manuale leggo che un SPB è un'etichetta di salto, quindi dovendo lavorare in kop posso usare un JMP, giusto?

non sto usando una FC ( o almeno credo, sto lavorando dentro un blocco FB precisamente FB1!)

Link al commento
Condividi su altri siti

dal mnemonico inglese risulta che JNB è un' etichetta di salto equivalente SPB o almeno credo di aver capito così.

MIRACOLO CONTA!!!!!

Link al commento
Condividi su altri siti

ora che conta mi sono accorto che se metto la cpu in stop il conteggio riparte da zero;

supponiamo che l'impianto venga avviato oggi e le pompe P1 e P2 (di supporto alla P1) partano insieme; per far avviare le pompep P2 e P3 domani dovrò tener conto del tempo di lavoro delle P1 e P2 del giorno precedente (con dei blocchi di compareazione) comparando il tempo conteggiato. Ma se si resetta come ne tengo conto?

posto iil blocco ottenuto:

contap1.png

w794.png

Modificato: da GIANLUCA 1
Link al commento
Condividi su altri siti

nel mio caso mi basta contare solo i secondi per sapere quale pompadeve partire il giorno sucessivo;

per cercare di salvare il valore del conteggio in un area di memoria non volatile ho cercato di "spostarle" in una parola di merker definita nella tabella dei simboli ma non ho risolto lo stesso:

contap1.th.png

Modificato: da GIANLUCA 1
Link al commento
Condividi su altri siti

dal manuale leggo che un SPB è un'etichetta di salto, quindi dovendo lavorare in kop posso usare un JMP, giusto?

Se lavori in KOP, quando condizioni l'esecuzione di un box il salto viene creato in automatico.

non sto usando una FC ( o almeno credo, sto lavorando dentro un blocco FB precisamente FB1!)

Peggio ancora. Perché sprechi le risorse richieste da un FB per una cosa così banale?

FC ed FB con parametri si utilizzano solo nel caso di operazioni abbastanza complesse o ripetitive.

Nel tuo caso (salvo esigenze diverse di cui fino ad ora non si è parlato), ti conviene programmare tutto in una FC senza parametri.

Per memorizzare il valore di conteggio crei un DB con le variabili di cui hai bisogno.

ora che conta mi sono accorto che se metto la cpu in stop il conteggio riparte da zero;

Vale quanto detto sopra. Se utilizzi una variabile di un DB, il valore viene mantenuto anche se spegni il plc.

Per quanto riguarda la lingua, tieni presente che sono pochissimi i programmatori (almeno in Italia) che utilizzano Step 7 con le istruzioni in inglese.

Se la scelta non è obbligata, io ti consiglierei di utilizzare le istruzioni in tedesco.

Tieni presente che io di tedesco non so una parola, ma i nomi da imparare sono pochi.

Link al commento
Condividi su altri siti

Andrea, io sono dell'idea che contare ore, minuti e secondi sia solo una inutile doppia complicazione. Basta un unico conteggio in secondi.

Se leggi tutta la discussione, capisci perché.

Link al commento
Condividi su altri siti

Gianluca, voglio tornare ancora sul discorso variabili.

Usare MW e MD per memorizzare valori non è la scelta ideale. Per questo scopo ci sono i blocchi dati (DB).

Crea un DB (esempio: DB10) e assegnagli un nome simbolico (esempio: TLP, che sta per Tempo Lavoro Pompe).

Apri il DB e crea le variabili di cui hai bisogno (esempio: Pompa_1, Pompa_2, Pompa_3, tutte dichiarate come DINT.

Ora il tuo programma diventa così:

//Segmento 1 - Genera flag attivo una scansione ogni secondo
      U     "MerkerDiClock"
      FP    "AuxClock_1s"
      =     "Clock_1s"

//Segmento 2 - Incrementa tempo lavoro Pompa 1
      U     "P1"
      U     "Clock_1s"
      SPBNB _001
      L     "TLP".Pompa_1
      L     L#1
      +D    
      T     "TLP".Pompa_1
_001: NOP   0

//Segmento 3 - Incrementa tempo lavoro Pompa 2
      U     "P2"
      U     "Clock_1s"
      SPBNB _002
      L     "TLP".Pompa_2
      L     L#1
      +D    
      T     "TLP".Pompa_2
_002: NOP   0

//Segmento 4 - Incrementa tempo lavoro Pompa 3
      U     "P3"
      U     "Clock_1s"
      SPBNB _003
      L     "TLP".Pompa_3
      L     L#1
      +D    
      T     "TLP".Pompa_3
_003: NOP   0

Per comodità lo scrivo in AWL, ma è convertibile in KOP.

Ora lascio a te il piacere di decidere l'ordine di partenza delle pompe ;)

Link al commento
Condividi su altri siti

mi è venuta una curiosità : ma se avessi creato tre FB, uno per ogni pompa, dove tenevo conto del tempo di funzionamento, della temperatura rilevata sulla pompa, pressione e portata, sarebbe stato fatibile o è meglio avere tutto separato come ora?

Modificato: da GIANLUCA 1
Link al commento
Condividi su altri siti

facendo le debite prove il tutto non funziona.....

cioè il blocco dati non viene aggiiornato e quindi il tempo che una pompa passa in funzione non viene memorizzato o almenomi sembra..

da quello che mi sembra di aver capito dovrebbe aggiornarsi continuamente e mantenere l'ultimo valore assunto anche quando la cpu va in stop:

dbtlp.png

w659.png

Link al commento
Condividi su altri siti

Se i controlli da fare per ogni pompa fossero più numerosi del semplice incremento del tempo di lavoro, allora l'utilizzo di FC o FB parametrizzati diventerebbe molto comodo.

Fare però un FC solo per buttarci dentro solo un incremento, non ha senso.

Attenzione poi alla scelta FC oppure FB. Fare FB serve solo se c'è bisogno di appoggiare dati ad un DB (in questo caso il DB di istanza). Se questa necessità non c'è, meglio usare una più leggera FC.

Deve funzionare. Controlla bene il programma. In particolare, controlla di non aver assegnato uno stato ai merker M5.1 e M5.2 in altri posti, che il merker di clock funzioni, che il merker "P1" si attivo, di aver scaricato nella cpu anche DB10, che la variabile "TLP".Pompa_1 non venga azzerata da qualche parte, che l'FC venga elaborata.

Link al commento
Condividi su altri siti

ma fc1 è richiamato da ob1 puoi testare direttamente fc1 e vedi dovè il problema il merker di clock la mb è stata dichiarata nella configurazione della cpu

Modificato: da puntalino
Link al commento
Condividi su altri siti

Ciao

Sembra tutto a posto per me devi seguire il consiglio di puntalino.

Per Batta

Il mio era solo un esempio per fargli capire subito e in kop come si poteva contare secondi fino ad arrivare a contare persino glia anni. Scusa se non sono stato chiaro.

Andrea

Link al commento
Condividi su altri siti

sta contando e i dati rimangono in evidenza nel simulatore.

Ora provo a fare un blocco FB dove metto dentro rilevamento di temperatura , pressione e portata oltre il tempo di funzionamento.

Modificato: da GIANLUCA 1
Link al commento
Condividi su altri siti

Ora provo a fare un blocco FB dove metto dentro rilevamento di temperatura , pressione e portata oltre il tempo di funzionamento.

Perché FB? Non ti conviene una FC?

Se utilizzi una FB, per ogni pompa devi creare il suo DB di istanza. Visto che i dati per ogni pompa sono pochi, alla fine ti troveresti con 3 DB molto piccoli.

A mio avviso, ti conviene creare un unico DB con tutti i dati di tutte le pompe, magari organizzati in strutture. Al posto della FB crei una FC alla quale passi di volta in volta i parametri della pompa 1, 2 e 3.

Link al commento
Condividi su altri siti

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...