HomeHIT-MIKRO-AN-010-0-202606_Gestione drive HIWIN EtherCAT con TwinCAT 3Printer Friendly Version

HIT-MIKRO-AN-010-0-202606_Gestione drive HIWIN EtherCAT con TwinCAT 3

Quest’Application Note contiene informazioni supplementari per l’integrazione dei drive HIWIN serie E, versione EtherCAT CoE, con master BECKHOFF (basati su TwinCAT 3).

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

info@hiwin.it

Supporto tecnico

technical.sard@hiwin.it

Sito web

www.hiwin.it

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.
+ byte di partenza per la mappatura

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

Immagine che contiene testo, software, Icona del computer, Pagina Web

Descrizione generata automaticamente

·         nSlaveAddr: Indirizzo dello Slave EtherCAT:

Immagine che contiene testo, schermata, software, Icona del computer

Descrizione generata automaticamente

·         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”):


Immagine che contiene testo

Descrizione generata automaticamente

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:

Immagine che contiene testo, schermata, software, numero

Descrizione generata automaticamente

È 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:

Immagine che contiene testo, linea, Carattere, numero

Descrizione generata automaticamente

Immagine che contiene testo, schermata, Carattere, linea

Descrizione generata automaticamente

·         Riavviare il drive impostando 3215h = 1;

·         Dopo il riavvio del drive, accertarsi che l’errore AL.800 sia scomparso:

Immagine che contiene testo, schermata, Carattere, numero

Descrizione generata automaticamente

Per leggere e scrivere gli oggetti EtherCAT, è possibile usare i blocchi FB_EcCoESdoWrite e FB_EcCoESdoRead.

Ad es.:

·         Scrivere 3200h = 1:

Immagine che contiene testo, software, Carattere, linea

Descrizione generata automaticamente

·         Leggere 3200h:

Immagine che contiene testo, schermata, software, Carattere

Descrizione generata automaticamente

·         Riavviare il drive (3215h = 1):

Immagine che contiene testo, software, Carattere, Pagina Web

Descrizione generata automaticamente

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:

Immagine che contiene testo, schermata, software, schermo

Descrizione generata automaticamente

·         Impostare la modalità di Homing tramite il blocco FB_WriteDriveOperationMode:

Immagine che contiene testo, schermata, Carattere, linea

Descrizione generata automaticamente

·          Abilitare il drive tramite MC_Power:

Immagine che contiene testo, Carattere, linea, diagramma

Descrizione generata automaticamente

·          Impostare a 1 il bit della ControlWord, usando il blocco MC_WriteNcIoOutput:

Immagine che contiene testo, linea, Carattere, numero

Descrizione generata automaticamente

·          Se l’Homing è stato eseguito con successo, il feedback di posizione sarà circa 0:

Immagine che contiene testo, schermata, software, Icona del computer

Descrizione generata automaticamente

·          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:

Immagine che contiene testo, schermata, numero, Carattere

Descrizione generata automaticamente

Immagine che contiene testo, schermata, schermo, numero

Descrizione generata automaticamente

·          Disabilitare il drive:

Immagine che contiene testo, linea, Carattere, numero

Descrizione generata automaticamente

·          Salvare su Flash impostando 3216h = 1. Il valore torna automaticamente a 0 una volta concluso il salvataggio:

Immagine che contiene testo, software, Carattere, schermata

Descrizione generata automaticamente

·          Riavviare il drive impostando 3215h = 1. Il valore torna automaticamente a 0 una volta eseguito il riavvio:

Immagine che contiene testo, software, Carattere, schermata

Descrizione generata automaticamente

·          Se tutte le operazioni sono state effettuate correttamente, la posizione sarà ancora circa 0 e non ci saranno più allarmi / warning attivi nel drive:

Immagine che contiene testo, schermata, software, Icona del computer

Descrizione generata automaticamente

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:

Immagine che contiene tavolo

Descrizione generata automaticamente

Lo step successivo è la configurazione della modalità di Homing, dalla sezione Enc à Parametro à Homing:



Immagine che contiene testo, screenshot, interni, computer

Descrizione generata automaticamente

Homing 2:

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)

Immagine che contiene testo

Descrizione generata automaticamente

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

Immagine che contiene testo

Descrizione generata automaticamente

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:

https://infosys.beckhoff.com/english.php?content=../content/1033/tf50x0_tc3_nc_ptp/3439913483.html&id=

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.