Enrico Ghisla Inserito: 22 dicembre 2013 Segnala Share Inserito: 22 dicembre 2013 Salve a tutti sono un ragazzo che frequenta luna scuola professionale...nel tempo libero sto cercando di imparare ad usare il Plc. volevo chiedere,se io voglio creare un programma kop con una sequenza e alla fine della sequenza si deve ripetere come faccio? Grazie mille. Link al commento Condividi su altri siti More sharing options...
busanela Inserita: 23 dicembre 2013 Segnala Share Inserita: 23 dicembre 2013 Dovresti semplicemente condizionare il riavvio del ciclo con un merker utilizzato nell'ultima fase del ciclo da ripetere; se si deve ripetere una volta sola non ti serve utilizzare il controllo del fronte di salita/discesa, cosa che è invece importante se la cadenza deve essere continua. Link al commento Condividi su altri siti More sharing options...
Enrico Ghisla Inserita: 23 dicembre 2013 Autore Segnala Share Inserita: 23 dicembre 2013 quindi se io prima del merker gli do un fronte di salita mi si ripete il ciclo? Link al commento Condividi su altri siti More sharing options...
busanela Inserita: 23 dicembre 2013 Segnala Share Inserita: 23 dicembre 2013 Ci sono diverse maniere per implementare quello che chiedi: quello che ti volevo suggerire io è di inserire all'inizio del ciclo da ripetere, il contatto di un merker che si attiva quando il ciclo stesso è arrivato alla fine. In questo modo è come se tu, per esempio, schiacciassi nuovamente il pulsante che ti avvia il ciclo la prima volta; l'utilizzo del fronte, rispetto ad un set del merker in questione, ti permette ogni volta che il ciclo termina di ripartire, reimpostando lo start, cosa che invece non ti è possibile se hai effettuato un'operazione di set, che richiede invece un reset del merker di ripetizione. Più chiaro sarebbe con un esempio, ma vorrei che lo facessi tu: visto che vuoi imparare, il ragionare su questo tipo di algoritmo è un ottimo inizio. Link al commento Condividi su altri siti More sharing options...
Enrico Ghisla Inserita: 23 dicembre 2013 Autore Segnala Share Inserita: 23 dicembre 2013 eh ma non ho nessuna opportunità di provare se quello che faccio funziona non potresti allegarmi un esempio? se possibile ti ringrazio molto Link al commento Condividi su altri siti More sharing options...
Enrico Ghisla Inserita: 23 dicembre 2013 Autore Segnala Share Inserita: 23 dicembre 2013 comunque forse ho capito bisogna mettere uno special merker giusto? sm0.0 se non sbaglio Link al commento Condividi su altri siti More sharing options...
busanela Inserita: 23 dicembre 2013 Segnala Share Inserita: 23 dicembre 2013 No, anche se SM0.0 si riferisce ad un merker ad elaborazione in ogni ciclo, non è inerente a quanto a te necessario. Credo dovremmo partire dal programma che tu vuoi rendere ciclico; supponiamo che, inizialmente, esista un pulsante per far partire questo ciclo. Pigiando il pulsante (che corrisponderà ovviamente ad un ingresso del plc) le sequenze logiche del programma inizieranno a susseguirsi fino alla fine del programma stesso; se quando questo è terminato premi nuovamente il pulsante di start, i comandi verranno nuovamente eseguiti, dall'inizio sino la fine, giusto? Ecco, questo è quello che il merker (che definisci tu, per es. M10.0) ha il compito di fare alla fine del programma: in un punto idoneo attribuisci lo stato logico alto alla "bobina" di M10.0, che influenzerà il "contatto" di M10.0 posto, supponiamo, in parallelo al pulsante di start. Volutamente non ti posto nessun tipo di esempio perchè è talmente banale che farti un esempio equivarrebbe a fare il ragionamento al posto tuo. Ragiona su quanto scritto e leggi il manuale del 200, vedrai che otterrai le soddisfazioni del caso. Link al commento Condividi su altri siti More sharing options...
Enrico Ghisla Inserita: 23 dicembre 2013 Autore Segnala Share Inserita: 23 dicembre 2013 si quello li lo so però io voglio che la sequenza si ripeta senza che pigio nuovamente il pulsante Link al commento Condividi su altri siti More sharing options...
busanela Inserita: 23 dicembre 2013 Segnala Share Inserita: 23 dicembre 2013 Ma hai letto e compreso quello che ho scritto nel post #7??? Link al commento Condividi su altri siti More sharing options...
step-80 Inserita: 23 dicembre 2013 Segnala Share Inserita: 23 dicembre 2013 Ma hai letto e compreso quello che ho scritto nel post #7??? Qualcosa mi dice che l'autore del post vuole che gli si scriva il codice. Il mio consiglio è quello di provare a buttar giù qualcosa (anche su carta) sulla base di quanto Busanela ha suggerito(e mi sembra che di aiuto e pazienza ne abbia avuta sin troppa) e poi al limite si discute insieme. Continuar a chiedere la pappa pronta senza per giunta prestare attenzione a quello che si è già ottenuto mi sembra solo una inutile perdita di tempo. Link al commento Condividi su altri siti More sharing options...
Enrico Ghisla Inserita: 24 dicembre 2013 Autore Segnala Share Inserita: 24 dicembre 2013 non voglio la pappa pronta anche perchè lo sto chiedendo per imparare è che voi la fate facile perchè lo sapete usare ma io che non lo so usare non mi viene facile Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 24 dicembre 2013 Segnala Share Inserita: 24 dicembre 2013 non voglio la pappa pronta anche perchè lo sto chiedendo per imparare è che voi la fate facile perchè lo sapete usare ma io che non lo so usare non mi viene facile Guarda che tutti hanno dovuto imparare e per imparare c'è solo un mezzo: studiare e provare. Se vuoi imparare fai, poi avrai l'aiuto necessario per correggere gli eventuali errori con le relative spiegazioni. Link al commento Condividi su altri siti More sharing options...
busanela Inserita: 24 dicembre 2013 Segnala Share Inserita: 24 dicembre 2013 Imparare a programmare, dal mio punto di vista, non significa imparare a memoria le istruzioni, siano esse in linguaggio strutturato, a contatti o lista d'istruzioni, di un determinato ambiente di programmazione (Siemens, Omron, etc.): qualsiasi aiuto in linea o manuale può darti l'aiuto del caso al momento giusto. La programmazione si basa sulla smaliziazione nel risolvere le problematiche per arrivare ad un determinato fine: è questo che bisogna capire. Con ciò intendo giustificare il mio modo di operare all'interno del Forum: dare i suggerimenti atti a far innescare il ragionamento per arrivare alla conclusione è sicuramente più utile che fornire un esempio applicativo, questo ovviamente in termini didattici. Tutti quelli che si occupano di processori programmabili sono passati per il tuo stesso problema: nessuno o pochissimi hanno il privilegio di esserne stati esentati, premiati dalla loro genialità; la vera bravura sta nella modestia e nell'umiltà di capire che la pazienza, lo studio e l'impegno sono le doti che premiano chi ha la volontà di imparare. Il mio consiglio, quindi, è quello di rileggere bene le nostre discussioni, estrapolare quanto di utile possa far capire in che direzione muoversi, fare delle prove e magari postare qualche riga di programma per confrontarla con chi sa già come muoversi. Sono sicuro che la soddisfazione di essere riuscito da solo, anche se con l'aiuto del Forum o di altri, sarà sicuramente più appagante della mera copiatura di alcune istruzioni, oltre che rimanere in maniera più indelebile nella memoria. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 24 dicembre 2013 Segnala Share Inserita: 24 dicembre 2013 (modificato) I metodi più usati per fare dei cicli sono tre. 1) Quando si verifica un evento, si resetta il bit della fase attiva e si setta il bit della fase successiva. 2) Quando si verifica un evento, si setta il bit della fase successiva. I bit delle precedenti fasi rimangono ON. 3) Quando si verifica un evento, si cambia il valore di una variabile. Ogni valore di questa variabile può corrispondere ad una fase del ciclo. Supponiamo di avere due cilindri pneumatici comandati da elettrovalvole monostabili e di voler fare questo semplice ciclo: - Pulsante Start - Pistone 1 avanti - Pistone 2 avanti - Pistone 2 indietro - Pistone 1 indietro Facciamo un esempio per il metodo 1 Merker usati: M 20.0 Ciclo ON M 20.1 fase 1: avanti pistone 1 M 20.2 fase 2: avanti pistone 2 M 20.3 fase 3: indietro pistone 2 M 20.4 fase 4: indietro pistone 1 M 20.5 fine ciclo Avanzamento Fasi Ciclo - Se M20.0 è OFF e premo il pulsante di start setto M20.0 e M20.0=M20.1 (M20.0, usato in questo modo, oltre ad impedire la ripartenza della fase 1, potrebbe servire, per esempio, per segnalazione Ciclo ON) - Quando il pistone 1 arriva a finecorsa avanti, resetto M220.1=M20.1 (fase 1) e setto M20.2 (fase 2) - Quando il pistone 2 arriva a finecorsa avanti, resetto M20.2 (fase 2) e setto M20.3 (fase 3) - Quando il pistone 2 arriva a finecorsa indietro, resetto M20.3 (fase 3) e setto M20.4 (fase 4) - Quando il pistone 1 arriva a finecorsa indietro, resetto M20.4 (fase 4) e comando M20.5 (fine ciclo) Comando Elettrovalvole - EV pistone 1 comandata con fase 1, fase 2 e fase 3 - EV pistone 2 comandata con fase 3 Arresto o ripetizione ciclo Con il bit di fine ciclo puoi ora decidere se arrestare il ciclo (facendo un reset di M20.0), oppure ripetere il ciclo settando di nuovo M20.1. Modificato: 24 dicembre 2013 da Giuseppe Signorella Link al commento Condividi su altri siti More sharing options...
busanela Inserita: 24 dicembre 2013 Segnala Share Inserita: 24 dicembre 2013 L'esempio del ciclo "L" fatto da Flavio è il migliore compendio a quanto da me descritto nel messaggio #7, tralasciando gli errori di battitura inerenti le descrizioni delle memorie utilizzate nell'esempio. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 24 dicembre 2013 Segnala Share Inserita: 24 dicembre 2013 Eh già, i soliti maledetti errori di battitura. Il pranzo era pronto, la moglie chiamava, e non ho riletto Ma penso che l'amico Enrico possa capire ugualmente. Siamo passati da una descrizione più generica come quella del tuo post #7 a una che descrive passo per passo una semplice sequenza. A questo punto, mancherebbe solo di scrivere il codice. Ma ora aspettiamo un po' di farina del suo sacco. Link al commento Condividi su altri siti More sharing options...
Giuseppe Signorella Inserita: 24 dicembre 2013 Segnala Share Inserita: 24 dicembre 2013 Ho coretto gli errori di battitura, spero che nel modo in cui lo fatto sia comprensibile. Link al commento Condividi su altri siti More sharing options...
step-80 Inserita: 24 dicembre 2013 Segnala Share Inserita: 24 dicembre 2013 Giuseppe, ma tu non eri calabrese? No perchè hai "coretto" gli errori di Flavio ma chi "coregge" i tuoi? Link al commento Condividi su altri siti More sharing options...
batta Inserita: 24 dicembre 2013 Segnala Share Inserita: 24 dicembre 2013 Grazie Link al commento Condividi su altri siti More sharing options...
busanela Inserita: 24 dicembre 2013 Segnala Share Inserita: 24 dicembre 2013 Mi sa che qualcuno ha già cominciato a brindare in anticipo le prossime feste! Tanti auguri di buon Natale a tutta la gente del Forum!! Link al commento Condividi su altri siti More sharing options...
step-80 Inserita: 24 dicembre 2013 Segnala Share Inserita: 24 dicembre 2013 (modificato) Tanti auguri anche a voi... Sentite questa che mi sono appena inventato: Sapete qual' è l'aperitivo piu bevuto dagli amici di PLC Forum?? Il san BITter!!! Modificato: 24 dicembre 2013 da step-80 Link al commento Condividi su altri siti More sharing options...
busanela Inserita: 24 dicembre 2013 Segnala Share Inserita: 24 dicembre 2013 L'avevo detto io: chiudete l'armadietto degli alcolici! Link al commento Condividi su altri siti More sharing options...
step-80 Inserita: 24 dicembre 2013 Segnala Share Inserita: 24 dicembre 2013 Mi sto solo concedendo un aperitivo con un buon bicchiere di valpolicella Tommasi,ma la quantità è tale da non rendermi 'storto' Però,che buono.. Link al commento Condividi su altri siti More sharing options...
step-80 Inserita: 27 dicembre 2013 Segnala Share Inserita: 27 dicembre 2013 Volevo approfittare di questa discussione per ringraziare per primo Batta ( ma anche altri utenti) perchè con il suo post riguardante i cicli mi ha aperto un nuovo mondo... Puó sembrare stupido ma fino ad ora per risolvere automazioni in sequenza ricorrevo a tecniche fra le più disparate, delle quali poi non ero mai convinto del tutto. Grazie al suo post ho cominciato a macinare e dopo qualche prova sono arrivato alla soluzione, che per me non era cosi scontata. Grazie Batta, grazie di cuore a te e a tutti gli altri! Approfitto per chiedere una cosa: sarebbe sbagliato come ragionamento invece di settare/resettare un bit o scrivere in una variabile, scrivere in una variabile di tipo 'string' ? Per esempio,riprendendo quello di Batta sui cilindri, se la variabile string "fase" è 'in attesa' e premo start la variabile "fase" diventa 'uscita cilindro 1'; al finecorsa cilindro 1 la variabile "fase" diventa ' rientro cilindro 1' e cosi via. È sbagliato come ragionamento? Ringrazio ancora Matteo Link al commento Condividi su altri siti More sharing options...
batta Inserita: 27 dicembre 2013 Segnala Share Inserita: 27 dicembre 2013 Per esempio,riprendendo quello di Batta sui cilindri, se la variabile string "fase" è 'in attesa' e premo start la variabile "fase" diventa 'uscita cilindro 1'; al finecorsa cilindro 1 la variabile "fase" diventa ' rientro cilindro 1' e cosi via. È sbagliato come ragionamento? L'utilizzo di una variabile è uno dei tre metodi da me citati, con la differenza che si usa, di solito, una variabile di tipo BYTE o INT. Per passare da una fase all'altra si cambia il valore della variabile, solitamente lasciando numeri liberi per poter aggiungere altre fasi intermedie. Per esempio, il ciclo con i due pistoni potrebbe diventare: - Con pressione del pulsante start, se Step = 0, caricare Step = 5 - Se Step = 5, con arrivo a finecorsa avanti pistone 1 caricare Step = 10 - Se Step = 10, con arrivo a finecorsa avanti pistone 2 caricare Step = 15 - ecc. Poi, per l'attivazione dei comandi, si possono fare delle semplici comparazioni. Se utilizzi una variabile stringa, devi fare i confronti tra stringhe invece che tra semplici interi, complicandoti inutilmente la vita. Unico vantaggio sarebbe un valore della stringa che è già indicativo della fase in corso. Per risolvere usando una variabie INT, basta farsi una tebellina con la corrispondenza valore variabile = nome fase. Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora