Vai al contenuto
PLC Forum


Impulso Ogni Secondo


roberto8303

Messaggi consigliati

Devo incrementare la dw10 ogni secondo, per far cio ho messo un temporizzatore che mi da l impulso ogni secondo,ho fatto cosi, solo che non funziona! con il contatto negato t37 ogni secondo il contatore si azzera ma non mi da l impulso al primo segmento!! come posso fare?

LD I0.3

A T37

EU

+D 1, VD10

LD I0.4

AN T37

TON T37, 10

Link al commento
Condividi su altri siti


ho risolto non poteva funzionare forse perche non avevo fatto questo passaggio

LD T37

= M0.0

e poi cosi

LD I0.4

AN M0.0

TON T37, 10

noto pero, che i secondi non scorrono in modo uniforme, dipende quindi dal tempo di scansione della cpu che lo passa per elaborare il programma?

e se faccio 4 contatori del genere, avro molta impricisione nel conteggio?

Link al commento
Condividi su altri siti

i secondi non scorrono in modo uniforme, dipende quindi dal tempo di scansione della cpu che lo passa per elaborare il programma?

Potrebbe essere; così come potrebbe dipendere dalla velocità che hai impostata nella comunicazione dell'interfaccia PPI, prova ad aumentarla.

Altra strada per risolvere il tuo problema, potrebbe essere l'utilizzazione del bit di clock dello special merker byte SMB0, bit SM0.5, che fornisce un'impulso di clock di 1 secondo (0,5 sec. off, 0,5 sec. on) che incrementa un contatore.

Modificato: da busanela
Link al commento
Condividi su altri siti

Ciao busanela! ho provato con L Sm0.5 e va bene lo stesso, in effetti il tempo si trova, mi andava a scatti nella tabella di stato in real time, ma contando con l orologio alla mano si trova.

Mi serve per gestire l alternanza di tre motori, che devono lavorare lo stesso tempo per ''uniformare'' l usura...quindi conto il tempo di lavoro di ognuno con la risoluzione di un secondo.

ora pero stavo cercando di capire quanti confronti servono per stabilire la partenza del motore che ha meno secondi ''contati'' nella propia Dword.

Solo che ho paura siccome, ancora non ho provato, che tre confronti soltanto non bastano per sapere chi dei tre ha lavorato meno, e stavo pensando di implementare una piccola formula matematica di A B C ( motore 1 -2-3 quindi A B C) e stabilire secondo il risultato che vien fuori cioè chi ha lavorato meno.

Link al commento
Condividi su altri siti

tre confronti soltanto non bastano per sapere chi dei tre ha lavorato meno, e stavo pensando di implementare una piccola formula matematica di A B C ( motore 1 -2-3 quindi A B C) e stabilire secondo il risultato che vien fuori cioè chi ha lavorato meno.

Di confronti te ne occorrono tre e non conosco nessun algoritmo di calcolo che renda il confronto più semplice.

devi semplicemente utilizzare dei salti nei casi che le condizioni di confronto siano o vere o false: se DW1>DW2 ( altrimenti ...)e se DW2>DW3 (altrimenti ...) e anche se DW1>DW3 (altrimenti ...) allora la pompa 3 ha il minor tempo lavoro.

Link al commento
Condividi su altri siti

Perfetto grazie, il mio problema era all inizio, utilizzando il semplice confronto quando tutti i tre tempi erano uguali non partiva nessuno! invece con il tuo consiglio di usare la condizione ''if ed else'' , posso predisporre anche il motore che sara sempre per primo a partire se non sono verificate le condizioni di ore lavorative! grazie busanela! :thumb_yello:

Link al commento
Condividi su altri siti

Ho messo in funzione i tre motori con il programma di alternanza, un mio collaboratore mi faceva notare questo.

il programma che ho fatto funziona cosi

parte prima A

appena si ferma parte B

appena si ferma B parte C faccio un esempio con i numeri

A= 5 ore

si ferma con il tasto stop o galleggiante A , parte B e inizia a fare ad esempio 3 ore se rifermo con il galleggiante, e riparto subito, riparte sempre B perche era a 3 ore e il sistema non si predispone su C finche B non supera le 5 ore che ha fatto A.

quindi B se non viene fermato puo superare le 5 ore e arrivare tipo a 10 ore finche non viene rifermato.

chiedo: è normale secondo voi che C che parte da 0 ore e deve recuperare tutte le 10 ore? cioe anche se nell arco delle 10ore interviente il galleggiante piu volte, riparte sempre C ? oppure ad ogni fermata (stato galleggiante) si deve far girare il motore con il numero piu basso di ore lavorative?

non so se sono riuscito a spiegare bene :(

Link al commento
Condividi su altri siti

è normale secondo voi che C che parte da 0 ore e deve recuperare tutte le 10 ore? cioe anche se nell arco delle 10ore interviente il galleggiante piu volte, riparte sempre C ?

Se la pompa C ha il minor numero di ore lavorate, partirà sempre lei fino a chè non supera il numero di tempo lavoro di A o di B. Se per cambiare C deve superare il tempo di B senza valutare se A ha un tempo minore, c'è qualche cosa da rivedere nel ciclo impostato.

Link al commento
Condividi su altri siti

anche secondo me c è qualcosa che non va, ho fatto solo tre confronti, all inizio pero devo per forza stabilire chi deve partire prima.

parte A , poi si ferma

A=5ore

gia da adesso come faccio a stabilire se non con una sequenza logica se deve partire B o C in quanto entrambi sono a 0 ore! :senzasperanza:

Link al commento
Condividi su altri siti

gia da adesso come faccio a stabilire se non con una sequenza logica se deve partire B o C in quanto entrambi sono a 0 ore!

Poni in un confronto anche il segno di "=": per es., se A<=B (else ...)e se B<C (else ...) e se C<A (else ...) fai partire la pompa A, (else ...). In questo caso, all'avviamento o quando per coincidenza le pompe avranno lo stesso numero di ore, partirà sempre la pompa A.

Link al commento
Condividi su altri siti

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...