Vai al contenuto
PLC Forum


Rele passo passo, voi come lo realizzate?


G.esse

Messaggi consigliati


Certo che sei riuscito a complicare non poco una cosa semplice 😉

 

In ladder, il sistema che mi piace di più è il seguente:

            
     Pulsante              FS_Pulsante  
--------|p|--------------------( )

    FS_Pulsante         PassoPasso            PassoPasso
--------| |----------------|/|--------+------------( )
                                      | 
    FS_Pulsante         PassoPasso    |
--------|/|----------------| |--------+

 

Link al commento
Condividi su altri siti

8 ore fa, batta ha scritto:

Certo che sei riuscito a complicare non poco una cosa semplice 😉

 

In ladder, il sistema che mi piace di più è il seguente:

            
     Pulsante              FS_Pulsante  
--------|p|--------------------( )

    FS_Pulsante         PassoPasso            PassoPasso
--------| |----------------|/|--------+------------( )
                                      | 
    FS_Pulsante         PassoPasso    |
--------|/|----------------| |--------+

 

Sinceramente fatico più con questo ladder, consideriamo due cicli cpu con pressione pulsante.

Primo ciclo passo passo rimane su grazie al fronte.

Il secondo ciclo per rimanere su legge lo stato del ciclo precedente di passo passo e si autoritiene? Un nuovo fronte p determina la caduta di out passo passo?

 

Modificato: da G.esse
Link al commento
Condividi su altri siti

Ci sono diversi metodi, il risultato non cambia al limite uno può essere più facile da identificare.

A me non dispiace usare una funzione, la richiami con un fronte e la utilizzi in  più punti.

Quella del contatore mi sembra complicata e senza senso.

Link al commento
Condividi su altri siti

Mamma mia se ti sei complicato la vita, ci sono altri 1000 modi per fare un Flip Flop, basta usare la logica, ma fatto con il contatore non si può guardare.

 

 

9 ore fa, batta ha scritto:

In ladder, il sistema che mi piace di più è il seguente:

            
     Pulsante              FS_Pulsante  
--------|p|--------------------( )

    FS_Pulsante         PassoPasso            PassoPasso
--------| |----------------|/|--------+------------( )
                                      | 
    FS_Pulsante         PassoPasso    |
--------|/|----------------| |--------+

é un segmento che devi capire una volta solo, poi è sempre uguale, è a rappresentazione dell'istruzione XOR. Secondo me è il metodo più elegante per fare un Flip Flip, in testo strutturato resta una sola riga a parte il fronte bello pulito, infatti è una cosa che ho copiato a @batta e che usa anch'io.

Link al commento
Condividi su altri siti

14 minuti fa, acquaman ha scritto:

Mamma mia se ti sei complicato la vita, ci sono altri 1000 modi per fare un Flip Flop, basta usare la logica, ma fatto con il contatore non si può guardare.

 

 

é un segmento che devi capire una volta solo, poi è sempre uguale, è a rappresentazione dell'istruzione XOR. Secondo me è il metodo più elegante per fare un Flip Flip, in testo strutturato resta una sola riga a parte il fronte bello pulito, infatti è una cosa che ho copiato a @batta e che usa anch'io.

Intendi due righe in scl? Non saprei a me il contatore piace sono due numeri che mi restituiscono un uscita alta al corrispondente numero ma a voi programmatori proprio non va giù 🤣

Link al commento
Condividi su altri siti

11 ore fa, acquaman ha scritto:

cattura.thumb.jpg.6e665292eee1d38fb8d0a35cb0cace94.jpg

Si

Forse un po troppo per me l scl , sto svolgendo degli esercizi su un libro ; ad esempio questo che ho allegato con due foto credo di averlo risolto sfruttando la tecnica di misura di tensione concatenata -L1 +L2  ecc ecc e l ho riportata come combinazione nel secondo segmento. L esercizio può essere risolto così? Non credo ci siano altre combinazioni 

20221115_211651.jpg

20221115_211628.jpg

Link al commento
Condividi su altri siti

13 minuti fa, 84paolo ha scritto:

Sul punto 2 c'é segnato se ogni rubinetto é aperto singolarmente fa accendere la segnalazione. come lo hai fatto tu si accende anche se ne apri 2 o 3

Non ho capito, però ho notato che dice se piu di un rubinetto e aperto si deve accendere solo la q0.0 quindi va aggiunto un contatto negato di q0.0 in serie a ogni segmento del segmento 1.

Intendevi questo?

Modificato: da G.esse
Link al commento
Condividi su altri siti

12 ore fa, leleviola ha scritto:

Quella del contatore non capisco cosa abbia di controindicato, è che sprechi un contatore, tutto li

Sarà perché ho iniziato a programmare quando ottimizzare le risorse era indispensabile, ma trovo assurdo usare un contatore per un flip-flop.
Come prendere un camion per spostare 20 chili di ghiaia.

Oltre allo spreco di risorse, è anche inutilmente macchinoso.
Sono d'accordo con @acquaman: un passo passo fatto con un contatore, non si può guardare.
Ci sono altri sistemi che richiedono solo un bit di appoggio, perché usare un contatore?

Non è una critica nei confronti di @G.esse, lui sta imparando e chiede consigli. Diamogli i consigli giusti.

Link al commento
Condividi su altri siti

12 ore fa, G.esse ha scritto:

L esercizio può essere risolto così? Non credo ci siano altre combinazioni.

A parte ciò che ti ha fatto notare Paolo (se è aperto più di un rubinetto non si deve accendere la lampada del rubinetto aperto, ma solo quella di allarme), ancora prima di guardare la logica, ti dico questo: abituati assolutamente, subito, immediatamente, senza perdere un solo secondo, ad assegnare i nomi alle variabili!
Se io fossi un insegnante, un programma con "Tag_1", "Tag_2", "Tag-3", lo giudicherei insufficiente, senza nemmeno perdere il tempo di esaminarlo.

Ti assicuro che la mia non è cattiveria, ma se parti con brutte abitudini rischi di non perderle più.

 

Tornando all'esercizio, a parte non far accendere la spia del singolo rubinetto se sono aperti anche altri rubinetti, è corretto.

Questo sistema però va bene solo fino a quando hai poche cose (rubinetti, nel tuo caso) da controllare.
Pensa a cosa diventerebbe il programma fatto a logica booleana se i rubinetti fossero 10, o 20.

 

In questo caso, si potrebbe adottare una diversa strategia.

- Utilizzi una variabile per contare i rubinetti aperti.

- Azzeri la variabile.
- Successivamente, per ogni rubinetto aperto incrementi la variabile di una unità.

- A questo punto sai quanti rubinetti aperti ci sono.

 

 

Link al commento
Condividi su altri siti

42 minuti fa, batta ha scritto:

 

Tornando all'esercizio, a parte non far accendere la spia del singolo rubinetto se sono aperti anche altri rubinetti, è corretto.

Questo

Basta utilizzare in serie alle bobine dei singoli rubinetti il contatto negato del out q0.0 per risolvere giusto? Grazie dei consigli li metterò in pratica.

Link al commento
Condividi su altri siti

Condivido @batta per i reference, i tag devono essere più precisi possibili come pure i commenti (nel segmento 2 vedo che hai scritto > in realtà e =>).

Sugli i/o a volte è anche utile specificare quando si ha un 0 oppure un 1.

Come esercizio cerca di trovare altre soluzione alla rilevazione di due o più.... 

 

Link al commento
Condividi su altri siti

13 ore fa, G.esse ha scritto:

Forse un po troppo per me l scl

Il mio era solo un esempio di com'è il il segmento postato da Batta in scl.

Il flip flop è secondo me l'esercizio principale da dare ad un neofita per fa apprendere bene il funzionamento del ciclo del plc, utilizzo dei fronti di salita e cicli scansione, oltre ad imparare a ragionare con la logica digitale.

Se vuoi un consiglio prima di risolvere quegli esercizi banali del libro, senza guardare l'esempio di Batta, fatti un tuo flip flop solo con dei bit, postacelo che lo analizziamo insieme ma vedrai che il problema non è banale.
Quando mi è capitato di tenere un corso di plc, ho lanciato una sfida che chi lo risolveva con il minor numero di istruzioni e e memorie, ed è ancora la sfida che lancio ad ogni stagista che ciclicamente arriva in ufficio.

Link al commento
Condividi su altri siti

1 ora fa, G.esse ha scritto:

Basta utilizzare in serie alle bobine dei singoli rubinetti il contatto negato del out q0.0 per risolvere giusto? Grazie dei consigli li metterò in pratica.

Sì, giusto.
Visto poi che le uscite delle spie dei singoli rubinetti sono tutte nello stesso segmento, puoi anche usare il contatto dell'uscita una sola vola, mettendolo all'inizio, e facendo dopo le diramazioni.

 

Poi, al di là del fatto che funzioni ugualmente, io preferisco non usare le uscite come memorie interne.
Per esempio, potresti mettere il segmento della spia di allarme prima del segmento con le spie dei rubinetti.
Dove comandi l'uscita della spia di allarme metti anche un'altra bobina. In questa seconda bobina, se rispetti l'ordine che ti ho suggerito, potresti usare anche una variabile locale, per esempio #tmpAllarme, ed usare questa variabile locale per non far accendere le altre spie.
Aggiungi un'istruzione, ma eviti di usare l'uscita sparsa in giro per il programma.
Ripeto, usare l'uscita (che poi, in realtà, non è l'uscita fisica ma l'immagine dell'uscita) non è sbagliato, qui entrano in ballo preferenze personali.
Io sono abituato a fare largo uso di variabili di appoggio. Nei miei programmi è raro trovare un ingresso richiamato più di una volta, ed ancora più raro trovare uscite richiamate più di una volta.
Ma su questo troverai pareri contrastanti.

Link al commento
Condividi su altri siti

1 ora fa, acquaman ha scritto:

Il mio era solo un esempio di com'è il il segmento postato da Batta in scl.

Pensa che nemmeno me lo ricordavo. E devo dire che lo scriverei con una piccola modifica:

#PassoPasso := #PassoPasso XOR (#Pulsante AND NOT #FpPulsante);
#FpPulsante := #Pulsante;

Le parentesi in realtà non servono, ma rendono più chiara l'interpretazione.

Link al commento
Condividi su altri siti

6 hours ago, G.esse said:

Basta utilizzare in serie alle bobine dei singoli rubinetti il contatto negato del out q0.0 per risolvere giusto?

Ni. Il calcolo dell'uscita q0.0 viene effettuato dopo aver già calcolato le uscite q0.1 q0.2 q0.3.

Questo vuol dire che il contatto di q0.0 negato verrà "sentito" solo al prossimo ciclo di esecuzione.

In sostanza per un solo ciclo le uscite q0.1 q0.2 q0.3 potrebbero risultare accese assieme a q0.0

Link al commento
Condividi su altri siti

9 ore fa, batta ha scritto:

Pensa che nemmeno me lo ricordavo. E devo dire che lo scriverei con una piccola modifica:

#PassoPasso := #PassoPasso XOR (#Pulsante AND NOT #FpPulsante);
#FpPulsante := #Pulsante;

Le parentesi in realtà non servono, ma rendono più chiara l'interpretazione.

Se ne impara sempre di nuove, grazie batta,

è che con l'andar del tempo si perde sempre di più l'uso delle istruzioni basilari come si faceva un tempo tipo XOR

che io tra l'altro uso in altri contesti, l'uso di tali istruzioni daltronde dipende molto dalle abitudini e dalla propria provenienza formativa

Link al commento
Condividi su altri siti

5 ore fa, Claudio F ha scritto:

Ni. Il calcolo dell'uscita q0.0 viene effettuato dopo aver già calcolato le uscite q0.1 q0.2 q0.3.

Questo vuol dire che il contatto di q0.0 negato verrà "sentito" solo al prossimo ciclo di esecuzione.

In sostanza per un solo ciclo le uscite q0.1 q0.2 q0.3 potrebbero risultare accese assieme a q0.0

Basta invertire i segmenti?Significa che per un ciclo plc non so quanti ms il programma sarà sbagliato ma non rilevabile da occhio umano penso. Ma immagino in altri contesti non sia sottovalutabile

Link al commento
Condividi su altri siti

Io mi creerei un FC come il seguente

image.png.a795e0893a80d178dd96823424f48e52.png

 

Poi quando devo fare il passo passo lo richiamo tutte le volte che mi serve nel seguente modo

 

image.png.217c1f4ff5a2b4b474224bf03162842e.png

 

Come vedete ad ogni fronte di salita del pulsante cambia di stato

image.png.3ec59f686900a9da74753dac5e507cf4.png

 

Ritengo questa versione molto più leggibile ed aderente alla programmazione strutturata

 

 

Link al commento
Condividi su altri siti

@ifachsoftware è quello che ho scritto io, volevo vedere se ragionandoci riusciva farlo lui...

@leleviola io ragiono ancora con or and xor ecc per via che ho sempre progetto con TTL e CMOS e questo era il modo operandis, poi si cercava anche di razionalizzare le porte.

Ora con plc sembra più performanti secondo me si scrive il programma senza pensare all'ottimizzazione.

Una volta un contatore o timer ci si pensava due volte se era indispensabile utilizzarlo...... 

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