Vai al contenuto
PLC Forum


Controllare La Velocita Motore Con Encoder


roberto8303

Messaggi consigliati

...io pero aggiorno hc0 ogni 100ms ed eseguo la differenza ogni 100ms come rileviamo la differenza di impulsi nel tempo se sono entrambi a 100ms ?

Azzarola, Roberto ci sei o ci fai.

Allora ripetiamo.

1 Scatta il primo interrupt. Leggo HCO e memorizzo il valore di HC0, p. e., in VD100

2 Scatta il secondo interrupt dopo 100ms. Leggo HCO e trasferisco la lettura, p. e., in VD102. Eseguo VD104 = VD102 - VD100. Memorizzo facendo VD100 = VD102.

3 al prossimo interrupt ripeto la sequenza 2.

Link al commento
Condividi su altri siti


Memorizzo facendo VD100 = VD102.

ah percio non andava! io non ho memorizzato l ultima lettura... :rolleyes: !!! chiedo umilmente scusa! ora non ho il pc qui altrimenti provavo subito! ora ho capito dove sbagliavo!!

Link al commento
Condividi su altri siti

oh ma una cosa cosi facile eppure ancora non funziona! non riesco a capire dove sbaglio!ora addirittura nelle vdxx mi esce il valore e si incrementa e rimane memorizzato il numero anche ad alberino encoder fermo!

1 Scatta il primo interrupt. Leggo HCO e memorizzo il valore di HC0, p. e., in VD100

2 Scatta il secondo interrupt dopo 100ms. Leggo HCO e trasferisco la lettura, p. e., in VD102. Eseguo VD104 = VD102 - VD100. Memorizzo facendo VD100 = VD102.

3 al prossimo interrupt ripeto la sequenza 2.

Al prossimo interrupt ripeto la sequenza 2 come faccio se il programma cicla iniziando dal primo segmento...quindi rilegge la prima sequenza..non capisco io

ho fatto cosi...

nel int_0

LD SM0.0

MOVD HC0, VD100

LD SM0.0

MOVD HC0, VD104

LD SM0.0

MOVD VD104, VD108 Eseguo la sottrazione di Vd104 -Vd100

-D VD100, VD108

LD SM0.0

MOVD VD100, VD104

nel main invece cè questo

LD SM0.1

CALL SBR_0:SBR0

LD SM0.0

CALL SBR_2:SBR2

LD SM0.1

CALL HSC_INIT:SBR1

nella Sbr_2 ho fatto il calcolo della velocita cosi

LD SM0.0

MOVD VD108, VD112 cioe vd108 diviso 6

/D +6, VD112

sto facendo una confusione enorme non riesco a venirne a capo!

Link al commento
Condividi su altri siti

NOOOOO!

metti HC0 in VD100

VD104 = VD108-VD100

metti VD100 in VD108

Esci da INT0. Stop

Nella SBR2 fai la divisione per calcolare la velocità.

Se visualizzi VD108 in tempo reale (quando vai in debug) dovresti leggere il numero d'impulsi per 100 ms.

Link al commento
Condividi su altri siti

eccomi ho appena eseguito quello che mi hai scritto ora ho vd 104 che va a 0 appena mi fermo e aumenta quando giro veloce l encoder...nella sbr 2 ho la divisione di vd108 : 6 ma esce un numero fisso che aumenta quando ruoto l encoder e mantiene il numero appena mi fermo...

quindi ho usato vd104 : 6 e sembra funzionare bene!!

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...