Sei sulla pagina 1di 193

CMZ software

Axes utilities
Doc. MS270103
Ed. 05 - Italiano - 9 aprile 2004
Axes utilities

IMPORTANTE
La CMZ Sistemi Elettronici si riserva il diritto di apportare modifiche ai prodotti descritti in questo manuale in qualsiasi
momento e senza preavviso.

Il presente manuale è stato preparato da CMZ Sistemi Elettronici esclusivamente per l'uso da parte dei propri clienti
garantendo che esso costituisce, alla data di edizione, la documentazione più aggiornata relativa ai prodotti.

È inteso che l'uso del manuale avviene da parte dell'utente sotto la propria responsabilità e che l'utilizzo di certe
funzioni descritte in questo manuale, deve essere fatto con la dovuta cautela in modo da evitare pericolo per il personale
e danneggiamenti alle macchine.

Nessuna ulteriore garanzia viene pertanto prestata da CMZ Sistemi Elettronici, in particolare per eventuali
imperfezioni, incompletezze e/o difficoltà operative.

2 Doc. MS270103 - Ed.05 - 9 aprile 2004


SOMMARIO

SOMMARIO

SOMMARIO ...................................................................................................................................... 3
SCOPO DEL MANUALE ................................................................................................................. 6
capitolo 1. DESCRITTORE STANDARD, PER ENCODA E MINENC/CNV312 ..................... 8
1.1 INSTALLAZIONE DELLE LIBRERIE................................................................................... 8
1.2 DESCRITTORE STANDARD ................................................................................................. 9
1.2.1 Aggancio del descrittore standard da AWL..................................................................... 9
1.2.2 Aggancio del descrittore standard da Forth. .................................................................. 10
1.3 DESCRITTORE PER SCHEDE ENCODA ........................................................................... 11
1.3.1 Numerazione degli assi utilizzando schede ENCODA.................................................. 11
1.4 DESCRITTORE PER SCHEDE MINENC/CNV312............................................................. 12
1.4.1 Aggancio dei descrittori della scheda MINENC/CNV312 da AWL. ............................ 12
1.4.2 Aggancio dei descrittori delle schede MINENC/CNV312 da Forth. .............................. 14
1.4.3 Numerazione degli assi utilizzando schede MINENC/CNV312 ................................... 14
1.5 PROGRAMMA ASSI VERSIONE MINORE DI 2.0 ............................................................ 16
capitolo 2. DESCRITTORE ASSI PER INVERTER ................................................................... 17
2.1 INSTALLAZIONE DELLE LIBRERIA ................................................................................ 18
2.2 USO DA AWL ........................................................................................................................ 18
2.3 USO DA FORTH .................................................................................................................... 19
capitolo 3. DESCRITTORE PER ASSI SIMULATI .................................................................... 20
3.1 INSTALLAZIONE DELLE LIBRERIA ................................................................................ 20
3.2 USO DA AWL ........................................................................................................................ 20
3.3 USO DA FORTH .................................................................................................................... 21
3.4 USO RUN TIME..................................................................................................................... 21
capitolo 4. FUNZIONI DI CONVERSIONE................................................................................. 22
4.1 INSTALLAZIONE DELLE LIBRERIA ................................................................................ 22
4.2 PRINCIPIO DI FUNZIONAMENTO..................................................................................... 22
4.3 ESEMPIO CON I RIDUTTORI ............................................................................................. 24
4.4 ESEMPIO CON RUOTE DENTATE..................................................................................... 26
4.5 CONVERSIONE DI QUOTE E RECUPERO RESTI............................................................ 28
4.5.1 Significato del resto della conversione .......................................................................... 28
4.5.2 Recupero del resto della conversione: Esempi .............................................................. 29
4.5.3 Recupero del resto della conversione: Soluzione generale............................................ 31
4.6 LIBRERIA COMANDI AWL ................................................................................................ 32
4.6.1 Comandi per l’impostazione delle risoluzioni ............................................................... 33
4.6.2 Comandi di conversione di quota .................................................................................. 35
4.6.3 Comandi di conversione di velocità............................................................................... 36
4.6.4 Comandi di conversione di accelerazione...................................................................... 38
4.6.5 Comandi di conversione per i rapporti di inseguimento................................................ 41
4.6.6 Comandi per il recupero del resto della conversione ..................................................... 42
4.6.7 Esempio di utilizzo dei comandi per il recupero del resto della conversione ................. 46
4.7 LIBRERIA COMANDI FORTH ............................................................................................ 49
4.7.1 Comandi per l’impostazione delle risoluzioni ............................................................... 49
4.7.2 Comandi di conversione di quota .................................................................................. 50
4.7.3 Comandi di conversione di velocità ................................................................................ 50

Doc. MS270103 - Ed. 05 - 9 aprile 2004 3


Axes utilities

4.7.4 Comandi di conversione di accelerazione ....................................................................... 51


4.7.5 Comandi di conversione per i rapporti di inseguimento ................................................. 52
4.7.6 Recupero del resto della conversione ............................................................................ 53
capitolo 5 CATTURA QUOTE - CAPTURE ................................................................................ 55
5.1 INSTALLAZIONE DELLE LIBRERIA ................................................................................ 55
5.2 LIBRERIA COMANDI AWL ................................................................................................ 56
5.3 ESEMPI DI CATTURA QUOTA IN AWL ........................................................................... 60
5.4 LIBRERIA COMANDI FORTH ............................................................................................ 63
5.5 PARTICOLARITÀ E LIMITAZIONI DEL CAPTURE........................................................ 65
5.6 PROGRAMMA DI TEST PER CAPTURE ........................................................................... 66
capitolo 6 SHIFT DI QUOTA ......................................................................................................... 67
6.1 INSTALLAZIONE DELLE LIBRERIA ................................................................................ 71
6.2 LIBRERIA COMANDI AWL ................................................................................................ 71
6.2.1 Definizione di una routine utente .................................................................................... 82
6.3 ESEMPI D’USO DELLO SHIFT IN AWL ............................................................................ 83
6.4 LIBRERIA COMANDI FORTH ............................................................................................ 87
6.5 TEST LIBRERIA.................................................................................................................... 91
capitolo 7 ALBERO ELETTRICO CON RAMPA....................................................................... 94
7.1 INSTALLAZIONE DELLA LIBRERIA................................................................................ 97
Gestione albero elettrico con rampa ......................................................................................... 97
7.2 LIBRERIA COMANDI AWL ................................................................................................ 98
7.2.1 Definizione di una routine utente .................................................................................. 107
7.3 ESEMPI DI ALBERO ELETTRICO CON RAMPA IN AWL............................................ 108
7.4 LIBRERIA COMANDI FORTH ......................................................................................... 115
7.5 PROCEDURA DI MESSA IN SERVIZIO ......................................................................... 120
7.5.1 Livello base ................................................................................................................... 120
7.5.2 Livello intermedio ......................................................................................................... 121
7.5.3 Livello avanzato ............................................................................................................ 121
7.6 TEST LIBRERIA.................................................................................................................. 121
capitolo 8 ALBERO ELETTRICO CON RECUPERO ............................................................. 124
8.1 INSTALLAZIONE DELLA LIBRERIA.............................................................................. 128
8.2 LIBRERIA COMANDI AWL .............................................................................................. 129
8.3 ESEMPI DI ALBERO ELETTRICO CON RECUPERO IN AWL ..................................... 138
8.4 LIBRERIA COMANDI FORTH ......................................................................................... 138
8.5 GESTIONE ASSE PERIODICO ......................................................................................... 143
8.5.1 Fasatura dell’asse periodico .......................................................................................... 147
8.6 TEST LIBRERIA.................................................................................................................. 147
capitolo 9 RECUPERO GIOCO................................................................................................... 150
9.1 INSTALLAZIONE DELLA LIBRERIA.............................................................................. 152
9.2 COMANDI AWL.................................................................................................................. 152
9.2.1 Definizione routine utente ............................................................................................. 160
9.3 ESEMPI DI RECUPERO GIOCO IN AWL......................................................................... 161
9.4 COMANDI FORTH.............................................................................................................. 161
capitolo 10 RUOTA DI MISURA ................................................................................................. 164
10.1 INSTALLAZIONE DELLA LIBRERIA............................................................................ 166
10.2 COMANDI AWL................................................................................................................ 167
10.2.1 Definizione routine utente ........................................................................................... 176
10.3 ESEMPI DI GESTIONE DELLA RUOTA DI MISURA IN AWL ................................... 177

4 Doc. MS270103 - Ed.05 - 9 aprile 2004


SOMMARIO

10.4 COMANDI FORTH............................................................................................................ 177


10.5 TEST LIBRERIA................................................................................................................ 181
capitolo 11 CONTROLLO PREDITTIVO.................................................................................. 184
11.1 PRINCIPIO DI FUNZIONAMENTO................................................................................. 184
11.1.1 Impostazione dell’azione predittiva ............................................................................ 184
11.1.2 Taratura del controllo predittivo.................................................................................. 185
11.1.3 Osservazioni sull’errore di inseguimento.................................................................... 186
11.2 INSTALLAZIONE DELLA LIBRERIA............................................................................ 187
11.3 COMANDI AWL................................................................................................................ 188
11.4 COMANDI FORTH............................................................................................................ 189
11.5 COMPATIBILITA CON LE ALTRE LIBRERIE.............................................................. 190
11.5.1 Taratura assi assistita T_MOT..................................................................................... 190
11.5.2 Protocollo di comunicazione HDLC ........................................................................... 190
11.5.3 Traslazione della quota (SHIFT) ................................................................................. 190
BIBLIOGRAFIA............................................................................................................................ 192
INDICE ANALITICO ................................................................................................................... 193

Doc. MS270103 - Ed. 05 - 9 aprile 2004 5


Axes utilities

SCOPO DEL MANUALE

In questo manuale vengono descritte una serie di librerie che contengono una raccolta di
funzioni/comandi strettamente legati alla movimentazione.
Per ogni capitolo è descritta una libreria che quindi può essere considerata in maniera indipendente
dalle altre librerie (capitoli).
Le librerie che saranno trattate riguardano l’uso di funzioni quali:

1. Descrittore standard e driver/descrittori per le schede MINENC e CNV312 (nei sistemi


componibili NF0).

NOTA
Con driver si intende l’insieme delle routine che permettono ad altri programmi di accedere alle risorse
hardware del sistema (ad esempio si parla di driver per la lettura del contatore encoder).
I descrittori sono delle routine che si trovano ad uno strato superiore rispetto ai driver e, utilizzando i driver,
permettono di caratterizzare il programma di gestione e controllo assi. Si parla quindi, ad esempio, di
descrittore standard come dell’insieme delle routine che permette al programma assi di ricostruire la posizione
reale a partire dalla lettura del contatore encoder e di scrivere il valore di tensione di uscita, elaborato dalla
sezione di feed-forward e di regolazione, sul dispositivo D/A di uscita, oppure si parla di descrittore per asse
simulato dove la posizione reale viene costruita da una routine di simulazione, ecc.

2. Descrittori per la gestione di inverter (capitolo 2).

3. Descrittori per la gestione di assi simulati (capitolo 3).

4. Conversione da unità fisiche ad unità interne e viceversa delle grandezze posizione, velocità e
accelerazione (capitolo 4).

5. Funzioni per la cattura quota (capitolo 5)

6. Funzioni per lo shift di una quota (capitolo 6)

7. Funzioni di albero elettrico con la possibilità di effettuare un adeguamento con rampa al


rapporto di inseguimento sia in tempo sia relativamente ad uno spazio percorso dall’asse master
(capitolo 7).

8. Funzioni di albero elettrico con recupero (capitolo 8).

9. Funzioni di recupero del gioco (capitolo 9)

10. Funzioni di controllo con doppio encoder (ruota di misura) (capitolo 10).

11. Controllo predittivo (capitolo 11)

Le librerie in questione non sono residenti nel firmware di sistema e vengono consegnate dalla
CMZ su richiesta.
Le librerie devono essere installate su PC e quindi inserite (se necessario per l’applicativo) nella
lista di compilazione del progetto. L’installazione su PC di una libreria può avvenire da CD o
dischetto o file consegnati dalla CMZ.

6 Doc. MS270103 - Ed.05 - 9 aprile 2004


SCOPO DEL MANUALE

L’inserimento delle librerie nel progetto (nella lista di compilazione) deve essere fatta in fase di
configurazione del progetto utilizzando il programma MAKEPRJ descritto in [4] e riportate nel
capitolo all’inizio di ogni singolo capitolo. A tal proposito si ricorda che il programma
MAKEPRJ è integrato nell’ambiente di sviluppo WIDE che lo richiama automaticamente in
fase di definizione di un progetto.

NOTA
Per tutte le librerie saranno descritte le funzioni da utilizzare nel PLC (linguaggio AWL) e
generalmente saranno riportati degli esempi scritti in AWL simbolico. Ogni capitolo conterrà
comunque anche un paragrafo con la descrizione dei comandi Forth.

NOTA IMPORTANTE SUI DESCRITTORI


In tutti i sistemi ad ogni accensione viene caricato un descrittore standard. In caso in cui il
descrittore venga cambiato (come si vedrà nei capitoli 1, 2 e 3) il descrittore standard può essere
ricaricato con il comando cm-senc (da AWL) o CM-SENC (da Forth) che è presente in tutti i
sistemi (vedi [1]). Per semplicità di consultazione i comandi vengono descritti anche nel paragrafo
2.1.

ATTENZIONE
Questo manuale descrive le librerie con la seguente revisione:

- Gestione di più di 4 assi ver.01.00.18


- Descrittore per scheda ENCODA ver.03.00.08
- Descrittore per scheda MINENC ver.03.00.08
- Descrittore per scheda CNV312 ver.03.00.08
- Descrittore per inverter ver.18.00.18
- Descrittore per simulazione asse ver.00.05.14
- Conversione quote, velocità e accelerazioni ver.18.07.09
- Funzioni di cattura quota ver.12.00.12
- Funzioni di shift della quota ver.12.00.18
- Funzioni di albero elettrico con rampa ver.00.00.07
- Funzioni di albero elettrico con recupero ver.00.00.07
- Funzioni di recupero gioco ver.00.00.06
- Funzioni di controllo con doppio encoder ver.00.00.06
- Controllo predittivo ver.00.00.01

Per conoscere la revisione delle varie librerie è necessario consultare il file con estensione .CDI
presente in ogni libreria.
Successive revisioni delle librerie saranno aggiornate, se necessario, con un documento integrativo
o con una nuova edizione del manuale. Le informazioni riportate in questo manuale possono essere
parzialmente corrette per versioni precedenti del software.

IMPORTANTE: Deve sempre essere consultati i file .CDI per verificare, oltre alla versione del
pacchetto software, anche la compatibilità del software con i vari sistemi. In ogni caso l’ufficio
software CMZ è a disposizione per chiarimenti.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 7


Axes utilities

capitolo 1. DESCRITTORE STANDARD, PER ENCODA E MINENC/CNV312

Il programma di gestione e controllo assi (vedi [1]) è residente nel firmware di tutti i sistemi di
controllo CMZ.
Nei sistemi compatti (CTE158, CTE240, CTN330/560, ecc.) il programma assi fa riferimento
direttamente alle risorse hardware del sistema utilizzando appositi driver.
Nei sistemi componibili (linea NF0 composta da CTX618, CTD913, PLCX, TST900) il programma
assi, presente nella 331CPU, fa riferimento alle risorse hardware della scheda ENCODA (vedi [2] e
[3]) come scheda di default, mentre, per la gestione delle schede MINENC e CNV312, è necessario
installare nel sistema gli appositi driver e descrittori. In questo capitolo si descriveranno quindi le
funzioni per l’uso dei descrittori per MINENC/CNV312 e del descrittore standard.
Si ricorda che i descrittori si basano su i relativi driver presenti nella libreria “Device NF0” [3].

IMPORTANTE
All’avvio del programma assi (vedi comando cm-start in [1]) vengono sempre installati i
descrittori standard ed è quindi compito del programmatore agganciare i nuovi descrittori ad ogni
avvio del programma assi.

NOTA
Sarà descritta anche la libreria per la gestione di più di 4 assi su sistemi modulari, che però è di
poca importanza dato che nell’ultimo firmware (F331_001 del 1998) della scheda 331CPU è già
residente il programma assi per la gestione di massimo 16 assi; quindi la libreria è necessaria solo
per chi utilizza revisioni di firmware più vecchie.

1.1 INSTALLAZIONE DELLE LIBRERIE

Per usare la librerie dei descrittori per MINENC/CNV312 o ENCODA si deve innanzitutto
installarle nella directory delle librerie. Per fare questo è necessario usare il programma INSTALL
presente nella libreria e quindi seguire le indicazioni.
Dopo questa operazione nella directory delle librerie CMZ/LIB ci saranno delle sottodirectory per i
vari descrittori in oggetto.

Ora quando si userà il programma MAKEPRJ per iniziare un nuovo lavoro ci sarà una nuova
sezione ‘ASSI’ con le diverse possibili selezioni.

ASSI
[ ] Allocazione di memoria per più di 4 assi (programma assi minore di 2.0)
[ ] Descrittore asse scheda ENCODA
[ ] Descrittore asse scheda MINENC (programma assi minore di 2.0)
[ ] Descrittore asse scheda MINENC
[ ] Descrittore asse scheda ENCODA
[ ] Descrittore asse scheda CNV312 (programma assi minore di 2.0)
[ ] Descrittore asse scheda CNV312
[ ] …

Allocazione di memoria per più di 4 assi Serve solo nei sistemi componibili della linea NF0 con
(programma assi minore di 2.0) revisione programma assi inferiore alla REV2.0 (paragrafo
1.5).

Descrittore asse scheda ENCODA Serve solo nei sistemi componibili della linea NF0 quando si

8 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 1. DESCRITTORE STANDARD, PER ENCODA E MINENC/CNV312

desidera ricompilare il descrittore della scheda ENCODA


(vedi paragrafo 1.3)

Descrittore asse scheda MINENC (programma assi Serve solo nei sistemi componibili della linea NF0 quando si
minore di 2.0) desidera utilizzare la scheda MINENC per la gestione assi
con revisione del programma assi minore di 2.0 (vedi
paragrafi 1.4 e 1.5)

Descrittore asse scheda MINENC Serve solo nei sistemi componibili della linea NF0 quando si
desidera utilizzare la scheda MINENC per la gestione assi
(vedi paragrafo 1.4)

Descrittore asse scheda CNV312 (programma assi Serve solo nei sistemi componibili della linea NF0 quando si
minore di 2.0) desidera utilizzare la scheda CNV312 per la gestione assi con
revisione del programma assi minore di 2.0 (vedi paragrafi
1.4 e 1.5)

Descrittore asse scheda CNV312 Serve solo nei sistemi componibili della linea NF0 quando si
desidera utilizzare la scheda CNV312 per la gestione assi
(vedi paragrafo 1.4)

1.2 DESCRITTORE STANDARD

Come già anticipato per tutti i sistemi è previsto all’accensione il caricamento di un descrittore
standard (in particolare per i sistemi della linea NF0 il descrittore standard è quello che fa
riferimento alla scheda ENCODA).
Il descrittore standard è sempre presente nel firmware di sistema e quindi non è necessario
compilare alcun SW specifico.
Nei paragrafi 1.2.1 e 1.2.2 si descrivono i comandi (già descritti nel manuale [1]) per agganciare il
descrittore standard nei vari sistemi rimarcando che nella maggior parte dei casi il loro utilizzo
non è necessario in quanto il descrittore standard è agganciato di default.

1.2.1 Aggancio del descrittore standard da AWL.

cm-senc

Aggancia il descrittore standard per l’asse selezionato. Il descrittore deve essere agganciato prima
dell’avvio del programma assi (comando cm-start).

Classe di appartenenza: Libreria programma assi


Modalità di chiamata: C
Modifica RLC: NO
Parametri richiesti ACC1: Ininfluente
ACC2: Ininfluente
Parametri restituiti ACC1: Inalterato
ACC2: Inalterato
Vedi anche:

Esempio:

Doc. MS270103 - Ed. 05 - 9 aprile 2004 9


Axes utilities

#START
SEL AX0
C cm-senc * descrittore per asse 0
SEL AX1
C cm-senc * descrittore per asse 1
SEL AX2
C cm-senc * descrittore per asse 0

L KZ3 * numero assi


C cm-start * avvio programma assi



BE

cm-aenc
In alternativa al comando cm-senc si può utilizzare il comando cm-aenc per agganciare il
descrittore per l’asse selezionato. Il descrittore deve essere agganciato prima dell’avvio del
programma assi (comando cm-start).
La differenza tra cm-senc e cm-aenc sta nel fatto che mentre il primo descrittore legge ad ogni
scansione del programma assi solo l’encoder dell’asse in esame, con il descrittore caricato con cm-
aenc ad ogni scansione del programma assi vengono letti gli encoder di tutti gli assi.
Attenzione, l’uso del descrittore caricato con cm-aenc impegna notevolmente la CPU.

Classe di appartenenza: Libreria programma assi


Modalità di chiamata: C
Modifica RLC: NO
Parametri richiesti ACC1: Ininfluente
ACC2: Ininfluente
Parametri restituiti ACC1: Inalterato
ACC2: Inalterato
Vedi anche:

1.2.2 Aggancio del descrittore standard da Forth.

CM-SENC

Aggancia il descrittore standard per l’asse il cui numero è presente nel parameter stack. Il
descrittore deve essere agganciato prima dell’avvio del programma assi (comando CM-START).

Sintassi: n.axis ---


Argomenti: n.axis:

• n.axis: è il numero dell’asse per la gestione del quale si vuole agganciare il descrittore standard.

10 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 1. DESCRITTORE STANDARD, PER ENCODA E MINENC/CNV312

CM-AENC
In alternativa al comando CM-SENC si può utilizzare il comando CM-AENC per agganciare il
descrittore per l’asse selezionato. Il descrittore deve essere agganciato prima dell’avvio del
programma assi (comando CM-START).
La differenza tra CM-SENC e CM-AENC sta nel fatto che mentre il primo descrittore legge ad ogni
scansione del programma assi solo l’encoder dell’asse in esame, con il descrittore caricato con
CM-AENC ad ogni scansione del programma assi vengono letti gli encoder di tutti gli assi.
Attenzione, l’uso del descrittore caricato con CM-AENC impegna notevolmente la CPU.

Sintassi: n.axis ---


Argomenti: n.axis:

• n.axis: è il numero dell’asse per la gestione del quale si vuole agganciare il descrittore.

1.3 DESCRITTORE PER SCHEDE ENCODA

Per i sistemi della linea NF0 il descrittore standard è quello che fa riferimento alla scheda
ENCODA) che è presente nel firmware di sistema.
Tuttavia, nel caso dei sistemi NF0 e della scheda ENCODA è possibile aggiornare i driver e i
descrittori della scheda stessa, rispetto a quelli residenti nel firmware, ricompilandoli.
Se si desidera fare questo è necessario che su MAKEPRJ (vedi [4]) vengano selezionati i seguenti
pacchetti SW:

- Dalla sezione PERIFERICHE NF0 deve essere selezionato il pacchetto “DRIVER per
ENCODA” (la selezione del pacchetto “Test per ENCODA” è facoltativa)

- Dalla sezione ASSI deve essere selezionato il pacchetto “Descrittore asse per scheda
ENCODA”

Si fa notare che entrambe queste voci sono contrassegnate dall’asterisco che indica che il SW è già
residente nel firmware del sistema.

Se i driver e descrittori vengono reinstallati è necessario che nel programma applicativo i nuovi
driver/descrittori vengano richiamati con i comandi cm-senc (da AWL) o CM-SENC (da Forth)
visti nel paragrafo 1.2.

NOTA
Se i driver/descrittori della scheda ENCODA vengono ricompilati ma non agganciati con i comandi descritti, il
programma assi continuerà ad utilizzare i driver/descrittori residenti nel firmware del sistema.

1.3.1 Numerazione degli assi utilizzando schede ENCODA

Come probabilmente già noto, nel programma applicativo, gli assi vengono numerati a partire
dall’asse numero 0 fino all’asse (N.ASSI-1) dove N.ASSI è il numero di assi gestiti dal
programma applicativo (vedi [1]).
Utilizzando le schede ENCODA c’è una diretta correlazione tra il numero dell’asse e l’indirizzo
hardware della scheda ENCODA, indirizzo settabile direttamente sulla scheda tramite dip-switch
(vedi [2]).
La relazione è molto semplice infatti l’indirizzo hardware della scheda coincide con il numero
dell’asse e comunque riportata in tabella:

Doc. MS270103 - Ed. 05 - 9 aprile 2004 11


Axes utilities

Indirizzo HW della scheda ENCODA Numero dell’asse


0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15

Il numero massimo di assi gestibili è 16.

1.4 DESCRITTORE PER SCHEDE MINENC/CNV312

Se si desidera utilizzare le schede MINENC e CNV312 per la gestione e il controllo assi è


necessario compilare gli appositi driver e descrittori. Per fare questo è necessario che su
MAKEPRJ (vedi [4]) vengano selezionati i seguenti pacchetti SW:

- Dalla sezione PERIFERICHE NF0 deve essere selezionato il pacchetto “DRIVER per
MINENC” (la selezione del pacchetto “Test per MINENC” è facoltativa) e/o il pacchetto
“DRIVER per CNV312” (la selezione del pacchetto “Test per CNV312” è facoltativa)

- Dalla sezione ASSI deve essere selezionato il pacchetto “Descrittore asse per scheda
MINENC” e/o il pacchetto “Descrittore asse per scheda CNV312”

Dopo aver compilato i driver/descrittori è necessario che vengano richiamati nel programma
applicativo con i seguenti comandi Forth o AWL.

1.4.1 Aggancio dei descrittori della scheda MINENC/CNV312 da AWL.

cm-mincnv

Aggancia il descrittore delle schede MINENC e CNV312 per l’asse selezionato. Il descrittore deve
essere agganciato prima dell’avvio del programma assi (comando cm-start)

Classe di appartenenza: Libreria programma assi


Modalità di chiamata: C
Modifica RLC: NO
Parametri richiesti ACC1: Ininfluente
ACC2: Ininfluente
Parametri restituiti ACC1: Inalterato
ACC2: Inalterato

12 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 1. DESCRITTORE STANDARD, PER ENCODA E MINENC/CNV312

Vedi anche:

Esempio:
#START
SEL AX0
C cm-mincnv * descrittore scheda MINENC/CNV312 per asse 0
SEL AX1
C cm-mincnv * descrittore scheda MINENC/CNV312 per asse 1
SEL AX2
C cm-mincnv * descrittore scheda MINENC/CNV312 per asse 2

L KZ3 * numero assi


C cm-start * avvio programma assi

BE

cm-smin

Aggancia il descrittore della sola scheda MINENC per l’asse selezionato. Il descrittore deve essere
agganciato prima dell’avvio del programma assi (comando cm-start).

NOTA
Se si intende utilizzare solo questo descrittore è sufficiente che dalla sezione PERIFERICHE NF0 sia
selezionato il pacchetto “DRIVER per MINENC”.

Classe di appartenenza: Libreria programma assi


Modalità di chiamata: C
Modifica RLC: NO
Parametri richiesti ACC1: Ininfluente
ACC2: Ininfluente
Parametri restituiti ACC1: Inalterato
ACC2: Inalterato
Vedi anche:

cm-scnv312

Aggancia il descrittore della sola scheda CNV312 per l’asse selezionato. Il descrittore deve essere
agganciato prima dell’avvio del programma assi (comando cm-start).

NOTA
Se si intende utilizzare solo questo descrittore è sufficiente che dalla sezione PERIFERICHE NF0 sia
selezionato il pacchetto “DRIVER per CNV312”.

Classe di appartenenza: Libreria programma assi


Modalità di chiamata: C
Modifica RLC: NO
Parametri richiesti ACC1: Ininfluente
ACC2: Ininfluente
Parametri restituiti ACC1: Inalterato
ACC2: Inalterato

Doc. MS270103 - Ed. 05 - 9 aprile 2004 13


Axes utilities

1.4.2 Aggancio dei descrittori delle schede MINENC/CNV312 da Forth.

CM-MINCNV

Aggancia il descrittore della schede MINENC/CNV312 per l’asse il cui numero è presente nel
parameter stack. Il descrittore deve essere agganciato prima dell’avvio del programma assi
(comando CM-START).

Sintassi: n.axis ---


Argomenti: n.axis:

• n.axis: è il numero dell’asse per la gestione del quale si vuole agganciare il descrittore della scheda
MINENC/CNV312.

CM-SMIN

Aggancia il descrittore della sola scheda MINENC per l’asse il cui numero è presente nel parameter
stack. Il descrittore deve essere agganciato prima dell’avvio del programma assi (comando CM-
START).

NOTA
Se si intende utilizzare solo questo descrittore è sufficiente che dalla sezione PERIFERICHE NF0 sia
selezionato il pacchetto “DRIVER per MINENC”.

Sintassi: n.axis ---


Argomenti: n.axis:

• n.axis: è il numero dell’asse per la gestione del quale si vuole agganciare il descrittore della scheda MINENC.

CM-SCNV312

Aggancia il descrittore della sola scheda CNV312 per l’asse il cui numero è presente nel parameter
stack. Il descrittore deve essere agganciato prima dell’avvio del programma assi (comando CM-
START).

NOTA
Se si intende utilizzare solo questo descrittore è sufficiente che dalla sezione PERIFERICHE NF0 sia
selezionato il pacchetto “DRIVER per CNV312”.

Sintassi: n.axis ---


Argomenti: n.axis:

• n.axis: è il numero dell’asse per la gestione del quale si vuole agganciare il descrittore della scheda CNV312.

1.4.3 Numerazione degli assi utilizzando schede MINENC/CNV312

Come probabilmente già noto, nel programma applicativo, gli assi vengono numerati a partire
dall’asse numero 0 fino all’asse (N.ASSI-1) dove N.ASSI è il numero di assi gestiti dal
programma applicativo (vedi [1]).

14 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 1. DESCRITTORE STANDARD, PER ENCODA E MINENC/CNV312

Utilizzando le schede MINENC/CNV312 c’è una diretta correlazione tra il numero dell’asse e
l’indirizzo hardware delle schede, indirizzo settabile direttamente sulla schede tramite dip-switch
(vedi [2]).
Si ricorda che la scheda MINENC permette di acquisire 3 ingressi encoder mentre la scheda
CNV312 permette di gestire 3 uscite analogiche così che l’uso contemporaneo di una scheda
MINENC e una scheda CNV312 permette di gestire 3 assi.
La relazione è riportata in tabella:

Indirizzo HW della scheda MINENC Indirizzo HW della scheda CNV312 Numero dell’asse
Addr. 0 – Chn. 0 Addr. 0 – Chn. 0 0
Addr. 0 – Chn. 1 Addr. 0 – Chn. 1 1
Addr. 0 – Chn. 2 Addr. 0 – Chn. 2 2

Addr. 1 – Chn. 0 Addr. 1 – Chn. 0 3


Addr. 1 – Chn. 1 Addr. 1 – Chn. 1 4
Addr. 1 – Chn. 2 Addr. 1 – Chn. 2 5

Addr. 2 – Chn. 0 Addr. 2 – Chn. 0 6


Addr. 2 – Chn. 1 Addr. 2 – Chn. 1 7
Addr. 2 – Chn. 2 Addr. 2 – Chn. 2 8

Addr. 3 – Chn. 0 Addr. 3 – Chn. 0 9


Addr. 3 – Chn. 1 Addr. 3 – Chn. 1 10
Addr. 3 – Chn. 2 Addr. 3 – Chn. 2 11

Addr. 4 – Chn. 0 Addr. 4 – Chn. 0 12


Addr. 4 – Chn. 1 Addr. 4 – Chn. 1 13
Addr. 4 – Chn. 2 Addr. 4 – Chn. 2 14

Il numero massimo di assi che possono essere gestiti è 16.

NOTA
Bisogna porre attenzione alla numerazione delle schede in caso di uso contemporaneo di schede
MINENC/CNV312 ed ENCODA. Ad esempio se si vogliono gestire 7 assi si possono utilizzate due schede
MINENC (totale 6 encoder), due schede CNV312 (totale 6 uscite analogiche) e una scheda ENCODA (1
encoder + 1 uscita analogica). In questo caso la numerazione degli assi è la seguente:

Numero asse Indirizzo schede


0 MINENC addr.0 e CNV312 addr.0 – canale 0
1 MINENC addr.0 e CNV312 addr.0 – canale 1
2 MINENC addr.0 e CNV312 addr.0 – canale 2
3 MINENC addr.1 e CNV312 addr.1 – canale 0
4 MINENC addr.1 e CNV312 addr.1 – canale 1
5 MINENC addr.1 e CNV312 addr.1 – canale 1
6 ENCODA addr.6

ATTENZIONE
Nel bus NF0 possono esserci schede che rispondono allo stesso indirizzo HW. Le schede MINENC
si sovrappongono parzialmente con le schede ENCODA (vedi [3]) e in particolare le schede
MINENC con indirizzo tra 0 e 7 si sovrappongono alle schede ENCODA con indirizzo tra 8 e 15
rispettivamente. Si ricorda che nello stesso bus non si possono utilizzare schede che rispondono allo
stesso indirizzo HW.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 15


Axes utilities

1.5 PROGRAMMA ASSI VERSIONE MINORE DI 2.0

Alla data in cui viene pubblicato questo manuale il programma assi revisione minore di 2.0 non è
più distribuito già da parecchio tempo è quindi quello che viene descritto in questo paragrafo
riguarda solo pochi utilizzatori.

L’ultima revisione del firmware della scheda 331CPU in cui è presente un programma assi con
revisione minore 2.0 è la revisione precedente alla REV F331_001 del 18/06/1998.
Per gli utilizzatori di questa revisione di firmware, o di revisioni precedenti, è necessario seguire i
seguenti punti:

- Se si intente utilizzare la scheda ENCODA non deve essere compilato alcun drive/descrittore e
quindi è necessario utilizzare il driver/descrittore presente nel firmware di sistema. In tal caso i
comandi cm-senc da AWL e CM-SENC da Forth non servono .

- Se si intende utilizzare le schede MINENC e CNV312, dalla sezione PERIFERICHE NF0 non
devono essere selezionati i pacchetti “DRIVER per MINENC” e “DRIVER per CNV312”
(e nemmeno i relativi pacchetti di test) “Test per CNV312” , mentre dalla sezione ASSI deve
essere selezionato il pacchetto “Descrittore asse per scheda MINENC – versione
programma assi minore di 2.0” e il pacchetto “Descrittore asse per scheda CNV312 –
versione programma assi minore di 2.0”. Per l’aggancio dei descrittori da AWL e da Forth
restano validi i comandi e le modalità descritte in 1.2, 1.3 e 1.4. con una sola eccezione: i
comandi di caricamento del descrittore devono essere chiamati dopo l’avvio del
programma assi (cioè dopo il comando cm-start o CM-START).

- Il pacchetto “Allocazione memoria per più di 4 assi – versione programma assi minore i
2.0” deve essere selezionato solo se si desidera utilizzare più di 4 assi.

16 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 2. DESCRITTORE ASSI PER INVERTER

capitolo 2. DESCRITTORE ASSI PER INVERTER

Il programma assi presente nel firmware dei sistemi di controllo CMZ prevede il controllo di assi
attraverso la gestione di una uscita analogica con valori di tensione compresi nel range ±10V
(controllo di azionamenti brushless, ecc.)
Se si intende pilotare degli inverter con ingresso 0÷10 Vdc e ingresso di inversione o ingresso
avanti e ingresso indietro, è necessario utilizzare il descrittore per inverter messo a disposizione
dalla relativa libreria.

Quindi, utilizzando MAKEPRJ, è necessario selezionare dalla sezione ASSI il pacchetto


“Descrittore per la gestione di un inverter per …” del sistema che si intende utilizzare.
Le due modalità di funzionamento previste sono:

1) Uscita analogica 0÷10V e ingresso di inversione: In questo caso il descrittore per inverter
prevede che sia definita anche una uscita digitale per pilotare l’ingresso di inversione
dell’inverter (vedi variabile NUM.INV in [1]). Il funzionamento del descrittore si può quindi
riassumere in quanto segue: se l’uscita analogica, prodotta dall’elaborazione del programma
assi, è positiva, viene messa a disposizione sul dispositivo hardware di uscita con il segno
positivo e l’uscita digitale indicata da NUM.INV viene tenuta a 0 Vdc (livello logico basso); se
invece l’uscita analogica, prodotta dall’elaborazione del programma assi, è negativa, viene
messa a disposizione sul dispositivo hardware di uscita con il segno positivo e l’uscita digitale
indicata da NUM.INV viene messa a 24 Vdc (livello logico alto).

2) Uscita analogica 0÷10V e ingresso avanti / ingresso indietro: In questo caso il descrittore per
inverter prevede che siano definite anche due uscite digitali per pilotare l’ingresso avanti e
l’ingresso indietro dell’inverter (vedi variabile NUM.AVV e NUM.IDV in [1]). Il
funzionamento del descrittore si può quindi riassumere in quanto segue: se l’uscita analogica,
prodotta dall’elaborazione del programma assi, è positiva, viene messa a disposizione sul
dispositivo hardware di uscita con il segno positivo e l’uscita digitale indicata da NUM.AVV
viene messa a 24 Vdc (livello logico alto) mentre NUM.IDV viene tenuta a 0 Vdc (livello logico
basso); se invece l’uscita analogica, prodotta dall’elaborazione del programma assi, è negativa,
viene messa a disposizione sul dispositivo hardware di uscita con il segno positivo e l’uscita
digitale indicata da NUM.IDV viene messa a 24 Vdc (livello logico alto) mentre NUM.AVV
viene tenuta a 0 Vdc (livello logico basso). In questo caso la variabile NUM.INV (vedi punto 1)
deve essere tenuta al valore –1.

Dopo aver compilato il descrittore per la gestione di inverter per il sistema scelto è necessario che
questo sia agganciato nel programma applicativo con i comandi AWL e Forth descritti nei prossimi
paragrafi.

IMPORTANTE
All’avvio del programma assi (vedi comando cm-start in [1]) vengono sempre installati i
descrittori standard ed è quindi compito del programmatore agganciare i nuovi descrittori ad ogni
avvio del programma assi.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 17


Axes utilities

2.1 INSTALLAZIONE DELLE LIBRERIA

Per usare la librerie dei descrittori per inverter si deve innanzitutto installarle nella directory delle
librerie. Per fare questo è necessario usare il programma INSTALL presente nella libreria e quindi
seguire le indicazioni.
Dopo questa operazione nella directory delle librerie CMZ/LIB ci sarà una sottodirectory per i vari
descrittori in oggetto.

Ora quando si userà il programma MAKEPRJ per iniziare un nuovo lavoro ci sarà una nuova
sezione ‘ASSI’ con le diverse possibili selezioni.

ASSI
[ ] …
[ ] Descrittore per la gestione di un inverter con scheda ENCODA
[ ] Descrittore per la gestione di un inverter con scheda MINENC & CNV312
[ ] Descrittore per la gestione di un inverter con sistema CTE300
[ ] Descrittore per la gestione di un inverter con sistema TRIAX/CTN
[ ] Descrittore per la gestione di un inverter con sistema CTE240
[ ] Descrittore per la gestione di un inverter con sistema CTE158/INDAX
[ ] Descrittore per la gestione di un inverter con sistema PENTAX/CTN560
[ ] Descrittore per la gestione di un inverter con sistema CTN330
[ ] …

Descrittore per la gestione di un inverter con Serve solo se si vuole utilizzare la scheda ENCODA per
scheda ENCODA comandare un inverter

Descrittore per la gestione di un inverter con Serve solo se si vuole utilizzare la scheda MINENC e
scheda MINENC & CNV312 CNV312 per comandare un inverter

Descrittore per la gestione di un inverter con Serve solo se si vuole utilizzare il sistema CTE300 per
sistema CTE300 comandare un inverter

Descrittore per la gestione di un inverter con Serve solo se si vuole utilizzare i sistemi CTN320 /TRIAX26
sistema TRIAX/CTN oppure CTN350/TRIAX26SN per comandare un inverter
Descrittore per la gestione di un inverter con Serve solo se si vuole utilizzare il sistema CTE240 per
sistema CTE240 comandare un inverter

Descrittore per la gestione di un inverter con Serve solo se si vuole utilizzare il sistema CTE158/INDAX
sistema CTE158/INDAX per comandare un inverter

Descrittore per la gestione di un inverter con Serve solo se si vuole utilizzare il sistema CTN560/PENTAX
sistema PENTAX/CTN560 per comandare un inverter

Descrittore per la gestione di un inverter con Serve solo se si vuole utilizzare il sistema CTN330 per
sistema CTN330 comandare un inverter

2.2 USO DA AWL

cm-inverter

Aggancia il descrittore per la gestione di inverter per l’asse selezionato. Il descrittore deve essere
agganciato prima dell’avvio del programma assi (comando cm-start)

18 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 2. DESCRITTORE ASSI PER INVERTER

Classe di appartenenza: Libreria programma assi


Modalità di chiamata: C
Modifica RLC: NO
Parametri richiesti ACC1: Ininfluente
ACC2: Ininfluente
Parametri restituiti ACC1: Inalterato
ACC2: Inalterato
Vedi anche: W.N.INV, W.N.AVV, W.N.IDV (vedi [1])

Esempio:
#START
SEL AX0
L KZ5
C W.N.INV * seleziona l’uscita 5 come uscita di inversione per l’asse 0
C cm-inverter * descrittore INVERTER per asse 0

L KZ… * numero assi


C cm-start * avvio programma assi

BE

NOTA
Se il descrittore per inverter deve essere utilizzato con schede MINENC e CNV312 deve essere prima
agganciato il descrittore per tali schede (vedi capitolo 1) e quindi il descrittore per inverter.

2.3 USO DA FORTH

CM-INVERTER
Aggancia il descrittore per la gestione di inverter per l’asse selezionato. Il descrittore deve essere
agganciato prima dell’avvio del programma assi (comando cm-start)

Sintassi: n.axis ---


Argomenti: n.axis:

• n.axis: è il numero dell’asse per la gestione del quale si vuole agganciare il descrittore per inverter.

NOTA
Se il descrittore per inverter deve essere utilizzato con schede MINENC e CNV312 deve essere prima
agganciato il descrittore per tali schede (vedi capitolo 1) e quindi il descrittore per inverter.

NOTA
La gestione da Forth delle variabili NUM.INV, NUM.AVV, NUM.IDV per l’assegnazione dell’uscita di
inversione o per l’assegnazione dell’uscita avanti o indietro, va fatta scrivendo il numero dell’uscita
direttamente sulla variabile dell’asse.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 19


Axes utilities

capitolo 3. DESCRITTORE PER ASSI SIMULATI

Il programma assi presente nel firmware dei sistemi di controllo prevede anche una struttura per la
simulazione assi che permette di utilizzare degli assi virtuali (non fisici) e quindi senza encoder ne
uscite analogiche, per le più diverse applicazioni, prima fra tutte la possibilità di collaudare il ciclo
di funzionamento di una macchina senza avere a disposizione gli assi fisici.Utilizzando gli assi
simulati non si possono però effettuare tutte quelle operazioni direttamente legate ad azioni
hardware come la procedura di ricerca zero (che comunque sono simulate), la cattura quota ecc.
Se si intende usare gli assi simulati è necessario utilizzare il descrittore messo a disposizione con la
relativa libreria. Quindi, utilizzando MAKEPRJ, è necessario selezionare dalla sezione ASSI il
pacchetto “Descrittore simulazione assi” .

NOTA
Si consiglia di inserire sempre questo pacchetto che, anche se non verrà utilizzato dal programma applicativo
finale, può tornare utile durante le fasi del debug del programma stesso.

Dopo aver compilato il descrittore è necessario che questo sia agganciato nel programma
applicativo con i comandi AWL e Forth descritti nei prossimi paragrafi.

IMPORTANTE
All’avvio del programma assi (vedi comando cm-start in [1]) vengono sempre installati i
descrittori standard ed è quindi compito del programmatore agganciare i nuovi descrittori ad ogni
avvio del programma assi.

3.1 INSTALLAZIONE DELLE LIBRERIA

Per usare la librerie dei descrittori per assi simulati si deve innanzitutto installarla nella directory
delle librerie. Per fare questo è necessario usare il programma INSTALL presente nella libreria e
quindi seguire le indicazioni.
Dopo questa operazione nella directory delle librerie CMZ/LIB ci sarà una sottodirectory per il
descrittore in oggetto.
Ora quando si userà il programma MAKEPRJ per iniziare un nuovo lavoro ci sarà una nuova
sezione ‘ASSI’ con la seguente selezione.

ASSI
[ ] …
[ ] Descrittore simulazione asse

Descrittore simulazione assi Serve solo se si vuole utilizzare gli assi simulati .

3.2 USO DA AWL

cm-sim

Aggancia il descrittore di simulazione per l’asse selezionato. Il descrittore deve essere agganciato
prima dell’avvio del programma assi (comando cm-start)

20 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 3. DESCRITTORE PER ASSI SIMULATI

Classe di appartenenza: Libreria programma assi


Modalità di chiamata: C
Modifica RLC: NO
Parametri richiesti ACC1: Ininfluente
ACC2: Ininfluente
Parametri restituiti ACC1: Inalterato
ACC2: Inalterato
Vedi anche:

Esempio:

#START
SEL AX0
C cm-sim * descrittore asse simulato per asse 0

L KZ… * numero assi


C cm-start * avvio programma assi

BE

NOTA
Come già detto ad ogni avvio del programma assi vengono caricati i descrittori standard, quindi se dopo aver
utilizzato i descrittori dell’asse simulato per test si vuole tornare alla gestione degli assi standard, è sufficiente
togliere il comando cm-sim, ricompilare il programma AWL e rilanciare il programma.

3.3 USO DA FORTH

CM-SIM
Aggancia il descrittore di simulazione per l’asse selezionato. Il descrittore deve essere agganciato
prima dell’avvio del programma assi (comando cm-start)

Sintassi: n.axis ---


Argomenti: n.axis:

• n.axis: è il numero dell’asse per la gestione del quale si vuole agganciare il descrittore per inverter.

3.4 USO RUN TIME

Nel caso di assi simulati può anche esserci la necessità di usare il descrittore asse simulato run-time
o meglio la possibilità di utilizzare l’asse simulato solo in alcune fasi del programma. In questo
caso il comando cm-sim (o CM-SIM in Forth) può essere richiamato su una condizione all’interno
del programma. Il ritorno alla situazione precedente si può fare richiamando, su una condizione
all’interno del programma, il descrittore precedentemente in uso (ad esempio cm-senc / CM-
SENC se è il descrittore standard, cm-inverter / CM-INVERTER se il descrittore caricato
precedentemente era il descrittore dell’inverter, ecc.).

Doc. MS270103 - Ed. 05 - 9 aprile 2004 21


Axes utilities

capitolo 4. FUNZIONI DI CONVERSIONE

In questo capitolo si illustra il significato ed il modo d’utilizzo delle funzioni per la conversione
della posizione, della velocità e dell’accelerazione da impulsi encoder a unità fisiche (e viceversa) e
dei comandi che agevolano l’impostazione e la comprensione di alcuni parametri del programma
assi consentendone la programmazione direttamente in unità fisiche.
Per abilitare l’utilizzo delle funzioni di conversione è necessario selezionare dalla sezione ASSI di
MAKEPRJ il pacchetto “ Utility per la conversione delle quote e delle velocità ”.

4.1 INSTALLAZIONE DELLE LIBRERIA

Per usare la librerie di conversione si deve innanzitutto installarla nella directory delle librerie. Per
fare questo è necessario usare il programma INSTALL presente nella libreria e quindi seguire le
indicazioni.
Dopo questa operazione nella directory delle librerie CMZ/LIB ci sarà una sottodirectory per la
libreria in oggetto.

Ora quando si userà il programma MAKEPRJ per iniziare un nuovo lavoro ci sarà una nuova
sezione ‘ASSI’ con la seguente selezione.

ASSI
[ ] …
[ ] Utility per la conversione delle quote e delle velocità
[ ] …

Utility per le conversioni delle quote e delle velocità Serve se si intende utilizzare le conversioni da unita fisiche
ad unità interne e viceversa delle grandezze posizione,
velocità e accelerazione

4.2 PRINCIPIO DI FUNZIONAMENTO

Le routine di conversione di quota, di velocità e di accelerazione per il programma assi assegnano,


ad ogni asse, sei variabili in memoria sulle quali si devono scrivere le risoluzioni dell’asse
specificato. Il calcolo della risoluzione non viene fatto dal programmatore ma bensì richiamato di
volta in volta a partire dalle variabili che mettono in relazione unità fisiche e impulsi encoder.
L’utilizzatore dovrà quindi aver cura di impostare per ogni asse:

Per le conversioni di spazio:


1. La quota di riferimento in unità fisiche.
2. Il numero di impulsi relativi alla quota di riferimento espressa al punto 1.

Per le conversioni di velocità:


3. Le unità fisiche utilizzate per la conversione delle velocità espresse utilizzando la
risoluzione di spazio del sistema
4. La base dei tempi con cui viene espressa la velocità, impostata in millisecondi.

Per le conversioni di accelerazione:

22 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 4. FUNZIONI DI CONVERSIONE

5. Le unità fisiche utilizzate per la conversione di accelerazione espresse utilizzando la


risoluzione di spazio del sistema
6. La base dei tempi con cui viene espressa l’accelerazione, impostata in millisecondi.

Queste variabili sono scritte utilizzando i comandi specifici previsti in questa libreria.
Per meglio comprendere il significato di queste sei variabili, si utilizzino i seguenti esempi.

Esempio 1:
Prendiamo in considerazione un asse lineare e supponiamo di voler utilizzare le seguenti unità di misura:

Per lo spazio: decimi di millimetro (mm con 1 decimale)


Per la velocità: decimi di metri al minuto (m/min con 1 decimale)
Per l’accelerazione: centesimi di metri al secondo quadrato (m/sec2 con 2 decimali)

Supponiamo inoltre che il sistema cinematico dell’asse sia tale per cui:

2 metri = 20000 dmm = 10520 impulsi (quota encoder già moltiplicata per 4)

e quindi:

quota di riferimento = 20000 dmm ( vedi definizione punto 1)


lettura encoder relativa = 10520 impulsi ( vedi definizione punto 2)

A questo punto si può procedere alla programmazione delle unità di conversione per la velocità. Si ricorda che
è stata scelto di esprimere la velocità in decimi di metro al minuto. A questo proposito è necessario mettere in
relazione i decimi di metro al minuto con l’unità scelta per lo spazio (che è il decimo di millimetro) ed
esprimere la base temporale sempre in millisecondi:

1 decimo di metro = 1000 decimi di mm


1 minuto = 60000 millisecondi

Quindi:

velocità di riferimento = 1000 (vedi definizione punto 3)


tempo di riferimento = 60000 (vedi definizione punto 4)

Per l’accelerazione si esegue un ragionamento simile a quello fatto per le velocità sempre rispetto all’unità di
misura dello spazio (decimi di millimetro). Ricordando che si vuole esprimere l’accelerazione in centesimi di
metro al secondo quadrato:

1 centesimo di metro = 100 decimi di mm


1 secondo = 1000 millisecondi

Quindi:

accelerazione di riferimento = 100 (vedi definizione punto 5)


tempo di riferimento = 1000 (vedi definizione punto 4)

Esempio 2:
Prendiamo in esame un asse circolare e si consideri di voler utilizzare le seguenti unità di misura:

Per lo spazio: decimi di grado (gradi con 1 decimale)


Per la velocità: decimi di giro al minuto (g/min con 1 decimale)
Per l’accelerazione: decimi di giro al secondo quadrato (g/sec2 con 1 decimali)

Supponiamo inoltre che il sistema cinematico dell’asse sia tale per cui:

1 giro = 3600 decimi di grado = 8800 impulsi ( quota encoder già moltiplicata per 4)

Doc. MS270103 - Ed. 05 - 9 aprile 2004 23


Axes utilities

Ripercorrendo i punti passi visti nell’esempio 1:

quota di riferimento = 3600 dmm ( vedi definizione punto 1)


lettura encoder relativa = 8800 impulsi ( vedi definizione punto 2)

Per quanto riguarda le conversioni di velocità, siccome:

1 decimo di giro = 360 decimi di grado


1 minuto = 60000 millisecondi

avremo:

velocità di riferimento = 360 (vedi definizione punto 3)


tempo di riferimento = 60000 (vedi definizione punto 4)

Infine, per quanto riguarda le conversioni di accelerazione, siccome:

1 decimo di giro = 360 decimi di grado


1 secondo = 1000 millisecondi

avremo:

accelerazione di riferimento = 360 (vedi definizione punto 5)


tempo di riferimento = 1000 (vedi definizione punto 4)

4.3 ESEMPIO CON I RIDUTTORI

In questo paragrafo si vuole fare un esempio di calcolo delle risoluzioni un po’ più articolato che ci
permetterà di mettere in evidenza alcuni inconvenienti che si possono trovare in pratica.
Sia dato il sistema di figura:

M R1 R2 Vite V

P1 P2 P3

con le seguenti caratteristiche:

• M: motore con encoder da 1024*4=4096 impulsi giro


• Riduttore R1 con rapporto 1:5 Giri di ingresso (Gin1) = 5
Giri di uscita (Gout1) = 1
• Riduttore R2 con rapporto 3:7 Giri di ingresso (Gin2) = 7
Giri di uscita (Gout2) = 3
• Vite passo 5 mm

Tenendo conto di questi dati si può dire che:

15 mm del movimento finale = 3 giri di P3 = 7 giri di P2 = 7*5 giri di P1 = 7*5*4096 impulsi

Cioè

24 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 4. FUNZIONI DI CONVERSIONE

15 mm = 143360 impulsi

Ora se si desidera esprimere le quote in decimi di millimetro si avrà:

quota di riferimento = 150 dmm ( vedi definizione punto 1)


lettura encoder relativa = 143360 impulsi ( vedi definizione punto 2)

da cui poi si può proseguire per il calcolo delle conversioni di velocità e di accelerazione come
visto negli esempi 1 e 2 del paragrafo precedente.

In generale per sistemi di questo tipo se:

• M è il numero di impulsi encoder (quadruplicati) per giro motore;


• R1 è il rapporto del primo riduttore (Gout1/Gin1);
• R2: rapporto del secondo riduttore (Gout2/Gin2);
• ..
• RN: rapporto dell’ennesimo riduttore (GoutN/GinN);
• L è il passo della vite espresso nella unità di misura scelta.

Si può scrivere:

quota di riferimento = L*Gout1*Gout2*..*GoutN


lettura encoder relativa = M*Gin1*Gin2*..*GinN

In questo modo si riesce sempre a definire con precisione la definizione di spazio. Riproponendo
l’esempio in esame:

quota di riferimento = 50 dmm * 1 * 3 = 150 dmm


lettura encoder relativa = 4096 * 5 * 7 = 143360 impulsi

Il fatto che sia stata scelto il decimo di millimetro come unità di misura dello spazio implica che
nell’applicativo si vuole avere la risoluzione del decimo di millimetro negli spostamenti (ad
esempio si vuole poter eseguire un posizionamento di 1 dmm). A questo punto risulta fondamentale
che ad un decimo di mm corrisponda un numero intero di impulsi. Nell’esempio in esame:

1 dmm = 143360/150 impulsi = 955.7333… (numero periodico)

Questo risultato non intero implica alcuni problemi: infatti se ad esempio si desidera fare uno
spostamento di 100 dmm, la conversione (che lavora in aritmetica intera) restituirà un numero di
impulsi pari a 95573 anche se il risultato corretto sarebbe:

100 × 143360
= 95573.333.. ossia 95573 con resto 50
150

che viene arrotondato per difetto a 95573 commettendo quindi un errore di 50/150 impulsi o più
precisamente:

Doc. MS270103 - Ed. 05 - 9 aprile 2004 25


Axes utilities

50 150
× = 0.000348.. dmm
150 143360

Questo errore può non essere significativo sul singolo posizionamento, ma se pensiamo ad una
macchina che fa più posizionamenti nella stessa direzione la somma degli errori potrebbe diventare
rilevante.
Comunque questo è un problema marginale per macchine come quelle descritte nell’esempio che
sicuramente non sono macchine cicliche/periodiche ma diventa fondamentale per le macchine come
quella descritta nel prossimo paragrafo.

Resta inteso che la migliore soluzione è che, se come nell’esempio si desidera lavorare in
decimi di millimetro, a 1 dmm corrisponda un numero intero di impulsi.

Il problema dell’arrotondamento delle conversioni sarà trattato nel paragrafo 4.5 del manuale.

4.4 ESEMPIO CON RUOTE DENTATE

Sia dato il sistema di figura:

R2 R4

M Rid R1

P1 P2 R3

con le seguenti caratteristiche:

• M: motore con encoder da 1024*4 = 4096 impulsi/giro;


• Rid: riduttore con rapporto 1:5 (Gin1=5 e Gout1=1)
• R1: ruota dentata a 10 denti;
• R2: ruota dentata a 30 denti;
• R3: ruota dentata a 10 denti, calettata su R2;
• R4: ruota dentata a 40 denti;
• P: passo catena del nastro trasportatore N pari a 5 denti della ruota R4.

Questo è un tipico esempio di macchina periodica la cui unità minima di spostamento è il singolo
passo.
Vediamo quindi di ricavare quanti impulsi corrispondono ad 1 passo. Partiamo con il considerare
che ad un giro completo della ruota finale (R4) corrispondono 40/5=8 passi.

1. 8 passi = 1 giro di R4 ;
2. 1 giro di R4 = 40/10= 4 giri di R3;
3. 4 giri di R3 = 4 giri di R2
4. 4 giri di R2 = 4*30/10=12 giri di R1;
5. 12 giri di R1 = 12*5 = 60 giri motore
6. 60 giri motore = 60*4096 = 245760 impulsi encoder

26 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 4. FUNZIONI DI CONVERSIONE

in conclusione:

8 passi = 245760 impulsi ossia 1 passo = 30720 impulsi

Questa è la condizione preferibile in quanto allo spostamento base di 1 passo corrispondono un


numero intero di impulsi e, in tal caso, non ci sono problemi di perdita di fase nel funzionamento
periodico della macchina.

Se però si ripete il ragionamento con la ruota R3 da 31 denti per giro si ottiene:

1. 8 passi = 1 giro di R4 ;
2. 1 giro di R4 = 40/31 giri di R3;
3. 40/31 giri di R3 = 40/31 giri di R2
4. 40/31 giri di R2 = (40/31)*(30/10)=120/31 giri di R1
5. 120/31 giri di R1 = 120*5/31= 600/31 giri motore
6. 600/31 giri motore = 600*4096/31=2457600/31 impulsi

in conclusione:

8 passi = 2457600/31 impulsi ossia 1 passo = 9909.677.. impulsi

In questo caso la risoluzione delle quote è sicuramente affetta da imprecisione. Per quanto riguarda
le risoluzioni si può ovviare in modo da mantenere in modo esatto il legame tra passi e impulsi
encoder. Osservando il risultato raggiunto:

2457600
8 passi = impulsi
31

si vede che equivale a dire

8*31 = 248 passi corrispondono a 2457600 impulsi encoder

In questo modo non si perde la precisione nella definizione della risoluzione delle quote e si può
impostare:

quota di riferimento = 248 passi ( vedi definizione punto 1)


lettura encoder relativa = 2457600 impulsi ( vedi definizione punto 2)

NOTA
Osservando che entrambi i numeri sono divisibili per 8 si potrebbe anche avere

quota di riferimento = 31 passi ( vedi definizione punto 1)


lettura encoder relativa = 307200 impulsi ( vedi definizione punto 2)

La semplificazione non è un’operazione indispensabile, infatti le conversioni restituiscono risultati corretti


anche con le risoluzioni iniziali.

Resta comunque il problema che all’unità base (1 passo) non corrisponde un numero intero di
impulsi: infatti se ad esempio si desidera fare lo spostamento di un passo, la conversione (che
lavora in aritmetica intera) restituirà un numero di impulsi pari a 9910 anche se il risultato corretto
sarebbe:
Doc. MS270103 - Ed. 05 - 9 aprile 2004 27
Axes utilities

1 × 2457600
= 9909.677419 ossia 9909 con resto 168
248

che viene arrotondato per eccesso a 9910 (con resto –80) commettendo quindi un errore, in valore
assoluto, di -80/248= impulsi o per meglio dire di:

− 80 248
× = 0.00003255.. passi in valore assoluto
248 2457600

Questo errore può non essere significativo sul singolo posizionamento, ma se pensiamo ad una
macchina periodica la somma degli errori risulta sicuramente rilevante: in una macchina che lavora
a 200 passi al minuto dopo 2 ore di lavoro continuo sono stati eseguiti 24000 passi accumulando un
errore di 24000*0.00003255=0,78.... cioè circa un passo.

Il problema dell’arrotondamento delle conversioni sarà trattato al paragrafo 4.5 del manuale.

Resta inteso che la migliore soluzione è che, se come nell’esempio si desidera lavorare in passi,
a 1 passo corrisponda un numero intero di impulsi.

4.5 CONVERSIONE DI QUOTE E RECUPERO RESTI

Le funzioni di conversione eseguono delle elaborazioni matematiche che spesso, come visto nei
precedenti paragrafi, arrivano a dei risultati che presentano molti decimali. In base alle risoluzioni
impostate la funzione reale di conversione restituisce solamente un valore che arrotonda quello
teorico. Il problema della perdita di decimali si evidenzia soprattutto nella conversione delle quote
da unità ad impulsi encoder (come visto negli esempi precedenti).
Nei paragrafi successivi vediamo di spiegare un metodo per aggirare il problema.

4.5.1 Significato del resto della conversione

La funzione di conversione delle quote da unità ad impulsi restituisce due dati:

- Quota in impulsi;
- Resto della conversione.

L’operazione che viene eseguita è la seguente:

Qunità ⋅ FS imp
Qimp =
FS unità

dove FSimp e FSunità indicano la risoluzione delle quote e Qunità e Qimp la quota espressa in unità di
riferimento ed impulsi encoder rispettivamente.

NOTA
Riprendendo l’esempio del paragrafo 4.3 dove:

quota di riferimento = 150 dmm


lettura encoder relativa = 143360 impulsi

28 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 4. FUNZIONI DI CONVERSIONE

si ha che: FSimpulsi=143360 mentre FSunità=150

La quota in impulsi (Qunità) è il quoziente della divisione arrotondato all’intero più vicino. Il resto
della conversione contiene l’informazione di quanto imprecisa è la conversione stessa. Se il resto è
nullo allora la conversione è esatta. L’informazione legata al resto si può utilizzare per eliminare
l’errore legato alla perdita dei decimali per effetto dell’arrotondamento del risultato. Per esempio
riprendendo l’esempio del paragrafo 4.3:

100 decimi di millimetro Æ Qimp: 95773 impulsi


Resto: 50

Il resto pari a 50 significa che l’imprecisione della conversione è pari a 50/150 o più precisamente:

50 150
× = 0.000348.. dmm
150 143360

In generale l’imprecisione dell’operazione si trova come:

Re sto
(intesa come imprecisione in impulsi)
FS unità

oppure:

Re sto FS unità
× (intesa come precisione relativa all’unità di misura scelta per la quota)
FS unità FS imp

Il segno del resto ha un significato:

- positivo: la quota in impulsi è stata arrotondata per difetto (all’intero più piccolo)
- negativo: la quota in impulsi è stata arrotondata per eccesso (all’intero più grande)

4.5.2 Recupero del resto della conversione: Esempi

In questo paragrafo viene descritta una soluzione per risolvere il problema dell’imprecisione dei
calcoli nella conversione da unità ad impulsi. Per spiegare il meccanismo faremo uso degli esempi
descritti nel paragrafo 4.3 e 4.4.

Esempio1
Dato il sistema descritto al paragrafo 4.3 si vogliono eseguire 3 posizionamenti consecutivi ognuno di 100 decimi di
millimetro. Si ricorda che:

quota di riferimento = 150 dmm = FSunità


lettura encoder relativa = 143360 impulsi = FSimpulsi

Convertendo i 100 dmm in impulsi risulta Æ 95773 imp con resto 50

Il resto 50 indica che l’imprecisione nella conversione è pari a 50/150 impulsi o 50/143360 dmm (vedi paragrafo 4.5.1)
Il segno positivo del resto indica che il risultato 95773 è arrotondato per difetto

Utilizziamo una variabile HEAP (accumulo) dove verranno memorizzati i resti parziali. La variabile HEAP viene
azzerata prima del primo posizionamento. La sequenza delle operazioni da fare è:

Doc. MS270103 - Ed. 05 - 9 aprile 2004 29


Axes utilities

1° Posizionamento:
QuotaFinale = 95773impulsi
HEAP = HEAP+Resto = 50 < FSunità

2° Posizionamento:
QuotaFinale = 95773+95773 = 191146 impulsi
HEAP = HEAP+Resto = 100 < FSunità

3°Posizionamento:
QuotaFinale = 191546+95773 = 286919 impulsi
HEAP = HEAP+Resto = 150 = FSunità

Come si può notare sul terzo posizionamento la variabile HEAP è diventata uguale al FSunità questo significa che
l’imprecisione accumulata nei 2 movimenti precedenti sommata all’imprecisione che si avrebbe nel terzo
posizionamento è diventata uguale ad un impulso encoder. Si può quindi sommare un impulso al terzo posizionamento
(che quindi sarà alla quota 287320 impulsi) ed azzerare HEAP. Dopo il terzo posizionamento la posizione è corretta
all’impulso.

Esempio2
Dato il sistema descritto al paragrafo 4.4 si ricorda che:

quota di riferimento = 31 passi = FSunità


lettura encoder relativa = 307200 impulsi = FSimpulsi

Partendo dalla quota iniziale nulla supponiamo di eseguire dei posizionamenti consecutivi di 1 passo ciascuno.

Convertendo 1 passo in impulsi Æ 9910 impulsi con resto di -10

Il resto –10 indica che l’imprecisione della conversione è pari, in valore assoluto, a 10/31 impulsi o 10/307200 passi
(vedi paragrafo 4.5.1). Il segno negativo del resto indica che il risultato 9910 è arrotondato per eccesso.

Utilizziamo la variabile HEAP (accumulo) dove verranno memorizzati i resti parziali. La variabile HEAP viene azzerata
prima del primo posizionamento. La sequenza delle operazioni da fare è:

1° Passo:
Quota Finale = 9910 impulsi
HEAP = HEAP+Resto=-10 |-10| < FSunità

2° Passo:
Quota Finale = 9910+9910 = 19820 impulsi
HEAP = HEAP+Resto=-20 |-20| < FSunità

3° Passo:
Quota Finale = 19820+9910 = 29730 impulsi
HEAP = HEAP+Resto=-30 |-30| < FSunità

4° Passo:
Quota Finale = 29730+9910 = 39640 impulsi
HEAP = HEAP+Resto=-40 |-40| > FSunità

La variabile HEAP in valore assoluto è diventata maggiore del FSunità questo significa che l’imprecisione accumulata nei
movimenti precedenti sommata all’imprecisione che si avrebbe in questo posizionamento è diventata maggiore ad un
impulso encoder. Si può quindi aggiornare (sottrarre 1) la QuotaFinale e riaggiornare HEAP:

HEAP = -40+31=-9
QuotaFinale = 39640-1 = 39639 impulsi

Il quarto posizionamento verrà quindi effettuato alla quota 39639 e non alla quota 39640.

30 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 4. FUNZIONI DI CONVERSIONE

5° Passo:
Quota Finale = 39639+9910 = 49549 impulsi
HEAP = HEAP+Resto=-19 |-19| < FSunità

30° Passo:
Quota Finale = …+9910 = 297291 impulsi
HEAP = HEAP+Resto=-21 |-21| < FSunità

31° Passo:
Quota Finale = 297291+9910 = 307201 impulsi
HEAP = HEAP+Resto=-31 |-31| = FSunità

La variabile HEAP in valore assoluto è diventata uguale al FSunità questo significa che l’imprecisione accumulata nei
movimenti precedenti sommata alla imprecisione di questo posizionamento è diventata uguale ad un impulso encoder.
Si può quindi aggiornare la QuotaFinale ed annulare HEAP

HEAP = 0
QuotaFinale = 307201-1 = 307200 impulsi

Il 31° posizionamento verrà quindi effettuato alla quota 307200 e non alla quota 307201.

Il risultato della procedura è corretto perché abbiamo ritrovato la definizione della risoluzione:

31 passi corrispondono a 307200 impulsi

4.5.3 Recupero del resto della conversione: Soluzione generale

Nel paragrafo precedente abbiamo visto come affrontare il problema del recupero dei resti con
alcuni esempi. Vediamo ora quale è la soluzione generale facendo uso di un flow chart.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 31


Axes utilities

START

Azzera HEAP

Conversione della quota da


Qunità a Qimp e somma il
resto della conversione a
HEAP

NO SI
| HEAP | ≥ FSunità

Somma a Qimp il
quoziente della divisione
HEAP/FSunità e aggiorna
HEAP con il resto della
divisione stessa

Effettuo il posizionamento
a Qimp

Come vedremo nei prossimi paragrafi la libreria “Utility per le conversioni delle quote e delle
velocità” mette a disposizione oltre a tutti i comandi di impostazione delle conversione e tutti i
comandi di conversione (diretta e inversa) anche dei comandi per la gestione del recupero dei resti
per le conversioni di quota (vedi comandi cm-uiac_quo, cm-pac_quo e cm-nac_quo).

4.6 LIBRERIA COMANDI AWL

Qui di seguito viene riportato l’elenco dei comandi della libreria “Utility per le conversioni delle
quote e delle velocità”

Tutti i comandi di conversione restituiscono il risultato arrotondato all’intero piú vicino.

Alla fine del paragrafo sono descritti i comandi che si possono utilizzare per la correzione delle
quote nella conversione da unità ad impulsi (vedi paragrafo 4.5).

NOTA
Negli esempi che seguono la descrizione dei comandi si userà il linguaggio AWL simbolico.

32 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 4. FUNZIONI DI CONVERSIONE

4.6.1 Comandi per l’impostazione delle risoluzioni

cm-setcquo

Funzione per il caricamento dei parametri di conversione di spazio relativi all’asse selezionato.
Necessita che sia caricato in ACC1 il numero di impulsi encoder relativi all’unità di spazio indicata
in ACC2.
In seguito all’uso del comando cm-setcquo le unità di misura di velocità ed accelerazione sono
automaticamente impostate come una unità di spazio al secondo ed una unità di spazio al secondo
quadrato rispettivamente.
I parametri della funzione devono essere numeri positivi.

Classe di appartenenza: Libreria conversione parametri asse


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Numero di impulsi encoder
ACC2: Unità di spazio di riferimento
Parametri restituiti: ACC1: Indeterminato
ACC2: Indeterminato
Vedi anche: cm-setcspd, cm-setcacc

Esempio: riprendendo l’esempio 1 del paragrafo 4.2 dove

2 metri = 20000 dmm = 10520 impulsi

e quindi: quota di riferimento = 20000 dmm


lettura encoder relativa = 10520 impulsi

si scriverà

SEL @AX_…
L KZ20000
L KZ10520
C cm-setcquo * Imposta l’unità di misura dello spazio in dmm

In seguito a questa impostazione l’unità di misura per la velocità sarà il decimo di millimetro al secondo, mentre per la
l’accelerazione sarà il decimo di millimetro al secondo2. Per tale motivo si intuisce che la conversione delle quote deve
assolutamente la prima ad essere impostata.I comandi cm-setcspd e cm-setcacc permetteranno di cambiare unità
di misura per la velocità e le accelerazioni.

cm-setcspd

Funzione per il caricamento dei parametri di conversione di velocità relativi all’asse selezionato.
Necessita che sia caricato in ACC1 le unità di tempo espresse in millisecondi relative allo
spostamento indicato in ACC2 ed espresso in unità di spazio.
In seguito all’uso del comando cm-setcspd l’unità di misura di accelerazione è automaticamente
impostate con le stesse unita di spazio e tempo della velocità.
Il comando va usato solo dopo che sono state impostate le risoluzioni di spazio.
I parametri della funzione devono essere numeri positivi.

Classe di appartenenza: Libreria conversione parametri asse


Modalità di chiamata: C =C

Doc. MS270103 - Ed. 05 - 9 aprile 2004 33


Axes utilities

Modifica RLC: NO
Parametri richiesti: ACC1: Unità di tempo espresse in millisecondi
ACC2: Unità di spazio di riferimento
Parametri restituiti: ACC1: Indeterminato
ACC2: Indeterminato
Vedi anche: cm-setcquo, cm-setcacc

Esempio: riprendendo l’esempio 1 del paragrafo 4.2 dove

2 metri = 20000 dmm = 10520 impulsi

e quindi: quota di riferimento = 20000 dmm


lettura encoder relativa = 10520 impulsi

se si desidera che l’unità di misura della velocità del decimo di metro al minuto si avrà

1 decimo di metro = 1000 decimi di mm


1 minuto = 60000 millisecondi

Quindi: velocità di riferimento = 1000


tempo di riferimento = 60000

si scriverà:

SEL @AX_…
L KZ20000
L KZ10520
C cm-setcquo * Imposta l’unità di misura di spazio in dmm
L KZ1000
L KZ60000
C cm-setcspd * Imposta l’unità di misura di velocità in dm/min

In seguito a questa impostazione l’unità di misura per l’accelerazione sarà il decimo di metro al minuto2. Il comando
cm-setcacc permetterà di cambiare unità di misura per le accelerazioni.

cm-setcacc

Funzione per il caricamento dei parametri di conversione di accelerazione relativi all’asse


selezionato. Necessita che siano caricati in ACC1 le unità di tempo espresse in millisecondi ed in
ACC2 lo spostamento espresso in unità si spazio.
Il comando va usato solo dopo che sono state impostate le risoluzioni di velocità.
I parametri della funzione devono essere numeri positivi.

Classe di appartenenza: Libreria conversione parametri asse


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Numero di impulsi encoder
ACC2: Unità di spazio di riferimento
Parametri restituiti: ACC1: Indeterminato
ACC2: Indeterminato
Vedi anche: cm-setcspd, cm-setcquo

Esempio: riprendendo l’esempio 1 del paragrafo 4.2 dove

2 metri = 20000 dmm = 10520 impulsi

e quindi: quota di riferimento = 20000 dmm


lettura encoder relativa = 10520 impulsi

34 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 4. FUNZIONI DI CONVERSIONE

se l’unità di misura della velocità è il decimo di metro al minuto si avrà

1 decimo di metro = 1000 decimi di mm


1 minuto = 60000 millisecondi

Quindi: velocità di riferimento = 1000


tempo di riferimento = 60000

se l’unità di misura dell’accelerazione è il centesimo di metro al secondo2

1 centesimo di metro = 100 decimi di mm


1 secondo = 1000 millisecondi

Quindi: accelerazione di riferimento = 100


tempo di riferimento = 1000

si scriverà:

SEL @AX_…
L KZ20000
L KZ10520
C cm-setcquo * Imposta l’unità di misura di spazio in dmm

L KZ1000
L KZ60000
C cm-setcspd * Imposta l’unità di misura di velocità in dm/min
L KZ100
L KZ1000
C cm-setcacc * Imposta l’unità di misura di accelerazione in cm/sec2

4.6.2 Comandi di conversione di quota

cm-ui_quo

Funzione di conversione da unità fisiche ad impulsi encoder della quota indicata in ACC1 relativa
all’asse selezionato. Il valore convertito, restituito in ACC1, è il risultato arrotondato all’intero più
vicino.

Classe di appartenenza: Libreria conversione parametri asse


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Quota in unità fisiche
ACC2: Ininfluente
Parametri restituiti: ACC1: Quota in impulsi encoder
ACC2: Indeterminato
Vedi anche: cm-iu_quo

Esempio: se si desidera convertire una quota da Unità Fisiche (Phisical Unit) ad Impulsi si scriverà:

SEL @AX_X * Seleziono asse


L @DD_QuotaPU * Quota in unità da fisiche
C cm-ui_quo * Conversione in impulsi
T @DD_QuotaPulse * Quota convertita in impulsi

Doc. MS270103 - Ed. 05 - 9 aprile 2004 35


Axes utilities

cm-iu_quo
Funzione di conversione da impulsi encoder ad unità fisiche del valore indicato in ACC1 relativo
all’asse selezionato. Il valore convertito viene restituito in ACC1.

Classe di appartenenza: Libreria conversione parametri asse


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Quota in impulsi encoder
ACC2: Ininfluente
Parametri restituiti: ACC1: Quota in unità fisiche
ACC2: Indeterminato
Vedi anche: cm-ui_quo

Esempio: se si desidera convertire la quota reale di un asse espressa in impulsi (P1) in un unità fisiche si scriverà:

SEL @AX_X * Seleziono asse


C R.P1 * Quota reale in impulsi
C cm-iu_quo * Conversione in unità fisiche
T @DD_QuotaPU * Quota convertita in unità fisiche

4.6.3 Comandi di conversione di velocità

Tutte le velocità relative al programma assi (VDESID, VIND, ecc.) sono espresse in:

imp
1. × 65536 dove Tc è il tempo di campionamento.
Tc

Fa eccezione la velocità reale dell’asse (V1) ricavata dall’encoder che si misura in:

imp
2. dove Tc è il tempo di campionamento e KK è una costante che vale 26.
KK
* Tc
2
Per tale motivo ci sono due set di comandi di conversione per velocità espresse nell’unità 1 oppure
per l’unità 2 (cioè per V1).

cm-ui_ispd
Funzione per la conversione della velocità dell’asse selezionato da unità fisiche a unità interne. Il
valore della velocità deve essere passato in ACC1. Il valore convertito viene restituito in ACC1.

Classe di appartenenza: Libreria conversione parametri asse


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Velocità in unità fisiche
ACC2: Ininfluente
Parametri restituiti: ACC1: Velocità in unità interne
ACC2: Indeterminato
Vedi anche: cm-iu_ispd

Esempio: Se si desidera comandare un asse in velocità impostando la velocità in unità fisiche si scriverà:

SEL @AX_X * Seleziono asse

36 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 4. FUNZIONI DI CONVERSIONE

L @DD_SpeedPU * Velocità in unità fisiche


C cm-ui_ispd * Conversione in unità interne
C cm-veli * Comando di velocità

cm-iu_ispd

Funzione per la conversione della velocità dell’asse selezionato da unità interne a unità fisiche. Il
valore della velocità deve essere passato in ACC1. Il valore convertito viene restituito in ACC1.

Classe di appartenenza: Libreria conversione parametri asse


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Velocità in unità interne
ACC2: Ininfluente
Parametri restituiti: ACC1: Velocità in unità fisiche
ACC2: Indeterminato
Vedi anche: cm-ui_ispd

Esempio: Se si desidera convertire la velocità massima dell’asse espressa in unità interne (VEMAX) in unità fisiche si
scriverà:

SEL @AX_X * Seleziono asse


C R.VEMAX * Velocità massima in unità interne
C cm-iu_ispd * Conversione in unità fisiche
T @DD_MaxSpeedPU * Velocità massima in unità fisiche

cm-ui_mspd

Funzione per la conversione della velocità dell’asse selezionato da unità fisiche a velocità misurate
in impulsi encoder (vedi parametro V1) . Il valore della velocità deve essere passato in ACC1. Il
valore convertito viene restituito in ACC1.

Classe di appartenenza: Libreria conversione parametri asse


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Velocità in unità fisiche
ACC2: Ininfluente
Parametri restituiti: ACC1: Velocità misurata in impulsi encoder medi (V1)
ACC2: Indeterminato
Vedi anche: cm-iu_mspd

cm-iu_mspd

Funzione per la conversione della velocità dell’asse selezionato da impulsi encoder misurati (vedi
parametro V1) a unità fisiche. Il valore da convertire deve essere passato in ACC1, il valore
convertito viene restituito in ACC1.

Classe di appartenenza: Libreria conversione parametri asse


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Velocità misurata in impulsi encoder medi (V1)
ACC2: Ininfluente

Doc. MS270103 - Ed. 05 - 9 aprile 2004 37


Axes utilities

Parametri restituiti: ACC1: Velocità in unità fisiche


ACC2: Indeterminato
Vedi anche: cm-ui_mspd

Esempio: Se si desidera convertire la velocità reale dell’asse (V1) in unità fisiche si scriverà:

SEL @AX_X * Seleziono asse


C R.V1 * Velocità reale in unità interne
C cm-iu_mspd * Conversione in unità fisiche
T @DD_SpeedPU * Velocità reale in unità fisiche

4.6.4 Comandi di conversione di accelerazione

Il programma assi usa come unità interne per le accelerazioni e decelerazioni le variazioni di
velocità e cioè :

⎡ imp ⎤
∆⎢ × 65536⎥
⎣ Tc ⎦

In questo paragrafo verranno descritti i comandi di conversione da unità fisiche (PU= Phisical Unit)
(cioè spazio/tempo2 come ad esempio m/sec2) a unità interne (IU= Internal Unit) e viceversa a
partire da quanto impostato con il comando cm-setcacc (vedi 4.6.1), ma anche dei comandi di
conversione che fanno riferimento alla variazione di velocità in un tempo predefinito.
Saranno prese in considerazione anche funzioni per la conversione del coefficiente a “S” delle
rampe.

cm-ui_facc
Funzione per la conversione dell’accelerazione dell’asse selezionato espressa come spazio/tempo²
ad unità interne (parametri KVS e/o KVD). Il valore da convertire deve essere passato in ACC1, il
valore convertito viene restituito in ACC1.

Classe di appartenenza: Libreria conversione parametri asse


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Accelerazione espressa come spazio/tempo²
ACC2: Ininfluente
Parametri restituiti: ACC1: Accelerazione in unità interne
ACC2: Indeterminato
Vedi anche: cm-iu_facc

Esempio: se si desidera impostare le rampe lineari espresse i unità fisiche si scriverà:

SEL @AX_X * Seleziono asse


L @DD_AccPU * Accelerazione in unità fisiche
C cm-ui_facc * Converte l’accelerazione in unità interne
L @DD_DecPU * Decelerazione in unità fisiche
C cm-ui_facc * Converte la decelerazione in unità interne
C cm-ramp * Imposta il valore di KVS e KVD

38 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 4. FUNZIONI DI CONVERSIONE

cm-iu_facc
Funzione per la conversione dell’accelerazione dell’asse selezionato espressa in unità interne
(parametri KVS e/o KVD) all’equivalente valore in unità fisiche (spazio/tempo²). Il valore da
convertire deve essere passato in ACC1, il valore convertito viene restituito in ACC1.

Classe di appartenenza: Libreria conversione parametri asse


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Accelerazione in unità interne
ACC2: Ininfluente
Parametri restituiti: ACC1: Accelerazione espressa come spazio/tempo²
ACC2: Indeterminato
Vedi anche: cm-ui_facc

cm-ui_tacc

Funzione per la conversione dell’accelerazione dell’asse selezionato espressa come variazione di


velocità su tempo ad unità interne (parametri KVS e/o KVD). Il tempo di riferimento deve essere
espresso in millesimi di secondo e memorizzato in ACC1, mentre la variazione di velocità espressa
in unità interne va posta in ACC2. Il valore convertito viene restituito in ACC1.

Classe di appartenenza: Libreria conversione parametri asse


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Tempo di riferimento in millisecondi
ACC2: Variazione di velocità nel tempo di riferimento in unità interne
Parametri restituiti: ACC1: Accelerazione in unità interne
ACC2: Indeterminato
Vedi anche: cm-iu_tacc

Esempio: se si desidera impostare la rampa di accelerazione e di decelerazione di un asse a un valore pari ad una
variazione della velocità di 30 decimetri/minuto in un tempo di 20 secondi si scriverà. Le unità di velocità sono
espresse con 1 decimale.

SEL @AX_X * Seleziono asse slave


L KZ30 * Velocità in decimi di metro al minuto
C cm-ui_ispd * Conversione in unità interne
L KZ20000 * Tempo di riferimento in millisecondi
C cm-ui_tacc * Converto l’accelerazione in unità interne
T @DD_KvsIU * Accelerazione in unità interne
T @DD_KvdIU * Decelerazione in unità interne

L @DD_KvsIU
L @DD_KvdIU
C cm-ramp * Imposta KVS e KVD

cm-iu_tacc
Funzione per la conversione dell’accelerazione dell’asse selezionato espressa in unità interne
(parametri KVS e/o KVD) a valore di tempo in millisecondi. Il valore di accelerazione in unità
interne deve essere memorizzato in ACC1, mentre la relativa variazione di velocità espressa in
unità interne va posta in ACC2. Il valore convertito viene restituito in ACC1.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 39


Axes utilities

Classe di appartenenza: Libreria conversione parametri asse


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Accelerazione in unità interne
ACC2: Variazione di velocità nel tempo di riferimento in unità interne
Parametri restituiti: ACC1: Tempo di riferimento in millisecondi
ACC2: Indeterminato
Vedi anche: cm-ui_facc

cm-ui_aacc

Funzione per il calcolo della variazione dell’accelerazione dell’asse selezionato (raccordo sulla
rampa lineare: parametri KRAS e/o KRAD).
I dati di partenza per il calcolo di questo parametro sono la massima variazione di accelerazione
ammessa (pendenza massima) in unità interne (KVS e/o KVD), la variazione di velocità su cui si
deve gestire la variazione di accelerazione sempre in unità interne (VEMAX o di volta in volta la
VREGIME) e la percentuale di raccordo che si desidera impostare: se si considera di dividere in due
parti la rampa lineare di accelerazione (o di decelerazione), la percentuale si riferisce alla porzione
di semi rampa che il sistema eseguirà in modo raccordato. Se per esempio si seleziona il 30% di
raccordo, la rampa sarà scomposta in tre fasi: un raccordo iniziale pari al 15% della rampa (il 30%
della semi rampa è equivalente al 15% della rampa totale), proseguirà poi per il 70% in modo
lineare alla pendenza massima programmata (KVS e/o KVD) e terminerà raccordandosi alla velocità
finale con il rimanente 15%; se si seleziona raccordo pari al 100%, la rampa risulterà in pratica
scomposta in sole due fasi tutte percorse in modo raccordato. I parametri per il calcolo vanno in
precedenza memorizzati in un buffer di data del PLC il cui indirizzo iniziale deve essere
successivamente indicato in ACC1; tale buffer deve avere il seguente formato:

1° LongWord = Variazione accelerazione su cui compiere il calcolo in unita` interne


2° LongWord = Variazione velocità su cui compiere il calcolo in unita` interne
3° LongWord = Percentuale dell’accelerazione dell’accelerazione da utilizzare

Il valore calcolato viene restituito in ACC1.

Classe di appartenenza: Libreria conversione parametri asse


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Indirizzo iniziale buffer parametri
ACC2: Ininfluente
Parametri restituiti: ACC1: Accelerazione dell’accelerazione in unità interne (KRAS e/o KRAD)
ACC2: Indeterminato
Vedi anche: cm-ui_facc, cm-iu_facc, cm-ui_tacc, cm-iu_tacc

Esempio: si vuole che un asse adegui i parametri di rampa in modo tale che il raccordo utilizzato risulti essere sempre
pari al 100% (tutta la rampa in raccordo senza il tratto lineare), qualsiasi sia la velocità con cui l’asse sarà comandato.
La pendenza massima ammessa (accelerazione massima) è data dal parametro KVS. La velocità di posizionamento è di
3 decimetri/minuto. Si suppone anche la decelerazione sia la stessa dell’accelerazione

SEL @AX_X * Seleziono asse


L D” AX_X KVS” * legge l’accelerazione massima ammessa
T @DD_Table0 * 1° cella buffer – accelerazione massima

L KZ30 * Velocità in decimi di metri al minuto


C cm-ui_ispd * Converto la velocità in unità interne

40 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 4. FUNZIONI DI CONVERSIONE

T @DD_Table1 * 2° cella buffer – variazione di velocità UI

L KZ100 * Percentuale di raccordo


T @DD_Table2 * 3° cella buffer – percentuale di raccordo

LA @DD_Table0 * Carico in ACC1 l’indirizzo iniziale del buffer


C cm-ui_aacc * Calcolo variazione dell’accelerazione
T @DD_KrasIU * KRAS espresso in unità interne
T @DD_KradIU * KRAD espresso in unità interne

L @DD_KrasIU
L @DD_KradIU
C cm-ramps * imposta i valori di KRAS e KRAD

IMPORTANTE
Le data @DD_Table0, DD_Table1, DD_Table2 devono essere consecutive in memoria (ad
esempio rispettivamente DD100, DD104 e DD108)

NOTA
In questo esempio è stato necessario leggere la variabile KVS dell’asse; non essendo a disposizione alcun
comando AWL per leggere questa variabile si è fatto uso dell’istruzione D” messa a disposizione dalla libreria
“Utilities AWL –AWLUTI”. Stesso discorso vale per l’istruzione LA che permette di caricare in ACC1
l’indirizzo di una data del PLC.

4.6.5 Comandi di conversione per i rapporti di inseguimento

Nelle applicazioni in cui si devono calcolare dei rapporti di inseguimento (ad esempio un albero
elettrico) è necessario impostare la variabile RAPINS che è così definita:

DeltaQuotaSlave
RAPINS = × 65536 con i due delta espressi in impulsi
DeltaQuotaMaster

Si può utilizzare il seguente comando

cm-ui_rat

Funzione per il calcolo del rapporto di inseguimento tra due assi a partire dal rapporto tra due valori
di spazio espressi in unità fisiche. Il calcolo è relativo all’asse selezionato che viene considerato lo
slave. I parametri per il calcolo vanno in precedenza memorizzati in un buffer di data del PLC il cui
indirizzo iniziale deve essere successivamente indicato in ACC1; tale buffer deve avere il seguente
formato:

1° LongWord = numero asse master


2° LongWord = Spazio asse slave in unità fisiche
3° LongWord = Spazio asse master in unità fisiche

Il valore calcolato viene restituito in ACC1.

Classe di appartenenza: Libreria conversione parametri asse


Modalità di chiamata: C =C
Modifica RLC: NO

Doc. MS270103 - Ed. 05 - 9 aprile 2004 41


Axes utilities

Parametri richiesti: ACC1: Indirizzo iniziale buffer parametri


ACC2: Ininfluente
Parametri restituiti: ACC1: Rapporto di inseguimento (RAPINS)
ACC2: Indeterminato
Vedi anche:

Esempio: si vuole calcolare il rapporto di inseguimento per poter abilitare la funzione di albero elettrico sull’asse
slave in inseguimento dell’asse master e si vuole che per ogni 1000 millimetri del master, lo slave si sposti di 650
millimetri.

SEL @AX_Slave * Seleziono asse slave

L K” AX_Master * Carico numero di asse master


T @DD_Table0 * 1° cella buffer – numero asse master

L KZ650 * Spazio asse slave


T @DD_Table1 * 2° cella buffer – spazio asse slave

L KZ1000 * Spazio asse master


T @DD_Table2 * 3° cella buffer – spazio asse master

LA @DD_Table0 * Carico in ACC1 l’indirizzo iniziale del buffer


C cm-ui_rat * Calcola il rapporto di inseguimento
C W.RAPINS * Memorizzo il valore della variabile

IMPORTANTE
Le data @DD_Table0, DD_Table1, DD_Table2 devono essere consecutive in memoria (ad
esempio rispettivamente DD100, DD104 e DD108)

4.6.6 Comandi per il recupero del resto della conversione

Come più volte detto in questo capitolo, uno dei problemi fondamentali è il recupero dei resti della
conversione. Nei paragrafi 4.3, 4.4 e 4.5 sono stati descritti esempi e tecniche per il recupero dei
resti delle conversione. In questo paragrafo vedremo invece quali sono i comandi messi a
disposizione dalla libreria “Utility per le conversioni delle quote e delle velocità”.
Prima di affrontare la descrizione dei comandi è necessario fare alcune premesse.

Prendiamo in considerazione la macchina descritta nel paragrafo 4.4, in cui a 31 passi


corrispondono 307200 impulsi, ossia a 1 passo corrispondono 9910 impulsi con un resto pari a –10
(risultato fornito dalla routine di conversione delle quote).
Supponiamo inoltre di voler realizzare una macchina che compie singoli passi in avanti. Se
indichiamo con:

@DD_ImpStep Numero impulsi per passo cioè 9910 (dato del problema)
@DD_Rest Valore del resto cioè –10 (dato del problema)
@DD_NStep Numero di periodi dopo il quale il numero di impulsi diventa intero cioè 31 (dato del
problema)
@DD_Heap Accumulo dei resti
@DD_SpeedIU Velocità di posizionamento già in unità interne (dato del problema)
@DD_QuotaImp Posizione finale in impulsi
@DD_CorrImp Numero di impulsi da correggere

Si può scrivere:

42 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 4. FUNZIONI DI CONVERSIONE

L @DW_StepPos * Step del ciclo


CASE
OF 0 * Attesa Start
U @M_Start
IF
SEL @AX_X * Seleziona asse
C cm-zeroa * Azzera quota
CLR @DD_Heap * Azzera accumolo resti
INC @DW_Step_Pos
ENDIF
ENDOF

OF 1 * Comando di posizionamento
SEL @AX_X
U C cm-?0mode
IF
* Se l’asse è fermo
C R.ENC.FIN * Legge la quota finale
L @DD_ImpStep
+F
T @DD_QuotaImp * Quota finale da raggiungere

* Gestione resti
L @DD_Heap
L @DD_Rest
+F
T @DD_Heap
L @DD_NStep
:F
T @DD_CorrImp * Numero di impulsi da correggere con segno

L @DD_CorrImp
L @KZ0
<>F
IF
* Il resto è traboccato

* 1. Riaggiorno Heap
L @DD_Nstep
L @DD_Heap
+F
T @DD_Heap

* 2. Riaggiorno quota finale


L @DD_QuotaImp
L @DD_CorrImp
+F
T @DD_QuotaImp
ENDIF

* Posizionamento
L @DD_QuotaImp
L @DD_SpeedIU
C cm-move

INC @DD_StepPos
ENDIF
ENDOF
OF 2
SEL @AX_X
U C cm-?0mode

Doc. MS270103 - Ed. 05 - 9 aprile 2004 43


Axes utilities

IF
L KZ1
T @DD_StepPos * Ritorna al passo 1
ENDIF
ENDOF
ENDCASE

Se analizziamo le variabili durante il funzionamento a passi della macchina avremo che:

N. Passo Quota iniziale Quota finale


@DD_QuotaImp @DD_Heap @DD_CorrImp
1 0 9910 -10 0
2 9910 19820 -20 0
3 19820 29730 -30 0
4 29730 39640 -40 -1

Al passo n.4 c’è il trabocco di Heap rispetto a 31 quindi vanno aggiornate sia Heap sia la quota finale. Il passo 4
diventa quindi:

4 29730 39639 -9 0
5 39639 49549 -19 0
6 49549 59459 -29 0
7 59459 69369 -39 -1

Al passo n.7 c’è il trabocco di Heap rispetto a 31 quindi vanno aggiornate sia Heap sia la quota finale. Il passo 7
diventa quindi:

7 59459 69368 -8 0
8 69368 79278 -18 0
… … … …
31 297291 307201 -31 -1

Al passo n.31 c’è il trabocco di Heap rispetto a 31 quindi vanno aggiornate sia Heap sia la quota finale. Si ritorna
quindi alla situazione iniziale. Il passo 31 diventa quindi:

31 297291 307200 0 0

Supponiamo però che arrivati ad un determinato passo si voglia far tornare indietro la macchina.
Per far questo è necessario calcolare la quota finale (@DD_QuotaImp) come differenza tra la quota
dell’asse (ENC.FIN) e il numero di impulsi per step (@DD_ImpStep), ma è anche necessario
gestire l’accumulo del resto come differenza tra l’accumulo stesso (@DD_Heap) e il resto
(@DD_Rest). Per meglio comprendere la problematica sul programma precedente sono state
evidenziate le due parti che andrebbero modificate.

Quindi riassumendo abbiamo due situazioni:

1) HEAP = HEAP+Rest dove Rest è considerato con segno

Oppure

2) HEAP= HEAP-Rest dove Rest è considerato con segno

In generale possiamo generalizzare l’analisi con la seguente tabella:

Caso 1 Caso 2
Imp_Step >0; Velocità >0 X

44 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 4. FUNZIONI DI CONVERSIONE

Imp_Step <0; Velocità >0 X


Imp_Step >0; Velocità <0 X
Imp_Step <0; Velocità <0 X

La libreria in esame metterà a disposizione due comandi (cm-pac_quo per il caso 1 e cm-
nac_quo per il caso 2) per gestire correttamente queste due tipologie di recupero dei resti.

cm-uiac_quo

Funzione di conversione da unità fisiche ad impulsi encoder della quota indicata in ACC1 relativa
all’asse selezionato. Il valore convertito, restituito in ACC1, è il risultato arrotondato all’intero più
vicino delle operazioni eseguite all’interno della funzione. Il resto della conversione viene restituito
con segno in ACC2. Il segno indica se l’arrotondamento è avvenuto per eccesso (resto negativo) o
per difetto (resto positivo).

Classe di appartenenza: Libreria conversione parametri asse


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Quota in unità fisiche
ACC2: Ininfluente
Parametri restituiti: ACC1: Quota in impulsi encoder
ACC2: Resto della conversione
Vedi anche: cm-pac_quo, cm-nac_quo

Esempio: se riprendiamo l‘esempio del paragrafo 4.4 dove ad una quota di riferimento di 31 passi corrisponde una
lettura encoder relativa di 307200 impulsi e si vuole convertire una quota di 1 passo si scriverà:

SEL @AX_X * Seleziona asse


L KZ1 * Quota in passi
C cm-uiac_quo * Conversione
T @DD_QuotaImp * Quota in impulsi arrotondata (9910 impulsi)
TAK
T @DD_Rest * Resto della conversione (-10)

In questo esempio (1x307200)/31=9909.677419 che viene arrotondato per eccesso a 9910; il resto è -10.

Se invece si vuole convertire una quota di 2 passi

SEL @AX_X * Seleziona asse


L KZ2 * Quota in unità da convertire in dmm
C cm-uiac_quo * Conversione
T @DD_QuotaImp * Quota in impulsi arrotondata (19819 impulsi)
TAK
T @DD_Rest * Resto della conversione (11)

In questo esempio (2x307200)/31=19819.35488 che viene arrotondato per difetto a 19819; il resto è 11.

cm-pac_quo

Funzione che gestisce il recupero dei resti nell’operazione di conversione di quote da unità ad
impulsi. Si utilizza quando il segno della quota indica anche la direzione del movimento (vedi caso
1 descritto a inizio paragrafo).

Doc. MS270103 - Ed. 05 - 9 aprile 2004 45


Axes utilities

Fornendo in ACC1 il resto parziale della conversione cm-uiac_quo ed in ACC2 la somma dei
resti ottenuti nelle conversioni precedentemente svolte (chiamato accumulo, Heap) si ottiene in
ACC1 il nuovo accumulo ed in ACC2 il numero di impulsi di aggiornamento da aggiungere al
risultato della conversione vera e propria. Il comando si deve applicare solamente alla conversione
cm-uiac_quo.

Classe di appartenenza: Libreria conversione parametri asse


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Accumulo totale dei precedenti resti
ACC2: Resto parziale della conversione
Parametri restituiti: ACC1: Nuovo accumulo totale dei resti
ACC2: Quota di aggiornamento in impulsi
Vedi anche: cm-uiac_quo, cm-nac_quo

cm-nac_quo
Funzione che gestisce il recupero dei resti nell’operazione di conversione di quote da unità ad
impulsi. Si utilizza quando il segno della quota è opposto alla direzione del movimento (vedi caso 2
descritto a inizio paragrafo).
Fornendo in ACC1 il resto parziale della conversione cm-uiac_quo ed in ACC2 la somma dei
resti ottenuti nelle conversioni precedentemente svolte (chiamato accumulo, Heap) si ottiene in
ACC1 il nuovo accumulo ed in ACC2 il numero di impulsi di aggiornamento da aggiungere al
risultato della conversione vera e propria. Il comando si deve applicare solamente alla conversione
cm-uiac_quo.

Classe di appartenenza: Libreria conversione parametri asse


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Accumulo totale dei precedenti resti
ACC2: Resto parziale della conversione
Parametri restituiti: ACC1: Nuovo accumulo totale dei resti
ACC2: Quota di aggiornamento in impulsi
Vedi anche: cm-uiac_quo, cm-pac_quo

4.6.7 Esempio di utilizzo dei comandi per il recupero del resto della conversione

Alla luce dei nuovi comandi rivediamo l’esempio già visto nel paragrafo 4.6.6.

Si ricorda che si tratta della macchina descritta nel paragrafo 4.4, in cui a 31 passi corrispondono
307200 impulsi, ossia a 1 passo corrispondono 9910 impulsi con un resto pari a –10 (risultato
fornito dalla routine di conversione delle quote).
Supponiamo inoltre di voler realizzare una macchina che compie singoli passi in avanti o singoli
passi indietro. Se indichiamo con:

@DD_ImpStep Numero impulsi per passo cioè (9910)


@DD_Rest Valore del resto cioè (–10)
@DD_Heap Accumulo dei resti

46 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 4. FUNZIONI DI CONVERSIONE

@DD_SpeedPU Velocità di posizionamento già in unità fisiche (passi al minuto)


@DD_QuotaImp Posizione finale in impulsi
@DD_CorrImp Numero di impulsi da correggere
@M_Direction merker di direzione 1=avanti, 0=indietro

Si può scrivere:

* Questa USER va chiamata per settare le conversioni dell’asse catena


* ad esempio nel blocco #RESET del programma PLC
#USER @U_ConvertionSet * user per settare le conversioni
@ SEL @AX_X
L KZ31 * Numero di passi
L KZ307200 * Numero di impulsi equivalenti
C cm-setcquo * Setta parametri di conversione per le quote

* Se si desidera fornire la velocità in passi/min


L KZ1 * 1 passo
L KZ60000 * 1 min = 60000 msec
C cm-setcspd
..
BE

* User di ciclo automatico


#USER @U_Automatic
..
L @DW_StepPos * Step del ciclo
CASE
OF 0 * Attesa Start
U @M_Start
IF
SEL @AX_X * Seleziona asse
C cm-zeroa * Azzera quota

L KZ1 * Numero di passi


C cm-uiac_quo * conversione passi -> impulsi con calcolo del resto
T @DD_ImpStep * numero di impulsi equivalenti al passo
TAK
T @DD_Rest * resto della conversione

CLR @DD_Heap * Azzera accumulo resti


INC @DW_Step_Pos
ENDIF
ENDOF

OF 1 * Comando di posizionamento
SEL @AX_X
U C cm-?0mode
IF
* Se l’asse è fermo
U @M_Direction
IF * Avanti
C R.ENC.FIN * Legge la quota finale
L @DD_ImpStep
+F
T @DD_QuotaImp * Quota finale da raggiungere
ELSE * Indietro
C R.ENC.FIN * Legge la quota finale
L @DD_ImpStep
-F
T @DD_QuotaImp * Quota finale da raggiungere
ENDIF

Doc. MS270103 - Ed. 05 - 9 aprile 2004 47


Axes utilities

* Gestione resti
U @M_Direction
IF
* Avanti
L @DD_Heap * Accumulo dei resti
L @DD_Rest * Resto
C cm-pac_quo * comando di gestione accumulo resti
T @DD_Heap * Aggiornamento accumulo
TAK
T @DD_CorrImp * Impulsi di correzione
ELSE
* Indietro
L @DD_Heap * Accumulo dei resti
L @DD_Rest * Resto
+F
C cm-nac_quo * comando di gestione accumulo resti
T @DD_Heap * Aggiornamento accumulo
TAK
T @DD_CorrImp * Impulsi di correzione

ENDIF

* Posizionamento
L @DD_QuotaImp * Quota in impulsi
L @DD_CorrImp * Eventuale correzione
+F
L @DD_SpeedPU * Velocita in passi/min
C cm-ui_ispd * conversione da passi/min -> unità interne
C cm-move
INC @DD_StepPos
ENDIF
ENDOF
OF 2
SEL @AX_X
U C cm-?0mode
IF
L KZ1
T @DD_StepPos * Ritorna al passo 1
ENDIF
ENDOF
ENDCASE

48 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 4. FUNZIONI DI CONVERSIONE

4.7 LIBRERIA COMANDI FORTH

In questo paragrafo sono i comandi che si possono chiamare direttamente da FORTH.

4.7.1 Comandi per l’impostazione delle risoluzioni

CM-SETCQUO

Funzione per il caricamento dei parametri di conversione di spazio relativi all’asse selezionato.
Necessita che siano preparati nello stack le unità di spazio di riferimento, il numero corrispondente
di impulsi encoder ed il numero di asse. Vengono impostate anche le risoluzioni iniziali di velocità
ed accelerazione rispettivamente come una unità di spazio al secondo ed una unità di spazio al
secondo quadrato senza decimali.
La funzione si aspetta solamente numeri positivi.

Sintassi: n1 n2 n3 ---
Argomenti: n1 : unità di spazio di riferimento
n2 : numero di impulsi encoder
n3 : numero dell’asse

CM-SETCSPD
Funzione per il caricamento dei parametri di conversione di velocità relativi all’asse selezionato.
Necessita che siano preparati nello stack lo spostamento espresso in unità di spazio, il tempo
corrispondente espresso in millisecondi, il numero di asse. Il comando va usato solo dopo che sono
state impostate le risoluzioni di spazio. Viene impostata anche la risoluzione dell’accelerazione
inserendo come valore di default le stesse unita di spazio e tempo della velocità.
La funzione si aspetta solamente numeri positivi.

Sintassi: n1 n2 n3 ---
Argomenti: n1 : spostamento espresso in unità di spazio di riferimento
n2 : tempo espresso in millisecondi
n3 : numero dell’asse

CM-SETACC
Funzione per il caricamento dei parametri di conversione di accelerazione relativi all’asse
selezionato. L’accelerazione si misura in unità di spazio su tempo al quadrato. Il comando si aspetta
sullo stack le unità di spazio riferite a quelle di riferimento ed il tempo in millisecondi. Il comando
va usato solo dopo che sono state impostate le risoluzioni di spazio e di velocità.
La funzione si aspetta solamente numeri positivi.

Sintassi: n1 n2 n3 ---
Argomenti: n1 : unità di spazio espresse rispetto a quelle di riferimento
n2 : tempo espresso in millisecondi
n3 : numero dell’asse

Doc. MS270103 - Ed. 05 - 9 aprile 2004 49


Axes utilities

4.7.2 Comandi di conversione di quota

CM-UI_QUO

Funzione di conversione da unità fisiche ad impulsi encoder. Si aspetta sullo stack la quota in unità
da convertire ed il numero dell’asse. Il valore convertito è il risultato arrotondato all’intero più
vicino.

Sintassi: n1 n2 --- n3
Argomenti: n1 : unità di spazio
n2 : numero dell’asse
n3 : impulsi encoder

CM-IU_QUO

Funzione di conversione da impulsi encoder ad unità fisiche. Si aspetta sullo stack il numero di
impulsi encoder da convertire ed il numero dell’asse.

Sintassi: n1 n2 --- n3
Argomenti: n1 : impulsi encoder
n2 : numero dell’asse
n3 : unità di spazio

4.7.3 Comandi di conversione di velocità

CM-UI_ISPD

Funzione per la conversione della velocità dell’asse selezionato da unità fisiche a unità interne.

Sintassi: n1 n2 --- n3
Argomenti: n1 : velocità in unità fisiche
n2 : numero asse
n3 : velocità in unità interne

CM-IU_ISPD

Funzione per la conversione della velocità dell’asse selezionato da unità interne a unità fisiche.

Sintassi: n1 n2 --- n3
Argomenti: n1 : velocità in unità interne
n2 : numero asse
n3 : velocità in unità fisiche

CM-UI_MSPD

Funzione per la conversione della velocità dell’asse selezionato da unità fisiche a velocità misurate
in impulsi encoder (vedi parametro V1).

50 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 4. FUNZIONI DI CONVERSIONE

Sintassi: n1 n2 --- n3
Argomenti: n1 : velocità in unità fisiche
n2 : numero asse
n3 : velocità in unità interne

CM-IU_MSPD

Funzione per la conversione della velocità dell’asse selezionato da impulsi encoder misurati (vedi
parametro V1) a unità fisiche.

Sintassi: n1 n2 --- n3
Argomenti: n1 : velocità in unità interne
n2 : numero asse
n3 : velocità in unità fisiche

4.7.4 Comandi di conversione di accelerazione

CM-UI_FACC
Funzione per la conversione dell’accelerazione dell’asse selezionato espressa come spazio/tempo²
ad unità interne (parametri KVS e/o KVD). In unità interne l’accelerazione è sempre positiva, aquista
il significato di accelerazione o decelerazione a seconda che si parli di KVS o di KVD.

Sintassi: n1 n2 --- n3
Argomenti: n1 : accelerazione espressa come spazio/tempo²
n2 : numero asse
n3 : accelerazione espressa in unità interne

CM-IU_FACC
Funzione per la conversione dell’accelerazione dell’asse selezionato espressa in unità interne
(parametri KVS e/o KVD) all’equivalente valore in unità fisiche (spazio/tempo²). L’accelerazione
interna è sempre positiva quindi il risultato che si ottiene è ancora positivo. Si interpreta come
accelerazione o decelerazione a seconda che si stia convertendo KVS o KVS rispettivamente.

Sintassi: n1 n2 --- n3
Argomenti: n1 : accelerazione espressa in unità interne
n2 : numero asse
n3 : accelerazione espressa come spazio/tempo²

CM-UI_TACC

Funzione per la conversione dell’accelerazione descritta come variazione di velocità su tempo ad


unità interne (parametri KVS e/o KVD). Il tempo di riferimento deve essere espresso in millesimi di
secondo mentre la variazione di velocità espressa in unità interne.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 51


Axes utilities

Sintassi: n1 n2 --- n3
Argomenti: n1 : variazione di velocità in unità interne
n2 : intervallo di tempo espresso in millesimi di secondo
n3 : accelerazione in unità interne

CM-IU_TACC

Funzione per la conversione dell’accelerazione da unità interne (parametri KVS e/o KVD) ad
intervallo di tempo in millisecondi. Si deve fornire l’accelerazione in unità interne e la relativa
variazione di velocità espressa anch’essa in unità interne.

Sintassi: n1 n2 --- n3
Argomenti: n1 : accelerazione in unità interne
n2 : variazione di velocità in unità interne
n3 : intervallo di tempo espresso in millesimi di secondo

CM-UI_AACC

Funzione per il calcolo della variazione dell’accelerazione dell’asse selezionato (raccordo sulla
rampa lineare: parametri KRAS e/o KRAD). I dati di partenza per il calcolo di questo parametro sono
la massima variazione di accelerazione ammessa (pendenza massima) in unità interne (KVS e/o
KVD), la variazione di velocità su cui si deve gestire la variazione di accelerazione sempre in unità
interne (VEMAX o di volta in volta la VREGIME) e la percentuale di raccordo che si desidera
impostare: se si considera di dividere in due parti la rampa lineare di accelerazione (o di
decelerazione), la percentuale si riferisce alla porzione di semi rampa che il sistema eseguirà in
modo raccordato. Se per esempio si seleziona il 30% di raccordo, la rampa sarà scomposta in tre
fasi: un raccordo iniziale pari al 15% della rampa (il 30% della semi rampa è equivalente al 15%
della rampa totale), proseguirà poi per il 70% in modo lineare alla pendenza massima programmata
(KVS e/o KVD) e terminerà raccordandosi alla velocità finale con il rimanente 15%; se si seleziona
raccordo pari al 100%, la rampa risulterà in pratica scomposta in sole due fasi tutte percorse in
modo raccordato.

Sintassi: n1 n2 n3 --- n4
Argomenti: n1 : variazione velocità su cui compiere il calcolo in unita` interne
n2 : variazione accelerazione su cui compiere il calcolo in unita` interne
n3 : percentuale dell’accelerazione dell’accelerazione da utilizzare

4.7.5 Comandi di conversione per i rapporti di inseguimento

CM-UI_RAT
Funzione per il calcolo del rapporto di inseguimento tra due assi (slave /master) a partire dal
rapporto tra due valori di spazio espressi in unità fisiche. Si devono preparare sullo stack il numero
di unità a numeratore ed il numero dell’asse slave corrispondente, il numero di unità a
denominatore e l’asse master corrispondente.

52 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 4. FUNZIONI DI CONVERSIONE

Sintassi: n1 n2 n3 n4 --- n5
Argomenti: n1 : unità di spazio dell’asse slave
n2 : numero dell’asse slave
n3 : unità di spazio dell’asse master
n4 : numero dell’asse master
n5 : rapporto di inseguimento

4.7.6 Recupero del resto della conversione

CM-UIAC_QUO

Funzione di conversione da unità fisiche ad impulsi encoder. Si aspetta sullo stack la quota in unità
da convertire ed il numero dell’asse. Il valore convertito è il risultato arrotondato all’intero più
vicino delle operazioni eseguite all’interno dalla funzione. Viene restituito anche il resto con segno
della conversione. Il segno indica se l’arrotondamento è avvenuto per eccesso (resto negativo) o per
difetto (resto positivo).

Sintassi: n1 n2 --- n3 n4
Argomenti: n1 : unità di spazio
n2 : numero dell’asse
n3 : impulsi encoder
n4 : resto della conversione

CM-PAC_QUO

Funzione che gestisce il recupero dei resti nell’operazione di conversione di quote da unità ad
impulsi. Si utilizza quando il segno della quota indica anche la direzione del movimento.
Si aspetta nel parameter stack il resto parziale della conversione CM-UIAC_QUO e la somma dei
resti ottenuti nelle conversioni precedentemente svolte (chiamato accumulo), restituisce il nuovo
accumulo ed il numero di impulsi di aggiornamento da aggiungere al risultato della conversione
vera e propria per correggerlo dall’imprecisione dei calcoli.

Sintassi: n1 n2 n3 --- n4 n5
Argomenti: n1 : resto parziale della conversione del periodo del movimento
n2 : accumulo
n3 : numero dell’asse
n4 : numero di impulsi di aggiornamento per la quota
n5 : accumulo aggiornato

CM-NAC_QUO

Funzione che gestisce il recupero dei resti nell’operazione di conversione di quote da unità ad
impulsi. Si utilizza quando il segno della quota è opposto alla direzione del movimento.
Si aspetta nel parameter stack il resto parziale della conversione CM-UIAC_QUO e la somma dei
resti ottenuti nelle conversioni precedentemente svolte (chiamato accumulo), restituisce il nuovo
accumulo ed il numero di impulsi di aggiornamento da aggiungere al risultato della conversione
vera e propria per correggerlo dall’imprecisione dei calcoli.

Sintassi: n1 n2 n3 --- n4 n5

Doc. MS270103 - Ed. 05 - 9 aprile 2004 53


Axes utilities

Argomenti: n1 : resto parziale della conversione del periodo del movimento


n2 : accumulo
n3 : numero dell’asse
n4 : numero di impulsi di aggiornamento per la quota
n5 : accumulo aggiornato

54 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 5 CATTURA QUOTE - CAPTURE

capitolo 5 CATTURA QUOTE - CAPTURE

In questo capitolo si vogliono fornire all'utente le informazioni per l’utilizzo della libreria
denominata capture.

Il programma capture permette di memorizzare la posizione reale (vedi la variabile P1 in [1]) e


l’errore di posizione (vedi la variabile ER in [1]) di uno o più assi in seguito alla rilevazione di un
interrupt. L’interrupt in questione può essere:

• Un interrupt generato dal fronte di salita o dal fronte di discesa dell’ingresso di ricerca zero di un
asse.
• Un interrupt generato dalla tacca di zero dell’encoder.

Attualmente nessuna altra fonte di interrupt è utilizzabile per tale scopo.

5.1 INSTALLAZIONE DELLE LIBRERIA

Per usare la libreria di cattura quote si deve innanzitutto installarla nella directory delle librerie. Per
fare questo è necessario usare il programma INSTALL presente nella libreria e quindi seguire le
indicazioni.
Dopo questa operazione nella directory delle librerie CMZ/LIB ci sarà una sottodirectory per la
libreria in oggetto.

Ora quando si userà il programma MAKEPRJ per iniziare un nuovo lavoro ci sarà una nuova
sezione ‘ASSI’ con la seguente selezione.

ASSI
..
[ ] Capture, nucleo base
[ ] Capture, progremma di test
[ ] Capture, gestione AWL
..

Capture, nucleo base È il nucleo principale, se si usa il software capture questo


pacchetto deve essere sempre selezionato.

Capture, programma di test Selezionare se si desidera compilare un programma di test


per il capture.

Capture, gestione in AWL Selezionare se si desidera usare il programma è in AWL.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 55


Axes utilities

5.2 LIBRERIA COMANDI AWL

In questo paragrafo è riportato un elenco delle funzioni AWL con una breve descrizione delle
stesse.

cm-cptini
Questa funzione permette di installare la routine per la cattura delle quote ma non abilita l’interrupt
(vedi cm-cptset).
Deve essere chiamata una sola volta ad ogni avvio del sistema (ad esempio nel blocco #START)
o per la riattivazione in seguito all’uso della funzione cm-cptdis. In ogni caso deve essere
chiamata dopo il comando cm-start che lancia il programma assi.

Classe di appartenenza: Libreria capture


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti ACC1: Ininfluente
ACC2: Ininfluente
Parametri restituiti ACC1: Inalterato
ACC2: Inalterato
Vedi anche: cm-cptdis

cm-cptdis

Permette di disinstallare la routine per la cattura delle quote.

Classe di appartenenza: Libreria capture


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti ACC1: Ininfluente
ACC2: Ininfluente
Parametri restituiti ACC1: Inalterato
ACC2: Inalterato
Vedi anche: cm-cptini

cm-cptset

Questa funzione permette di selezionare la condizione di interrupt su cui si vuole catturare la quota
(fronte di salita o discesa dell’ ingresso di ricerca zero o tacca di zero encoder) e di abilitare
l’interrupt stesso. A questo proposito si precisa che l’interrupt è one-shot e cioè quando l’interrupt
viene rilevato e servito, viene automaticamente resettato ed è quindi necessario riabilitarlo con lo
stesso comando se si desidera catturare altre quote.
L’ingresso di ricerca zero o la tacca di zero encoder che si intende utilizzare per la cattura della
quota è quello relativo all’asse selezionato.
In ACC2 deve essere caricata la maschera degli assi di cui si desidera catturare la quota (si ricorda
infatti che sullo stesso evento di interrupt possono essere catturate le quote di più assi).
In ACC1 deve essere caricato il tipo di interrupt che si intende gestire secondo la seguente tabella:

56 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 5 CATTURA QUOTE - CAPTURE

Type Descrizione
1 Interrupt sul fronte di salita dell’ingresso di ricerca zero.
2 Interrupt sul fronte di discesa dell’ingresso di ricerca zero.
5 Interrupt sulla tacca di zero.
0 Reset: permette di resettare l’interrupt

Classe di appartenenza: Libreria capture


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti ACC1: Tipo di interrupt da rilevare
ACC2: Maschera assi di cui si vuole catturare la quota
Parametri restituiti ACC1: Inalterato
ACC2: Inalterato
Vedi anche: cm-?cpt

IMPORTANTE
Si ricorda che i sistemi con il contatto di scambio per la ricerca zero (CTN320, CTN350,
CTE300/308, 331CPU con scheda ENCODA) generano l’interrupt sull’ingresso denominato NC.
Il sistema 331CPU con scheda MINENC genera interrupt sull’ingresso denominato NO.
Gli altri sistemi hanno un unico ingresso (denominato IC) di ricerca zero che è anche quello che
genera interrupt.

Esempio
Si desidera effettuare la cattura delle quote degli assi 0,1,2 (msk = 0000000000000111 = $7) sull’evento fronte di
discesa (type=2) dell’ingresso dell’asse 1;si scriverà:

...
SEL AX1 * Seleziona l’asse il cui ingresso di ricerca zero viene
* utilizzato per il capture
L KH7 * Setto la maschera per la cattura delle quote degli assi 0-1-2
L KZ2 * Seleziono l’interrupt sul fronte di discesa
C cm-cptset * Comando per la selezione e l’abilitazione dell’interrupt

cm-?cpt

È la funzione che permette di testare l’arrivo di un interrupt sull’ingresso di ricerca zero (o sulla
tacca di zero) dell’asse selezionato.

Classe di appartenenza: Libreria capture


Modalità di chiamata: U C UN C O C ON C
Modifica RLC: SI
Parametri richiesti ACC1: Ininfluente
ACC2: Ininfluente
Parametri restituiti ACC1: Inalterato
ACC2: Inalterato
Vedi anche: cm-cptset

Esempio
Riprendendo l’esempio precedente, se si desidera testare l’arrivo dell’interrupt sull’ ingresso di ricerca zero dell’asse 1
si scriverà:

...

Doc. MS270103 - Ed. 05 - 9 aprile 2004 57


Axes utilities

SEL AX1 * Seleziona l’asse il cui ingresso di ricerca zero viene


* utilizzato per il capture
U C cm-?cpt
IF
...
...
ENDIF
...

ATTENZIONE
Il comando cm-?cpt rileva l’arrivo dell’interrupt ma, dopo il primo rilevamento, continua a restituire la condizione
vera fino a quando la procedura di cattura non viene o riarmata con il comando cm-cptset o resettata con il
comando cm-cptset e indice di interrupt 0
Così avremo che con la struttura

...
SEL AX1
IF
...
INC @DD_Counter
..
ENDIF
...
La variabile @DD_Counter si incrementerà all’arrivo dell’interrupt ma poi continuerà ad incrementarsi anche se non
arrivano altri interrupt.
Invece che se usiamo questa struttura

...
SEL AX1
IF
...
INC @DD_Counter
SEL AX1
L KH7 * Maschera
L KZ2 * Tipo di interrupt 2 = fronte di discesa
C cm-cptset * ri-abilitazione
..
ENDIF

La variabile @DD_Counter si incrementerà solo all’arrivo di ogni interrupt che viene riarmato continuamente.

Ed infine se scriviamo:

...
SEL AX1
IF
...
INC @DD_Counter
SEL AX1
L KH7 * Maschera
L KZ0 * Tipo di interrupt 0 = Reset dell’interrupt
C cm-cptset *
..
ENDIF

La variabile @DD_Counter si incrementerà solo all’arrivo del primo interrupt dopo di che l’ interrupt viene disabilitato
e dovrà essere eventualmente riarmato in un’altra parte del programma.

58 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 5 CATTURA QUOTE - CAPTURE

cm-cptquo
Permette di leggere la posizione reale dell’asse (variabile P1), specificato in ACC1, catturata
all’arrivo dell’interrupt sull’ingresso (o tacca di zero) relativa all’asse selezionato. Restituisce in
ACC1 la posizione catturata.

Classe di appartenenza: Libreria capture


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti ACC1: Numero asse di cui leggere la posizione
ACC2: Ininfluente
Parametri restituiti ACC1: Quota
ACC2: Inalterato
Vedi anche: cm-cpterr cm-cptcor

Esempio
Per leggere la quote dell’asse 0,1,2 catturate su l’interrupt dell’ingresso di ricerca zero dell’asse 1 si scriverà:

SEL AX1 * Seleziona l’asse il cui ingresso di ricerca zero viene


* utilizzato per il capture
U C cm-?cpt * Test arrivo interrupt
IF
L KZ0 * Numero asse
C cm-cptquo * Restituisce in ACC1 la quota dell’asse 0
T @DD_Cquota_0 * Memorizza quota catturata

L KZ1 * Numero asse


C cm-cptquo * Restituisce in ACC1 la quota dell’asse 1
T @DD_Cquota_1 * Memorizza quota catturata

L KZ2 * Numero asse


C cm-cptquo * Restituisce in ACC1 la quota dell’asse 2
T @DD_Cquota_2 * Memorizza quota catturata

...
ENDIF
...

cm-cpterr

Permette di leggere l’errore di posizione istantaneo (variabile ER) dell’asse, specificato in ACC1, al
momento dell’arrivo dell’interrupt sull’ingresso (o tacca di zero) relativa all’asse. Restituisce in
ACC1 l’errore.

Classe di appartenenza: Libreria capture


Modalità di chiamata: C =C
Modifica RLC: NO

Parametri richiesti ACC1: Numero asse di cui leggere l’errore


ACC2: Ininfluente
Parametri restituiti ACC1: Errore
ACC2: Inalterato
Vedi anche: cm-cptquo cm-cptcor

Doc. MS270103 - Ed. 05 - 9 aprile 2004 59


Axes utilities

cm-cptcor
Permette di leggere la correzione residua dell’asse, specificato in ACC1, al momento dell’arrivo
dell’interrupt sull’ingresso (o tacca di zero) relativa all’asse selezionato.Restituisce in ACC1 la
correzione residua.
Questo comando è disponibile solo se è stato compilato anche la libreria per lo shift della
quota descritto al capitolo 6.

Classe di appartenenza: Libreria capture


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti ACC1: Numero asse di cui leggere la correzione residua
ACC2: Ininfluente
Parametri restituiti ACC1: Correzione residua
ACC2: Inalterato
Vedi anche: cm-cptquo cm-cpterr

cm-cptlink
Questa funzione permette di caricare una agganciare una subroutine, il cui indirizzo deve essere
specificato in ACC1, su un vettore che va in esecuzione quando viene rilevato l’interrupt
dell’ingresso di ricerca zero (o tacca di zero) relativa all’asse selezionato.
La subroutine deve essere scritta in Forth o in Assembler oppure può essere un blocco #INT
del PLC.

Classe di appartenenza: Libreria capture


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti ACC1: Indirizzo della routine da agganciare
ACC2: Ininfluente
Parametri restituiti ACC1: Inalterato
ACC2: Inalterato
Vedi anche:

Esempio
Vedi esempio conclusivo

5.3 ESEMPI DI CATTURA QUOTA IN AWL

Esempio 1
Si vuole leggere la quota e l’errore degli assi 0 e 1 ogni volta che arriva un interrupt sul fronte di salita dell’ingresso di
ricerca zero dell’asse 0.
La cattura quota viene abilitata da un merker :

#START
...
...
L KZ3
C cm-start * Avvio programma assi

C cm-cptini * Installazione routine per la cattura quote


..
BE

60 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 5 CATTURA QUOTE - CAPTURE

#MAIN
..
U @M_EnableCapture
D @M_eEnableCapture
IF
* Sul fronte di salita di @M_EnableCapture viene effettuata la prima
* abilitazione alla cattura
SEL AX0 * Seleziona l’asse il cui ingresso di ricerca zero viene
* utilizzato per il capture
L KH3 * Maschera assi da gestire - 0000000000000011 = $3
L KZ1 * Tipo di interrupt - fronte di salita
C cm-cptset * Seleziono e abilito l’interrupt
ENDIF

UN @M_EnableCapture
D @M_enEnableCapture
IF
* Sul fronte di discesa di @M_EnableCapture viene disabilitata la
* cattura
SEL AX0 * Seleziona l’asse il cui ingresso di ricerca zero viene
* utilizzato per il capture
L KH3 * Maschera assi da gestire - 0000000000000011 = $3
L KZ0 * Tipo di interrupt – reset dell’interrupt
C cm-cptset * Reset dell’interrupt
ENDIF

...
* Test dell’ arrivo dell’interrupt e lettura delle quote e degli errori
SEL AX0
U C cm-?cpt * Test arrivo interrupt su ingresso associato all’asse 0
IF
L KZ0 * Seleziono asse 0
C cm-cptquo * Leggo quota catturata asse 0
T @DD_CQuota_0 * memorizzo
L KZ0 * Seleziono asse 0
C cm-cpterr * Leggo errore catturato asse 0
T @DD_CError_0 * memorizzo

L KZ1 * Seleziono asse 1


C cm-cptquo * Leggo quota catturata asse 1
T @DD_CQuota_1 * memorizzo
L KZ1 * Seleziono asse 1
C cm-cpterr * Leggo errore catturato asse 1
T @DD_CError_1 * memorizzo

* Eventuale riarmo dell’interrupt


U @M_EnableCapture
IF
SEL AX0 * Seleziona l’asse il cui ingresso di ricerca zero viene
* utilizzato per il capture
L KH3 * Maschera assi da gestire - 0000000000000011 = $3
L KZ1 * Tipo di interrupt - fronte di salita
C cm-cptset * Seleziono e abilito l’interrupt
ENDIF
ENDIF
...

BE

E’ chiaro che con una struttura di questo tipo si riesce a leggere la quota catturata su un evento di interrupt (il tempo di
ritardo è il tempo di asservimento dell’interrupt che dipende da sistema a sistema) ma il momento in cui il PLC si
accorge dell’effettiva cattura è affetto dal ritardo del PLC (tempo di scansione) così che il riarmo dell’interrupt potrebbe

Doc. MS270103 - Ed. 05 - 9 aprile 2004 61


Axes utilities

essere effettuato con un ciclo di scansione del PLC di ritardo e questo è un problema per cicli di cattura particolarmente
veloci (vedi esempio 2).

Esempio 2
Si vuole modificare l’esempio precedente in modo che all’evento di interrupt venga agganciata la #INT0 del PLC dove
verrà effettuate la lettura della quota catturata e dell’errore catturato e quindi eventualmente riarmato l’interrupt
La cattura quota viene sempre abilitata da un merker :

#START
...
L KZ3
C cm-start * Avvio programma assi

C cm-cptini * Installazione routine per la cattura quote


..
BE

#MAIN
..
U @M_EnableCapture
D @M_eEnableCapture
IF
* Sul fronte di salita di @M_EnableCapture viene effettuata la prima
* abilitazione alla cattura
SEL AX0 * Seleziona l’asse il cui ingresso di ricerca zero viene
* utilizzato per il capture
L KH3 * Maschera assi da gestire - 0000000000000011 = $3
L KZ1 * Tipo di interrupt - fronte di salita
C cm-cptset * Seleziono e abilito l’interrupt

* Aggancio della routine utente INT 0


L KZ0 * Numero INT
C addrint * Restituisce in ACC1 l’indirizzo della INT 0
C cm-cptlink * Aggancia la INT 0 all’evento di interrupt

ENDIF

UN @M_EnableCapture
D @M_enEnableCapture
IF
* Sul fronte di discesa di @M_EnableCapture viene disabilitata la
* cattura
SEL AX0 * Seleziona l’asse il cui ingresso di ricerca zero viene
* utilizzato per il capture
L KH3 * Maschera assi da gestire - 0000000000000011 = $3
L KZ0 * Tipo di interrupt – reset dell’interrupt
C cm-cptset * Reset dell’interrupt
ENDIF

...
BE

* Va in esecuzione all’arrivo dell’interrupt


#INT 0
* Salvataggio asse corrente
C r.asse
T @DW_ActualAxis

* Lettura quote catturate ed errori caatturati

62 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 5 CATTURA QUOTE - CAPTURE

L KZ0 * Seleziono asse 0


C cm-cptquo * Leggo quota catturata asse 0
T @DD_CQuota_0 * memorizzo
L KZ0 * Seleziono asse 0
C cm-cpterr * Leggo errore catturato asse 0
T @DD_CError_0 * memorizzo

L KZ1 * Seleziono asse 1


C cm-cptquo * Leggo quota catturata asse 1
T @DD_CQuota_1 * memorizzo
L KZ1 * Seleziono asse 1
C cm-cpterr * Leggo errore catturato asse 1
T @DD_CError_1 * memorizzo

* Eventuale riarmo dell’interrupt


U @M_EnableCapture
IF
SEL AX0 * Seleziona l’asse il cui ingresso di ricerca zero viene
* utilizzato per il capture
L KH3 * Maschera assi da gestire - 0000000000000011 = $3
L KZ1 * Tipo di interrupt - fronte di salita
C cm-cptset * Seleziono e abilito l’interrupt

* Aggancio della routine utente INT 0


L KZ0 * Numero INT
C addrint * Restituisce in ACC1 l’indirizzo della INT 0
C cm-cptlink * Aggancia la INT 0 all’evento di interrupt

ENDIF
...
* Ripristino asse corrente
L @DW_ActualAxis
C w.asse
BE

In questo secondo esempio all’arrivo dell’interrupt va subito in esecuzione la INT 0 (la procedura è affetta dal solo
ritardo di servizio dell’interrupt) che quindi può essere riarmato immediatamente.

5.4 LIBRERIA COMANDI FORTH

In questo paragrafo è riportato un elenco dei comandi Forth con una breve descrizione degli stessi.

CM-CPTINI
Questo comando permette di installare la routine per la cattura delle quote ma non abilita l’interrupt
(vedi comando CM-CPTSET).
Deve essere chiamato una sola volta ad ogni avvio del sistema o per la riattivazione in seguito
all’uso del comando CM-CPTDIS. Deve essere chiamato dopo il CM-START che lancia il
programma assi.

Sintassi: ---
Argomenti:

Doc. MS270103 - Ed. 05 - 9 aprile 2004 63


Axes utilities

CM-CPTDIS
Permette di disinstallare la routine per la cattura delle quote.

Sintassi: ---
Argomenti:

CM-CPTSET

Questo comando permette di selezionare la condizione di interrupt e di abilitare l’interrupt stesso. A


questo proposito si precisa che l’interrupt è one-shot e cioè quando l’interrupt viene rilevato e
servito, viene automaticamente resettato ed è quindi necessario riabilitarlo con lo stesso comando se
si desidera catturare altre quote.

Sintassi: msk type input ---


Argomenti:

• Msk: è la maschera per selezionare quali sono gli assi del sistema la cui posizione ed errore
istantaneo saranno catturati sull’interrupt.

• Type: indica il tipo di interrupt da abilitare secondo la seguente tabella:

Type Descrizione
1 interrupt sul fronte di salita dell’ingresso di ricerca zero.
2 interrupt sul fronte di discesa dell’ingresso di ricerca zero.
5 interrupt sulla tacca di zero.
0 Reset: permette di resettare l’interrupt

• Input: è il numero di ingresso che genera interrupt. Ha questo proposito è necessario ricordare
che solo gli ingressi di ricerca zero associati ad ogni singolo asse sono segnali che generano
interrupt e quindi il numero di ingresso coincide con il numero di asse. Anche per la selezione
dell’interrupt su tacca di zero encoder il numero di input coincide con il numero dell’asse.

IMPORTANTE
Si ricorda che i sistemi con il contatto di scambio per la ricerca zero (CTN320, CTN350,
CTE300/308, 331CPU con scheda ENCODA) generano l’interrupt sull’ingresso denominato NC.
Il sistema 331CPU con scheda MINENC genera interrupt sull’ingresso denominato NO.
Gli altri sistemi hanno un unico ingresso (denominato IC) di ricerca zero che è anche quello che
genera interrupt.

CM-?CPT
È il comando che permette di testare l’arrivo di un interrupt. Restituisce un flag=1 se l’interrupt è
stato rilevato.

Sintassi: input --- flag


Argomenti: input: è il numero di asse a cui appartiene l’ingresso di ricerca zero (o tacca di zero encoder) che
genera l’interrupt (vedi CM-CPTSET).
flag: flag di interrupt rilevato.

64 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 5 CATTURA QUOTE - CAPTURE

CM-CPTQUO
Permette di leggere la posizione reale (variabile P1) catturata all’arrivo dell’interrupt.

Sintassi: n.asse input --- quo


Argomenti: n.asse: è il numero dell’asse di cui si vuole leggere la quota (deve essere uno degli assi selezionati
con la maschera nel comando CM-CPTSET).
input: è il numero di asse a cui appartiene l’ingresso di ricerca zero (o tacca di zero encoder) che
genera l’interrupt (vedi CM-CPTSET).
quo: è la quota catturata.

CM-CPTERR
Permette di leggere l’errore di posizione istantaneo (variabile ER) catturato al momento
dell’interrupt.

Sintassi: n.asse input --- err


Argomenti: n.asse: è il numero dell’asse di cui si vuole leggere l’errore (deve essere uno degli assi selezionati
con la maschera nel comando CM-CPTSET).
input: è il numero di asse a cui appartiene l’ingresso di ricerca zero (o tacca di zero encoder) che
genera l’interrupt (vedi CM-CPTSET).
err: è l’errore catturato.

CM-CPTCOR
Permette di leggere la correzione residua al momento dell’arrivo dell’interrupt.
Questo comando è disponibile solo se è stato compilato anche il pacchetto software per la
gestione dello shift di posizione (vedi capitolo 2).

Sintassi: n.asse input --- cor


Argomenti: n.asse: è il numero dell’asse di cui si vuole leggere la correzione residua (deve essere uno degli assi
selezionati con la maschera nel comando CM-CPTSET).
input: è il numero di asse a cui appartiene l’ingresso di ricerca zero (o tacca di zero encoder) che
genera l’interrupt (vedi CM-CPTSET).
cor: è la correzione residua.

CM-CPTLINK
Permette di caricare una subroutine su un vettore che va in esecuzione quando l’interrupt viene
rilevato.
La subroutine deve essere scritta in Forth o in Assembler.

Sintassi: addr. input ---


Argomenti: addr: è l’indirizzo della subroutine.
input: è il numero di asse a cui appartiene l’ingresso di ricerca zero (o tacca di zero encoder) che
genera l’interrupt (vedi CM-CPTSET).

5.5 PARTICOLARITÀ E LIMITAZIONI DEL CAPTURE

L’utilizzo del pacchetto capture è di grande utilità in molte applicazioni ma, per il suo uso, il
programmatore deve tenere conto di alcune particolarità e limitazioni.
Doc. MS270103 - Ed. 05 - 9 aprile 2004 65
Axes utilities

• Installazione della routine per la cattura quota

La routine di cattura quota (cm-cptini in AWL o CM-CPTINI in Forth) deve essere installata
una sola volta ad ogni avvio del sistema dopo il lancio del programma assi oppure dopo che la
routine stessa è stata disinstallata con il comando cm-cptdis (in AWL) o CM-CPTDIS (in
Forth).

• Uso contemporaneo dei comandi di ricerca zero e di capture.

Come abbiamo già detto gli ingressi che generano interrupt sono gli stessi che vengono utilizzati
per realizzare la ricerca zero degli assi (vedi [1]).
Per tale motivo, se si usa capture in applicativi in cui si utilizza anche la ricerca zero, bisogna tener
conto di alcune limitazioni che dipendono dall’hardware del sistema impiegato.
Tali limitazioni possono interessare non solo l’asse il cui ingresso di ricerca zero (o tacca di zero) è
utilizzata per il capture ma anche altri assi.

1) CTN320 - CTN350 - CTN560 - CTE300/308

Per questi sistemi non esiste alcuna limitazione a proposito della coesistenza contemporanea della
funzione capture e della ricerca zero tra assi diversi.
Sullo stesso asse la ricerca zero può essere effettuata anche con la routine per la cattura delle quote
installata (cm-cptini o CM-CPTINI) purchè non abilitata (cm-cptset o CM-CPTSET).

2) CTE158 – CTE240

Per questo sistema non è possibile la coesistenza contemporanea della funzione capture e della
ricerca zero anche se tra assi diversi.
Inoltre non è possibile fare la ricerca zero se la routine del programma capture è stata installata, per
cui è necessario disinstallarla con i comandi cm-cptdis o CM-CPTDIS.

3) 331CPU con schede ENCODA o MINENC

Per questi sistemi non è possibile la coesistenza contemporanea della funzione capture e della
ricerca zero tra assi diversi gestiti dalla stessa scheda (ad esempio sulla scheda MINENC l’uso di
capture condiziona la ricerca zero di tutti i tre assi).
Inoltre l’utilizzo del programma capture richiede il ponticello hardware sulla linea IRQ1 della
scheda ENCODA o MINENC (vedi [2] e [3]). Non è più possibile utilizzare i comandi standard per
la ricerca zero (vedi [1]). Eventuali procedure di ricerca zero devono essere quindi realizzate
nell’applicativo con le funzioni di cattura quota.

5.6 PROGRAMMA DI TEST PER CAPTURE

Da ambiente Forth e dopo aver fermato tutti i programmi che stanno girando nel sistema con un
interrupt da tastiera (Ctrl+Shift+Esc → Esc) è possibile digitare avviare il programma assi con il
comando Forth CM-START (preceduto dal numero di assi) e quindi il comando Forth
TST_CAPTURE per avviare il programma di test per la cattura quote. Le pagine di test che
appariranno sono sufficientemente auto-esplicative.

66 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 6 SHIFT DI QUOTA

capitolo 6 SHIFT DI QUOTA

La libreria shift consente di applicare ad un asse un profilo di posizione e di velocità addizionali, di


cui si impone il tempo o lo spazio di evoluzione, in modo da traslare di una certa quantità espressa
in impulsi encoder, il riferimento tra la posizione meccanica e la quota reale o teorica dell’asse.
Applicando opportunamente lo shift è possibile:
1. Muovere l’asse senza far evolvere la posizione reale letta dall’encoder: in pratica l’asse subisce
un’alterazione del proprio stato di moto senza che questo venga rilevato da eventuali altri assi
ad esso correlati (ad esempio in albero elettrico).
Questa prima possibilità viene definita “shift della posizione fisica asse”.

NOTA
Il tutto si ottiene alterando la sola posizione reale dell’asse rispetto alla teorica, facendo in questo modo
recuperare lo scostamento dal PID dell’asse (e con il contributo sommato al profilo di velocità teorico)..
2. Far evolvere la posizione reale e teorica di un asse senza muovere fisicamente la meccanica:
l’asse conserva il proprio stato di moto, ma eventuali assi posti in relazione ad esso ne rilevano
la variazione di velocità. In pratica è come alterare sia la posizione reale che quella teorica,
facendo in modo che tali compensazioni non alterino la fase tra le due grandezze compensate.
Questa seconda possibilità viene definita “shift della posizione teorica asse”.

La correzione della posizione viene eseguita generando un profilo di velocità a triangolo o a


trapezio che si sovrappone al profilo di velocità originario. In particolare se l’asse si sta muovendo
a velocità costante, l’azione dello shift può essere così rappresentata (a destra un esempio di “shift
della posizione fisica asse” mentre a sinistra un esempio di “shift della posizione teorica asse”):

Doc. MS270103 - Ed. 05 - 9 aprile 2004 67


Axes utilities

Shift posizione fisica asse Shift posizione teorica asse

Andamento Andamento
base base

Spazio/tempo T1 Spazio/tempo
T1

Contributi Contributi
shift shift

Spazio/tempo Spazio/tempo

V1 V1
P1 P1

Spazio/tempo Spazio/tempo

VDESID VDESID
PDESID PDESID

Spazio/tempo Spazio/tempo

Velocità fisica Velocità fisica


Posizione fisica Posizione fisica

Spazio/tempo Spazio/tempo
periodo di evoluzione periodo di evoluzione

Per meglio comprendere il disegno si supponga che relativamente all’istante T1 dell’andamento


base, la posizione reale P1 e la posizione teorica PDESID dell’asse valgano 4000 impulsi e che
4000 impulsi equivalga a 1 giro fisico del motore. Se il contributo di shift è di 400 impulsi (un
decimo di giro) avremo che:
- Nel caso di “shift della posizione fisica asse” (a destra) alla fine dello shift e all’istante T1 la
posizione reale P1 e la posizione teorica PDESID sono ancora a 4000 ma la posizione fisica
dell’albero motore sarà di un giro più un decimo di giro.
- Nel caso di “shift della posizione teorica asse” (a sinistra) alla fine dello shift e all’istante T1 la
posizione reale P1 e la posizione teorica PDESID saranno diventate 4400 mentre la posizione fisica
dell’albero motore è ancora di un giro.

68 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 6 SHIFT DI QUOTA

Per semplicità definiremo la grandezza che definisce l’evoluzione del profilo di traslazione, che
come visto può essere sia un tempo che uno spazio, come periodo di evoluzione dello shift; inoltre
si farà riferimento ad asse master ed asse slave: con asse master si intende l’asse da cui si legge la
posizione per gestire il recupero dello shift in spazio, mentre con asse slave si identifica in ogni
caso l’asse su cui viene applicata la compensazione.
Nel caso in cui non viene specificato un asse master, il programma assegna di default all’asse
slave se stesso come asse master, con la modalità di lettura della posizione teorica. Questo
consente di poter sfruttare sempre ed in ogni caso le funzioni ausiliarie della libreria shift, che fanno
riferimento alla quota del master.

La differenza sostanziale tra il recupero a tempo e quello a spazio sta nel fatto che il primo evolve
in maniera costante ed indipendente dalle condizioni del sistema (ad esempio della velocità
dell’asse master), mentre il secondo, utilizzando una quota come grandezza di riferimento, è
sensibile allo stato operativo della macchina. Nel secondo caso infatti lo shift evolve solo se la
posizione dell’asse master evolve.

Occorre tenere presente che la quota usata come periodo master deve essere intesa ‘signed’: ciò
significa che il profilo di recupero evolve solo se la velocità del master è di segno concorde con
quello del periodo di recupero programmato, e che, una volta iniziato lo shift, se il master inverte la
propria direzione, il profilo dello shift involve fino ad annullare in contributo generato dall’ultimo
start recupero; rimane comunque garantito che, una volta che il master ritorna alla direzione
originale, la generazione dello shift riprende al superamento dell’originaria quota di start recupero
ed evolve rispettando i precedenti parametri.

E’ possibile abilitare la generazione del profilo di recupero con rampa raccordata con legge sen2; in
questo modo si ottiene un movimento di recupero più fluido, che rispetta l’accelerazione media del
relativo movimento fatto in lineare e che comporta una accelerazione di picco nel punto medio della
rampa, superiore del 20% rispetto al valore medio.

Il master per lo shift in spazio può essere:


• Un asse locale reale o simulato
• Un asse remoto (via HDLC) reale o simulato
• Il master virtuale dell’interpolazione
• Un encoder locale indipendente dal programma assi
• Un encoder acquisito via CAN Open
• Una routine utente

Degli assi reali (o simulati) è possibile leggere la quota reale (P1) o quella teorica (PDESID)

Come già detto, il profilo addizionale di compensazione può essere sia trapezoidale che triangolare,
a seconda che si voglia o meno controllare l’incremento di velocità e/o l’accelerazione
supplementare massima applicate all’asse tramite lo shift. In base ai parametri impostati, la logica
di risoluzione del profilo di compensazione propone quattro diverse combinazioni:

Doc. MS270103 - Ed. 05 - 9 aprile 2004 69


Axes utilities

Caso 1: recupero Caso 2: caso 1 con Caso 3: caso 2 con Caso 4: recupero
triangolare. velocità limitata. accelerazione limitata. trapezoidale con
accelerazione imposta.
V V V V
e e e e
l l l l
o o o o
c c c c
i i i i
t t t t
à à à à

Periodo Periodo Periodo Periodo

NOTA
L’area rappresenta l’entità di spazio slave da recuperare.

- Caso 1: rappresenta il caso di default, usato quando non è abilitato il controllo su velocità ed
accelerazione limite per l’asse slave oppure come versione semplificata dei casi 2 e 3, fintanto
che la velocità e/o l’accelerazione ricavate dalla soluzione triangolare sono inferiori rispetto ai
limiti programmati.

- Caso 2: è la soluzione adottata imponendo la velocità limite. Il caso estremo è rappresentato


da un rettangolo in cui viene rispettata la velocità limite imposta.

- Caso 3: è la sofisticazione del caso 2; il caso limite risulta essere il trapezio con pendenza pari
all’accelerazione limite imposta.

- Caso 4: è la soluzione adottata quando nei casi precedenti viene raggiunta l’accelerazione limite
prima di saturare la velocità limite. In questo caso il recupero è fatto sempre a trapezio, fino al
raggiungimento del caso limite rappresentato da un triangolo isoscele con pendenza dei lati pari
all’accelerazione limite e la velocità di picco pari a quella limite.

IMPORTANTE
L’abilitazione all’uso dei parametri di limitazione di velocità e/o accelerazione nel profilo di
recupero comporta che l’entità di recupero comandata può essere limitata ad un valore inferiore
rispetto a quello imposto.

ATTENZIONE
Nel caso in cui l’incremento di velocità derivante dall’azione dello shift è tale da far superare al
motore la sua velocità massima (vedi variabile VEMAX in [2]) l’asse va in errore (vedi modo=12 in
[1]). Analogamente l’asse va in errore se le rampe di accelerazione e decelerazione imposte non
sono raggiungibili.

Qualsiasi sia la modalità di compensazione dello shift, la libreria mantiene traccia dei contributi
compensati, al fine di poter ricostruire in ogni momento, la posizione fisica dell’asse (quella non
compensata).

ATTENZIONE
L’accumulo dei contributi applicati all’asse viene resettato ad ogni riavvio del sistema.

70 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 6 SHIFT DI QUOTA

Lo start della traslazione della quota può essere dato da un trigger sul superamento, in un verso o
nel verso opposto, di una soglia pre-impostata definita come quota dell’asse master. In questo modo
è possibile sincronizzare il rifasamento della posizione dell’asse con la ciclica della macchina.

Inoltre la funzione di compensazione permette di eseguire un’azione sincrona all’evento di fine


compensazione; tale funzione può essere scritta dall’utente finale in AWL utilizzando i blocchi
#INT del PLC.

ATTENZIONE
Il programma shift può essere compilato e utilizzato solo sui sistemi con la versione del programma
assi maggiore della 2.0.

6.1 INSTALLAZIONE DELLE LIBRERIA

Per usare la libreria di shift delle quote si deve innanzitutto installarla nella directory delle librerie.
Per fare questo è necessario usare il programma INSTALL presente nella libreria e quindi seguire le
indicazioni.
Dopo questa operazione nella directory delle librerie CMZ\LIB ci sarà una sottodirectory per la
libreria in oggetto.

Ora quando si userà il programma MAKEPRJ per iniziare un nuovo lavoro ci sarà una nuova
sezione ‘ASSI’ con la seguente selezione.

ASSI
..
[ ] Shift, nucleo base
[ ] Shift, funzioni di test
..

Shift, nucleo base È il nucleo principale, se si usa il software Shift questo


pacchetto deve essere sempre selezionato.

Shift, funzioni di test Contiene le pagine di test richiamabili a terminale, che


agevolano la messa in servizio della libreria.

6.2 LIBRERIA COMANDI AWL

Verranno ora elencati i comandi AWL per la gestione della libreria shift. Per la quasi totalità dei
comandi viene riportato un esempio di utilizzo che però ha lo solo scopo di indicare il modo in cui i
dati di ingresso vengono passati al comando, mentre, per una migliore comprensione , soprattutto
inerente alla correlazione tra i vari comandi, si rimanda agli esempi del paragrafo 6.3.

cm-shtenab
Comando che attiva la gestione della compensazione dello shift dell’asse selezionato. Il comando
deve essere richiamato una sola volta ad ogni accensione dopo l’attivazione del programma assi
(comando cm-start) Si consiglia di effettuare l’attivazione nei blocchi #START e #RESET del

Doc. MS270103 - Ed. 05 - 9 aprile 2004 71


Axes utilities

PLC. Il comando può essere utilizzato anche per la riattivazione dopo una disabilitazione (vedi
comando cm-shtdisa).

Classe di appartenenza: Funzioni shift


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato
Vedi anche: cm-shtdisa

cm-shtdisa

Comando che disabilita la gestione della compensazione dello shift sull’asse selezionato.

Classe di appartenenza: Funzioni shift


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato
Vedi anche: cm-shtenab

cm-shtmst

Selezionato l’asse slave, con questo comando si può configurare:


In ACC2: Il numero dell’asse master o del dispositivo logico (locale o CANopen) dichiarato nel
blocco #DEFPLC, da cui viene acquisita la posizione su cui si basa l’eventuale recupero in spazio
dello shift (si ricorda che esiste anche il recupero in tempo) e l’eventuale trigger (sul superamento
in avanti o indietro) per lo start dello shift. Se non si desidera utilizzare l’asse master in ACC2 deve
essere caricato con il numero di asse slave.
In ACC1: Il numero di sistema remoto nel caso in cui il master sia letto tramite la rete HDLC,
oppure il numero di canale all’interno della scheda che rende disponibile il dispositivo logico
definito nel blocco #DEFPLC (ad esempio nel caso di canale encoder da scheda MINENC). Nel
caso in cui il master sia un asse locale oppure nel caso di dispositivo CANopen o comunque non
multi-canale, il valore caricato in ACC1 non viene interpretato. (vedi anche comando cm-
shtrdm).

Classe di appartenenza: Funzioni shift


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: numero di sistema remoto (HDLC)
numero di canale nel dispositivo logico (es.: lettura da scheda MINENC)
non interpretato nel caso di asse locale o dispositivo CANopen
ACC2: numero di asse nel sistema (locale o remoto)
numero del dispositivo logico (locale o CANopen)
Parametri restituiti: ACC1: Indeterminato
ACC2: Inalterato
Vedi anche: cm-shtrdm, cm-shtmode

72 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 6 SHIFT DI QUOTA

Esempio: Si vuole che l’asse slave subisca uno shift che viene eseguito intanto che un asse master locale percorre un
certo spazio.

SEL @AX_Slave * Seleziona asse a cui applicare lo shift


L KZ @N_Master * ACC2 = asse master
L KZ0 * ACC1 = Ininfluente
C cm-shtmst

cm-shtrdm
Selezionato l’asse slave e cioè l’asse a cui viene applicata la compensazione dello shift, e si intende
utilizzare un asse master per lo shift in spazio e/o per gestire una quota di trigger per lo start, con
questo comando si può configurare:
In ACC2: La modalità di lettura della quota dal master assegnato, secondo i valori della tabella
sotto riportata.

NOTA
Nel caso venga programmata una modalità di lettura non supportata dal sistema, la quota e la velocità restituite
sono poste a 0.

Valore Descrizione Note


0 Legge quota reale (P1) e velocità teorica (VDESID) da un master locale Sempre possibile
1 Legge quota e velocità reali (P1 - V1) da un master locale
2 Legge quota e velocità teoriche (PDESID – VDESID) da un master locale
3 Legge quota reale (P1) e velocità teorica (VDESID) da un master remoto Solo su sistemi con
4 Legge quota e velocità reali (P1 - V1) da un master remoto HDLC
5 Legge quota e velocità teoriche (PDESID – VDESID) da un master remoto
6 Legge quota e velocità (S_P1 – S_VDESID) da un master virtuale (interpolazione)
Solo in caso di sistemi
con interpolazione
7 Legge quota e velocità da un encoder gestito in locale Solo se definiti i
driver di gestione da
AWL
8 Legge quota e velocità da un encoder gestito via CAN bus Solo in caso di sistemi
con CANopen
9 Quota e velocità restituite da una routine personalizzata Vedi modalità di
definizione routine
10 Legge quota reale (P1) e velocità teorica (VDESID) da un master locale, con Significativo solo se
ricostruzione della posizione fisica del motore attivato lo shift sulla
11 Legge quota e velocità reali (P1 - V1) da un master locale, con ricostruzione posizione del master.
della posizione fisica del motore
12 Legge quota e velocità teoriche (PDESID – VDESID) da un master locale, con
ricostruzione della posizione fisica del motore

In ACC1: L’indirizzo dell’eventuale routine utente per la lettura personalizzata della quota e della
velocità di riferimento per il recupero in spazio dello shift. Nel caso non si usi alcuna routine ACC1
deve essere caricata con 0.

Classe di appartenenza: Funzioni shift


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indirizzo routine di lettura personalizzata (0 se nulla)
ACC2: modalità di lettura quota
Parametri restituiti: ACC1: Indeterminato

Doc. MS270103 - Ed. 05 - 9 aprile 2004 73


Axes utilities

ACC2: Inalterato
Vedi anche: cm-shtmst, cm-shtmode

Esempio: Supponiamo di avere una rete di sistemi CTN330 collegati tra loro in HDLC. Si vuole che l’asse slave
(presente sul sistema CNT330 n.2) subisca uno shift che viene eseguito intanto che un asse master (presente sul sistema
CTN330 n.4) percorre un certo spazio inteso come posizione e velocità teoriche (PDESID e VDESID).

SEL @AX_Slave * Seleziona asse a cui applicare lo shift


L KZ @N_Master * ACC2 = asse master
L KZ4 * ACC1 = numero del CTN330 dove è presente l’asse master
cm-shtmst

L KZ5 * Seleziona modalità di lettura PDESID e VDESID da sistema remoto


L KZ0 * Routine agganciata: Ininfluente
C cm-shtrdm

cm-shtmode

Selezionato l’asse slave e cioè l’asse a cui viene applicata la compensazione dello shift, con questo
comando si possono impostare i limiti di velocità massima e di accelerazione massima che
modificheranno il profilo di shift secondo le modalità 1, 2, 3, 4 descritte nell’introduzione del
capitolo, selezionare il tipo di recupero da applicare ed abilitare o meno la limitazione automatica
del recupero in base ai parametri limite programmati.
In particolare:

In ACC2 deve essere caricato l’indirizzo di una tabella di LongWord che contiene i valori limite di
velocità e/o di accelerazione. La tabella deve essere così composta:

Cella Offset Descrizione


0 0 Velocità limite assoluta positiva slave espressa in unità interne
1 4 Velocità limite assoluta negativa slave espressa in unità interne
2 8 Velocità asse master di riferimento (solo per recupero in spazio)
3 12 Accelerazione limite per la compensazione espressa in unità interne
4 16 Abilitazione raccordo su rampa di compensazione (0 / 1)
5 20 Riservato
Tabella 6.2

Attenzione che, anche se nella tabella ci sono due parametri non utilizzati (la cella 4 e la cella 5),
deve essere riservata in memoria l’area per l’intera tabella (24 byte consecutivi = 6*4 byte ) anche
se poi non è necessario caricare alcun valore sulle due celle attualmente non utilizzate. Inoltre
bisogna tener presente che per escludere il controllo sulla velocità limite per lo slave, occorre che
tali limiti siano programmati con dei valori uguali o superiori rispetto al valore massimo di velocità
che può essere raggiunto dall’asse slave (ad esempio +VEMAX e –VEMAX dell’asse).

In ACC1 deve essere caricato il tipo di compensazione secondo la seguente tabella:

74 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 6 SHIFT DI QUOTA

Tipo Descrizione Codifica binaria


Bit 2 Bit 1 Bit 0
Abilita Fisica o Tempo o
limitazione teorica spazio
0 Compensazione a tempo della posizione fisica (cioè della posizione 0 0 0
dell’albero motore) senza limitazione automatica del valore da
recuperare.
1 Compensazione in spazio della posizione fisica (cioè della posizione 0 0 1
dell’albero motore) senza limitazione automatica del valore da
recuperare.
2 Compensazione a tempo della posizione teorica (cioè della 0 1 0
posizione P1 e PDESID) senza limitazione automatica del valore da
recuperare.
3 Compensazione in spazio della posizione teorica (cioè della P1 e 0 1 1
PDESID) senza limitazione automatica del valore da recuperare
4 Compensazione a tempo della posizione fisica (cioè della posizione 1 0 0
dell’albero motore) con limitazione automatica del valore da
recuperare.
5 Compensazione in spazio della posizione fisica (cioè della posizione 1 0 1
dell’albero motore) con limitazione automatica del valore da
recuperare.
6 Compensazione a tempo della posizione teorica (cioè della 1 1 0
posizione P1 e PDESID) con limitazione automatica del valore da
recuperare.
7 Compensazione in spazio della posizione teorica (cioè della P1 e 1 1 1
PDESID) con limitazione automatica del valore da recuperare.
Tabella 6.3

Classe di appartenenza: Funzioni shift


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: modo di recupero:
ACC2: indirizzo tabella parametri
Parametri restituiti: ACC1: Indeterminato
ACC2: Inalterato
Vedi anche:

Esempio: Nel caso si desideri effettuare uno shift a tempo della posizione fisica con limitazione di velocità (caso 2)

SEL @AX_X * Seleziona asse a cui applicare lo shift


L KZ @N_X * ACC2 = asse stesso
L KZ0 * ACC1 = Ininfluente
C cm-shtmst

* Preparazione tabella
L @DD_PositiveLimitSpeed * Velocità limite positiva in unità interne
T @DD_Table0
L @DD_NegativeLimitSpeed * Velocità limite negativa in unità interne
T @DD_Table1
L KZ0
T @DD_Table2 * Ininfluente
L KZ0
T @DD_Table3 * Ininfluente
L KZ0
T @DD_Table4 * Ininfluente
L KZ0
T @DD_Table5 * Ininfluente

* Comando

Doc. MS270103 - Ed. 05 - 9 aprile 2004 75


Axes utilities

LA @DD_Table0 * Carica indirizzo tabella


L KZ4 * 4 = %100
* bit2 = 1 -> Limitazione abilitata
* bit1 = 0 -> Agisce su quota fisica
* bit0 = 0 -> Compensazione a tempo
C cm-shtmode

cm-shttrg

Selezionato l’asse slave e cioè l’asse a cui viene applicata la compensazione dello shift, con questo
comando si può programmare l’utilizzo dello start recupero su raggiungimento di una quota di
trigger da parte del master.
In ACC2 deve essere scritta la quota master assoluta da usare per il confronto (quota di trigger).
In ACC1 il tipo di confronto da operare tra quota master e posizione di trigger

ACC1 Descrizione
1 Lo start dello shift avviene quando la quota master diventa maggiore della quota
di trigger
2 Lo start dello shift avviene quando la quota master diventa minore della quota di
trigger
0 Lo start su trigger è disabilitato

La funzione di trigger è attiva una sola volta ad ogni start recupero. I parametri sono subito resi
attivi dal comando, quindi, onde evitare discontinuità di pilotaggio dell’asse, occorre verificare che
la funzione non sia già in attesa di trigger.

Classe di appartenenza: Funzioni shift


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: flag di abilitazione gestione trigger:
0 = disabilita trigger
1 = abilita su quota master maggiore del trigger
2 = abilita su quota master minore del trigger
ACC2: Quota master di trigger in impulsi
Parametri restituiti: ACC1: Indeterminato
ACC2: Inalterato
Vedi anche:

Esempio: Si vuole che l’asse slave subisca uno shift che viene eseguito intanto che un asse master locale percorre un
certo spazio e sul superamento di una quota di trigger.

SEL @AX_Slave * Seleziona asse a cui applicare lo shift


L KZ @N_Master * ACC2 = asse master
L KZ0 * ACC1 = Ininfluente
C cm-shtmst

L @DD_TriggerPosition * Quota di trigger in unità interne


L KZ1 * Superamento della quota di trigger
C cm-shttrg

76 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 6 SHIFT DI QUOTA

cm-shtres
Comando che resetta le variabili di generazione della compensazione dello shift dell’asse
selezionato e la memoria dell’accumulo dei contributi di shift applicati all’asse, usati per la
ricostruzione della quota fisica.

Classe di appartenenza: Funzioni shift


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato
Vedi anche:

cm-shtstr
Comando che attiva il recupero dello shift per l’asse selezionato, secondo la modalità e con i
parametri programmati. Il comando necessita che siano indicati:
In ACC1 lo spazio da recuperare in impulsi
In ACC2 il periodo di recupero in Tc (se si tratta di un recupero in tempo) o impulsi (se si tratta di
un recupero in spazio)

Lo start recupero è istantaneo tranne se è stato programmato il trigger di quota master (vedi
comando cm-shttrg)

Classe di appartenenza: Funzioni shift


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: periodo di recupero
ACC2: entità del recupero (shift)
Parametri restituiti: ACC1: Indeterminato
ACC2: Indeterminato
Vedi anche:

Esempio: Si vuole attivare lo shift dell’asse slave della quantità contenuta in @DD_SlaveShiftQuota che viene
eseguito intanto che un asse master locale percorre lo spazio contenuto in @DD_MasterShiftQuota.

SEL @AX_Slave * Seleziona asse a cui applicare lo shift


L KZ @N_Master * ACC2 = asse master
L KZ0 * ACC1 = Ininfluente
C cm-shtmst

L @DD_SlaveShiftQuota * Quota di shift dello slave in impulsi


L @DD_MasterShiftQuota * Spazio master per l’esecuzione dello shift
C cm-shtstr

cm-?sht

Comando che verifica se sull’asse selezionato è in corso la generazione del profilo di recupero dello
shift. Restituisce il flag RLC vero o falso.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 77


Axes utilities

Classe di appartenenza: Funzioni shift


Modalità di chiamata: U C, UN C, O C, ON C
Modifica RLC: SI
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato
Vedi anche:

Esempio: Si vuole attivare lo shift dell’asse slave della quantità contenuta in @DD_SlaveShiftQuota che viene
eseguito intanto che un asse master locale percorre lo spazio contenuto in @DD_MasterShiftQuota solo se non ci sono
shift attivi

SEL @AX_Slave * Seleziona asse a cui applicare lo shift


UN C cm-?sht
IF
L KZ @N_Master * ACC2 = asse master
L KZ0 * ACC1 = Ininfluente
C cm-shtmst

L @DD_SlaveShiftQuota * Quota di shift dello slave in impulsi


L @DD_MasterShiftQuota * Spazio master per l’esecuzione dello shift
C cm-shtstr
ENDIF

cm-shtsts
Comando che verifica per l’asse selezionato, lo stato della generazione del profilo di
compensazione dello shift. Restituisce
In ACC1 l’entità dello shift non ancora compensato. Se è 0 il recupero è terminato.
In ACC2 il periodo mancante a fine recupero (tempo o quota).

Classe di appartenenza: Funzioni shift


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Shift ancora da recuperare: 0=recupero terminato
ACC2: Periodo mancante a fine recupero
Vedi anche:

Esempio: Si vuole leggere in continuazione l’entità dello shift ancora da compensare e anche lo spazio (o il tempo)
master rimanente per la fine dello shift

SEL @AX_Slave * Seleziona asse a cui applicare lo shift


C cm-shtsts
T @DD_RemainingShift * Impulsi di shift ancora da recuperare
TAK
T @DD_RemainingMasterPeriod * Periodo master (tempo o spazio) mancante

cm-shtlink

Selezionato l’asse slave e cioè l’asse a cui viene applicata la compensazione dello shift, questo
comando consente di agganciare alla funzione di compensazione, una routine che sarà eseguita ogni
volta che l’asse termina la compensazione. Tale routine può essere scritta in AWL utilizzando in

78 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 6 SHIFT DI QUOTA

blocco funzionale #INT, di cui successivamente se ne specifica l’indirizzo al comando passandolo


in ACC1.

Classe di appartenenza: Funzioni shift


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indirizzo routine di lettura personalizzata
ACC2: ininfluente
Parametri restituiti: ACC1: Indeterminato
ACC2: Inalterato
Vedi anche:

Esempio: Si vuole incrementare una variabile ogni qualvolta lo shift viene concluso

SEL @AX_Slave * Seleziona asse a cui applicare lo shift


L KZ0 * Numero del blocco #INT
C addrint * Restituisce indirizzo della #INT
C cm-shtlink
..
..

#INT 0
INC @DD_Counter
BE

cm-shtcal
Selezionato l’asse slave e cioè l’asse a cui viene applicata la compensazione dello shift, questo
comando permette di stimare e determinare i parametri con i quali si intende compensare lo shift. I
parametri usati sono lo spazio da compensare, il tempo o lo spazio master di recupero, le velocità
slave e master di recupero e l’accelerazione massima applicabile al recupero. Il tipo di calcolo da
effettuare deve essere caricato in ACC1. Le combinazioni di calcolo ammesse sono:

Tipo Calcolo INPUT OUTPUT


0 Spazio positivo Tempo, Velocità Slave, Velocità Limite Spazio massimo compensabile a triangolo rispettando
la velocità limite
1 Spazio positivo Tempo, Velocità Slave, Accelerazione Spazio massimo compensabile a triangolo rispettando
l’accelerazione
2 Spazio positivo Tempo, Velocità Limite, Velocità Slave Spazio massimo compensabile a rettangolo,
rispettando la velocità limite positiva impostata.
3 Spazio positivo Tempo, Accelerazione, Velocità Limite, Spazio compensabile a trapezio, rispettando
Velocità Slave l’accelerazione e la velocità limite positiva impostate.
4 Spazio negativo Tempo, Velocità Slave, Velocità Limite Spazio massimo compensabile a triangolo rispettando
la velocità limite
5 Spazio negativo Tempo, Velocità Slave, Accelerazione Spazio massimo compensabile a triangolo rispettando
l’accelerazione
6 Spazio negativo Tempo, Velocità Limite, Velocità Slave Spazio massimo compensabile a rettangolo,
rispettando la velocità limite negativa impostata.
7 Spazio negativo Tempo, Accelerazione, Velocità Limite, Spazio compensabile a trapezio, rispettando
Velocità Slave l’accelerazione e la velocità limite negativa impostate.
10 Tempo Spazio, Velocità Slave, Velocità Limite Durata del recupero a triangolo rispettando la velocità
limite
11 Tempo Spazio, Velocità Slave, Accelerazione Durata del recupero a triangolo, rispettando
l’accelerazione
12 Tempo Spazio, Velocità Limite, Velocità Slave Durata del recupero a rettangolo, rispettando la
velocità massima impostata.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 79


Axes utilities

13 Tempo Spazio, Accelerazione, Velocità Limite, Durata del recupero a trapezio, rispettando
Velocità Slave l’accelerazione e la velocità massime impostate.
20 Accelerazione Spazio, Tempo, Velocità Slave Accelerazione massima risultante dal recupero a
triangolo.
21 Accelerazione Spazio, Tempo, Velocità Limite, Accelerazione massima risultante dal recupero a
Velocità Slave trapezio.
30 Velocità limite Spazio, Tempo, Velocità Slave Incremento di velocità massimo generato dal recupero
a triangolo.
31 Velocità limite Spazio, Tempo, Accelerazione, Velocità Incremento di velocità massimo generato dal recupero
Slave a trapezio.
40 Spazio positivo Spazio master, Velocità Master, Spazio massimo compensabile a triangolo rispettando
Velocità Limite, Velocità Slave la velocità limite
41 Spazio positivo Spazio master, Accelerazione, Velocità Spazio massimo compensabile a triangolo rispettando
Master, Velocità Slave l’accelerazione
42 Spazio positivo Spazio master, Velocità Limite, Spazio massimo compensabile a rettangolo,
Velocità Master, Velocità Slave rispettando la velocità limite positiva impostata.
43 Spazio positivo Spazio master, Accelerazione, Velocità Spazio compensabile a trapezio, rispettando
Limite, Velocità Master, Velocità Slave l’accelerazione e la velocità limite positiva impostate.
44 Spazio negativo Spazio master, Velocità Master, Spazio massimo compensabile a triangolo rispettando
Velocità Limite, Velocità Slave la velocità limite
45 Spazio negativo Spazio master, Accelerazione, Velocità Spazio massimo compensabile a triangolo rispettando
Master, Velocità Slave l’accelerazione
46 Spazio negativo Spazio master, Velocità Limite, Spazio massimo compensabile a rettangolo,
Velocità Master, Velocità Slave rispettando la velocità limite negativa impostata.
47 Spazio negativo Spazio master, Accelerazione, Velocità Spazio compensabile a trapezio, rispettando
Limite, Velocità Master, Velocità Slave l’accelerazione e la velocità limite negativa impostate.
50 Spazio master Spazio, Velocità Master, Velocità Spazio master minimo per poter garantire il recupero a
Limite, Velocità Slave triangolo rispettando la velocità limite
51 Spazio master Spazio, Accelerazione, Velocità Master, Spazio master minimo per poter garantire il recupero a
Velocità Slave triangolo rispettando l’accelerazione impostata
52 Spazio master Spazio, Velocità Limite, Velocità Spazio master che consente di compensare a
Master, Velocità Slave rettangolo rispettando i parametri limite impostati.
53 Spazio master Spazio, Accelerazione, Velocità Limite, Spazio master esatto che consente di compensare a
Velocità Master trapezio rispettando i parametri limite impostati.
60 Accelerazione Spazio, Spazio master, Velocità Master, Accelerazione minima garantita nel recupero a
Velocità Slave triangolo.
61 Accelerazione Spazio, Spazio master, Velocità Limite, Accelerazione esatta garantita rispettando i parametri
Velocità Master, Velocità Slave limite impostati per la soluzione a trapezio.
70 Velocità limite Spazio, Spazio master, Velocità Master, Incremento di velocità generato dal recupero a
Velocità Limite, Velocità Slave triangolo in base ai parametri impostati.
71 Velocità limite Spazio, Spazio master, Accelerazione, Incremento di velocità generato dal recupero a
Velocità Master, Velocità Slave triangolo in base ai parametri impostati.
72 Velocità limite Spazio, Spazio master, Velocità Master, Incremento di velocità massimo generato dal recupero
Velocità Slave a rettangolo.
73 Velocità limite Spazio, Spazio master, Accelerazione, Incremento di velocità generato dal recupero a
Velocità Master, Velocità Slave trapezio in base ai parametri impostati.
80 Velocità Master Spazio, Spazio master, Velocità Limite, Velocità del master, tale da garantire il recupero a
Velocità Slave triangolo in base alla velocità limite impostata.
81 Velocità Master Spazio, Spazio master, Accelerazione, Velocità del master, tale da garantire il recupero a
Velocità Slave triangolo in base all’accelerazione limite impostata..
82 Velocità Master Spazio, Spazio master, Velocità Limite, Velocità massima del master, per poter garantire il
Velocità Slave recupero a rettangolo.
83 Velocità Master Spazio, Spazio master, Accelerazione, Velocità massima del master, per poter garantire il
Velocità Limite, Velocità Slave recupero a trapezio con i parametri impostati.
Tabella 6.4

I parametri di ingresso per il calcolo vendono passati tramite una tabella di LongWord il cui
indirizzo deve essere passato in ACC2. La struttura della tabelle deve essere la seguente:

80 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 6 SHIFT DI QUOTA

Cella Offset Descrizione


0 0 Entità dello shift espresso in impulsi
1 4 - Tempo di compensazione espresso in numero di scansioni oppure
- Spazio master di compensazione espresso in impulsi
2 8 Velocità limite assoluta (con segno) superiore dello slave espressa in unità interne
3 12 Velocità limite assoluta (con segno) inferiore dello slave espressa in unità interne
4 16 Velocità di riferimento asse master (solo per recupero in spazio)
5 20 Accelerazione limite per la compensazione espressa in unità interne
6 24 Abilitazione raccordo su rampa di compensazione (ininfluente)
7 28 Velocità di riferimento asse slave
Tabella 6.5

Il comando non altera il funzionamento di eventuali compensazioni già attive sull’asse.


Il valore richiesto viene rilasciato sia in ACC1 che nella relativa posizione nella tabella di passaggio
parametri: in questo modo la tabella può essere successivamente utilizzata per impostare tali
parametri all’asse; l’indirizzo della tabella di ingresso viene spostato in ACC2 e quindi è ancora
disponibile. Per i parametri non necessari deve comunque essere riservato lo spazio in tabella.

Classe di appartenenza: Funzioni shift


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Tipo del calcolo da effettuare
ACC2: indirizzo tabella parametri
Parametri restituiti: ACC1: Valore del parametro calcolato
ACC2: Indirizzo tabella parametri
Vedi anche:

Esempio: Si vuole verificare quale è lo spazio master minimo necessario per effettuare uno shift a triangolo di una
quota in una particolare condizione di velocità master, velocità slave e accelerazione dello slave

* Preparazione della tabella


L @DD_ShiftQuota * Quota di shift che si vuole fare in impulsi
T @DD_Table0
L KZ0
T @DD_Table1 * Ininfluente perché è il dato che vogliamo trovare
L D” @N_Slave VEMAX” * Legge la velocità massima dello slave
T @DD_Table2 * Velocità massima slave positiva
KZW
T @DD_Table3 * Velocità massima slave negativa
L @DD_MasterSpeed
T @DD_Table4 * Velocità che avrà il master nel momento dello shift
L @DD_SlaveAcceleration
T @DD_Table5 * Accelerazione che deve avere lo slave
L KZ0
T @DD_Table6 * Non Gestito
L @DD_SlaveSpeed
T @DD_Table7 * Velocità base dello Slave al momento dello shift

* Comando
LA @DD_Table0 * Indirizzo tabella
L KZ50 * Calcolo spazio master minimo per lo shift a triangolo
C cm-shtcal
T @DD_ShiftMasterPeriod * Quota master minima richiesta

Doc. MS270103 - Ed. 05 - 9 aprile 2004 81


Axes utilities

readshtmst

Selezionato l’asse slave e cioè l’asse a cui viene applicata la compensazione dello shift, il comando
permette di leggere la posizione e la velocità dell’eventuale master associato. Restituisce in ACC1
la quota ed in ACC2 la velocità del master.

Classe di appartenenza: Funzioni shift


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: quota master in impulsi
ACC2: Velocità master in unità interne
Vedi anche:

Esempio: Si vuole leggere continuamente la posizione e la velocità dell’asse master associato (che può essere anche il
risultato di una routine utente)

SEL @AX_Slave
C readshtmst
T @DD_MasterQuota * Quota del master associato
TAK
T @DD_MasterSpeed * Velocità del master associato

6.2.1 Definizione di una routine utente

Tra le modalità di lettura della quota master, nel caso di recupero shift in spazio, vi è quella
attraverso una routine definita dall’utente, che può essere scritta in AWL utilizzando uno dei
blocchi #INT a disposizione. Questa routine può essere usata per elaborare la posizione di un asse
oppure per generare tale grandezza a prescindere dall’esistenza di un vero e proprio asse (ad
esempio una quota risultato di una elaborazione matematica).
I valori in uscita a tale funzione devono essere scritti in apposite variabili.

Le regole da rispettare per la realizzazione di una routine utente di generazione quota per l’asse
slave sono di seguito elencate:
• La funzione va scritta in AWL in uno dei blocchi #INT a disposizione. In alternativa la routine
può essere scritta in ASSEMBLER
• La posizione generata deve essere scritta della variabile asse PosMShift. Tale variabile è una
LongWord (4 byte) e necessita sia specificato il numero dell’asse slave al quale appartiene.
• La velocità generata deve essere scritta della variabile asse VelMShift. Tale variabile è una
LongWord (4 byte) e necessita sia specificato il numero dell’asse slave al quale appartiene.
• Se nel blocco #INT vengono usate funzioni che richiedono la selezione dell’asse, come prime
istruzioni del blocco bisogna salvare il numero di asse precedentemente selezionato per poi
ripristinarlo in uscita dal blocco.

Nel paragrafo riservato agli esempi è descritto un utilizzo di tale funzionalità

82 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 6 SHIFT DI QUOTA

6.3 ESEMPI D’USO DELLO SHIFT IN AWL

In questo paragrafo si vogliono riportare alcuni esempi d’uso della libreria dello shift di quota scritti
in AWL. Tali esempi (riportati in ordine di difficoltà) potranno essere usati come base per le
applicazioni utente anche se le possibilità della libreria sono sicuramente maggiori di quelle che gli
esempi riusciranno ad evidenziare.

Esempio 1
Supponiamo di avere un unico sistema a 2 assi (Tc = 2 msec) e sul fronte di salita di un merker (@M_StartShift) si
vuole effettuare sull’asse denominato @AX_Slave uno shift fisico di 4000 impulsi in 1 secondo che equivale, nel
nostro caso a 500 Tc.

; ****************************************************
; * PLC definition *
; ****************************************************
#DEFPLC

BE

; ****************************************************
; * First start-up *
; ****************************************************
#RESET
L KZ2
C cm-start

JSR @U_TotalReset
JSR @U_PartialReset
BE

; ****************************************************
; * Start-up *
; ****************************************************
#START
L KZ2
C cm-start
UN @M_ResetDone
IF
JSR @U_TotalReset
ENDIF
JSR @U_PartialReset
BE

; ****************************************************
; * Total reset *
; ****************************************************
#USER @U_TotalReset

S RLC
S @M_ResetDone
BE

; ****************************************************
; * Partial reset *
; ****************************************************
#USER @U_PartialReset
* ...
* Abilitazione dello shift ad ogni accensione
SEL @AX_Slave * Seleziono asse su cui applicare lo shift
C cm-shtenab * Abilita lo shift

Doc. MS270103 - Ed. 05 - 9 aprile 2004 83


Axes utilities

* ...
BE

; ****************************************************
; * Main program *
; ****************************************************
#MAIN
..
* Abilitazione dello shift
SEL @AX_Slave
UN C cm-?sht * Testo se non ci sono shift in corso
U @M_StartShift * e richiesta di start shift
IF
R @M_StartShift * Reset richiesta
L KZ3000 * impulsi da recuperare
L KZ500 * 500 Tc -> 1 secondo
C cm-shtstr
ENDIF
..
BE

In effetti questo programma funziona senza alcuna altra configurazione in quanto quello che vogliamo realizzare è la
soluzione di default: shift a tempo

Esempio 2
Supponiamo di avere un unico sistema a 2 assi (Tc = 2 msec) e sul fronte di salita di un merker (@M_StartShift) si
vuole effettuare sull’asse denominato @AX_Slave uno shift fisico della quantità di impulsi contenuta in
@DD_ShiftPulses in un periodo che è fornito da una variazione della quota (@DD_DeltaPulses) di un asse master
(@AX_Master) e che lo shift cominci su un trigger fornito dal superamento di una quota di trigger (@DD_Trigger)
dell’asse master stesso. Scegliamo una evoluzione con la sola limitazione dell’accelerazione massima (vedi caso 4)
programmando quindi i limiti di velocità con il valore di velocità massimo raggiungibile dall’asse (VEMAX).
Per semplificare la scrittura supponiamo che le quote siano già espresse in impulsi, le velocità in unità interne così
come le accelerazioni.
Sempre per semplificare, si omettono le procedure di start del programma assi e di abilitazione dello shift mostrate
sull’esempio 1 limitandosi alla struttura del programma vero e proprio

; ****************************************************
; * Main program *
; ****************************************************
#MAIN
* Abilitazione dello shift
SEL @AX_Slave
UN C cm-?sht * Testo se non ci sono shift in corso
U @M_StartShift * e richiesta di start shift
IF
R @M_StartShift * Reset richiesta

* Impostazione dell’ asse master e del sistema


L KZ @N_Master * Numero asse master
L KZ0 * Numero sistema o scheda: Non significativo dato che
* il master si trova sullo stesso sistema dello slave
C cm-shtmst

* Impostazione della modalità di lettura della quota master


L KZ1 * Lettura di P1 e V1 su asse master locale
L KZ0 * Indirizzo routine personalizzata = 0 perché non
* significativa in questa applicazione
C cm-shtrdm

* Impostazione della modalità di shift


* 1. Preparazione tabella su DD consecutive in memoria

84 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 6 SHIFT DI QUOTA

* Siccome si vuole solo la limitazione di accelerazione (modo 4)


* tutti gli altri parametri devono essere impostati opportunamente
SEL @AX_Slave
C R.VEMAX
T @DD_Table0 * DD100: massima velocità slave positiva
KZW
T @DD_Table1 * DD104: massima velocità slave negativa
L KZ5000000
T @DD_Table3 * DD108: velocità di riferimento master
L KZ300000
T @DD_Table4 * DD112: massima accelerazione slave
L KZ0
T @DD_Table5 * DD116: Futura espansione
L KZ0
T @DD_Table6 * DD120: Solo per uso interno
* 2. Attivazione comando
LA @DD_Table0 * Indirizzo tabella
L KZ1 * modalità shift fisico in spazio senza
C cm-shtmode * limitazione automatica del recupero

* Attivazione trigger
L @DD_Trigger * Quota di trigger
L KZ1 * Abilita trigger quando la quota master diventa
* maggiore della quota di trigger
C cm-shttrg

* Attivazione shift
L @DD_ShiftPulses * Impulsi di shift
L @DD_DeltaPulses * Variazione della quota master su cui si evolve
* lo shift
C cm-shtstr
ENDIF
BE

Allo start lo shift non sarà subito attivo e verrà attivato solo quando la posizione dell’asse master supererà la quota
indicata da @DD_Trigger. A quel punto lo shift dello slave, pari a @DD_ShiftPulses, si evolverà intanto che
l’asse master percorre @DD_DeltaPulses impulsi

Esempio 3
Modifichiamo l’esempio 2 in modo che la quota e la velocità del master siano derivate da un calcolo e presenti nelle
due variabili @DD_QuotaMaster e @DD_SpeedMaster (sarà necessario l’uso di un blocco #INT, ad esempio lo 0,
come routine utente personalizzata per il passaggio della quota e della velocità) ed inoltre supponiamo che ad ogni fine
dello shift vada in esecuzione una routine (ad esempio il blocco #INT 2) che semplicemente incrementa una
@DD_Counter.
Inoltre terremo sotto controllo lo shift rimanente e il periodo di evoluzione rimanente. Per il resto l’esempio segue
quanto fatto nell’esempio 2.

; ****************************************************
; * Main program *
; ****************************************************
#MAIN
* Abilitazione dello shift
SEL @AX_Slave
UN C cm-?sht * Testo se non ci sono shift in corso
U @M_StartShift * e richiesta di start shift
IF
R @M_StartShift * Reset richiesta

* Siccome si intende utilizzare una posizione e una velocità utente


* per la gestione dello start dello shift su trigger non è

Doc. MS270103 - Ed. 05 - 9 aprile 2004 85


Axes utilities

* necessario passare alcuna informazione relativa al master e quindi non


* è necessario l’uso del comando cm-shtsmt.
* L’informazione sull’uso di un master custom è passata con il comando
* cm-shtrdm

* Impostazione della modalità di lettura della quota master


* Si ricordi che si deve calcolare l’indirizzo della routine utente che
* nel nostro caso è l’indirizzo del blocco #INT 0
L KZ0 * Numero INT
C addrint * restituisce in ACC1 l’indirizzo
L KZ9 * Lettura di posizione e velocità da routine utente
TAK * Sistemo ACC1 e ACC2 come richiesti dal comando
C cm-shtrdm
* Impostazione della modalità di shift
* 1. Preparazione tabella su DD consecutive in memoria
* Siccome si vuole solo la limitazione di accelerazione (modo 4)
* tutti gli altri parametri devono essere impostati opportunamente
* Inoltre non è sarebbe necessario caricare nessun parametro nelle
* celle @DD_Future1 e @DD_InternalUse anche se invece è necessario
* che esse siano riservate in memoria. Per completezza nell’esempio
* vengono impostate a 0
SEL @AX_Slave
C R.VEMAX
T @DD_Table0 * DD100: massima velocità slave positiva
KZW
T @DD_Table1 * DD104: massima velocità slave negativa
L KZ5000000
T @DD_Table2 * DD108: velocità di riferimento master
L KZ300000
T @DD_Table3 * DD112: massima accelerazione slave
L KZ0
T @DD_Table4 * DD116: Futura espansione
L KZ0
T @DD_Table5 * DD120: Solo per uso interno
* 2. Attivazione comando
LA @DD_Table0 * Indirizzo tabella
L KZ1 * modalità shift fisico in spazio senza
C cm-shtmode * limitazione automatica del recupero
. * Attivazione trigger : Attenzione che la quota di trigger deve essere
* superiore della quota che l’asse ha all’istante in cui si attiva il
* trigger
L @DD_Trigger * Quota di trigger
L KZ1 * Abilita trigger quando la quota master diventa
* maggiore della quota di trigger
C cm-shttrg
* Aggancio del blocco #INT 2 come azione sincrona a fine shift
L KZ2 * Numero INT
C addrint * resctituisce in ACC1 l’ indirizzo
C cm-shtlink

* Attivazione shift
L @DD_ShiftPulses * Impulsi di shift
L @DD_DeltaPulses * Variazione della quota master su cui si evolve
* lo shift
C cm-shtstr
ENDIF

* Valutazione continua dello shift residuo e del periodo di evoluzione


* residuo
SEL @AX_Slave
C cm-shtsts * interroga l’asse sullo stato in corso
T @DD_RemainingShift * entità del recupero non ancora applicata

86 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 6 SHIFT DI QUOTA

TAK
T @DD_RemainingPeriod * periodo di evoluzione residuo
BE

; ***********************************************************
; * Blocco di generazione della posizione e velocità master *
; ***********************************************************
#INT 0
* Salvo asse attivo
C r.asse
T @DW_ActiveAxis

L @DD_QuotaMaster
T D” @N_Slave PosMShift” * deposita quota su variabile PosMShift dell’
* asse slave
L @DD_SpeedMaster
T D” @N_Slave VelMShift” * deposita quota su variabile VelMShift dell’
* asse slave

* Ripristino asse attivo


L @DW_ActiveAxis
C w.asse
BE

; ***********************************************************
; * Blocco di esecuzione sincrona con evento di fine shift *
; ***********************************************************
#INT 2
INC @DD_Counter
BE

6.4 LIBRERIA COMANDI FORTH

In questo paragrafo vengono elencati i comandi Forth per la gestione dello shift di quota.

CM-SHTENAB
Comando che attiva la gestione della compensazione dello shift dell’asse naxis. Il comando deve
essere richiamato una sola volta ad ogni accensione dopo l’attivazione del programma assi
(comando CM-START) Il comando può essere utilizzato anche per la riattivazione dopo una
disabilitazione (vedi comando CM-SHTDISA).

Sintassi: naxis ---


Argomenti: naxis numero dell’asse di cui si vuole attivare la compensazione

CM-SHTDISA
Comando che disattiva la gestione della compensazione dello shift dell’asse naxis.

Sintassi: naxis ---


Argomenti: naxis numero dell’asse di cui si vuole disattivare la compensazione

Doc. MS270103 - Ed. 05 - 9 aprile 2004 87


Axes utilities

CM-SHTMST
Per l’asse naxis (’asse a cui viene applicata la compensazione dello shift), e si intende utilizzare
un asse master per lo shift in spazio e/o per gestire una quota di trigger per lo start, con questo
comando si può configurare:

- (master) numero dell’asse master o del dispositivo logico (locale o CANopen), da cui viene
acquisita la posizione su cui si basa l’eventuale recupero in spazio dello shift (si ricorda che
esiste anche il recupero in tempo) e l’eventuale trigger (sul superamento in avanti o indietro) per
lo start dello shift. Se non si desidera utilizzare l’asse master il parametro master deve
coincidere con il numero di asse slave.
- (system.) numero di sistema remoto nel caso in cui il master sia letto tramite la rete HDLC,
oppure il numero di canale all’interno della scheda che rende disponibile il dispositivo logico
(ad esempio nel caso di canale encoder da scheda MINENC). Nel caso in cui il master sia un
asse locale oppure nel caso di dispositivo CANopen o comunque non multi-canale, system non
viene interpretato (vedi anche CM-SHTRDM).

Sintassi: master system naxis ---


Argomenti: master Numero dell’asse usato come master nel recupero shift a spazio o di dispositivo
logico locale o CANopen
system Numero del sistema su cui si trova l’asse master (nel caso di rete di sistemi) o di
canale del dispositivo di lettura quota (encoder locale)
naxis numero dell’asse di cui si vogliono impostare i parametri

CM-SHTRDM
Per l’asse naxis (’asse a cui viene applicata la compensazione dello shift), e si intende utilizzare
un asse master per lo shift in spazio e/o per gestire una quota di trigger per lo start, con questo
comando si può configurare:
- La modalità di lettura della quota dal master assegnato: (mode) secondo i valori della tabella
6.1 (vedi relativo comando AWL).

NOTA
Nel caso venga programmata una modalità di lettura non supportata dal sistema, la quota e la velocità restituite
sono poste a 0.

- L’indirizzo dell’eventuale routine utente per la lettura personalizzata della quota e della velocità
di riferimento per il recupero in spazio dello shift: (addr). Nel caso non si usi alcuna routine
addr deve essere 0.

NOTA
Nel caso venga programmata una modalità di lettura non supportata dal sistema, la quota e la velocità restituite
sono poste a 0.

Sintassi: mode addr naxis ---


Argomenti: mode modalità di lettura master (vedi tabella)
addr indirizzo routine utente per lettura master (0 se nulla)
naxis numero dell’asse di cui si vogliono impostare i parametri

88 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 6 SHIFT DI QUOTA

CM-SHTMODE
Per l’asse naxis (’asse a cui viene applicata la compensazione dello shift), con questo comando si
possono impostare i limiti di velocità massima e di accelerazione massima che modificheranno il
profilo di shift secondo le modalità 1, 2, 3, 4 descritte nell’introduzione del capitolo, selezionare il
tipo di recupero da applicare ed abilitare o meno la limitazione automatica del recupero in base ai
parametri limite programmati.
In particolare:
Sintassi: LSpeed+ LSpeed- MasterSpeed Acceleration JointMode RecoverMode naxis ---
Argomenti: Lspeed+velocità limite assoluta positiva slave
Lspeed- velocità limite assoluta negativa slave
MasterSpeed velocità master (usato solo per recupero in spazio)
Acceleration Accelerazione limite per la compensazione espressa in unità interne
JointMode abilitazione raccordo su rampa di compensazione (0 / 1)
RecoverMode modo di recupero shift (vedi tabella 6.3 del relativo comando AWL)
naxis numero dell’asse di cui si vogliono impostare i parametri

ATTENZIONE
Occorre tener presente che per escludere il controllo sulla velocità limite per lo slave, bisogna che
tali limiti siano programmati con dei valori uguali o superiori rispetto al valore massimo di velocità
che può essere raggiunto dall’asse slave (ad esempio +VEMAX e –VEMAX dell’asse).

CM-SHTTRG
Per l’asse naxis (’asse a cui viene applicata la compensazione dello shift), con questo comando si
può programmare l’utilizzo dello start recupero su raggiungimento di una quota di trigger da parte
del master.

La funzione di trigger è attiva una sola volta ad ogni start recupero. I parametri sono subito resi
attivi dal comando, quindi, onde evitare discontinuità di pilotaggio dell’asse, occorre verificare che
la funzione non sia già in attesa di trigger.

Sintassi: Trigger Flag naxis ---


Argomenti: Trigger quota master di start adeguamento
Flag flag di abilitazione della funzione di trigger (vedi tabella)
naxis numero dell’asse di cui si vogliono impostare i parametri

Flag Descrizione
1 Lo start dello shift avviene quando la quota master diventa maggiore della quota
di trigger
2 Lo start dello shift avviene quando la quota master diventa minore della quota di
trigger
0 Clo start su trigger è disabilitato

Doc. MS270103 - Ed. 05 - 9 aprile 2004 89


Axes utilities

CM-SHTRES
Comando che resetta le variabili di generazione della compensazione e la memoria dell’accumulo
dei contributi di shift applicati all’asse indicato, usati per la ricostruzione della quota fisica.

Sintassi: naxis ---


Argomenti: naxis numero dell’asse

CM-SHTSTR
Comando che attiva la compensazione dello shift per l’asse specificato naxis. Il comando
necessita che siano indicati l’entità da compensare (shift) ed il periodo di adeguamento
(period). Lo start compensazione è istantanea tranne se è stato programmato il trigger di quota
master.

Sintassi: Shift Period naxis ---


Argomenti: Shift entità da compensare
Period periodo di compensazione
naxis numero dell’asse

CM-?SHT

Comando che verifica se sull’asse specificato naxis è in corso la generazione del profilo di
compensazione dello shift. Restituisce un flag vero (tf) o falso (ff).

Sintassi: naxis --- tfl | ff


Argomenti: naxis numero dell’asse
tfl | ff flag di vero o falso; 1=recupero in corso

CM-SHTSTS
Comando che verifica per l’asse specificato naxis, lo stato della generazione del profilo di
compensazione dello shift. Restituisce l’entità non ancora recuperata ed il periodo di
compensazione mancante alla fine della procedura.

Sintassi: naxis --- Shift Period


Argomenti: naxis numero dell’asse
Shift entità non ancora recuperata espressa in impulsi
Period periodo di compensazione non ancora trascorso

CM-SHTLINK

Comando che consente di agganciare alla funzione di compensazione, una routine che sarà eseguita
ogni volta che l’asse termina di compensare l’errore impostato. Tale routine può essere scritta in
Assembler oppure in AWL utilizzando in blocco funzionale #INT; l’indirizzo di tale routine va
posto sullo stack assieme al numero dell’asse prima di richiamare il comando.

90 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 6 SHIFT DI QUOTA

Sintassi: addr naxis ---


Argomenti: addr indirizzo routine utente
naxis numero dell’asse

CM-SHTCAL

Il comando stima e determina i parametri con i quali si intende compensare lo shift. I parametri
usati sono lo spazio (shift), il periodo di recupero, le velocità slave e master di recupero e
l’accelerazione massima applicabile al recupero. Le combinazioni ammesse e gestite dal comando
sono riportate nella tabella 6.4 (vedi relativo comando in AWL)

I parametri ed il tipo di calcolo vanno posti nello stack prima di richiamare il comando; il comando
non altera il funzionamento di eventuali compensazioni già attive sull’asse. Il valore richiesto viene
rilasciato sullo stack al termina del comando. I parametri non necessari devono comunque essere
passati al comando.

Sintassi: Space Period Lspeed+ Lspeed- MasterSpeed Acceleration JointMode SlaveSpeed Type --- val
Argomenti: Space Entità dello shift espresso in impulsi
Period tempo di compensazione espresso in tempi di campionamento oppure spazio master
Lspeed+ velocità limite assoluta positiva slave
Lspeed- velocità limite assoluta negativa slave
MasterSpeed velocità master (usato solo per recupero a spazio)
Acceleration Accelerazione limite per la compensazione espressa in unità interne
JointMode abilitazione raccordo su rampa di compensazione (ininfluente)
SlaveSpeed velocità assoluta slave di riferimento
Type Tipo di calcolo (vedi tabella sopra)
Val Parametro restituito dal calcolo

READSHTMST
Comando che legge posizione e velocità dell’eventuale master associato all’asse specificato,
restituendole sullo stack.

Sintassi: naxis --- quota speed


Argomenti: naxis numero dell’asse
quota quota master in impulsi
speed Velocità master in unità interne

6.5 TEST LIBRERIA

La libreria prevede la possibilità di compilare nel sistema un programma di test di ausilio alla
taratura delle funzioni di gestione dello shift.

Il test viene avviato con la parola TST_SHT digitata da interprete Forth.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 91


Axes utilities

La pagina può essere suddivisa in quattro sezioni:


• Configurazione della modalità operativa
• Impostazione dei parametri di controllo
• Visualizzazione dello stato operativo e delle variabili di controllo
• Tasti funzione

Parametri di controllo
Nella pagina è possibile selezionare l’asse su cui è applicato lo shift e modificare singolarmente i
parametri di controllo dell’algoritmo di compensazione.
I parametri impostabili in questa sezione, sono quelli relativi al comando di caratterizzazione della
modalità di recupero (cm-shtmode), il periodo complessivo di recupero e l’eventuale quota di
trigger, anche se per questi ultimi due parametri, prevale sempre e comunque il valore imposto dal
comando al mimento della sua invocazione.

Stato operativo
In questa sezione vengono visualizzati lo stato operativo dell’asse e i valori di controllo della
funzione di compensazione dello shift.
Nell’ordine rispettivamente troviamo: modo operativo del programma assi, lo stato operativo della
funzione di compensazione, le immagini dei vettori di gestione compensazione e di gestione azione
su fine generazione, la posizione dell’asse e la sua quota fisica, la quota del master ed i valori
istantanei di generazione del profilo dello shift.
Gli ultimi tre valori raggruppati nella sezione “Master position source” mostrano la configurazione
corrente usata dall’asse per leggere la quota e la velocità del master ad esso associato.

Tasti funzione
I tasti funzione attivi in questa pagina sono qui di seguito elencati e commentati.

92 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 6 SHIFT DI QUOTA

F1 Consente di richiamare ed utilizzare le funzioni di taratura asse disponibili dal programma T_MOT

F2 Consente l’accesso diretto alla pagina di impostazione parametri di controllo asse del programma T_MOT,
rendendo accessibili tutte le funzionalità previste in tale pagina. Se il programma T_MOT non è stato mai
richiamato, la prima volta il tasto funzione accede al menù completo di T_MOT

F3 Consente di modificare lo stato operativo della funzione di compensazione dello shift (cm-shtenab, cm-shtdisa)

F4 Consente di cambiare il significato del periodo di compensazione utilizzato (tempo o spazio). Per questioni di
sicurezza, il tasto funzione è attivo solo quando la compensazione è disabilitata (funzione F3).

F5 Abilita l’acquisizione da T_MOT nella modalità “modo utente”, presettando il vettore di acquisizione con una
routine che consente la registrazione del profilo di velocità ausiliario, generato dallo shift

F6 Abilita l’acquisizione da T_MOT nella modalità “modo utente”, presettando il vettore di acquisizione con una
routine che consente la registrazione del contributo di posizione generato dallo shift.

F7 Abilita o disabilita l’utilizzo della limitazione automatica dei valori di velocità ed accelerazione in fase di
compensazione. Per questioni di sicurezza, il tasto funzione è attivo solo quando la compensazione è
disabilitata (funzione F3).

F8 Cambia la modalità operativa dello shift, ovvero le grandezze alle quali il profilo di recupero agisce (posizione
teorica o posizione fisica asse). Per questioni di sicurezza, il tasto funzione è attivo solo quando la
compensazione è disabilitata (funzione F3).

ESC Esce dalla pagina di test e ritorna all’interprete Forth

Doc. MS270103 - Ed. 05 - 9 aprile 2004 93


Axes utilities

capitolo 7 ALBERO ELETTRICO CON RAMPA

Rispetto all’albero elettrico presente nel programma assi (modo 8) la libreria in oggetto comprende
le funzioni che consentono di gestire la funzione di albero elettrico tra due o più assi, con la
possibilità di adeguare il rapporto di inseguimento con rampa temporale o di spazio.

Le funzioni sono inoltre caratterizzate da:


• Definizione del rapporto di inseguimento specificando i due termini della frazione e cioè lo
spazio master di riferimento ed il relativo spazio slave.
• Possibilità di gestione dello start dell’adeguamento del rapporto di inseguimento sul
superamento di una quota assoluta da parte dell’asse master (start su trigger).
• Possibilità di eseguire un’azione sincrona all’evento di fine generazione rampa di adeguamento.

L’adeguamento del rapporto di inseguimento consiste nel creare una rampa di raccordo tra il valore
del rapporto di inseguimento esistente ed il nuovo valore impostato; la pendenza di tale rampa viene
programmata imponendo il tempo (espresso in periodi di campionamento Tc) o lo spazio master
di evoluzione (espresso in impulsi dell’asse master) .

La rampa di adeguamento del rapporto di inseguimento può essere lineare oppure raccordata con
legge sen2; in questo secondo caso, si ottiene un movimento di adeguamento più fluido, che rispetta
l’accelerazione media del relativo movimento fatto in lineare, ma che comporta una accelerazione
di picco nel punto medio della rampa, superiore del 20% rispetto al valore medio.

Occorre tenere presente che la quota usata come periodo master deve essere intesa ‘signed’: ciò
significa che la rampa di adeguamento evolve solo se la velocità del master è di segno concorde con
quello del periodo di adeguamento programmato, e che, una volta iniziato l’adeguamento, se il
master inverte la propria direzione, la rampa involve fino ritornare all’iniziale rapporto di
inseguimento; rimane comunque garantito che, una volta che il master ritorna alla direzione
originale, la generazione della rampa riprende al superamento dell’originaria quota di start
adeguamento ed evolve rispettando i precedenti parametri.

Per semplicità di trattazione definiremo la grandezza che definisce l’evoluzione della rampa di
adeguamento, che come visto può essere sia un tempo che uno spazio, come periodo di
adeguamento.

La differenza sostanziale tra l’adeguamento a tempo e quello in spazio sta nel fatto che il primo
evolve in maniera costante ed indipendente dalle condizioni del sistema (ad esempio della velocità
di ciclo del master), mentre il secondo, utilizzando come grandezza di riferimento la quota del
master stesso, è sensibile allo stato operativo della macchina. Nel secondo caso infatti il rapporto di
inseguimento viene adeguato solo se l’asse usato come master si muove.

Il master dell’albero elettrico può essere:


• Un asse locale reale o simulato
• Un asse remoto (via HDLC) reale o simulato
• Il master virtuale dell’interpolazione
• Un encoder locale indipendente dal programma assi

94 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 7 ALBERO ELETTRICO CON RAMPA

• Un encoder gestito via CANopen


• Una routine utente

NOTA
Un pratico esempio di utilizzo della modalità utente (custom) per la lettura della quota e della velocità del
master può essere quello di un sistema che necessiti di leggere tali valori da sorgenti diverse (ad esempio due
diversi encoder), a seconda delle condizioni di ciclo della macchina.

Degli assi reali (o simulati) è possibile leggere, a seconda della modalità prescelta, quota e velocità
reali o teoriche.

La quota di un asse locale può essere quella reale (P1 o PDESID direttamente gestite dal
programma assi, quindi riferite alla posizione software del motore) oppure quella fisica (P1 o
PDESID private dalle compensazioni, quindi riferite alla posizione fisica del motore).

Una volta abilitato lo start adeguamento su trigger di quota, tale funzione è attiva solo sul
successivo comando di adeguamento, ciò significa che il trigger deve essere programmato ed
abilitato ogni volta. A seconda del segno della velocità del master (positivo o negativo), lo slave
attende che la quota master diventi rispettivamente maggiore o minore al valore di trigger.
Occorre inoltre tenere presente che:
• se allo start adeguamento la quota di trigger è già stata superata, lo slave potrebbe andare in
errore di inseguimento in quanto tenta di adeguare il rapporto in maniera istantanea.
• se allo start adeguamento con trigger il master è fermo, lo slave mantiene la propria velocità, ma
non verifica la quota di trigger fino a quando il master non ha velocità diversa da zero.

L’adeguamento in spazio del rapporto di inseguimento garantisce che lo spazio percorso dallo slave
durante la rampa è pari a quello che sarebbe stato percorso con un rapporto di inseguimento fisso
pari al valor medio tra rapporto iniziale e finale; ciò significa che tale funzione, soprattutto quando
abbinata allo start su trigger, consente di creare un legame preciso tra la posizione del master e
quella dello slave.

L’attivazione del comando di adeguamento del rapporto di inseguimento fa si che l’asse slave
preservi la velocità precedente, qualsiasi sia stato il modo di controllo precedente (posizionamento,
velocità, controllo di posizione, ecc); il rapporto di inseguimento iniziale sarà dato dal rapporto
delle velocità del master e dello slave, in quel momento impostate.

Prima di poter essere attivate le funzioni di albero elettrico, occorre aver opportunamente
programmato le modalità di lettura del master e di adeguamento del rapporto di inseguimento.

ATTENZIONE
Se il periodo di adeguamento è nullo, il rapporto di inseguimento viene aggiornato istantaneamente.

Un esempio di applicazione per la funzione di adeguamento del rapporto di inseguimento può


essere quello di una macchina bobinatrice, nella quale un carrello deve muovere avanti ed indietro
un rocchetto di filo, inseguendo la velocità del mandrino sul quale si vuole avvolgere la bobina. In
questo tipo di macchina occorre gestire la periodica inversione del senso di avvolgimento in modo
da creare strati sovrapposti di filo, ma solitamente il problema deve essere risolto senza fermare o
rallentare il mandrino. I parametri in gioco sono quindi il passo di avvolgimento, il passo di
rotazione del mandrino, la dimensione della bobina, lo spazio di inversione del verso di
avvolgimento ed il numero di strati da avvolgere.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 95


Axes utilities

Carrello

Mandrino

Passo di
avvolgimento

Dimensione bobina
Velocità
mandrino

Periodo adeguamento Dimensione bobina

Velocità Quota mandrino


carrello

Quota mandrino

Per risolvere il problema occorre che:


• i parametri di start lavorazione pongano il carrello in albero elettrico con il mandrino, definendo
un rapporto di inseguimento tale per cui ad ogni giro del mandrino, il carrello si sia spostato del
passo di avvolgimento.
• Ad aggancio avvenuto (fine rampa di adeguamento o fine inversione), eseguire un’azione che
calcoli ed imponga la nuova quota master di inversione, che programmi correttamente
l’eventuale nuovo spazio di adeguamento rampa e che in base al verso corrente di movimento
del carrello, prepari il nuovo rapporto di inseguimento, invertendo il segno del passo di
avvolgimento.

L’azione che determina l’inversione del carrello sul raggiungimento dei limiti della bobina, deve
essere programmata in AWL usando un blocco funzionale #INT e linkata alla funzione di albero
elettrico in modo che sia eseguita al termine delle rampe di inversione del carrello (vedi comando
cm-gearlink). Inoltre è necessario che tale routine sia richiamata anche la prima volta che il
sistema si aggancia in albero elettrico, quindi, o si programma un periodo di adeguamento anche
quando si parte da fermi, oppure si fa in modo che il ciclo PLC possa richiamare tale azione in
maniera asincrona, durante il primo movimento del carrello dopo lo start ciclo di avvolgimento.

96 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 7 ALBERO ELETTRICO CON RAMPA

ATTENZIONE
L’esempio proposto risolve in modo semplicistico la problematica di una bobinatrice, ma consente
di evidenziare quali sono le peculiarità salienti della nuova libreria di albero elettrico.

IMPORTANTE
Durante l’adeguamento del rapporto di inseguimento fatto in spazio master, lo spazio percorso dallo
slave è la metà dello spazio che avrebbe compiuto, a parità di avanzamento del master, in
condizione di rapporto di inseguimento a regime.
delta_slave
rapporto_inseguimento =
delta_master

periodo_master
spazio_slave = × rapporto _ inseguimento
2

7.1 INSTALLAZIONE DELLA LIBRERIA

Per usare la libreria di albero elettrico con rampa si deve innanzitutto installarla nella directory
delle librerie. Per fare questo è necessario usare il programma INSTALL presente nella libreria e
quindi seguire le indicazioni.
Dopo questa operazione nella directory delle librerie CMZ\LIB ci sarà una sottodirectory per la
libreria in oggetto.

Ora quando si userà il programma MAKEPRJ per iniziare un nuovo lavoro ci sarà una nuova
sezione ‘ASSI’ con la seguente selezione.

ASSI
..
[ ] Gestione albero elettrico con rampa
[ ] Pagine di test
..

Gestione albero elettrico con rampa È il nucleo principale, se si usa il software Albero
elettrico con rampa questo pacchetto deve essere
sempre selezionato.

Pagine di test Contiene le pagine di test richiamabili a terminale,


che agevolano la messa in servizio della libreria.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 97


Axes utilities

7.2 LIBRERIA COMANDI AWL

Verranno ora elencati i comandi AWL per la gestione della libreria di albero elettrico. Per la quasi
totalità dei comandi viene riportato un esempio di utilizzo che però ha lo solo scopo di indicare il
modo in cui i dati di ingresso vengono passati al comando, mentre, per una migliore comprensione ,
soprattutto inerente alla correlazione tra i vari comandi, si rimanda agli esempi del paragrafo 7.3.

cm-gearmst

Selezionato l’asse slave, con questo comando si può configurare:


In ACC2: Il numero dell’asse master o del dispositivo logico (locale o CANopen) dichiarato nel
blocco #DEFPLC.
In ACC1: Il numero di sistema remoto nel caso in cui il master sia letto tramite la rete HDLC,
oppure il numero di canale all’interno della scheda che rende disponibile il dispositivo logico
definito nel blocco #DEFPLC (ad esempio nel caso di canale encoder da scheda MINENC). Nel
caso in cui il master sia un asse locale oppure nel caso di dispositivo CANopen o comunque non
multi-canale, il valore caricato in ACC1 non viene interpretato. (vedi anche comando cm-
gearrdm).

Classe di appartenenza: Funzioni albero elettrico


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: numero di sistema remoto (HDLC)
numero di canale nel dispositivo logico (es.: lettura da scheda MINENC)
non interpretato nel caso di asse locale o dispositivo CANopen
ACC2: numero di asse nel sistema (locale o remoto)
numero del dispositivo logico (locale o CANopen)
Parametri restituiti: ACC1: Indeterminato
ACC2: Inalterato
Vedi anche: cm-gearrdm, cm-gearmode

Esempio: Si vuole che l’asse slave subisca sia legato in albero elettrico con asse master locale.

SEL @AX_Slave * Seleziona asse slave


L KZ @N_Master * ACC2 = asse master
L KZ0 * ACC1 = Ininfluente
C cm-gearmst

cm-gearrdm
Selezionato l’asse slave, con questo comando si può configurare:

In ACC2: La modalità di lettura della quota dal master assegnato, secondo i valori della tabella
sotto riportata.

NOTA
Nel caso venga programmata una modalità di lettura non supportata dal sistema, la quota e la velocità restituite
sono poste a 0.

98 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 7 ALBERO ELETTRICO CON RAMPA

Valore Descrizione Note


0 Legge quota reale (P1) e velocità teorica (VDESID) da un master locale Sempre possibile
1 Legge quota e velocità reali (P1 - V1) da un master locale
2 Legge quota e velocità teoriche (PDESID – VDESID) da un master locale
3 Legge quota reale (P1) e velocità teorica (VDESID) da un master remoto Solo su sistemi con
4 Legge quota e velocità reali (P1 - V1) da un master remoto HDLC
5 Legge quota e velocità teoriche (PDESID – VDESID) da un master remoto
6 Legge quota e velocità (S_P1 – S_VDESID) da un master virtuale (interpolazione)
Solo in caso di sistemi
con interpolazione
7 Legge quota e velocità da un encoder gestito in locale Solo se definiti i
driver di gestione da
AWL
8 Legge quota e velocità da un encoder gestito via CANopen Solo in caso di sistemi
con CANopen
9 Quota e velocità restituite da una routine personalizzata Vedi modalità di
definizione routine
10 Legge quota reale (P1) e velocità teorica (VDESID) da un master locale, con Significativo solo se
ricostruzione della posizione fisica del motore attivato lo shift sulla
11 Legge quota e velocità reali (P1 - V1) da un master locale, con ricostruzione posizione del master.
della posizione fisica del motore
12 Legge quota e velocità teoriche (PDESID – VDESID) da un master locale, con
ricostruzione della posizione fisica del motore
Tabella 7.1

In ACC1: L’indirizzo dell’eventuale routine utente per la lettura personalizzata della quota e della
velocità di riferimento master per l’albero elettrico. Nel caso non si usi alcuna routine ACC1 deve
essere caricata con 0.

Classe di appartenenza: Funzioni albero elettrico


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indirizzo routine di lettura personalizzata (0 se nulla)
ACC2: modalità di lettura quota
Parametri restituiti: ACC1: Indeterminato
ACC2: Inalterato
Vedi anche: cm-gearmst, cm-gearmode

Esempio: Supponiamo di avere una rete di sistemi CTN330 collegati tra loro in HDLC. Si vuole che l’asse slave
(presente sul sistema CNT330 n.2) sia in albero elettrico con un asse master (presente sul sistema CTN330 n.4) e in
particolare segua la posizione e la velocità teoriche (PDESID e VDESID).

SEL @AX_Slave * Seleziona asse slave


L KZ @N_Master * ACC2 = asse master
L KZ4 * ACC1 = numero del CTN330 dove è presente l’asse master
cm-gearmst

L KZ5 * Seleziona modalità di lettura PDESID e VDESID da sistema remoto


L KZ0 * Routine agganciata: Ininfluente
C cm-shtrdm

cm-gearmode

Selezionato l’asse slave, con questo comando si possono impostare i limiti parametri di
adeguamento del rapporto di inseguimento.
In particolare:

Doc. MS270103 - Ed. 05 - 9 aprile 2004 99


Axes utilities

In ACC2 deve essere caricato l’indirizzo di una tabella di LongWord che contiene i valori dei
parametri di adeguamento. La tabella deve essere così composta:

Cella Offset Descrizione


0 0 Periodo di adeguamento che a seconda del modo sarà un tempo in tc o una quota
in impulsi.
1 4 Abilitazione raccordo su rampa di adeguamento (0 / 1)
2 8 Riservata
3 12 Riservata
Tabella 7.2

In ACC1 deve essere caricato la modalità di adeguamento secondo la seguente tabella:

Tipo Descrizione
0 Adeguamento in tempo (espresso in Tc)
1 Adeguamento in spazio (espresso in impulsi)

NOTA
Se il periodo di adeguamento è nullo, l’adeguamento del rapporto di inseguimento sarà istantaneo.

Classe di appartenenza: Funzioni albero elettrico


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: modo di adeguamento rapporto di inseguimento (vedi tabella)
ACC2: indirizzo tabella parametri di adeguamento
Parametri restituiti: ACC1: Indeterminato
ACC2: Inalterato
Vedi anche: cm-gearmst, cm-gearrdm

Esempio: Per effettuare un adeguamento in spazio ad un nuovo valore del rapporto di inseguimento

* Preparazione tabella
L @DD_SpazioAdeguamento * Spazio di adeguamento
T @DD_Table0
L KZ0
T @DD_Table1 * Abilitazione raccordo
L KZ0
T @DD_Table2 * Riservat
L KZ0
T @DD_Table3 * Riservato

* Comando
LA @DD_Table0 * Carica indirizzo tabella
L KZ1 * Adeguamento del rapporto in spazio
C cm-gearmode

cm-geartrg

Selezionato l’asse slave, con questo comando si può programmare l’utilizzo dello start
adeguamento su raggiungimento di una quota di trigger da parte del master.
In ACC2 deve essere scritta la quota master assoluta da usare per il confronto (quota di trigger).
In ACC1 il tipo di confronto da operare tra quota master e posizione di trigger

ACC1 Descrizione

100 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 7 ALBERO ELETTRICO CON RAMPA

1 Lo start dell’adeguamento del rapporto avviene quando la quota master diventa


maggiore della quota di trigger
2 Lo start dell’adeguamento del rapporto avviene quando la quota master diventa
minore della quota di trigger
0 Lo start su trigger è disabilitato

La funzione di trigger è attiva una sola volta ad ogni start recupero. I parametri sono subito resi
attivi dal comando, quindi, onde evitare discontinuità di pilotaggio dell’asse, occorre verificare che
la funzione non sia già in attesa di trigger.

Classe di appartenenza: Funzioni albero elettrico


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: flag di abilitazione gestione trigger (vedi tabella)
ACC2: Quota master di trigger in impulsi
Parametri restituiti: ACC1: Indeterminato
ACC2: Inalterato
Vedi anche:

Esempio: Si vuole che il rapporto di inseguimento si adegui ad un nuovo valore intanto che l’asse master locale
percorre un certo spazio e sul superamento di una quota di trigger.

SEL @AX_Slave * Seleziona asse a cui applicare lo shift


L @DD_TriggerPosition * Quota di trigger in unità interne
L KZ1 * Superamento della quota di trigger
C cm-geartrg

cm-gearstr
Comando che attiva l’adeguamento del rapporto di inseguimento per l’asse selezionato. Il comando
necessita che siano indicati:
In ACC1: lo spazio master di riferimento in impulsi
In ACC2: l’equivalente spazio slave per il calcolo del rapporto di inseguimento finale.

Lo start adeguamento è istantaneo tranne se è stato programmato il trigger di quota master.

Classe di appartenenza: Funzioni albero elettrico


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: spazio master di riferimento in impulsi
ACC2: spazio slave di riferimento in impulsi
Parametri restituiti: ACC1: Indeterminato
ACC2: Indeterminato
Vedi anche:

Esempio: Si vuole attivare un albero elettrico in cui il rapporto tra asse master e asse slave sia di 3250 impulsi slave
per ogni 1000 impulsi dell’asse master

SEL @AX_Slave * Seleziona asse a cui applicare lo shift


L KZ3250 * Impulsi Slave
L KZ1000 * Impulsi Master
C cm-gearstr

Doc. MS270103 - Ed. 05 - 9 aprile 2004 101


Axes utilities

cm-gearres
Comando che resetta le variabili di generazione dell’adeguamento del rapporto di inseguimento,
comportando di conseguenza il congelamento dell’ultimo rapporto di inseguimento generato in caso
che l’adeguamento non fosse già terminato. Il comando necessita che sia selezionato il numero
dell’asse.

Classe di appartenenza: Funzioni albero elettrico


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato
Vedi anche:

cm-?gear

Comando che verifica se l’asse attualmente selezionato è in fase di adeguamento del rapporto di
inseguimento, se cioè non è ancora terminato l’eventuale adeguamento del rapporto tra master e
slave oppure se, pur essendo l’asse slave a rapporto costante, è in attesa del raggiungimento della
quota di trigger da parte del master. Restituisce il flag RLC vero o falso.

Classe di appartenenza: Funzioni albero elettrico


Modalità di chiamata: U C, UN C, O C, ON C
Modifica RLC: SI
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato
Vedi anche:

Esempio: Vedi paragrafo esempi

cm-gearsts
Comando che verifica per l’asse attualmente selezionato, lo stato dell’adeguamento del rapporto di
inseguimento. Restituisce
In ACC1: l’entità del periodo master mancante al termine dell’adeguamento (tempo in Tc o spazio
in impulsi)
In ACC2: lo stato operativo della funzione di adeguamento con il seguente significato:

ACC2 Descrizione
0 Funzione non attiva
1 Attesa trigger su superamento quota master
2 Generazione rampa di adeguamento
3 Inseguimento a rapporto costante

Classe di appartenenza: Funzioni albero elettrico


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato

102 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 7 ALBERO ELETTRICO CON RAMPA

Parametri restituiti: ACC1: entità del periodo master mancante al termine dell’adeguamento
ACC2: stato operativo funzione albero elettrico (vedi tabella)
Vedi anche:

Esempio: Si vuole leggere il periodo mancante al termine dell’adeguamento e lo stato operativo della funzione di
adeguamento

SEL @AX_Slave * Seleziona asse slave


C cm-gearsts
T @DD_RemainingPeriod * periodo mancante alla fine adeguamento
TAK
T @DD_ActualStatus * Stato attuale dell’adeguamento

cm-gearpsl
Comando che restituisce la posizione dello slave selezionato, relativa alla quota master specificata
ed ai parametri generati durante l’ultimo comando di inseguimento. Il comando risulta utile per far
ripartire lo slave in fase al master, se il precedente inseguimento si era interrotto per cause
indipendenti dal ciclo di movimento (ad esempio un’emergenza).
Nel caso di adeguamento in spazio, la funzione è in grado di tenere conto anche dell’eventuale
gestione del trigger, in questo caso però è possibile calcolare la posizione solo per quote master che
evolvono nel verso del confronto, ciò significa che se il trigger era programmato per quota master
maggiore rispetto alla posizione di trigger, la funzione calcola la posizione dello slave solo se la
quota master specificata è maggiore rispetto all’ultima quota master usata durante l’inseguimento
(quota master dell’istante di stop); negli altri casi restituisce la quota attuale dello slave.
Il comando necessita:
In ACC2: la posizione di riferimento del master
In ACC1: un flag che specifica se il calcolo deve presettare anche le variabili interne o se le deve
preservare per ulteriori ricalcoli con il seguente significato:

ACC1 Descrizione
0 Presetta parametri per restart inseguimento
1 Salva parametri interni per successivi ricalcoli

Restituisce:
In ACC1: la posizione dello slave calcolata.

Se i parametri interni non vengono salvati, i nuovi calcoli della posizione dello slave possono essere
fatti solo per posizioni master maggiori (o minori a seconda del verso di confronto) rispetto
all’ultimo valore usato per il calcolo.

ATTENZIONE
Prima di richiamare il calcolo della posizione slave occorre essere certi che lo slave non sia in
modalità inseguimento.

Classe di appartenenza: Funzioni albero elettrico


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Flag di salvataggio parametri
0= presetta parametri per restart inseguimento
1= salva parametri interni per successivi ricalcoli
ACC2: Quota master
Parametri restituiti: ACC1: Quota slave equivalente

Doc. MS270103 - Ed. 05 - 9 aprile 2004 103


Axes utilities

ACC2: Indeterminato
Vedi anche: cm-gearrstr, cm-gearmsyn, readgearmst

Esempio: Si vuole calcolare la posizione dello slave per la gestione di un nuova partenza in fase

SEL @AX_Slave * Seleziona asse slave


U C cm-?0mode
IF
* Solo se non è in albero elettrico
L @DD_NewMasterQuota * Nuova posizione master
L KZ0 * Forza preset parametri
C cm-gearpsl
T @DD_CalcSlaveQuota * Quota slave relativa alla nuova quota master
ENDIF

cm-gearmsyn
Per illustrare questo comando è necessario partire da un esempio: supponiamo che durante un
movimento in cui l’asse slave è in albero elettrico con un asse master sia necessario fermare l’asse
master (per esempio alterare la sua fase meccanica). A master fermo si deve sganciare lo slave
dall’albero elettrico e quindi muovere il master nella nuova posizione; a questo punto è però
necessario risincronizzare il tutto prima di riabilitare l’albero elettrico con un comando di restart
(cm-gearrstr) in modo da non alterare l’evoluzione delle eventuali fasi di adeguamento del
rapporto di inseguimento in spazio master (o eventuali recuperi – vedi libreria albero elettrico con
recupero).
A tale scopo questo comando consente di sincronizzare la quota master di riferimento per la
generazione del profilo di albero elettrico con una nuova posizione dell’asse master.
Il comando necessita:
In ACC1: la nuova posizione di riferimento del master
Restituisce:
In ACC1: la variazione di posizione tra la quota originale e la nuova quota imposta al master (delta
quota master). Tale valore è utile per sincronizzare in seguito anche l’eventuale quota di trigger
(vedi comando cm-geartsyn)

Classe di appartenenza: Funzioni albero elettrico


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Quota master
ACC2: Ininfluente
Parametri restituiti: ACC1: Delta quota master
ACC2: Inalterato
Vedi anche: cm-geartsyn, cm-gearpsl, cm-gearrstr, readgearmst

Esempio: Vedi comando successivo

cm-geartsyn

Comando che consente di riallineare la posizione del trigger in base alla variazione di posizione
operata dal comando di sincronizzazione della quota master (cm-gearmsyn). Il comando
necessita:
In ACC1: la variazione della posizione di riferimento del master

Classe di appartenenza: Funzioni albero elettrico

104 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 7 ALBERO ELETTRICO CON RAMPA

Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Delta quota master
ACC2: Ininfluente
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato
Vedi anche: cm-gearmsyn, cm-gearpsl, cm-gearrstr, readgearmst

Esempio: Ad asse master fermo e dopo aver sganciato l’asse slave dall’albero elettrico, si vuole muovere l’asse
master in una nuova posizione e quindi rimettere lo slave in albero elettrico senza perdere nessun sincronismo
spostando adeguatamente anche la quota di trigger
SEL @AX_Slave * Seleziona asse slave

* con il comando readgearmst (descritto in seguito) si può leggere


* la quota del master associato
C readgearmst * Restituisce la quota del master associato

* riprogramma la quota di sincronismo e ricava il delta quota master


C cm-gearmsyn

* Usa il dato per aggiornare la quota di trigger


C cm-geartsyn

* Ora è possibile riagganciare l’albero elettrico con il comando di restart


C cm-gearrstr

cm-gearmph

Sempre nell’ambito di effettuare dei rifasamenti, a volte, è necessario muovere lo slave in modo
sincronizzato (come se seguisse il master e quindi le azioni ad esso collegate - trigger ed eventuali
recuperi di fase) senza però muovere l’asse master.
La funzione attivata dal comando, consente allo slave di inseguire un profilo di velocità e posizione
che simula il movimento dell’asse master alla velocità specificata, permettendo quindi di gestire
correttamente tutte le eventuali azioni legate alla quota di tale master (trigger ed eventuali recuperi
di fase). Il profilo di velocità simulato dal comando, evolve in modo trapezoidale, utilizzando come
pendenza delle rampe quella dell’asse slave convertita in unità interne master sulla base dell’ultimo
rapporto di inseguimento impostato. Il movimento di fasatura termina impartendo il comando con
velocità nulla (0).

ATTENZIONE
Il comando può essere impartito solo se l’asse si trova già in albero elettrico, in caso contrario viene
ignorato.

Al termine del rifasamento gli assi master e slave sono comunque sincronizzati e quindi il master
può ripartire.

Il comando necessita:
In ACC1: Velocità di movimento espressa in unità interne dell’asse master.

Classe di appartenenza: Funzioni albero elettrico


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Velocità di movimento, espressa in impulsi asse master

Doc. MS270103 - Ed. 05 - 9 aprile 2004 105


Axes utilities

ACC2: Ininfluente
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato
Vedi anche: cm-gearmsyn, cm-geartsyn, cm-?gearmph

Esempio:

SEL @AX_Slave * Seleziona asse slave

U @M_StartMph * Sul fronte di salita dello start


D @M_eStartMph
IF
L @DD_MphSpeed * Velocità di sincronismo espressa in unità master
C cm-gearmph
ENDIF

UN @M_StartMph * Sul fronte di discesa dello start esegue lo stop


D @M_enStartMph
IF
L KZ0 * per lo stop è necessario dare il comando con velocità a 0
C cm-gearmph
ENDIF

cm-?gearmph

Comando che verifica se sull’asse attualmente selezionato è attiva la funzione di fasatura manuale.
Restituisce il flag RLC vero nel caso in cui tale funzione sia ancora attiva.

Classe di appartenenza: Funzioni albero elettrico


Modalità di chiamata: U C, UN C, O C, ON C
Modifica RLC: SI
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato
Vedi anche: cm-gearmph, cm-gearmsyn, cm-geartsyn

Esempio: Vedi paragrafo esempi

cm-gearrstr
Comando che fa ripartire la funzione di inseguimento per l’asse slave attualmente selezionato, sulla
base degli ultimi parametri utilizzati in precedenza o presettati con il comando di calcolo posizione
slave.

Classe di appartenenza: Funzioni albero elettrico


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Ininfluente
ACC2: Ininfluente
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato
Vedi anche: cm-gearpsl, cm-gearmsyn, readgearmst

Esempio: Vedi esempio del comando cm-geartsyn e paragrafo esempi

106 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 7 ALBERO ELETTRICO CON RAMPA

cm-gearlink
Comando che consente di agganciare al generatore dell’albero elettrico, una routine che sarà
eseguita ogni volta che l’asse termina di adeguare il proprio rapporto di inseguimento. Tale routine
può essere scritta in AWL utilizzando in blocco funzionale #INT.
Richiede:
In ACC1: l’indirizzo del blocco #INT.

Classe di appartenenza: Funzioni albero elettrico


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indirizzo routine di lettura personalizzata
ACC2: ininfluente
Parametri restituiti: ACC1: Indeterminato
ACC2: Inalterato
Vedi anche: cm-gearpsl, readgearmst

Esempio: Si vuole incrementare una variabile ogni qualvolta l’adeguamento del rapporto di albero elettrico è
terminato

SEL @AX_Slave * Seleziona asse slave


L KZ0 * Numero del blocco #INT
C addrint * Restituisce indirizzo della #INT
C cm-gearlink
..
..

#INT 0
INC @DD_Counter
BE

readgearmst

Comando che legge posizione e velocità dell’eventuale master associato all’asse attualmente
selezionato. Restituisce:
In ACC1: la quota del master
In ACC2: la velocità del master.

Classe di appartenenza: Funzioni albero elettrico


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: quota master in impulsi
ACC2: velocità master in unità interne
Vedi anche:

Esempio: Vedi esempio del comando cm-geartsyn e paragrafo esempi

7.2.1 Definizione di una routine utente

Tra le modalità di lettura della quota e della velocità dall’asse master vi è quella attraverso una
routine definita dall’utente, che può essere scritta in AWL utilizzando uno dei blocchi #INT a
disposizione. Questa routine può essere usata per rielaborare la posizione e la velocità di un asse

Doc. MS270103 - Ed. 05 - 9 aprile 2004 107


Axes utilities

oppure per generare tali grandezze a prescindere dall’esistenza di un vero e proprio asse (ad
esempio quota e velocità ricavate da elaborazioni matematiche).

I valori in uscita a tale funzione devono essere scritti in apposite variabili nelle quali l’asse slave si
aspetta di trovare i valori.

Le regole da rispettare per la realizzazione di una routine utente di generazione quota/velocità per
l’asse slave sono di seguito elencate:
• La funzione va scritta in AWL in uno dei blocchi #INT a disposizione. In alternativa la routine
può essere scritta in ASSEMBLER
• La posizione generata deve essere scritta della variabile asse PosMGear. Tale variabile è una
LongWord (4 byte) e necessita sia specificato il numero dell’asse slave al quale appartiene.
• La velocità generata deve essere scritta della variabile asse VelMGear. Tale variabile è una
LongWord (4 byte) e necessita sia specificato il numero dell’asse slave al quale appartiene.
• Se nel blocco #INT vengono usate funzioni che richiedono la selezione dell’asse, bisogna far in
modo di salvare il numero di asse precedentemente selezionato all’inizio del blocco #INT per
poi ripristinarlo in uscita dal blocco.

Nel paragrafo relativo agli esempi è riportato una applicazione

IMPORTANTE
Nell’esempio si presuppone che i due encoder abbiano la stessa risoluzione (encoder omogenei).
Nel caso in cui questo non sia possibile, occorre fare in modo che il passaggio da un encoder
all’altro comporti anche un riadeguamento del rapporto di inseguimento comandato con periodo di
adeguamento nullo.

ATTENZIONE
L’uso della modalità di lettura master personalizzata, comporta che i valori programmati per
numero asse master e numero sistema, vengano ignorati e quindi non è necessario che siano
programmati.

7.3 ESEMPI DI ALBERO ELETTRICO CON RAMPA IN AWL

Esempio 1
Supponiamo di voler legare in albero elettrico due assi (denominati @AX_Master e @AX_Slave)
con rapporto 1:1. Lo slave seguirà la posizione reale (P1) e la velocità reale (V1) dell’asse master.
L’adeguamento al rapporto di inseguimento è di tipo immediato anche perché si aggancia prima
l’asse slave al master e solo dopo si fa partire il Master. Supponiamo inoltre che le risoluzioni dei
due assi siano

1 dmm = 300 impulsi per il master


1 dmm = 200 impulsi per lo slave

; ****************************************************
; * PLC definition *
; ****************************************************
#DEFPLC

108 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 7 ALBERO ELETTRICO CON RAMPA

BE

; ****************************************************
; * First start-up *
; ****************************************************
#RESET
L KZ2
C cm-start

JSR @U_TotalReset
JSR @U_PartialReset
BE

; ****************************************************
; * Start-up *
; ****************************************************
#START
L KZ2
C cm-start
UN @M_ResetDone
IF
JSR @U_TotalReset
ENDIF
JSR @U_PartialReset
BE

; ****************************************************
; * Total reset *
; ****************************************************
#USER @U_TotalReset

* Impostazione delle risoluzioni per l’asse master


* Useremo i dmm per le quote e i m/min per le velocità (vedi capitolo 4)
SEL @AX_Master
L KZ1
L KZ300
C cm-setcquo * 1 dmm = 300 impulsi
L KZ10000 * 1 m/min = 10000 dmm/min
L KZ60000 * 1 min = 60000 msec
C cm-setcspd

* Impostazione delle risoluzioni per l’asse slave


* Useremo i dmm per le quote e i m/min per le velocità (vedi capitolo 4)
SEL @AX_Slave
L KZ1
L KZ200
C cm-setcquo * 1 dmm = 200 impulsi
L KZ10000 * 1 m/min = 10000 dmm/min
L KZ60000 * 1 min = 60000 msec
C cm-setcspd

S RLC
S @M_ResetDone
BE

; ****************************************************
; * Partial reset *
; ****************************************************
#USER @U_PartialReset
* ...
CLR @DW_Step * Resetta contatore di passi

Doc. MS270103 - Ed. 05 - 9 aprile 2004 109


Axes utilities

* ...
BE

; ****************************************************
; * Main program *
; ****************************************************
#MAIN
..
* Ciclo di aggancio dell’albero elettrico
L @DW_Step
CASE
OF 0 * Attesa start
U @M_StartGear
IF
R @M_StartGear * Resetto condizione di start
* 1. Preparo parametri per albero elettrico
* Siccome voglio rapporto 1:1 trovo gli impulsi equivalenti a 1 dmm
* per l’asse master e per l’asse slave
SEL @AX_Master
L KZ1 * 1 dmm
C cm-ui_quo * converte in impulsi
T @DD_DeltaMaster
SEL @AX_Slave
L KZ1 * 1 dmm
C cm-ui_quo * converte in impulsi
T @DD_DeltaSlave
* 2. Scelta dell’asse master
SEL @AX_Slave
L KZ @N_Master * Numero asse master
L KZ0 * Numero sistema: ininfluente
C cm-gearmst
* 3. Scelta della modalità di inseguimento
SEL @AX_Slave
L KZ1 * Lo slave segue P1 e V1 del Master
L KZ0 * Routine utente: ininfluente
C cm-gearrdm
* 4. Aggancio in albero elettrico
SEL @AX_Slave
L @DD_DeltaSlave * Spazio slave di riferimento in impulsi
L @DD_DeltaMaster * Spazio master di riferimento in impulsi
C cm-gearstr

INC @DW_Step * Va al passo successivo


ENDIF
ENDOF
OF 1 * Avvio master
* L’asse master viene avviato e l’asse slave seguirà il master con
* rapporto 1:1 relativamente alla posizione reale P1 e la velocità
* reale V1 dell’asse master
* ..
* ..
ENDOF
ENDCASE
BE

Esempio 2
Supponiamo di avere un asse slave (@AX_Slave) e 2 differenti assi master (@AX_Master1 e
@AX_Master2) L’asse slave dovrà inseguire o la posizione teorica (PDESID) e la velocità teorica
(VDESID) del master1 oppure la posizione reale (P1) e la velocità reale (V1) del master 2 a

110 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 7 ALBERO ELETTRICO CON RAMPA

seconda dello stato di un merker (@M_Gear1_2). Per far questo dovremo utilizzare la costruzione
della quota master e della velocità master personalizzata utilizzando un blocco #INT del PLC (ad
esempio la #INT 1).
Per semplicità supponiamo che le risoluzioni dei due assi master siano uguali e che nella variabile
@DD_DeltaMaster sia contenuto lo spazio master di riferimento mentre nella variabile
@DD_DeltaSlave sia contenuto lo spazio slave di riferimento.
Sempre per semplificare la scrittura omettiamo le procedure di gestione dei blocchi #START e
#RESET.

; ****************************************************
; * Main program *
; ****************************************************
#MAIN
..
* Aggancio dell’albero elettrico
L @DW_Step
CASE
OF 0 * Attesa START
U @M_StartGear
IF
R @M_StartGear
* 1. Scelta dell’asse master
* Siccome la velocità e la posizione master sono ricavati da una
* routine personalizzata i parametri riguardanti l’asse master
* sono ininfluenti
SEL @AX_Slave
L KZ0 * Numero asse: ininfluente
L KZ0 * Numero sistema: ininfluente
C cm-gearmst
* 2. Scelta della modalità di inseguimento custom
SEL @AX_Slave
* Trovo l’ indirizzo del blocco #INT 1
L KZ1 * Numero INT
C addrint * Restituisce indirizzo del #INT 1
L KZ9 * Lo slave segue una posizione e velocità custom
TAK * Mette apposto ACC1 e ACC2 per il comando
C cm-gearrdm

RU @M_Gear1_2 * Scelgo di inseguire il master 1

* 3. Aggancio in albero elettrico


SEL @AX_Slave
L @DD_DeltaSlave * Spazio slave di riferimento in impulsi
L @DD_DeltaMaster * Spazio master di riferimento in impulsi
C cm-gearstr

INC @DW_Step
ENDIF
ENDOF
OF 1 * Eventuale avvio dei due master
* ..
* ..
* ..
ENDOF
ENDCASE

BE

; ***************************************************************
; * Blocco per la generazione della velocità e posizione master *

Doc. MS270103 - Ed. 05 - 9 aprile 2004 111


Axes utilities

; ***************************************************************
#INT 1
* Salvo asse attivo
C r.asse
T @DW_ActiveAxis

*Verifica richiesta scambio delle sorgenti encoder:

* @M_Gear1_2 = 1 -> Usa Master2 e segue P1 e V1


* @M_Gear1_2 = 0 -> Usa Master1 e segue PDESID e VDESID

* ATTENZIONE : Occorre rispettare la relazione


* QuotaMaster1= QuotaMASTER2 + offset
* QuotaMaster2= QuotaMASTER1 + offset

* Passaggio da master1 a master2: Test fronte di salita


U @M_Gear1_2
D @M_eGrear1_2
IF
* Scambio della sorgente encoder da Master1 a Master2
* ricalcola offset
L D” @N_Master1 PDESID” * quota teorica master1
L D” @N_Master2 P1” * quota reale Master2
-F
T @DD_OffsetEncoder2
ENDIF

* Uso master2
U @M_Gear1_2
IF
L D” @N_Master2 P1” * quota reale Master2
L @DD_OffsetEncoder2
+F
T D” @N_Slave PosMGear” * imposta variabile quota custom

L W” @N_Master2 V1” * velocità reale Master2


T D” @N_Slave VelMGear” * imposta variabile velocità custom
ENDIF

* Passaggio da master2 a master1: Test fronte di discesa


UN @M_Gear1_2
D @M_enGrear1_2
IF
* Scambio della sorgente encoder da Master2 a Master1
* ricalcola offset
L D” @N_Master2 P1” * quota reale master2
L D” @N_Master1 PDESID” * quota teorica Master1
-F
T @DD_OffsetEncoder1
ENDIF

* Uso master1
UN @M_Gear1_2
IF
L D” @N_Master1 PDESID” * quota teorica Master1
L @DD_OffsetEncoder1
+F
T D” @N_Slave PosMGear” * imposta variabile quota custom

112 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 7 ALBERO ELETTRICO CON RAMPA

L D” @N_Master1 VDESID” * velocità reale Master1


T D” @N_Slave VelMGear” * imposta variabile velocità custom
ENDIF

* Ripristio asse attivo


L @DW_ActiveAxis
C w.asse

BE

In questo caso nel passaggio da Master1 a Master2 l’adeguamento dello slave dovuto alle differenti velocità dei due
master avviene istantaneamente. Volendo si può complicare l’esempio imponendo un adeguamento, per esempio, a
tempo

Esempio 3
Supponiamo di voler legare in albero elettrico due assi (denominati @AX_Master e @AX_Slave) e
che il rapporto (definito come @DD_DeltaSlave1 su @DD_DeltaMaster) venga raggiunto in rampa
di spazio pari a @DD_PeriodMaster impulsi del master e a fine adeguamento il rapporto cambia in
un nuovo rapporto (definito come di inseguimento cambi tra e @DD_DeltaSlave2 su
@DD_DeltaMaster) che viene raggiunto sempre in rampa di spazio pari a @DD_PeriodMaster
impulsi del master e a fino adeguamento torna con il primo rapporto impostato e così via ottenendo
un albero elettrico che varia continuamente tra il primo rapporto e il secondo rapporto con un
andamento a triangolo (se il master va a velocità costante).
Il cambio del rapporto viene impostato sul bloccco #INT 0 che va in esecuzione sincrono col fine
adeguamento.
Allo start sarà attivo il rapporto basato su @DD_DeltaSlave1; il rapporto attivo è segnalato dal
valore di @DW_Gear1_2 che è 1 quando è attivo il rapporto 1 mentre è 2 quando è attivo il
rapporto 2

; ****************************************************
; * Main program *
; ****************************************************
#MAIN
* ..
* Ciclo di aggancio dell’albero elettrico
U @M_StartGear
IF
R @M_StartGear * Resetto condizione di start
* 1. Scelta dell’asse master
SEL @AX_Slave
L KZ @N_Master * Numero asse master
L KZ0 * Numero sistema: ininfluente
C cm-gearmst
* 2. Scelta della modalità di inseguimento
SEL @AX_Slave
L KZ1 * Lo slave segue P1 e V1 del Master
L KZ0 * Routine utente: ininfluente
C cm-gearrdm
* 4. Aggancio routine sincrona con fine adeguamento
SEL @AX_Slave
L KZ0 * numero INT
C addrint * restituisce indirizzo #INT 0
C cm-gearlink
* 5. Scelgo modalità
LA @DD_AdjustmentPeriod
L @DB_AdjustmentType * 1 = Spazio, 0 = Tempo
C cm-gearmode
* 6. Aggancio in albero elettrico

Doc. MS270103 - Ed. 05 - 9 aprile 2004 113


Axes utilities

SEL @AX_Slave
L @DD_DeltaSlave1 * Spazio slave di riferimento in impulsi
L @DD_DeltaMaster * Spazio master di riferimento in impulsi
C cm-gearstr

* Segnalo che il rapporto di inseguimento attivo e quello riferito a


* @DD_DeltaSlave1
L KZ1
T @DW_Gear1_2
ENDIF
* ..
BE

; ****************************************************
; * Blocco sincrono con fine adeguamento *
; ****************************************************
#INT 0
* Salvo asse attivo
C r.asse
T @DW_ActiveAxis

L @DW_Gear1_2
CASE
OF 1
* Era in esecuzione gear basato su @DD_DeltaSlave1
* Deve diventare attivo quello basato su @DD_DeltaSlave2

* aggancio Gear con rapporto 2 e scelgo modalità


SEL @AX_Slave
LA @DD_AdjustmentPeriod
L @DB_AdjustmentType * 1 = Spazio, 0 = Tempo
C cm-gearmode
L @DD_DeltaSlave2 * Spazio slave di riferimento in impulsi
L @DD_DeltaMaster * Spazio master di riferimento in impulsi
C cm-gearstr

L KZ2
T @DW_Gear1_2 * Segnalo gear attivo basato su @DD_DeltaSlave2
ENDOF

OF 2
* Era in esecuzione gear basato su @DD_DeltaSlave2
* Deve diventare attivo quello basato su @DD_DeltaSlave1

* aggancio Gear con rapporto1 e scelgo modalità


SEL @AX_Slave
LA @DD_AdjustmentPeriod
L @DB_AdjustmentType * 1 = Spazio, 0 = Tempo
C cm-gearmode
L @DD_DeltaSlave1 * Spazio slave di riferimento in impulsi
L @DD_DeltaMaster * Spazio master di riferimento in impulsi
C cm-gearstr

L KZ1
T @DW_Gear1_2 * Segnalo gear attivo basato su @DD_DeltaSlave1
ENDOF

* Ripristio asse attivo


L @DW_ActiveAxis
C w.asse
BE

114 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 7 ALBERO ELETTRICO CON RAMPA

In questo caso l’asse master può già essere in movimento quando si abilita l’albero elettrico dato
che l’adeguamento al rapporto di inseguimento avviene con rampa.

7.4 LIBRERIA COMANDI FORTH

CM-GEARMST
Per l’asse slaveaxis (asse slave), con questo comando si può configurare:
- (master) numero dell’asse master o del dispositivo logico (locale o CANopen).
- (system) numero di sistema remoto nel caso in cui il master sia letto tramite la rete HDLC,
oppure il numero di canale all’interno della scheda che rende disponibile il dispositivo logico
(ad esempio nel caso di canale encoder da scheda MINENC). Nel caso in cui il master sia un
asse locale oppure nel caso di dispositivo CANopen o comunque non multi-canale, system non
viene interpretato. (vedi anche comando CM-GEARRDM).

Sintassi: master system slaveaxis ---


Argomenti: master Numero dell’asse usato come master dell’albero elettrico o del dispositivo locale o
CANopen
system Numero del sistema su cui si trova l’asse master (nel caso di rete di sistemi) o canale
del dispositivo (nel caso di dispositivo multi-canale)
slaveaxis numero dell’asse di cui si vogliono impostare i parametri

CM-GEARRDM
Per l’asse slaveaxis (asse slave), con questo comando si può configurare:
- La modalità di lettura della quota dal master assegnato: (mode) secondo i valori della tabella
7.1 (vedi relativo comando in Awl).

NOTA
Nel caso venga programmata una modalità di lettura non supportata dal sistema, la quota e la velocità restituite
sono poste a 0.

- L’indirizzo dell’eventuale routine utente per la lettura personalizzata della quota e della velocità
di riferimento per l’adeguamento del rapporto in spazio (addr). Nel caso non si usi alcuna
routine addr deve essere 0.

Sintassi: mode addr slaveaxis ---


Argomenti: mode modalità di lettura master (vedi tabella)
addr indirizzo routine utente per lettura master (0 se nulla)
slaveaxis numero dell’asse di cui si vogliono impostare i parametri

Doc. MS270103 - Ed. 05 - 9 aprile 2004 115


Axes utilities

CM-GEARMODE
Per l’asse slaveaxis (asse slave), con questo comando si possono impostare i parametri di
adeguamento:
In particolare:

Sintassi: Period Jointmode Recovermode slaveaxis ---


Argomenti: Period tempo di adeguamento espresso in tempi di campionamento oppure spazio master
Jointmode abilitazione generazione della rampa di adeguamento di tipo raccordato (0 / 1)
Recovermode modo di adeguamento rapporto di inseguimento:
slaveaxis numero dell’asse di cui si vogliono impostare i parametri

Recovermode Descrizione
0 Adeguamento a tempo
1 Adeguamento in spazio

I parametri sono subito resi attivi dal comando, quindi, onde evitare discontinuità di pilotaggio
dell’asse, occorre verificare che l’adeguamento non sia attivo. Il caricamento dei parametri non
abilita la gestione dell’adeguamento del rapporto di inseguimento. Se il periodo di adeguamento è
nullo, l’adeguamento del rapporto di inseguimento sarà istantaneo.

CM-GEARTRG
Comando che programma l’utilizzo dello start adeguamento su raggiungimento di una quota di
trigger da parte del master per l’asse specificato. Il comando necessita sia indicata la quota master
assoluta da usare per il confronto ed il tipo di confronto da operare tra quota master e posizione di
trigger (trigger su quota master maggiore o minore della quota trigger). La funzione di trigger è
attiva una sola volta ad ogni adeguamento del rapporto di inseguimento. I parametri sono subito resi
attivi dal comando, quindi, onde evitare discontinuità di pilotaggio dell’asse, occorre verificare che
la funzione non sia già in attesa di trigger.

Sintassi: Trigger Flag slaveaxis---


Argomenti: Trigger quota master di start adeguamento
Flag flag di abilitazione della funzione di trigger (vedi tabella)
slaveaxis numero dell’asse di cui si vogliono impostare i parametri

Flag Descrizione
1 Lo start dell’adeguamento del rapporto avviene quando la quota master diventa
maggiore della quota di trigger
2 Lo start dell’adeguamento del rapporto avviene quando la quota master diventa
minore della quota di trigger
0 lo start su trigger è disabilitato

CM-GEARSTR
Comando che attiva l’adeguamento del rapporto di inseguimento per l’asse specificato. Il comando
necessita che siano indicati lo spazio master di riferimento in impulsi e l’equivalente spazio slave
per il calcolo del rapporto di inseguimento finale. Lo start adeguamento è istantaneo tranne se è
stato programmato il trigger di quota master.

Sintassi: sslave smaster slaveaxis ---

116 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 7 ALBERO ELETTRICO CON RAMPA

Argomenti: sslave spazio slave di riferimento


smaster spazio master di riferimento
na numero dell’asse

CM-GEARRES

Comando che resetta le variabili di generazione dell’adeguamento del rapporto di inseguimento,


comportando di conseguenza il congelamento dell’ultimo rapporto di inseguimento generato in caso
che l’adeguamento non fosse già terminato. Il comando necessita che sia specificato il numero
dell’asse.

Sintassi: slaveaxis ---


Argomenti: slaveaxis numero dell’asse

CM-?GEAR

Comando che verifica se l’asse è in fase di adeguamento del rapporto di inseguimento, se cioè non è
ancora terminato l’eventuale adeguamento del rapporto tra master e slave oppure se, pur essendo
l’asse slave a rapporto costante, è in attesa del raggiungimento della quota di trigger da parte del
master. Restituisce un flag di vero o falso.

Sintassi: slaveaxis --- tf |ff


Argomenti: slaveaxis numero dell’asse
tf | ff flag di vero o falso; 1=rapporto di inseguimento in adeguamento

CM-GEARSTS
Comando che verifica per l’asse attualmente selezionato, lo stato dell’adeguamento del rapporto di
inseguimento. Restituisce sullo stack l’entità del periodo master mancante al termine
dell’adeguamento (tempo o spazio) e lo stato operativo della funzione di adeguamento.

Sintassi: slaveaxis --- state parameter


Argomenti: slaveaxis numero dell’asse
state stato operativo funzione albero elettrico (vedi tabella)
parameter entità del periodo master mancante al termine dell’adeguamento

State Descrizione
0 Funzione non attiva
1 Attesa trigger su superamento quota master
2 Generazione rampa di adeguamento
3 Inseguimento a rapporto costante

CM-GEARPSL

Comando che restituisce la posizione dello slave selezionato, relativa alla quota master specificata
ed ai parametri generati durante l’ultimo comando di inseguimento. Il comando risulta utile per far
ripartire lo slave in fase al master, se il precedente inseguimento si era interrotto per cause
indipendenti dal ciclo di movimento (ad esempio un’emergenza).

Doc. MS270103 - Ed. 05 - 9 aprile 2004 117


Axes utilities

Nel caso di adeguamento a spazio, la funzione è in grado di tener conto anche dell’eventuale
gestione del trigger di adeguamento: in questo caso però è possibile calcolare la posizione solo per
quote master che evolvono nel verso del confronto, ciò significa che se il trigger era programmato
per quota master maggiore rispetto alla posizione di trigger, la funzione calcola la posizione dello
slave solo se la quota master specificata è maggiore rispetto all’ultima quota master usata durante
l’inseguimento (quota master dell’istante di stop); negli altri casi restituisce la quota attuale dello
slave.
Il comando necessita siano specificate la posizione di riferimento del master ed un flag che
specifica se il calcolo deve presettare anche le variabili interne o se le deve preservare per ulteriori
ricalcoli; restituisce nello stack la posizione dello slave calcolata. Se i parametri interni non
vengono salvati, i nuovi calcoli della posizione dello slave possono essere fatti solo per posizioni
master maggiori (o minori a seconda del verso di confronto) rispetto all’ultimo valore usato per il
calcolo. Prima di richiamare il calcolo della posizione slave occorre essere certi che lo slave
non sia ancora in modalità inseguimento.

Sintassi: MasterQuota Flag slaveaxis--- SlaveQuota


Argomenti: MasterQuota quota di riferimento dell’asse master in impulsi
Flag Flag di salvataggio parametri (vedi tabella)
slaveaxis numero dell’asse
SlaveQuota quota slave in impulsi

Flag Descrizione
0 Presetta parametri per restart inseguimento
1 Salva parametri interni per successivi ricalcoli

CM-GEARMSYN
Comando che consente di sincronizzare la quota master di riferimento per la generazione del profilo
di albero elettrico con una nuova posizione dell’asse master. Il comando deve essere usato ad
esempio, prima di lanciare il restart dell’albero elettrico dopo aver modificato la quota dell’asse
master, senza però voler alterare la posizione relativa dello slave (funzione di rifasamento tra
master e slave).
Il comando necessita che sia specificata sullo stack la nuova posizione di riferimento del master;
restituisce la variazione di posizione tra la quota originale e la nuova quota imposta al master dal
comando (delta quota master). Tale valore è utile per sincronizzare in seguito anche l’eventuale
quota di trigger di attivazione dell’adeguamento del rapporto di inseguimento.

Sintassi: MasterQuota slaveaxis --- DeltaMaster


Argomenti: MasterQuota quota di riferimento dell’asse master in impulsi
slaveaxis numero dell’asse
DeltaMaster variazione imposta alla quota di riferimento dell’asse master in impulsi

CM-GEARTSYN
Comando che consente di riallineare la posizione del trigger in base alla variazione di posizione
operata dal comando di sincronizzazione della quota master. Il comando deve essere usato ad
esempio, prima di lanciare il restart dell’albero elettrico dopo aver modificato la quota dell’asse
master, senza però voler perdere la sincronizzazione con l’azione di adeguamento precedentemente
programmata (necessaria nei casi di gestione assi periodici).
118 Doc. MS270103 - Ed.05 - 9 aprile 2004
capitolo 7 ALBERO ELETTRICO CON RAMPA

Il comando necessita che sia indicato sullo stack, il valore della variazione di posizione di
riferimento del master (delta quota master), derivante dal comando di sincronizzazione della quota
master.

Sintassi: DeltaMaster slaveaxis ---


Argomenti: DeltaMaster variazione imposta alla quota di riferimento dell’asse master in impulsi
slaveaxis numero dell’asse

CM-GEARMPH

Comando che consente di gestire la fasatura manuale dell’asse in albero elettrico rispetto al proprio
master, lasciando inalterata la posizione fisica di quest’ultimo. La funzione attivata dal comando,
consente allo slave di inseguire un profilo di velocità e posizione che simula il movimento dell’asse
master alla velocità specificata, permettendo quindi di gestire correttamente tutte le eventuali azioni
legate alla quota di tale master (trigger ed eventuali recuperi di fase). Il profilo di velocità simulato
dal comando, evolve in modo trapezoidale, utilizzando come pendenza delle rampe quella dell’asse
slave convertita in unità interne master sulla base dell’ultimo rapporto di inseguimento impostato. Il
movimento di fasatura termina impartendo il comando con velocità nulla (0). Il comando necessita
che sia specificata sullo stack la velocità di movimento espressa in unità interne dell’asse master.

Il comando può essere impartito solo se l’asse si trova già in albero elettrico, in caso contrario
viene ignorato.

Sintassi: VelocitaMaster slaveaxis ---


Argomenti: VelocitaMaster variazione imposta alla quota di riferimento dell’asse master in impulsi
slaveaxis numero dell’asse

CM-?GEARMPH
Comando che verifica se sull’asse attualmente selezionato è attiva la funzione di fasatura manuale.
Restituisce un flag di vero o falso.

Sintassi: slaveaxis --- tf |ff


Argomenti: slaveaxis numero dell’asse
tf | ff flag di vero o falso; 1=fasatura manuale in corso

CM-GEARRSTR

Comando che fa ripartire la funzione di inseguimento per l’asse slave attualmente selezionato, sulla
base degli ultimi parametri utilizzati in precedenza o presettati con il comando di calcolo posizione
slave.

Sintassi: slaveaxis ---


Argomenti: slaveaxis numero dell’asse slave

Doc. MS270103 - Ed. 05 - 9 aprile 2004 119


Axes utilities

CM-GEARLINK
Comando che consente di agganciare al generatore dell’albero elettrico, una routine che sarà
eseguita ogni volta che l’asse termina di adeguare il proprio rapporto di inseguimento. Tale routine
può essere scritta in Assembler oppure in AWL utilizzando in blocco funzionale #INT; l’indirizzo
di tale routine va posto sullo stack assieme al numero dell’asse prima di richiamare il comando.

Sintassi: addr slaveaxis ---


Argomenti: addr indirizzo routine utente
slaveaxis numero dell’asse

READGEARMST

Comando che legge posizione e velocità dell’eventuale master associato all’asse specificato,
restituendole sullo stack.

Sintassi: slaveaxis --- Quota Speed


Argomenti: slaveaxis numero dell’asse
Quota quota master in impulsi
Speed velocità master in unità interne

7.5 PROCEDURA DI MESSA IN SERVIZIO

Nel seguente paragrafo vengono schematizzate le procedure da seguire per la corretta messa in
servizio e utilizzo delle funzioni della libreria, raggruppate in tre differenti livelli:
• Livello base: operazioni minime per simulare le funzioni standard di albero elettrico
• Livello intermedio: integrazione delle funzioni di gestione adeguamento del rapporto di
inseguimento
• Livello avanzato: utilizzo della libreria per la gestione di macchine periodiche

7.5.1 Livello base

Le operazioni minime che devono essere fatte per consentire l’utilizzo base della libreria albero
elettrico sono:
1 Programmazione del tipo di master associato all’asse, utilizzando il comando cm-gearmst.
Tale comando deve essere richiamato, direttamente o tramite una USER, nei blocchi #RESET e
#START.
2 Selezione del modo di lettura dei valori di quota e velocità dal master, utilizzando il comando
cm-gearrdm. Anche questo comando deve essere richiamato, direttamente o tramite una
USER, nei blocchi #RESET e #START.
3 Attivazione della funzione albero elettrico con il comando cm-gearstr richiamato
all’interno del programma AWL agganciato direttamente o tramite delle USER al blocco
#MAIN. Si fa presente che l’attivazione può essere eventualmente fatta anche da #SUBTIME o
da #INT, avendo prima cura di salvare il numero dell’asse selezionato dal blocco principale
#MAIN.

120 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 7 ALBERO ELETTRICO CON RAMPA

4 Utili, ma non indispensabili, sono i comandi che permettono di leggere lo stato operativo della
funzione albero elettrico cm-gearsts e cm-?gear ed il comando che consente di risalire
alla quota e velocità del master readgearmst.
In questa modalità base, viene escluso di default l’adeguamento in rampa del rapporto di
inseguimento.

7.5.2 Livello intermedio

Se si desidera utilizzare le funzioni di adeguamento in rampa del rapporto di inseguimento e/o


l’attivazione dell’adeguamento su superamento di una quota di trigger, ai punti elencati per il
precedente caso, occorre aggiungere:
1 Programmazione del periodo di adeguamento e della grandezza fisica che rappresenta il
periodo (spazio o tempo), utilizzando il comando cm-gearmode. Il comando può essere
indifferentemente richiamato un’unica volta dai blocchi #START o #RESET, o di seguito ai
comandi di configurazione della modalità di lettura quota master, oppure dal nucleo del
programma agganciato al #MAIN, ad una #SUBTIME o una #INT.
2 Programmazione della quota di trigger con il comando cm-geartrg. Il comando deve essere
richiamato dal programma AWL, prima che sia impartito il comando di start adeguamento
dell’albero elettrico (cm-gearstr).

7.5.3 Livello avanzato

La gestione di macchine periodiche fatta con la libreria albero elettrico (in eventuale combinazione
con la libreria di recupero albero elettrico), necessita l’utilizzo di ulteriori comandi in grado di
soddisfare le problematiche del tipo:
• Sincronizzare alcune azioni sull’evento “fine adeguamento”, in modo da preparare ad esempio
il successivo adeguamento del rapporto di inseguimento ad una specifica quota master. Per far
ciò si deve sfruttare la possibilità di agganciare un blocco #INT eseguito sincrono alla gestione
asse, tramite il comando cm-gearlink.
• Ripartire in fase con la quota master dopo arresti dello slave programmati o d’emergenza.
Questo è possibile sfruttando i comando cm-gearpsl e cm-gearrstr.
• Risincronizzare la quota del master con la posizione corrente dello slave. L’operazione può
rendersi necessaria quando la posizione fisica del master viene modificata (fasatura del master),
ma si desidera mantenere la posizione fisica dello slave (fase dello slave) e soprattutto si deve
garantire la fase tra i due assi alla ripartenza dell’albero elettrico. Il problema può essere risolto
con i comandi cm-gearmsyn e cm-geartsyn.
• Rifasare la posizione fisica dello slave rispetto a quella del master, senza alterare la posizione di
quest’ultimo e soprattutto garantendo nel contempo l’attivazione o la corretta evoluzione degli
eventuali comandi di trigger o adeguamento già impartiti allo slave. A tal scopo possono essere
utilizzati i comandi di gestione della fasatura manuale dello slave cm-gearmph e cm-
?gearmph.

7.6 TEST LIBRERIA

La libreria prevede la possibilità di compilare nel sistema un programma di test di ausilio alla
taratura delle funzioni di gestione dell’albero elettrico.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 121


Axes utilities

Il test viene avviato con la parola TST_GEAR digitata da interprete Forth.

La pagina può essere suddivisa in quattro sezioni:


• Configurazione della modalità operativa
• Impostazione dei parametri di controllo
• Visualizzazione dello stato operativo e delle variabili di controllo
• Tasti funzione

Parametri di controllo
Nella pagina è possibile selezionare l’asse su cui è applicata la funzione albero elettrico e
modificare singolarmente i parametri di definizione del rapporto di inseguimento e di controllo
dell’algoritmo di adeguamento.
I parametri impostabili in questa sezione, sono quelli relativi al comando di caratterizzazione della
modalità di adeguamento (cm-gearmode), i termini che definiscono il rapporto di inseguimento e
l’eventuale adeguamento su superamento della quota di trigger. I valori che definiscono il rapporto
di inseguimento e lo start adeguamento su superamento della quota di trigger sono resi attivi
mediante appositi tasti funzione.

Stato operativo
In questa sezione vengono visualizzati lo stato operativo dell’asse e i valori di controllo della
funzione di generazione e adeguamento del rapporto di inseguimento.
Nell’ordine rispettivamente troviamo: modo operativo del programma assi, lo stato operativo della
funzione di inseguimento e adeguamento, le immagini dei vettori di gestione funzione ausiliaria
(es.: per recupero albero elettrico) e di gestione azione su fine adeguamento, la posizione dell’asse e
la sua quota fisica, la quota del master ed i valori istantanei di generazione dell’albero elettrico e
della rampa di adeguamento del rapporto di inseguimento.
Gli ultimi tre valori raggruppati nella sezione “Master position source” mostrano la configurazione
corrente usata dall’asse per leggere la quota e la velocità del master ad esso associato.
122 Doc. MS270103 - Ed.05 - 9 aprile 2004
capitolo 7 ALBERO ELETTRICO CON RAMPA

Tasti funzione
I tasti funzione attivi in questa pagina sono qui di seguito elencati e commentati.

F1 Consente di richiamare ed utilizzare le funzioni di taratura asse disponibili dal programma T_MOT

F2 Consente l’accesso diretto alla pagina di impostazione parametri di controllo asse del programma T_MOT,
rendendo accessibili tutte le funzionalità previste in tale pagina. Se il programma T_MOT non è stato mai
richiamato, la prima volta il tasto funzione accede al menù completo di T_MOT

F3 Non attivo

F4 Consente di cambiare il significato del periodo di adeguamento utilizzato (tempo o spazio). Per questioni di
sicurezza, il tasto funzione è attivo solo quando non è in corso un’adeguamento del rapporto di
inseguimento.

F5 Comanda un reset della funzione di adeguamento (comando cm-gearres). Attenzione: assicurarsi di


richiamare il comando solo quando non è in corso un’adeguamento del rapporto di inseguimento.

F6 Abilita l’acquisizione da T_MOT nella modalità “modo utente”, presettando il vettore di acquisizione con una
routine che consente la registrazione del profilo di velocità ausiliario, generato dall’eventuale funzione
agganciata all’albero elettrico (ad esempio il recupero).

F7 Abilita l’acquisizione da T_MOT nella modalità “modo utente”, presettando il vettore di acquisizione con una
routine che consente la registrazione della posizione teorica dell’asse (PDESID).

F8 Forza il caricamento dei nuovi valori che definiscono il rapporto di inseguimento ed avvia la generazione della
rampa di adeguamento (comando cm-gearstr).

F9 Forza il caricamento dei nuovi valori che definiscono la quota di trigger e la modalità di superamento (comando
cm-geartrg). Perché abbia effetto lo start adeguamento su trigger, questo comando deve essere ativvato
prima di quello di start adeguamento (F8).

ESC Esce dalla pagina di test e ritorna all’interprete Forth

Doc. MS270103 - Ed. 05 - 9 aprile 2004 123


Axes utilities

capitolo 8 ALBERO ELETTRICO CON RECUPERO

La libreria di gestione dell’albero elettrico con recupero rappresenta un insieme di funzioni che
integrano il funzionamento del recupero di posizione nella libreria base dell’albero elettrico. Il
recupero di posizione è in sostanza un profilo di movimento addizionale che viene sommato al
profilo di posizione e velocità generati dalla funzione dell’albero elettrico.

ATTENZIONE
La libreria può essere attivata solo sugli assi su cui è attiva la funzione di albero elettrico e può
essere installata nei sistemi solo se è presente anche la libreria evoluta dell’albero elettrico.

Il profilo di recupero può essere generato sia a tempo che in spazio; per semplicità definiremo la
grandezza che esprime il tempo o lo spazio di evoluzione come Periodo di recupero. Tale profilo
può essere sia trapezoidale che triangolare, a seconda che si voglia o meno controllare
l’accelerazione supplementare massima e l’incremento di velocità applicate all’asse.
In figura 1 viene esemplificato il caso di applicazione del recupero ad un asse in albero elettrico.

VDESID
master

Velocità asse master

periodo

VDESID
master per
rapporto di Velocità slave generata
inseguimento
dall’albero elettrico

periodo

Vlimite

Spazio Spazio Profili di recupero


recupero recupero

periodo

VDESID
slave
Velocità slave risultante

Periodo di Periodo di periodo


recupero recupero
Figura 1

124 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 8 ALBERO ELETTRICO CON RECUPERO

Occorre tenere presente che la quota usata come periodo master deve essere intesa ‘signed’: ciò
significa che il profilo di recupero evolve solo se la velocità del master è di segno concorde con
quello del periodo di recupero programmato, e che, una volta iniziato il recupero, se il master
inverte la propria direzione, il profilo involve fino ad annullare in contributo generato dall’ultimo
start recupero; rimane comunque garantito che, una volta che il master ritorna alla direzione
originale, la generazione del profilo riprende al superamento dell’originaria quota di start recupero
ed evolve rispettando i precedenti parametri.

E’ possibile abilitare la generazione del profilo di recupero con rampa raccordata con legge sen2; in
questo modo si ottiene un movimento di recupero più fluido, che rispetta l’accelerazione media del
relativo movimento fatto in lineare, ma che comporta una accelerazione di picco nel punto medio
della rampa, superiore del 20% rispetto al valore medio.

Come già detto, il profilo addizionale di compensazione può essere sia trapezoidale che triangolare,
a seconda che si voglia o meno controllare l’incremento di velocità e/o l’accelerazione massima
applicate all’asse. In base ai parametri impostati, la logica di risoluzione del profilo di recupero
propone quattro diverse combinazioni:

Caso 1: recupero Caso 2: caso 1 con Caso 3: caso 2 con Caso 4: recupero
triangolare. velocità limitata. accelerazione trapezoidale con
limitata. accelerazione
imposta.
V V V V
e e e e
l l l l
o o o o
c c c c
i i i i
t t
t t
à à
à à

Periodo Periodo Periodo Periodo

NOTA
L’area di ogni shape rappresenta l’entità di spazio slave da recuperare.

Caso 1: rappresenta il caso di default, usato quando non è abilitato il controllo su velocità ed
accelerazione limite per l’asse slave oppure come versione semplificata dei casi 2 e 3, fintanto che
la velocità e/o l’accelerazione ricavate dalla soluzione triangolare sono inferiori rispetto ai limiti
programmati.

Caso 2: è la soluzione adottata imponendo la sola velocità limite. Il caso estremo è rappresentato
da un rettangolo di cui viene rispettata la velocità limite imposta.

Caso 3: è la sofisticazione del caso 2, in cui il caso limite risulta essere il trapezio con pendenza
dei lati pari all’accelerazione limite imposta.

Caso 4: è la soluzione adottata quando nei casi precedenti viene raggiunta l’accelerazione limite
prima di saturare la velocità limite. In questo caso il recupero è fatto sempre a trapezio, fino al
raggiungimento del caso limite rappresentato dal triangolo isoscele con pendenza dei lati pari
all’accelerazione limite e la velocità di picco pari a quella limite.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 125


Axes utilities

IMPORTANTE
L’abilitazione all’uso dei parametri di limitazione di velocità e/o accelerazione nel profilo di
recupero comporta che l’entità di recupero comandata può essere limitata ad un valore inferiore
rispetto a quello imposto.

ATTENZIONE
Nel caso in cui l’incremento di velocità derivante dall’azione del recupero è tale da far superare al
motore la sua velocità massima (vedi variabile VEMAX in [1]) l’asse va in errore (vedi modo=12 in
[1]). Analogamente l’asse va in errore se le rampe di accelerazione e decelerazione imposte non
sono raggiungibili.

La funzione di albero elettrico con recupero non definisce un proprio asse master in quanto usa
l’asse master definito dal comando cm-gearmst della libreria ”albero elettrico con rampa”
descritta al capitolo 7.
Lo start della generazione del profilo addizionale di recupero può essere triggerato sul superamento
di una soglia pre-impostata definita come quota dell’asse master e verso del confronto: in questo
modo è possibile sincronizzare il recupero dell’albero elettrico dell’asse con la ciclica della
macchina. A tal scopo risulta molto utile anche l’ulteriore possibilità prevista dalla libreria che
consiste nella possibilità agganciare una routine scritta dall’utente finale in AWL utilizzando i
blocchi #INT del PLC, che va in esecuzione sincrona con la fine della generazione del profilo.
Combinando le due cose è quindi possibile definire ed eseguire delle funzioni che al termine di un
recupero, calcolano ed avviano la generazione del profilo successivo.

Un esempio di applicazione può essere quello di una macchina di stampa, in cui si vuole eseguire la
stampa su un nastro in movimento con un cilindro porta cliché. Il passo di stampa ha lunghezza P, il
cilindro ha lo sviluppo pari a 2 volte P, e il cliché ha lunghezza P/2. Il sistema è composto da:
un asse master che muove il nastro lungo la direzione orizzontale del nastro con velocità costante;
un secondo asse che esegue la movimentazione del cilindro.

Per il corretto funzionamento della macchina in esempio, è fondamentale che il rullo di stampa
parta da fermo e giunga sincrono con il nastro al momento di contatto del cliché sul nastro stesso.
Per far questo occorre tenere presente che lo spazio percorso dallo slave durante la rampa (in
spazio) di adeguamento è la metà dello spazio che avrebbe compiuto, a parità di avanzamento
del master, in condizione di rapporto di inseguimento a regime: è quindi sufficiente conoscere
le posizioni dei due assi rispetto al punto di inizio stampa per calcolare correttamente la quota di
trigger per l’inizio adeguamento del rapporto di inseguimento.

VDESID slave
pari a VDESID
master per
rapporto di
inseguimento
spazio
slave

Periodo master Spazio master

126 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 8 ALBERO ELETTRICO CON RECUPERO

delta_slave
rapporto_inseguimento =
delta_master
periodo_master
spazio_slave = × rapporto _ inseguimento
2

Una volta avviato il ciclo di stampa, questo può essere schematizzato nelle 5 fasi di lavoro riportate
qui di seguito:
1. inizio della fase di stampa; la velocità dello slave nel punto di contatto è uguale a quella del
master;
2. una situazione intermedia di stampa; la velocità dello slave nel punto di contatto è uguale a
quella del master;
3. fine fase di stampa; la velocità dello slave nel punto di contatto è uguale a quella del master;
4. fase di recupero della posizione dello slave; la velocità in generale è diversa rispetto a quella del
master;
5. inizio di una nuova stampa; la velocità dello slave nel punto di contatto è uguale a quella del
master;

La fase 4 è quella in cui occorre applicare il recupero all’albero elettrico: lo spazio da recuperare in
modo da garantire che la stampa successiva sia sincronizzata correttamente è pari a P (3/2 P meno
lo spazio fatto dall’albero elettrico nel contempo che è pari a 1/2 P); inoltre, per garantire il
sincronismo, tale recupero deve essere fatto in spazio, con periodo di recupero pari a P/2 e lo start
del recupero deve essere triggerato sul superamento della quota P/2 da parte dell’asse master. In tal
senso lo start recupero può essere dato anche durante le fasi 2 e 3, avendo prima avuto cura di
programmare opportunamente la quota di trigger per lo start recupero.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 127


Axes utilities

Vslave

Movimento slave
FASE 1

Movimento master
Nastro

Periodo
P
Vslave

FASE 2

Periodo
Vslave

FASE 3

Periodo

Vslave

FASE 4
P

P/2 P/2

Periodo

Vslave

FASE 5

P/2 P/2 Periodo

8.1 INSTALLAZIONE DELLA LIBRERIA

Per usare la libreria di albero elettrico con recupero si deve innanzitutto installarla nella directory
delle librerie. Per fare questo è necessario usare il programma INSTALL presente nella libreria e
quindi seguire le indicazioni.
Dopo questa operazione nella directory delle librerie CMZ\LIB ci sarà una sottodirectory per la
libreria in oggetto.

Ora quando si userà il programma MAKEPRJ per iniziare un nuovo lavoro ci sarà una nuova
sezione ‘ASSI’ con la seguente selezione.
128 Doc. MS270103 - Ed.05 - 9 aprile 2004
capitolo 8 ALBERO ELETTRICO CON RECUPERO

ASSI
..
[ ] Funzione recupero per albero elettrico
[ ] Funzione di test per recupero albero elettrico
..

ATTENZIONE
Necessita che venga selezionata anche la libreria “gestione albero elettrico con rampa “

Funzione recupero per albero elettrico È il nucleo principale, se si usa il software Albero
elettrico con recupero questo pacchetto deve
essere sempre selezionato assieme alla Gestione
albero elettrico con rampa.

Funzione di test per recupero albero Contiene le pagine di test richiamabili a terminale,
elettrico che agevolano la messa in servizio della libreria.

8.2 LIBRERIA COMANDI AWL

Verranno ora elencati i comandi AWL per la gestione della libreria di albero elettrico con recupero.
Per la quasi totalità dei comandi viene riportato un esempio di utilizzo che però ha lo solo scopo di
indicare il modo in cui i dati di ingresso vengono passati al comando, mentre, per una migliore
comprensione , soprattutto inerente alla correlazione tra i vari comandi, si rimanda agli esempi del
paragrafo 8.3.

cm-grtmode
Comando che carica i parametri da usare per la generazione del profilo di recupero addizionale a
quello generato dalla funzione di albero elettrico attiva sull’asse attualmente selezionato.
In particolare:
In ACC2 deve essere caricato l’indirizzo di una tabella di LongWord che contiene i valori dei
parametri di adeguamento. La tabella deve essere così composta:

Cella Offset Descrizione


0 0 Velocità assoluta limite positiva slave
1 4 Velocità assoluta limite negativa slave
2 8 Velocità asse master di riferimento (solo per recupero in spazio)
3 12 Accelerazione limite per la compensazione espressa in unità interne
4 16 Abilitazione raccordo su rampa di compensazione (0 / 1)
5 20 Riservato
Tabella 8.1

In ACC1 deve essere caricato la modalità di recupero secondo la seguente tabella:

Tipo Descrizione
0 Recupero a tempo senza limitazione
1 Recupero in spazio senza limitazione
2 Recupero a tempo con limitazione

Doc. MS270103 - Ed. 05 - 9 aprile 2004 129


Axes utilities

3 Recupero in spazio con limitazione

Classe di appartenenza: Funzioni albero elettrico con recupero


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: modo di recupero
ACC2: indirizzo tabella parametri
Parametri restituiti: ACC1: Indeterminato
ACC2: Inalterato

Esempio: sull’attivazione di un merker viene parametrizzata la funzione di recupero per l’asse 1

* IMPOSTA PARAMETRI PER RECUPERO


U @M_SetRetrieval
IF
R @M_ SetRetrieval
SEL @AX_1
L KZ20000000 * velocità limite positiva asse slave
T @DD_Table0
L KZ0 * velocità limite negativa asse slave
T @DD_Table1
L KZ0 * velocità asse master
T @DD_Table2
L KZ1000000 * accelerazione limite per il recupero
T @DD_Table3
L KZ0 * tipo di rampa di raccordo
T @DD_Table4
L KZ0 * Riservato
T @DD_Table5

LA @DD_Table0 * carica indirizzo iniziale tabella parametri


L KZ0 * tipo di compensazione: a tempo
C cm-grtmode * parametrizza la funzione
ENDIF

cm-grttrg
Comando che programma l’utilizzo dello start recupero su raggiungimento di una quota di trigger
da parte del master per l’asse selezionato. Il comando necessita sia indicata in ACC2 la quota
master assoluta da usare per il confronto ed in ACC1 il tipo di confronto da operare tra quota master
e posizione di trigger (trigger su quota master maggiore o minore della quota trigger). La funzione
di trigger è attiva una sola volta ad ogni start recupero. I parametri sono subito resi attivi dal
comando, quindi, onde evitare discontinuità di pilotaggio dell’asse, occorre verificare che la
funzione non sia già in attesa di trigger.

Classe di appartenenza: Funzioni albero elettrico con recupero


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: tipo di abilitazione gestione trigger:
0 = disabilita trigger
1 = abilita su quota master maggiore del trigger
2 = abilita su quota master minore del trigger
ACC2: Quota master di trigger in impulsi
Parametri restituiti: ACC1: Indeterminato
ACC2: Inalterato

130 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 8 ALBERO ELETTRICO CON RECUPERO

cm-grtres
Comando che resetta le variabili di generazione dell’albero elettrico con recupero sull’asse
attualmente selezionato.

Classe di appartenenza: Funzioni albero elettrico con recupero


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato

cm-grtstr
Comando che attiva l’albero elettrico con recupero per l’asse selezionato, secondo la modalità e con
i parametri programmati. Il comando necessita che siano indicati in ACC2 lo spazio da recuperare
in impulsi slave ed in ACC1 il periodo di recupero master. Lo start recupero è istantaneo tranne
quando viene programmato il trigger di quota master.

Classe di appartenenza: Funzioni albero elettrico con recupero


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: periodo di recupero
ACC2: entità del recupero
Parametri restituiti: ACC1: Indeterminato
ACC2: Indeterminato

cm-?grt
Comando che verifica se sull’asse attualmente selezionato è in corso la generazione del profilo
addizionale dell’albero elettrico con recupero. Restituisce il flag RLC vero o falso.

Classe di appartenenza: Funzioni albero elettrico con recupero


Modalità di chiamata: U C, UN C, O C, ON C
Modifica RLC: SI
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato

cm-grtsts

Comando che verifica per l’asse attualmente selezionato, lo stato della generazione del profilo
addizionale dell’albero elettrico con recupero. Restituisce in ACC1 l’entità del recupero non ancora
compensato ed in ACC2 il periodo mancante a fine recupero.

Classe di appartenenza: Funzioni albero elettrico con recupero

Doc. MS270103 - Ed. 05 - 9 aprile 2004 131


Axes utilities

Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Spazio slave ancora da recuperare: 0=recupero terminato
ACC2: Periodo master mancante a fine recupero

Esempio: si vuole testare lo stato corrente del recupero sull’asse selezionato

SEL @AX_1 * seleziona asse slave


C cm-grtsts * interroga l’asse sullo stato in corso
T @DD_LackingRetrieval * entità del recupero non ancora applicata
TAK
T @DD_LackingPeriod

cm-grtcor

Comando che restituisce in ACC1 l’entità dell’ultimo recupero applicato per l’asse attualmente
selezionato. Il comando può venire utilizzato per verficare che non sia intervenuta la saturazione dei
parametri di limitazione del recupero, con conseguente limitazione dello spazio recuperato, rispetto
a quello comandato.

Classe di appartenenza: Funzioni albero elettrico con recupero


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Entità dell’ultimo recupero comandato
ACC2: Inalterato

cm-grtlink

Comando che consente di agganciare alla funzione di generazione del profilo di recupero, una
routine che sarà eseguita ogni volta che termina il profilo addizionale di recupero. Tale routine può
essere scritta in AWL utilizzando in blocco funzionale #INT, di cui successivamente se ne specifica
l’indirizzo al comando passandolo in ACC1.

Classe di appartenenza: Funzioni albero elettrico con recupero


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indirizzo routine di lettura personalizzata
ACC2: ininfluente
Parametri restituiti: ACC1: Indeterminato
ACC2: Inalterato

Esempio: si vuole agganciare una routine da eseguire sincrona al termine del profilo addizinale di recupero dell’asse
1, in modo tale da riprogrammare lo start recupero ad una nuova quota master. Tale routine è stata scritta in AWL nel
blocco #INT 3.


SEL @AX_1
L KZ3 * numero del blocco #INT programmato
C addrint * restituisce in ACC1 l’indirizzo della #INT 3
C cm-grtlink

132 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 8 ALBERO ELETTRICO CON RECUPERO

* ROUTINE SINCRONA AL TERMINE DELLA GENERAZIONE DEL PROFILO DI RECUPERO


#INT 3
C r.asse * memorizza numero dell’asse
T @DW_ActiveAxes

SEL AX1 * seleziona l’asse


C readgearmst * legge la quota del master dell’albero elettrico
L @DD_PeriodoMaster * genera la nuova quota di trigger a partire
+F * dalla posizione corrente del master
L KZ1 * trigger su superamento positivo
C cm-grttrg * programma il trigger per start recupero
L @DD_Retrieval * prossima entità da recuperare
L @DD_RetrievalPeriod * periodo su cui sviluppare il profilo di recupero
C cm-grtstr * comanda lo start recupero

L @DW_ActiveAxes * ripristina il numero dell’asse


C w.asse
BE

cm-grtcal

Il comando stima e determina i parametri con i quali si intende generare il profilo di recupero per
l’albero elettrico. I parametri usati sono lo spazio, il tempo o lo spazio master di recupero,
l’accelerazione massima applicabile al recupero e le velocità master e slave di recupero. Le
combinazioni ammesse e gestite dal comando sono:

Tipo Calcolo INPUT OUTPUT


0 Spazio positivo Tempo, Velocità Slave, Velocità Limite Spazio massimo compensabile a triangolo rispettando
la velocità limite
1 Spazio positivo Tempo, Velocità Slave, Accelerazione Spazio massimo compensabile a triangolo rispettando
l’accelerazione
2 Spazio positivo Tempo, Velocità Limite, Velocità Slave Spazio massimo compensabile a rettangolo,
rispettando la velocità limite positiva impostata.
3 Spazio positivo Tempo, Accelerazione, Velocità Limite, Spazio compensabile a trapezio, rispettando
Velocità Slave l’accelerazione e la velocità limite positiva impostate.
4 Spazio negativo Tempo, Velocità Slave, Velocità Limite Spazio massimo compensabile a triangolo rispettando
la velocità limite
5 Spazio negativo Tempo, Velocità Slave, Accelerazione Spazio massimo compensabile a triangolo rispettando
l’accelerazione
6 Spazio negativo Tempo, Velocità Limite, Velocità Slave Spazio massimo compensabile a rettangolo,
rispettando la velocità limite negativa impostata.
7 Spazio negativo Tempo, Accelerazione, Velocità Limite, Spazio compensabile a trapezio, rispettando
Velocità Slave l’accelerazione e la velocità limite negativa impostate.
10 Tempo Spazio, Velocità Slave, Velocità Limite Durata del recupero a triangolo rispettando la velocità
limite
11 Tempo Spazio, Velocità Slave, Accelerazione Durata del recupero a triangolo, rispettando
l’accelerazione
12 Tempo Spazio, Velocità Limite, Velocità Slave Durata del recupero a rettangolo, rispettando la
velocità massima impostata.
13 Tempo Spazio, Accelerazione, Velocità Limite, Durata del recupero a trapezio, rispettando
Velocità Slave l’accelerazione e la velocità massime impostate.
20 Accelerazione Spazio, Tempo, Velocità Slave Accelerazione massima risultante dal recupero a
triangolo.
21 Accelerazione Spazio, Tempo, Velocità Limite, Accelerazione massima risultante dal recupero a
Velocità Slave trapezio.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 133


Axes utilities

30 Velocità limite Spazio, Tempo, Velocità Slave Incremento di velocità massimo generato dal recupero
a triangolo.
31 Velocità limite Spazio, Tempo, Accelerazione, Velocità Incremento di velocità massimo generato dal recupero
Slave a trapezio.
40 Spazio positivo Spazio master, Velocità Master, Spazio massimo compensabile a triangolo rispettando
Velocità Limite, Velocità Slave la velocità limite
41 Spazio positivo Spazio master, Accelerazione, Velocità Spazio massimo compensabile a triangolo rispettando
Master, Velocità Slave l’accelerazione
42 Spazio positivo Spazio master, Velocità Limite, Spazio massimo compensabile a rettangolo,
Velocità Master, Velocità Slave rispettando la velocità limite positiva impostata.
43 Spazio positivo Spazio master, Accelerazione, Velocità Spazio compensabile a trapezio, rispettando
Limite, Velocità Master, Velocità Slave l’accelerazione e la velocità limite positiva impostate.
44 Spazio negativo Spazio master, Velocità Master, Spazio massimo compensabile a triangolo rispettando
Velocità Limite, Velocità Slave la velocità limite
45 Spazio negativo Spazio master, Accelerazione, Velocità Spazio massimo compensabile a triangolo rispettando
Master, Velocità Slave l’accelerazione
46 Spazio negativo Spazio master, Velocità Limite, Spazio massimo compensabile a rettangolo,
Velocità Master, Velocità Slave rispettando la velocità limite negativa impostata.
47 Spazio negativo Spazio master, Accelerazione, Velocità Spazio compensabile a trapezio, rispettando
Limite, Velocità Master, Velocità Slave l’accelerazione e la velocità limite negativa impostate.
50 Spazio master Spazio, Velocità Master, Velocità Spazio master minimo per poter garantire il recupero a
Limite, Velocità Slave triangolo rispettando la velocità limite
51 Spazio master Spazio, Accelerazione, Velocità Master, Spazio master minimo per poter garantire il recupero a
Velocità Slave triangolo rispettando l’accelerazione impostata
52 Spazio master Spazio, Velocità Limite, Velocità Spazio master che consente di compensare a
Master, Velocità Slave rettangolo rispettando i parametri limite impostati.
53 Spazio master Spazio, Accelerazione, Velocità Limite, Spazio master esatto che consente di compensare a
Velocità Master trapezio rispettando i parametri limite impostati.
60 Accelerazione Spazio, Spazio master, Velocità Master, Accelerazione minima garantita nel recupero a
Velocità Slave triangolo.
61 Accelerazione Spazio, Spazio master, Velocità Limite, Accelerazione esatta garantita rispettando i parametri
Velocità Master, Velocità Slave limite impostati per la soluzione a trapezio.
70 Velocità limite Spazio, Spazio master, Velocità Master, Incremento di velocità generato dal recupero a
Velocità Limite, Velocità Slave triangolo in base ai parametri impostati.
71 Velocità limite Spazio, Spazio master, Accelerazione, Incremento di velocità generato dal recupero a
Velocità Master, Velocità Slave triangolo in base ai parametri impostati.
72 Velocità limite Spazio, Spazio master, Velocità Master, Incremento di velocità massimo generato dal recupero
Velocità Slave a rettangolo.
73 Velocità limite Spazio, Spazio master, Accelerazione, Incremento di velocità generato dal recupero a
Velocità Master, Velocità Slave trapezio in base ai parametri impostati.
80 Velocità Master Spazio, Spazio master, Velocità Limite, Velocità del master, tale da garantire il recupero a
Velocità Slave triangolo in base alla velocità limite impostata.
81 Velocità Master Spazio, Spazio master, Accelerazione, Velocità del master, tale da garantire il recupero a
Velocità Slave triangolo in base all’accelerazione limite impostata..
82 Velocità Master Spazio, Spazio master, Velocità Limite, Velocità massima del master, per poter garantire il
Velocità Slave recupero a rettangolo.
83 Velocità Master Spazio, Spazio master, Accelerazione, Velocità massima del master, per poter garantire il
Velocità Limite, Velocità Slave recupero a trapezio con i parametri impostati.
Tabella 8.2

I parametri ed il tipo di calcolo vanno posti in una tabella di LongWord, di cui deve essere
specificato l’indirizzo iniziale in ACC1; il comando non altera il funzionamento di eventuali
compensazioni già attive sull’asse. Il valore richiesto viene rilasciato sia in ACC1 che nella relativa
posizione nella tabella di passaggio parametri: in questo modo la tabella può essere
successivamente utilizzata per impostare tali parametri all’asse; l’indirizzo della tabella di ingresso
viene spostato in ACC2 e quindi è ancora disponibile. Per i parametri non necessari deve comunque
essere riservato lo spazio in tabella (vedi tabella 3).

134 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 8 ALBERO ELETTRICO CON RECUPERO

Cella offset Descrizione


0 0 Entità dello shift espresso in impulsi
1 4 - Tempo di compensazione espresso in numero di scansioni oppure
- Spazio master di compensazione espresso in impulsi
2 8 Velocità limite assoluta positiva slave espressa in unità interne
3 12 Velocità limite assoluta negativa slave espressa in unità interne
4 16 Velocità di riferimento asse master (solo per recupero in spazio)
5 20 Accelerazione limite per la compensazione espressa in unità interne
6 24 Abilitazione raccordo su rampa di compensazione (ininfluente)
7 28 Velocità di riferimento asse slave
Tabella 8.3

Classe di appartenenza: Funzioni albero elettrico con recupero


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Tipo di calcolo da effettuare (vedi tabella 2)
ACC2: indirizzo tabella parametri
Parametri restituiti: ACC1: Valore del parametro calcolato
ACC2: Indirizzo tabella parametri

Esempio: sull’attivazione di un merker si vogliono testare i parametri da passare alla funzione di recupero, per
verificare se sono compatibili con la generazione di un profilo di recupero trapezoidale

* TESTA PARAMETRI PER RECUPERO


U @M_CalcRetrieval
IF
R @M_CalcRetrieval

SEL @AX_1
* Preparazione della tabella
L KZ0 * Ininfluente perché è il dato che vogliamo trovare
T @DD_Table0
L KZ40
T @DD_Table1 * Tempo di compensazione in TC
L D” @N_Slave VEMAX” * Legge la velocità massima dello slave
T @DD_Table2 * Velocità massima slave positiva
KZW
T @DD_Table3 * Velocità massima slave negativa
L KZ0
T @DD_Table4 * Velocità che avrà il master nel momento del recupero
L @DD_SlaveAcceleration
T @DD_Table5 * Accelerazione che deve avere lo slave
L KZ0
T @DD_Table6 * Abilitazione raccordo: ininfluente
L @DD_SlaveSpeed
T @DD_Table7 * Velocità base dello Slave al momento del recupero

* Comando
LA @DD_Table0 * Indirizzo tabella
L KZ2 * Calcolo spazio compensabile
C cm-grtcal * per recupero a tempo
T @DD_MaxRetrieval
L KZ300 * recupero richiesto dal ciclo confrontato
<F * con il risultato dei calcoli
= @M_OkRetrieval
ENDIF

Doc. MS270103 - Ed. 05 - 9 aprile 2004 135


Axes utilities

cm-grtpini
Comando che programma la partenza del ciclo di gestione asse periodico, gestendo l’aggancio in
fase rispetto alle posizioni master e slave di inizio periodo specificate ed ai parametri di
caratterizzazione del ciclo periodico di funzionamento.

Il comando si occupa di:


• Calcolare la quota di trigger di inizio procedura di aggancio
• Programmare il rapporto di inseguimento finale
• Comandare lo start della funzione albero elettrico
• Comandare lo start del recupero albero elettrico in base alla differenza tra spazio percorso in
adeguamento del rapporto di inseguimento e spazio mancante alla quota di inizio fase asse
slave

In ACC1 deve essere caricato l’indirizzo di una tabella di LongWord che contiene i valori dei
parametri di gestione della fase di aggancio. La tabella deve essere così composta:

Cella Offset Descrizione


0 0 Periodo complessivo master
1 4 Periodo complessivo slave
2 8 Periodo master di fase
3 12 Periodo slave di fase
4 16 Quota master di inizio fase
5 20 Quota slave di inizio fase
6 24 Periodo master di adeguamento
7 28 Periodo slave di adeguamento (non interpretato)
Tabella 8.4
Il comando restituisce:

In ACC1 la prossima quota master di inizio fase, che deve essere utilizzata dai comandi di gestione
del movimento periodico o di gestione dell’arresto in fase.

In ACC2 l’indirizzo originale della tabella.

ATTENZIONE
Al fine di evitare che allo start ciclo l’asse slave debba muoversi nel verso opposto a causa della
preponderanza del movimento di recupero su quello di adeguamento del rapporto di inseguimento,
il comando ricalcola il periodo master di adeguamento in modo da posticipare lo start ciclo.

IMPORTANTE
La procedura di aggancio può essere utilizzata anche per comandare l’aggancio in fase di assi non
periodici, rispetto ai relativi master.

Classe di appartenenza: Funzioni albero elettrico con recupero


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indirizzo della tabella di parametrizzazione
ACC2: indeterminato
Parametri restituiti: ACC1: prossima quota di inizio fase asse master
ACC2: indirizzo originale della tabella di parametrizzazione
Vedi anche: cm-grtpcyc, cm-grtpend

136 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 8 ALBERO ELETTRICO CON RECUPERO

cm-grtpcyc
Comando che gestisce il ciclo di funzionamento dell’asse periodico, garantendo il ricalcolo e la
riprogrammazione dell’adeguamento del rapporto di inseguimento e del recupero fasatura tra
master e slave, sulla base dei parametri specificati.

Il comando si occupa di:


• Ricalcolare la quota di trigger di inizio procedura di recupero della fase e di eventuale
adeguamento del rapporto di inseguimento.
• Comandare lo start adeguamento del rapporto di inseguimento
• Comandare lo start del recupero albero elettrico in base alla differenza tra spazio percorso in
albero elettrico ed il periodo complessivo slave.

In ACC1 deve essere caricato l’indirizzo di una tabella di LongWord che contiene i valori dei
parametri di gestione del funzionamento ciclico. La tabella deve essere così composta:

Cella Offset Descrizione


0 0 Periodo complessivo master
1 4 Periodo complessivo slave
2 8 Periodo master di fase
3 12 Periodo slave di fase
4 16 Quota master di inizio fase
5 20 Quota slave di inizio fase (non interpretato)
6 24 Periodo master di adeguamento (non interpretato)
7 28 Periodo slave di adeguamento (non interpretato)
Tabella 8.5
Il comando restituisce:
In ACC1 la prossima quota master di inizio fase, che deve essere utilizzata dai comandi di gestione
del movimento periodico o di gestione dell’arresto in fase.

In ACC2 l’indirizzo originale della tabella.

Classe di appartenenza: Funzioni albero elettrico con recupero


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indirizzo della tabella di parametrizzazione
ACC2: indeterminato
Parametri restituiti: ACC1: prossima quota di inizio fase asse master
ACC2: indirizzo originale della tabella di parametrizzazione
Vedi anche: cm-grtpini, cm-grtpend

cm-grtpend
Comando che programma l’arresto del ciclo di gestione asse periodico, garantendo la fermata
dell’asse periodico in fase rispetto alla posizione master di inizio periodo specificata ed ai parametri
di caratterizzazione del ciclo periodico di funzionamento.

Il comando si occupa di:


• Ricalcolare la quota di trigger di inizio procedura di arresto asse periodico.
• Programmare il rapporto di inseguimento finale nullo.
• Comandare lo start adeguamento del rapporto di inseguimento

Doc. MS270103 - Ed. 05 - 9 aprile 2004 137


Axes utilities

• Comandare lo start del recupero albero elettrico in base alla differenza tra spazio percorso in
adeguamento del rapporto di inseguimento ed il periodo di adeguamento slave.

In ACC1 deve essere caricato l’indirizzo di una tabella di LongWord che contiene i valori dei
parametri di gestione della fase di aggancio. La tabella deve essere così composta:

Cella Offset Descrizione


0 0 Periodo complessivo master
1 4 Periodo complessivo slave (non interpretato)
2 8 Periodo master di fase
3 12 Periodo slave di fase (non interpretato)
4 16 Quota master di inizio fase
5 20 Quota slave di inizio fase (non interpretato)
6 24 Periodo master di adeguamento
7 28 Periodo slave di adeguamento
Tabella 8.6
Il comando restituisce:
In ACC1 l’indirizzo originale della tabella.

ATTENZIONE
Al termine della procedura di sgancio, l’asse slave si deve considerare comunque in albero elettrico,
con rapporto di inseguimento nullo. Questo significa che l’asse è ancora in modo 11.

Classe di appartenenza: Funzioni albero elettrico con recupero


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indirizzo della tabella di parametrizzazione
ACC2: indeterminato
Parametri restituiti: ACC1: indirizzo originale della tabella di parametrizzazione
ACC2: inalterato
Vedi anche: cm-grtpini, cm-grtpcyc

8.3 ESEMPI DI ALBERO ELETTRICO CON RECUPERO IN AWL

Futuro

8.4 LIBRERIA COMANDI FORTH

CM-GRTMODE

Comando che carica i parametri da usare per la generazione del profilo di recupero addizionale a
quello generato dalla funzione di albero elettrico attiva sull’asse attualmente selezionato. I
parametri vanno posti sullo stack prima di richiamare il comando. I parametri sono subito resi attivi,
quindi, onde evitare discontinuità di pilotaggio dell’asse, occorre verificare che il recupero non sia
attivo. Il caricamento dei parametri non abilita la gestione del recupero.

Sintassi: PosLimSpeed NegLimSpeed MasterSpeed Acceleration Jointmode Mode axis ---


Argomenti: PosLimSpeed velocità limite assoluta positiva slave

138 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 8 ALBERO ELETTRICO CON RECUPERO

NegLimSpeed velocità limite assoluta negativa slave


MasterSpeed velocità master (usato solo per recupero in spazio)
Acceleration Accelerazione limite per la compensazione espressa in unità interne
Jointmode abilita raccordo su rampa di compensazione (0 / 1)
Mode modo di recupero:
0 = recupero a tempo senza limitazione
1 = recupero in spazio senza limitazione
2 = recupero a tempo con limitazione
3 = recupero in spazio con limitazione
axis numero dell’asse di cui si vogliono impostare i parametri

CM-GRTTRG

Comando che programma l’utilizzo dello start recupero su raggiungimento di una quota di trigger
da parte del master per l’asse selezionato. Il comando necessita sia indicata la quota master assoluta
da usare per il confronto ed il tipo di confronto da operare tra quota master e posizione di trigger
(trigger su quota master maggiore o minore della quota trigger). La funzione di trigger è attiva una
sola volta ad ogni start compensazione dello shift. I parametri sono subito resi attivi dal comando,
quindi, onde evitare discontinuità di pilotaggio dell’asse, occorre verificare che la funzione non sia
già in attesa di trigger.

Sintassi: trigger flag axis ---


Argomenti: trigger quota master di start adeguamento
flag flag di abilitazione della funzione di trigger:
0 = disabilitata
1 = abilita su quota master maggiore del trigger
2 = abilita su quota master minore del trigger
axis numero dell’asse di cui si vogliono impostare i parametri

CM-GRTRES
Comando che resetta le variabili di generazione dell’albero elettrico con recupero sull’asse indicato.

Sintassi: axis ---


Argomenti: axis numero dell’asse

CM-GRTSTR

Comando che attiva l’albero elettrico con recupero per l’asse selezionato, secondo la modalità e con
i parametri programmati. Il comando necessita che siano indicati lo spazio da recuperare in impulsi
ed il periodo di recupero(tempo o spazio). Lo start recupero è istantaneo tranne quando viene
programmato il trigger di quota master.

Sintassi: retrieval period axis ---


Argomenti: retrieval entità da recuperare
period periodo di compensazione
axis numero dell’asse

Doc. MS270103 - Ed. 05 - 9 aprile 2004 139


Axes utilities

CM-?GRT
Comando che verifica se sull’asse attualmente selezionato è in corso la generazione del profilo
addizionale dell’albero elettrico con recupero. Restituisce un flag di vero o falso.

Sintassi: axis --- tf | ff


Argomenti: axis numero dell’asse
tf | ff flag di vero o falso; 1=profilo di recupero in generazione

CM-GRTSTS
Comando che verifica per l’asse attualmente selezionato, lo stato della generazione del profilo
addizionale dell’albero elettrico con recupero. Restituisce lo spazio non ancora recuperato ed il
periodo mancante alla fine della procedura.

Sintassi: axis --- LackingRetrieval LackingPeriod


Argomenti: axis numero dell’asse
LackingRetrieval spazio non ancora recuperato espresso in impulsi
LackingPeriod periodo di compensazione non ancora trascorso

CM-GRTCOR
Comando che restituisce l’entità dell’ultimo recupero applicato per l’asse attualmente selezionato.
Il comando può venire utilizzato per verficare che non sia intervenuta la saturazione dei parametri
di limitazione del recupero, con conseguente limitazione dello spazio recuperato, rispetto a quello
comandato.

Sintassi: axis --- Retrieval


Argomenti: axis numero dell’asse
Retrieval entità dell’ultimo recupero comandato espresso in impulsi

CM-GRTLINK

Comando che consente di agganciare alla funzione di generazione del profilo di recupero, una
routine che sarà eseguita ogni volta che termina il profilo addizionale di recupero. Tale routine può
essere scritta in Assembler oppure in AWL utilizzando in blocco funzionale #INT; l’indirizzo di
tale routine va posto sullo stack assieme al numero dell’asse prima di richiamare il comando.

Sintassi: addr axis ---


Argomenti: addr indirizzo routine utente
axis numero dell’asse

CM-GRTCAL
Il comando stima e determina i parametri con i quali si intende generare il profilo di recupero per
l’albero elettrico. I parametri usati sono lo spazio, il tempo o lo spazio master di recupero,
l’accelerazione massima applicabile al recupero e le velocità master e slave di recupero. Le

140 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 8 ALBERO ELETTRICO CON RECUPERO

combinazioni ammesse e gestite dal comando sono riportate nella tabella 2 del paragrafo
precedente.
I parametri ed il tipo di calcolo vanno posti nello stack prima di richiamare il comando; il comando
non altera il funzionamento di eventuali compensazioni già attive sull’asse. Il valore richiesto viene
rilasciato sullo stack al termina del comando. I parametri non necessari devono comunque essere
passati al comando.

Sintassi: Retrieval Period PosLimSpeed NegLimSpeed MasterSpeed Acceleration RetrievalType SlaveSpeed


CalcType --- output
Argomenti: Retrieval Entità dello shift espresso in impulsi
Period tempo di compensazione espresso in tempi di campionamento oppure spazio master
PosLimSpeed velocità limite assoluta positiva slave
NegLimSpeed velocità limite assoluta negativa slave
MasterSpeed velocità master (usato solo per recupero a spazio)
Acceleration Accelerazione limite per la compensazione espressa in unità interne
RetrievalType raccordo su rampa di compensazione (non ancora gestito)
SlaveSpee velocità assoluta di riferimento asse slave
CalcType specifica quale parametro deve essere calcolato (vedi tabella 8.2 del relativo
comando AWL)
output Parametro restituito dal calcolo

CM-GRTPINI
Comando che programma la partenza del ciclo di gestione asse periodico, gestendo l’aggancio in
fase rispetto alle posizioni master e slave di inizio periodo specificate ed ai parametri di
caratterizzazione del ciclo periodico di funzionamento.

Il comando si occupa di:


• Calcolare la quota di trigger di inizio procedura di aggancio
• Programmare il rapporto di inseguimento finale
• Comandare lo start della funzione albero elettrico
• Comandare lo start del recupero albero elettrico in base alla differenza tra spazio percorso in
adeguamento del rapporto di inseguimento e spazio mancante alla quota di inizio fase asse
slave

I parametri devono essere specificati sullo stack prima di invocare il comando


Il comando restituisce il valore della prossima quota master di inizio fase, che deve essere utilizzata
dai comandi di gestione del movimento periodico o di gestione dell’arresto in fase.

ATTENZIONE
Al fine di evitare che allo start ciclo l’asse slave debba muoversi nel verso opposto a causa della
preponderanza del movimento di recupero su quello di adeguamento del rapporto di inseguimento,
il comando ricalcola il periodo master di adeguamento in modo da posticipare lo start ciclo.

IMPORTANTE
La procedura di aggancio può essere utilizzata anche per comandare l’aggancio in fase di assi non
periodici, rispetto ai relativi master.

Sintassi: TotMasterPeriod TotSlavePeriod MasterPeriod SlavePeriod StartQMaster StartQSlave


RetrievalPeriod axes --- NexMasterQuota
Argomenti:
TotMasterPeriod Periodo complessivo master

Doc. MS270103 - Ed. 05 - 9 aprile 2004 141


Axes utilities

TotSlavePeriod Periodo complessivo slave


MasterPeriod Periodo master di fase
SlavePeriod Periodo slave di fase
StartQMaster Quota master di inizio fase
StartQSlave Quota slave di inizio fase
RetrievalPeriod Periodo master di adeguamento
axes numero dell’asse

CM-GRTPCYC
Comando che gestisce il ciclo di funzionamento dell’asse periodico, garantendo il ricalcolo e la
riprogrammazione dell’adeguamento del rapporto di inseguimento e del recupero fasatura tra
master e slave, sulla base dei parametri specificati.

Il comando si occupa di:


• Ricalcolare la quota di trigger di inizio procedura di recupero della fase e di eventuale
adeguamento del rapporto di inseguimento.
• Comandare lo start adeguamento del rapporto di inseguimento
• Comandare lo start del recupero albero elettrico in base alla differenza tra spazio percorso in
albero elettrico ed il periodo complessivo slave.

I parametri devono essere specificati sullo stack prima di invocare il comando


Il comando restituisce il valore della prossima quota master di inizio fase, che deve essere utilizzata
dai comandi di gestione del movimento periodico o di gestione dell’arresto in fase.
Sintassi: TotMasterPeriod TotSlavePeriod MasterPeriod SlavePeriod StartQMaster axes --- NexMasterQuota
Argomenti:
TotMasterPeriod Periodo complessivo master
TotSlavePeriod Periodo complessivo slave
MasterPeriod Periodo master di fase
SlavePeriod Periodo slave di fase
StartQMaster Quota master di inizio fase
axes numero dell’asse

CM-GRTPEND

Comando che programma l’arresto del ciclo di gestione asse periodico, garantendo la fermata
dell’asse periodico in fase rispetto alla posizione master di inizio periodo specificata ed ai parametri
di caratterizzazione del ciclo periodico di funzionamento.

Il comando si occupa di:


• Ricalcolare la quota di trigger di inizio procedura di arresto asse periodico.
• Programmare il rapporto di inseguimento finale nullo.
• Comandare lo start adeguamento del rapporto di inseguimento
• Comandare lo start del recupero albero elettrico in base alla differenza tra spazio percorso in
adeguamento del rapporto di inseguimento ed il periodo di adeguamento slave.

I parametri devono essere specificati sullo stack prima di invocare il comando


Il comando restituisce il valore della prossima quota master di inizio fase, che deve essere utilizzata
dai comandi di gestione del movimento periodico o di gestione dell’arresto in fase.

142 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 8 ALBERO ELETTRICO CON RECUPERO

ATTENZIONE
Al termine della procedura di sgancio, l’asse slave si deve considerare comunque in albero elettrico,
con rapporto di inseguimento nullo. Questo significa che l’asse è ancora in modo 11.

Sintassi: TotMasterPeriod MasterPeriod StartQMaster RetrievalMasterPeriod RetrievalSlavePeriod axes ---


Argomenti:
TotMasterPeriod Periodo complessivo master
MasterPeriod Periodo master di fase
StartQMaster Quota master di inizio fase
RetrievalMasterPeriod Periodo master di adeguamento
RetrievalSlavePeriod Periodo slave di adeguamento
axes numero dell’asse

8.5 GESTIONE ASSE PERIODICO

Ritorniamo sull’esempio della macchina di stampa ed approfondiamone ulteriormente la


problematica. L’esempio rappresenta una tipica applicazione di ‘asse periodico’, in quanto sull’asse
che compie il lavoro sono individuabili delle azioni periodiche quali:
• la gestione di un tratto di lavoro a velocità sincronizzata rispetto a quella del master, in modo da
consentire il corretto funzionamento dell’utensile mosso dall’asse slave (cliché di stampa)
• la gestione del recupero di fase dell’utensile rispetto al master in modo da ripresentarsi in
posizione all’inizio della successiva lavorazione.

Oltre a queste caratteristiche, l’asse periodico presenta altre peculiarità quali:


• la necessità di effettuare l’aggancio in fase con il master all’inizio del primo ciclo di lavorazione
• la necessità di effettuare l’arresto in fase del ciclo di lavoro, in modo che l’utensile si fermi in
una condizione di non interferenza rispetto al resto della macchina o nella condizione che
consenta il più agevole riaggancio in fase con il master.
• la necessità di rieffettuare l’aggancio in fase con il master, abbandonando la procedura di
arresto in fase oppure partendo comunque da una condizione di asse slave in movimento.
• Possibilità di effettuare un rifasamento manuale della posizione dell’asse periodico rispetto alla
posizione fisica dell’asse master, senza alterare la sequenza di azioni periodiche già
programmate in base alla quota letta dal master (start recupero e adeguamento).

A completamento delle funzionalità tipiche, si può evidenziare anche la necessità di poter variare i
parametri che definiscono la periodicità del movimento, in tempo reale, senza che questo comporti
la perdita di fase dell’asse rispetto alla quota del master.

Nella gestione del ciclo di lavoro dell’asse periodico si possono evidenziare 3 distinte fasi:

1 Aggancio in fase dell’asse periodico


2 Gestione ciclica
3 Sgancio in fase per fine ciclo

Doc. MS270103 - Ed. 05 - 9 aprile 2004 143


Axes utilities

1 2 2 2 3

periodo

1 Aggancio in fase dell’asse periodico

La prima fase viene solitamente gestita dal programma principale ed è attivata dai consensi di inizio
ciclo; la sua funzione è quella di consentire l’avvio della gestione periodica dell’asse imponendo la
fase iniziale tra i due assi. I parametri che caratterizzano tale fase sono:
• Periodo master di adeguamento
• Quota di fase master a fine adeguamento
• Quota di fase slave a fine adeguamento
• Periodo di fase asse master
• Periodo di fase asse slave
• Periodo complessivo asse master

Trigger A = periodo di fase slave

Periodo Periodo di fase


adeguamento master master

Periodo complessivo master

Quota di fase master e slave a


fine adeguamento

L’aggancio termina quando il master raggiunge la quota di fase; da quel punto in poi lo slave è in
albero elettrico con il master sulla base del rapporto programmato, fino all’eventuale inizio del ciclo
di recupero gestito dalla gestione ciclica dell’asse periodico.
Al fine di evitare che allo start ciclo l’asse slave debba muoversi nel verso opposto a causa della
preponderanza del movimento di recupero su quello di adeguamento del rapporto di inseguimento,
il comando ricalcola il periodo master di adeguamento in modo da posticipare lo start ciclo.

2 Gestione ciclica

La fase ciclica rappresenta il nucleo principale di gestione del funzionamento dell’asse periodico.
Essa deve essere gestita dal programma agganciato all’azione sincrona alla fine recupero (che va in
funzione sia a fine aggancio in fase che a fine di ogni singolo ciclo) e si deve preoccupare di
riprogrammare il funzionamento del ciclo successivo, riattivando i trigger di inizio recupero e
ricalcolando l’entità del recupero ed eventualmente il rapporto di inseguimento sulla base delle
eventuali variazioni dei parametri tipici di fasatura, che sono:

144 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 8 ALBERO ELETTRICO CON RECUPERO

• Periodo di fase asse master


• Periodo di fase asse slave
• Periodo complessivo asse master
• Periodo complessivo asse slave
• Quota di inizio fase master

Trigger
A = periodo di fase slave

A+B = periodo complessivo slave

A B

Periodo di fase Periodo di


master recupero

Periodo complessivo master

Quota di inizio fase


master

IMPORTANTE
La variazione di uno qualsiasi dei parametri, preserva in ogni caso il tratto a velocità costante
imposto dal ciclo precedente, in modo da completare correttamente la lavorazione del pezzo in
arrivo al quale erano riferiti i precedenti parametri; l’adeguamento avviene tutto nella fase di
recupero, in modo da essere pronti con i parametri corretti per la lavorazione successiva.

Per meglio comprendere la logica di funzionamento del ciclo dell’asse periodico, vengono di
seguito brevemente schematizzate le azioni innescate al variare di ogni singolo parametro.

Cambio del periodo master di fase


I. Viene ricalcolato il nuovo rapporto di inseguimento, il cui adeguamento sarà avviato al
superamento della quota di trigger ed evolverà nel periodo di recupero.
II. Nell’entità di recupero dell’albero elettrico viene riportata anche la variazione di fase
derivante dall’adeguamento dell’albero elettrico.
III. Il nuovo periodo di fase viene reso attivo al ciclo successivo, con conseguente ricalcolo
della quota di trigger e del periodo di recupero.

Cambio del periodo slave di fase


I. Viene ricalcolato il nuovo rapporto di inseguimento, il cui adeguamento sarà avviato al
superamento della quota di trigger ed evolverà nel periodo di recupero
II. Nell’entità di recupero dell’albero elettrico viene riportata anche la variazione di fase
derivante dall’adeguamento dell’albero elettrico.

Cambio del periodo complessivo slave


I. Viene ricalcolata l’entità del recupero albero elettrico.

Cambio del periodo complessivo master


Doc. MS270103 - Ed. 05 - 9 aprile 2004 145
Axes utilities

I. Viene ricalcolato il periodo di recupero.


II. Viene ricalcolata l’entità del recupero albero elettrico.
III. Cambia il passo di aggiornamento della quota di inizio della fase successiva.

3 Sgancio in fase per fine ciclo

La terza fase rappresenta la gestione dell’arresto del processo periodico che deve essere attivata dal
programma agganciato all’azione sincrona di fine recupero quando si è in presenza della richiesta di
stop ciclo oppure in alternativa alla gestione ciclica, imponendo l’arresto ad ogni periodo di
lavorazione (ciclo composto dalle sole fasi 1 e 3). La fase di arresto è caratterizzata dai seguenti
parametri:

• Periodo di fase asse master


• Periodo complessivo asse master
• Quota di inizio fase master
• Periodo master di arresto ciclo
• Periodo slave di arresto ciclo

Trigger

A = periodo di arresto slave

Periodo complessivo master Periodo di Periodo di


fase master arresto master

Quota di inizio fase


master

La procedura di sgancio garantisce l’esecuzione del tratto in albero elettrico a velocità costante tra i
due assi, al termine del quale viene avviata la procedura di adeguamento del rapporto di
inseguimento che comporta l’arresto dell’asse slave (rapporto di inseguimento finale nullo).
La libreria di gestione del recupero albero elettrico mette a disposizione tre funzioni specifiche con
le quali è facilmente risolvibile la problematica dell’asse periodico, in quando ogni singolo
comando si occupa della gestione di una specifica fase di ciclo. I tre comandi sono cm-grtpini
(gestione aggancio in fase), cm-grtpcyc (gestione ciclica) e cm-grtpend (gestione di arresto
in fase).

Gli istanti in cui viene attivata la #INT sincrona con la fine recupero, e quindi con la fine di ogni
singola fase, sono schematizzati nella sottostante figura.

146 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 8 ALBERO ELETTRICO CON RECUPERO

periodo
#INT #INT #INT #INT #INT

Per ulteriori informazioni riguardo la gestione periodica dell’asse si rimanda alla lettura del
paragrafo in cui sono spiegati i singoli comandi di gestione delle tre fasi.

8.5.1 Fasatura dell’asse periodico

L’ultimo aspetto tipico della gestione di un asse periodico è quello legato alla necessità di poter
alterare la fase tra master e slave. I casi sono due:
poter rifasare la posizione fisica dello slave rispetto a quella del master, senza alterare la posizione
di quest’ultimo e soprattutto garantendo nel contempo l’attivazione o la corretta evoluzione degli
eventuali comandi di trigger o adeguamento già impartiti allo slave. A tal scopo possono essere
utilizzati i comandi di gestione della fasatura manuale dello slave cm-gearmph e cm-
?gearmph.
poter risincronizzare la quota del master con la posizione corrente dello slave. L’operazione può
rendersi necessaria quando la posizione fisica del master viene modificata (fasatura del master), ma
si desidera mantenere la posizione fisica dello slave (fase dello slave) e soprattutto si deve garantire
la fase tra i due assi alla ripartenza della gestione periodica. Il problema può essere risolto con i
comandi cm-gearmsyn e cm-geartsyn.
I sopra citati comandi sono resi disponibili dalla libreria dell’albero elettrico.

8.6 TEST LIBRERIA

La libreria prevede la possibilità di compilare nel sistema un programma di test di ausilio alla
taratura delle funzioni di gestione del recupero albero elettrico.

Il test viene avviato con la parola TST_GRT digitata da interprete Forth.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 147


Axes utilities

La pagina può essere suddivisa in quattro sezioni:


• Configurazione della modalità operativa
• Impostazione dei parametri di controllo
• Visualizzazione dello stato operativo e delle variabili di controllo
• Tasti funzione

Parametri di controllo
Nella pagina è possibile selezionare l’asse su cui è applicata la funzione albero elettrico e
modificare singolarmente i parametri di caratterizzazione della modalità di recupero (cm-
grtmode), il periodo complessivo di recupero e l’eventuale quota di trigger, anche se per questi
ultimi due parametri, prevale sempre e comunque il valore imposto dal comando al mimento della
sua invocazione. I dati raggruppati nella sezione “Periodic functions”, consentono di verificare che
l’asse slave mantenga la fase impostata durante il funzionamento periodico: il primo valore deve
essere programmato con il periodo complessivo slave espresso in impulsi, gli altri due valori
rappresentano la quota progressiva di fase asse slave all’inizio del movimento ciclico e la posizione
di fase normalizzata all’inerno di un singolo periodo.

Stato operativo
In questa sezione vengono visualizzati lo stato operativo dell’asse e i valori di controllo della
funzione di recupero.
Nell’ordine rispettivamente troviamo: modo operativo del programma assi, lo stato operativo della
funzione di recupero, le immagini dei vettori di gestione funzione ausiliaria albero elettrico, su cui
si installa il recupero e di gestione azione su fine recupero, la posizione dell’asse e la sua quota
fisica, la quota del master ed i valori istantanei di generazione del profilo di recupero albero
elettrico.
Gli ultimi tre valori raggruppati nella sezione “Master position source” mostrano la configurazione
corrente usata dall’asse per leggere la quota e la velocità del master ad esso associato.

148 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 8 ALBERO ELETTRICO CON RECUPERO

Tasti funzione
I tasti funzione attivi in questa pagina sono qui di seguito elencati e commentati.

F1 Consente di richiamare ed utilizzare le funzioni di taratura asse disponibili dal programma T_MOT

F2 Consente l’accesso diretto alla pagina di impostazione parametri di controllo asse del programma T_MOT,
rendendo accessibili tutte le funzionalità previste in tale pagina. Se il programma T_MOT non è stato mai
richiamato, la prima volta il tasto funzione accede al menù completo di T_MOT

F3 Consente di accedere alla pagina di test della funzione albero elettrico, a patto che tali funzioni siano state
precedentemente selezionate e compilate.

F4 Consente di cambiare il significato del periodo di recupero utilizzato (tempo o spazio). Attenzione: assicurarsi
di richiamare il comando solo quando non è in corso un movimento di recupero.

F5 Comanda un reset della funzione di recupero albero elettrico (comando cm-grtres). Attenzione: assicurarsi di
richiamare il comando solo quando non è in corso un movimento di recupero.

F6 Abilita l’acquisizione da T_MOT nella modalità “modo utente”, presettando il vettore di acquisizione con una
routine che consente la registrazione del profilo di velocità ausiliario, generato dalla funzione di recupero.

F7 Abilita l’acquisizione da T_MOT nella modalità “modo utente”, presettando il vettore di acquisizione con una
routine che consente la registrazione del profilo di posizione generato dalla funzione di recupero.

F8 Abilita o disabilita l’utilizzo della limitazione automatica dei valori di velocità ed accelerazione in fase di
compensazione. Per questioni di sicurezza, il tasto funzione è attivo solo quando non è in corso un
movimento di recupero.

F9

ESC Esce dalla pagina di test e ritorna all’interprete Forth

Doc. MS270103 - Ed. 05 - 9 aprile 2004 149


Axes utilities

capitolo 9 RECUPERO GIOCO

La libreria comprende una serie di funzioni che consentono di gestire il gioco meccanico in tutti
quei casi in cui non è sufficiente compensare il gioco dell’asse solo al termine o all’inizio del
movimento (gestione base del programma assi), in quanto l’asse viene comandato in interpolazione
o secondo una camma e quindi ha bisogno di compensare il gioco meccanico ad ogni cambio di
direzione. Queste funzioni possono comunque preservare e simulare il precedente metodo di
recupero gioco, facendo in modo che al termine dei movimenti, il motore azzeri sempre gli
eventuali contributi di compensazione applicati portandosi sempre dal lato che in fase di
azzeramento asse è stato dichiarato a gioco nullo.

Gioco del
sistema

La compensazione del gioco consiste nell’applicare all’asse un profilo di posizione e velocità


addizionale, di cui si impone il tempo o lo spazio di evoluzione, ad ogni inversione del segno della
velocità teorica generata dal programma assi.

Per semplicità di trattazione, definiremo la grandezza che definisce l’evoluzione del profilo di
recupero, che come visto può essere sia un tempo che uno spazio, come periodo di recupero gioco;
inoltre si farà riferimento ad asse master ed asse slave: con asse master si intende l’asse da cui si
legge la posizione per gestire il recupero del gioco a spazio, mentre con asse slave si identifica in
ogni caso l’asse su cui viene applicata la compensazione del gioco.

La differenza sostanziale tra il recupero a tempo e quello a spazio sta nel fatto che il primo evolve
in maniera costante ed indipendente dalle condizioni del sistema (ad esempio della velocità di ciclo
degli assi), mentre il secondo, utilizzando come grandezza di riferimento la quota di uno degli assi
del sistema, è sensibile allo stato operativo della macchina. Nel secondo caso infatti il gioco viene
recuperato solo se l’asse usato come master si muove. Occorre tener presente anche che la quota
usata come periodo di recupero deve essere intesa come movimento assoluto dell’asse master,
non influenzato cioè dal verso di movimento dello stesso; ciò significa che se tale asse ‘pendola’
attorno ad una quota, per l’asse slave questo è equivalente ad un’evoluzione costante del periodo di
recupero (a patto che tale pendolamento si ripercuota sulla quota del master).

Il master per il recupero a spazio può essere:

• Un asse locale reale o simulato


• Un asse remoto (via HDLC) reale o simulato
• Il master virtuale dell’interpolazione

150 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 9 RECUPERO GIOCO

• Un encoder locale indipendente dal programma assi


• Un encoder acquisito via CAN bus
• Una routine utente

Degli assi reali (o simulati) è possibile leggere la quota reale (P1) o quella teorica (PDESID)

La quota di un asse locale può essere quella reale (P1 o PDESID direttamente gestite dal
programma assi, quindi riferite alla posizione software del motore) oppure quella fisica (P1 o
PDESID private dalle compensazioni, quindi riferite alla posizione fisica del motore).

Le eventuali inversioni di direzione durante la fase di recupero sono gestite abortendo


l’applicazione del contributo in corso, per ricalcolare un nuovo contributo di segno opposto, che
tiene conto di quanto era stato recuperato fino a quel momento: ciò significa che se le inversioni di
direzione sono più rapide del periodo di recupero gioco, l’asse si muove ma la meccanica rimane
ferma.

Il profilo di compensazione addizionale può essere trapezoidale o triangolare, a seconda che si


voglia o meno controllare l’accelerazione supplementare massima e l’incremento di velocità
applicate all’asse tramite la compensazione. Il profilo addizionale agisce modificando
opportunamente la quota reale dell’asse (P1) e alla velocità teorica (VDESID).

Recupero
Velocità limite
gioco

Periodo di recupero Spazio/tempo


Velocità

Spazio/tempo

Le funzioni definiscono il concetto di lato di recupero gioco: il programma considera il movimento


dal lato di gioco nullo quando questo avviene con segno discorde rispetto a quello del gioco,
movimento dal lato di gioco compensato quando questo avviene con segno concorde a quello del
gioco. Il segno del gioco può essere stabilito considerando al termine della procedura di
azzeramento, il sistema posizionato sul lato a gioco nullo, e quindi il segno deve essere opposto a
quello della velocità usata nella fase di rilascio del micro (e ricerca tacca di zero).

IMPORTANTE
Un movimento è dal lato di gioco nullo quando il bilancio complessivo delle compensazioni
applicate è nullo.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 151


Axes utilities

ATTENZIONE
Il recupero del gioco è disabilitato ed azzerato durante le procedure di azzeramento asse.

La parametrizzazione della funzione di recupero gioco avviene specificando l’entità del gioco con
segno, il periodo di recupero e la grandezza che funge da periodo di recupero (tempo o spazio); se
oltre a ciò viene specificata le massime accelerazione e velocità applicabili al recupero, il sistema
cerca di soddisfare per prima la soluzione a trapezio, per poi degenerare in quella a triangolo.

Nel caso in cui la grandezza usata come periodo di recupero sia uno spazio, è necessario
programmare opportunamente anche la sorgente da cui leggere la quota e la modalità di lettura di
tale quota, attraverso gli opportuni comandi di configurazione.

Tutti i parametri in gioco, possono essere valutati in precedenza mediante un comando che informa
se tali parametri sono o meno adeguati per recuperare il gioco con legge trapezoidale, suggerendo, a
seconda dei dati in ingresso, quali sono i parametri più adeguati.

IMPORTANTE
Il programma ricava sempre almeno una soluzione triangolare valida, a prescindere dai parametri in
ingresso, in quanto comunque soddisfa il recupero del gioco nel tempo stabilito, ignorando gli
eventuali problemi dovuti ad eventuali sovrapilotaggi del motore.

9.1 INSTALLAZIONE DELLA LIBRERIA

Per usare la libreria di recupero si deve innanzitutto installarla nella directory delle librerie. Per fare
questo è necessario usare il programma INSTALL presente nella libreria e quindi seguire le
indicazioni.
Dopo questa operazione nella directory delle librerie CMZ\LIB ci sarà una sottodirectory per la
libreria in oggetto.

Ora quando si userà il programma MAKEPRJ per iniziare un nuovo lavoro ci sarà una nuova
sezione ‘ASSI’ con la seguente selezione.

ASSI
..
[ ] Recupero gioco, nucleo base
..

Recupero gioco, nucleo base È il nucleo principale.

9.2 COMANDI AWL

Verranno ora elencati i comandi AWL per la gestione della libreria di recupero gioco. Per la quasi
totalità dei comandi viene riportato un esempio di utilizzo che però ha lo solo scopo di indicare il
modo in cui i dati di ingresso vengono passati al comando, mentre, per una migliore comprensione ,
soprattutto inerente alla correlazione tra i vari comandi, si rimanda agli esempi del paragrafo 9.3.

152 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 9 RECUPERO GIOCO

cm-clearmst
Comando che configura il numero di sistema remoto (HDLC) o di canale del dispositivo (encoder
locale) ed il numero di asse utilizzati come master per il recupero in spazio del gioco per l’asse
attualmente selezionato. Il numero di sistema deve essere specificato in ACC1 e il numero di asse
master in ACC2. Il comando a senso di essere chiamato solo se si applica il recupero gioco su
spazio master.

Classe di appartenenza: Funzioni recupero gioco


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: numero di sistema remoto (HDLC) o canale del dispositivo (encoder locale)
ACC2: numero di asse master nel sistema
Parametri restituiti: ACC1: Indeterminato
ACC2: Inalterato
Vedi anche: cm-clearrdm, cm-clearmode

Esempio: si assegna all’asse 1, l’asse master 3 nel sistema 0

SEL @AX_1
L KZ3 * numero del master
L KZ0 * numero del sistema
C cm-clearmst

cm-clearrdm
Comando che configura la modalità di lettura della quota dal master assegnato all’asse attualmente
selezionato; inoltre è possibile specificare l’indirizzo di una routine utente dedicata alla lettura
personalizzata della quota e della velocità di riferimento per il recupero a spazio del gioco. La
modalità di lettura della quota master va indicata in ACC2 scrivendo uno dei valori riportati in
tabella 1, mentre l’indirizzo della routine di lettura master va specificato in ogni caso in ACC1. Il
comando a senso di essere chiamato solo se si applica il recupero gioco su spazio master.

Valore Descrizione Note


0 Legge quota reale (P1) e velocità teorica (VDESID) da un master locale Sempre possibile
1 Legge quota e velocità reali (P1 - V1) da un master locale
2 Legge quota e velocità teoriche (PDESID - VDESID) da un master locale
3 Legge quota reale (P1) e velocità teorica (VDESID) da un master remoto Solo su sistemi con
4 Legge quota e velocità reali (P1 - V1) da un master remoto HDLC
5 Legge quota e velocità teoriche (PDESID - VDESID) da un master remoto
6 Legge quota e velocità (S_P1 – S_VDESID) da un master virtuale (interpolazione)
Solo in caso di sistemi
con interpolazione
7 Legge quota e velocità da un encoder gestito in locale Solo se definiti i
driver di gestione da
AWL
8 Legge quota e velocità da un encoder gestito via CAN bus Solo in caso di sistemi
con CANopen
9 Quota e velocità restituite da una routine personalizzata Vedi modalità di
definizione routine
10 Legge quota reale (P1) e velocità teorica (VDESID) da un master locale, con Significativo solo se
ricostruzione della posizione fisica del motore attivato lo shift sulla
11 Legge quota e velocità reali (P1 - V1) da un master locale, con ricostruzione posizione del master.
della posizione fisica del motore
12 Legge quota e velocità teoriche (PDESID – VDESID) da un master locale, con
ricostruzione della posizione fisica del motore

Doc. MS270103 - Ed. 05 - 9 aprile 2004 153


Axes utilities

Tabella 9.1

Nel caso venga programmata una modalità di lettura non supportata dal sistema, la quota e la
velocità restituite sono poste a 0.

Classe di appartenenza: Funzioni recupero gioco


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indirizzo routine di lettura personalizzata (0 se nulla)
ACC2: modalità di lettura quota
Parametri restituiti: ACC1: Indeterminato
ACC2: Inalterato
Vedi anche: cm-clearmst, cm-clearmode

Esempio: si programma la modalità di lettura da routine personalizzata per l’asse 1. La routine è stata scritta in AWL
nel blocco #INT 1 (vedi anche 9.2.1)

SEL @AX_1
L KZ1 * numero del blocco
C addrint * calcola indirizzo iniziale e lo pone in ACC1. N.B.: il
* precedente contenuto di ACC1 è spostato in ACC2
L KZ9 * modalità di lettura
TAK * scambia ACC1 con ACC2: supplisce peculiarità della
* funzione “addrint”
C cm-clearrdm

#INT 1
L @DD_Quota
T D” 1 PosMClear” * deposita quota su variabile asse 1
L @DD_Speed
T D” 1 VelMClear” * deposita velocità su variabile asse 1
BE

cm-clearmode
Comando che carica i parametri da usare per la compensazione del gioco per l’asse attualmente
selezionato. I parametri vanno posti in una tabella di LongWord di cui viene specificato l’indirizzo
iniziale in ACC2 (vedi tabella 2), mentre il tipo di recupero selezionato va specificato in ACC1. I
parametri sono subito resi attivi dal comando, quindi, onde evitare discontinuità di pilotaggio
dell’asse, occorre verificare che il recupero non sia attivo. Il caricamento dei parametri non abilita
la gestione del recupero.

Cella Offset Descrizione


0 0 Entità del gioco espresso in impulsi
1 4 In base al tipo di compensazione selezionato,
- Tempo di compensazione espresso in numero di scansioni
- Spazio master di compensazione espresso in impulsi
2 8 Velocità limite slave
3 12 Velocità asse master di riferimento (solo per recupero a spazio)
4 16 Accelerazione limite per la compensazione espressa in unità interne
5 20 Abilitazione raccordo su rampa di recupero (0 / 1)
6 24 Riservata
Tabella 9.2

Classe di appartenenza: Funzioni recupero gioco


Modalità di chiamata: C =C

154 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 9 RECUPERO GIOCO

Modifica RLC: NO
Parametri richiesti: ACC1: modo di recupero gioco:
0 = compensazione a tempo su inversione di direzione
1 = compensazione a spazio su inversione di direzione
2 = compensazione a tempo su inversione e riposizionamento su lato a
gioco nullo a fine movimento.
3 = compensazione a spazio su inversione e riposizionamento su lato a
gioco nullo a fine movimento.
ACC2: indirizzo tabella parametri
Parametri restituiti: ACC1: Indeterminato
ACC2: Inalterato
Esempio: sull’attivazione di un merker si parametrizza la funzione di recupero gioco per l’asse 1

* IMPOSTA PARAMETRI PER RECUPERO DEL GIOCO


U @M_SetClearance
IF
R @M_ SetClearance
SEL @AX_1
L KZ300 * impulsi di gioco da compensare
T @DD_Table0
L KZ40 * numero di Tc per recuperare il gioco
T @DD_Table1
L KZ0 * velocità limite asse slave
T @DD_Table2
L KZ0
T @DD_Table3 * Velocita master ininfluente perché recupero in tmpo
L KZ1000000 * accelerazione limite per il recupero
T @DD_Table4
L KZ0 * tipo rampa raccordo
T @DD_Table5
L KZ0
T @DD_Table6 * Riservato

LA @DD_Table0 * carica indirizzo iniziale tabella parametri


L KZ0 * modo per recupero del gioco: solo su inversione
C cm-clearmode * parametrizza la funzione
ENDIF

cm-clearenab
Comando che attiva la gestione della compensazione del gioco sull’asse attualmente selezionato. Il
comando dovrebbe essere richiamato dai blocchi #START e #RESET del programma AWL.

Classe di appartenenza: Funzioni recupero gioco


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato

Esempio: sull’attivazione di un merker si parametrizza la funzione di recupero gioco per l’asse 1

#START
L KZ2
C cm-start * Avvia gestione programma assi
...

Doc. MS270103 - Ed. 05 - 9 aprile 2004 155


Axes utilities

C cm-clearenab * Avvia compensazione per l’asse


BE

cm-cleardisa

Comando che disabilita la gestione della compensazione del gioco sull’asse attualmente
selezionato.

Classe di appartenenza: Funzioni recupero gioco


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato

cm-clearres

Comando che resetta le variabili di generazione della compensazione del gioco sull’asse
attualmente selezionato.

Classe di appartenenza: Funzioni recupero gioco


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato

cm-?clear
Comando che verifica se sull’asse attualmente selezionato è in corso la generazione del profilo di
compensazione del gioco. Restituisce il flag RLC vero o falso.

Classe di appartenenza: Funzioni recupero gioco


Modalità di chiamata: U C, UN C, O C, ON C
Modifica RLC: SI
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato

Esempio: si vuole comandare l’asse solo se è fermo ed è terminata la precedente compensazione del gioco.

SEL @AX_1
U C cm-?0mode * verifica se asse fermo
UN C cm-?clear * verifica se compensazione terminata
IF
L @DD_FinQuota * posizione finale
L @DD_Speed * velocità di posizionamento
C cm-move * avvia movimento
INC @DW_Step
ENDIF

156 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 9 RECUPERO GIOCO

cm-clearsts
Comando che verifica per l’asse attualmente selezionato, lo stato della generazione del profilo di
compensazione e il lato sul quale l’asse è in presa. Restituisce in ACC1 l’entità del gioco ancora da
recuperare ed in ACC2 il valore del gioco attualmente in compensazione, che in pratica determina il
lato sul quale l’asse sta recuperando.

Classe di appartenenza: Funzioni recupero gioco


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: entità del gioco ancora da recuperare espresso in impulsi
ACC2: lato su cui è in presa l’asse:
0 = lato a gioco nullo
0 <> lato a gioco recuperato

Esempio: si vuole testare lo stato corrente del recupero gioco sull’asse selezionato

* Test dello stato del recupero gioco


SEL @AX_1
C cm-clearsts * interroga l’asse sullo stato in corso
T @DD_RemainingClearance * entità del recupero non ancora applicata
TAK
T @DD_ActualDirection * verso di compensazione corrente

cm-clearcal

Il comando stima e determina i parametri con i quali si intende compensare il gioco del sistema. I
parametri usati sono lo spazio (gioco), il tempo o lo spazio master di recupero, l’accelerazione
massima applicabile al recupero e le velocità master e slave di recupero. Le combinazioni ammesse
e gestite dal comando sono:

Tipo Calcolo INPUT OUTPUT


0 Spazio positivo Tempo, Velocità Slave, Velocità Limite Spazio massimo compensabile a triangolo rispettando
la velocità limite
1 Spazio positivo Tempo, Velocità Slave, Accelerazione Spazio massimo compensabile a triangolo rispettando
l’accelerazione
2 Spazio positivo Tempo, Velocità Limite, Velocità Slave Spazio massimo compensabile a rettangolo,
rispettando la velocità limite positiva impostata.
3 Spazio positivo Tempo, Accelerazione, Velocità Limite, Spazio compensabile a trapezio, rispettando
Velocità Slave l’accelerazione e la velocità limite positiva impostate.
4 Spazio negativo Tempo, Velocità Slave, Velocità Limite Spazio massimo compensabile a triangolo rispettando
la velocità limite
5 Spazio negativo Tempo, Velocità Slave, Accelerazione Spazio massimo compensabile a triangolo rispettando
l’accelerazione
6 Spazio negativo Tempo, Velocità Limite, Velocità Slave Spazio massimo compensabile a rettangolo,
rispettando la velocità limite negativa impostata.
7 Spazio negativo Tempo, Accelerazione, Velocità Limite, Spazio compensabile a trapezio, rispettando
Velocità Slave l’accelerazione e la velocità limite negativa impostate.
10 Tempo Spazio, Velocità Slave, Velocità Limite Durata del recupero a triangolo rispettando la velocità
limite
11 Tempo Spazio, Velocità Slave, Accelerazione Durata del recupero a triangolo, rispettando
l’accelerazione

Doc. MS270103 - Ed. 05 - 9 aprile 2004 157


Axes utilities

12 Tempo Spazio, Velocità Limite, Velocità Slave Durata del recupero a rettangolo, rispettando la
velocità massima impostata.
13 Tempo Spazio, Accelerazione, Velocità Limite, Durata del recupero a trapezio, rispettando
Velocità Slave l’accelerazione e la velocità massime impostate.
20 Accelerazione Spazio, Tempo, Velocità Slave Accelerazione massima risultante dal recupero a
triangolo.
21 Accelerazione Spazio, Tempo, Velocità Limite, Accelerazione massima risultante dal recupero a
Velocità Slave trapezio.
30 Velocità limite Spazio, Tempo, Velocità Slave Incremento di velocità massimo generato dal recupero
a triangolo.
31 Velocità limite Spazio, Tempo, Accelerazione, Velocità Incremento di velocità massimo generato dal recupero
Slave a trapezio.
40 Spazio positivo Spazio master, Velocità Master, Spazio massimo compensabile a triangolo rispettando
Velocità Limite, Velocità Slave la velocità limite
41 Spazio positivo Spazio master, Accelerazione, Velocità Spazio massimo compensabile a triangolo rispettando
Master, Velocità Slave l’accelerazione
42 Spazio positivo Spazio master, Velocità Limite, Spazio massimo compensabile a rettangolo,
Velocità Master, Velocità Slave rispettando la velocità limite positiva impostata.
43 Spazio positivo Spazio master, Accelerazione, Velocità Spazio compensabile a trapezio, rispettando
Limite, Velocità Master, Velocità Slave l’accelerazione e la velocità limite positiva impostate.
44 Spazio negativo Spazio master, Velocità Master, Spazio massimo compensabile a triangolo rispettando
Velocità Limite, Velocità Slave la velocità limite
45 Spazio negativo Spazio master, Accelerazione, Velocità Spazio massimo compensabile a triangolo rispettando
Master, Velocità Slave l’accelerazione
46 Spazio negativo Spazio master, Velocità Limite, Spazio massimo compensabile a rettangolo,
Velocità Master, Velocità Slave rispettando la velocità limite negativa impostata.
47 Spazio negativo Spazio master, Accelerazione, Velocità Spazio compensabile a trapezio, rispettando
Limite, Velocità Master, Velocità Slave l’accelerazione e la velocità limite negativa impostate.
50 Spazio master Spazio, Velocità Master, Velocità Spazio master minimo per poter garantire il recupero a
Limite, Velocità Slave triangolo rispettando la velocità limite
51 Spazio master Spazio, Accelerazione, Velocità Master, Spazio master minimo per poter garantire il recupero a
Velocità Slave triangolo rispettando l’accelerazione impostata
52 Spazio master Spazio, Velocità Limite, Velocità Spazio master che consente di compensare a
Master, Velocità Slave rettangolo rispettando i parametri limite impostati.
53 Spazio master Spazio, Accelerazione, Velocità Limite, Spazio master esatto che consente di compensare a
Velocità Master trapezio rispettando i parametri limite impostati.
60 Accelerazione Spazio, Spazio master, Velocità Master, Accelerazione minima garantita nel recupero a
Velocità Slave triangolo.
61 Accelerazione Spazio, Spazio master, Velocità Limite, Accelerazione esatta garantita rispettando i parametri
Velocità Master, Velocità Slave limite impostati per la soluzione a trapezio.
70 Velocità limite Spazio, Spazio master, Velocità Master, Incremento di velocità generato dal recupero a
Velocità Limite, Velocità Slave triangolo in base ai parametri impostati.
71 Velocità limite Spazio, Spazio master, Accelerazione, Incremento di velocità generato dal recupero a
Velocità Master, Velocità Slave triangolo in base ai parametri impostati.
72 Velocità limite Spazio, Spazio master, Velocità Master, Incremento di velocità massimo generato dal recupero
Velocità Slave a rettangolo.
73 Velocità limite Spazio, Spazio master, Accelerazione, Incremento di velocità generato dal recupero a
Velocità Master, Velocità Slave trapezio in base ai parametri impostati.
80 Velocità Master Spazio, Spazio master, Velocità Limite, Velocità del master, tale da garantire il recupero a
Velocità Slave triangolo in base alla velocità limite impostata.
81 Velocità Master Spazio, Spazio master, Accelerazione, Velocità del master, tale da garantire il recupero a
Velocità Slave triangolo in base all’accelerazione limite impostata..
82 Velocità Master Spazio, Spazio master, Velocità Limite, Velocità massima del master, per poter garantire il
Velocità Slave recupero a rettangolo.
83 Velocità Master Spazio, Spazio master, Accelerazione, Velocità massima del master, per poter garantire il
Velocità Limite, Velocità Slave recupero a trapezio con i parametri impostati.
Tabella 9.3

158 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 9 RECUPERO GIOCO

I parametri ed il tipo di calcolo vanno posti in una tabella di LongWord, di cui deve essere
specificato l’indirizzo iniziale in ACC1; il comando non altera il funzionamento di eventuali
compensazioni già attive sull’asse. Il valore richiesto viene rilasciato sia in ACC1 che nella relativa
posizione nella tabella di passaggio parametri: in questo modo la tabella può essere
successivamente utilizzata per impostare tali parametri all’asse; l’indirizzo della tabella di ingresso
viene spostato in ACC2 e quindi è ancora disponibile. Per i parametri non necessari deve comunque
essere riservato lo spazio in tabella (vedi tabella 4).

Cella offset Descrizione


0 0 Entità del gioco espresso in impulsi
1 4 - Tempo di compensazione espresso in numero di scansioni oppure
- Spazio master di compensazione espresso in impulsi
2 8 Velocità limite per l’asse slave nella soluzione a trapezio espressa in unità interne
3 12 Velocità asse master di riferimento (solo per recupero a spazio)
4 16 Accelerazione limite per la compensazione espressa in unità interne
5 20 Abilitazione raccordo su rampa di recupero (ininfluente)
6 24 Riservata
Tabella 9.4

Classe di appartenenza: Funzioni recupero gioco


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Tipo del calcolo da effettuare (vedi tabella 3)
ACC2: indirizzo tabella parametri
Parametri restituiti: ACC1: Valore del parametro calcolato
ACC2: Indirizzo tabella parametri
Esempio: sull’attivazione di un merker si vogliono testare i parametri da passare alla funzione di recupero, per
verificare se sono compatibili con una compensazione a trapezio del gioco dell’asse

* TESTA PARAMETRI PER RECUPERO


U @M_CalcClearance
IF
R @M_CalcClearance
SEL @AX_1
* IMPOSTA PARAMETRI PER RECUPERO DEL GIOCO
L KZ0 * impulsi di gioco da compensare: parametro cercato
T @DD_Table0
L KZ40 * numero di Tc per recuperare il gioco
T @DD_Table1
L KZ1310720 * velocità limite del recupero
T @DD_Table2
L KZ0 * vel.di regime del master: Ininfluente per recupero a tempo
T @DD_Table3
L KZ65536 * accelerazione limite per il recupero
T @DD_Table4
L KZ0
T @DD_Table5 * Tipo di rampa per recupero: ininfluente
L KZ0
T @DD_Table6 * Riservata

LA @DD_Table0 * carica indirizzo iniziale tabella parametri


L KZ2 * richiede il calcolo del recupero max consentito
C cm-clearcal * per recupero a tempo
T @DD_Clearance
L KZ300 * gioco rilevato per l’asse
<F
= @M_OkClearance
ENDIF

Doc. MS270103 - Ed. 05 - 9 aprile 2004 159


Axes utilities

readclearmst
Comando che legge posizione e velocità dell’eventuale master associato all’asse attualmente
selezionato. Restituisce in ACC1 la quota ed in ACC2 la velocità del master.

Classe di appartenenza: Funzioni recupero gioco


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: quota master in impulsi
ACC2: Velocità master in unità interne

9.2.1 Definizione routine utente

Tra le modalità di lettura della quota master, nel caso di recupero gioco in spazio, vi è quella
attraverso una routine definita dall’utente, che può essere scritta in AWL utilizzando uno dei
blocchi #INT a disposizione. Questa routine può essere usata per rielaborare la posizione di un asse
oppure per generare tale grandezza a prescindere dall’esistenza di un vero e proprio asse (ad
esempio quota frutto di elaborazione matematica).
I valori in uscita a tale funzione devono essere scritti in apposite variabili nelle quali l’asse slave si
aspetta di trovarli.

Le regole da rispettare per la realizzazione di una routine utente di generazione quota per l’asse
slave sono di seguito elencate:

• La funzione va scritta in AWL in uno dei blocchi #INT a disposizione. In alternativa la routine
può essere scritta in ASSEMBLER
• La posizione generata deve essere scritta della variabile asse PosMClear. Tale variabile è una
LongWord (4 byte) e necessita sia specificato il numero dell’asse slave al quale appartiene.
• La velocità generata deve essere scritta della variabile asse VelMClear. Tale variabile è una
LongWord (4 byte) e necessita sia specificato il numero dell’asse slave al quale appartiene.
• Se nel blocco #INT vengono usate funzioni che richiedono la selezione dell’asse, bisogna far in
modo di salvare il numero di asse precedentemente selezionato per poi ripristinarlo in uscita dal
blocco.

Si riporta un esempio di routine che consente di leggere la quota da una variabile del PLC per
passarla all’asse slave 2. L’indirizzo di tale routine può essere generato da AWL tramite la Call
“addrint” al quale occorre specificare il numero del blocco #INT usato.

* blocco di generazione posizione master per l’asse slave 2


#INT 1
L @DD_MasterQuota
T D”2 PosMClear” * si fa notare che il numero dell’asse slave precede
BE * il nome della variabile

* generazione dell’indirizzo del blocco #INT1


L KZ1 * numero del blocco
C addrint * calcola indirizzo iniziale e lo pone in ACC1. N.B.: il
* precedente contenuto di ACC1 è spostato in ACC2
L KZ9 * modalità di lettura
TAK * scambia ACC1 con ACC2: supplisce peculiarità della

160 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 9 RECUPERO GIOCO

* funzione “addrint”
C cm-clearrdm

9.3 ESEMPI DI RECUPERO GIOCO IN AWL

Futuro

9.4 COMANDI FORTH

CM-CLEARMST
Comando che configura il numero di sistema remoto (HDLC) o di canale del dispositivo (encoder
locale) ed il numero di asse utilizzati come master per il recupero in spazio del gioco per l’asse
selezionato. I parametri vanno posti sullo stack prima di richiamare il comando. Il comando a senso
di essere chiamato solo se si applica il recupero gioco su spazio master.

Sintassi: master system axis ---


Argomenti: master Numero dell’asse usato come master nel recupero a spazio
system Numero del sistema su cui si trova l’asse master (nel caso di rete di sistemi) o canale
del dispositivo (nel caso di encoder locale)
axis numero dell’asse di cui si vogliono impostare i parametri

CM-CLEARRDM

Comando che configura la modalità di lettura della quota dal master assegnato all’asse attualmente
selezionato; inoltre è possibile specificare l’indirizzo di una routine utente dedicata alla lettura
personalizzata della quota e della velocità di riferimento per il recupero a spazio del gioco. I
parametri vanno posti sullo stack prima di richiamare il comando. Il comando a senso di essere
chiamato solo se si applica il recupero gioco su spazio master.
Nel caso venga programmata una modalità di lettura non supportata dal sistema, la quota e la
velocità restituite sono poste a 0.

Sintassi: mode addr axis ---


Argomenti: mode modalità di lettura master (vedi tabella 9.1 del relativo comando AWL)
addr indirizzo routine utente per lettura master (0 se nulla)
axis numero dell’asse di cui si vogliono impostare i parametri

CM-CLEARMODE
Comando che carica i parametri da usare per la compensazione del gioco. I parametri vanno posti
sullo stack prima di richiamare il comando. I parametri sono subito resi attivi, quindi, onde evitare
discontinuità di pilotaggio dell’asse, occorre verificare che il recupero non sia attivo. Il caricamento
dei parametri non abilita la gestione del recupero.

Sintassi: Clearance Period Speed MasterSpeed Acceleratio RampType Mode axis ---
Argomenti: Clearance Entità del gioco espresso in impulsi
Period tempo di compensazione espresso in tempi di campionamento oppure spazio master

Doc. MS270103 - Ed. 05 - 9 aprile 2004 161


Axes utilities

Speed velocità limite slave


MasterSpeed velocità master (usato solo per recupero a spazio)
Acceleration Accelerazione limite per la compensazione espressa in unità interne
RampType abilita raccordo su rampa di recupero (0 / 1)
Mod modo di recupero gioco:
0 = compensazione a tempo su inversione di direzione
1 = compensazione a spazio su inversione di direzione
2 = compensazione a tempo su inversione e riposizionamento su lato a
gioco nullo a fine movimento.
3 = compensazione a spazio su inversione e riposizionamento su lato a
gioco nullo a fine movimento.
axis numero dell’asse di cui si vogliono impostare i parametri

CM-CLEARENAB

Comando che attiva la gestione della compensazione del gioco sull’asse indicato.

Sintassi: axis ---


Argomenti: axis numero dell’asse di cui si vuole attivare la compensazione del gioco

CM-CLEARDISA
Comando che disabilita la gestione della compensazione del gioco sull’asse indicato.

Sintassi: axis ---


Argomenti: axis numero dell’asse di cui si vuole disattivare la compensazione del gioco

CM-CLEARRES
Comando che resetta le variabili di generazione della compensazione del gioco sull’asse indicato.

Sintassi: axis ---


Argomenti: axis numero dell’asse

CM-?CLEAR

Comando che verifica se sull’asse indicato è in corso la generazione del profilo di compensazione
del gioco. Restituisce un flag di vero o falso.

Sintassi: axis --- tf | ff


Argomenti: axis numero dell’asse
tf | ff flag di vero o falso; 1=recupero in corso

CM-CLEARSTS
Comando che verifica per l’asse specificato, lo stato della generazione del profilo di compensazione
e il lato sul quale l’asse è in presa.

Sintassi: axis --- direction clearance

162 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 9 RECUPERO GIOCO

Argomenti: axis numero dell’asse


direction lato su cui è in presa l’asse:
0 = lato a gioco nullo
0 <> lato a gioco recuperato
clearance entità del gioco ancora da recuperare espresso in impulsi

CM-CLEARCAL

Il comando stima e determina i parametri con i quali si intende compensare il gioco del sistema. I
parametri usati sono lo spazio (gioco), il periodo di recupero, l’accelerazione massima applicabile
al recupero e le velocità master e slave di recupero. Le combinazioni ammesse e gestite dal
comando sono riportate nella tabella 9.3 del relativo comando AWL.
I parametri ed il tipo di calcolo vanno posti nello stack prima di richiamare il comando; il comando
non altera il funzionamento di eventuali compensazioni già attive sull’asse. Il valore richiesto viene
rilasciato sullo stack al termina del comando. I parametri non necessari devono comunque essere
passati al comando.

Sintassi: Clearance Period Speed MasterSpeed Acceleration RampType TypeCalc --- output
Argomenti: Clearance Entità del gioco espresso in impulsi
Period tempo di compensazione espresso in tempi di campionamento oppure spazio master
Speed velocità limite slave
MasterSpeed velocità master (usato solo per recupero a spazio)
Acceleration Accelerazione limite per la compensazione espressa in unità interne
RampType abilita raccordo su rampa di recupero (ininfluente)
TypeCalc Tipo calcolo (vedi tabella 9.3 del relativo comando AWL
Output Parametro restituito dal calcolo

READCLEARMST

Comando che legge posizione e velocità dell’eventuale master associato all’asse specificato,
restituendole sullo stack.

Sintassi: axis --- quota speed


Argomenti: axis numero dell’asse
quota quota master in impulsi
speed Velocità master in unità interne

Doc. MS270103 - Ed. 05 - 9 aprile 2004 163


Axes utilities

capitolo 10 RUOTA DI MISURA

La libreria comprende una serie di funzioni che consentono di gestire la sincronizzazione della
posizione di un asse con quella acquisita mediante un encoder ausiliario associato all’asse stesso, in
modo tale da recuperare eventuali errori di slittamento tra il motore e la meccanica da esso mossa. Il
caso classico è rappresentabile dall’alimentatore di linee di profila o di taglio della lamiera: il
motore fa avanzare il materiale tramite un rullo che, soprattutto nelle fasi di accelerazione, è
soggetto a slittamento, e che quindi rende imprecisa la reale misurazione dell’avanzamento del
materiale. Tale imprecisione viene rilevata e compensata utilizzando un secondo encoder montato
su una ruota di misura appoggiata sul materiale, che viene mossa solo dal reale movimento del
materiale e che quindi non è influenzata da nessun slittamento.

La sincronizzazione della posizione consiste nel rilevare in tempo reale lo scostamento tra le
posizioni lette dai due trasduttori e compensare l’eventuale errore sommando alla posizione
dell’asse, un profilo di posizione supplementare che evolve a tempo.

L’errore di scorrimento rispetto alla quota dell’encoder ausiliario può essere calcolato riferito alla
quota reale dell’asse oppure alla quella teorica. Il secondo caso è utile quando non è disponibile il
secondo encoder di verifica dello slittamento del materiale, ma si desidera comunque tener sotto
controllo lo slittamento stesso: in questi casi è molto difficile chiudere il loop di posizione del
sistema in quanto l’eventuale slittamento del materiale comporta una probabile brusca reazione da
parte del PID di controllo; inoltre, l’eventuale soluzione di effettuare i movimenti in catena aperta
implica una variabilità sia della precisione del movimento che della durata dello stesso, essendo
queste funzione dello slittamento del sistema. Il problema può essere risolto ponendo l’asse in
catena chiusa, ma con i parametri del PID azzerati, in modo da avere a disposizione il profilo
teorico di movimento da ‘inseguire’ con l’encoder ausiliario, ed abilitare la compensazione rispetto
alla posizione teorica dell’asse. A partire da queste condizioni, l’abilitazione del recupero
slittamento consiste di fatto nel definire un loop di posizione più controllabile rispetto al PID
standard in quanto limitabile sia in accelerazione che in velocità, di preservare il profilo originario
di movimento e al tempo stesso una buona ripetitività del movimento stesso in termini di durata e di
precisione finale.

Il profilo di correzione può essere calcolato e compensato sia in modo continuo che in modo
periodico. Nel primo caso, l’azione di compensazione evolve in maniera continua, consentendo un
costante riallineamento delle posizioni dei due encoder; nel secondo caso, il calcolo e lo
smaltimento dell’eventuale errore di sincronismo avviene ciclicamente, secondo un profilo
addizionale che può essere, a seconda dei parametri di controllo impostati, triangolare o
trapezoidale (vedi capitolo dello Shift).

Il profilo di compensazione può essere applicato alla posizione reale dell’asse oppure compensando
il profilo di movimento dello stesso. Nel primo caso, la compensazione comporta una variazione
della velocità reale dell’asse, ma non della legge di movimentazione applicata (posizionamento,
camma, albero elettrico, ecc); nel secondo caso, la compensazione comporta l’alterazione
(allungamento o troncamento) del profilo teorico di movimentazione asse, ma non della velocità
reale dell’asse.

La compensazione viene applicata solo se lo scostamento misurato supera una soglia minima di
correzione, e comunque il valore della compensazione può essere limitato ad un valore massimo,
per evitare che l’azione di compensazione diventi troppo energica (e di conseguenza

164 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 10 RUOTA DI MISURA

destabilizzante). Al profilo di compensazione possono inoltre essere applicate delle limitazioni sui
valori di accelerazione e velocità massime addizionali, in modo da preservare comunque le
prestazioni massime del sistema. Nel caso di recupero periodico, lo scostamento viene calcolato
solo quando non è in corso la generazione del profilo di compensazione delle posizioni.

E’ possibile specificare una soglia oltre la quale lo scostamento tra i due encoder viene considerato
non recuperabile e l’asse viene posto automaticamente in errore di inseguimento (modo 12). Tale
condizione di errore può essere discriminata dalle altre del programma assi, testando il bit 4 della
variabile Cerr (vedi [1]). Il passaggio in errore di inseguimento comporta inoltre, la
disabilitazione della funzione di compensazione e l’azzeramento dei parametri relativi al
recupero in corso.

Il programma mette a disposizione dell’utente anche l’entità dello scorrimento compensato tra i due
encoder, consentendo quindi di valutare quando lo scorrimento delle due letture diventa troppo
elevato o quando è opportuno rivedere il rapporto di inseguimento tra i due encoder. Tale valore
viene resettato automaticamente ad ogni riabilitazione o sincronizzazione della funzione di
compensazione encoder.

Il funzionamento della procedura di sincronizzazione può essere così schematizzato:


• Recupero terminato o continuo Æ calcola scostamento come differenza tra posizione asse e
posizione ausiliaria convertita in impulsi asse
• Scostamento minore della soglia minima Æ non compensa
• Scostamento compreso tra le soglie minima e massima Æ applica compensazione
• Scostamento compreso tra la soglia massima e quella di errore Æ limita la compensazione al
valore massimo
• Scostamento superiore alla soglia di errore Æ asse in errore di inseguimento (modo=12)

La posizione dell’encoder ausiliario viene letta tramite la stessa funzione utilizzata nella libreria
“Shift”, quindi tale quota può provenire da:
• Un asse locale reale o simulato
• Un asse remoto (via HDLC) reale o simulato
• Un master virtuale dell’interpolazione
• Un encoder locale indipendente dal programma assi
• Un encoder acquisito via CAN open
• Una routine utente

Questo comporta che alcune combinazioni siano possibili solo in teoria, ma di fatto siano
inutilizzabili (ad esempio l’uso di assi simulati o virtuali).

La quota di un asse locale può essere quella reale (P1 o PDESID direttamente gestite dal
programma assi, quindi riferite alla posizione software del motore) oppure quella fisica (P1 o
PDESID private dalle compensazioni, quindi riferite alla posizione fisica del motore).

La posizione del master può essere gestita anche in modalità asincrona, è cioè possibile utilizzare
come posizione master un valore che non viene aggiornato in maniera sincrona alla scansione del
programma assi e che di conseguenza potrebbe non essere ancora disponibile al momento del
calcolo della compensazione: in questo caso la compensazione utilizza gli ultimi valori attendibili

Doc. MS270103 - Ed. 05 - 9 aprile 2004 165


Axes utilities

provenienti da tale master. In questa modalità di lavoro occorre segnalare al programma quando è
disponibile una nuova posizione master attraverso un apposito comando.

Un pratico esempio di utilizzo della modalità custom per la lettura della quota dell’encoder
ausiliario può essere quello di un sistema che necessiti di leggere tale valore da sorgenti diverse (ad
esempio due diversi encoder), a seconda delle condizioni di ciclo della macchina.

Tutti i parametri che riguardano la quota e la compensazione dell’errore sono espressi in impulsi
riferiti all’encoder dell’asse; di conseguenza, per poter essere correttamente interpretata, la
posizione letta dall’encoder ausiliario deve essere prima convertita in impulsi asse. Per questo
motivo è indispensabile che siano indicate le rispettive risoluzioni encoder espresse come numero
di impulsi a parità di spostamento fisico (impulsi per unità di spazio).

IMPORTANTE
E’ fondamentale che la gestione della sincronizzazione delle quote encoder sia attivata solo quando
il secondo encoder è in grado di rilevare la quota dell’asse (ad esempio quando sia il rullo che la
ruota di misura sono in appoggio sul materiale) e disattivata in tutti gli altri, in modo da non causare
la ‘fuga’ dell’asse.

IMPORTANTE
Perché il recupero dello scostamento tra i due encoder non comporti una perdita di precisione
eccessiva da parte dell’asse, occorre che la risoluzione finale della ruota di misura sia almeno pari a
quella del motore.

10.1 INSTALLAZIONE DELLA LIBRERIA

Per usare la libreria diella ruota metrica si deve innanzitutto installarla nella directory delle librerie.
Per fare questo è necessario usare il programma INSTALL presente nella libreria e quindi seguire le
indicazioni.
Dopo questa operazione nella directory delle librerie CMZ\LIB ci sarà una sottodirectory per la
libreria in oggetto.

Ora quando si userà il programma MAKEPRJ per iniziare un nuovo lavoro ci sarà una nuova
sezione ‘ASSI’ con la seguente selezione.

ASSI
..
[ ] Gestione encoder ausiliario, nucleo base
[ ] Gestione encoder ausiliario, test
..

Gestione encoder ausiliario, nucleo base È il nucleo principale.

Gestione encoder ausiliario, test È necessario se si desidera utilizzare i quadri di test


descritti in questo capitolo.

166 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 10 RUOTA DI MISURA

10.2 COMANDI AWL

Verranno ora elencati i comandi AWL per la gestione della libreria di gestione della ruota di misua.
Per la quasi totalità dei comandi viene riportato un esempio di utilizzo che però ha lo solo scopo di
indicare il modo in cui i dati di ingresso vengono passati al comando, mentre, per una migliore
comprensione , soprattutto inerente alla correlazione tra i vari comandi, si rimanda agli esempi del
paragrafo 10.3.

cm-mwhmst

Selezionato l’asse slave, con questo comando si può configurare:


In ACC2: Il numero dell’asse o del dispositivo logico (locale o CANopen) dichiarato nel blocco
#DEFPLC, da cui viene letta la quota encoder ausiliaria.
In ACC1: Il numero di sistema remoto nel caso in cui l’encoder sia letto da un asse tramite la rete
HDLC, oppure il numero di canale all’interno della scheda che rende disponibile il dispositivo
logico definito nel blocco #DEFPLC (ad esempio nel caso di canale encoder da scheda MINENC).
Nel caso in cui l’encoder ausiliario appartenga ad un asse locale oppure nel caso di dispositivo
CANopen o comunque non multi-canale, il valore caricato in ACC1 non viene interpretato. (vedi
anche comando cm-mwhrdm).

Classe di appartenenza: Funzioni ruota misura


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: numero di sistema remoto (HDLC)
numero di canale nel dispositivo logico (es.: lettura da scheda MINENC)
non interpretato nel caso di asse locale o dispositivo CANopen
ACC2: numero di asse nel sistema (locale o remoto)
numero del dispositivo logico (locale o CANopen)
Parametri restituiti: ACC1: Indeterminato
ACC2: Inalterato
Vedi anche: cm-mwhrdm, cm-mwhmode

Esempio: si assegna come encoder ausiliario per l’asse 1, il dispositivo logico 0 associato alla scheda encoder 2
canale 0, definito nel blocco DEFPLC.

#DEFPLC

* Apertura definizione : ENC n1 n2 n3 n4 n5


* n1 - Numero di scheda encoder software
* n2 - Numero di scheda encoder hardware
* n3 - Tempo di scansione scheda per gestione su RTC
* n4 - Tipo di gestione della scheda 0 / 1 / 2
* 0 - Lettura da programma assi
* 1 - Lettura su RTC
* 2 - Lettura da AWL
* n5 - Posizione del ponticello per IRQ
* 0 - non montato

* Sorgente dispositivo: scheda encoder 2 del sistema


* Destinazione: encoder logico 0 con scansione indipendente dal prg assi
ENC 0 2 0 2 0 * Ind.SW Ind.HW Time Ges.=AWL Irq=Disable
CHN 0 1 0 0 * Canale 0 Abilitato Frequenza 150 KHz
ENDDEV

* Avvia gestione delle periferiche

Doc. MS270103 - Ed. 05 - 9 aprile 2004 167


Axes utilities

GODEV
BE


SEL @AX_1
L KZ0 * numero del dispositivo logico
L KZ0 * numero del canale logico
C cm-mwhmst

cm-mwhrdm

Selezionato l’asse a cui viene associato l’encoder ausiliario, con questo comando si può
configurare:
In ACC2: La modalità di lettura della quota dall’encoder ausiliario assegnato, secondo i valori
della tabella sotto riportata.

NOTA
Nel caso venga programmata una modalità di lettura non supportata dal sistema, la quota e la velocità restituite
sono poste a 0.

Valore Descrizione Note


0 Legge quota reale (P1) e velocità teorica (VDESID) da un master locale Sempre possibile
1 Legge quota e velocità reali (P1 - V1) da un master locale
2 Legge quota e velocità teoriche (PDESID - VDESID) da un master locale
3 Legge quota reale (P1) e velocità teorica (VDESID) da un master remoto Solo su sistemi con
4 Legge quota e velocità reali (P1 - V1) da un master remoto HDLC
5 Legge quota e velocità teoriche (PDESID - VDESID) da un master remoto
6 Legge quota e velocità (S_P1 – S_VDESID) da un master virtuale (interpolazione)
Solo in caso di sistemi
con interpolazione
7 Legge quota e velocità da un encoder gestito in locale Solo se definiti i
driver di gestione da
AWL (vedi [2])
8 Legge quota e velocità da un encoder gestito via CANopen Solo in caso di sistemi
con CANopen
9 Quota e velocità restituite da una routine personalizzata Vedi modalità di
definizione routine
10 Legge quota reale (P1) e velocità teorica (VDESID) da un master locale, con Significativo solo se
ricostruzione della posizione fisica del motore attivato lo shift sulla
11 Legge quota e velocità reali (P1 - V1) da un master locale, con ricostruzione posizione del master.
della posizione fisica del motore
12 Legge quota e velocità teoriche (PDESID – VDESID) da un master locale, con
ricostruzione della posizione fisica del motore
Tabella 10.1

ATTENZIONE
Se al codice identificativo della modalità di lettura estrapolato dalla tabella 10.1 viene sommato
128, si abilita la gestione asincrona della lettura quota master (vedi comando cm-mwhprdy)

In ACC1: L’indirizzo dell’eventuale routine utente per la lettura personalizzata della quota e della
velocità di ausiliarie all’asse. Nel caso non si usi alcuna routine, ACC1 deve essere caricato con 0.

Classe di appartenenza: Funzioni ruota misura

168 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 10 RUOTA DI MISURA

Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: modalità di lettura quota
ACC2: indirizzo routine di lettura personalizzata (0 se nulla)
Parametri restituiti: ACC1: Indeterminato
ACC2: Inalterato
Vedi anche: cm-mwhmst, cm-mwhmode

Esempio: si programma la modalità di lettura da routine personalizzata per l’asse 1. La routine è stata scritta in AWL
nel blocco #INT 1 (vedi anche 10.2.1)


SEL @AX_1
L KZ 9 * modalità di lettura
L KZ1 * numero del blocco #INT programmato
C addrint * restituisce in ACC1 l’indirizzo della #INT 1
TAK
C cm-mwhrdm

#INT 1
L @DD_Quota
T D” 1 PosMWheel” * deposita quota su variabile asse 1
L @DD_Velocita
T D” 1 VelMWheel” * deposita velocità su variabile asse 1
BE

cm-mwhmode
Selezionato l’asse a cui viene associato l’encoder ausiliario, con questo comando si possono
impostare i limiti di velocità massima e di accelerazione massima che modificheranno il profilo di
recupero slittamento (vedi [1]), selezionare il tipo di compensazione da applicare ed abilitare o
meno la limitazione automatica del profilo di compensazione in base ai parametri limite
programmati.
In particolare:

In ACC2 deve essere caricato l’indirizzo di una tabella di LongWord che contiene i valori limite di
velocità e/o di accelerazione. La tabella deve essere così composta:

Cella Offset Descrizione


0 0 Periodo di durata di ogni azione di sincronizzazione
1 4 Limite superiore velocità assoluta slave espressa in unità interne
2 8 Limite inferiore velocità assoluta slave espressa in unità interne
3 12 Riservato
4 16 Accelerazione limite per la compensazione espressa in unità interne
5 20 Abilitazione raccordo su rampa di compensazione (0 / 1)
6 24 Riservato
Tabella 10.2

Attenzione che, anche se nella tabella ci sono dei parametri non utilizzati (le celle 3, 5 e 6), deve
essere riservata in memoria l’area per l’intera tabella (28 byte consecutivi = 7*4 byte ) anche se poi
non è necessario caricare alcun valore sulle due celle attualmente non utilizzate. Inoltre bisogna
tener presente che per escludere il controllo sulla velocità limite per lo slave, occorre che tali limiti
siano programmati con dei valori uguali o superiori rispetto al valore massimo di velocità che può
essere raggiunto dall’asse slave (ad esempio +VEMAX e –VEMAX dell’asse).

Doc. MS270103 - Ed. 05 - 9 aprile 2004 169


Axes utilities

In ACC1 deve essere caricato il tipo di algoritmo di compensazione da applicare, secondo la


seguente tabella:

Grandezza Modalità Limitazione Grandezza asse Ricostruzione quota


riferimento asse per applicazione automatica profilo di compensata fisica su posizione
modo
calcolo errore compensazione recupero asse
Bit 0 Bit 1 Bit 2 Bit 3 Bit 4
0 1 0 1 0 1 0 1 0 1
quota quota periodica continua no si quota profilo no si
reale teorica reale teorico
0 x x x x x
1 x x x x x
2 x x x x x
3 x x x x x
4 x x x x x
5 x x x x x
6 x x x x x
7 x x x x x
8 x x x x x
10 x x x x x
12 x x x x x
14 x x x x x
16 x x x x x
17 x x x x x
18 x x x x x
19 x x x x x
20 x x x x x
21 x x x x x
22 x x x x x
23 x x x x x
24 x x x x x
26 x x x x x
28 x x x x x
30 x x x x x
Tabella 10.3

Il valore può essere visto anche come la combinazione binaria delle informazioni, dove lo stato
di ogni singolo bit rappresenta lo stato della modalità operativa.

Grandezza riferimento asse per calcolo errore: indica se l’errore di scorrimento viene calcolato tra
la quota dell’encoder ausiliario e la quota reale oppure la quota teorica dell’asse.
Nel primo caso, è possibile utilizzare un asse in catena chiusa, al quale viene in pratica applicato un
secondo loop di retroazione, sulla base del confronto delle quote reali dei due encoder ad esso
associati.
Il secondo caso, può venire sfruttato quando il sistema è composto solo da un motore e da una ruota
metrica che rileva il movimento del materiale, non è cioè disponibile l’encoder del motore. In questi
casi è molto difficile chiudere il loop di posizione del sistema in quanto l’eventuale slittamento del
materiale comporta una probabile brusca reazione da parte del PID di controllo; inoltre, l’eventuale
soluzione di effettuare i movimenti in catena aperta implica una variabilità sia della precisione del
movimento che della durata dello stesso, essendo queste funzione dello slittamento del sistema. Una
efficace soluzione consiste nell’utilizzare l’encoder della ruota metrica anche come encoder
ausiliario e far si che il confronto per il calcolo dell’errore di slittamento venga fatto tra la posizione
teorica dell’asse (che quindi deve essere in catena chiusa ma con i parametri del PID azzerati) e la
quota reale dell’encoder ausiliario: in questo modo viene creato un loop di posizione che ha il

170 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 10 RUOTA DI MISURA

vantaggio di poter essere limitato nella prontezza e nell’energia di reazione e di garantire una
migliore ripetitività nella durata e nella precisione del movimento stesso.

Modalità applicazione compensazione: definisce il tipo di profilo di compensazione che viene


applicato all’asse per recuperare il sincronismo con l’encoder ausiliario. Sono possibili due
differenti modalità: la continua e la periodica.
Nel primo caso, l’errore di sincronismo tra i due encoder viene calcolato in modo continuo, come
pure il contributo di compensazione; questa modalità è indicata soprattutto in quei sistemi in cui lo
scorrimento tra le due posizioni encoder è continuo (ad esempio perché le risoluzioni non sono
precise), in quanto consente di stabilizzare l’azione di compensazione durante tutto il movimento
dell’asse, facendo in modo che questa venga smaltita solo alla fine del movimento stesso.
Nel secondo caso, l’errore di sincronismo viene calcolato e compensato ciclicamente, secondo un
profilo addizionale triangolare o trapezoidale; questa modalità è maggiormente indicata per
recuperare lo scorrimento in sistemi in cui tale errore si concentra in determinate fasi (ad esempio in
accelerazione).

Limitazione automatica profilo di recupero: definisce se nel calcolo del profilo di recupero
dell’errore di slittamento devono o meno essere utilizzati i parametri di limitazione
dell’accelerazione e di velocità massima.
In un caso, la correzione calcolata viene direttamente applicata al motore a prescindere dalle
conseguenze di un eventuale eccesso di correzione.
Nell’altro caso, il profilo di compensazione viene limitato in funzione delle prestazioni massime
ammesse dal sistema. La limitazione automatica del profilo di compensazione comporta che
l’eventuale errore potrebbe essere riassorbito in tempi più lunghi e/o mai completamente.

Grandezza asse compensata: definisce se il profilo di compensazione viene applicato compensando


la posizione reale dell’asse oppure compensando il profilo di movimento dello stesso.
Nel primo caso, la compensazione comporta una variazione della velocità reale del motore, senza
comunque che sia alterato il profilo teorico di movimento dell’asse (posizionamento, albero
elettrico, camma, ecc.).
Nel secondo caso, la compensazione comporta una variazione del profilo teorico di pilotaggio, in
modo da garantire la minore sollecitazione alla velocità reale al motore: ciò comporta, ad esempio,
che un posizionamento può terminare prima o dopo a seconda dello scorrimento tra i due encoder.

Ricostruzione quota fisica su posizione asse: definisce se il profilo di compensazione viene


calcolato confrontando la quota letta dall’encoder ausiliario, con la quota dell’asse (P1 o PDESID
gestiti dal programma assi) oppure con la quota fisica del motore (P1 o PDESID privati di eventuali
compensazioni applicate tramite Shift).
Nel primo caso, viene usata direttamente la quota gestita dal programma assi.
Nel secondo caso, la quota del programma assi viene privata delle eventuali compensazioni dello
shift, al fine di ricavare la posizione fisica del motore.

Classe di appartenenza: Funzioni ruota misura


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: modo di recupero: vedi tabella 3
ACC2: indirizzo tabella parametri
Parametri restituiti: ACC1: Indeterminato
ACC2: Inalterato

Esempio: sull’attivazione di un merker si parametrizza la funzione di sincronizzazione per l’asse 1

Doc. MS270103 - Ed. 05 - 9 aprile 2004 171


Axes utilities

* IMPOSTA PARAMETRI PER RECUPERO DELLO SCOSTAMENTO


U @M_SetWheelMode
IF
R @M_SetWheelMode
L KZ40 * periodo di modulazione recupero in tc
T @DD_Table0
C R.VEMAX * velocità massima asse
L KZ95
XFX
L KZ100
:FX * 95% VEMAX
T @DD_Table1 * limite superiore velocità di compensazione
KZW
T @DD_Table2 * limite inferiore velocità di compensazione
L KZ0
T @DD_Table3 * Riservato
L KZ400000
T @DD_Table4 * limite di accelerazione
L KZ0
T @DD_Table5 * Tipo di rampa di raccordo
L KZ0
T @DD_Table6 * Riservato
LA @DD_Table0
L KZ6 * 6=su quota REALE asse in modo continuo con limitazione
C cm-mwhmode * programmo il caricamento parametri
ENDIF

cm-mwhprdy

Comando utilizzato nella modalità asincrona di lettura posizione encoder ausiliario per segnalare
all’asse che tale quota è stata aggiornata e resa disponibile. Il comando deve essere invocato ogni
volta che la quota è pronta. Necessita che sia prima selezionato il numero dell’asse.

Classe di appartenenza: Funzioni ruota misura


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Ininfluente
ACC2: Ininfluente
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato

cm-mwhpar

Comando che programma le soglie minima e massima usate nel calcolo dell’errore di scorrimento
tra le posizioni degli encoder associati all’asse selezionato. Tali soglie sono utili per evitare
l’instabilità del sistema dovuta ad un eccesso di compensazione, in quanto definiscono un range
d’azione della compensazione stessa. Se viene abilitata la limitazione automatica della velocità e
dell’accelerazione del profilo di compensazione è opportuno disabilitare quantomeno il limite
massimo (ponendolo a zero), dato che l’azione di compensazione è già in questo caso limitata.
Il comando necessita sia indicata in ACC2 la soglia minima d’errore per l’intervento della
compensazione ed in ACC1 l’errore massimo compensabile in un'unica soluzione. Entrambi i valori
sono espressi in impulsi encoder riferiti all’asse.

Classe di appartenenza: Funzioni ruota misura


Modalità di chiamata: C =C

172 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 10 RUOTA DI MISURA

Modifica RLC: NO
Parametri richiesti: ACC1: scostamento massimo compensabile in impulsi
ACC2: scostamento minimo compensabile in impulsi
Parametri restituiti: ACC1: Indeterminato
ACC2: Inalterato

cm-mwhermax
Comando che programma il massimo scostamento ammesso tra le posizioni dei due encoder, oltre il
quale l’asse viene posto in errore di inseguimento. Il comando è attivo per l’asse selezionato e
necessita sia indicato in ACC1 lo scostamento massimo. Se il valore viene impostato a 0, la
gestione viene esclusa: questo significa che in caso di mancata lettura della ruota di misura,
l’asse principale continuerà a girare in continuo. Il valore è espresso in impulsi riferiti all’asse.
Il valore di default per la gestione dell’errore massimo attiva il controllo ponendo il limite a
32767 impulsi.

ATTENZIONE
Quando l’asse è posto in errore di inseguimento (modo 12) per il superamento della soglia massima
programmata, il programma setta il bit 4 della variabile assi Cerr. Inoltre, il passaggio in errore
comporta la disabilitazione della funzione di compensazione e l’azzeramento dei parametri relativi
al recupero in corso.

Classe di appartenenza: Funzioni ruota misura


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: valore massimo compensabile in impulsi
ACC2: ininfluente
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato

cm-mwhenab
Comando che attiva la gestione della sincronizzazione delle quote sull’asse attualmente selezionato.
E’ opportuno che il comando sia richiamato solo quando sia l’asse che l’encoder ausiliario sono
stati sincronizzati e messi in grado di leggere il movimento del sistema.

Classe di appartenenza: Funzioni ruota misura


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato

cm-mwhdisa
Comando che disabilita la gestione della sincronizzazione delle quote sull’asse attualmente
selezionato. E’ opportuno che questo comando sia usato ogni qualvolta che viene meno il legame
fisico tra encoder asse ed encoder ausiliario.

Classe di appartenenza: Funzioni ruota misura

Doc. MS270103 - Ed. 05 - 9 aprile 2004 173


Axes utilities

Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato

cm-mwhres

Comando che resetta le variabili di generazione del profilo di recupero dello scostamento tra
encoder asse ed encoder ausiliario sull’asse attualmente selezionato.

Classe di appartenenza: Funzioni ruota misura


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato

cm-mwhsync
Comando che consente di programmare le risoluzioni dei due encoder associati all’asse; inoltre il
comando sincronizza le quote correnti lette da tali encoder, azzerando di fatto qualsiasi errore di
scorrimento. Il comando necessita che siano indicati in ACC1 la risoluzione dell’encoder ausiliario
(in impulsi per unità di spazio) ed in ACC2 la risoluzione dell’encoder dell’asse. E’ opportuno che
il comando sia richiamato solo quando esiste il legame fisico tra encoder ausiliario ed encoder asse.
Il comando può essere richiamato anche per risincronizzare la posizione dei due encoder dopo un
errore di inseguimento, prima di riabilitare l’asse.

Classe di appartenenza: Funzioni ruota misura


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: risoluzione encoder ausiliario
ACC2: risoluzione encoder asse
Parametri restituiti: ACC1: Indeterminato
ACC2: Indeterminato

Esempio: ripristino il funzionamento dell’asse dopo un errore di inseguimento

L W” AX_Feeder modo”
L KZ12
=F
IF
SEL @AX_Feeder
C cm-lock * forza reset stato di allarme asse
L @DD_ResAxis
L @DD_ResWheel
C cm-mwhsync * comanda risincronizzazione encoder
C cm-mwhenab * riabilita funzione di sincronizzazione
ENDIF

174 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 10 RUOTA DI MISURA

cm-?mwh
Comando che verifica se sull’asse attualmente selezionato è in corso la compensazione dello
scostamento delle quote lette. Restituisce il flag RLC vero o falso.

Classe di appartenenza: Funzioni ruota misura


Modalità di chiamata: U C, UN C, O C, ON C
Modifica RLC: SI
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato

cm-mwhsts
Comando che verifica per l’asse attualmente selezionato, lo stato della generazione del profilo di
compensazione della posizione asse. Restituisce in ACC1 l’entità dello scostamento non ancora
compensato ed in ACC2 il periodo mancante a fine recupero.

Classe di appartenenza: Funzioni ruota misura


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Scostamento ancora da recuperare: 0=recupero terminato
ACC2: Periodo mancante a fine recupero
Esempio: si vuole testare lo stato corrente del recupero dello scostamento quote sull’asse selezionato

SEL @AX_1
C cm-mwhsts * interroga l’asse sullo stato in corso
T @DD_LackingRetrieval * entità del recupero non ancora applicata
TAK
T @DD_LackingPeriod

cm-mwhrdsk

Comando che restituisce l’entità dello scorrimento encoder fino a quel momento recuperata,
espressa in impulsi encoder primario. Tale grandezza viene azzerata ogni volta che si riabilita la
gestione del recupero slittamento (cm-mwhenab), dal comando di reset delle variabili di recupero
(cm-mwhres) e dal comando di risincronizzazione dei due encoder (cm-mwhsync). Il valore letto
viene restituito in ACC1, mentre in ACC2 viene spostato il precedente valore di ACC1.

Classe di appartenenza: Funzioni ruota misura


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: Scorrimento recuperato
ACC2: Precedente valore di ACC1
Vedi anche: cm-mwhres, cm-mwhsync, cm-mwhenab

Doc. MS270103 - Ed. 05 - 9 aprile 2004 175


Axes utilities

readmwhmst
Comando che legge posizione e velocità dall’encoder ausiliario associato all’asse attualmente
selezionato. Restituisce in ACC1 la quota ed in ACC2 la velocità.

Classe di appartenenza: Funzioni ruota misura


Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: indeterminato
ACC2: indeterminato
Parametri restituiti: ACC1: quota in impulsi encoder ausiliario
ACC2: Velocità in unità interne

10.2.1 Definizione routine utente

Tra le modalità di lettura della quota ausiliaria, vi è quella attraverso una routine definita
dall’utente, che può essere scritta in AWL utilizzando uno dei blocchi #INT a disposizione. Questa
routine può essere usata per rielaborare la posizione di un asse oppure per generare tale grandezza a
prescindere dall’esistenza di un vero e proprio asse (ad esempio quota frutto di elaborazione
matematica).
I valori in uscita a tale funzione devono essere scritti in apposite variabili nelle quali l’asse slave si
aspetta di trovarli.

Le regole da rispettare per la realizzazione di una routine utente di generazione quota per l’asse
slave sono di seguito elencate:
• La funzione va scritta in AWL in uno dei blocchi #INT a disposizione. In alternativa la routine
può essere scritta in ASSEMBLER
• La posizione generata deve essere scritta della variabile asse PosMWheel. Tale variabile è una
LongWord (4 byte) e necessita sia specificato il numero dell’asse slave al quale appartiene.
• La velocità generata deve essere scritta della variabile asse VelMWheel. Tale variabile è una
LongWord (4 byte) e necessita sia specificato il numero dell’asse slave al quale appartiene.
• Se nel blocco #INT vengono usate funzioni che richiedono la selezione dell’asse, bisogna far in
modo di salvare il numero di asse precedentemente selezionato per poi ripristinarlo in uscita dal
blocco.

Si riporta un esempio di routine che consente di leggere la quota dell’encoder ausiliario da due
diverse sorgenti, a seconda delle condizioni operative della macchina. Tali informazioni sono
passate all’asse 2. L’indirizzo di tale routine può essere generato da AWL tramite la Call
“addrint” al quale occorre specificare il numero del blocco #INT usato.

* blocco di generazione posizione ausiliaria per l’asse 2


#INT 1
* Verifica richiesta scambio delle sorgenti encoder:
* @M_State = 0 Æ usa ENC0
* @M_State = 1 Æ usa ENC1
* Occorre rispettare la relazione Quota_ENC0 = QuotaENC1 + offset
U @M_State
D @M_PrevState
IF
* Scambio della sorgente encoder da ENC0 a ENC1: ricalcola offset

176 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 10 RUOTA DI MISURA

L D” 0 P1” * quota reale ENC0


L D” 1 P1” * quota reale ENC1
-F
T @DD_OffsetEncoder
ENDIF

U @M_State
IF
* Legge quota da ENC1
L D” 1 P1” * quota reale ENC1
L @DD_OffsetEncoder
+F
ELSE
* Legge quota da ENC0
L D” 0 P1” * quota reale ENC0
ENDIF

T D”2 PosMWheel” * imposta variabile per quota ausiliaria


BE


* generazione dell’indirizzo del blocco #INT1
L KZ 1 * numero del blocco
C addrint * calcola indirizzo iniziale e lo pone in ACC1
L KZ 9 * modalità di lettura
TAK * scambia ACC1 con ACC2
C cm-mwhrdm * programma modalità di lettura

IMPORTANTE
Nell’esempio si presuppone che i due encoder abbiano la stessa risoluzione (encoder omogenei).
Nel caso in cui questo non sia possibile, occorre fare in modo che il passaggio da un encoder
all’altro comporti anche un riadeguamento delle risoluzioni encoder.

10.3 ESEMPI DI GESTIONE DELLA RUOTA DI MISURA IN AWL

Futuro.

10.4 COMANDI FORTH

CM-MWHMST

Per l’asse naxis (asse a cui viene definita la sincronizzazione della posizione encoder) con questo
comando si può configurare:

• (master) numero dell’asse o del dispositivo logico (locale o CANopen), da cui viene acquisita
la posizione dell’encoder ausiliario.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 177


Axes utilities

• (system.) numero di sistema remoto nel caso in cui l’encoder ausiliario sia letto da un asse
tramite la rete HDLC, oppure il numero di canale all’interno della scheda che rende disponibile
il dispositivo logico (ad esempio nel caso di canale encoder da scheda MINENC). Nel caso in
cui l’encoder ausiliario provenga da un asse locale oppure nel caso di dispositivo CANopen o
comunque non multi-canale, system non viene interpretato (vedi anche CM-MWHRDM).

Sintassi: master system axis ---


Argomenti: master Numero dell’asse usato come encoder ausiliario o di dispositivo logico locale o
CANopen
system Numero del sistema su cui si trova l’encoder ausiliario (nel caso di lettura da asse
inserito in una rete di sistemi) o di canale del dispositivo di lettura quota (encoder
locale)
axis numero dell’asse di cui si vogliono impostare i parametri

CM-MWHRDM
Comando che configura la modalità di lettura della quota dall’encoder ausiliario di sincronizzazione
della posizione assegnato all’asse attualmente selezionato; inoltre è possibile specificare l’indirizzo
di una routine utente dedicata alla lettura personalizzata della quota di riferimento per la
sincronizzazione dell’asse. I parametri vanno posti sullo stack prima di richiamare il comando

ATTENZIONE
Se al codice identificativo della modalità di lettura estrapolato dalla tabella 10.1 viene sommato
128, si abilita la gestione asincrona della lettura quota master (vedi comando CM-MWHPRDY)

Nel caso venga programmata una modalità di lettura non supportata dal sistema, la quota e la
velocità restituite sono poste a 0.

Sintassi: mode addr axs ---


Argomenti: mode modalità di lettura dispositivo (vedi tabella 10.1 del relativo comando AWL)
addr indirizzo routine utente per lettura quota (0 se nulla)
axis numero dell’asse di cui si vogliono impostare i parametri

CM-MWHMODE
Comando che carica i parametri da usare per la generazione del profilo di sincronizzazione delle
quote dei due encoder associati all’asse attualmente selezionato. I parametri vanno posti sullo stack
prima di richiamare il comando. I parametri sono subito resi attivi dal comando, quindi, onde
evitare discontinuità di pilotaggio dell’asse, occorre verificare che la gestione sia disabilitata. Il
caricamento dei parametri non abilita la gestione del recupero.

Sintassi: Period PosSpeedLim NegSpeedLim Acceleration JointMode RetrievalMode axes ---


Argomenti: Period Periodo di compensazione
PosSpeedLim Velocità limite superiore per la compensazione espressa in unità interne
NegSpeedLim Velocità limite inferiore per la compensazione espressa in unità interne
Acceleration Accelerazione limite per la compensazione espressa in unità interne
JointMode Abilita raccordo su rampa di compensazione (0 / 1)
RetrievalMode modo di recupero: vedi tabella 10.3 dell’analogo comando AWL
axes numero dell’asse di cui si vogliono impostare i parametri

178 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 10 RUOTA DI MISURA

CM-MWHPRDY
Comando utilizzato nella modalità asincrona di lettura posizione encoder ausiliario per segnalare
all’asse che tale quota è stata aggiornata e resa disponibile. Il comando deve essere invocato ogni
volta che la quota è pronta. Necessita che sia prima selezionato il numero dell’asse.

Sintassi: axis ---


Argomenti: axis numero dell’asse al quale segnalare l’evento quota pronta

CM-MWHPAR
Comando che programma le soglie minima e massima usate nel calcolo dell’errore di scorrimento
tra le posizioni degli encoder associati all’asse selezionato. Tali soglie sono utili per evitare
l’instabilità del sistema dovuta ad un eccesso di compensazione, in quanto definiscono un range
d’azione della compensazione stessa. Se viene abilitata la limitazione automatica della velocità e
dell’accelerazione del profilo di compensazione è opportuno disabilitare quantomeno il limite
massimo (ponendolo a zero), dato che l’azione di compensazione è già in questo caso limitata.
Entrambi i valori sono espressi in impulsi riferiti all’asse.

Sintassi: min max axis ---


Argomenti: min soglia minima di errore per inizio compensazione
max valore massimo compensabile
axis numero dell’asse di cui si vogliono impostare i parametri

CM-MWHERMAX
Comando che programma il massimo scostamento ammesso tra le posizioni dei due encoder, oltre il
quale l’asse viene posto in errore di inseguimento. Se il valore viene impostato a 0, la gestione
viene esclusa: questo significa che in caso di mancata lettura della ruota di misura, l’asse
principale continuerà a girare in continuo. Il valore è espresso in impulsi riferiti all’asse. Il
valore di default per la gestione dell’errore massimo attiva il controllo ponendo il limite a
32767 impulsi.

ATTENZIONE
Quando l’asse è posto in errore di inseguimento (modo 12) per il superamento della soglia massima
programmata, il programma setta il bit 4 della variabile assi Cerr. Inoltre, il passaggio in errore
comporta la disabilitazione della funzione di compensazione e l’azzeramento dei parametri relativi
al recupero in corso.

Sintassi: errmax axis ---


Argomenti: errmax massimo scostamento ammesso tra i due encoder in impulsi asse
axis numero dell’asse di cui si vogliono impostare i parametri

Doc. MS270103 - Ed. 05 - 9 aprile 2004 179


Axes utilities

CM-MWHENAB
Comando che attiva la gestione della sincronizzazione delle quote sull’asse attualmente selezionato.
E’ opportuno che il comando sia richiamato solo quando sia l’asse che l’encoder ausiliario sono
stati sincronizzati e messi in grado di leggere il movimento del sistema.

Sintassi: axis ---


Argomenti: axis numero dell’asse di cui si vuole attivare la compensazione

CM-MWHDISA
Comando che disabilita la gestione della sincronizzazione delle quote sull’asse attualmente
selezionato. E’ opportuno che questo comando sia usato ogni qualvolta che viene meno il legame
fisico tra encoder asse ed encoder ausiliario.
Sintassi: axis ---
Argomenti: axis numero dell’asse di cui si vuole disattivare la compensazione

CM-MWHRES
Comando che resetta le variabili di generazione del profilo di recupero dello scostamento tra
encoder asse ed encoder ausiliario sull’asse attualmente selezionato.

Sintassi: axis ---


Argomenti: axis numero dell’asse

CM-MWHSYNC

Comando che consente di programmare le risoluzioni dei due encoder associati all’asse; inoltre il
comando sincronizza le quote correnti lette da tali encoder, azzerando di fatto qualsiasi errore di
scorrimento. Il comando necessita che siano indicati sullo stack la risoluzione dell’encoder
ausiliario (in impulsi per unità di spazio) e la risoluzione dell’encoder dell’asse. E’ opportuno che il
comando sia richiamato solo quando esiste il legame fisico tra encoder ausiliario ed encoder asse. Il
comando può essere richiamato anche per risincronizzare la posizione dei due encoder dopo un
errore di inseguimento, prima di riabilitare l’asse.

Sintassi: ris_ax ris_aux axis---


Argomenti: ris_ax risoluzione asse in impulsi per unità di spazio
ris_aux risoluzione encoder ausiliario in impulsi per unità di spazio
axis numero dell’asse

CM-?MWH

Comando che verifica se sull’asse attualmente selezionato è in corso la compensazione dello


scostamento delle quote lette. Restituisce un flag di vero o falso.

Sintassi: axis --- tf | ff

180 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 10 RUOTA DI MISURA

Argomenti: na numero dell’asse


tf | ff flag di vero o falso; 1=compensazione in corso

CM-MWHSTS

Comando che verifica per l’asse attualmente selezionato, lo stato della generazione del profilo di
compensazione della posizione asse. Restituisce l’entità dello scostamento non ancora compensato
ed il periodo mancante a fine recupero.

Sintassi: axis --- LackingRetr LackingPeriod


Argomenti: axis numero dell’asse
LackingRetr entità non ancora recuperata espressa in impulsi
LackingPeriod periodo di compensazione non ancora trascorso

CM-MWHRDSK
Comando che restituisce l’entità dello scorrimento encoder fino a quel momento recuperata,
espressa in impulsi encoder primario. Tale grandezza viene azzerata ogni volta che si riabilita la
gestione del recupero slittamento (CM-MWHENAB), dal comando di reset delle variabili di
recupero (CM-MWHRES) e dal comando di risincronizzazione dei due encoder (CM-
MWHSYNC).

Sintassi: na --- retrieval


Argomenti: na numero dell’asse
retrieval entità recuperata espressa in impulsi asse

READMWHMST
Comando che legge posizione e velocità dell’eventuale master associato all’asse specificato,
restituendole sullo stack.

Sintassi: axis --- quota speed


Argomenti: axis numero dell’asse
quota quota in impulsi
speed velocità in unità interne

10.5 TEST LIBRERIA

La libreria prevede la possibilità di compilare nel sistema un programma di test di ausilio alla
taratura delle funzioni di gestione del doppio encoder.

Il test viene avviato con la parola TST_MWH digitata da interprete Forth.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 181


Axes utilities

La pagina può essere suddivisa in quattro sezioni:


• Configurazione della modalità operativa
• Impostazione dei parametri di controllo
• Visualizzazione dello stato operativo e delle variabili di controllo
• Tasti funzione

Parametri di controllo
Nella pagina è possibile selezionare l’asse su cui è attiva la compensazione della ruota di misura e
modificare singolarmente i parametri di controllo dell’algoritmo di compensazione.
I primi cinque parametri sono quelli relativi al comando di caratterizzazione della modalità di
recupero (cm-mwhmode), anche se in questo caso, per motivi di sicurezza, non è consentito
pienamente modificare il modo vero e proprio di compensazione, ma solamente i valori limite di
lavoro.

Il secondo gruppo di parametri sono relativi al controllo dell’errore istantaneo di scorrimento e si


riferiscono nell’ordine ai valori impostabili mediante i comandi cm-mwhermax e cm-mwhpar.

Il terzo gruppo di parametri fanno riferimento ai valori impostabili tramite il comando di


sincronizzazione delle quote dei due encoder cm-mwhsync: si fa presente che ogni volta che si
conferma il valore di uno di questi due parametri, il programma richiama il comando di
sincronizzazione, con tutti i relativi effetti sul movimento dell’asse.

Stato operativo
In questa sezione vengono visualizzati lo stato operativo dell’asse e i valori di controllo della
funzione di compensazione dello scorrimento tra i due encoder.
Nell’ordine rispettivamente troviamo: modo operativo del programma assi, lo stato operativo della
funzione di compensazione, l’immagine del vettore di gestione compensazione, la quota
182 Doc. MS270103 - Ed.05 - 9 aprile 2004
capitolo 10 RUOTA DI MISURA

dell’encoder dell’asse e quella dell’encoder ausiliario, il valore corrente di scorrimento tra i due
encoder, il valore della velocità di compensazione generata dall’algoritmo, l’entità
complessivamente compensata fino a questo momento ed infine il valore istantaneo di
compensazione della posizione asse.
Gli ultimi tre valori raggruppati nella sezione “Auxiliary encoder source” mostrano la
configurazione corrente usata dall’asse per leggere la quota dell’encoder ausiliario ad esso
associato.

Tasti funzione
I asti funzione attivi in questa pagina sono qui di seguito elencati e commentati.

Consente di richiamare ed utilizzare le funzioni di taratura asse disponibili dal programma T_MOT
F1

F2 Consente l’accesso diretto alla pagina di impostazione parametri di controllo asse del programma T_MOT,
rendendo accessibili tutte le funzionalità previste in tale pagina. Se il programma T_MOT non è stato mai
richiamato, la prima volta il tasto funzione accede al menù completo di T_MOT

F3 Consente di modificare lo stato operativo della funzione di compensazione dello scorrimento dei due encoder

F4 Consente di cambiare la modalità di compensazione applicata per recuperare l’errore di scorrimento (continua o
periodica). Il tasto funzione è attivo solo quando la compensazione è disabilitata.

Abilita l’acquisizione da T_MOT nella modalità “modo utente”, presettando il vettore di acquisizione con una
F5 routine che consente la registrazione del profilo di velocità ausiliario, usato per compensare l’errore di
scorrimento.

F6 Abilita l’acquisizione da T_MOT nella modalità “modo utente”, presettando il vettore di acquisizione con una
routine che consente la registrazione del valore istantaneo dell’errore di scorrimento.

F7 Abilita o meno l’utilizzo della limitazione automatica dei valori di velocità ed accelerazione in fase di
compensazione.

ESC Esce dalla pagina di test e ritorna all’interprete Forth

Doc. MS270103 - Ed. 05 - 9 aprile 2004 183


Axes utilities

capitolo 11 CONTROLLO PREDITTIVO

In questo capitolo si vogliono fornire all'utente i comandi per utilizzare l’algoritmo di regolazione
predittivo. Inoltre sono descritte le avvertenze da seguire per garantire la compatibilità tra il
controllo predittivo ed alcune delle altre librerie CMZ.

11.1 PRINCIPIO DI FUNZIONAMENTO

L’algoritmo predittivo serve per migliorare l’efficienza della regolazione. Il suo effetto è
particolarmente evidente in sistemi che presentano un asse lento a rispondere ai comandi.
L’azione predittiva è strettamente legata al tempo di ritardo della risposta dell’asse, cioè il tempo
che trascorre dall’istante in cui parte il comando dal controllore a quando l’asse riesce
effettivamente a reagire all’eccitazione.

velocità

Tempo di ritardo

tempo
Figura 2

La variabile che caratterizza il predittivo è TPRED:


1. è una variabile propria dell’asse come lo sono i parametri di regolazione KP,KI,KD;
2. esprime il tempo di ritardo della risposta dell’asse valutato in Tc, cioè in numero di periodi di
campionamento. Per esempio se si dispone di un sistema a tre assi con tempo di campionamento
pari a 1 ms e si vuole esprimere un ritardo di 9 ms si deve configurare l’azione predittiva con:

TPRED = Tempo di ritardo / (Numero assi attivi*tempo di campionamento) = 3

3. è una Word, quindi se vuole accede da Forth è sufficiente scrivere:

num.asse TPRED @ : si ritrova sullo stack il valore di TPRED dell’asse num.asse;


val num.asse TPRED ! : si scrive val su TPRED dell’asse num.asse.

11.1.1 Impostazione dell’azione predittiva

L’azione predittiva può essere impostata in modo automatico utilizzando la procedura normale di
autotunig disponibile in T_MOT. Il valore che si ottiene è una stima del tempo di ritardo della
risposta dell’asse.

184 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 11 CONTROLLO PREDITTIVO

IMPORTANTE
Per poter utilizzare T_MOT con l’azione predittiva si deve compilare la libreria TMOT all’interno
del sistema. In alcuni sistemi la libreria è già presente nel firmware quindi deve essere ricompilata.
Questa operazione è indispensabile per garantire il corretto funzionamento di tutte le operazioni che
si possono eseguire da T_MOT ed inoltre per poter utilizzare la routine di taratura automatica
dell’azione predittiva.

In questo paragrafo sono riportate delle utili osservazioni da utilizzare se si volesse tarare
manualmente il predittivo, o se semplicemente si volessero fare delle valutazioni sulla correttezza
del valore di configurazione impostato.

IMPORTANTE
Per migliorare l’efficienza del controllo predittivo si consiglia di annullare l’eventuale contributo
integrale della regolazione presente nell’azionamento. In pratica di lasciare agire la sola azione
integrale del controllo CMZ.

11.1.2 Taratura del controllo predittivo

Per determinare un valore iniziale da attribuire all’azione predittiva si può eseguire un


posizionamento in catena aperta, cioè senza l’effetto della regolazione, e misurare il tempo di
ritardo tra la velocità teorica e quella reale (Figura 2).
Per migliorare la taratura si deve lavorare con il sistema in catena chiusa, cioè con la regolazione
attiva. Questo richiede che siano già stati tarati KN ed il PID (KP,KI)[1]. In questa situazione,
assegnando diversi valori all’azione predittiva, osservando il grafico della velocità dell’asse mentre
si eseguono dei posizionamenti si riesce a valutare se il valore impostato è corretto, troppo grande o
troppo piccolo.

velocità

Figura 3 tempo

Per esempio se si ottiene un profilo di velocità con un’ampia sovraelongazione rispetto al profilo
teorico, come riportato in figura 3, significa che il tempo di predizione impostato è troppo piccolo.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 185


Axes utilities

velocità

tempo
Figura 4

Se invece si presenta un profilo di velocità simile a quello di figura 4 allora il tempo di predizione è
troppo grande.
velocità

Figura 5 tempo

Quando si ottiene una risposta simile a quella di figura 5 allora si può dire di avere tarato
correttamente l’azione predittiva.
Per migliorare il movimento dell’asse, una volta terminata la taratura dell’azione predittiva, si può
provare a ritoccare i valori dei parametri del controllore PID (KP,KI,KD). Spesso si può aumentare
il valore di KP ed anche quello di KI. Purtroppo non esiste una regola da poter seguire quindi
questa operazione è lasciata a persone esperte e deve essere eseguita con cautela.

11.1.3 Osservazioni sull’errore di inseguimento

Quando l’azione predittiva è abilitata (TPRED diverso da zero) l’errore di inseguimento ha un


profilo simile a quello di figura 6.

186 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 11 CONTROLLO PREDITTIVO

velocità Profilo teorico


Profilo reale

tempo
Errore di
inseguimento

tempo
Figura 6

In pratica significa che l’asse si muove in ritardo per tutto il posizionamento rispetto al profilo
teorico. Può essere utile analizzare l’errore che effettivamente arriva al regolatore PID. Per fare
questo è sufficiente impostare T_MOT nel seguente modo:
1) agganciare la routine che prepara la grandezza interessata a T_MOT con il comando
LOOKP_ER T_MOT_ACQ da Forth;
2) entrare in T_MOT, entrare nella pagina “F1 - Selezionare configurazione sistema” ed infine
impostare “Variabile da acquisire” come Modo Utente.
A questo punto per visualizzare il profilo dell’errore si deve utilizzare la funzione di acquisizione di
un segnale disponibile dalla videata “Accesso ai parametri”. Per abilitare questa funzione è
sufficiente premere il tasto funzione F5 che avvia la registrazione. Per visualizzare il profilo
dell’errore si deve premere il tasto funzione F7 una volta completata la registrazione. L’analisi di
questo errore può essere utile nella taratura dei parametri KP,KI,KD del PID. Per altre informazioni
su T_MOT si può consultare il manuale [1].

11.2 INSTALLAZIONE DELLA LIBRERIA

Per usare la libreria del controllo predittivo si deve innanzitutto installarla nella directory delle
librerie. Per fare questo è necessario usare il programma INSTALL presente nella libreria e quindi
seguire le indicazioni.
Dopo questa operazione nella directory delle librerie CMZ\LIB ci sarà una sottodirectory per la
libreria in oggetto.

Ora quando si userà il programma MAKEPRJ per iniziare un nuovo lavoro ci sarà una nuova
sezione ‘CONTROLLO PREDITTIVO’ con la seguente selezione.

Doc. MS270103 - Ed. 05 - 9 aprile 2004 187


Axes utilities

CONTROLLO PREDITTIVO
..
[ ] Controllo predittivo, nucleo base
..

Controllo predittivo, nucleo base È il nucleo principale.

11.3 COMANDI AWL

cm-pstart

Attiva la regolazione con azione predittiva per tutti gli assi in utilizzo. Si deve richiamare una sola
volta (ad esempio entro il blocco #START) e deve essere fatto subito dopo il comando cm-start ed
eventualmente prima dell’abilitazione della libreria SHIFT.

Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Ininfluente
ACC2: Ininfluente
Parametri restituiti: ACC1: Indeterminato
ACC2: Indeterminato
Vedi anche:

Esempio: Si devono abilitare 3 assi con azione predittiva:

L KZ3
C cm-start ( programma assi
C cm-pstart ( abilita il predittivo

IMPORTANTE:
Particolare attenzione deve essere fatta quando si vuole utilizzare una regolazione diversa da quella
standard. Si deve essere sicuri di abilitare il predittivo dopo avere fatto la sostituzione tra il vettore
standard e quello specifico che si desidera utilizzare.

cm-psincr
Richiede una conoscenza molto approfondita dei sistemi CMZ e soprattutto delle funzioni di
generazione delle traiettorie. Se si sta realizzando una routine di generazione della traiettoria
custom da agganciare al programma assi (modo 11) allora potrebbe servire questo comando. Si
utilizza per sincronizzare il funzionamento dell’azione predittiva quando si impone un
cambiamento nella quota P1 letta dall’encoder senza passare per i comandi standard.

Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Ininfluente
ACC2: Ininfluente

Parametri restituiti: ACC1: Indeterminato


ACC2: Indeterminato

188 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 11 CONTROLLO PREDITTIVO

Vedi anche:

R.TPRED
Restituisce in ACC1 il valore dell’azione predittiva TPRED dell’asse selezionato.

Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Ininfluente
ACC2: Ininfluente
Parametri restituiti: ACC1: Valore di TPRED
ACC2: Indeterminato
Vedi anche:

Esempio: Si vuole leggere il valore di TPRED dell’asse @AX_asse0:

SEL @AX_asse0
C R.TPRED

W.TPRED

Impone all’azione predittiva TPRED dell’asse selezionato il valore contenuto in ACC1.

Modalità di chiamata: C =C
Modifica RLC: NO
Parametri richiesti: ACC1: Valore di TPRED
ACC2: Ininfluente
Parametri restituiti: ACC1: Indeterminato
ACC2: Indeterminato
Vedi anche:

Esempio: Si vuole imporre il valore contenuto nella data word @DW_TPRED a TPRED dell’asse @AX_asse0:

SEL @AX_asse0
L @DW_TPRED
C W.TPRED

11.4 COMANDI FORTH

Sono presentati i comandi per attivare, resettare e configurare la regolazione con predittivo. Sono
descritti prima quelli FORTH e poi quelli AWL.

CM-PSTART

Attiva la regolazione con azione predittiva per tutti gli assi in utilizzo. Si deve richiamare una sola
volta e deve essere fatto subito dopo il comando CM-START ed eventualmente prima
dell’abilitazione della libreria SHIFT.

Sintassi: ---
Argomenti:

Doc. MS270103 - Ed. 05 - 9 aprile 2004 189


Axes utilities

CM-PSINCR
Richiede una conoscenza molto approfondita dei sistemi CMZ e soprattutto delle funzioni di
generazione delle traiettorie. Se si sta realizzando una routine di generazione della traiettoria
custom da agganciare al programma assi (modo 11) allora potrebbe servire questo comando. Si
utilizza per sincronizzare il funzionamento dell’azione predittiva quando si impone un
cambiamento nella quota P1 letta dall’encoder senza passare per i comandi standard.

Sintassi: nasse ---


Argomenti: nasse : numero dell’asse

11.5 COMPATIBILITA CON LE ALTRE LIBRERIE

Quando si utilizza il controllo predittivo insieme alle seguenti librerie:


1. Taratura assi assistita TMOT;
2. Protocollo di comunicazione HDLC;
3. Traslazione della quota Shift;
si devono seguire delle semplici avvertenze per garantire il corretto funzionamento.

11.5.1 Taratura assi assistita T_MOT

Per poter utilizzare T_MOT con l’azione predittiva si deve compilare la libreria TMOT versioni
3.03.0028 o superiore all’interno del sistema. In alcuni sistemi la libreria è già presente nel
firmware quindi si deve essere ricompilata. Questa operazione è indispensabile per garantire il
corretto funzionamento di tutte le operazioni che si possono eseguire da T_MOT, altrimenti si
potrebbe verificare che l`asse vada in errore in modo inspiegabile facendo delle normali operazioni.
L’aggiornamento è comunque indispensabile per poter utilizzare la routine di taratura automatica
dell’azione predittiva.

11.5.2 Protocollo di comunicazione HDLC

Si deve fare attenzione quando si utilizzano sistemi che presentano il protocollo di comunicazione
HDLC già installato nel firmware., per poter utilizzare l’azione predittiva si deve ricompilare la
libreria HDLC. Se non si esegue questa operazione allora gli assi controllati via HDLC non
potranno utilizzare la regolazione con l’algoritmo predittivo, ma continueranno lo stesso ad essere
controllati con la regolazione standard.

11.5.3 Traslazione della quota (SHIFT)

Si deve avviare l’azione dello shift dopo avere fatto partire il predittivo. Per esempio il blocco
#START deve essere di questo tipo:

#START
L KZ 3
C cm-start [ Si controllano 3 assi

190 Doc. MS270103 - Ed.05 - 9 aprile 2004


capitolo 11 CONTROLLO PREDITTIVO

C cm-pstart [ Si avvia il controllo predittivo


C cm-shtini [ Si installa la routine di shift

Doc. MS270103 - Ed. 05 - 9 aprile 2004 191


Axes utilities

BIBLIOGRAFIA

[1] CMZ software – Gestione assi in AWL


[2] CMZ hardware – Schede NF0
[3] CMZ software – Gestione schede NF0
[4] CMZ software – Nozioni base

192 Doc. MS270103 - Ed.05 - 9 aprile 2004


INDICE ANALITICO

INDICE ANALITICO

cm-?clear 156 CM-GEARMST 115 CM-IU_TACC 52 CM-SHTLINK 90


CM-?CLEAR 162 cm-gearmsyn 104 cm-mincnv 12 cm-shtmode 74
CM-?CPT 64 CM-GEARMSYN 118 CM-MINCNV 14 CM-SHTMODE 89
cm-?gear 102 cm-gearpsl 103 cm-mwhdisa 173 cm-shtmst 72
CM-?GEAR 117 CM-GEARPSL 117 CM-MWHDISA 180 CM-SHTMST 88
cm-?gearmph 106 cm-gearrdm 98 cm-mwhenab 173 cm-shtrdm 73
CM-?GEARMPH 119 CM-GEARRDM 115 CM-MWHENAB 180 CM-SHTRDM 88
cm-?grt 131 cm-gearres 102 cm-mwhermax 173 cm-shtres 77
CM-?GRT 140 CM-GEARRES 117 CM-MWHERMAX 179 CM-SHTRES 90
cm-?mwh 175 cm-gearrstr 106 cm-mwhmode 169 cm-shtstr 77
CM-?MWH 180 CM-GEARRSTR 119 CM-MWHMODE 178 CM-SHTSTR 90
cm-?sht 77 cm-gearstr 101 cm-mwhmst 167 cm-shtsts 78
CM-?SHT 90 CM-GEARSTR 116 CM-MWHMST 177 CM-SHTSTS 90
cm-aenc 10 cm-gearsts 102 cm-mwhpar 172 cm-shttrg 76
CM-AENC 11 CM-GEARSTS 117 CM-MWHPAR 179 CM-SHTTRG 89
cm-clearcal 157 cm-geartrg 100 cm-mwhprdy 172 cm-sim 20
CM-CLEARCAL 163 CM-GEARTRG 116 CM-MWHPRDY 179 CM-SIM 21
cm-cleardisa 156 cm-geartsyn 104 cm-mwhrdm 168 cm-smin 13
CM-CLEARDISA 162 CM-GEARTSYN 118 CM-MWHRDM 178 CM-SMIN 14
cm-clearenab 155 cm-grtcal 133 cm-mwhrdsk 175 cm-ui_aacc 40
CM-CLEARENAB 162 CM-GRTCAL 140 CM-MWHRDSK 181 CM-UI_AACC 52
cm-clearmode 154 cm-grtcor 132 cm-mwhres 174 cm-ui_facc 38
CM-CLEARMODE 161 CM-GRTCOR 140 CM-MWHRES 180 CM-UI_FACC 51
cm-clearmst 153 cm-grtlink 132 cm-mwhsts 175 cm-ui_ispd 36
CM-CLEARMST 161 CM-GRTLINK 140 CM-MWHSTS 181 CM-UI_ISPD 50
cm-clearrdm 153 cm-grtmode 129 cm-mwhsync 174 cm-ui_mspd 37
CM-CLEARRDM 161 CM-GRTMODE 138 CM-MWHSYNC 180 CM-UI_MSPD 50
cm-clearres 156 cm-grtpcyc 137 cm-nac_quo 46 cm-ui_quo 35
CM-CLEARRES 162 CM-GRTPCYC 142 CM-NAC_QUO 53 CM-UI_QUO 50
cm-clearsts 157 cm-grtpend 137 cm-pac_quo 45 cm-ui_rat 41
CM-CLEARSTS 162 CM-GRTPEND 142 CM-PAC_QUO 53 CM-UI_RAT 52
cm-cptcor 60 cm-grtpini 136 cm-psincr 188 cm-ui_tacc 39
CM-CPTCOR 65 CM-GRTPINI 141 CM-PSINCR 190 CM-UI_TACC 51
cm-cptdis 56 cm-grtres 131 cm-pstart 188 cm-uiac_quo 45
CM-CPTDIS 64 CM-GRTRES 139 CM-PSTART 189 CM-UIAC_QUO 53
cm-cpterr 59 cm-grtstr 131 cm-scnv312 13 R.TPRED 189
CM-CPTERR 65 CM-GRTSTR 139 CM-SCNV312 14 readclearmst 160
cm-cptini 56 cm-grtsts 131 cm-senc 9 READCLEARMST 163
CM-CPTINI 63 CM-GRTSTS 140 CM-SENC 10 readgearmst 107
cm-cptlink 60 cm-grttrg 130 CM-SETACC 49 READGEARMST 120
CM-CPTLINK 65 CM-GRTTRG 139 cm-setcacc 34 readmwhmst 176
cm-cptquo 59 cm-inverter 18 cm-setcquo 33 READMWHMST 181
CM-CPTQUO 65 CM-INVERTER 19 CM-SETCQUO 49 readshtmst 82
cm-cptset 56 cm-iu_facc 39 cm-setcspd 33 READSHTMST 91
CM-CPTSET 64 CM-IU_FACC 51 CM-SETCSPD 49 TST_CAPTURE 66
cm-gearlink 107 cm-iu_ispd 37 cm-shtcal 79 TST_GEAR 122
CM-GEARLINK 120 CM-IU_ISPD 50 CM-SHTCAL 91 TST_GRT 147
cm-gearmode 99 cm-iu_mspd 37 cm-shtdisa 72 TST_MWH 181
CM-GEARMODE 116 CM-IU_MSPD 51 CM-SHTDISA 87 TST_SHT 91
cm-gearmph 105 cm-iu_quo 36 cm-shtenab 71 W.TPRED 189
CM-GEARMPH 119 CM-IU_QUO 50 CM-SHTENAB 87
cm-gearmst 98 cm-iu_tacc 39 cm-shtlink 78

Doc. MS270103 - Ed. 05 - 9 aprile 2004 193

Potrebbero piacerti anche