lappone Inserito: 17 dicembre 2008 Segnala Share Inserito: 17 dicembre 2008 Salve a tutti! Spero di essere il benvenuto su questo forum.Sono da molto tempo a digiuno di Siemes, ho lavorato da 3 anni a questa parte con PLC AB.Ora mi ritrovo a programmare una CPU S7-313C.Per le mie automazioni necessito di temporizzatori (TON-TOF) con temporizzazioni anche di 5-6 ore.Con AB posso arrivare fino a 8 ore circa, metre il limite massimo con Siemens è 2ore e 46 minuti.Qualcuno ho un consiglio da darmi per aggirare questa limitazione? Vi ringrazio. Link al commento Condividi su altri siti More sharing options...
luigi69 Inserita: 17 dicembre 2008 Segnala Share Inserita: 17 dicembre 2008 potresti creare un temporizzatore semplicemente contando un impulso di due temporizzatori settati in precedenza, ovvero.... tu scrivi due temporizzatori che si rincorrono, cioè il funzionamento di uno è tagliato dal successivo, anche non simmetrici, esempio,,,,,,1 minuto e 1 secondo : quindi ogni minuto ricevi un impulso, che sommi a mano a mano e poi lo confronti con il tuo valore di tempo limite che devi farenelle caratteristiche della CPu puoi settare il byte di merker, esempio 2....il bit del 2.5 corrisponde a circa mezzo secondo ( infatti in genere si usa questo per far la peggiare le lampadineutilizzando però un clock cosi ristretto.... per fare 8 ore devi contare un bel po ovvero 60 secondi per 60 minuti per 8 orese ti crei invece con i due temporizzatori un clock ogni ora ( ...per assurdo ) devi contare solo 8 impulsiverifica solo in base alle tue esigenze la precisione di quanto ti ho detto sopra....nel senso che a mio avviso il Byte che ti fornisce il lampeggio della CPU non credo sia garantito al centesimo...quindi ogni volta, anche se di poco, aggiungi e sommi un errorebuon lavoro Link al commento Condividi su altri siti More sharing options...
Lucky67 Inserita: 17 dicembre 2008 Segnala Share Inserita: 17 dicembre 2008 Utilizzi la funzione (impostabile dal profilo hw) dei merker oscillatori (di solito il byte MB100) e utilizzi il merker con la risoluzione che deve avere la progressione del tuo temporizatore. Prendi una word o una double word e la incrementi con il merker suddetto come clok (naturalmente utilizzando un fronte) andando a fare un confronto ogni volta se la word incrementata è uguale al tuo valore impostato. Al raggiungimento del valore setti ciò che ti serve (merker o valore che dir si voglia). Lo puoi fare anche con un contatore...vedi tu. Link al commento Condividi su altri siti More sharing options...
niloz62 Inserita: 17 dicembre 2008 Segnala Share Inserita: 17 dicembre 2008 Io utilizzo spesso il sistema indicato da Lucky67 anche perche in molti casi ho bisogno di un numero elevato di temporizzatori .Inoltre ho notato che la precisione del marker di clock è molto migliore di quella dei temporizzatori S7.Ciao Link al commento Condividi su altri siti More sharing options...
lappone Inserita: 17 dicembre 2008 Autore Segnala Share Inserita: 17 dicembre 2008 Grazie a tutti per le risposte celeri!Ora faccio delle prove con le soluzioni che mi avete dato e poi vi farò sapere.Grazie ancora. Link al commento Condividi su altri siti More sharing options...
STEU Inserita: 17 dicembre 2008 Segnala Share Inserita: 17 dicembre 2008 visto che devi utilizzare timer ton e tof , puoi utilizzare SFB4 (TON) e SFB5 (TOF) e superare senza problemi tempi di 5 o 6 ore Link al commento Condividi su altri siti More sharing options...
lappone Inserita: 17 dicembre 2008 Autore Segnala Share Inserita: 17 dicembre 2008 Ho testato i vostri consigli, ho trovato il blocco funzionale SFB la soluzione migliore...La temporizzazione massima raggiungibile è di 24 giorni.... :ph34r:Altro quesito:I blocchi SFB necessitano di blocchi dati.Attualmente, per testare, ho impostato manualmente i valori di tempo (es PT = T#10S).Non capisco come gestire queste variabili in modo dinamico con un pannello operatore (tramite ricette).Con PLC AB e HMI AB o EATON, la mia ricetta compilava tutti preset dei temporizzatori andando a scrivere su "T4:0.PRE" il valore da me scelto.Non so se mi sono spiegato in maniera potabile.In semplicità, al pannello che indirizzo PLC devo dare per modificare il valore dentro al database?Sto ripassando il manuale pagina per pagina, ma non ne vengo fuori. Link al commento Condividi su altri siti More sharing options...
lappone Inserita: 17 dicembre 2008 Autore Segnala Share Inserita: 17 dicembre 2008 Dimenticavo.... L'indirizzo della variabile all'inerno del database, leggendo la colonna relativa è ad esempio 8.0. Link al commento Condividi su altri siti More sharing options...
STEU Inserita: 17 dicembre 2008 Segnala Share Inserita: 17 dicembre 2008 Che pannello operatore utilizzi e con che software? Link al commento Condividi su altri siti More sharing options...
lappone Inserita: 17 dicembre 2008 Autore Segnala Share Inserita: 17 dicembre 2008 Al momento ho disponibile un'EATON (ha un software proprietario ma è scaricabile gratuitamente dal sito), in futuro avrò a disposizione un SIEMENS TP 177B da programmare con WinCC Flexible.Sono a digiuno di SIEMENS, sono rimasto a S7-200, questo S7-300 mi sta facendo impazzire... Link al commento Condividi su altri siti More sharing options...
peopeo Inserita: 17 dicembre 2008 Segnala Share Inserita: 17 dicembre 2008 Sulla tua ricetta, invece di impostare un valore "s5t#" usi un valore "time" che è sempre espresso in ms quindi basta scalarlo per ottenere un valore da scrivere in minuti o ore o secondi a seconda delle necessità (questa funzione è presente in quasi tutti i pannelli operatori) Link al commento Condividi su altri siti More sharing options...
lappone Inserita: 17 dicembre 2008 Autore Segnala Share Inserita: 17 dicembre 2008 (modificato) Io utilizzo il tipo di dati time, infatti i miei tof lavorano con T#xMxS.Quello che non mi è chiaro è che queste variabili sono all'interno di Data Base.Il problema che mi sorge è: Come dico al pannello operatore che deve moficare la variabile con il percorso DB1==>Indirizzo 8.0==>Tipo TIME==>Valore T#10000MS Modificato: 17 dicembre 2008 da lappone Link al commento Condividi su altri siti More sharing options...
peopeo Inserita: 17 dicembre 2008 Segnala Share Inserita: 17 dicembre 2008 devi associare una variabile tipo "time" all'interno della DB che avrà come indirizzo per es. db1.dbw0 come timer 0 oppure db1.dbw2 per timer 1 e così via... Link al commento Condividi su altri siti More sharing options...
lappone Inserita: 26 febbraio 2009 Autore Segnala Share Inserita: 26 febbraio 2009 (modificato) Le funzioni SFB4 (TON) e SFB5 (TOF) sono perfette.Ora mi sorge un'altro problema.L'operatore tramite HMI (TP177A o 177B) deve essere in grado di impostare un tempo di funzionamento espresso in ore-minuti.Io collego l'indirizzo del DB, seleziono la variabile PT.Imposto il tipo TIME ma nel tipo di formatto (HEX, Binario, Decimale) non riesco a capire cosa combinare.Devo lavorare in HEX? Scalare o convertire?Con AB ad esempio, nell'HMI lavoro con numeri INT (24 e 59 ad esempio), nella CPU specifico che 24 sono ore e 59 sono minuti. Modificato: 26 febbraio 2009 da lappone Link al commento Condividi su altri siti More sharing options...
lappone Inserita: 26 febbraio 2009 Autore Segnala Share Inserita: 26 febbraio 2009 Forse ho trovato la risoluzione del mio problema LINK Link al commento Condividi su altri siti More sharing options...
lappone Inserita: 26 febbraio 2009 Autore Segnala Share Inserita: 26 febbraio 2009 Spero sia utile anche ad altri Link al commento Condividi su altri siti More sharing options...
ken Inserita: 26 febbraio 2009 Segnala Share Inserita: 26 febbraio 2009 L DBXX.DBW X // Dec. [0.1s] ITB L W#16#1000 // Base dei tempi in decimi di secondo OW T DBXX.DBW Y // Timer T... [Hex]Molto semplicemente si può convertire un numero intero in un timer. In questo caso viene convertito in decimi di secondo. Perciò se imposto la prima variabile a 5 il timer sarà da 500ms se lo imposto a 100 sarà 10 secondi. Se al posto di W#16#1000 ci metto W#16#0000 la base dei tempi sarà espressa in 0.01s, se metto W#16#2000 sarà secondi e se metto W#16#3000 sarà 10s.DBXX.DBW X sarà una variabile che imposti a monitor (una variabile word), DBXX.DBW Y sarà il tuo S5Time Link al commento Condividi su altri siti More sharing options...
lappone Inserita: 26 febbraio 2009 Autore Segnala Share Inserita: 26 febbraio 2009 (modificato) Molto semplicemente si può convertire un numero intero in un timer.Non ho capito.Forse mi sono spiegato male anch'io.Necessito di utilizzare i TON/TOF SFB4-5.Il tipo di dato per i temporizzatori è TIME.Io il dato TIME all'interno del DB della CPU lo devo esprimere in T#3h5m.Dal pannello operatore non sono in grado di trovare una soluzione per far passare a T# i dati necessari.Il mio dilemma è: da due campi I/O (ore e minuti) del TP, come faccio a pilotare un TOF con tipo di dati non s5time ma TIME? Oppure come mi hai fatto l'esempio tu, dovrei convertire l'intero inserito nel TP in... Qualcosa di tipo TIME.Nell'esempio 3 c'è quello che avrei bisogno:L'esempio di SIEMENS è perfetto, però mi servirebbe in KOP. :-) Modificato: 26 febbraio 2009 da lappone Link al commento Condividi su altri siti More sharing options...
ken Inserita: 26 febbraio 2009 Segnala Share Inserita: 26 febbraio 2009 Il link che hai riportato fa esattamente quello che ti ho postato. leggendo la guida in linea sembra che il formato #TIME sia una semplice Dword. Non necessita perciò una conversione tipo quella riportata. Dovrebbe essere sufficiente dichiarare una variabile con formato TIME (in un DB o in una variabile locale) e fare L variabile da monitor T Variabile creata.Scusa ma credo sia sufficiente creare una variabile TIME nel pannello per risolvere il problema. Al limite guarda la guida in linea del pannella che usi per sapere come funziona, io non ho mai usato variabili in formato TIME Link al commento Condividi su altri siti More sharing options...
batta Inserita: 26 febbraio 2009 Segnala Share Inserita: 26 febbraio 2009 Oltre a SFB4-SFB5 puoi dare un'occhiata se QUESTO fa al caso tuo.La funzione attualmente prevede l'utilizzo di una variabile di tipo INT, quindi il preset massimo è 32767. Cosa siano quei 32767, lo decidi tu dandogli il clock opportuno.Se utilizzi per il clock 1 secondo, arrivi a contare fino ad oltre 9 ore.Se vuoi estendere ancora il campo mantenendo però un clock breve, basta una piccola modifica alla funzione ed utilizzi una variabile DINT.Se da pannello operatore vuoi impostare il tempo in ore/minuti/secondi, ti basta fare un semplice calcolo per convertire il tutto in secondi.Esempio:L Ore L 60 *I L Minuti +I L 60 *I L Secondi +I T PresetSe sul pannello operatore imposti il limite massimo delle ore a 8 (quindi preset massimo = 8h 59m 59s), non devi neanche fare controlli per non superare il valore 32767. Link al commento Condividi su altri siti More sharing options...
lappone Inserita: 26 febbraio 2009 Autore Segnala Share Inserita: 26 febbraio 2009 Ok Batta.Come nell'altra discussione ti ringrazio, domani provo subito.Il link che hai riportato fa esattamente quello che ti ho postato. leggendo la guida in linea sembra che il formato #TIME sia una semplice Dword. Non necessita perciò una conversione tipo quella riportata.Vero, sono io che ormai sono cotto. :dunce: 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