Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
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
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:
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.
4. Conversione da unità fisiche ad unità interne e viceversa delle grandezze posizione, velocità e
accelerazione (capitolo 4).
10. Funzioni di controllo con doppio encoder (ruota di misura) (capitolo 10).
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.
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.
ATTENZIONE
Questo manuale descrive le librerie con la seguente revisione:
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.
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.
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
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)
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.
cm-senc
Aggancia il descrittore standard per l’asse selezionato. Il descrittore deve essere agganciato prima
dell’avvio del programma assi (comando cm-start).
Esempio:
#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
…
…
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.
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).
• n.axis: è il numero dell’asse per la gestione del quale si vuole agganciare il descrittore standard.
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.
• n.axis: è il numero dell’asse per la gestione del quale si vuole agganciare il descrittore.
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.
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:
- 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.
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)
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
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”.
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”.
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).
• 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”.
• 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”.
• n.axis: è il numero dell’asse per la gestione del quale si vuole agganciare il descrittore della scheda 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]).
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
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:
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.
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.
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.
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.
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
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)
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
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.
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)
• 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.
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.
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 .
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)
Esempio:
#START
SEL AX0
C cm-sim * descrittore asse simulato per asse 0
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.
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)
• n.axis: è il numero dell’asse per la gestione del quale si vuole agganciare il descrittore per inverter.
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.).
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à ”.
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
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:
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:
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:
Quindi:
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:
Quindi:
Esempio 2:
Prendiamo in esame un asse circolare e si consideri di voler utilizzare le seguenti unità di misura:
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)
avremo:
avremo:
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
Cioè
15 mm = 143360 impulsi
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.
Si può scrivere:
In questo modo si riesce sempre a definire con precisione la definizione di spazio. Riproponendo
l’esempio in esame:
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:
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:
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.
R2 R4
M Rid R1
P1 P2 R3
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
in conclusione:
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:
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
In questo modo non si perde la precisione nella definizione della risoluzione delle quote e si può
impostare:
NOTA
Osservando che entrambi i numeri sono divisibili per 8 si potrebbe anche avere
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.
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.
- Quota in impulsi;
- Resto della conversione.
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:
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:
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
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
- 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)
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:
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 è:
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:
Partendo dalla quota iniziale nulla supponiamo di eseguire dei posizionamenti consecutivi di 1 passo ciascuno.
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.
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:
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.
START
Azzera 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).
Qui di seguito viene riportato l’elenco dei comandi della libreria “Utility per le conversioni delle
quote e delle velocità”
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.
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.
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.
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
se si desidera che l’unità di misura della velocità del decimo di metro al minuto si avrà
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
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
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.
Esempio: se si desidera convertire una quota da Unità Fisiche (Phisical Unit) ad Impulsi si scriverà:
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.
Esempio: se si desidera convertire la quota reale di un asse espressa in impulsi (P1) in un unità fisiche si scriverà:
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.
Esempio: Se si desidera comandare un asse in velocità impostando la velocità in unità fisiche si scriverà:
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.
Esempio: Se si desidera convertire la velocità massima dell’asse espressa in unità interne (VEMAX) in unità fisiche si
scriverà:
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.
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.
Esempio: Se si desidera convertire la velocità reale dell’asse (V1) in unità fisiche si scriverà:
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.
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.
cm-ui_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.
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.
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:
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
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.
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
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:
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.
IMPORTANTE
Le data @DD_Table0, DD_Table1, DD_Table2 devono essere consecutive in memoria (ad
esempio rispettivamente DD100, DD104 e DD108)
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.
@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:
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
* Posizionamento
L @DD_QuotaImp
L @DD_SpeedIU
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
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.
Oppure
Caso 1 Caso 2
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).
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à:
In questo esempio (1x307200)/31=9909.677419 che viene arrotondato per eccesso a 9910; il resto è -10.
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).
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.
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.
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:
Si può scrivere:
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
* 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
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
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
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).
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
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
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
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.
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
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
In questo capitolo si vogliono fornire all'utente le informazioni per l’utilizzo della libreria
denominata capture.
• 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.
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
..
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.
cm-cptdis
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:
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
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.
Esempio
Riprendendo l’esempio precedente, se si desidera testare l’arrivo dell’interrupt sull’ ingresso di ricerca zero dell’asse 1
si scriverà:
...
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.
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.
Esempio
Per leggere la quote dell’asse 0,1,2 catturate su l’interrupt dell’ingresso di ricerca zero dell’asse 1 si scriverà:
...
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.
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.
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.
Esempio
Vedi esempio conclusivo
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
#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
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
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
#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
...
BE
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.
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:
CM-CPTDIS
Permette di disinstallare la routine per la cattura delle quote.
Sintassi: ---
Argomenti:
CM-CPTSET
• Msk: è la maschera per selezionare quali sono gli assi del sistema la cui posizione ed errore
istantaneo saranno catturati sull’interrupt.
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.
CM-CPTQUO
Permette di leggere la posizione reale (variabile P1) catturata all’arrivo dell’interrupt.
CM-CPTERR
Permette di leggere l’errore di posizione istantaneo (variabile ER) catturato al momento
dell’interrupt.
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).
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.
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
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).
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.
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.
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.
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.
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”.
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
Spazio/tempo Spazio/tempo
periodo di evoluzione periodo di evoluzione
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.
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:
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
à à à à
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 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.
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.
ATTENZIONE
Il programma shift può essere compilato e utilizzato solo sui sistemi con la versione del programma
assi maggiore della 2.0.
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
..
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
PLC. Il comando può essere utilizzato anche per la riattivazione dopo una disabilitazione (vedi
comando cm-shtdisa).
cm-shtdisa
Comando che disabilita la gestione della compensazione dello shift sull’asse selezionato.
cm-shtmst
Esempio: Si vuole che l’asse slave subisca uno shift che viene eseguito intanto che un asse master locale percorre un
certo spazio.
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.
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.
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).
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:
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).
Esempio: Nel caso si desideri effettuare uno shift a tempo della posizione fisica con limitazione di velocità (caso 2)
* 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
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.
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.
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.
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)
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.
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.
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
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).
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
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
Esempio: Si vuole incrementare una variabile ogni qualvolta lo shift viene concluso
#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:
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:
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
* 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
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.
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
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.
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
* ...
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
* 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
* 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
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
; ***********************************************************
; * Blocco di esecuzione sincrona con evento di fine shift *
; ***********************************************************
#INT 2
INC @DD_Counter
BE
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).
CM-SHTDISA
Comando che disattiva la gestione della compensazione dello shift dell’asse naxis.
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).
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.
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.
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
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.
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.
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).
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.
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.
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.
La libreria prevede la possibilità di compilare nel sistema un programma di test di ausilio alla
taratura delle funzioni di gestione dello shift.
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.
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).
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.
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.
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.
Carrello
Mandrino
Passo di
avvolgimento
Dimensione bobina
Velocità
mandrino
Quota mandrino
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.
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
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.
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
Esempio: Si vuole che l’asse slave subisca sia legato in albero elettrico con asse master locale.
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.
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.
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).
cm-gearmode
Selezionato l’asse slave, con questo comando si possono impostare i limiti parametri di
adeguamento del rapporto di inseguimento.
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:
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.
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
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.
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.
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.
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
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.
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.
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
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
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.
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
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)
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
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
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.
ACC2: Ininfluente
Parametri restituiti: ACC1: Inalterato
ACC2: Inalterato
Vedi anche: cm-gearmsyn, cm-geartsyn, cm-?gearmph
Esempio:
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.
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.
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.
Esempio: Si vuole incrementare una variabile ogni qualvolta l’adeguamento del rapporto di albero elettrico è
terminato
#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.
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
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.
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.
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
; ****************************************************
; * 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
* ...
CLR @DW_Step * Resetta contatore di passi
* ...
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
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
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
INC @DW_Step
ENDIF
ENDOF
OF 1 * Eventuale avvio dei due master
* ..
* ..
* ..
ENDOF
ENDCASE
BE
; ***************************************************************
; * Blocco per la generazione della velocità e posizione master *
; ***************************************************************
#INT 1
* Salvo asse attivo
C r.asse
T @DW_ActiveAxis
* 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
* 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
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
SEL @AX_Slave
L @DD_DeltaSlave1 * Spazio slave di riferimento in impulsi
L @DD_DeltaMaster * Spazio master di riferimento in impulsi
C cm-gearstr
; ****************************************************
; * 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
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
L KZ1
T @DW_Gear1_2 * Segnalo gear attivo basato su @DD_DeltaSlave1
ENDOF
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.
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).
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.
CM-GEARMODE
Per l’asse slaveaxis (asse slave), con questo comando si possono impostare i parametri di
adeguamento:
In particolare:
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.
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.
CM-GEARRES
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.
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.
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).
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.
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.
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.
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.
CM-?GEARMPH
Comando che verifica se sull’asse attualmente selezionato è attiva la funzione di fasatura manuale.
Restituisce un flag di vero o falso.
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.
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.
READGEARMST
Comando che legge posizione e velocità dell’eventuale master associato all’asse specificato,
restituendole sullo stack.
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
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.
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.
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.
La libreria prevede la possibilità di compilare nel sistema un programma di test di ausilio alla
taratura delle funzioni di gestione dell’albero elettrico.
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.
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).
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
periodo
VDESID
master per
rapporto di Velocità slave generata
inseguimento
dall’albero elettrico
periodo
Vlimite
periodo
VDESID
slave
Velocità slave risultante
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
à à
à à
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.
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
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.
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
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.
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:
Tipo Descrizione
0 Recupero a tempo senza limitazione
1 Recupero in spazio senza limitazione
2 Recupero a tempo con limitazione
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.
cm-grtres
Comando che resetta le variabili di generazione dell’albero elettrico con recupero sull’asse
attualmente selezionato.
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.
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.
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.
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
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.
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.
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
…
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:
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).
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
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
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.
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:
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.
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.
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.
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:
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.
• 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:
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.
Futuro
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.
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.
CM-GRTRES
Comando che resetta le variabili di generazione dell’albero elettrico con recupero sull’asse indicato.
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.
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.
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.
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.
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.
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 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.
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.
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.
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.
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.
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.
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 2 2 2 3
periodo
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
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:
Trigger
A = periodo di fase slave
A B
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.
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:
Trigger
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.
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.
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.
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.
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.
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
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
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).
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).
Recupero
Velocità limite
gioco
Spazio/tempo
IMPORTANTE
Un movimento è dal lato di gioco nullo quando il bilancio complessivo delle compensazioni
applicate è nullo.
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.
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
..
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.
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.
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.
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.
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.
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
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.
#START
L KZ2
C cm-start * Avvia gestione programma assi
...
cm-cleardisa
Comando che disabilita la gestione della compensazione del gioco sull’asse attualmente
selezionato.
cm-clearres
Comando che resetta le variabili di generazione della compensazione del gioco sull’asse
attualmente selezionato.
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.
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
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.
Esempio: si vuole testare lo stato corrente del recupero gioco sull’asse selezionato
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:
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
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).
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.
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.
* funzione “addrint”
C cm-clearrdm
…
Futuro
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.
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.
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
CM-CLEARENAB
Comando che attiva la gestione della compensazione del gioco sull’asse indicato.
CM-CLEARDISA
Comando che disabilita la gestione della compensazione del gioco sull’asse indicato.
CM-CLEARRES
Comando che resetta le variabili di generazione della compensazione del gioco sull’asse indicato.
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.
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.
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.
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
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.
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
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.
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
..
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
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
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.
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.
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:
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).
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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à.
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.
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
…
* 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.
Futuro.
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.
• (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).
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.
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.
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.
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.
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.
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.
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.
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.
CM-?MWH
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.
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).
READMWHMST
Comando che legge posizione e velocità dell’eventuale master associato all’asse specificato,
restituendole sullo stack.
La libreria prevede la possibilità di compilare nel sistema un programma di test di ausilio alla
taratura delle funzioni di gestione del doppio encoder.
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.
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.
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.
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
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.
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.
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.
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.
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].
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.
CONTROLLO PREDITTIVO
..
[ ] Controllo predittivo, nucleo base
..
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:
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
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:
SEL @AX_asse0
C R.TPRED
W.TPRED
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
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:
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.
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.
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.
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
BIBLIOGRAFIA
INDICE ANALITICO