Vai al contenuto
PLC Forum


CONTATORE VELOCE - RILEVARE SE STA CONTANDO


IlFincoITA

Messaggi consigliati

Ciao! avrei bisogno di sapere se un contatore veloce, uno di quelli a bordo della CPU 1214C, sta incrementando il suo valore o no. In pratica per osservare se una ruota sta effettivamente girando. Avevo pensato a dei timer che vedono se il sensore è attivo o no in un certo tempo. Però dovrei rilevare se è ferma o no anche per tempi estremamente brevi. Da qui l'uso del contatore veloce che mi produce un gran numero di conteggi anche per spostamenti veramente minimi. Mi suggerireste come pensare ad una funzione per questo impiego? 

Link al commento
Condividi su altri siti


Potresti verificare, 1 sec o mezzo secondo dopo l'attivazione dell uscita del motore, se la variabile dove salvi il conteggio è cambiata o no se no sai che non ha girato

Link al commento
Condividi su altri siti

Dovrebbe bastare verificare ad ogni scansione di programma se il valore di conteggio è cambiato rispetto alla scansione precedente, basta che appoggi il valore in una variabile e alla scansione dopo verifichi il valore a cui lo hai appoggiato precedentemente, verifichi l'eventuale variazione e risposti il valore di conteggio nella medesima variabile, alla scansione dopo ripeti..... e così via all'infinito.

Questo in maniera abbastanza banale, non so se però esiste comunque un registro diagnostico del PLC che certifica la variazione del contatore, di sicuro dovrebbe esserci un registro diagnostico che verifica la rotazione in avanti o indietro non so se c'è anche quello di verifica di movimento effettivo scansione per scansione di programma

Link al commento
Condividi su altri siti

Io farei cosi:

 

IF FirstScan             //Aggiorno variabile al primo ciclo per evitare che alla prima scansione con encoder fermo si verifichi comunque quanto descritto nell'IF seguente

AppoggioValContatore := ValContatore;

END_IF; 

 

//Eseguito ad ogni scansione

IF ValContatore <> AppoggioValContatore

Fai questo....ecc

ELSE

Fai quest'altro...ecc

END_IF

AppoggioValContatore := ValContatore; //aggiornamento variabile appoggio

 

ma se hai la possibilità di fare come dice acquaman credo sia la soluzione migliore.

 

Link al commento
Condividi su altri siti

1 ora fa, step-80 scrisse:

 

ma se hai la possibilità di fare come dice acquaman credo sia la soluzione migliore.

 

 

Infatti mi pare sia la soluzione migliore, se la velocità è diversa da zero...

Link al commento
Condividi su altri siti

Ciao! Grazie delle idee... ma quindi usando ad esempio la funzione CTRL_HSC_EXT che dovrebbe riguardare direttamente i contatori veloci della CPU?

Link al commento
Condividi su altri siti

Non conosco la funzione in questione, il mio esempio era generale...io per esempio uso spesso codice simile per eseguire in automatico istruzioni che invece richiederebbero un execute ...tipo l'operatore inserisce un dato di accelerazione di un asse diverso dal precedente ma per renderlo effettivo bisognerebbe lanciare un istruzione...ecco che allora dentro l'IF metto l'execute , in questo modo in automatico viene lanciato il blocco al variare del dato.

 

Credo comunque che acquaman si riferisse alla configurazione del tuo contatore. Se lo configuri come 'conteggio frequenza', o qualcosa di simile, probabilmente dentro qualche word di stato ti butterà un dato relativo alla velocità alla quale il tuo encoder sta girando. Non conoscendo il plc in questione però, le mie sono soltanto ipotesi. 

Modificato: da step-80
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...