Limitazione della coppia e controllo dell'avanzamento della coppia
La limitazione di coppia di CODESYS SoftMotion impedisce il superamento dei limiti specificati delle coppie o delle forze degli azionamenti durante i movimenti coordinati. Questi limiti di coppia e forza vengono rispettati in aggiunta ai limiti esistenti per velocità, accelerazione e jerk degli azionamenti. Il requisito per questo è un modello dinamico per la cinematica applicata sotto forma di un blocco funzione che implementa il ISMDynamics
interfaccia dal SM3_Dynamics
biblioteca. Fondamentalmente, un AxesStateToTorque
è necessario un metodo che calcoli le coppie richieste per un dato stato degli assi (per la loro posizione, velocità e accelerazione).
Oltre alla limitazione della coppia, un modello dinamico consente il calcolo delle coppie impostate per un controllo feed forward della coppia. È possibile trovare un esempio di applicazione nel capitolo Modello di robot dinamico.
Casi d'uso
In molte cinematiche, in particolare nelle cinematiche seriali, esiste un accoppiamento di più giunti o di tutti i giunti. Un semplice esempio di ciò è il doppio pendolo con azionamenti nelle articolazioni come mostrato di seguito:
Caso d'uso 1 |
Caso d'uso 2 |
L'azionamento nel primo giunto compie una rotazione di 90°; il secondo giunto non dovrebbe muoversi (caso d'uso 1). Assumendo un secondo giunto passivo, è facile immaginare che il secondo lembo del doppio pendolo ruoterà verso sinistra a causa della sua inerzia. Per impedire questa rotazione, l'azionamento nel secondo giunto deve generare una coppia verso destra. Pertanto, il movimento della prima spinta richiede una reazione della seconda spinta.
L'accoppiamento in direzione opposta esiste, ad esempio, nel caso in cui il primo azionamento si muova a velocità costante mentre il secondo azionamento ritrae il secondo lembo del doppio pendolo (caso d'uso 2). Questo riduce le matrici di inerzia del doppio pendolo rispetto al primo giunto. Per ottenere il momento angolare (il prodotto delle matrici di inerzia e della velocità angolare), occorre aumentare la velocità angolare del primo giunto. Per mantenere costante la velocità angolare, il momento angolare deve essere diminuito modificando la coppia del primo azionamento contro la sua direzione di rotazione. Pertanto, il movimento della seconda spinta richiede una reazione della prima spinta.
Senza un modello dinamico, solo la posizione impostata, la velocità impostata e l'accelerazione impostata possono essere inviate all'azionamento. Nel primo caso, viene definita una posizione impostata costante per il secondo azionamento, indipendentemente dal fatto che il primo giunto sia in movimento o meno. L'unità di controllo nel secondo azionamento deve essere in grado di gestire il fatto che una coppia deve essere generata in un caso e non in un altro caso per gli stessi valori impostati. Il comportamento è simile nel secondo caso. Qui, la stessa velocità impostata costante viene specificata per il primo azionamento, indipendentemente dal fatto che il secondo giunto si muova o meno. Anche in questo caso, l'unità di controllo nell'azionamento deve fare i conti con il fatto che devono essere generate coppie diverse per gli stessi valori impostati.
Con un modello dinamico, le coppie impostate possono essere calcolate e inviate agli azionamenti. Lì possono essere utilizzati come dimensione di feed forward per le unità di controllo. Di conseguenza, l'unità di controllo riceve informazioni aggiuntive che consentono un miglioramento della qualità del controllo.
La limitazione della coppia consente un rispetto più preciso dei limiti dell'azionamento. In molti casi, non è decisiva la limitazione della velocità o dell'accelerazione dell'azionamento, ma la limitazione delle coppie. I vantaggi della limitazione di coppia risultano evidenti dall'esempio del doppio pendolo come sopra descritto quando si confrontano i seguenti movimenti: un movimento del primo motore con il secondo braccio retratto e un movimento del primo motore con il secondo braccio esteso. Nello stato retratto, le matrici di inerzia rispetto al primo giunto sono inferiori rispetto allo stato esteso. Per lo stesso movimento (le stesse curve di velocità e accelerazione dell'azionamento), è quindi necessaria una coppia maggiore nello stato esteso rispetto allo stato retratto. Senza un modello dinamico, i limiti di velocità e accelerazione devono essere impostati in modo che i limiti di coppia siano rispettati in entrambi gli stati. Ciò può far sì che il primo azionamento si muova a una velocità o accelerazione inferiore nello stato retratto rispetto a quanto sarebbe necessario per rispettare i limiti di coppia dell'azionamento. Con un modello dinamico, i limiti di coppia possono essere configurati, presi in considerazione durante la pianificazione del movimento e quindi pienamente utilizzati in entrambi gli stati.
Un esempio leggermente più complesso è il primo caso descritto sopra, in cui il primo azionamento si sta muovendo e il secondo dovrebbe mantenere la sua posizione. La coppia richiesta nel secondo azionamento per mantenere la sua posizione dipende dal movimento del primo azionamento. Se il primo azionamento accelera troppo bruscamente, in linea di principio potrebbe essere violato il limite di coppia del secondo azionamento. Senza un modello dinamico, ciò può essere evitato solo configurando di conseguenza i limiti di accelerazione del primo azionamento. Con un modello dinamico, il limite di coppia configurato del secondo azionamento può essere preso in considerazione durante la pianificazione del movimento e l'accelerazione del primo azionamento può essere limitata.
Nel caso di movimenti o cinematiche più complesse, gli effetti di accoppiamento qui descritti si uniscono ad effetti di accoppiamento ancora più numerosi. Un modello dinamico consente di tenere conto di questi accoppiamenti, con conseguente migliore specifica dei valori impostati e migliore aderenza ai limiti degli azionamenti.
Configurazione del modello dinamico
Un modello dinamico esistente sotto forma di un blocco funzione che implementa il ISMDynamics
interfaccia può essere assegnata a un gruppo di assi tramite il SMC_GroupSetDynamics
blocco funzione. Oltre al modello dinamico, il blocco funzione deve essere utilizzato anche per configurare la direzione e l'entità dell'accelerazione gravitazionale sotto forma di vettore nel sistema di coordinate della macchina.
Considerazione dei carichi
Carichi aggiuntivi (ad esempio, oggetti afferrati o strumenti attaccati) possono essere presi in considerazione mediante il SMC_GroupSetLoad
blocco funzione e modificato in fase di esecuzione. Il ExecutionMode
l'ingresso del blocco funzione può essere utilizzato per definire quando deve avere effetto una modifica del carico (ad esempio, immediatamente o solo dopo che il movimento corrente è stato completato).
Importante
Continuazione con MC_GroupContinue
: In prosecuzione, ogni movimento memorizzato nei dati di prosecuzione mantiene il carico con cui era originariamente comandato. Qualsiasi movimento comandato dopo la continuazione utilizza l'ultimo carico impostato.
Considerazione di un cambio
Le coppie impostate vengono calcolate per la potenza del cambio e non vengono convertite automaticamente nell'azionamento. Il SMC_SetAdditionalConversionFactors
blocco funzione può essere utilizzato per configurare un ulteriore fattore di conversione per la coppia per ciascun asse. Anche il cambio può essere preso in considerazione in questo modo.
Unità
Le forze e le coppie ei loro limiti sono sostanzialmente specificati nell'applicazione in newton (N) o newton metri (Nm). Prima che le forze impostate o le coppie impostate vengano inviate agli azionamenti, è possibile eseguire un ridimensionamento. Per questo lo standard CiA 402 richiede, ad esempio, che le coppie impostate vengano inviate al drive in millesimi della coppia nominale (in mNm).
L'unità per le lunghezze è specifica dell'utente in SoftMotion. Poiché le forze e le coppie sono definite come un'unità fissa (N o Nm), è necessario configurare un fattore di conversione da un'unità di lunghezza specifica dell'utente in metri (a meno che i metri non vengano utilizzati come unità di lunghezza). Questo può essere fatto con il SMC_GroupSetUnits
blocco funzione.
Limitazione di coppia nei sistemi di coordinate in movimento
Se il gruppo di assi si sposta in un sistema di coordinate mobile, allora i limiti di coppia possono essere rispettati solo quando il gruppo di assi può seguire esattamente il sistema di coordinate mobili. Se questo non è possibile e le tolleranze per la deviazione sono configurate mediante SMC_GroupSetPathTolerance
, allora i limiti di coppia possono essere superati quando si tenta di compensare la deviazione. Se si verifica un errore perché le deviazioni sono al di fuori delle tolleranze, il gruppo di assi si arresta. Durante questo arresto, i limiti di coppia possono anche essere superati. Le coppie impostate vengono calcolate di volta in volta e inviate agli azionamenti.
Limitazione della coppia in caso di errore
Se durante la pianificazione viene rilevato un errore (ad esempio, un movimento comandato viola l'area di lavoro), il gruppo di assi si ferma sul percorso comandato in precedenza. In tal modo vengono rispettati i limiti di coppia. Se non è possibile arrestarsi sulla traiettoria (ad es. perché un azionamento segnala un errore), anche i limiti di coppia non possono essere rispettati.
Differenze nell'utilizzo di movimenti ad asse singolo e movimenti coordinati
Fondamentalmente, le coppie impostate vengono calcolate per tutti gli assi che fanno parte di un gruppo di assi con un modello dinamico. Ciò vale sia da fermo sia quando l'asse viene spostato mediante movimenti ad asse singolo (ad es. MC_MoveAbsolute
) oppure l'intero gruppo di assi viene spostato mediante movimenti coordinati (ad es. MC_MoveDirectAbsolute
).
La limitazione di coppia è attiva solo per i movimenti coordinati. La ragione di ciò è che le coppie necessarie di un asse, come descritto sopra, dipendono dalla posizione e dal movimento di alcuni o di tutti gli altri assi nel gruppo di assi. Pertanto, una limitazione della coppia è possibile solo quando tutti gli assi del gruppo di assi possono essere spostati come movimenti coordinati.
Un'eccezione è il SMC_GroupJog
blocco funzioni. Questo blocco funzione non supporta la limitazione di coppia. Si consiglia di utilizzare SMC_GroupJog2
invece.