Home → HIT-MIKRO-AN-010-0-202606_Gestione drive HIWIN EtherCAT con TwinCAT 3 → Printer Friendly Version
HIT-MIKRO-AN-010-0-202606_Gestione drive HIWIN EtherCAT con TwinCAT 3
- 1. Premesse
- 2. Introduzione
- 3. Configurare gli ingressi digitali del drive su Master
- 4. Inizializzazione encoder assoluto multigiro
- 5. Homing (metodo -3) con asse virtuale
- 6. Homing con asse virtuale
- 7. Touch Probe
1. Premesse
1.1. Versione
|
REV. |
DATA |
NOTE |
|
0 |
Giugno 2026 |
Prima Emissione |
1.2. Requisiti
Nel seguito, si farà riferimento ai seguenti:
|
Oggetto |
Versione |
|
THUNDER |
1.14.13.0 o superiore |
|
MDP |
2.14.9 o superiore |
|
Drive |
ED1F-Ex |
|
Modalità operativa |
Tutte |
|
Motore |
Tutti |
Per ulteriori informazioni, fare riferimento alla seguente documentazione HIWIN:
· E1 Series Servo Drive User Manual V3.2 (EN) o più recente
· E Series Servo Drive Thunder Software Operation Manual V3.6 o più recente
· E Series Servo Drive EtherCAT Communication Command Manual V1.7 o più recente
· Application Note E Series EtherCAT Drive Complete Setup with Beckhoff TwinCAT 3 V1.0 (EN) o più recente
1.3. Contatti utili
|
Indirizzo |
HIWIN Italia Via Archimede 45 / 47 20864 Agrate Brianza (MB) Italia |
|
Tel. |
+39 039 287 61 68 |
|
Fax |
+39 039 287 43 73 |
|
Informazioni |
|
|
Supporto tecnico |
|
|
Sito web |
2. Introduzione
2.1. Prerequisiti
· Il drive HIWIN usa la versione firmware più recente disponibile. Eventualmente, si consiglia di scaricare la versione più recente di THUNDER (download qui: https://www.hiwin.it/download/software/drive-e-servomotori ) e procedere all’aggiornamento firmware (Cap. 3.4 del manuale THUNDER).
· Il drive HIWIN è stato correttamente configurato e il test tramite THUNDER non ha evidenziato anomalie.
· Il canale d’accesso del drive è impostato su Controller:
· Il file ESI corretto è stato importato in TwinCAT.
Per verificare il file ESI corretto, fare riferimento al file C:\Thunder\doc\ESI Files\ ESI Files Release Notes.pdf .
2.2. Nomenclatura variabili in TwinCAT 3
|
nome_variabile AT %..... : tipo_di_dato; |
|
|
nome_variabile |
Nome variabile, scelto a piacere |
|
AT |
Parola chiave, indica l’indirizzo in cui la variabile verrà mappata |
|
%x |
Indirizzo in cui mappare la variabile: Q (uscita), I (ingresso), W (word; in questo caso le prime due variabili sono word), D (double word; in questo caso l’ultima variabile è double word) NOTA: quest’ultima lettera dà informazioni sullo spazio da riservare in memoria. |
|
: tipo_di_dato |
Tipo di dato della variabile. Deve essere coerente con la dimensione riservata mediante l’operatore ‘%’. |
|
; |
Simbolo chiave per terminare la riga di codice. |
2.3. Definizioni
· sNetId: indirizzo dell’interfaccia del master EtherCAT:
· nSlaveAddr: Indirizzo dello Slave EtherCAT:
· nSubIndex / nIndex: index e subindex su cui si vuole scrivere il valore;
· pDstBuf / pSrcBuf: indirizzo della variabile di appoggio su cui si definirà il valore da scrivere;
· cBufLen: lunghezza in byte della variabile da scrivere (uguale alla lunghezza in byte dell’index). Ad es. l’index 3200 ha lunghezza 32bit (quindi 4 byte); il valore da settare sarà dunque 4 (la funzione SIZEOF calcola in automatico il numero di byte della variabile di appoggio che si sta utilizzando):
· bExecute: avvia la scrittura.
3. Configurare gli ingressi digitali del drive su Master
3.1. Configurare gli ingressi digitali del drive su Master
Di default gli input del drive E1 non sono linkati automaticamente alla variabile di riferimento dell’asse software; è necessario farlo manualmente nel seguente modo.
· La variabile di riferimento è la nState8 riferita agli Input del Drive:
· Selezionare il link ai Digital Inputs e dare l’ok (è necessario mettere il flag a “Tutti i tipi”):
Dato che il PDO relativo ai Digital Inputs ha grandezza di 4 byte, mentre la variabile di appoggio nState8 ha grandezza di un solo byte, è necessario definire un corretto offset affinché la mappatura e lettura degli ingressi avvenga in maniera corretta.
· Nella schermata successiva, dare le seguenti impostazioni e poi cliccare OK:
L’offset di 16 bit è necessario perché gli ingressi digitali, nei drive HIWIN, sono mappati a partire dal bit 16:
A questo punto cliccare su Activate Configuration per rendere le modifiche effettive.
4. Inizializzazione encoder assoluto multigiro
4.1. Inizializzazione encoder assoluto multigiro
Quando si utilizzano servomotori con encoder assoluto multigiro (EM1-x-M-xx-2-x-F-x-x) è necessario inizializzare l’encoder nei seguenti casi:
· Alla prima messa in servizio del motore;
· Qualora venga scollegato il cavo encoder dal motore;
· Viene sostituito il motore;
· Si scarica la batteria tampone e il drive viene spento.
|
NOTA |
A seguito di un’inizializzazione dell’encoder, si raccomanda di eseguire almeno un azzeramento (Homing) del motore. |
|
|
In caso di perdita dell’inizializzazione, compare l’allarme AL.800:
Tramite EtherCAT, è possibile leggere quest’errore dall’oggetto 603Fh (Error code); l’oggetto 603Fh riporterà il valore FF21:
È possibile inizializzare l’encoder da THUNDER, connettendosi direttamente al drive:
Ed eseguendo la procedura dall’apposita schermata:
Al termine della procedura, è necessario salvare su Flash e riavviare il drive.
In alternativa, è possibile le stesse operazioni da Master EtherCAT scrivendo una procedura custom (maggiori informazioni al cap. 3.3.1 del manuale EtherCAT):
· Impostare l’oggetto 3200h = 1;
· Attendere che il valore di 3200h diventi 4:
· Riavviare il drive impostando 3215h = 1;
· Dopo il riavvio del drive, accertarsi che l’errore AL.800 sia scomparso:
Per leggere e scrivere gli oggetti EtherCAT, è possibile usare i blocchi FB_EcCoESdoWrite e FB_EcCoESdoRead.
Ad es.:
· Scrivere 3200h = 1:
· Leggere 3200h:
· Riavviare il drive (3215h = 1):
5. Homing (metodo -3) con asse virtuale
5.1. Homing (metodo -3) con asse virtuale
Per la seguente procedura, si ipotizza di gestire il drive tramite asse virtuale (NC).
· Impostare 6098h (Homing method) = -3:
· Impostare la modalità di Homing tramite il blocco FB_WriteDriveOperationMode:
· Abilitare il drive tramite MC_Power:
· Impostare a 1 il bit della ControlWord, usando il blocco MC_WriteNcIoOutput:
· Se l’Homing è stato eseguito con successo, il feedback di posizione sarà circa 0:
· L’Homing -3 genera il warning AL.941, che indica che la nuova posizione di Home va salvata su Flash. È possibile leggere i warning dagli oggetti 3110h e 3111h:
· Disabilitare il drive:
· Salvare su Flash impostando 3216h = 1. Il valore torna automaticamente a 0 una volta concluso il salvataggio:
· Riavviare il drive impostando 3215h = 1. Il valore torna automaticamente a 0 una volta eseguito il riavvio:
· Se tutte le operazioni sono state effettuate correttamente, la posizione sarà ancora circa 0 e non ci saranno più allarmi / warning attivi nel drive:
6. Homing con asse virtuale
6.1. Homing con asse virtuale
Per la seguente procedura, si ipotizza di gestire il drive tramite asse virtuale (NC).
NOTA: Essendo un homing relativo al PLC e non al drive, non verrà azzerata la posizione nel drive ma solo quella nel PLC.
Anzitutto, occorre configurare gli ingressi digitali come indicato al Cap. 3.
È possibile verificare che la lettura degli ingressi sia corretta. Nel seguente esempio utilizziamo l’ingresso I5, il valore atteso è 2^4 = 16:
Lo step successivo è la configurazione della modalità di Homing, dalla sezione Enc à Parametro à Homing:
![]()
![]()
![]()
L’Homing che andremo ad eseguire prevede un movimento in direzione positiva alla ricerca di un sensore di homing (impostato sull’ingresso I5). Dopodiché il motore dovrà invertire il senso di rotazione e cercare la tacca di Index.
Perciò impostiamo:
- Invert Direction for Homing Sensor Search: FALSE.
Direzione della ricerca del sensore di Home; ‘FALSE’ = direzione positiva.
- Invert Direction for Synch Impuls Search: TRUE.
La tacca di Index verrà cercata invertendo la direzione di moto.
- Home Position: 0.
Valore di posizione che si vuole assegnare una volta individuata la tacca di Index.
- Reference Mode: Hardware Synch (feedback reference pulse).
Modalità di homing che vogliamo eseguire (in questo esempio, sensore di homing + tacca di index)
NOTA: La modalità ‘Homing Sensor Only’ non prevede la successiva ricerca della tacca di Index.
- Homing Sensor Source: Digital Input 5 (Active High).
Ingresso digitale a cui è collegato il sensore di Homing (in questo esempio, I5).
Dopo aver scaricato la configurazione, è possibile eseguire l’homing utilizzando i due fb standard: MC_POWER e MC_HOME, come nel seguente esempio:
· Abilitare il drive tramite Enable di MC_Power;
· Avviare l’homing tramite Execute di MC_Home.
![]()
Il grafico di seguito mostra la corretta esecuzione della modalità di Homing (NB. ALM_RST nel grafico corrisponde al segnale di ingresso I5):![]()
![]()
![]()
![]()
1. Inizio Modalità Homing
2. Rilevato sensore di Homing, inversione di marcia
3. Rilascio del sensore di Homing, inizio ricerca tacca Index
4. Tacca di Index rilevata, motore si ferma
Dal fb ReadActualPosition possiamo verificare che la posizione venga azzerata correttamente.
NOTA: Il valore di posizione alla fine della sequenza di homing sarà leggermente diverso da zero; ciò è dovuto al tratto finale in decelerazione che esegue l’asse dopo aver individuato la tacca di index.
È possibile modificare le velocità dell’asse durante le operazioni di Homing dalla sezione riportata di seguito:
![]()
![]()
Ai seguenti link è possibile trovare documentazione più dettagliata sugli argomenti:
Configurazione Homing:
MC_Home:
https://infosys.beckhoff.com/english.php?content=../content/1033/tcplclibmc2/458433931.html&id=
7. Touch Probe
7.1. Touch Probe
In questa sezione verrà illustrato l’uso della funzione Touch Probe senza però ricorrere al blocco MC_TouchProbe.
La funzione Touch Probe, negli azionamenti HIWIN, viene utilizzata per rilevare l’attivazione del segnale di index dell’encoder (in fase di azzeramento) con tempi di scansione inferiori rispetto ai tempi di lettura di un ingresso digitale standard.
Oltre all’utilizzo per l’azzeramento della posizione, è possibile configurare questa funzione in modo che rilevi l’attivazione di un input digitale appositamente configurato e che memorizzi la posizione dell’asse (lineare o rotativo) all’attivazione di tale segnale. In questo caso, il tempo di scansione è quello di un segnale digitale standard.
7.2. Prerequisiti
· I seguenti PDO sono inclusi in scambio:
o Touch Probe Status (60B9h, TxPDO)
o Touch Probe 1 positive edge (60BAh, TxPDO)
o Touch Probe function (60B8h, RxPDO)
7.3. Configurazione lato THUNDER
È necessario configurare il drive solo qualora si voglia usare un ingresso digitale come Touch Probe (al posto della tacca di zero encoder).
Nello specifico, occorre configurare un ingresso digitale come “EXT_PROBE1”.
7.4. Configurazione lato master EtherCAT
Anzitutto, occorre configurare gli ingressi digitali come indicato al Cap. 3.
Per verificare che la mappatura sia correttamente avvenuta, è possibile attivare l’ingresso fisico cablato sul drive in I1 e monitorare il valore letto da TwinCAT.
Monitorando i segnali inviati dall’azionamento, nel campo Digital Inputs, attivando il segnale I1 si osserverà un valore di 65536 (2^16).
Se la mappatura è stata eseguita correttamente, attivando lo stesso segnale ma monitorandolo i segnali ricevuti dal master (quindi il campo nState8), si dovrà leggere il valore 1.
Definiamo quindi le seguenti variabili:
Una volta create le variabili, è necessario compilare la soluzione affinché vengano effettivamente acquisite dal compilatore.
Una volta che le variabili sono state acquisite, è possibile mappare i messaggi scambiati tra master ed azionamento direttamente in queste variabili, e utilizzarle quindi per la gestione dello scambio dati, in questo caso relativo alla funzione Touch Probe.
Nell’esempio sopra, l’oggetto “Touch Probe status” viene mappato nella variabile WORD w_touchProbeEnabled definita nella sezione GVL del programma PLC.
Gli altri oggetti necessari alla gestione della funzione sono stati mappati secondo la stessa logica.
A questo punto è possibile testare il funzionamento dell’architettura e della logica.
La logica interna all’azionamento è presentata dal seguente schema e si riferisce, in questo caso, al funzionamento in continuo della funzione Touch Probe ovvero, una volta avviata, a ogni fronte del segnale configurato come EXT_PROBE l’azionamento salva la posizione in cui si trova:
Per attivare la funzione è sufficiente impostare i bit 0, 1 e 4 dell’oggetto 60B8h (Touch Probe Function) a 1.
Mappando questi valori in binario si ottiene il numero intero 19 (20 + 21 + 24 = 19)
Poiché l’oggetto 60B8h è stato mappato, nell’esempio, nella variabile w_enableTouchProbe, sarà sufficiente forzare questa variabile al valore 19 per poter iniziare ad utilizzare la funzione.
· Si prepara il valore da forzare:
· Si scrive effettivamente il valore:
Conseguentemente alla scrittura, la variabile w_touchProbeEnabled (in cui è mappato l’oggetto 60B9h “Touch Probe Status”) passa ad 1, segnalando che la funzione è abilitata.
A questo punto, all’attivazione fisica dell’ingresso digitale I1 la posizione attuale dell’asse verrà scritta nella variabile d_touchProbeValue, di tipo double word, in cui è mappato l’oggetto 60BAh, “Touch Probe 1 positive edge”.
·
Risultato:
La posizione viene scritta nella variabile predisposta, e lo stato della funzione (w_touchProbeEnabled) passa da 1 a 131 segnalando che l’operazione è andata a buon fine.
7.5. NOTE
Qualora si voglia leggere la latched position (60BAh), occorre fare attenzione al Gear Ratio (Pt20E). Infatti, se Pt20E <> 1, allora Feedback position e Latched position non saranno più "sincronizzate" (i.e. andranno in overflow in momenti diversi).
Per risolvere, è sufficiente impostare Pt205 allo stesso valore di Pt20E.
Si consiglia di aggiornare il firmware alla versione 2.13.6 o più recente.