Funzione che esegue la movimentazione di una grandezza generica, che si muove inizialmente ad una certa velocità, verso un punto target da raggiungere con velocità desiderata di crociera e velocità finale.
Sintassi |
real mv_to_vel (i32 return, real pAct, real vAct, real pDes, real vDes, real vFin, real baseTime, real acc [, real dec=acc] [, real perc=0.8]) |
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
return |
Variabile contenente informazioni relative allo stato della funzione (vedi codici di reso).
|
||||||||||||||||||
pAct |
Posizione attuale. |
||||||||||||||||||
vAct |
Velocità attuale. |
||||||||||||||||||
pDes |
Posizione da raggiungere. |
||||||||||||||||||
vDes |
Velocità desiderata (intesa in valore assoluto). |
||||||||||||||||||
vFin |
Velocità finale (intesa in valore assoluto). |
||||||||||||||||||
baseTime |
Base tempi (normalmente SI). |
||||||||||||||||||
acc |
Accelerazione desiderata (intesa in valore assoluto). |
||||||||||||||||||
dec |
Decelerazione desiderata (intesa in valore assoluto). (opzionale, default acc) |
||||||||||||||||||
perc |
Valore percentuale che influisce sulla decelerazione (0-1). (opzionale, default 0.8) Durante i calcoli di arrivo sul punto target, viene valutato il numero di battute necessarie per arrivare dalla posizione attuale a quella desiderata con la velocità vFin specificata. Tale numero viene troncato all'intero inferiore se lo sfrido di battuta è < perc (quindi la decelerazione effettiva sarà un po' più grande di dec) oppure verrà aumentato all'intero seguente se lo sfrido di battuta è > perc (decelerazione risultante minore). |
||||||||||||||||||
Risultato |
Valore della posizione aggiornata. |
||||||||||||||||||
Validità |
Rule. |
||||||||||||||||||
Note |
vFin si intende concorde con la direzione del movimento richiesto (se pDes > pAct, la vFin si intende positiva, diversamente si intende negativa). L'aggiornamento della velocità vAct va fatto esternamente alla funzione a cura dell'utente. |
Se vFin > 0, la posizione target viene oltrepassata, dopodiché la funzione prosegue inerzialmente fintanto che viene invocata. Se vFin = 0, la funzione si ferma sul punto desiderato.
Se il parametro di decelerazione non consente di arrivare da pAct a pDes con la vFin specificata, la mv_to_vel() tende comunque a raggiungere vFin; pDes verrà oltrepassata con una velocità diversa da vFin e il movimento proseguirà inerzialmente con velocità tendente progressivamente a vFin.
NOTA: la funzione può essere chiamata anche con l'asse già in movimento.
Esempio di utilizzo:
|