Vai al contenuto
PLC Forum


encoder ssi aggiuntivo


daniele__32

Messaggi consigliati

Ciao a tutti, ho un sistema con un asse lineare gestito dal suo motore brushless e quindi dal suo driver. sul sistema e' stato inoltre installato un secondo encoder ssi assoluto che avrebbe la funzione di ridondare il sistema, ovvero di controllare sempre che non ci sia divergenza fra i valori di posizione dati dal resolver del motore e l encoder ssi.

questo ssi lo sto gestendo tramite una scheda TposInput controllata da una cpu 1500 safety

il controllo di errore di inseguimento deve essere quindi implementato nel plc. la domanda o meglio i dubbi che ho sono:

Homing sistema: andando a cercare il sensore di homing il driver del motore setta la quota zero sulla posizione attuale. ma sull encoder assoluto come faccio a scrivere ZERO in caso di homing?

ovviamente serve piu al resolver l homing che all SSI in quanto assoluto. ma almeno la prima volta alla prima accensione devono poter avere la quota ZERO sul sensore di riferimento

 

Conteggio spazio percorso ..l albero del motore e' dotato di riduttore con un sistema cinghia ruote dentate per muovere linearmente l asse

L encoder ssi e' calettato su uno svolgitore a filo, e l estremo del filo e' fissato sulla parte mobile del sistema che si muove. In caso in cui la slitta parta da quota Zero, quindi dopo aver intercettato il sensore di homing, il valore di conteggio (actual position) dei due trasduttori ( resolver sul brushless ed encoder SSI) mi daranno fuori esatamente lo stesso valore? o a livello meccanico bisogna capire e valutare se ci sono da fare delle scalature.

Spero di essere stato chiaro e spero di poter avere feedback..

grazie mille a tutti

Link al commento
Condividi su altri siti


37 minuti fa, daniele__32 ha scritto:

encoder assoluto come faccio a scrivere ZERO

solitamente gli encoder SSI hanno un ingresso digitale per impostare lo zero, vedi sul manuale dell'encoder.

 

37 minuti fa, daniele__32 ha scritto:

livello meccanico bisogna capire e valutare se ci sono da fare delle scalature

è così, non è detto che tirino fuori lo stesso valore, anzi molto poco probabile! Che io sappia gli encoder SSI sono solo assoluti, di conseguenza devi convertire il valore da gradi in posizione lineare

 

ciao

Link al commento
Condividi su altri siti

21 ore fa, incus ha scritto:

SSI hanno un ingresso digitale per impostare lo zero

se la comunicazione è tramite ingressi ed uscite digitali, se è con bus di campo solitamente è un bit ad impostare lo zero, ma la risposta sta sempre nel manuale dell'encoder stesso

Modificato: da incus
Link al commento
Condividi su altri siti

incus, da manuale dell encoder ce un pin dedicato per lo zero..io pero il mio encoder lo sto gestendo tramite oggetto tecnologico SSi Abs Encoder tramite una scheda TposInput

Link al commento
Condividi su altri siti

15 ore fa, daniele__32 ha scritto:

io pero il mio encoder lo sto gestendo tramite oggetto tecnologico SSi Abs Encoder tramite una scheda TposInput

e fino a qui ci siamo, tramite l'interfaccia di parametrizzazione imposti una delle due uscite disponibili sulla scheda come "Use by use program"

image.png.a001ea7c7fc70c710b14bf3576cc8a1c.png

In questo modo puoi comandare la relativa uscita, in questo caso la DQ0, tramite il programma utente andando ad interagire sulle seguenti variabili della DB di istanza dell'oggetto tecnologico:

image.png.24f561b7fbeb9958310842382b869c24.png

Fatto questo colleghi il pin del tuo encoder per impostare lo zero all'uscita di cui sopra ed il gioco è fatto.

Link al commento
Condividi su altri siti

18 ore fa, daniele__32 ha scritto:

da manuale dell encoder ce un pin dedicato per lo zero..io pero il mio encoder lo sto gestendo tramite oggetto tecnologico SSi Abs Encoder tramite una scheda TposInput

Indipendentemente da come tu gestisca l'encoder, lo zero viene fatto tramite quel pin.

Puoi usare un'uscita del PLC che attivi quando MC_Home dell'asse ti dà il Done.

Oppure, puoi fare una sola volta, manualmente, l'azzeramento dell'encoder. O, forse, non ti serve nemmeno: trattandosi di un encoder a filo, probabilmente esce dalla fabbrica già azzerato. Poi, per far coincidere il conteggio dell'encoder sul motore e quello dell'encoder a filo, se sei sicuro che l'encoder a filo non  scavalla mai oltre lo zero o oltre il massimo, sul Done di MC_Home, anziché azzerare l'encoder, puoi calcolare un offset, e poi calcolare la posizione fornita dall'encoder a filo tenendo conto di questo offset.
Esempio:

IF inst_MC_Home.Done THEN
	#offset := #TO_AxisActPos - #SSI_ActRawPos;
END_IF;

#SSI_ActPos := #SSI_ActRawPos + #offset;

In questo modo potresti anche allineare la posizione dell'encoder a filo con quella dell'encoder sul motore in qualsiasi istante: con un comando da HMI, con il segnale di homing dell'asse, o come meglio credi.

 

Occhio ad impostare correttamente, nel modulo TM_PosInput, i bit dell'encoder, come indicato nel manuale dell'encoder stesso.

Modificato: da batta
Link al commento
Condividi su altri siti

grazie mille per le risposte...bene..allora diciamo che posso usare o la DQ0 del modulo TOPosInput che forse viene piu facilmente ( soluzione di batta e' piu elegante ) ma tanto mi basta assegnarli lo zero una volta sola sull SSI essendo assoluto..diciamo quindi che DQ0 impegnata per funzione di ZERO encoder ssi.

Diciamo Quindi che per il discorso ZERO....ok

 

Secondo Punto ( il piu delicato)

nella mia applicazione, devo essere in grado di verificare costantemente

che il valore di posizione letto dal driver dell'asse mobile

sia lo stesso di quello  letto dall'encoder SSI.

Stavo pensando di usare questa logica:

NewReferenceValue0 = ActualPosition Axis – Offset  (valore letto dal resolver)

NewReferenceValue1 = ActualPosition Axis + Offset (valore letto dal resolver)

e poi confrontare sempre

NewReferenceValue0 <ActualPos_EncSSI <NewReferenceValue1

dove NewReferenceValu 0,1 sono  i 2 limiti inferiore e superiore

e in caso di confronto non coerente ( overo che ce uno sfasamento fuori Limite fra Resolver
e SSI causa uno slittamento per esempio)

 generare un allarme come Errore di inseguimento

Puo essere fattibile?

grazie mille ancora

 


 
 
Modificato: da daniele__32
Link al commento
Condividi su altri siti

Sì, ma non fai prima a fare la differenza tra la posizione indicata dal resolver e la posizione indicata dall'encoder SSI, e controllare che il valore assoluto non superi il limite consentito?

 

Esempio:

posDifference = TO_actAxisPos - actPos_SSI;
if ABS(posDifference) > errorThreshold THEN
...
...
END_IF;

 

Link al commento
Condividi su altri siti

dal manuale del oggetto tecnologico  leggevo anch che l fb di richiamo per gestire l encoder...bisognerebbe chiamarla nell OB61..

 

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