marioalessandria Inserito: 22 novembre 2007 Segnala Inserito: 22 novembre 2007 Dovrei costruire una tabella che anziche fare avanzare i bit con evento, scarichi la coda a tempo, in pratica scriverei la tabella con un evento ma la coda di bit dovrebbe scaricarsi (naturalmente bit per bit) dopo X tempo.non ho mai affrontato una problematica simile, qualcuno ha qualche idea?sys s7 200.
Livio Orsini Inserita: 22 novembre 2007 Segnala Inserita: 22 novembre 2007 Non è che ti sei spiegato molto chiaramente. Vediamo di capire se....ho capito il tuo problema.Tu hai una vettore di bits. Dopo un tempo "x" vorresti che questo vettore scaricasse, uno alla volta, i bits che contiene.Per il tempo hai solo l'imbarazzo della scelta: o usi uno dei tanti temporizzatori a disposizione o, se necessiti di maggior precisione, ti agganci all'interupt sul timer di sistema.Alla scadenza del tempo prefissato hai solo da usare l'istruzione SHR_B (o SHR_W, o SHR_DW), oppure la duale SHL che shifta a sinistra il contenuto del Byte(Word o Dword). Ovviamente se il vettore è più grande di una DWord dovrai mettere in sequenza più istruzioni e travasare il carry nel borrow.
marioalessandria Inserita: 22 novembre 2007 Autore Segnala Inserita: 22 novembre 2007 In pratica io ho un nastro trasportatore nella quale vengono posti dei pezzi, passano sotto un apparato il quale decide se convogliarle detti pezzi in un uscita A o in un uscita B, nella tabella scrivo 1 per pezzo A e 2 per pezzo B, dall'apparato all'uscita la distanza è costante ma i pezzi non sono equidistanti.quando il pezzo arriva all'uscita A se giudicato idoneo devo avere il segnale di convogliamento.se utilizzassi un sensore a questo punto non ci sarebbero problemi, ma in qs posizione il sensore non è idoneo.devo avere una tabella che segua pezzo X pezzo e che azioni se richiesto l'uscita dopo X tempo.ripeto i pezzi non sono equidistanti e tra l'apparato e l'uscita posso avere + pezzi.questo è il problema.
Livio Orsini Inserita: 22 novembre 2007 Segnala Inserita: 22 novembre 2007 Qui forse non è un problema di tempo. E' un classico problema di tracciamento. Puoi ipotizzare un tempo proporzionale alla velocità del nastro, ma il rischio che, nel tempo, si salti qualch eposizione è molto elevato. Se non hai un clock che dia l'avanzamento, come potrbbe essere un encoder o una ruota fonica sul nasto, vedo un mare di problemi.PS Cerca di evitare le abbreviazioni, oltre a essere contro il regolamneto, rendono meno comprensibile il messaggio.
marioalessandria Inserita: 22 novembre 2007 Autore Segnala Inserita: 22 novembre 2007 Io eseguo già un operazine simile con un computer, faccio uno shift temporizzato con un impulso ogni 2 millisecondi.in pratica quando ho il risultato lo scrivo in tabella come 1 o 2, quando ho lo spazio vuoto butto degli zeri, poi in base alla temporizzazione preselezionata vado a pescare il bit corrispondente al tempo prescelto, in pratica se da il punto A al punto B ho 1200 ms, vado a pescare il valore posto nella locazione 600.ora con un pc questo è possibile ma non vedo soluzione con un S7 200.Domanda, con un orologio hardware?
Livio Orsini Inserita: 22 novembre 2007 Segnala Inserita: 22 novembre 2007 Nel 200 hai a disposizione un timer molto preciso, a cui puoi legare un interrupt, solo che non è consigliabile scendere sotto i 10ms. Altro problema è la quantità di memoria disponibile, infinitamente minore di quella di un PC.Anche con microwin è possibile usare puntatori con le istruzioni classiche "&" e "*", quindi devi solo crearti il vettore corrispondente all'ingresso dei pezzi e scaricarli in uscita.Io, comunque, continuo ad essere scettico sulla possibilità di eseguire un tacking affidabile su un trasportatore senza avere un encoder.
Gianmario Pedrani Inserita: 22 novembre 2007 Segnala Inserita: 22 novembre 2007 Ma creare una tabella non è complesso, se giardi un po il funzionamento dei puntatori, li ti spiega.. quello che mi spaventa un pò è il tempo di 2ms che mi sembra un tempo molto basso..
Savino Inserita: 22 novembre 2007 Segnala Inserita: 22 novembre 2007 (modificato) devo avere una tabella che segua pezzo X pezzo Una coda virtuale rappresentata da un DB. ? ove ogni offset del DB sono gli stati del pezzo o codici ID o cosa?La tua esposizione non e' molto chiara. Posta un diagramma di flusso od un schema a blocchi per la specifica fuzionale. Modificato: 22 novembre 2007 da Savino
marioalessandria Inserita: 22 novembre 2007 Autore Segnala Inserita: 22 novembre 2007 allora espongo il problema per interodevo semplicemente integrare un sistema di controllo superficiale con un semplice "nastro" che trasporti i pezzi.non essendoci visione artificiale, pensavo semplicemente ad un plc, il quale caricasse in tabella il risultato dato da tale apparecchio.per esigenze logistiche devo avere la separazione dei pezzi a circa 50cm dal risultato di tale apparato.il punto è che ci possono essere più pezzi sul nastro all'uscita di tale apparato, e che li devo accompagnare fino all'uscita.se utilizzassi un sensore all'uscita, "scaricherei" la tabella con un interrupt, ma "è ancora da verificare" trovo che un sensore a tale scopo non sia del tutto affidabile.i pezzi non sono comunque molto vicini tra loro, quindi pensavo di utilizzare uno shift di bit temporizzato, il quale accompagni i pezzi fino all'uscita.una risoluzione di 10ms non è male, il problema sorge quando leggo che la tabella può essere lunga al massimo 100...10ms * 100 = 1 secondo... il problema è che dall'apparato all'uscita siamo nell'ordina di 3 secondi.penso che la soluzione migliore sia utilizzare un sensore.
marioalessandria Inserita: 22 novembre 2007 Autore Segnala Inserita: 22 novembre 2007 ora per fare un idea pratica, immaginiamo un nastro trasportatore, sulla quale vengano caricati tappi di plastica aventi diametri di 15 e di 20mm, ad una distanza variable da 40 a 60 mm tra loro, un sensore li misura e dopo 50 cm di corsa debbano prendere 2 strade diverse in base al diametro misurato.utilizzando un sensore all'uscita, scaricherei tutti quelli con un valore 1, mentre farei proseguire la corsa a quelli di valore 2 "non buoni".se il sensore all'uscita per errore non leggesse un pezzo, sicuramente sfalserei lo shift dei bit di un unità, quindi diventerebbe pericoloso.invece se potessi utilizzare un sistema a tempo, il quale verrebbe facilmente impostato a priori, al massimo potrei avere tappi buoni nello scarto ma non il contrario.questo sistema viene già da me utilizzato per macchine con tavola rotante di vetro, ma con un pc.non riesco a trovare una soluzione per traslare tale funzione su un plc.
Savino Inserita: 22 novembre 2007 Segnala Inserita: 22 novembre 2007 (modificato) immaginiamo un nastro trasportatore, sulla quale vengano caricati tappi di plastica aventi diametri di 15 e di 20mm, ad una distanza variable da 40 a 60 mm tra loro, un sensore li misura e dopo 50 cm di corsa debbano prendere 2 strade diverse in base al diametro misurato. Dunque, se i tapi vengono misurati uno per uno in fila, allora il dispositivo campiona il risultato in un data block (DB) che avra' una lunghezza massima uguale alla lunghezza della fila fisica possibile sul nastro.Poi, ogni vota il pezzo viene scaricato, la coda per i pezzi viene mossa in avanti di una posizione.. tu avresti due code (DB), una per i pezzi di 15mm e una per il pezzi di 20mm. Il dispositivo che fa la misura, seleziona a secondo il diamentro, su quale coda (DB) caricare il dato. I dati per le code sono appunto i mm misurati (15/20 mm) Modificato: 22 novembre 2007 da Savino
Savino Inserita: 22 novembre 2007 Segnala Inserita: 22 novembre 2007 (modificato) tu avresti due code (DB), una per i pezzi di 15mm e una per il pezzi di 20mm. Beh no, meglio 1 coda (DB).. poi il selezionatore a secondo i valori dei tapi fa la separazione movendo la coda in avanti. Modificato: 22 novembre 2007 da Savino
batta Inserita: 22 novembre 2007 Segnala Inserita: 22 novembre 2007 Lascia perdere il tempo. La soluzione migliore te l'ha già suggerita Livio: ruota fonica o encoder.
marioalessandria Inserita: 22 novembre 2007 Autore Segnala Inserita: 22 novembre 2007 io pensavo semplicemente di scrivere 1 nella tabella se il pezzo è "buono" e 2 se non lo è, quindi fare scorrere la stessa con un clock e dopo il tempo prestabilito se ho il valore 1 indirizzare il tappo verso l'uscita preposta.ma penso a questo punto che sia meglio spostare il tutto su un encoder che mi dia la posizione.
Savino Inserita: 22 novembre 2007 Segnala Inserita: 22 novembre 2007 (modificato) io pensavo semplicemente di scrivere 1 nella tabella se il pezzo è "buono" e 2 se non lo è, quindi fare scorrere la stessa con un clock e dopo il tempo prestabilito se ho il valore 1 indirizzare il tappo verso l'uscita preposta. immaginiamo un nastro trasportatore, sulla quale vengano caricati tappi di plastica aventi diametri di 15 e di 20mm, ad una distanza variable da 40 a 60 mm tra loro, un sensore li misura e dopo 50 cm di corsa debbano prendere 2 strade diverse in base al diametro misurato. Allora, quando questo sensore li misura, campiona il dato misurato in una DB, uno tapo dopo l'altro... formando una coda... assegnado 1 a quelli di 15mm e il 2 quelli di 20mm .Quindi la tua coda (DB) sarebbe:DBx 0.0 =1 2.0 = 1 4.0 = 2 6.0 = 1 8.0 = 2 10.0 = 2 .. .Poi, dopo 50 cm di corsa, il selezionatore, legge la coda .. se 1 va di una parte.. se 2 va dall'altra.. ad ogni lettura muovi la coda in avanti. Non va bene? perche'? Modificato: 22 novembre 2007 da Savino
marioalessandria Inserita: 23 novembre 2007 Autore Segnala Inserita: 23 novembre 2007 perchè è vero che ad ogni lettura muovo la coda, ma non ho la possibilita di conoscere la posizione dei tappi dopo la lettura, in pratica avrei una coda di bit che mi dicono la dimensione dei tappi sul nastro, la loro posizione rispetto a se stessi (fila) ma non la loro posizione nello spazio.
Livio Orsini Inserita: 23 novembre 2007 Segnala Inserita: 23 novembre 2007 ...perchè è vero che ad ogni lettura muovo la coda, ma non ho la possibilita di conoscere la posizione dei tappi dopo la lettura..No! Se metti un encoder sul nastro hai la possibilità di tracciare la posizione del pezzo su tutto il percorso. Questa è la soluzione universalmente adottata per il tracciamento del materiale.
Savino Inserita: 23 novembre 2007 Segnala Inserita: 23 novembre 2007 ma non la loro posizione nello spazio. Non riesci a fare un disegnino di massima per ilustrare questo nastro piu' il lettore e selezionatore.. perche' ce qualcosa che mi sfugge.. a cosa ti serve la loro posizione nello spazio.? quando i tapi arrivano al selezionatore, questo legge la coda e considera al primo tapo arrivato in corrispondenza con il primo elemento della coda e via dicendo.. o no?
marioalessandria Inserita: 23 novembre 2007 Autore Segnala Inserita: 23 novembre 2007 ho risolto con un sensore su una corona dentata che fà da ""encoder"".Grazie del supporto e del ""sopporto""
salto Inserita: 27 novembre 2007 Segnala Inserita: 27 novembre 2007 Potevi usare anche uno shift del tato a tempo.1) Devi condizionare lo shift alla marcia del trasporto2) Determinare il tempo dello shift in funzione della velocità del trasporto comandata (teorica)3) Se sei bravo puoi tenere conto pure della rampa su start stop nastroL'errore che commetti è legato solo alla differenza tra velocità comandata e velocità reale.Se il motore è dimensionato bene e le precisioni richieste non sono critiche può funzionare.Ciao
Rwhite Inserita: 28 novembre 2007 Segnala Inserita: 28 novembre 2007 Ciao a tutti, condivido con Livio l'utilizzo dell'encoder , invece per la tabella io userei una tabella FIFO, ad ogni controllo inserisci il valore 1 o 2 in coda alla tabella, e nella posizione di scarico, con sincronismo dall'encoder o un impulso da un sensore scarichi il valore FIFO dalla tabella stessa. I valori rimasti in tabella corrispondono ai pezzi sul nastro, in 50 cm penso meno di 100 pezziCiao rwhite
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