Nel file di configurazione (.CNF), la sezione BUS deve essere dichiarata in modo tale che siano
presenti le risorse hardware necessarie allimplementazione del device EPICPOS. 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> EPICPOS TCamp ICont IntL IAZero IOutA
È 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. |
---|
dove:
<nome device> | Nome assegnato al device. |
EPICPOS | Parola chiave che identifica il devices posizionatore epicicloidale. |
TCamp | Tempo campionamento device (1÷255 ms). |
ICont | Ingresso del contatore bidirezionale. |
IntL | Numero della linea di interrupt dedicata per l'impulso di zero dell'encoder 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 l'abilitazione per l'acquisizione dell'impulso 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 dell'uscita analogica. |
;--------------------------------- ; Dichiarazione devices interni ;--------------------------------- INTDEVICE Asse_X EPICPOS 2 2.CNT02 3 3.INP01 3.AN01
Il device EPICPOS 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 parametro cntratio viene utilizzato allora per esprimere il rapporto tra gli impulsi
trasduttore ed il corrispondente in unità di misura dellapplicazione. I valori ammessi per questo
parametro sono 0,00374 ÷ 4 con cinque cifre di precisione. Il rapporto deve essere introdotto nel
parametro come valore intero e quindi moltiplicato per 100000.
cntratio = (valore in um) x 10 cifre decimali / (impulsi trasduttore corrispondenti) x 100000
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 al numeratore la grandezza senza punto decimale. Il punto decimale varrà poi inserito nei visualizzatori in fase di rappresentazione del valore (es. come proprietà nel terminale operatore).
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.
Per rendere attivo il device inviare il comando INIT. |
---|
Come detto per il calcolo della risoluzione si deve considerare lo spazio eseguito rappresentato nell'unità di misura millimetri. Per questo la risoluzione risulta:
cntratio = (18.2 x 101 / 500) x 100000 = 36400
le impostazioni devono allora essere: Asse:cntratio = 36400 Asse:decpt = 1
Per eseguire un posizionamento a 146 centimetri bisogna digitare Asse:setpos = 1460
Per impostare una velocitá di 10 centimetri al secondo bisogna digitare : Asse:unitvel = 1 Asse:setvel = 10
Prima di iniziare dei posizionamenti veri e propri è necessario verificare che collegamenti elettrici ed organi meccanici non siano causa di malfunzionamenti. |
---|
Per la gestione dell'asse, il device EPICPOS utilizza un'uscita 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à.
Il device EPICPOS 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).
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 espressa
nellunità di misura sullunità di tempo scelti.
Introdurre il valore di velocitá massima calcolato nel parametro maxvel.
Il metodo pratico si basa sulla lettura della velocitá rilevata dal device nel parametro 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 una proporzione.
Introdurre il valore di velocitá massima trovato nel parametro maxvel.
Prima di movimentare l'asse, verificare il corretto funzionamento dei dispositivi di 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 dell'asse.
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 una imperfezione nella taratura della velocitá massima. Successivamente abilitando la retroazione di spazio questo errore scompare.
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.
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).
Questa 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á si intende lo spazio compiuto dallasse - alla massima velocità - per la
durata del tempo di campionamento del device.
Integra lerrore di posizione del sistema nel tempo impostato nel parametro integt aggiornando
luscita finché lerrore non viene annullato.
Più basso è il tempo di integrazione dellerrore, più veloce è il sistema nel recupero dellerrore,
ma il sistema può diventare instabile tendendo ad oscillare.
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.
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.
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 questo 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).
Questa procedura prevede la movimentazione dell'asse e l'utilizzo dell'ingresso di abilitazione impulso di zero trasduttore. |
---|
Alla disattivazione dell'ingresso 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 all'avviamento di una nuova procedura
di preset; all'accensione del sistema questo stato é sempre a zero. Vedi figura 1.
Figura 1: caricamento preset utilizzando la sola camma di abilitazione. |
Questa procedura prevede la movimentazione dell'asse e l'utilizzo degli ingressi impulso di zero ed abilitazione impulso di zero trasduttore. |
---|
Alla disattivazione dell'ingresso 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
l'impulso 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, l'asse 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 all'avviamento di una nuova procedura di preset. All'accensione del sistema st_prsok é
sempre a zero. Vedi figura 2.
Figura 2: caricamento preset utilizzando camma di abilitazione ed impulso di zero trasduttore. |
Questa procedura NON prevede la movimentazione dell'asse e l'utilizzo dell'ingresso 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 dall'attivazione dell'ingresso di abilitazione zero
encoder e lo stato st_prsok viene impostato a uno.
Se l'ingresso rimane attivo il caricamento é continuo mentre, se all'accensione l'ingresso é già
attivo, il primo caricamento viene eseguito solo dopo una sua disattivazione e successiva attivazione.
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 EPICPOS 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 viene posto nella condizione di regoff, luscita analogica rimane fissa allultimo
valore di tensione definito prima del comando REGOFF.
Il cambio della quota viene accettato solamente se la nuova posizione é raggiungibile con la direzione in uso e se l'asse non é già in fase di decelerazione per raggiungere la quota precedentemente impostata. |
---|
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.
Durante il posizionamento é possibile anche modificare il valore del conteggio posit. Questa funzione viene utilizzata solitamente quando un device deve, in particolari condizioni, continuare un profilo di velocitá per un tempo molto lungo, superiore al tempo che l'asse impiega per raggiungere la quota limite (maxpos o minpos).
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.
Durante il posizionamento possono essere variati anche i tempi di accelerazione/decelerazione.
Per esempio il device può avviare un posizionamento con una rampa molto breve e, una volta
raggiunta la velocitá impostata, viene variato il parametro tacc ed eseguito un cambio di velocitá
con una rampa molto lunga.
Per applicazioni particolari il tempo di rampa può essere variato anche durante una variazione di
velocitá, in questo caso il nuovo tempo viene messo in esecuzione immediatamente.
Il comando è inviabile solamente se l'asse è fermo, condizione di st_still = 1. |
---|
Il device visualizza sempre la posizione assoluta dell'asse; 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
La modifica del valore di risoluzione (cntratio) o la scrittura della variabile posit, provoca l'azzeramento dei resti della conversione. |
---|
Questa operazione introduce un errore perché impone la posizione “posit = -100”, quando
l'asse 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 l'accumularsi
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)
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.
Asse:delta = 3
DELCNT Asse
WAIT Asse:st_init
Asse:delta = 40
DELCNT Asse
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
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.
I comandi sono stati ordinati con priorità decrescente. Ad esempio, in caso di contemporaneità dei comandi INIT ed EMRG, viene acquisito per primo il comando INIT.
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 DPR; successivamente, con comando INIT l'asse verrà 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. Viene 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. All'acquisizione dello start, l'asse riprende il posizionamento. |
START | st_init = 1 st_regoff = 0 st_emrg = 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_cal = 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, …). Questa 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. |
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 st_still = 1 | 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 | Manual forward Comanda il posizionamento manuale in avanti (verso maxpos) alla velocitá impostata. |
MANBW | st_init = 1 st_regoff = 0 st_prson = 0 st_still = 1 | Manual backwar Comanda il posizionamento manuale in indietro (verso minpos) alla velocitá impostata. |
REGOFF | st_init = 1 st_still = 1 | Regulation ON Disabilita la regolazione e l'aggiornamento del DAC, nonché tutti i comandi di movimento. |
REGON | st_init = 1 st_regoff = 1 | Regulation OFF Riabilita la regolazione e l'aggiornamento del DAC, nonché tutti i comandi di movimento. |
DELCNT | st_init = 1 st_still = 1 | Delta counter Questo comando viene accettato solamente se l'asse è fermo; il conteggio (posizione dell'asse) viene modificato sommandogli algebricamente il valore specificato nella variabile delta. |
Nome | D | R | A | Condizioni | Descrizione |
---|---|---|---|---|---|
cntratio | L | R | R-W | st_still = 1 | Counter ratio Definisce per quanto vanno moltiplicati gli impulsi del trasduttore in modo che l'acquisizione degli spostamenti venga espressa nell'unità di misura desiderata. Impostando 100000 la variazione del conteggio è di 1 bit per impulso trasduttore. Range valido: 347 ÷ 400000 |
maxpos | L | R | R-W | st_still = 1 | Maximum position 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). Range valido: -999999 ÷ 999999 |
minpos | L | R | R-W | st_still = 1 | Minimum position 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). Range valido: -999999 ÷ 999999 |
prspos | L | R | R-W | st_still = 1 | Preset position Definisce il valore che viene caricato sul conteggio con la procedura di ricerca di preset. Range valido: minpos÷maxpos |
maxvel | L | R | R-W | st_still = 1 | Maximum velocity Definisce la massima velocità dell'asse (relativa al riferimento analogico di +/-10V). Il valore introdotto è nell'unità di tempo della velocità impostata Velocity unit. Range valido: 0 ÷ 999999 (Um/s o Um/min) |
prsvel | L | R | R-W | st_still = 1 | Preset velocity Definisce la velocità dell'asse durante la procedura di ricerca di preset. Il valore introdotto è nell'unità di tempo della velocità impostata (Velocity unit). Range valido: 0 ÷ maxvel |
sprsvel | L | R | R-W | st_still = 1 | 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). Range valido: 0 ÷ prsvel |
toll | L | R | R-W | st_still = 1 | Tolerance 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). Range valido: -999999 ÷ 999999 |
maxfollerr | L | R | R-W | Nessuna | Maximum following error Definisce il massimo scostamento accettabile tra la posizione teorica e la posizione reale dell'asse. Il valore introdotto è espresso in bits trasduttore moltiplicato per 4. Range valido: 0 ÷ 2147483648 |
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 di accelerazione e decelerazione uguali o differenziate. Valori ammessi: 0 = rampe uguali 1 = rampe differenziate |
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 i nuovi tempi di acc. e dec. permettono di raggiungere la quota impostata. | Acceleration/deceleration time É 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. Range valido: da 0 a 999 |
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 Definisce il tempo necessario all'asse per accelerare da zero (asse fermo) alla velocità massima. Il valore introdotto è espresso in centesimi di secondo. Range valido: da 0 a 999 |
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 Definisce il tempo necessario all'asse per decelerare dalla velocità massima a zero (condizione di asse fermo). Il valore introdotto è espresso in centesimi di secondo. Range valido: da 0 a 999 |
tinv | W | R | R-W | Nessuna | Direction inversion delay Viene utilizzato per evitare stress meccanici dovuti a troppo rapide inversioni del senso di movimento. Il valore introdotto è espresso in centesimi di secondo. Range valido: da 0 a 999 |
rtype | B | R | R-W | Nessuna | Reduction type 0 = I tempi di accelerazione e decelerazione rimangono quelli della velocitá impostata e viene diminuita proporzionalmente la velocitá. 1 = Vengono diminuiti i valori sia dei tempi di accelerazione e decelerazione, sia della velocitá. |
stopt | B | R | R-W | Nessuna | Stop type 0 = Quando di esegue la frenata in rampa viene completata prima l'accelerazione e poi la frenata. 1 = Viene immediatamente eseguita la frenata |
toldly | W | R | R-W | Nessuna | Tolerance delay 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. Range valido: da 0 a 999 |
pgain | W | R | R-W | Nessuna | Proportional ga Impostando il valore 1000, il coefficente è 1.000 È il coefficente che moltiplicato per l'errore di inseguimento genera la parte proporzionale dell'uscita di regolazione. Range valido: da 0 a 32767 |
feedfw | W | R | R-W | Nessuna | Feed forward 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. Range valido: da 0 a 32767 |
integt | W | R | R-W | Nessuna | Integral time È il tempo, espresso in millisecondi, che produce il coefficiente di integrazione dell'errore di inseguimento. L'integrazione di tale errore moltiplicata per tale coefficente genera la parte integrale dell'uscita di regolazione. Range valido: da 0 a 32767 |
derivt | W | R | R-W | Nessuna | Derivative time È il tempo, espresso in millisecondi, che produce il coefficiente derivativo dell'errore di inseguimento. La derivazione di tale errore moltiplicata per tale coefficente genera la parte integrale dell'uscita di regolazione. Range valido: da 0 a 32767 |
prsmode | B | R | R-W | Nessuna | 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 | Nessuna | 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 | Velocity 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 Definisce la precisione con la quale si intendono impostare le preselezioni e visualizzare i conteggi relativamente all'asse. Range valido: da 0 a 3. |
offset | W | R | R-W | Nessuna | Offset 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. Range valido: da -32768 a 32 |
setpos | L | R | R-W | se st_still = 1 scrittura sempre abilitata , se st_still = 0 scrittura abilitata se la nuova quota puó essere raggiunta con la stessa direzione di posizionemat. Il parametro viene alterato se eseguita una ricerca di preset con prsmode = 0 o 1. | Setted position Definisce la quota di posizionamento raggiungibile dall'asse x alla velocità setvelx. Range valido: da minpos a maxpos N.B. Il valore viene alterato se si comanda una procedura di ricerca preset con prsmode = 0 o 1. |
setvel | L | R | R-W | se st_still = 1 scrittura sempre abilita, se st_still = 0 il nuovo valore viene memorizzato ma processato solamente se l'asse non é in decelerazione per raggiungere la quota impostata. Il parametro viene alterato se eseguita una ricerca di preset con prsmode = 0 o 1. | Setted velocity É il valore della velocitá di posizionamento. Valore espresso in Um/s o Um/min. Range valido: 0 ÷ maxvel |
vout | B | 0 | R-W | st_cal = 1 | Volt out É il valore della tensione di uscita, espressa in decimi di volts, da usare nella procedura di calibrazione. Valore espresso in decimi di V. Range valido: -100 ÷ 100 |
vel | L | 0 | R | Nessuna | Velocity È il valore della velocitá istantanea dell'asse. Valore espresso in Um/s o Um/min. |
frq | L | 0 | R | Nessuna | Frequency È il valore della frequenza istantanea dell'asse. Valore espresso in Hz. |
posit | L | R | R-W | se st_still = 1 scrittura sempre abilita, se st_still = 0 il nuovo valore viene processato solamente se l'asse non é in decelerazione per raggiungere la quota impostata. | Actual position È il valore della posizione istantanea dell'asse. Valore espresso in unità di misura (Um). Range valido: -999999 ÷ 999999 |
follerr | L | 0 | R | Nessuna | Following error É il valore istantaneo dell'errore di inseguimento. Valore espresso in bit trasduttore |
ffwdreg | L | 0 | R | Nessuna | Feed-forward register È il valore istantaneo del registro di feed-forward espresso in bit. |
propreg | L | 0 | R | Nessuna | Proportional register È il valore istantaneo del registro proporzionale espresso in bit. |
intreg | L | 0 | R | Nessuna | Integral register È il valore istantaneo del registro integrale espresso in bit. Range valido: 0 ÷ 1024 |
derreg | L | 0 | R | Nessuna | Derivative register È il valore istantaneo del registro derivativo espresso in bit. Range valido: 0 ÷ 1024 |
delta | L | R | R-W | Nessuna | Delta counter È il valore che viene sommato al conteggio quando viene inviato un comando DELCNT. Valore espresso in unità di misura (Um). Range valido: -999999 ÷ 999999 |
Nome | D | R | A | Condizioni | Descrizione |
---|---|---|---|---|---|
st_init | F | 0 | R | Nessuna | Initialization Segnalazione di device inizializzato 0 = device non inizializzato. 1 = device inizializzato. |
st_emrg | F | 0 | R | Nessuna | Emergency Segnalazione di asse in emergenza. 0 = asse non in emergenza. 1 = asse in emergenza |
st_toll | F | 0 | R | Nessuna | Tolerance Segnalazione di asse in tolleranza rispetto alla quota posta in esecuzione dal comando di START. La segnalazione di asse in tolleranza può essere ritardata tramite il parametro toldly. 0 = asse non in tolleranza. 1 = asse in tolleranza. |
st_prsok | F | 0 | R | Nessuna | Preset Ok Segnalazione di asse in tolleranza rispetto alla quota posta in esecuzione dal comando di START. La segnalazione di asse in tolleranza può essere ritardata tramite il parametro toldly. 0 = asse non in tolleranza. 1 = asse in tolleranza. |
st_still | F | 1 | R | Nessuna | Still Segnalazione di asse fermo. 0 = asse in movimento. 1 = asse fermo. |
st_prson | F | 0 | R | Nessuna | Preset ON Segnalazione di ricerca di preset asse in corso 0 = ricerca di preset non in corso. 1 = ricerca di preset in corso. |
st_movdir | F | 0 | R | Nessuna | Movement direction Segnalazione della direzione del movimento. 0 = avanti. 1 = indietro |
st_loopon | F | 0 | R | Nessuna | Loop ON Segnalazione di asse in reazione di spazio. 0 = asse non in reazione di spazio. 1 = asse in reazione di spazio. |
st_foller | F | 0 | R | Nessuna | Following error Segnalazione di asse in errore di inseguimento (ritenuta 500 ms). 0 = asse non in errore di inseguimento. 1 = asse in errore di inseguimento. |
st_regoff | F | 0 | R | Nessuna | Regulation Segnala che la regolazione é disabilitata e che l'aggiornamento del DAC non viene effettuato. 0 = regolazione abilitata. 1 = regolazione disabilitata. |
st_cal | F | 0 | R | Nessuna | Calibration Segnalazione di asse come generatore di tensione 0 = generatore di tensione asse disattivo. 1 = generatore di tensione asse attivo. |
st_cntlock | F | R | R | Nessuna | Counter locked Segnalazione di asse bloccato 0 = conteggio asse sbloccato 1 = conteggio asse bloccato. |
st_cntrev | F | R | R | Nessuna | Counter reversed Segnalazione di conteggio asse invertito 0 = Conteggio asse non invertito. 1 = Conteggio asse invertito. |
;************************************************************************************* ; Nome Modulo: Ex_Epic.CNF Progetto: Ex_EPICPOS ; Autore: QEM srl Data: 01/05/99 ; Sistema: QMove1 / QCL3 Libreria: 1LIB3B04 ; Funzionalità: Esempio gestione EPICPOS Release: 0 ;------------------------------------- Note ------------------------------------------ ; [1] - Applicativo di esempio per utilizzo device EPICPOS ;************************************************************************************* ;------------------------------------------------------------------------------------- ; 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 1CPUB 02 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 EPICPOS 0004 2.CNT01 1 2.INP01 2.AN01 END
;------------------------------------------------------------------------------------- ; Nome File: TASK_00.MOD ; Progetto : EX_EPICPOS ; Descrizione: Gestione Posizionamento ;------------------------------------------------------------------------------------- ;------------------------------------------------------------------------------------- ; Operazioni di Inizializzazione Asse ;------------------------------------------------------------------------------------- Asse:cntratio = 100000 ;Risoluz.encoder = Spazio in 1 giro ;encoder(Um) / impulsi giro encoder Asse:maxvel = 100000 ;Velocita` max. = Velocita` 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 segnalazione ;tolleranza Asse:rtype = 1 ;Tipo di riduzione profilo Asse:stopt = 1 ;Tipo di stop 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 il 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 velocita' 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à dellasse 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 velocità 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 ;autometici 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