bluetooth Inserito: 29 febbraio 2012 Segnala Share Inserito: 29 febbraio 2012 Ciao a tutti,ringrazio come sempre anticipatamente a tutti per la disponibilità.Ho questo problema:plc siemens s7300- cpu315, pannello hmi mp377.Sul pannello hmi ho 32 interruttori che rappresentano lo scarico di 32 vasche, digito un interruttore ed alzo il relativo bit della doppia word che ho usato per le 32 vasche.Il sistema ad oggi funziona cosi: il cliente digita le vasche da scaricare ed io analizzo in ordine progressivo le vasche digitate, scarico sempre per primo la vasca digitata con valore + basso, es: digito le vasche 14-8-18-23, io scarico prima la vasca 8 e resetto il relativo bit quando finisco poi scarico la 14 e cosi via.Il cliente adesso vuole scaricare le vasche in base all'ordine con cui le digita. Quindi devo capire se la vasca 1-2-3-4-5-6... è stata selezionata come prima oppure come seconda oppure come terza...Volevo chiedervi il metoto + veloce da usare, con il ladder l'ho provato per 4 vasche e funziona ma ci vogliono un sacco di istruzioni.Con i puntatori è fattibile?Grazie mille. Link al commento Condividi su altri siti More sharing options...
0.0 Inserita: 29 febbraio 2012 Segnala Share Inserita: 29 febbraio 2012 Potresti usare l'FC FIFO (se non sbaglio la trovi nella biblioteca standard).Ogni pulsante scrive il numero della vasca da scaricare dentro allo stack, quando hai finito di scaricare la vasca in testa al FIFO ne cancelli il codice e passi a quella successiva, così fino a che non hai finito la coda di scarico. Link al commento Condividi su altri siti More sharing options...
bluetooth Inserita: 1 marzo 2012 Autore Segnala Share Inserita: 1 marzo 2012 Grazie, provo a dare subito un'occhiata. Link al commento Condividi su altri siti More sharing options...
bluetooth Inserita: 1 marzo 2012 Autore Segnala Share Inserita: 1 marzo 2012 Ho provato con FC84 e FC85 della libreria standard ma non riesco ad uscirne, non esiste un altro modo?Oppure sono io che non riesco ad usare bene queste FC? Qualcuno le ha mai usate?Grazie Link al commento Condividi su altri siti More sharing options...
Sifeld Inserita: 1 marzo 2012 Segnala Share Inserita: 1 marzo 2012 Dunque Tramite l'FC 84 ATT - si aggiungono i valori alla DB che poi verrà passata al FC 85 FIFO.Praticamente se ho capito bene ciò che vuoi fare, devi usare l' FC84 ogni volta che ti viene premuto il pulsante per aggiungere in DB i valori (esempio vasca 1 - vasca 2 vasca 3 ecc ecc)Quindi o metti tanti FC84 quanti pulsanti ci sono, oppure fai una logica che in base al pulsante premuto ti aggiorna il valore e telo aggiunge al DB. IL DB dove vengono memorizzati i dati DEVE avere del prime 2 word libere e gestite dal FC85. La prima Word è quella che passi al Blocco FC85 (TABLE) dove dici la quantità di valori che può contenere il DB (se vuoi far scaricare massimo 5 vasche per volta avrai come lunghezza massima 5 ad esempio) la seconda contiene il numero di valori aggiunti al FIFO. Ogni volta che aggiungi un valore al DB questo puntatore si incrementerà di 1 SE L'ENABLE DEL FIFO E' = 0.A questo punto partono le posizioni delle vasche che vuoi svuotare.Il FIFO, ogni volta che è abilitato l'EN, tira fuori un valore dal DB (in RET VAL), quindi ti basterà fare una logica per abilitare l'enable del FIFO ogni volta che hai finito un lavaggio per 1 ciclo di scansione.Dovrebbe funzionare così se non ricordo male...Fai qualche prova e fammi sapere,Andrea Link al commento Condividi su altri siti More sharing options...
bluetooth Inserita: 1 marzo 2012 Autore Segnala Share Inserita: 1 marzo 2012 Grazie Andrea provo subito e ti so dire. Link al commento Condividi su altri siti More sharing options...
Gapo Inserita: 5 marzo 2012 Segnala Share Inserita: 5 marzo 2012 Invece di usare una sola DW, usa un vettore di 32 DW. A questo punto hai due possibilità: o usi una tecnica FIFO, oppure due indici. Con la FIFO, ogni volta che preme un interruttore memorizzi il relativo bit nel primo elemento vuoto, poi tu scarichi le vasce a partire dal primo e, quando hai finito, shifti in su tutte le altre word. Con gli indici, di fatto hai comunque una FIFO, ma non fai nessun movimento dati: devi tenere due conteggi separati, uno per memorizzare dove inserire il prossimo elmento alla pressione dell'interruttore, e uno per sapere a quale elmento del vettore contiene le info per la prossima vasca da svuotare. Il primo è metodo più semplice, il secondo (IMHO) più "elegante" (e soprattutto più efficace nel caso in cui i dati da spostare per gestire una FIFO in modo "canonico" siano molti). Se ne hai bisogno, mettendo in OR tutte le DW puoi comunque ottenere un'info globale di quali vasche sono state selezionate per lo svuotamento. Il mio consiglio è quello di svilupparti personalmente le routine per gestire il tutto, senza affidarti ai blocchi standard Siemens. Oltre a mantenere attiva al mente su come affrontare certe problematiche, avresti sott'occhio del codice fatto da te, a misura per le tue esigenze, ottimizzabile e debuggabile in caso di problemi. ciao Link al commento Condividi su altri siti More sharing options...
bluetooth Inserita: 5 marzo 2012 Autore Segnala Share Inserita: 5 marzo 2012 Grazie a tutti nuovamente per i consigli, ho provato con la tecnica FIFO e con gli indici, li trovo per me complicati, quindi rimango con il metoto con cui sono partito and-or a iosa, molto laborioso ma so cosi dove mettere mano. 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