Jump to content
PLC Forum


Tavola Rotante


cliche1995
 Share

Recommended Posts

quell'animazione mi ha fatto capire proprio tutto! grazie mille a tutti, comunque la vita senza fine è fatta in modo che ogni poco ferma la tavola giusto? come faccio a far si che quando ho il sensore selezionato mi fermi la macchina per esempio 15 secondi?

Edited by cliche1995
Link to comment
Share on other sites


  • Replies 53
  • Created
  • Last Reply

Top Posters In This Topic

  • cliche1995

    16

  • drugo66

    12

  • Livio Orsini

    6

  • walterword

    6

cliche1995: ... come faccio a far si che quando ho il sensore selezionato mi fermi la macchina per esempio 15 secondi?

Spiegati meglio, non ho capito cosa intendi: perchè dovresti tenere ferma la macchina per 15 secondi ?

Link to comment
Share on other sites

per fare si che le stazioni riescano a lavorare... nell'animazione che mi ha mandato step la tavola rimane ferma pochissimo tempo

Link to comment
Share on other sites

No, non devi mettere un tempo, ma devi attendere che tutte le stazioni ti restituiscano i consensi per ripartire (fuori ingombro e fine ciclo): potrebbe essere 1 secondo oppure più di 15 secondi se una stazione si è bloccata.

Link to comment
Share on other sites

ah adesso capisco, per esempio: ogni stazione quando inizia a lavorare mi setta un bit, ognuno di questi bit quando è ad 1 non mi permette di fare ruotare la tavola, ogni volta che una stazione termina il lavoro dovuto, resetto il bit.

Dico bene?

Link to comment
Share on other sites

Un altro problema, io devo fare lavorare le stazioni quando i sensori di esse sono tutti impegnati?

Edited by cliche1995
Link to comment
Share on other sites

Giuseppe Signorella

Un altro problema, io devo fare lavorare le stazioni quando i sensori di esse sono tutti impegnati?

No, devono lavorare solo le stazioni in cui è presente il pezzo.

Se hai stazioni nel quale il pezzo non è presente, quella stazione non deve lavorare.

Ipotizziamo che tu hai 8 stazioni, se hai caricato solo 7 pezzi, avrai solo 7 stazioni che devono lavorare ed una che deve stare ferma.

Quando tutti i bit delle stazioni sono a zero, passi al ciclo successivo.

Edited by Giuseppe Signorella
Link to comment
Share on other sites

Ho dato un occhiata veloce a quello che hai fatto e ... ti meriti una tirata di orecchie: ;)

- separa bene tutte le funzionalità in blocchi distinti (marcia/arresto, tavola e stazioni); più riesci a semplificare l'impianto in piccole unità e meglio riesci a gestirle, oltre a risultare più comprensibile.

- non hai usato l'istruzione di shift o, almeno, mi è sfuggito: per carità, non è che sia obbligatorio, basta che poi funzioni, ma non stavano discutendo di quello ?

- se scrivi due righe di commenti in più, non è che ti arrestano ...

Link to comment
Share on other sites

Ti abbiamo dato delle indicazioni, almeno prova a scriverla ...

Se vuoi fare questo lavoro, ti assicuro che le difficoltà abbondano: il funzionamento dello shift è il minore dei mali, perchè una volta imparato, almeno quello è a posto ...

Link to comment
Share on other sites

Al posto dello shift metti...uno shift. :smile:

Se vuoi complicarti la vita ti costrusci un vettore che contiene le varie stazioni e poi incrementi il puntatore ad ogni movimento.

Cerco di spiegartelo con un esempio.

Ammetti di avere 8 stazioni di lavoro. Alla prima corrispondera il bit 0 di un byte, alla seconda il bit 1 e così via sino alla stazione 8 che corrisponde al bit 7.

Quando una stazione si carica il bit corrisponde va ad "1" e va a "0" quando si sscarica.

Alla partenza trovi la stazione 1 sul punto di carico ed il contatore è a 0. Se carichi un pezzo il bit passa ad 1; quando fai avanzare di un passo la tavola incrementi il contatore, così sai quale stazione è arrivata al punto di carico e sai quanti passi ha fatto la tavola.

Alla fine ti sei costruito un sistema simile ad uno shift, ma molto più macchinoso.

Morale: questo è un problema che si risolve con un'istruzione di shift, quindi impara ad usare gli shift; tra l'altro è un'operazione che ha tantissimi impieghi. Ad esempio permette di moltiplicare e dividere per 2 in modo rapidissimo.

Link to comment
Share on other sites

Anche se hai già la spiegazione di Livio, provo ad aggiungere qualcosa:

- Scrivi un ciclo per la sola tavola in un blocco separato; così facendo puoi anche impedire alle stazioni di lavorare se il ciclo tavola non è terminato

- Crea in un DB un dato tavola composto da un byte; dovrebbe bastare per le stazioni che hai inserito (un byte=8 bit=8 stazioni compreso il carico)

- Nel blocco della stazione di carico, quando carichi il pezzo, metti ON il bit 0 dei dati tavola (che corrisponde alla stazione di carico)

- Gestisci il sensore di posizione della tavola (non ricordo se l'avevi messo) in modo che quando si attiva dopo la rotazione, esegui l'istruzione shift; mettici anche un rilevamento del fronte di salita per sicurezza prima dell'istruzione (così se non lo conosci, impari anche quello)

- Quando devono lavorare le altre stazioni (non quella di carico) a fine rotazione, controlla il bit dei dati tavola (quel byte che hai aggiunto), nel sistema che ti ha indicato Livio; il bit 1 sarà la prima stazione dopo quella di carico (che era il bit 0) e così via; se il bit è ON la stazione deve lavorare, altrimenti puoi dare il fine ciclo senza lavorare

Fatto questo e verificato che funzioni, puoi pensare di aggiungere un ciclo di svuotamento e, magari, un po' di allarmi ...

Link to comment
Share on other sites

vi ringrazio, ma io le conosco le istruzioni, sia lo shift che i fronti, con lo shift ho realizzato per esempio le luci che crescono e decrescono..quello che non capisco, scusatemi se faccio fatica è: se devo usare un byte solo per la tavole e un altro byte per le stazioni oppure mettere tutto insieme.

Link to comment
Share on other sites

troppo facile lo shift di un bit che memorizza uno stato

Devi progettare un'area dati DB globale che contiene tutte le caratteristiche , gli stati , le scelte ect del pezzo in produzione in ogni stazione ....dalla prima all'ultima

Poi per implementare le routines di manipolazione di tale struttura ti fai aiutare dagli amici tavarish che sanno tutti sui puntatori , cosi fai doppio esercizio

:D

Link to comment
Share on other sites

Giuseppe Signorella

forse è meglio che lascio perdere

Troppo facile. Arrendersi senza neanche provare? Arrendersi senza avere dinanzi ancora nessuna difficoltà? (Visto che il programma non lo hai ancora scritto).

Proprio ora che comincia la parte più divertente......

Link to comment
Share on other sites

Giuseppe, ci ho provato tante volte, lo ho anche postato un programma... è già un bel po che provo a scrivere programmi ma niente, non riesco a trovare la soluzione.

forse l'unica soluzione è proprio di vederne un programmino già realizzato che mi faccia capire il ragionamento o la tecnica

Link to comment
Share on other sites

Purtroppo vedere altri programmi serve ben a poco...in questi casi l'unica soluzione è sbattere la testa finchè non si trova la soluzione..possibilmente spulciando manuali, esempi on-line e quant'altro ti torni utile.

Ancora meglio se hai l'hardware a disposizione ;)

Link to comment
Share on other sites

lo so che la soluzione migliore è quella, ma dovete credermi ci ho provato tantissime volte, ho cercato anche in internet ma niente da fare

Link to comment
Share on other sites

usa lo shift , metti a 1 il primo bit se hai la condizione che ti serve sapere come informazione nelle stazioni piu avanti

Ad ogni colpo di tavola fai shiftare la word o doppia word che usi per lo shift a sinistra , sul fronte di salita

Vedrai il biti "muoversi" nella word , e quando ti serve lo interroghi .

Link to comment
Share on other sites

  • Livio Orsini locked this topic
Guest
This topic is now closed to further replies.
 Share


×
×
  • Create New...