DEVICE EANPOS
1. Introduzione
Il device interno EANPOS è un tool residente nella CPU che permette di gestire il movimento di un asse meccanico con
un comando analogico a rampe trapezoidali o rampe ad “S”.
La funzione principale del device è quella di generare una traiettoria oprofilo di velocità che, opportunamente convertito
in un segnale di tensione proporzionale, comanda un azionamento e quindi l'asse ad esso collegato, per portarlo alla posizione
desiderata.
Il device include anche un processo di feed-back sulla misura rilevata dal trasduttore di posizione. Questa misura opportunamente
confrontata viene utilizzata per generare la retroazione.
La tensione di comando per l'azionamento viene generata da un dispositivo hardware DAC (Digital to Analogic Converter)
presente sul BUS QMOVE.
Per la sincronizzazione della posizione rilevata dal device con quella reale dell'asse, esiste una speciale procedura di
movimentazione detta ricerca di preset.
Il feed-back è di tipo PID+FF (proporzionale, integrale, derivativa e feed-forward).
1.1 Installazione
Dichiarazione device nel file di configurazione (.CNF)
Nel file di configurazione (.CNF), la sezione BUS deve essere dichiarata in modo tale che siano presenti le risorse hardware
necessarie allimplementazione del device EANPOS. Devono essere presenti almeno un contatore bidirezionale ed
una uscita analogica con risoluzione 16 bit. Il device può utilizzare anche un ingresso e una linea di interrupt per le funzioni
di ricerca di preset.
Nella sezione INTDEVICE del file .CNF deve essere aggiunta la seguente definizione:
;--------------------------------- ; Dichiarazione devices interni ;--------------------------------- INTDEVICE .. <nome_device> EANPOS TCamp ICont IntL IAZero IoutA
dove:
<nome device> | Nome assegnato al device |
EANPOS | Parola chiave che identifica il device posizionatore analogico |
TCamp | Tempo di campionamento device (1÷255 ms) |
ICont | Ingresso contatore bidirezionale (per evitare che il device utilizzi questa risorsa inserire i caratteri X.X) |
IntL | Numero della linea di interrupt dedicata per limpulso di zero dellencoder durante la fase di ricerca di preset. Valori ammessi: 1÷8 (per evitare che il device utilizzi questa risorsa, inserire il carattere X) |
IAZero | Ingresso di abilitazione per lacquisizione dellimpulso di zero del trasduttore durante la fase di ricerca di preset (per evitare che il device utilizzi questa risorsa inserire i caratteri X.X) |
IOutA | Indirizzo hardware del componente DAC delluscita analogica (per evitare che il device utilizzi questa risorsa inserire i caratteri X.X) |
N.B. È necessario che tutte le voci di definizione siano presenti sulla stessa linea. Nel caso in cui non si desideri associare una risorsa, ad esempio IAZero, si deve comunque inserire nel relativo campo la stringa X.X.
1.1.1 Esempio
;--------------------------------- ; Dichiarazione devices interni ;--------------------------------- INTDEVICE Asse_X EANPOS 2 2.CNT02 3 3.INP01 3.AN01
1.2 Funzionamento
1.2.1 Rilevazione posizione
Il device EANPOS acquisisce la posizione dellasse tramite i segnali di un trasduttore bidirezionale; questi segnali vengono utilizzati da un contatore interno. Il valore di questo contatore non esprime, in genere, direttamente la posizione dellasse nellunità di misura necessaria per lapplicazione. Il device non ha al suo interno il parametro cntratio, ma lascia allinstallatore la possibilità di lavorare con risoluzioni encoder non finite impostando i dati come spazio percorso in un giro encoder (measure) e numero di impulsi giro dellencoder (pulse). Il rapporto tra measure e pulse è la risoluzione dellencoder e deve avere valori compresi tra 1 e 0.000935.
1.2.2 Definizioni
1) Il parametro measure viene inserito in unità di misura senza punti decimali (ad esempio 100.0 millimetri viene inserito
1000 decimi di millimetro).
2) Il parametro pulse viene inserito in bit encoder per 4 (ad esempio se ho collegato un encoder da 1024 impulsi giro,
viene inserito 4096, se il parametro measure viene calcolato su un giro di encoder).
1.2.3 Punto decimale
Se per lunità di misura scelta é prevista anche la presenza di un punto decimale, le posizioni devono essere rappresentate sempre come valore intero e rappresentare lo spazio nellunità di misura senza punto decimale. La risoluzione deve quindi essere calcolata con la stessa formula e measure rappresenta la grandezza senza punto decimale. Il punto decimale verrà poi inserito nei visualizzatori in fase di rappresentazione del valore (es. come proprietà nel terminale operatore).
1.2.4 Velocità
Le velocità sono sempre espresse in unità di misura intere nellunità di tempo scelta. Da questo si ricava che il device deve
comunque conoscere la posizione del punto decimale dellunità di misura e questo viene fatto con il parametro decpt.
Questo parametro può assumere valori 0÷3.
N.B. Per rendere attivo il device inviare il comando INIT.
1.2.4.1 Esempio:
Si deve controllare una tavola rotante che abbia la precisione di 0,1° avente un encoder da 1024 impul si giro calettato direttamente;
si imposteranno i seguenti valori:
Asse:measure = 3600
Asse:pulse = 4096
Asse:decpt = 1
Per eseguire un posizionamento a 14.6 gradi bisogna inserire:
Asse:setpos = 146
Per impostare una velocità di 10 gradi al secondo bisogna digitare:
Asse:unitvel = 1
Asse:setvel = 10
1.3 Comandi e parametri
1.3.1 Simbologia adottata
Il nome del parametro, stato o comando viene riportato alla sinistra della tabella.
R
Indica se il relativo parametro o stato è ritentivo (al momento dellinizializzazione del device mantiene lo stato precedentemente definito), oppure lo stato che assume al momento dellinizializzazione del device.
Se il device non necessita di inizializzazione il campo R indica il valore che il parametro o stato assume allaccensione
della scheda.
R = Ritentivo
0 = Al momento dellinizializzazione del device il valore viene forzato a zero.
1 = Al momento dellinizializzazione del device il valore viene forzato a uno.
- = Al momento dellinizializzazione del device viene presentato il valore significativo.
D
Indica la dimensione del parametro.
F = Flag
B = Byte
W = Word
L = Long
S = Single Float
1.3.1.1 Condizioni
Vengono descritte tutte le condizioni necessarie affinché il parametro sia considerato corretto o perché il comando venga
accettato.
In alcuni casi vengono specificati dei valori limite per laccettazione del parametro: se vengono introdotti dei valori esterni
ai limiti impostati, il dato viene comunque accettato; pertanto devono essere previsti opportuni controlli dellapplicativo tali
da garantire il corretto funzionamento.
Per lesecuzione di un comando, tutte le relative condizioni devono necessariamente essere soddisfatte; in caso contrario
il comando non viene eseguito.
A
Indica la modalità di accesso.
R = Read (lettura).
W = Write (scrittura).
RW = Read / Write.
1.3.2 Comandi principali
1.3.2.1 START
Al comando di START, lasse si posiziona alla quota dichiarata nella variabile setpos con la velocità impostata in setvel; il posizionamento verrà eseguito utilizzando la rampa di accelerazione impostata nel parametro tacc e la rampa di decelerazione impostata nel parametro tdec. Il tipo di rampa utilizzata (trapezoidale o epicicloidale) è inserita nel parametro ramptype.
1.3.2.2 STOP
Se durante il posizionamento è necessario fermare lasse con una rampa di decelerazione, sarà sufficiente dare il comando di STOP e lasse decelera fino a fermarsi con la rampa impostata nel parametro tdec.
1.3.2.3 EMRG
Questo comando mette lasse in condizioni di emergenza; lo stato st_emrg viene posto ad uno. Se il comando di emergenza viene inviato allasse durante un posizionamento, il movimento viene interrotto senza rampa di decelerazione, luscita analogica viene impostata a zero volt e viene sganciata la reazione di spazio. Con st_emrg = 1 (condizione di emergenza), non è possibile movimentare lasse.
1.3.2.4 RESUME
Con questo comando viene resettata la condizione di emergenza; lasse entra in reazione di spazio ed attende un comando per potersi muovere (non riprende automaticamente il posizionamento interrotto).
1.3.2.5 LOOPOFF
Il comando LOOPOFF toglie la reazione di spazio senza fermare lasse. Con st_loopon = 0 lasse accetta i comandi di
movimentazione asse ma tutti i posizionamenti saranno eseguiti senza reazione di spazio.
Un posizionamento fatto senza loop di reazione è paragonabile ad un posizionamento eseguito senza guadagno proporzionale
(non viene garantito larrivo in posizione).
1.3.2.6 LOOPON
Il comando LOOPON chiude lanello di spazio senza fermare lasse. Con st_loopon = 1 lasse viene movimentato utilizzando
tutte le caratteristiche del controllo P.I.D.
A seguito si riporta una tabella che riassume le condizioni necessarie per avere lasse in reazione di spazio e per eseguire
dei posizionamenti.
Loopon | Emrg | Reazione di spazio | Possibilità di movimento |
Si | No | Si | Si |
Si | Si | No | No |
No | No | No | Si |
No | Si | No | No |
1.3.3 Descrizione del movimento epicicloidale
Il movimento epicicloidale (ramptype = 1) viene utilizzato per movimentare gli assi senza brusche variazioni di velocità.
Naturalmente il tempo di posizionamento di un asse movimentato con le rampe trapezoidali è inferiore rispetto allo stesso
asse movimentato con le rampe epicicloidali, ma lusura meccanica è nettamente superiore.
Per confronto è mostrata la differenza del tempo d'accelerazione nei due casi mantenendo costante il gradiente massimo
d'accelerazione.
Lo stesso vale anche per la rampa di decelerazione.
Il movimento epicicloidale ha la possibilità di comportarsi in modi diversi nel caso di riduzione di profilo (rtype) e nel caso
di stop durante la rampa di accelerazione (stopt).
1.3.4 Riduzione del profilo
Nel caso in cui ramptype = 1 Nel caso in cui lo spazio da percorrere sia minore di quello che consente di raggiungere la
velocità impostata eseguendo le rampe di accelerazione e decelerazione, si passa nella fase chiamata riduzione di profilo.
È possibile mantenere fisso il tempo delle rampe, diminuendo i gradienti delle rampe e la velocità in proporzione (parametro
rtype impostato a 0).
La riduzione del profilo viene utilizzata solamente se si sta eseguendo un posizionamento.
È inoltre possibile diminuire il tempo delle rampe mantenendo il gradiente di accelerazione costante e diminuire la velocità
in proporzione (parametro rtype impostato a 1).
Con il parametro rtype impostato a 0 si allungano notevolmente i tempi necessari ai posizionamenti piccoli con relativa perdita di produttività della macchina, invece impostandolo a 1 si hanno nel caso di posizionamenti brevi tempi ridotti, ma mantenendo il gradiente costante si perde leffetto benefico dellepicicloide.
1.3.5 Tipo di stop durante la rampa di accelerazione
Nel caso in cui ramptype = 1 e si debba frenare lasse durante la rampa di accelerazione con il comando di STOP si deve
scegliere se far completare la rampa oppure se si vuole interrompere la rampa e di conseguenza modificare lepicicloide.
Nel caso in cui si imposti il parametro stopt a 0 viene prima completata la rampa di accelerazione e poi eseguita la rampa
di decelerazione.
Il tipo di stop durante le rampe viene utilizzato solamente se si sta eseguendo un posizionamento.
Nel caso in cui si imposti il parametro stopt a 1 viene interrotta la rampa di accelerazione e iniziata immediatamente la rampa di decelerazione impostata.
Si nota immediatamente che esiste una differenza sostanziale tra il settaggio di stopt a 0 o a 1. Per fare la scelta di quale tipo di stop utilizzare, bisogna tener conto che in caso di fermata di emergenza esiste il comando di emergenza che blocca istantaneamente e senza rampa il posizionamento.
1.3.6 Calibrazione uscita analogica
Attenzione! Prima di iniziare dei posizionamenti veri e propri è necessario verificare che collegamenti elettrici ed organi meccanici non siano causa di mal funzionamenti.
Per la gestione dellasse, il device EANPOS utilizza unuscita analogica con range ±10 V e risoluzione 16 bit con segno; con la funzione di calibrazione questa uscita analogica può essere pilotata con un valore costante con lo scopo di verificare collegamenti e funzionalità.
1.3.6.1 Movimentazione preliminare
-
Togliere la condizione di emergenza con il comando RESUME.
-
Lo stato st_emrg = 0
-
Abilitare lo stato di taratura asse con il comando CALON; lo stato st_cal deve quindi assumere il valore 1.
-
É ora possibile impostare la tensione analogica con il parametro vout; il valore é espresso in decimi di volt (-100 ÷ 100 =
-
10 ÷ 10 V). Si consiglia di introdurre valori bassi (5, 10, 15 … pari a 0.5, 1, 1,5 V).
-
Quando lasse é in movimento il parametro frq indica la frequenza in Hz delle fasi del trasduttore.
-
Il parametro posit che visualizza la posizione, varia indicando lo spazio compiuto dallasse. Se impostando una tensione positiva il conteggio si decrementa, é necessario invertire le fasi del trasduttore o invertire la direzione nellazionamento.
-
È possibile invertire la direzione del conteggio utilizzando il comando CNTREV.
-
Se con tensione di uscita uguale a zero lasse non é fermo, agire sul parametro offset per correggere la tensione finché il movimento non si arresta. Il valore introdotto (ogni bit corrisponde a circa 0.3 mV), viene sommato algebricamente al valore delluscita analogica; questa operazione permette di compensare leventuale deriva propria del componente elettronico, sia in uscita da QMOVE che in ingresso allazionamento. Il valore é espresso in bit con segno.
Per un ottimale risultato della taratura loperazione deve essere eseguita con il sistema a regime di temperatura. -
Per disabilitare lo stato di taratura inviare il comando CALOFF.
-
Lo stato st_cal = 0
1.3.6.2 Parametrizzazione uscita
Il device EANPOS genera il valore di tensione delluscita analogica sulla base di una proporzione tra la velocità massima
dellasse e la massima tensione di uscita. La proporzionalità è ottenuta con il parametro maxvel, rappresentante la velocità
dellasse relativa alla massima tensione analogica (10 V). Ovviamente lasse deve avere un comportamento simmetrico
rispetto al valore zero di tensione analogica, quindi la velocità deve essere la stessa sia alla tensione massima positiva
che alla massima negativa.
Prima di determinare il valore della velocità massima, bisogna stabilire lunità di tempo da utilizzare per la rappresentazione
delle velocità nel device; il parametro unitvel definisce lunità di tempo della velocità (Um/min oppure Um/s).
1.3.6.3 Metodo teorico per la determinazione della velocità massima.
Il metodo teorico è un calcolo eseguito sulla base della velocità massima del motore. Una volta stabiliti i giri massimi al
minuto dichiarati del motore, si ricava la velocità massima.
Introdurre nel parametro maxvel il valore di velocità massima calcolato.
1.3.6.4 Metodo pratico per la determinazione della velocità massima.
Il metodo pratico si basa sulla lettura della velocità rilevata dal device nella variabile vel, fornendo allazionamento una tensione nota. Per fornire la tensione allazionamento il device deve essere posto nella condizione di calibratura come descritto nel paragrafo precedente. Se il sistema lo permette, fornire allazionamento una tensione di 10 V e leggere il valore di velocità nel parametro vel. Se, al contrario, viene fornita una porzione della tensione in uscita (1, 2, … 5 V), calcolare la velocità massima con la proporzione: vout : 10 [V] = vel : maxvel
Introdurre il valore di velocità massima trovato nel parametro maxvel.
1.3.7 Movimentazione
Attenzione! Prima di movimentare lasse, verificare il corretto funzionamento dei dispositivi d'emergenza e protezione.
Le procedure fin qui descritte hanno permesso di completare la prima fase di parametrizzazione del device. Ora é possibile eseguire una semplice movimentazione dellasse.
-
Spostare lasse in una posizione tale per cui possa compiere un determinato spazio senza toccare i finecorsa di quota massima.
-
Impostare la posizione attuale dellasse al valore zero, settando il parametro posit = 0.
-
Impostare i parametri che definiscono la posizione dei finecorsa software: minpos = 0 e maxpos al valore della corsa massima dellasse.
-
Impostare il parametro che definisce il tempo impiegato dallasse per raggiungere la velocità massima taccdec = 100. Questo parametro é espresso in centesimi di secondo (100 = 1 sec.)
-
Impostare la velocità di posizionamento con il parametro setvel.
-
Impostare la quota di destinazione con il parametro setpos.
-
Impostare il parametro feedforward = 1000 (100%)
-
Se il device é in stato di emergenza (st_emrg = 1) dare il comando RESUME.
-
Avviare il posizionamento con il comando START. Per arrestare il movimento dare il comando EMRG.
Questa prima movimentazione é stata eseguita senza la retroazione di spazio. Il posizionamento potrebbe essere stato eseguito con un certo errore introdotto dalla non linearità dei componenti o da un'imperfezione nella taratura della velocitá massima. Successivamente abilitando la retroazione di spazio quest'errore scompare.
1.3.8 Taratura PID+FF
Il posizionamento eseguito nel paragrafo precedente é stato realizzato senza considerare eventuali errori di posizione.
Per controllare la corretta posizione dellasse in maniera continua ed automatica, è necessario avere un feed-back sulla
posizione; per questo motivo viene introdotto lalgoritmo di regolazione PID+FF comprendente azioni di tipo proporzionale,
integrale, derivativo e feed-forward; il valore delluscita analogica è dato dalla sommatoria delle azioni feed-forward,
proporzionale, integrativa e derivativa.
Senza entrare nel merito di una descrizione tecnica della teoria della regolazione, in questo paragrafo vengono descritte
una serie di operazioni per regolare i parametri che influenzano questo controllo.
Per realizzare una regolazione soddisfacente è sufficiente utilizzare solamente le azioni feedforward e proporzionale; le
azioni integrale e derivativa vengono utilizzate solamente per regolazioni in condizioni particolari.
1.3.8.1 Azione feed forward
Il feed-forward contribuisce a rendere il sistema più pronto nei posizionamenti, fornendo alluscita analogica un valore di
tensione proporzionale alla velocità teorica di posizionamento. In pratica è la componente grazie alla quale sono stati
eseguiti i posizionamenti del capitolo precedente.
Può essere regolato il contributo di questa azione mediante il parametro feedfw; questo parametro è espresso come porzione
millesimale della velocità teorica; quindi, per introdurre ad esempio 98.5 % è necessario impostare 985 (millesimi).
1.3.8.2 Azione proporzionale
Quest'azione fornisce unuscita proporzionale allerrore di posizione istantaneo dellasse. Lentità dellazione proporzionale
è definita dal parametro pgain che definisce la sensibilità del sistema.
Il parametro pgain viene introdotto in millesimi; il valore unitario del guadagno (1000) fornisce unuscita analogica al
massimo valore (10 V) relativamente al massimo errore di velocità. Per massimo errore di velocità s'intende lo spazio
compiuto dallasse - alla massima velocità - per la durata del tempo di campionamento del device.
1.3.8.3 Azione integrale
Integra lerrore di posizione del sistema nel tempo impostato nel parametro integt aggiornando luscita finché lerrore non
viene annullato.
Più basso è il tempo d'integrazione dellerrore, più veloce è il sistema nel recupero dellerrore, ma il sistema può diventare
instabile tendendo ad oscillare.
1.3.8.4 Azione derivativa
Anticipa la variazione del moto del sistema tendendo ad eliminare gli overshoot del posizionamento. Lentità della variazione
viene calcolata nel tempo impostato nel parametro derivt.
Più alto è il tempo di derivazione dellerrore e più veloce è il sistema nel recupero dellerrore nei transitori, ma se viene
inserito un valore troppo alto il sistema diventa instabile tendendo quindi ad oscillare.
1.3.9 Ricerca preset
La ricerca di preset é una procedura atta a sincronizzare il conteggio (parametro posit) con la posizione reale dellasse. Può essere eseguita in 3 diversi modi selezionati in base al parametro prsmode.
1.3.9.1 Considerazioni preliminari
-
Per poter eseguire una ricerca preset é necessario disporre di un ingresso (acquisito tramite il BUS QMOVE) che definiamo abilitazione zero trasduttore. Nella sua corsa, lasse deve attivare quest'ingresso in un punto prestabilito.
-
La procedura di ricerca di preset è avviata con il comando PRESET; nella fase iniziale il conteggio acquisito da QMOVE può avere un qualsiasi valore e lasse può trovarsi in qualsiasi punto.
-
Lasse si deve dirigere verso la camma per eseguire il caricamento del preset. Non sapendo da che parte dirigere lasse per incontrare lingresso di abilitazione, la ricerca di preset permette di scegliere con il parametro prsdir due soluzioni:
prsdir = 0 lasse attuerà sempre un movimento avanti
prsdir = 1 lasse attuerà sempre un movimento indietro -
Se durante lesecuzione della ricerca di preset viene ridato il comando PRESET, la direzione di movimento dellasse viene invertita.
-
E da rilevare che la quota di preset contenuta nel parametro prspos deve essere sempre compresa tra la quota minima e la quota massima e che, dopo il caricamento della quota di preset, lasse si posiziona automaticamente alla quota di preset.
-
Durante la ricerca preset i limiti software maxpos e minpos non sono abilitati.
-
Quando si imposta la velocità di ricerca impulso di zero - sprsvel - bisogna considerare che nel Modo 0 lingresso ha un filtro hardware che ne ritarda lacquisizione e quindi influenza la precisione del caricamento. Nel modo 1, lacquisizione viene fatta su ingresso in interrupt quindi la velocità non é determinante. Bisogna assicurare comunque che il tempo di durata dellimpulso di zero sia sufficiente per essere acquisito dalla scheda. Per conoscere i tempi di acquisizione dellingresso e il tempo minimo di segnale impulso di zero fare riferimento alla documentazione tecnica delle schede utilizzate.
Una volta fatta partire la ricerca di preset con il comando PRESET, lasse si dirige verso la posizione dove si attiva
lingresso di abilitazione impulso di zero trasduttore con velocità definita da prsvel. Lo stato st_prson si attiva per segnalare
il preset in corso. Quando, nella sua corsa, lasse attiva quest'ingresso, inverte la direzione e riparte con velocità
sprsvel.
A questo punto il comportamento dipende dal modo di caricamento selezionato (Modo 0 o Modo 1).
1.3.9.2 Ricerca di preset - Modo 0
Questa procedura prevede la movimentazione dellasse e lutilizzo dellingresso di abilitazione impulso di zero trasduttore.
Alla disattivazione dellingresso abilitazione impulso di zero trasduttore, la quota di preset viene caricata sul conteggio
(parametro posit=prspos).
Successivamente, si disattiva lo stato st_prson e si attiva lo stato st_prsok per segnalare la conclusione della ricerca.
Questo stato rimane attivo fino allavviamento di una nuova procedura di preset; allaccensione del sistema questo stato è
sempre a zero. Vedi figura 1.
Figura 1: caricamento preset utilizzando la sola camma di abilitazione. |
1.3.9.3 Ricerca di preset - Modo 1
Questa procedura prevede la movimentazione dellasse e lutilizzo degli ingressi impulso di zero ed abilitazione impulso di zero trasduttore.
Alla disattivazione dellingresso abilitazione impulso di zero trasduttore, viene abilitata la lettura del primo impulso di zero
fornito dal trasduttore e, su questo segnale, viene caricata la quota di preset nel conteggio (parametro posit = prspos).
Per permettere il caricamento della quota di preset con Modo 1, la scheda sulla quale è collegato limpulso di zero traduttore
deve trasmettere questo segnale su una delle 8 linee di interrupt hardware. Inoltre il device deve essere stato definito
per utilizzare la stessa linea di interrupt hardware (veri definizione nel file .CNF).
Successivamente, lasse poi si posiziona alla quota di preset, si disattiva lo stato st_prson e si attiva lo stato st_prsok
per segnalare la conclusione della ricerca; questo stato rimane attivo fino allavviamento di una nuova procedura di preset.
Allaccensione del sistema st_prsok è sempre a zero. Vedi figura 2.
Figura 2: caricamento preset utilizzando camma di abilitazione ed impulso di zero trasduttore. |
1.3.9.4 Ricerca di preset - Modo 2
Questa procedura NON prevede la movimentazione dellasse e lutilizzo dellingresso di abilitazione impulso di zero trasduttore.
Con questa procedura, la ricerca di preset non esegue nessun posizionamento. Il comando di caricamento della quota di preset viene fornito dallattivazione dellingresso di abilitazione zero encoder e lo stato st_prsok viene impostato a uno. Se lingresso rimane attivo il caricamento è continuo mentre, se allaccensione lingresso è già attivo, il primo caricamento viene eseguito solo dopo una sua disattivazione e successiva attivazione.
1.4 Funzioni speciali
1.4.1 Gestione multiasse
In alcune applicazioni viene richiesto di posizionare un numero elevato di assi movimentando un singolo asse alla volta.
La scelta progettuale ricade sullinstallazione di un solo azionamento che a seconda dellasse da posizionare si collega
elettricamente al motore interessato al posizionamento; il trasduttore é sempre vincolato al relativo asse.
Il device EANPOS permette di controllare laccesso al dispositivo DAC tramite i comandi REGON e REGOFF. In questo
modo tramite lapplicativo in QCL definisce una serie di device tanti quanti sono gli assi da posizionare; nella definizione,
tutti i device utilizzano la stessa risorsa DAC (IOutA).
Normalmente tutti i device devono essere nello stato st_regoff = 1 in modo da non avere accesso al dispositivo DAC.
Prima di iniziare il posizionamento, con il comando REGON, il device interessato viene portato allo stato di st_regoff = 0.
Viene eseguito il posizionamento e, al suo completamento, il device viene riportato nello stato di st_regoff = 1 con il comando
REGOFF. Per nessun motivo due device si devono trovare contemporaneamente nello stato di st_regoff = 0.
Quando il device è posto nella condizione di regoff, luscita analogica rimane fissa allultimo valore di tensione definito
prima del comando REGOFF.
1.4.2 Cambio quota e conteggio in movimento
In alcune applicazioni viene richiesto di definire la quota di destinazione durante il posizionamento, in base ad eventi esterni al device. Questa caratteristica si traduce nella possibilità di scrittura nel parametro setpos anche con posizionamenti in corso.
Il cambio della quota viene accettato solamente se la nuova posizione é raggiungibile con la direzione in uso. Nel caso di utilizzo di rampe epicicloidali il cambio quota non viene acettato se st_dec = 1
Durante il posizionamento é possibile anche modificare il valore del conteggio posit. Questa funzione è utilizzata solitamente quando un device deve, in particolari condizioni, continuare un profilo di velocità per un tempo molto lungo, superiore al tempo che lasse impiega per raggiungere la quota limite (maxpos o minpos).
1.4.3 Cambio velocitá e tempo di rampa in movimento
Durante il posizionamento é possibile variare la velocitá dellasse senza influenzare la posizione da raggiungere. Questa operazione può determinare un aumento o una diminuzione della velocitá, anche più punti dello stesso posizionamento. Questa operazione viene eseguita con nuova scrittura nel parametro setvel.Il cambio di velocità è sempre disponibile tranne durante la rampa di decelerazione segnalata da un apposito stato (st_dec = 1)
Durante il posizionamento può essere variati anche i tempi d'accelerazione/decelerazione. Per esempio il device può avviare
un posizionamento con una rampa molto lunga e, una volta raggiunta la velocità impostata, è variato il parametro
tacc ed eseguito un cambio di velocità con una rampa molto lunga.
Per applicazioni particolari e alla presenza di rampe trapezoidali, il tempo di rampa può essere variato anche durante una
variazione di velocità, in questo caso il nuovo tempo è messo in esecuzione immediatamente.
1.4.4 Delta conteggio
La modifica del valore di risoluzione (cntratio) o la scrittura della variabile posit, provoca lazzeramento dei resti della conversione.
Il device visualizza sempre la posizione assoluta dellasse; per eseguire posizionamenti incrementali è necessario disporre
di uno strumento per sottrarre o sommare un determinato valore al conteggio (posit) senza introdurre errori. Il cambio
di conteggio può essere eseguito anche con una scrittura diretta nel nuovo valore nel parametro posit.
Volendo sottrarre 100 unità di misura al conteggio è possibile:
Asse:posit = Asse:posit - 100
Questa operazione introduce un errore perché impone la posizione posit = -100, quando lasse poteva avere una posizione
intermedia tra una unità di misura e la successiva (es. 100.3). Questa frazione (0.3) viene persa ed il ripetersi di
queste operazioni provocano laccumularsi di un errore non trascurabile.
Il comando DELCNT somma al conteggio una quantità pari al parametro delta senza perdere la parte frazionaria della
posizione:
Asse:delta = -100
DELCNT Asse
Il comando di DELCNT può essere inviato solamente con asse fermo (st_still=1)
1.4.4.1 Esempio
La lettura della posizione dellasse risulta essere di 2 unità e si trova nel punto A. Si vuole sommare al conteggio posit tre
unità di misura.
Con le istruzioni:
Asse:posit = Asse:posit + 2
lasse assume la nuova posizione B.
Con le istruzioni:
Asse:delta = 2
DELCNT Asse
viene raggiunta la posizione C.
Si noti che con le prime istruzioni lasse ha compiuto un delta inferiore a 3 unità e quindi è stato introdotto un errore.
Se si devono inviare comandi DELCNT in successione, è conveniente calcolare la grandezza da sommare ed inviare una
sola volta il comando; in caso contrario prestare attenzione a non inviare comandi successivi senza interporre una istruzione
di lettura su parametro device.
1.4.4.2 Esempio
Asse:delta = 3
DELCNT Asse
WAIT Asse:st_init
Asse:delta = 40
DELCNT Asse
1.5 Gestione errori device
La presenza di un errore nel device è segnalato dallo stato st_error.
Quando st_error è uguale a 1, troviamo presente sulla variabile errcode il tipo di errore intervenuto (vedi tabella) e nella
variabile errvalue una indicazione sulla causa dellerrore.
Se il device va in errore, per riprendere la lavorazione bisogna cancellare lo stato st_error attraverso il comando RSERR.
1.6 Gestione warning device
La presenza di un warning nel sistema camming viene segnalato dallo stato st_warning.
Essendo causato da un evento non grave ed essendo garantita in questa situazione la gestione dellasse, lasse continua
il suo lavoro.
Quando st_warning è uguale a 1, troviamo presente sulla variabile wrncode il tipo di warning intervenuto (vedi tabella)
e nella variabile wrnvalue una indicazione sulla causa che ha provocato il warning.
Codice | Priorità | Descrizione |
---|---|---|
1 | 0 | Comando non eseguito |
Per cancellare lo stato st_warning bisogna inviare il comando RSWRN.
1.7 Tabella comandi e parametri
1.7.1 Simbologia adottata
Il nome del parametro, stato o comando viene riportato alla sinistra della tabella.
R
Indica se il relativo parametro o stato è ritentivo (al momento dellinizializzazione del device mantiene lo stato precedentementedefinito), oppure lo stato che assume al momento dellinizializzazione del device.
Se il device non necessita di inizializzazione il campo R indica il valore che il parametro o stato assume allaccensione della scheda.
R = Ritentivo
0 = Al momento dellinizializzazione del device il valore viene forzato a zero.
1 = Al momento dellinizializzazione del device il valore viene forzato a uno.
- = Al momento dellinizializzazione del device viene presentato il valore significativo.
D
Indica la dimensione del parametro.
F = Flag
B = Byte
W = Word
L = Long
S = Single Float
1.7.1.1 Condizioni
Vengono descritte tutte le condizioni necessarie affinché il parametro sia considerato corretto o perché il comando venga
accettato.
In alcuni casi vengono specificati dei valori limite per laccettazione del parametro: se vengono introdotti dei valori esterni
ai limiti impostati, il dato viene comunque accettato; pertanto devono essere previsti opportuni controlli dellapplicativo tali
da garantire il corretto funzionamento.
Per lesecuzione di un comando, tutte le relative condizioni devono necessariamente essere soddisfatte; in caso contrario
il comando non viene eseguito.
A
Indica la modalità di accesso.
R = Read (lettura).
W = Write (scrittura).
RW = Read / Write.
1.7.2 Comandi
I comandi a disposizione per gestire il device sono elencati sotto in ordine di priorità decrescente. Il device esegue tutti i comandi ricevuti entro lo stesso tempo di campionamento iniziando da quello con la priorità maggiore. Per esempio se il device riceve nello stesso tempo di campionamento i comandi CNTUNLOCK e CNTLOCK, per primo esegue il comando CNTLOCK e poi quello di CNTUNLOCK lasciando perciò il contatore libero di contare.
Nome | Condizioni | Descrizione |
INIT | st_init = 0 | Initialization Comando di inizializzazione device. Se il device non è inizializzato non vengono eseguiti i calcoli relativi all'asse e quindi rimane inattivo. All'accensione è possibile scaricare tutti i parametri in memoria;successivamente, con comando INIT l'asse sarà inizialiazzato, eseguendo i calcoli una sola volta. Attiva lo stato st_init. |
EMRG | st_init = 1 | Emergency Pone in emergenza l'asse interrompendo, senza rampa di decelerazione, l'eventuale posizionamento in corso. E' inoltre disabilitata la reazione di spazio dell'asse. |
RESUME | st_init = 1 st_emrg = 1 | Resume Ripristino della condizione di emergenza dell'asse; viene riabilitata la reazione di spazio se disabilitata. All'acquisizione dello start, l'asse riprende il posizionamento. |
START | st_init = 1 st_regoff = 0 st_emrg = 0 st_still = 1 | Start Comanda il posizionamento alla quota setpos e velocità setvel. |
STOP | st_init = 1 st_regoff = 0 st_emrg = 0 st_still = 0 | Stop Interrompe l'eventuale posizionamento in corso dell'asse. La fermata dell'asse avviene seguendo la rampa di decelerazione in uso. L'asse rimane in reazione di spazio. |
LOOPON | st_init = 1 | Loop ON Abilita la reazione di spazio asse. L'uscita analogica contrasta ogni azione esterna che tenti di spostare l'asse dalla posizione raggiunta (deriva, operatore, …). Queta operazione azzera l'eventuale errore di inseguimento follerr. |
LOOPOFF | st_init = 1 | Loop OFF Disabilita la reazione di spazio asse. L'asse può essere spostato dalla sua posizione senza che l'uscita analogica contrasti il movimento. |
CNTLOCK | st_init = 1 | Counter lock Blocca l'acquisizione del conteggio asse anche se il trasduttore continua ad inviare i segnali. In questa fase l'eventuale spostamento dell'asse non viene rilevato. Disabilita il caricamento della quota di preset sul conteggio. Attiva lo stato st_cntlock |
CNTUNLOCK | st_init = 1 | Counter unlock Sblocca il conteggio dell'asse. Viene ripresa la lettura dei segnali inviati dal trasduttore e l'aggiornamento del conteggio. Disattiva lo stato st_cntlock. |
CNTREV | st_init = 1 | Counter reverse Consente di invertire le fasi del trasduttore all'interno della scheda. Viene quindi invertito il senso del conteggio (incremento/decremento). Attiva lo stato st_cntrev. |
CNTDIR | st_init = 1 | Counter direct Il conteggio dell'asse non viene invertito. Disattiva lo stato st_cntrev. |
PRESET | st_init = 1 st_regoff = 0 st_emrg = 0 st_cal = 0 | Preset Start ricerca preset asse. Viene dato inizio alla procedura di ricerca di preset con le modalità impostate con i parametri prsmode e prsdir. Se la ricerca di preset è già in esecuzione, il comando esegue l'inversione del senso di ricerca. Attiva lo stato st_prson e disattiva lo stato st_prsok. |
CALON | st_init = 1 | Calibration ON L'uscita analogica viene impiegata come generatore di tensione; in questo caso non è possibile usarla per posizionare l'asse. Il valore in uscita è settabile a piacere tramite la variabile vout. |
CALOFF | st_init = 1 st_cal = 1 | Calibration OFF L'uscita analogica non viene gestita come generatore di tensione, pertanto può essere nuovamente usata per la gestione dei posizionamenti. |
MANFW | st_init = 1 st_regoff = 0 st_prson = 0 st_still = 1 st_cal = 0 | Manual forward Comanda il posizionamento manuale in avanti (verso maxpos) alla velocitá impostata. Se il conteggio è maggiore di maxpos, l'asse non si sposterà |
MANBW | st_init = 1 st_regoff = 0 st_prson = 0 st_still = 1 st_cal = 0 | Manual backward Comanda il posizionamento manuale in indietro (verso minpos) alla velocitá impostata. Se il conteggio è minore di minpos, l'asse non si sposterà |
REGOFF | st_init = 1 st_still = 1 | Regulation OFF Disabilita la regolazione e l'aggiornamento del DAC, nonché tutti i comandi di movimento |
REGON | st_init = 1 st_regoff = 1 | Regulation ON Riabilita la regolazione e l'aggiornamento del DAC, nonché tutti i comandi di movimento. |
DELCNT | st_init = 1 st_cal = 0 st_prson = 0 | Delta counter Il conteggio (posizione dell'asse) viene modificato sommandogli algebricamente il valore specificato nella variabile delta. Questo comando può essere dato sempre, tranne se con l'asse in movimento il comando farebbe invertire la direzione. Nel caso di utilizzo di rampe di decelerazione epicicloidali non è possibile dare il comando se st_dec = 1 |
RSERR | - | Reset error Azzera lo stato st_error. |
RSWRN | - | Reset warning Azzera lo stato st_warning |
RSPRSOK | - | Reset preset OK Azzera lo stato st_prsok |
1.7.3 Parametri
Nome | D | R | A | Condizioni | Descrizione |
measure | L | R | R-W | - | Measure (1÷999999) Indica lo spazio, in unità di misura, percorso dall'asse per ottenere gli impulsi encoder * 4 impostati nel parametro pulse. Questo parametro è utilizzato per il calcolo della risoluzione dell'asse con la formula: Risoluzione = measure* 4 / pulse La risoluzione deve avere un valore compreso tra 0.00374 e 4.00000 |
pulse | L | R | R-W | - | Pulse encoder (1÷999999) Indica gli impulsi moltiplicato 4 forniti dall'encoder per ottenere lo spazio impostato nel parametro measure. Questo parametro è utilizzato per il calcolo della risoluzione dell'asse con la formula: Risoluzione = measure* 4 / pulse La risoluzione deve avere un valore compreso tra 0.00374 e 4.00000 st_camex = 0 st_prson = 0 |
maxpos | L | R | R-W | st_still = 1 | Maximum position (-999999 ÷ 999999) Definisce la massima quota raggiungibile dall'asse; il valore impostato è da considerarsi anche come limite massimo per l'introduzione delle quote di lavoro. Valore espresso in unità di misura (Um). |
minpos | L | R | R-W | st_still = 1 | Minimum position (-999999 ÷ 999999) Definisce la minima quota raggiungibile dall'asse; il valore impostato è da considerarsi anche come limite minimo per l'introduzione delle quote di lavoro. Valore espresso in unità di misura (Um). |
prspos | L | R | R-W | st_still = 1 st_prson = 0 | Preset position (minpos÷maxpos) Definisce il valore che viene caricato sul conteggio con la procedura di ricerca di preset. |
maxvel | L | R | R-W | st_still = 1 | Maximum velocity (0 ÷ 999999) Definisce la massima velocità dell'asse (relativa al riferimento analogico di +/-10V). Il valore introdotto è nell'unità di tempo della velocità impostata Velocity unit. Valore espresso in Um/s o Um/min. |
prsvel | L | R | R-W | st_still = 1 st_prson = 0 | Preset velocity (0 ÷ maxvel) Definisce la velocità dell'asse durante la procedura di ricerca di preset. Il valore introdotto è nell'unità di tempo della velocità impostata (Velocity unit). |
sprsvel | L | R | R-W | st_still = 1 st_prson = 0 | Preset search velocity Nella procedura di ricerca di preset, definisce la velocità dell'asse nella fase di acquisizione dell'impulso di zero. Il valore introdotto è nell'unità di tempo della velocità impostata (Velocity unit). |
toll | L | R | R-W | - | Tolerance (-999999 ÷ 999999) Definisce una fascia di conteggio intorno alle quote di posizionamento. Se il posizionamento si conclude entro tale fascia, è da considerarsi corretto. Valore espresso in unità di misura (Um). |
maxfollerr | L | R | R-W | - | Maximum following error (0 ÷ 2147483648) Definisce il massimo scostamento accettabile tra la posizione teorica e la posizione reale dell'asse. E' utilizzato per la gestione di st_foller. Valore espresso in bit trasduttore. |
rampmode | B | R | R-W | se st_still = 1 scrittura sempre abilita, se st_still = 0 il nuovo valore viene memorizzato ma processato solamente se i nuovi tempi di acc.e dec. permettono di raggiungere la quota impostata. | Acceleration/deceleration time mode Utilizzato per la scelta tra rampe l'accelerazione e decelerazione uguali o differenziate. Valori ammessi: 0 = rampe uguali, 1 = rampe differenziate. |
ramptype | B | R | R-W | st_still = 1 | Ramp type Definisce il tipo di rampa da eseguire: 0 = Accelerazione e decelerazione di tipo trapezoidale, 1 = Accelerazione e decelerazione di tipo epicicloidale, 2 = Accelerazione di tipo trapezoidale e decelerazione di tipo epicicloidale, 3 = Accelerazione di tipo epicicloidale e decelerazione di tipo trapezoidale. |
taccdec | W | R | R-W | se st_still = 1 scrittura sempre abilita, se st_still = 0 il nuovo valore viene memorizzato ma processato solamente se il nuovo tempo permette di raggiungere la quota impostata. | Acceleration/deceleration time (da 0 a 999) É il tempo necessario per passare da velocità 0 a velocità massima e viceversa; il parametro è utilizzato se rampmode = 0. Valore espresso in centesimi di secondo. |
tacc | W | R | R-W | se st_still = 1 scrittura sempre abilita, se st_still = 0 il nuovo valore viene memorizzato ma processato solamente se il nuovo tempo permette di raggiungere la quota impostata. | Acceleration time (da 0 a 999) Definisce il tempo necessario all'asse per accelerare da zero (condizione di asse fermo) alla velocità massima. Valore espresso in centesimi di secondo. |
tdec | W | R | R-W | se st_still = 1 scrittura sempre abilita, se st_still = 0 il nuovo valore viene memorizzato ma processato solamente se il nuovo tempo permette di raggiungere la quota impostata. | Deceleration time (da 0 a 999) Definisce il tempo necessario all'asse per decelerare dalla velocità massima a zero (condizione di asse fermo). Valore espresso in centesimi di secondo. |
rtype | B | R | R-W | ramptype=1 | Reduction type Tipo di riduzione del profilo nel caso in cui lo spazio da percorrere non permetta di eseguire completamente le rampe di accelerazione e decelerazione. 0= Tempo delle rampe fisso con riduzione della pendenza, 1= Pendenza fissa con riduzione del tempo delle rampe. |
Stopt | B | R | R-W | ramptype=1 | Stop type Tipo di stop durante le rampe di accelerazione 0 = La rampa di accelerazione viene conclusa e quindi si inizia la rampa di decelerazione, 1= La rampa di accelerazione viene interrotta ed inizia subito la rampa di decelerazione di tipo epicicloidale. |
tinv | W | R | R-W | - | Direction inversion delay (da 0 a 999) Viene utilizzato per evitare stress meccanici dovuti a troppo rapide inversioni del senso di movimento. Valore espresso in centesimi di secondo. |
toldly | W | R | R-W | - | Tolerance delay (da 0 a 999) Definisce il tempo che intercorre tra l'arrivo dell'asse nella fascia di tolleranza e la relativa segnalazione di stato. Valore espresso in centesimi di secondo. |
pgain | W | R | R-W | - | Proportional gain (da 0 a 32767) Impostando il valore 1000, il coefficiente è 1.000. È il coefficiente che moltiplicato per l'errore di inseguimento genera la parte proporzionale dell'uscita di regolazione. |
feedfw | W | R | R-W | - | Feed forward (da 0 a 32767) Impostando il valore 1000, la percentuale è del 100%. È il coefficiente percentuale che, moltiplicato per la velocità, genera la parte feed-forward dell'uscita di regolazione. |
integt | W | R | R-W | - | Integral time (da 0 a 32767) È il tempo, espresso in millisecondi, che produce il coefficiente d'integrazione dell'errore di inseguimento. L'integrazione di tale errore moltiplicata per tale coefficiente genera la parte integrale dell'uscita di regolazione. |
derivt | W | R | R-W | - | Derivative time (da 0 a 32767) È il tempo, espresso in millisecondi, che produce il coefficiente derivativo dell'errore di inseguimento. La derivazione di tal errore moltiplicata per tale coefficiente genera la parte derivativa dell'uscita di regolazione. |
prsmode | W | R | R-W | st_prson = 0 | Preset mode Definisce il tipo di ricerca di preset: 0= Per la ricerca dell'abilitazione impulso di zero, l'asse inizia il movimento in veloce, incontra la camma di abilitazione, inverte la direzione rallentando e, sul fronte di discesa relativo al segnale di camma, carica la quota di preset. 1= Per la ricerca dell'abilitazione impulso di zero, l'asse inizia il movimento in veloce, incontra la camma di abilitazione, inverte la direzione ed in lento acquisisce il primo impulso di zero (dopo la disattivazione del segnale di camma), 2= Non viene attivata la procedura di ricerca preset con movimentazione dell'asse. Il conteggio viene aggiornato alla quota di preset all'attivazione dell'abilitazione impulso di zero. |
prsdir | B | R | R-W | st_prson = 0 | Preset direction Definisce la direzione del movimento asse per la ricerca della camma di abilitazione impulso di zero. 0 = l'asse si dirige in avanti, 1 = l'asse si dirige indietro. |
unitvel | B | R | R-W | st_still = 1 | Velocityc unit Definisce se l'unità di tempo della velocità è espressa in minuti o secondi. 0 = Um/min, 1 = Um/sec. |
decpt | B | R | R-W | st_still = 1 | Decimal point (0 ÷ 3) Definisce la precisione con la quale si intendono impostare le preselezioni e visualizzare i conteggi relativamente all'asse. |
offset | W | R | R-W | - | Offset (-32768 ÷ 32767) Offset uscita DAC in bit. Definisce il valore in bit della correzione relativa all'uscita analogica in modo da compensare l'eventuale deriva del sistema. Valore espresso in bit DAC. |
setpos | L | R | R-W | Se st_still = 0, vedi condizioni nel paragrafo “Funzioni speciali - cambio quote e conteggi in movimento” | Setted position (minpos ÷ maxpos) Definisce la quota di posizionamento raggiungibile dall'asse alla velocità setvel. N.B. Il valore è alterato se si comanda una procedura di ricerca preset con prsmode = 0 o 1. |
setvel | L | R | R-W | Se st_still = 0, vedi condizioni nel paragrafo “Funzioni speciali - cambio velocità tempo di rampa in movimento” | Setted velocity (0 ÷ maxvel) É il valore della velocità di posizionamento. Valore espresso in Um/s o Um/min. N.B. Il valore viene alterato se si comanda una procedura di ricerca preset con prsmode = 0 o 1. |
vout | B | 0 | R-W | st_cal = 1 | Volt out (-100 ÷ 100) É il valore della tensione d'uscita, espressa in decimi di volts, da usare nella procedura di calibrazione. |
vel | L | 0 | R-W | - | Velocity É il valore della velocità istantanea dell'asse. L'aggiornamento viene eseguito ogni 250 millisecondi. Valore espresso in Um/s o Um/min. |
frq | L | 0 | R-W | - | Frequency É il valore della frequenza istantanea dell'asse. L'aggiornamento è eseguito ogni 250 millisecondi. Valore espresso in Hz. |
posit | L | R | R-W | Se st_still = 0, vedi condizioni nel paragrafo dedicato | Actual position É il valore della posizione istantanea dell'asse. Valore espresso in unità di misura (Um). |
encoder | L | R | R | - | Encoder É il valore della posizione istantanea dell'asse. Valore espresso in bit encoder * 4. |
follerr | L | 0 | R | - | Following error É il valore istantaneo dell'errore d'inseguimento. Valore espresso in bit trasduttore. |
ffwdreg | L | 0 | R | - | Feed-forward register È il valore istantaneo del registro di feed-forward espresso in bit. |
propreg | L | 0 | R | - | Proportional register È il valore istantaneo del registro proporzionale espresso in bit. |
intreg | L | 0 | R | - | Integral register È il valore istantaneo del registro integrale espresso in bit. |
derreg | L | 0 | R | - | Derivative register È il valore istantaneo del registro derivativo espresso in bit. |
delta | L | 0 | R-W | - | Delta counter (-999999 ÷ 999999) È il valore che è sommato al conteggio quando viene inviato un comando DELCNT. Valore espresso in unità di misura (Um). |
errcode | B | 0 | R | - | Error code (0 ÷ 100) Indica il tipo d'errore intervenuto nel sistema. Il codice è valido solo se st_error = 1 (Vedi capitolo dedicato). |
errvalue | B | 0 | R | - | Error value (0 ÷ 100) Indica la causa dell'errore intervenuto nel sistema. Il codice è valido solo se st_error = 1 (Vedi capitolo dedicato) |
wrncode | B | 0 | R | - | Warning code (0 ÷ 100) Indica il tipo di warning intervenuto nel sistema. Il codice è valido solo se st_warning = 1 (Vedi capitolo dedicato) |
wrnvalue | B | 0 | R | - | Warning value (0 ÷ 100) Indica la causa del warning intervenuto nel sistema. Il codice è valido solo se st_warning = 1 (Vedi capitolo dedicato) |
1.7.4 Stati
Nome | D | R | A | Condizioni | Descrizione |
st_init | F | 0 | R | - | Initialization Segnalazione di device inizializzato. 0 = device non inizializzato, 1 = device inizializzato. All'accensione per default viene caricato il valore zero. |
st_emrg | F | 0 | R | - | Emergency Segnalazione d'asse in emergenza. 0 = asse non in emergenza, 1 = asse in emergenza. |
st_toll | F | 0 | R | - | Tolerance Segnalazione d'asse in tolleranza rispetto alla quota posta in esecuzione dal comando di START. La segnalazione d'asse in tolleranza può essere ritardata tramite il parametro toldly. 0 = asse non in tolleranza, 1 = asse in tolleranza. All'accensione per default viene caricato il valore zero. |
st_prsok | F | 0 | R | - | Preset Ok Segnalazione di ricerca di preset conclusa correttamente. 0 = preset non effettuato o non concluso correttamente, 1 = preset effettuato e concluso correttamente. All'accensione per default viene caricato il valore zero. |
st_still | F | 0 | R | - | Still Segnalazione d'asse fermo. 0 = asse in movimento, 1 = asse fermo. All'accensione per default viene caricato il valore 1. |
st_prson | F | 0 | R | - | Preset ON Segnalazione di ricerca di preset asse in corso. 0 = ricerca di preset non in corso, 1 = ricerca di prest in corso. All'accensione per default viene caricato il valore zero. |
st_movdir | F | 0 | R | - | Movement direction Segnalazione della direzione del movimento. 0 = avanti, 1 = indietro. All'accensione per default viene caricato il valore zero. |
st_loopon | F | 0 | R | - | Loop ON Segnalazione d'asse in reazione di spazio. 0 = asse non in reazione di spazio, 1 = asse in reazione di spazio. All'accensione per default viene caricato il valore zero. |
st_foller | F | 0 | R | - | Following error Segnalazione d'asse in errore d'inseguimento (ritenuta 500 ms). 0 = asse non in errore d'inseguimento, 1 = asse in errore d'inseguimento. All'accensione per default viene caricato il valore 1. |
st_regoff | F | 0 | R | - | Regulation Segnala che la regolazione é disabilitata e che l'aggiornamento del DAC non viene effettuato. |
st_cal | F | 0 | R | - | Calibration Segnalazione di device come generatore di tensione. 0=generatore di tensione asse disattivo, 1=generatore di tensione asse attivo. All'accensione per default viene caricato il valore zero. |
st_cntlock | F | 0 | R | - | Counter locked Segnalazione d'asse sbloccato. 0=conteggio asse sbloccato, 1=conteggio asse bloccato. |
st_cntrev | F | 0 | R | - | Counter reversed Segnalazione di conteggio asse invertito. 0=Conteggio asse non invertito, 1=Conteggio asse invertito. All'accensione viene mantenuto lo stato presente allo spegnimento. |
st_acc | F | 0 | R | - | Acceleration Segnalazione d'asse in fase di accelerazione. 0=asse non in accelerazione, 1=asse in accelerazione. All'accensione per default viene caricato il valore zero. |
st_dec | F | 0 | R | - | Deceleration Segnalazione d'asse in fase di decelerazione. 0=asse non in decelerazione, 1=asse in decelerazione. All'accensione per default viene caricato il valore zero. |
st_vconst | F | 0 | R | - | Costant speed Segnalazione d'asse in fase di velocità costante. 0 =asse non in velocità costante, 1 =asse in velocità costante. All'accensione per default viene caricato il valore zero. |
st_error | F | 0 | R | - | Status of device error Indica lo stato d'errore nel device. Per la decodifica dell'errore si deve fare riferimento alla variabile errcode ed errvalue. 0 = Errore non presente, 1 = Errore presente. All'accensione per default è posto a zero. |
st_warning | F | 0 | R | - | Status of device warning Indica lo stato di warning nel device. Per la decodifica del warning si deve fare riferimento alla variabile wrncode e wrnvalue. 0 = Warning non presente, 1 = Warning presente. All'accensione per default è posto a zero. |
st_int | F | 0 | R | - | Status of interrupt line Indica lo stato della linea d'interrupt. 0 = Ingresso in interrupt disattivo, 1 = Ingresso in interrupt attivo. All'accensione per default è posto a zero. |
1.8 Limitazioni
Nessuna limitazione.
1.9 Esempio applicativo
1.9.1 File di configurazione
;************************************************************************************* ; Nome Modulo: Ex_Eanpos.CNF Progetto: Ex_EANPOS ; Autore: QEM srl Data: 01/05/99 ; Sistema: QMove1 / QCL3 Libreria: 1LIB4001 ; Funzionalità: Esempio gestione EANPOS Release: 0 ;------------------------------------- Note ------------------------------------------ ; [1] - Applicativo d'esempio per utilizzo device EANPOS ************************************************************************************** ;------------------------------------------------------------------------------------- ; Definizione Costanti ;------------------------------------------------------------------------------------- CONST ;------------------------------------------------------------------------------------- ; Definizione Variabili SYSTEM ;------------------------------------------------------------------------------------- SYSTEM slQuotaPos L ;Variabile per quota di posizionamento slVelAsse L ;Variabile per velocità asse ;-------------------------------------------------------------------------------------; Definizione Variabili GLOBAL ;------------------------------------------------------------------------------------- GLOBAL gfMovMan F ;Flag segnalazione movimenti ;manuali in corso gfMovAuto F ;Flag segnalazione movimenti ;automatici in corso ;------------------------------------------------------------------------------------- ; Definizione Variabili TIMER ;------------------------------------------------------------------------------------- TIMER ;------------------------------------------------------------------------------------- ; Definizione DATAGROUP ;------------------------------------------------------------------------------------- ;DATAGROUP ;------------------------------------------------------------------------------------- ; Configurazione Bus ;------------------------------------------------------------------------------------- BUS 1 1CPUD 01 2 1MIXA 00 3 . 4 . ;------------------------------------------------------------------------------------- ; Definizione Variabili INPUT ;------------------------------------------------------------------------------------- INPUT ifAvMan F 2.INP01 ;Ingresso di avanti manuale ifInMan F 2.INP02 ;Ingresso di indietro manuale ifStart F 2.INP03 ;Ingresso di START asse ifStop F 2.INP04 ;Ingresso di STOP asse ;------------------------------------------------------------------------------------- ; Definizione Variabili OUTPUT ;------------------------------------------------------------------------------------- OUTPUT ofToll F 2.OUT01 ;Uscita di asse in tolleranza ofAxeFermo F 2.OUT02 ;Uscita di asse fermo ;------------------------------------------------------------------------------------- ; Dichiarazione device interni ;------------------------------------------------------------------------------------- INTDEVICE ;Nome Tipo TCamp Contatore Inter AbilZero OutAnal Asse EANPOS 0004 2.CNT01 1 2.INP01 2.AN01 END
1.9.2 Gestione EANPOS
;************************************************************************************* ; Nome File : TASK_00.MOD ; Progetto : EX_EANPOS ; Descrizione: Gestione Posizionamento ;************************************************************************************* ;------------------------------------------------------------------------------------- ; Operazioni di Inizializzazione Asse ;------------------------------------------------------------------------------------- Asse:measure = 10000 ;Spazio in 1 giro encoder(Um) Asse:pulse = 40000 ;impulsi giro encoder Asse:maxvel = 100000 ;Velocita` max. = Velocità Asse con ;uscita analogica a 10V (CALON/vout=100) Asse:maxpos = 999999 ;Quota massima Asse:minpos = -999999 ;Quota minima Asse:maxfollerr = 10000 ;Errore di inseguimento Asse:unitvel = 0 ;Unita di tempo della velocità Asse:decpt = 0 ;Cifre decimali Asse:rampmode = 0 ;Tipo di rampe utilizzate Asse:taccdec = 100 ;Tempo di accelerazione e di decelerazione Asse:tacc = 0 ;Tempo di accelerazione (non utilizzato) Asse:tdec = 0 ;Tempo di decelerazione (non utilizzato) Asse:tinv = 0 ;Tempo di inversione asse Asse:toll = 5 ;Tolleranza Asse:toldly = 10 ;Tempo di ritardo attivaz. tolleranza Asse:prsmode = 0 ;Tipo di ricerca di preset Asse:prspos = 0 ;Quota di preset Asse:prsdir = 0 ;Direzione della ricerca di preset Asse:prsvel = (20 * Asse:maxvel)/100 ;Velocità di preset (20% della vel.max.) Asse:sprsvel = (10 * Asse:maxvel)/100 ;Velocità di ricerca impulso di ;zero (10% della vel.max.) Asse:offset = 0 ;Tensione di offset Asse:pgain = 10 ;Guadagno proporzionale Asse:feedfw = 1000 ;Feedforward Asse:integt = 0 ;Tempo di integrale Asse:derivt = 0 ;Tempo derivativo INIT Asse ;Inizializza il device WAIT Asse:st_init ;Attendi che il device sia inizializzato CNTUNLOCK Asse ;Sblocca conteggio WAIT NOT Asse:st_cntlock ;Attendi che il conteggio sia sbloccato CNTDIR Asse ;Imposta il senso del conteggio WAIT NOT Asse:st_cntrev ;Attendi che sia impostato il senso ;del conteggio REGON Asse ;Abilita la regolazione WAIT NOT Asse:st_regoff ;Attendi l'abilitazione alla regolazione RESUME Asse ;Togli l'asse dallo stato di emergenza WAIT NOT Asse:st_emrg ;Attendi che l'asse non sia in emergenza LOOPON Asse ;Aggancia loop di reazione dell'asse WAIT Asse:st_loopon ;Attendi che sia agganciato il loop di ;reazione dell'asse IF (slVelAsse EQ 0) ;Nel caso in cui il set di velocità ;dell'asse sia zero slVelAsse = 50 ;Imposta una velocità di posizionamento ENDIF IF (slQuotaPos EQ 0) ;Nel caso in cui la quota di ;posizionamento dell'asse sia zero slQuotaPos = 2000 ;Imposta una quota di posizionamento ENDIF ;------------------------------------------------------------------------------------- ; Operazioni di Posizionamento ;------------------------------------------------------------------------------------- ; ------------------------------- variabili utilizzate ------------------------------ ; slVelAsse: Variabile impostabile che rappresenta la velocità dell'asse ; (espressa in % della vel.max.) ; slQuotaPos: Variabile impostabile che rappresenta la quota di posizionamento dell'asse ; ---------------------------------- flag utilizzati -------------------------------- ; gfMovMan: movimento manuale in corso ; gfMovAuto: Movimento automatico in corso ;------------------------------------------------------------------------------------- MAIN: ;------------------------------------------------------------------------------------- ; Gestione uscite ;------------------------------------------------------------------------------------- ofToll = Asse:st_toll ;Imposto l'uscita di tolleranza come ;lo stato di tolleranza ofAxeFermo = Asse:st_still ;Imposto l'uscita di asse fermo come ;lo stato di asse fermo ;------------------------------------------------------------------------------------- ; Gestione movimenti automatici ;------------------------------------------------------------------------------------- IF ifStart ;Attende l'ingresso di START IF NOT gfMovMan ;Controlla che non ci siano movimenti manuali IF Asse:st_still ;Controlla che l'asse sia fermo Asse:setvel=(slVelAsse*Asse:maxvel)/100 ;Imposta la velocità dell'asse Asse:setpos = slQuotaPos ;Imposta la quota di posizionamento START Asse ;Esegue lo start dell'asse gfMovAuto = 1 ;Segnala movimento automatico in corso ENDIF ENDIF ENDIF IF ifStop ;Attende l'ingresso di STOP IF NOT Asse:st_still ;Controlla che l'asse NON sia fermo STOP Asse ;Esegue lo stop dell'asse ENDIF ENDIF IF gfMovAuto ;Controlla segnalazione movimento ;automatico in corso IF Asse:st_still ;Controlla che l'asse sia fermo gfMovAuto = 0 ;Resetta stato di movimento Automatico ENDIF ENDIF ;------------------------------------------------------------------------------------- ; Gestione movimenti manuali ;------------------------------------------------------------------------------------- IF ifAvMan ;Attende l'ingresso di movimento manuale IF NOT (gfMovAuto OR gfMovMan) ;Controlla che non ci siano movimenti ;automatici o manuali IF Asse:st_still ;Controlla che l'asse sia fermo Asse:setvel=(slVelAsse*Asse:maxvel)/100 ;Imposta la velocita` dell'asse MANFW Asse ;Avanti asse in manuale gfMovMan = 1 ;Segnala movimento manuale in corso ENDIF ENDIF ENDIF IF ifInMan ;Attende l'ingresso di movimento manuale IF NOT (gfMovAuto OR gfMovMan) ;Controlla che non ci siano movimenti ;automatici o manuali IF Asse:st_still ;Controlla che l'asse sia fermo Asse:setvel=(slVelAsse*Asse:maxvel)/100 ;Imposta la velocita` dell'asse MANBW Asse ;Avanti asse in manuale gfMovMan = 1 ;Segnala movimento manuale in corso ENDIF ENDIF ENDIF IF gfMovMan ;Se l'asse si muove in manuale IF NOT (ifAvMan OR ifInMan) ;Se gli ingressi di avanti e indietro ;manuale sono OFF STOP Asse ;Ferma l'asse gfMovMan = 0 ;Togli la segnalazione di asse in ;movimento manuale ENDIF ENDIF ;------------------------------------------------------------------------------------- ; Operazioni finali ;------------------------------------------------------------------------------------- WAIT 1 JUMP MAIN END