tecnologyassistence Inserito: 17 febbraio 2012 Segnala Share Inserito: 17 febbraio 2012 Salve a tutti qualcuno saprebbe spiegarmi come posso mantenere il valore di conteggio del mio SFB47 dopo una mancanza di tensione?Cioè quando rido' alimentazione alla cpu i valori di conteggio dei miei due SFB47 si azzerano e per me è un grosso ed enorme problema come posso fare ? grazie Domenico Link al commento Condividi su altri siti More sharing options...
zanellatofabio Inserita: 17 febbraio 2012 Segnala Share Inserita: 17 febbraio 2012 Ciao , in breve e da quel che mi ricordo ( avevo fatto una applicazione anni fà che leggevo un encoder con la 313c e sfb47 )SEGMENTO 1 al primo ciclo plc = M0.2 --> restore posizione al POWER-ONU "M0.2" = L 0.0 U L 0.0 SPBNB _001 L "DB102".COUNTVAL T "DB102".JOB_VAL_001: NOP 0 U L 0.0 BLD 102 = "DB102".JOB_REQSEGMENTO 2 CALL "COUNT" , "DB47" LADDR :="DB102".LADDR CHANNEL :="DB102".CHANNEL SW_GATE :="DB102".SW_GATE CTRL_DO :="DB102".CTRL_DO SET_DO :="DB102".SET_D0 JOB_REQ :="DB102".JOB_REQ JOB_ID :="DB102".JOB_ID JOB_VAL :="DB102".JOB_VAL STS_GATE:="DB102".STS_GATE STS_STRT:="DB102".STS_STRT STS_LTCH:="DB102".STS_LTCH STS_DO :="DB102".STS_DO STS_C_DN:="DB102".STS_C_DN STS_C_UP:="DB102".STS_C_UP COUNTVAL:="DB102".COUNTVAL LATCHVAL:="DB102".LATCHVAL JOB_DONE:="DB102".JOB_DONE JOB_ERR :="DB102".JOB_ERR JOB_STAT:="DB102".JOB_STATleggi la posizione e la scrivi su COUNTVALNota "DB102".JOB_ID deve avere il valore W#16#1 Link al commento Condividi su altri siti More sharing options...
tecnologyassistence Inserita: 17 febbraio 2012 Autore Segnala Share Inserita: 17 febbraio 2012 Ciao zanella grazie ma non riesco a capire se devo scrivere il codice in un semplice FC,ed inoltre non penso sia importante se io leggo SFB47 in kop.questa istruzione cosi per come la leggo la devo scrivere dentro il mio FC?U "M0.2"= L 0.0U L 0.0SPBNB _001L "DB102".COUNTVALT "DB102".JOB_VAL_001: NOP 0U L 0.0BLD 102= "DB102".JOB_REQ grazie Domenico Link al commento Condividi su altri siti More sharing options...
zanellatofabio Inserita: 18 febbraio 2012 Segnala Share Inserita: 18 febbraio 2012 (modificato) 1) il mio nome è zanellatofabio , non zanella !!!2) come già detto avevo fatto un applicazione con la cpu 313c che leggeva la posizione di un encoder incrementale con sfb47 . al power on del plc si perdeva la poszione , quindi bisognava ricaricare la posizione precedentemente letta in sfb . Questo si fà col JOB_ID , JOB_VAL e JOB_REQ basta premere F1 sopra al blocco sfc467 e leggere la documentazione di H_e_l_p la dentro c'è scritto tutto sui job !!!inoltre lì dentro c'è scritto la frase :" Avvertenza Ulteriori particolari sull'applicazione dell'SFB 47 sono contenute nel manuale Sistemi di automazione S7-300 CPU 31xC, Funzioni tecnologiche "Significa leggere la documentazione siemens come ho fatto io . 3) il codice che ho postato era un segmento in kop poi commutato in awl per incollarlo nel post , ognuno è libero di usare il linguaggio che più gli piace . M0.2 è un attivo al primo ciclo plc .Bye bye Modificato: 18 febbraio 2012 da zanellatofabio Link al commento Condividi su altri siti More sharing options...
batta Inserita: 18 febbraio 2012 Segnala Share Inserita: 18 febbraio 2012 Il fatto di perdere il valore di conteggio quando si toglie alimentazione non è un'anomalia, ma il giusto modo di operare.Se non c'è alimentazione, il PLC non può sapere cosa succede, e non può quindi garantire che il valore in memoria sia ancora corretto.Per esempio, se manca improvvisamente alimentazione, il PLC non è più in grado di aggiornare la posizione, ma l'asse si potrebbe ancora muovere per inerzia.Solo chi programma può sapere se un eventuale errore può causare o meno danni.Nel caso in cui si valuti che un eventuale errore sia accettabile, e che le possibilità di movimento dell'asse a plc spento siano remote, allora si può procedere come indicato da Fabio, impostando nel contatore, allo start-up, l'ultimo valore rilevato.Per vedere come fare per impostare il valore corrente nel contatore, basta consultare il manuale in linea di SFB47. Link al commento Condividi su altri siti More sharing options...
tecnologyassistence Inserita: 18 febbraio 2012 Autore Segnala Share Inserita: 18 febbraio 2012 (modificato) Zanellatofabio scusami per l'errore batta il mio grosso problema e quello di riavere la quota in cui si trova la macchina al momento che deve essere avviata cioe',la sera la spengono la mattina la riaccendono e devono riprendere dando l'automatico per non perdere le posizioni di taglio.Mi sfuge come fare lavorare m0.2 al primo ciclo dovrei usare ob100?Posso fare come ha descritto Zanellatofabio? grazie Domenico Modificato: 18 febbraio 2012 da tecnologyassistence Link al commento Condividi su altri siti More sharing options...
tecnologyassistence Inserita: 19 febbraio 2012 Autore Segnala Share Inserita: 19 febbraio 2012 Salve a tutti da ieri cerco di capire meglio approfondendo sul manuale dove viene specificato per intero la funzione dell SFB47,ma non sono riuscito ancora a risolvere il mio problema.In pratica per come ha descritto nell'esempio zanellatofabio non capisco se db102 è la db di istanza che si genera inserendo dentro fb1 il blocco sfb47,non mi è proprio chiaro come fare a reimpostare l'ultimo valore di conteggio all'uscita del COUNTVAL.Inoltre non mi è chiaro se devo inserire tutto il codice su fb1 o richiamare la funzione in due blocchi differenti,ho cercato in linea questo tipo di argomento ma nessuno lo ha mai trattato grazie anticipatamente a tutti perun vostro sugerimento. Domenico Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 19 febbraio 2012 Segnala Share Inserita: 19 febbraio 2012 ..la sera la spengono la mattina la riaccendono e devono riprendere dando l'automatico per non perdere le posizioni di taglio.Il modo corretto di oprare in questi casi è:Subordinare lo spegnimento al termine della missione corrente; posizionare l'asse in posizione di zero o comunque neutra.Alla riaccensione si deve esguire una ricerca di zero asse.Anche ipotizzando l'uso di un encoder assoluto è sconsigliabile ripartire dalla posizione in cui si trova l'asse all'atto dell'accensione. Non si ha la certezza che l'asse sia rimasto nell'esatta posizione in cui era al momento dello spegnimento.L'uso di un encoder assoluto evita la ricerca dello zero, però complica l'interfacciamento Hw.Memorizzare l'ultima posizione prima dello spegnimento è fattibile, però bisogna avere l'assoluta certezza che non sia stato possibile alcun movimento dell'asse a macchina ferma. Link al commento Condividi su altri siti More sharing options...
tecnologyassistence Inserita: 19 febbraio 2012 Autore Segnala Share Inserita: 19 febbraio 2012 Grazie per la risposta Livio ma ho la certezza che l'asse non si muovi in assenza di tenzione ed inoltre ho una macchina con encoder incrementali quindi visto che tutto il software che ho fatto va mi manca solo i evitare che anche la sera dopo l'ho spegnimento della macchina in condizioni normali il giorno dopo l'operatore possa continuare il lavoro leggendo le quote che aveva lasciato il giorno prima. Link al commento Condividi su altri siti More sharing options...
tecnologyassistence Inserita: 21 febbraio 2012 Autore Segnala Share Inserita: 21 febbraio 2012 Salve a tutti comunque nemmeno la siemens mi ha saputo dare delucidazioni in merito alla problematica,tentero' a memorizzate il valore di conteggio in una doppia word e al riavvio della cpu trasferisco il valore memorizzato nel countval sperando che funzioni. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 22 febbraio 2012 Segnala Share Inserita: 22 febbraio 2012 Per darti indicazioni più precise dovremmo sapere come hai gestito attualmente il contatore.Comunque, se tutto funziona significa che riesci a leggere il valore corrente.Bene. Questo valore corrente, lo appoggi a qualche variabile? Penso proprio di sì, visto che, immagino, farai anche dei calcoli per convertire il conteggio da impulsi a quota lineare.Se questo valore lo appoggi a una variabile di un DB, all'accensione questa variabile conterrà l'ultimo valore letto dal contatore.Ti basta quindi attivare l'operazione di caricamento del valore corrente all'accensione del plc, e scrivere nel contatore il valore memorizzato in questa variabile.Questo lo puoi fare, per esempio, alzando un bit in OB100 che ti servirà per attivare il comando di impostazione del valore corrente.Una volta fatto il suo lavoro, il bit viene rimesso a zero e tutto riprende normalmente. 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