Vai al contenuto
PLC Forum


Plc A Scansione Asincrona - qualche consiglio?


Messaggi consigliati

Inserito:

Salve a tutti.

Abbiamo da poco (ri)messo in piedi un braccio manipolatore, originariamente cablato solo pneumaticamente.

Programmandolo tramite un Modicon, però, abbiamo difficoltà dovendo introdurre una quantità sconfinata di AND e OR per impedire che il programma si 'inceppi' trovando stati ripetuti (tipo: abbassa il braccio, o apri la pinza).

Ovviamente il SEQUENZIATORE LOGICO risolve il problema, ma serve un PLC a scansione asincrona.

Qualcuno può darci qualche indicazione?

Grazie a tutti in anticipo.


Inserita:

Ciao,

Io uso Siemens S7-300 e non Modicon, la prima cosa che io farei e di solito faccio quando alcune parti di programma non devono essere sempre svolte, divido il programma in FB o FC e le chiamo quando ne ho bisogno, in poche parole il PLC è sincrono ma sono io che lo rendo asincrono con delle chiamate a pezzi di programma che mi servono in quel momento.

Inserita:

scusa che cosa intendi come "scansione asincrona"?

Personalmente da quello che ho capito se hai fatto un programma in combinatorio con un plc puoi anche farlo facendo una sequenza logica.

Comunque ti do un consiglio che copio da gente molto piu' esperta di me e che spesso dice "DATE I DATI" altrimenti senza informazioni non ti si puo' aiutare.

Inserita:

Giannit:

puoi esemplificare? credo di aver capito cosa intendi, ma desidero qualche dettaglio.

STEU:

scusa, hai ragione, mi sono affrettato a esporre il problema.

Abbiamo elaborato un programma che muove il braccio meccanico. Cose tipo:

1. apri la pinza

2. abbassa il braccio

3. chiudi la pinza

4. alza il braccio

5. routa

6. abbassa il braccio

7. apri la pinza

Ora, alcune posizioni, ovviamente, si ripetono (tipo: pinza aperta), e in un programma scritto per un PLC a scansione sincrona sono costretto ad introdurre dei controlli su tutti gli input per capire 'in quale posizione' mi trovo realmente, prima di poter eseguire il passo successivo.

Abbiamo studiato che il "sequenziatore" è un metodo di programmazione che, se eseguito da un PLC a scansione asincrona, non richiede il controllo di tutti gli input, perché legge gli input ed esegue un passo alla volta, rileggendo nuovamente gli input al passo successivo (quello che si farebbe con degli interrupt in elettronica).

Questo è proprio il caso che ci interessa.

Inserita:

Da come scrivi non credo che tu abbia tantissima esperienza , Non conosco molto bene il modicon , ma sicuramente avra' una scansione , dove inizialmente legge gli ingressi e li memorizza nella sua area di memoria , poi esegue il programma , aggiorna le uscite e ricomincia da capo.

La programmazione dei plc non centra nulla con la programmazione tipo quella dei pc in visual basic o visual c.

Comunque da quello che hai scritto hai una semplice sequenza di sette passi , all'inizio dovrai mettere tutte le condizioni iniziali del tuo manipolatore ti setti una memoria interna una volta terminato il primo movimento vai a testare il solamente finecorsa che tiserve resetti questa memoria e setti la memoria seguente, in questo caso il micro di pinza aperta, poi scendi con il manipolatore appeno l'input ti va a 1, quando hai il micro di manipolatore basso , chiudi la pinza e così via.. per tutto il ciclo.

a fine programma fai i test delle memorie di ciclo (che sono dei bit) e metti a 1 l'uscita corrispondente

Se non hai esperienza puo' sembrare difficile ma è semplicissimo se impare prorio le prime basi dei plc.

Inserita:

STEU:

ti ringrazio per il chiarimento. Effettivamente non abbiamo questa grande esperienza di programmazione PLC, e la tua riflessione sulle memorie mi ha (ci ha) aperto un nuovo scenario.

Tuttavia, la strada suggerita da GIANNIT mi sembra anche interessante.

Mi chiedo allora: posso -usando il sistema del SEQUENZIATORE LOGICO- impiegare i vostri suggerimenti con il nostro MODICON?

O devo necessariamente sviluppare un programma che impieghi le memorie o gli interrupt?

Grazie.

PS: anche se non si direbbe, la cosa diventa sempre più chiara. :-)

Matteo Montanari
Inserita:

se il programma deve fare le operazioni che hai descritto:

1. apri la pinza

2. abbassa il braccio

3. chiudi la pinza

4. alza il braccio

5. routa

6. abbassa il braccio

7. apri la pinza

è molto semplice gestirlo.

il metodo più semplice è abbinare ad ogni operazione una memoria di ciclo, per spiegare meglio, con quella condizione esegui tutte le operazioni che ti permettono di svolgere l'operazione indicata.

esempio:

fase 1 -> apri la pinza

la fase 1 inizia al momento della marcia ciclo e termina con il segnale della pinza totalmente aperta.

quindi imposti (set) ad "1" la memoria di fase 1 (apri la pinza) quando hai la pressione del pulsante di start.

con la memoria di fase 1 comandi le elettrovalvole che comandano l'apertura della pinza. (le elettrovalvole rimangono attive finchè hai la memoria di fase 1)

il sensore di pinza aperta (o i sensori) comunicano che la pinza è completamente aperta. a questo punto imposti ad "1" la memoria di fase 2 (abbassa il braccio) e rilasci (reset) la memoria di fase 1.

ora devi inserire il cliclo della fase 2, poi la fase 3, 4, ecc. ecc.

-----

in precedenza ti è stato consigliato di dividere tutto in blocchi (fc o fb) è una soluzione anche quella, dipende da come ti trovi comodo nello stendere il programma.

-----

un altro consiglio è quello di studiarti il manuale del PLC che utilizzi, in molte pubblicazioni ci sono degli esempi, magari non fanno proprio quello che serve a te, ma molto spesso ci vanno abbastanza vicino.

Inserita: (modificato)
Ovviamente il SEQUENZIATORE LOGICO risolve il problema, ma serve un PLC a scansione asincrona.

Qualcuno può darci qualche indicazione?

Un qualunque PLC potrebbe risolvere questo quesito sequenziale, c'e' solo da diterminare quale modello utilizzare in funzione del tempo ciclo richiesto dall'applicazione. Poi la sequenza sopra descritta non sarebbe correttamente cosi' definita....

Una fattibile architettura sequenziale sarebbe...

Supponiamo che la posizione di HOME (al carico pezzo) per il braccio meccanico e' in posizione bassa, pinza aperta, su posizione convogliatore, allora

Operazione braccio meccanico... 
SQ1 : carico pezzo braccio.
SQ2 : sollevamento braccio su posizione carico.
SQ3 : ruotazione braccio da pos.carico a pos. scarico.
SQ4 : discesa braccio su posizione scarico.
SQ5 : scarico pezzo braccio.
SQ6 : sollevamento braccio su pos. scarico.
SQ7 : ruotazione braccio da pos.scarico a pos. carico.
SQ8 : discesa braccio su posizione carico.

SQ1:
 Passo1 : controllo braccio in pos. home  
  M1: richiesta comando controllo braccio 
  M2: comando controllo braccio eseguito
  M3: Anomalia braccio non in home pos.( time out passo non eseguito) :break
 Passo2 : adquisizione pezzo al carico
  M1: richiesta comando riconoscimento pezzo
  M2: comando riconoscimento pezzo eseguito
  M3: Anomalia tempo scaduto riconoscimento pezzo( time out passo non eseguito) :break
 Passo3 : presa pezzo al carico
  M1: richiesta comando chiusura pinza.
  M2: comando chiusura pinza eseguita
  M3: Anomalia tempo scaduto chiusura pinza( time out passo non eseguito):break
( Il passo 3 prima di chiudere la pinza, ne poteva avere fatto un altro movimento contemporaneamente del tipo centraggio pezzo oppure bloccaggio pezzo, stop conveyor,ecc... ma lasciamo perdere..) 
SQ2:
 Passo1 : sollevamento braccio su posizione carico.
  M1: richiesta comando sollevamento braccio 
  M2: comando sollevamento braccio eseguito
  M3: Anomalia tempo scaduto sollevamento braccio( time out passo non eseguito) :break

...................... e cosi' via.

Poi, una operazione e' un insieme di sequenze, una sequenza e' un insieme di passi, un passo un insieme di movimenti, un movimento un insieme di attuatori e sensori che interagiscono su quel evento.

Una operazione puo' essere composta solo da una sequenza, una SQ puo' essere composta solo da un passo, un passo puo' essere composta solo da un unico movimento e via dicendo.

La SQ2 sara' richiesta al comando solo se la SQ1 e' stata eseguita, dello contrario il sistema segnalerebbe l'anomalia della operazione e quindi si dovra' intervenire sul guasto, ripartendo dal passo in questione.Altrimenti si risettera' il braccio alla posizione di HOME, ricomminciando da capo.... e cosi' elencando.

P.S.: M1-M2.... sono delle memorie (flags) ausiliari per il passo.....

Modificato: da Savino
Inserita:

è possibile sapere che plc stai usando????

Modicon mi sembra un po' vago.....

Inserita:

Ancora una volta mi scuso per l'approssimazione.

Modicon Micro 110CPU 612 00

programmato tramite PLC workshop32 per Modicon (DEMO) in KOP

Devo dire, per chiarire la nostra situazione attuale, che negli esperimenti iniziali è andato tutto perfettamente bene. I problemi sono iniziati quando, nello sviluppare qualche sequenza più complessa, ci siamo ritrovati con degli stati -come dire- duplicati.

Infatti i primi piccoli programmi sono stati fatti -di proposito- evitando che un dato interruttore assumesse due volte lo stesso stato.

Una volta insorti i problemi di 'ripetizione', abbiamo cercato di utilizzare un "sequenziatore logico", e questo ci ha portato a scoprire la faccenda dei PLC a scansione sincrona (o asincrona)

Inserita:
Una volta insorti i problemi di 'ripetizione', abbiamo cercato di utilizzare un "sequenziatore logico", e questo ci ha portato a scoprire la faccenda dei PLC a scansione sincrona (o asincrona)

Tutti i PLC sono macchine con delle propieta' sincroniche (gestione degl'immagine di proccesso degl'ingressi,messaggi di comunicazioni, ecc) ed asincroniche (gestione degl'immagine di proccesso delle uscite ,messaggi di comunicazioni, ecc).

Il sequenziatore logico lo ci si crea con delle memorie individuali determinate per ogni passo e sequenza.

Un sensore puo' ripettere tante volte il suo cambio di stato durante un ciclo sequenziale, ma ogni questo cambio viene identificato dalle memorie vincolate al passo-movimento per quel momento..

ifachsoftware
Inserita:

Prova a fare una ricerca nel forum con la chiave GRAFCET e ti verra' spiegato come fare per risolvere il tuo problema ...

Ciao :)

Inserita:

Ciao,

Scusa se ti rispondo solo ora, ma a mio avviso i tuoi problemi sono solo dovuti ad un errato approccio alla programmazione del PLC, io ho capito quali sono i tuoi problemi e per quello che vuoi fare tu basta strutturare bene il programma.

Devi dividere ogni operazione in subrutine e chiamarle quando nei hai bisogno, eleborando un solo pezzo di programma e non andando a verificare le altre parti.

Esempio una parte di programma ti fa il carico del pezzo, un'altra parte ti fà lo scarico, etc., queste le chiami solo quando ne hai bisogno.

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