Vai al contenuto
PLC Forum


Perchè Non Funziona? Cosa C'è Di Sbagliato?


noviltec

Messaggi consigliati

Ho acquistato di recente uno starter Kit completo di un pannello operatore. Fino ad ora mi sono cimentato nella programmazione solo di piccoli plc come lo zelio ed il logo.

Mi piacerebbe farmi qualche piccola applicazione di domotica per casa mia.

Ho difficoltà a comprendere la logica di funzionamento di questo piccolo programma che ho realizzato.

Vorrei far accendere e spegnere una luce con un pulsante. Ad ogni pressione del pulsante vorrei invertire lo stato della luce.

In pratica il classico relè passo passo.

Ho trovato qui sul forum, un esempio postato da Giuseppe Signorella, (mio amico e compaesano) :superlol:

Ho ricopiato l'esempio e l'ho diviso su due segmenti, perché vorrei implementare in futuro l'accensione e lo spegnimento della luce con altri eventi, ad esempio se inserisco l'allarme si spegne, se si mette a suonare la sirena si accende ecc.

Solo che da quando ho diviso in due segmenti non mi funziona più e non riesco a comprenderne la motivazione.

La luce si accende, ma poi non si spegne più.

Eppure (credo) che come logica di funzionamento dovrebbe essere tutto Ok

Qualcuno potrebbe spiegarmi il motivo?

Allego stampa dei due segmenti.

8fab9a849fecbe0fe11a6ba3135197e6-anomali

Link al commento
Condividi su altri siti


Roberto Gioachin

Scusa ma non ti manca un segmento?

dopo dei due che hai postato dovresti aggiungere un segmento di assegnazione dove la variabile %M50.4 attiva l'uscita %Q0.1 (Luce bagno).

Poi vedrai che funziona.

Roberto


Non avevo visto che %M50.3 è usato due volte, sul secondo segmento metti un'altra memoria.

Poi aggiungi il terzo segmento.

Link al commento
Condividi su altri siti

Semplicissimo.

Non funziona perché hai usato due volte il merker M50.3.

Se vuoi separare i comandi su due segmenti devi creare un terzo segmento nel quale appoggi il fronte di salita del pulsante, e utilizzare poi questo merker nei segmenti successivi.

Poi, il sistema che a me piace di più per fare un flip-flop è il seguente:

s8no.jpg

Nel primo segmento potresti inserire un timer con funzione di filtro antirimbalzo (per esempio, tra il contatto per la rilevazione del fronte e la bobina, metti un timer ritardato alla diseccitazione con preset di 100 ms), e nel secondo segmento puoi aggiungere, rispettivamente in AND (serie) o in OR (parallelo) altri eventi per spegnere e accendere la luce.

Link al commento
Condividi su altri siti

Grazie a tutti per le vostre risposte.

Credo di aver compreso il perché non funziona, anche se qualche dubbio mi permane.

Proverò anche l'esempio di Batta.

Link al commento
Condividi su altri siti

Credo di aver compreso il perché non funziona, anche se qualche dubbio mi permane.

Nella funzione P_TRIG (così come anche nel rilevamento del fronte fatto come nel mio esempio), il merker serve per rilevare, appunto, il fronte.

Per fare questo in pratica memorizza lo stato precedente dell'ingresso.

Nel tuo primo segmento quindi il fronte funziona, perché M50.3 "si ricorda" che l'ingresso I0.4 prima era OFF.

Una volta eseguita la funzione, M50.3 memorizza lo stato dell'ingresso ON.

Ecco che nel secondo segmento non rileva più il fronte, perché ha già rilevato lo stato ON di I0.4 nel segmento precedente. E quindi non c'è un fronte di salita dell'ingresso.

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