Vai al contenuto
PLC Forum


Encoder incrementale


mpage

Messaggi consigliati

Buongiorno a tutti,

dispongo di due encoder incrementali collegati a due motori asincroni a loro volta comandati da due inverter. Ho problemi con la comparazione della posizione, non riesco a farlo fermare nella posizione in cui voglio, ho sempre un errore di +o- 2 mm. Cosa consigliate di fare?

Grazie per la collaborazione

Link al commento
Condividi su altri siti


Con i dati che metti a disposizione la risposta potrebbe essere "affidati ad un buon esorcista" :).
Sono meccanicamente uguali?
hanno gli stessi parametri?
sono in anello chiuso o aperto?

 

Link al commento
Condividi su altri siti

Meccanicamente uguali (encoder posizionati non nell'albero motore, ma nella puleggia), sono due assi lineari (X,Y) che utilizzo per lo spostamento di alcuni pezzi in vari punti della macchina.

Stessi identici parametri, unica cosa che cambia la velocità degli inverter, uno va più veloce dell'altro, ma il posizionamento lo faccio a velocità ridotta.

Encoder 500 PPR

Anello aperto

 

Grazie

Link al commento
Condividi su altri siti

stesso errore per entrambi gli assi cartesiani?

uno è verticale o sono entrambi orizzontali?

confronti la quota con il PLC e in prossimità della quota fermi il motore?

si ferma prima o dopo della posizione richiesta e sopratutto stesso comportamento specchiato provenendo da direzioni opposte?

 

 

Link al commento
Condividi su altri siti

Qualsiasi posizionatore completa la missione di posizionamento quando l'errore di posizione è compreso nella soglia massima prevista.

Non è possibile posizionare ad errore zero.

 

Ammesso che gli encoders leggano l'effettiva posizione senza errori, c'è solo un modo per ridurre l'errore: aumentare la risoluzione degli encoders,ridurre i giochi e ridurre la soglia di errore massimo di posizionamento.

 

Tu non dai alcun dato sulla scala impulsi / mm. Se ad esempio 1mm = 1impulso, il tuo errore è già il minimo possibile, anzi sarebbe un ottimo risultato.

Se invece il fattore di scala fosse 100 impulsi = 1 mm, dovresti poter ridurre l'errore di almeno un ordine di grandezza, ovvero dovebbe essere <0.2 mm

Link al commento
Condividi su altri siti

  • 1 month later...

Buongiorno,

ho aumentato la risoluzione e sembra più preciso.

 

Ho un'altra domanda a riguardo:

- Per gestire la femate del motore asincorno in modo che sia più immediata possibile, utilizzate qualche OB particolare tipo OB30 (cycle interrupt = 1ms) e fate ciclare internamente la routine che gestisce la frenatura, oppure conoscete qualche altra tecnica?

Grazie per l'attenzione

Saluti

 

 

Link al commento
Condividi su altri siti

Dipende dalla funzione di posizionamento.

Come hai realizzato questa fuzione? Usi una funzion di libreria Seimens?Se non descrivi in modo completo il tuo sistema non è possiible darti indiczioni valide

Link al commento
Condividi su altri siti

Il posizionamento è di tipo lineare, ho due ingressi A/B che mi arrivano dall'encoder.

HSC è impostato in modalità CONTEGGIO con CONTATORE A/B e CONTEGGIO IN AVANTI.

Da programma vado a fare dei confronti con il valore che leggo dall'encoder, mi calcolo il rallentamento che poi comunico all'inverter, lo stesso iter lo faccio per lo start e stop al motore, mi calcolo una finestra di tolleranza per la fermata. Il tutto pensavo di gestirlo con OB30 con ciclo di interrupt pari ad 1 ms, essendo il tempo ciclo della CPU pari a 3ms.

Funzioni di libreria siemens utilizzo solo CTRL_HSC.

 

Grazie

Link al commento
Condividi su altri siti

Campionare ad 1ms significa che puoi riconoscere una variazione che ha un periodo maggiore di 2ms. Quindi è necessario che la tua finestra di tolleranza corrisponda ad un tempo maggiore di 2 ms.

Cerco di chiarire con un esempio.

Se hai una finestra di +/- 5 impulsi è indispensabile che la frequenza degli impulsi sia <5000Hz, perchè con 5000Hz in 2 ms si contano esattamente 10 impulsi, che è la larghezza della tua finestra.

 

Un posizionamento realizzato in modo corretto, se è necessario un minimo di precisione, prevede che il posizionatore, in questo caso il PLC, generi un riferimento di velocità che segua un profilo ben preciso che, nei casi più comuni, è quello di un trapezio isoscele.

 

Da quello che scrivi si deduce che tu ti limiti a fornire comandi di on-off per marcia e rallentamento.

In questo caso sarebbe più corretto usare il registro di comparazione dell HSC ed il relativo interrupt, con comando diretto della periferia interessata.

Non conosco il 1200, però qusto modo di lavoro era presente nel vecchio S7-2xx, per cui presumo esista ancora nel nuovo modello.

 

Link al commento
Condividi su altri siti

Ho impostato il registro di comparazione dell'HSC con il suo relativo interrupt, in sostanza si crea l'OB40 (in simulazione sembra che funzioni poi domani lo provo in impianto), come priorità di default è impostato a 18, consigli di diminuirla o di lasciarla così?

 

Grazie per l'attenzione

 

 

 

Link al commento
Condividi su altri siti

Dipende dal carico di lavoro e, soprattutto, dal carico di interrupts della CPU.

A sensazione potrebbe anche andar bene il livllo 18.

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