simofanti Inserito: 13 giugno 2009 Segnala Inserito: 13 giugno 2009 ciao ragazzi, ho finito i temposizzatori di una cpu s7-300, so che esiste un blocco che fa da temporizzatore ritardo all'eccitazone....qualcono sa dirmi quale è???? grazie
azzolini Inserita: 13 giugno 2009 Segnala Inserita: 13 giugno 2009 Ciao buongiorno,io personalmente quando non dispongo piu di timer,un uso il blocco che dici tu ( tanto vero che non so neanche come si chiama e se esiste)ma attraverso l'utilizzo dei merker di clock incremento una word di una db poi la comparo con: o valore fisso o valore di un'altra word della stessa db o di un'altra db,in questo modo il tuo numero di timer (in queto caso) e illimitato..ciaobuon lavoroArnaldo
batta Inserita: 13 giugno 2009 Segnala Inserita: 13 giugno 2009 L'argomento è già stato trattato parecchie volte. Perché la funzione "cerca" è così poco (o male) usata?Avresti sicuramente trovato QUESTO, che potrebbe fare al caso tuo.Se invece vuoi utilizzare le funzioni di sistema del Simatic, apri la biblioteca "Standard Library" --> "System Function Block" e trovi SFB4 (TON) e SFB5 (TOF).Anche a questo ci si poteva arrivare soltanto aprendo Step7 e con un po' di buona volontà.Io sono ben lontano dal conoscere a memoria tutti i blocchi disponibili nella varie biblioteche. Se ho bisogno di qualcosa, cerco. Le funzioni sono suddivise con un certo criterio e, di solito, la ricerca dà buoni frutti con sforzo limitato.
simofanti Inserita: 13 giugno 2009 Autore Segnala Inserita: 13 giugno 2009 IL PROBLEMA E CHE NA DEVO GENERARE CIRCA 50....NON POSSO CREARE 50 DB DI ISTANZA....COME SI FA???? CIAO GRAZIE
batta Inserita: 13 giugno 2009 Segnala Inserita: 13 giugno 2009 (modificato) IL PROBLEMA E CHE NA DEVO GENERARE CIRCA 50....NON POSSO CREARE 50 DB DI ISTANZA....COME SI FA???? CIAO GRAZIEPrima cosa: scrivere in maiuscolo nei forum equivale ad urlare. Non mi pare proprio ci sia il motivo per alzare la voce Tu hai chiesto cosa potevi utilizzare al posto dei normali timer, e mi pare di averti dato risposta.Se poi non vuoi creare 50DB, questo è un'altra questione.In ogni caso, sembra che tu non ti sia nemmeno preso la briga di guardare cosa trovavi cliccando sul link al mio post con il download di "Esempio Timer.zip".Se l'avessi fatto, ti saresti accorto che quella funzione non ha bisogno di DB. Tutto ciò di cui necessita è una variabile INT per ogni timer e di un merker di clock (o richiamo in OB a tempo) che può anche essere unico per tutti.Altra soluzione (ma la funzione è un po' più pesante della mia), la trovi (e torniamo al discorso che spesso basterebbe cercare) sempre nelle librerie Siemens in "Standard Library" --> "TI-S7 Converting Blocks" --> FC80 (TONR). Modificato: 13 giugno 2009 da batta
JumpMan Inserita: 14 giugno 2009 Segnala Inserita: 14 giugno 2009 Ho messo quelle faccine anche perchè la discussione che hai linkato non l'ha proprio letta!Lì si parla anche del problema delle molteplici DB !
walterword Inserita: 17 luglio 2009 Segnala Inserita: 17 luglio 2009 costruiscitelo tu .Prendi dall OB1 la temporanea che ti da l'ultimo tempo di ciclo scansione , lo trasformi da intero a reale Poi usi lo scan time per incrementare i tuoi accumulatori di timer , in base alle condizioni di strart o reset .Il timer sarà sincrono e l'errore non supera il tempo di scansione stesso Poi esiste anche una funzione tick che permette di leggere un timer di sistema , ma comunque la musica e' medesima
Gapo Inserita: 21 luglio 2009 Segnala Inserita: 21 luglio 2009 IL PROBLEMA E CHE NA DEVO GENERARE CIRCA 50....NON POSSO CREARE 50 DB DI ISTANZA....COME SI FA???? CIAO GRAZIEInfatti non devi generare 50 DB... basta una DB che li contenga tutti...Inoltre, non ci vuole molto ingegno ad utilizzare anche altri metodi: se sono timer "grossolani" che devono contare secondi (e non decimi o centesimi) puoi crearti dei clock con l'orologio di sistema e utilizzare i contatori con un impulso di 1 secondo; con lo stesso impulso puoi utilizzare anche delle semplici merker word, se non degli interi memorizzati in una DB.ciao
Gne Inserita: 8 agosto 2009 Segnala Inserita: 8 agosto 2009 Prova con questo (e' un sorgente)FUNCTION "TON" : VOIDTITLE = TIMER ON DELAYAUTHOR : NAME : S_EVERZVERSION : 1.0VAR_INPUT TMR_EN : BOOL ; // Enables timer to accumulate time PresetVal : DINT ; // Preset value ScanTime : INT ; // OB scan time for previous cycleEND_VARVAR_OUTPUT Q : BOOL ; // Set to 1 if timer has timed outEND_VARVAR_IN_OUT ElapsTim : DINT ; // Elapsed timeEND_VARBEGINNETWORKTITLE =//// SET ; U #TMR_EN; SPB RESE; L 0; T #ElapsTim; RESE: NOP 0; //* L #ElapsTim; L #PresetVal; <D ; SPBN SUM; CLR ; O #TMR_EN; SPBN SUM; L #ScanTime; L #ElapsTim; +D ; T #ElapsTim; SUM: NOP 0; //* U( ; L #ElapsTim; L #PresetVal; >=D ; ) ; U #TMR_EN; = #Q; SAVE ; END_FUNCTION
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