ferentarius Inserito: 2 marzo 2011 Segnala Share Inserito: 2 marzo 2011 Ciao a tutti, stavo facendo un paio di prove su tempi di apertura valvole, ritardi, ecc.Sto notando che stamattina il tempo passa piu lentamente.Innanzitutto definisco un impulso. UN "Pulse_100Ms" L S5T#100MS SE "Tx100Ms" U "Tx100Ms" = "Pulse_100Ms"poi noto che se faccio un semplice test tipo (incremento una variabile ad ogni impulso) U "Pulse_100Ms" SPBN aa L MW 100 L 1 +I T MW 100aa: NOP 0vedo la mia word salire di pari passo col tempo... o quasi. Infatti in 60 sec di orologio di windows, la mia MW 100 arriva piu o meno a 530, cioè 53 secondi!!!Entrambi i pezzi di codice sono all'interno di una FC chiamata dall'OB1.è colpa del tempo ciclo? Dite che dovrei inserire il secondo pezzo di codice all'interno di OB temporizzato e legarlo al suo tempo?secondo voi qual è il problema del codice di sopra?Grazie a tutti e ciao. Link al commento Condividi su altri siti More sharing options...
ferentarius Inserita: 2 marzo 2011 Autore Segnala Share Inserita: 2 marzo 2011 dimenticavo forse una cosa importante, il PLC lo sto simulando con plcsim. Link al commento Condividi su altri siti More sharing options...
amed Inserita: 2 marzo 2011 Segnala Share Inserita: 2 marzo 2011 Tu hai realizzato un clock che genera un impulso, della durata di una scansione, ogni 100msec. Il periodo è molto breve quindi risente molto del tempo di scansione. Supponedo che la scansione duri 5Msec puoi arrivare ad un ritardo di 5msec. cioè del 5%. Il refressh del registro con il tempo che scorre avviene in modo asincrono, quindi può avvenire subito dopo l'ilstruzione "= "Pulse_100Ms" che diventra quindi ON nella scansione successiva.Secondo me, come tu hai già ipotizzato, dovresti inserire il secondo pezzo di codice all'interno di OB temporizzato e legarlo al suo tempo.Non so dirti quanto errore può introdurre il simulatore percenualmente. Ciao Link al commento Condividi su altri siti More sharing options...
batta Inserita: 2 marzo 2011 Segnala Share Inserita: 2 marzo 2011 Il clock generato con un timer sbaglia inevitabilmente del tempo di una scansione ad ogni ciclo di clock.Per temporizzazioni più precise meglio utilizzare i merker di sistema o gli OB a tempo.Nel caso di necessità di generazione di clock con temporizzazioni personalizzate, per non incrementare continuamente l'errore si può detrarre dal tempo di preset voluto il tempo dell'ultima scansione, che si può leggere in OB1 nella variabile locale "OB1_PREV_CYCLE".Essendo però la base tempi minima dei comuni timer S7 di 10 ms, ci si dovrà comunque accontentare di una approssimazione.Altro metodo potrebbe essere quello di creare una specie di timer utilizzando sempre OB1_PREV_CYCLE.Per generare un clock, per esempio ogni 1000 ms, basta incrementare ad ogni scansione una variabile col valore di OB1_PREV_CYCLE. Quando il valore supera il preset (1000 nell'esempio) si genera il clock e si sottrae 1000 dal conteggio.Attenzione: non si deve azzerare il conteggio, ma sottrarre dal conteggio il valore di preset, in modo da non perdere eventuali millisecondi eccedenti. Link al commento Condividi su altri siti More sharing options...
ferentarius Inserita: 2 marzo 2011 Autore Segnala Share Inserita: 2 marzo 2011 bene grazie ad entrambi, ora la situazione mi è molto piu chiara.non essendo tempi cosi critici da dover essere stra precisi credo che li possa lasciare anche cosi, magari però cercando di non usare (come invece ho fatto nel mio esemio) una base di tempo cosi piccola (100ms) perchè come dite anche voi l'errore è sicuramente maggiore rispetto a prendere una base di tempi di 1sec o di 1 min.Quando avrò bisogno di tempi piu precisi credo che opterò per l'opzione OB temporizzati. E se non mi soddisferà neanche questo passerò a provare l'idea di Batta (che però la vedo un pò piu complessa).Grazie di nuovo a tutti.Bye. 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