Funzione che porta gli assi (1-:-32) indicati verso il valore di posizione target prefissato con un profilo velocità verso tempo a 'esse' (con jerk controllato).
La conseguenza è un movimento più dolce.
|
i32 mva_to_n_cj (i32 start, stru_mvitpcj stru [, i32 nDef=1] [, i32 holdFlag=0] [, real fr=1])
|
|
Flag per abilitare la riassunzione dei dati (solo se assi fermi).
Il flag viene azzerato da RTE quando i dati vengono assunti.
|
|
Struttura di tipo stru_mvitpcj contenente i parametri relativi alla movimentazione.
|
|
Dimensione dell'array di informazione (numero di assi coinvolti). (opzionale, default 1)
|
|
Flag per comandare lo stato di HOLD alla missione. (opzionale, default 0)
|
|
Valore di riduzione delle velocità (0-1). (opzionale, default 1)
Vedi fr.
|
|
Variabile contenente informazioni relative allo stato della funzione (vedi codici di reso).
|
|
-5 [M_ILLEGAL_ARGS]
|
Parametro illegale.
|
-6 [M_IN_ALARM]
|
Allarme (ip asse già impostata).
|
2 [M_POSITIONING]
|
Posizionamento iniziale.
|
6 [M_REACHED]
|
Target raggiunto.
Ciò significa che o la direzione è 0 e l'asse è fermo, oppure la direzione è +1 o -1 e l'asse ha raggiunto uno dei paracarri.
|
14 [M_HOLDED]
|
Movimento arrestato causa flag HOLD.
Viene restituito anche nei casi in cui la velocità desiderata dell’asse viene impostata a 0 oppure il feedrate viene impostato a zero.
|
15 [M_ACCEL]
|
Accelerazione in corso.
|
16 [M_AT_SPEED]
|
Movimentazione a regime.
|
17 [M_DECEL]
|
Decelerazione in corso.
|
|
|
Rule.
|
|
La missione può coinvolgere più assi (max 32).
Essi verranno interpolati linearmente al fine di raggiungere tutti insieme i loro target.
|
Diagnostica
•Genera allarme 9900 ill. Arg. A:2 T:x ST:xxx se numero di asse illecito o accelerazione/velocità/jerk < 1e-9
•Genera allarme 9900 ill. Arg. A:3 T:x ST:xxx se acc = 0
•Genera allarme 9903 Par. are changed T:x ST:xxx se cambiata sequenza assi in corsa
•Genera allarme 2800 Double Position Set T:x ST:xxx se già imposta la ip dell'asse |
Esempio di utilizzo:
stru_mvitpcj m1[3]
int restartFlag
motion
if(first_time())
rr(1000) = 100
rr(1001) = 10
rr(1002) = 20
rr(1003) = 40
rr(2000) = 100
rr(2001) = 10
rr(2002) = 20
rr(2003) = 40
rr(3000) = 100
rr(3001) = 10
rr(3002) = 20
rr(3003) = 40
restartFlag = true
endif
m1[0].nAx = 1
m1[0].target = rr(1000)
m1[0].v = rr(1001)
m1[0].acc = rr(1002)
m1[0].dec = rr(1003)
m1[0].decH = max_acc(1)
m1[1].nAx = 2
m1[1].target = rr(2000)
m1[1].v = rr(2001)
m1[1].acc = rr(2002)
m1[1].dec = rr(2003)
m1[1].decH = max_acc(2)
m1[2].nAx = 3
m1[2].target = rr(3000)
m1[2].v = rr(3001)
m1[2].acc = rr(3002)
m1[2].dec = rr(3003)
m1[2].decH = max_acc(3)
esito = mva_to_n_cj(restartFlag, m1[0], 3, hold, fr)
if(rise(esito = M_REACHED))
if(avanti)
inc(rr(1000),100)
inc(rr(2000),100)
inc(rr(3000),100)
avanti = false
restartFlag = true
else
dec(rr(1000),100)
dec(rr(2000),100)
dec(rr(3000),100)
avanti = true
restartFlag = true
endif
end_motion
|
|