Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Funzionamento Alternato Con Plc


Messaggi consigliati

Inserito:

Salve a tutti,

ho scritto poche volte in questo forum, premetto che sono agli inizi con il PLC.

Di seguito vi spiego quello che vorrei realizzare con il siemens-s7.

Ho due pompe, con un pressostato.

Il pressostato comanda le pompe che funzioneranno alternate

ovvero ad il primo intervento del pressostato va la pompa 1, al secondo intervento la pompa 2, al terzo intervento di nuovo la pompa 1 e così via...

Son riuscito a realizzare l'automazione utilizzando un contaore CTU che

a 0 mi fa andare la pompa 1

ed a 1 mi fa andare la pompa 2.

In PV quindi se ho capito bene mi è sufficente scrivere 2,

perchè il reset R l'ho impostato quando è >=1.

Giusto? :D

Ora mi stavo chiedendo quali altre vie esiestono per realizzare questa "semplice" automazione...

per la testa me ne passano tante ma non avendo esperienza mi rimane difficile metterle in pratica...

Ringrazio anticipatamente a chi mi aiuterà a capire altre soluzioni... grazie


Inserita:

La soluzione più semplice è realizzare un flip - flop (bistabile) software. Hai le due uscite Q1 e Q2; ogni volta che riconosci il fronte del pressostato fai Q2 = Q1 e Q1 = -Q1 (Q1 = Q1 negato). Se vuoi essere preciso fino in fondo memorizzi lo stato di Q1 e Q2 in una memoria ritentiva, in questo modo, anche spegnedo il PLC, alla ripartenza si ha sempre l'ultimo stato di lavoro.

La sicurezza che le due pompe non sono comandate contemporaneamente te la da il funzionamento del PLC: le uscite fisiche sono aggiornate tutte in contemporanea alla fine del ciclo di scansione.ì, quando vengono copiati i registri immagine.

Inserita: (modificato)

Grazie Livio per la risposta.

L'ho riletta diverse volte ed ho "intuito" che è la soluzione migliore.

il mio problema è che sono un ragazzo ancora alle prime armi in questo "mondo", e non riesco a buttare giù le due righe che mi hai spiegato... faccio fatica a capire cosa intendi per fronte... Mi rimane davvero difficile capire come potrei confrontare le uscite... che comandi utilizzare...

Non è che qualcuno riesce ad allegarmi 2 righe od un'immagine di questo programmino (incluso il discorso della memoria ritentiva).

il mio plc è un siemens s7

grazie mille a chi mi aiuterà a capire

Modificato: da _LORIS_
Inserita:

Se usi S7_200 ti basta copiare (quasi) quello che scritto. Leggiti bene il manuale nella parte relativa alle istruzioni, oppure consulta l'help in linea. Puoi benissimo provare con il KOP, così hai la visione dei contatti.

Per fare Q2 = Q1 inizi il ramo con Q1 e lo termini con Q2 senza niente in mezzo. Per fare Q1 = -Q1 devi usare il simbolo del contatto negato (quello con le due sbarrette verticali attraversate da una diagonale) e questo contatto negato sarà Q1, poi termini con la bobina Q1.

Per il fronte c'è l'apposita istruzioine. Per fronte si intende il momento in cui un contatto cambia di stato: da aperto diventa chiuso o viceversa; opure, usando la corretta terminologia booleana, quando falso (0) diventa vero (1) o viceversa. Quindi nel momento che il tuo pressostato chiude la condizione per comandare le pompe diventa vera.

Prova a mettere giu il programmino, a cui dovrai aggiungere anche la condizione che le pompe sono comandate solo fintanto che il pressostato è chiuso.

Inserita:

Forse una cosa tipo questa:

Network 1

LD I0.0 //Pressostato

EU

= M0.0

Network 2

LD M0.0

AN M0.2

S M0.1, 0

Network 3

LD M0.0

A M0.2

R M0.1, 0

Network 4

LD M0.1

= M0.2

Network 5

LDN M0.2

= Q0.0 //Pompa 1

Network 6

LD M0.2

= Q0.1 //Pompa 2

Inserita:

Io ragazzi è tutta la mattina che ci sbatto la capoccia :lol: ho collegato anche la CPU per rendermi conto.

ma non mi spiego una cosa:

nel programma KOP, inserisco il contatto aperto di I0.0 successivamente in serie il contatto aperto P (transazione) che infine entrambi mi comandano l'uscita Q0.0.

Mi collego online e quando gli do l'igresso, nel PC la linea blu che simula l'andamento della "corrente" arriva fino al contatto P e non l''oltrepassa... quindi la bobina non mi si abilita.

eppure dovrebbe farlo quando chiudo l'interruttore I0.0 (passaggio stato da OFF-ON) :unsure:

non funzionandomi questo, non riesco andare avanti e non capisco perchè...

qualcuno sa dirmi cosa sbaglio?

p.s. x Dago

con l'AWL ho difficoltà perchè sono un elettricista quindi ho copiato il tuo esempio e convertito con il Microwin in KOP, così ci capiamo :)

però non mi risulta funzionante... riproverò

P.S. x Livio

mi rimane davvero difficile capire come ragionate, ad ogni modo son testardo e cercherò di capire, eventualmente se proprio non ci riesco ti chiedo qualche "indizio" in più... per buttare giù questo schemino

il fatto è che non "ci sono dentro" a questo modo di ragionare. Riguardo le istruzioni del PLC, si le fondamentali le conosco ed ho studicchiato discretamente il PLC, il problema ora è mettere in pratica la teoria :P

Inserita:

Loris questo è il listato del programmino. L'ho scritto in AWL perchè è più facile copiarlo. Ribatti queste poche righe e poi, se vuoi, puoi rivedertelo in KOP se ti è più facile.

Sul fronte pressostato eseguo settaggio memorie uscite

LD I0.0

AN SM0.1

EU

A M0.0

= M0.1

NOT

= M0.0

Se pressostato chiuso copio memorie sulle uscite

LDN SM0.1

A I0.0

LPS

A M0.0

= Q0.0

LPP

A M0.1

= Q0.1

Se pressostato aperto resetto uscite

LDN SM0.1

AN I0.0

R Q0.0, 2

I0.0 ==> ingresso pressostato

SM0.1 Bit di sistema ==> 1 solo al primo ciclo serve per inizializzare

M0.0 e M0.1 ==> memorie di appoggio per uscite

Q0.0 e Q0.1 uscite per comando pompe.

Inserita: (modificato)

Grazie Mille Livio, Lunedì ci rimetto le mani.

La mattinata di oggi, praticamente l'ho dedicata a capire che l'uscita nel video del PC non diventava blu perchèla transazione positiva P (off-on), fa passare la corrente solamente per un ciclo di scansione (quindi a video non si accende in quei millesimi di secondi) ed io erroneamente credevo che l'uscita non era stata abilitata

... tutta la mattinata per capire questo!!!!!!! :(

vabbè, però almeno l'ho capito ora (spero di aver dedotto la cosa giusta).

saluti a tutti buon w&

Modificato: da _LORIS_
Inserita:

Maggiori difficoltà iniziali maggiore esperienza futura

La testardaggine non può che aiutarti.

Buon lavoro

Inserita: (modificato)

Livio ho caricato il programma ma le pompe non invertono mai il funzionamento alternato con l'intervento del pressostato, il tuo ragionamento l'ho intuito... ora vedo di capire dove è l'errore.

ecco l'immagine del tuo programma allegato in kop

Modificato: da _LORIS_
Inserita:

Forse non ho capito il problema, comunque questo dovrebbe funzionare.

post-200020-0-74139500-1379606917_thumb.

Inserita: (modificato)

Se I0.0 è Off le pompe non devono funzionare. I0.0 rappresenta l'ingresso del pressostato. Si considera che il pressostato sia chiuso quando il livello è tale da richiedere l'intervento della pompa. Se invece la logica del pressostato è negata devi usare il contatto negato (e quello diretto dove c'è quello negato); anche il fronte dovrà essere il fronte negativo.

Se non si subordina l'intervento della pompa al livello del liquido la pompa sarà sempre inserita.

In effetti il programma sembra funzionare correttamente. I0.0 è aperto ed il ramo del reset è chiuso, mentre è aperto quello del set. Prova a simulare la chiusura di I0.0 e vedrai che gli stati cambiano

Modificato: da Livio Orsini
Inserita:

okma le pompe non invertono il funzionamento, al primo intervento del pressostato deve andare la pompa1 al secondo intervento la pompa2 al terzo intervento riprende il ciclo...

questo con il PLC attaccato non lo fa...

comunque ritento ci voglio arrivare...

P.S.

utilizzando il contattore chje conta fino 2 invece mi funzionava... non è il massimo ragionare come avevo fatto io?

Inserita:

Prova a modificare il primo segmento in questo modo:

LDN SM0.1

A I0.0

EU

LPS

A M0.0

S M0.1, 1

R M0.0, 1

LPP

A M0.1

S M0.0, 1

R M0.1, 1

Io il programmino l'ho buttato giu senza quasi pensarci, a livello d'idea. Il concetto che sta alla base è che all'arrivo dell'impulso si cambia lo stato delle pompe, quindi se M0.0 è on diventa Off e viceversa, con M0.1 che è esattamente il suo negato.

Inserita: (modificato)

Ok Livio Grazie, ora non ho il cavetto per provarlo e l'ho convertito in KOP per poi provarlo appena possibile.

Non mi convince moilto la serie dei due contatti che hai messo (in teoria il segnale, essendo aperti, non passa mai) forse c'è un errore, l'ho evidenziato in rosso...

Modificato: da _LORIS_
Inserita:

Le due memorie M0.0 e M0.1 devono essere opposte di stato, in altri termini se una è On l'altra è OFF. Ovviamente al momento della partenza qualcuno deve settare e resettare per avere l'esatta configurazione. Chi lo fa?. Il modo corretto è inserire un primo segmento che con SM0.1 on effettua le operazioni necessarie alla partenza. Le puoi fare direttamente nel segmento oppure usare la tecnica canonica: Il primo segmento con SM0.1 = ON chiama SBR0 che è la sub destinata all'inizializzazione.

Quindi:

LD SM0.1

Call SBR0

dove scriverai, per esempio

LD SM0.1

S M0.0, 1

R M0.1, 1

  • 1 month later...
Inserita: (modificato)

Scusate il ritardo, in questi giorni ho rimesso le mani sul programma che mi ha scritto Livio.

Ragazzi nulla da fare non funziona... boh....

Ho aperto una nuova discussione con titolo più idoneo...

se qualcuno riesce a farmi capire perchè per quella applicazione è meglio utilizzare un flip-fop software piuttosto che ne un contatore glie ne sarei grato (magari scrivendomi un programma funzionante in modo che possa capirlo).

Io non ci riesco... mi sono impegnato tanto però heeheheh

quello che ho dedotto io fin'ora che con il contatore funziona e non da problemi,

con il flip-flop o altri sistemi non si riesce a realizzare e forse se ci si riesce diventa un programma molto più lungo e difficile da concepire....

complicarsi la vita?

perfavore ditemi che ne pensate, ecco la discussione che ho aperto:

%%%

***********************

E' controproducente oltre che vietato creare discussioni uguali o simili, si rischia di ottenere risposte sparpagliate oltre alla inutile perdita di tempo da parte dei visitatori per leggere 2 volte le stesse cose. L'altra discussione e' stata cancellata

Modificato: da NULL
Inserita: (modificato)

Il programma di Livio non funziona perchè ti rimane sempre pilota la pompa 1.

Prova questa soluzione

Network 1 // Titolo del segmento

// Commento del segmento

LDN Q0.0

AN Q0.1

AN M0.1

EU

S M0.1, 1

= M0.2

Network 2

LDN Q0.0

AN Q0.1

A M0.1

A M0.2

EU

R M0.1, 1

Network 3

LDN M0.1

A I0.0

= Q0.0

Network 4

LD M0.1

A I0.0

= Q0.1

Io comunque preferisco la soluzione con il contatore anche perchè quando cominci ad avere 3 o più pompe diventa più difficile (però non devi usare un contatore ma incrementare una VW)

Modificato: da MarcoEli
Inserita:

Scaricati l'esempio allegato, e vedi se ti piace.

Se poi vuoi giocare un po', invece del flip-flop potresti gestire due contaore (uno per pompa), magari incrementando una doppia word ogni secondo quando la pompa è in funzione (ne avresti per circa 68 anni di funzionamento), e col comando di start far partire la pompa che ha lavorato meno.

Questo è il sistema che io adopero abitualmente, utile soprattutto quando ci sono più di due motori.

Inserita:

prova in questo modo, dovrebbe funzionare!..........ciao.

LD I0.0 // pressostato

EU

= M0.0

LD M0.0

AN Q0.1

JMP 1

LD M0.0

S Q0.0, 1 // compressore1

R Q0.1, 1

JMP 2

LBL 1

S Q0.1, 1 // compressore2

R Q0.0, 1

LBL 2

Inserita: (modificato)

Allora ragazzi se qualcuno ha voglia di rispondermi provo a fare altre domande.

Io per realizzare un funzionamento di questo tipo ho utilizzato un contatore C0

praticamente metto +2 in PV e poi faccio le mie comparazioni

==0 mi fa andare una pompa

e ==1 mi fa nadare l'altra.

Scopo della mia discussione era capire sela mia soluzione è la "migliore" e confrontarmi appunto con voi.

Non ho capito bene perchè alcuni mi hanno detto che non è il massimo la soluzione che ho adottato...

che svantaggi ha? :blink:

Dunque, i tre programmini che cortesemente mi avete inserito li ho caricati tutti ma al momento mi funziona solo quello di batta,

tuttavia mi rimane abbastanza difficile da comprendere (c'è un bel raggiro), ma funziona.

la mia soluzione con il contatore, sarà perchè l'ho concepiata io... ma mi rimane più semplice da capire.

sarei curioso di capire anche la soluzione che ha inserito ixa con i JUMP ma caricandolo mi da un errore di segmento, forse c'è un errore che non son riuscito a capire in questa parte:

LBL 1

S Q0.1, 1 // compressore2

R Q0.0, 1

e quindi non son riuscito a provarla on-line

poi mi avete detto in diversi che non devo usare contatore...

(contaore è la stessa cosa? perchè ho letto anche contaore...)

e devo incrementare una VW o doppia word...

cioè?

che soluzione è migliore per ottenere un programmino semplice da leggere,

sicuro affidabile anche per più di 3 pompe...

scusate l'inesperienza e grazie ancora

Modificato: da _LORIS_
Inserita:

il programmino l'ho testato ora e funziona!

LD I0.0 // pressostato

EU

= M0.0

LD M0.0

AN Q0.1

JMP 1

LD M0.0

S Q0.0, 1 // compressore1

R Q0.1, 1

JMP 2

LBL 1

S Q0.1, 1 // compressore2

R Q0.0, 1

LBL 2

con la funzione copia/incolla mettilo in un unico segmento....vedrai che funge!

la soluzione più semplice secondo me, è decisamente quella del batta.

per la gestione, poi, di 3;4;5......compressori beh!,credo si debba strutturare un programma diverso e che consideri altri aspetti.

Inserita: (modificato)

Prima di tutto se vuoi un programmino affidabile e sicuro devi aggiungere qualche altro dato come l'avaria delle pompe e il conteggio delle ore.

Tu sei partito con il chiedere la soluzione per 2 pompe e quella ti è stata data, ovviamente è di versa se hai più di due pompe.

Impara comunque che non esistono programmi giusti o sbagliati, ognuno vede ed interpreta a suo modo la soluzione del problema.

Le soluzioni che ognuno di noi ti ha proposto sono derivate dalla propria esperienza personale di ognuno.

Comunque hai ragione nel mio programma c'era un imprecisione, provalo adesso.

Modificato: da MarcoEli
Inserita:

per comprendere meglio "il raggiro del batta", guarda sul manuale siemens la funzione di OR esclusivo.

Inserita:

sono d'accordo marco!

ognuno di noi programma in modo differente, la cosa fondamentale è: massima attenzione alla sicurezza, soprattutto delle persone!

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