Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Prossima revisione | Revisione precedente | ||
software:devices:eanpos [2019/08/29 17:01] – modifica esterna 127.0.0.1 | software:devices:eanpos [2022/10/12 08:52] (versione attuale) – [1. Introduzione] qem215 | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
+ | ====== DEVICE EANPOS ====== | ||
+ | |||
+ | |||
+ | ====== - 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 " | ||
+ | La funzione principale del device è quella di generare una traiettoria oprofilo di velocità che, opportunamente convertito | ||
+ | in un segnale di tensione proporzionale, | ||
+ | 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' | ||
+ | presente sul BUS QMOVE.\\ | ||
+ | Per la sincronizzazione della posizione rilevata dal device con quella reale dell' | ||
+ | movimentazione detta ricerca di preset.\\ | ||
+ | Il feed-back è di tipo PID+FF (proporzionale, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | |||
+ | ===== - 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: | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Dichiarazione devices interni | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | .. | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | dove: | ||
+ | |<nome 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. | ||
+ | |||
+ | ==== - Esempio ==== | ||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Dichiarazione devices interni | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | Asse_X EANPOS 2 2.CNT02 3 3.INP01 3.AN01 | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== - Funzionamento ===== | ||
+ | |||
+ | ==== - Rilevazione posizione ==== | ||
+ | Il device EANPOS acquisisce la posizione dellasse tramite i segnali di un trasduttore bidirezionale; | ||
+ | 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. | ||
+ | |||
+ | ==== - 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). | ||
+ | |||
+ | ==== - 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). | ||
+ | |||
+ | ==== - 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. | ||
+ | |||
+ | === - 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: | ||
+ | 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: | ||
+ | Asse:setvel = 10 | ||
+ | |||
+ | |||
+ | ===== - Comandi e parametri ===== | ||
+ | |||
+ | ==== - 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 | ||
+ | |||
+ | === - 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; | ||
+ | il comando non viene eseguito. | ||
+ | |||
+ | **A**\\ | ||
+ | Indica la modalità di accesso.\\ | ||
+ | R = Read (lettura).\\ | ||
+ | W = Write (scrittura).\\ | ||
+ | RW = Read / Write. | ||
+ | |||
+ | ==== - Comandi principali ==== | ||
+ | |||
+ | === - 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. | ||
+ | |||
+ | === - STOP === | ||
+ | Se durante il posizionamento è necessario fermare lasse con una rampa di decelerazione, | ||
+ | di STOP e lasse decelera fino a fermarsi con la rampa impostata nel parametro tdec. | ||
+ | {{: | ||
+ | |||
+ | === - 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, | ||
+ | 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. | ||
+ | |||
+ | === - 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). | ||
+ | |||
+ | === - 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). | ||
+ | |||
+ | === - 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| | ||
+ | |||
+ | ==== - 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, | ||
+ | Per confronto è mostrata la differenza del tempo d' | ||
+ | d' | ||
+ | {{: | ||
+ | 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). | ||
+ | |||
+ | ==== - 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, | ||
+ | È 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. | ||
+ | |||
+ | ==== - 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. | ||
+ | |||
+ | ==== - 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à. | ||
+ | |||
+ | === - 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, | ||
+ | * Per disabilitare lo stato di taratura inviare il comando CALOFF. | ||
+ | * Lo stato st_cal = 0 | ||
+ | |||
+ | === - 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). | ||
+ | |||
+ | === - 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. | ||
+ | |||
+ | === - 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: | ||
+ | |||
+ | Introdurre il valore di velocità massima trovato nel parametro maxvel. | ||
+ | |||
+ | ==== - Movimentazione ==== | ||
+ | |||
+ | **Attenzione!** Prima di movimentare lasse, verificare il corretto funzionamento dei dispositivi d' | ||
+ | |||
+ | 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' | ||
+ | massima. Successivamente abilitando la retroazione di spazio quest' | ||
+ | |||
+ | ==== - 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; | ||
+ | proporzionale, | ||
+ | Senza entrare nel merito di una descrizione tecnica della teoria della regolazione, | ||
+ | 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; | ||
+ | azioni integrale e derivativa vengono utilizzate solamente per regolazioni in condizioni particolari. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | === - Azione feed forward === | ||
+ | Il feed-forward contribuisce a rendere il sistema più pronto nei posizionamenti, | ||
+ | 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). | ||
+ | |||
+ | {{: | ||
+ | |||
+ | === - Azione proporzionale === | ||
+ | Quest' | ||
+ | è 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' | ||
+ | compiuto dallasse - alla massima velocità - per la durata del tempo di campionamento del device. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | === - 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' | ||
+ | instabile tendendo ad oscillare. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | === - 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. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== - 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**. | ||
+ | |||
+ | === - 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' | ||
+ | * 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, | ||
+ | * 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' | ||
+ | **sprsvel**.\\ | ||
+ | A questo punto il comportamento dipende dal modo di caricamento selezionato (Modo 0 o Modo 1). | ||
+ | |||
+ | === - 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, | ||
+ | (parametro posit=prspos).\\ | ||
+ | Successivamente, | ||
+ | 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.| | ||
+ | |{{: | ||
+ | |||
+ | === - 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, | ||
+ | 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, | ||
+ | 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.| | ||
+ | |{{: | ||
+ | |||
+ | === - 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. | ||
+ | |||
+ | |||
+ | ===== - Funzioni speciali ===== | ||
+ | |||
+ | ==== - 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 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; | ||
+ | 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, | ||
+ | Viene eseguito il posizionamento e, al suo completamento, | ||
+ | **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**. | ||
+ | |||
+ | ==== - Cambio quota e conteggio in movimento ==== | ||
+ | |||
+ | In alcune applicazioni viene richiesto di definire la quota di destinazione durante il posizionamento, | ||
+ | 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**). | ||
+ | |||
+ | ==== - 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' | ||
+ | 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, | ||
+ | variazione di velocità, in questo caso il nuovo tempo è messo in esecuzione immediatamente. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== - 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) | ||
+ | |||
+ | === - 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, | ||
+ | sola volta il comando; in caso contrario prestare attenzione a non inviare comandi successivi senza interporre una istruzione | ||
+ | di lettura su parametro device. | ||
+ | |||
+ | === - Esempio === | ||
+ | Asse:delta = 3\\ | ||
+ | DELCNT Asse\\ | ||
+ | WAIT Asse: | ||
+ | Asse:delta = 40\\ | ||
+ | DELCNT Asse | ||
+ | |||
+ | |||
+ | ===== - 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. | ||
+ | |||
+ | |||
+ | ===== - 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**. | ||
+ | |||
+ | |||
+ | ===== - Tabella comandi e parametri ===== | ||
+ | |||
+ | ==== - 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), | ||
+ | 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 | ||
+ | |||
+ | === - 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; | ||
+ | il comando non viene eseguito. | ||
+ | |||
+ | **A**\\ | ||
+ | Indica la modalità di accesso.\\ | ||
+ | R = Read (lettura).\\ | ||
+ | W = Write (scrittura).\\ | ||
+ | RW = Read / Write. | ||
+ | |||
+ | ==== - 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**, | ||
+ | **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' | ||
+ | |EMRG|st_init = 1|**Emergency**\\ Pone in emergenza l'asse interrompendo, | ||
+ | |RESUME|st_init = 1\\ st_emrg = 1|**Resume**\\ Ripristino della condizione di emergenza dell' | ||
+ | |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' | ||
+ | |LOOPON|st_init = 1|**Loop ON**\\ Abilita la reazione di spazio asse.\\ L' | ||
+ | |LOOPOFF|st_init = 1|**Loop OFF**\\ Disabilita la reazione di spazio asse.\\ L'asse può essere spostato dalla sua posizione senza che l' | ||
+ | |CNTLOCK|st_init = 1|**Counter lock**\\ Blocca l' | ||
+ | |CNTUNLOCK|st_init = 1|**Counter unlock**\\ Sblocca il conteggio dell' | ||
+ | |CNTREV|st_init = 1|**Counter reverse**\\ Consente di invertire le fasi del trasduttore all' | ||
+ | |CNTDIR|st_init = 1|**Counter direct**\\ Il conteggio dell' | ||
+ | |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' | ||
+ | |CALON|st_init = 1|**Calibration ON**\\ L' | ||
+ | |CALOFF|st_init = 1\\ st_cal = 1|**Calibration OFF**\\ L' | ||
+ | |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' | ||
+ | |REGON|st_init = 1\\ st_regoff = 1|**Regulation ON**\\ Riabilita la regolazione e l' | ||
+ | |DELCNT|st_init = 1\\ st_cal = 0\\ st_prson = 0|**Delta counter**\\ Il conteggio (posizione dell' | ||
+ | |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| | ||
+ | |||
+ | ==== - Parametri ==== | ||
+ | |||
+ | |**Nome**|**D**|**R**|**A**|**Condizioni**|**Descrizione**| | ||
+ | |measure|L|R|R-W|-|**Measure** (1÷999999)\\ Indica lo spazio, in unità di misura, percorso dall' | ||
+ | |pulse|L|R|R-W|-|**Pulse encoder** (1÷999999)\\ Indica gli impulsi moltiplicato 4 forniti dall' | ||
+ | |maxpos|L|R|R-W|st_still = 1|**Maximum position** (-999999 ÷ 999999)\\ Definisce la massima quota raggiungibile dall' | ||
+ | |minpos|L|R|R-W|st_still = 1|**Minimum position** (-999999 ÷ 999999)\\ Definisce la minima quota raggiungibile dall' | ||
+ | |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' | ||
+ | |prsvel|L|R|R-W|st_still = 1\\ st_prson = 0|**Preset velocity** (0 ÷ maxvel)\\ Definisce la velocità dell' | ||
+ | |sprsvel|L|R|R-W|st_still = 1\\ st_prson = 0|**Preset search velocity**\\ Nella procedura di ricerca di preset, definisce la velocità dell' | ||
+ | |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' | ||
+ | |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/ | ||
+ | |ramptype|B|R|R-W|st_still = 1|**Ramp type**\\ Definisce il tipo di rampa da eseguire:\\ 0 = Accelerazione 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/ | ||
+ | |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' | ||
+ | |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' | ||
+ | |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, | ||
+ | |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' | ||
+ | |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' | ||
+ | |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' | ||
+ | |integt|W|R|R-W|-|**Integral time** (da 0 a 32767)\\ È il tempo, espresso in millisecondi, | ||
+ | |derivt|W|R|R-W|-|**Derivative time** (da 0 a 32767)\\ È il tempo, espresso in millisecondi, | ||
+ | |prsmode|W|R|R-W|st_prson = 0|**Preset mode**\\ Definisce il tipo di ricerca di preset:\\ 0= Per la ricerca dell' | ||
+ | |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' | ||
+ | |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' | ||
+ | |offset|W|R|R-W|-|**Offset** (-32768 ÷ 32767)\\ Offset uscita DAC in bit.\\ Definisce il valore in bit della correzione relativa all' | ||
+ | |setpos|L|R|R-W|Se st_still = 0, vedi condizioni nel paragrafo " | ||
+ | |setvel|L|R|R-W|Se st_still = 0, vedi condizioni nel paragrafo " | ||
+ | |vout|B|0|R-W|st_cal = 1|**Volt out** (-100 ÷ 100)\\ É il valore della tensione d' | ||
+ | |vel|L|0|R-W|-|**Velocity**\\ É il valore della velocità istantanea dell' | ||
+ | |frq|L|0|R-W|-|**Frequency**\\ É il valore della frequenza istantanea dell' | ||
+ | |posit|L|R|R-W|Se st_still = 0, vedi condizioni nel paragrafo dedicato|**Actual position**\\ É il valore della posizione istantanea dell' | ||
+ | |encoder|L|R|R|-|**Encoder**\\ É il valore della posizione istantanea dell' | ||
+ | |follerr|L|0|R|-|**Following error**\\ É il valore istantaneo dell' | ||
+ | |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' | ||
+ | |errvalue|B|0|R|-|**Error value** (0 ÷ 100)\\ Indica la causa dell' | ||
+ | |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)| | ||
+ | |||
+ | ==== - Stati ==== | ||
+ | |||
+ | |**Nome**|**D**|**R**|**A**|**Condizioni**|**Descrizione**| | ||
+ | |st_init|F|0|R|-|**Initialization**\\ Segnalazione di device inizializzato.\\ 0 = device non inizializzato, | ||
+ | |st_emrg|F|0|R|-|**Emergency**\\ Segnalazione d'asse in emergenza.\\ 0 = asse non 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, | ||
+ | |st_prsok|F|0|R|-|**Preset Ok**\\ Segnalazione di ricerca di preset conclusa correttamente.\\ 0 = preset non effettuato o non concluso correttamente, | ||
+ | |st_still|F|0|R|-|**Still**\\ Segnalazione d'asse fermo.\\ 0 = asse in movimento, | ||
+ | |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' | ||
+ | |st_movdir|F|0|R|-|**Movement direction**\\ Segnalazione della direzione del movimento.\\ 0 = avanti,\\ 1 = indietro.\\ All' | ||
+ | |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' | ||
+ | |st_foller|F|0|R|-|**Following error**\\ Segnalazione d'asse in errore d' | ||
+ | |st_regoff|F|0|R|-|**Regulation**\\ Segnala che la regolazione é disabilitata e che l' | ||
+ | |st_cal|F|0|R|-|**Calibration**\\ Segnalazione di device come generatore di tensione.\\ 0=generatore di tensione asse disattivo, | ||
+ | |st_cntlock|F|0|R|-|**Counter locked**\\ Segnalazione d'asse sbloccato.\\ 0=conteggio asse sbloccato, | ||
+ | |st_cntrev|F|0|R|-|**Counter reversed**\\ Segnalazione di conteggio asse invertito.\\ 0=Conteggio asse non invertito, | ||
+ | |st_acc|F|0|R|-|**Acceleration**\\ Segnalazione d'asse in fase di accelerazione.\\ 0=asse non in accelerazione, | ||
+ | |st_dec|F|0|R|-|**Deceleration**\\ Segnalazione d'asse in fase di decelerazione.\\ 0=asse non in decelerazione, | ||
+ | |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' | ||
+ | |st_error|F|0|R|-|**Status of device error**\\ Indica lo stato d' | ||
+ | |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' | ||
+ | |st_int|F|0|R|-|**Status of interrupt line**\\ Indica lo stato della linea d' | ||
+ | |||
+ | |||
+ | ===== - Limitazioni ===== | ||
+ | |||
+ | Nessuna limitazione. | ||
+ | |||
+ | |||
+ | ===== - Esempio applicativo ===== | ||
+ | |||
+ | ==== - File di configurazione ==== | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Nome Modulo: | ||
+ | ; Autore: | ||
+ | ; Sistema: | ||
+ | ; Funzionalità: | ||
+ | ; | ||
+ | ; [1] - Applicativo d' | ||
+ | ************************************************************************************** | ||
+ | ; | ||
+ | ; Definizione Costanti | ||
+ | ; | ||
+ | CONST | ||
+ | ; | ||
+ | ; Definizione Variabili SYSTEM | ||
+ | ; | ||
+ | SYSTEM | ||
+ | slQuotaPos L ;Variabile per quota di posizionamento | ||
+ | slVelAsse L ; | ||
+ | |||
+ | ; | ||
+ | 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 | ||
+ | ifInMan | ||
+ | ifStart | ||
+ | ifStop | ||
+ | ; | ||
+ | ; Definizione Variabili OUTPUT | ||
+ | ; | ||
+ | OUTPUT | ||
+ | ofToll | ||
+ | ofAxeFermo | ||
+ | ; | ||
+ | ; Dichiarazione device interni | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | ;Nome Tipo | ||
+ | Asse | ||
+ | |||
+ | END | ||
+ | </ | ||
+ | |||
+ | ==== - Gestione EANPOS ==== | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Nome File : TASK_00.MOD | ||
+ | ; Progetto | ||
+ | ; Descrizione: | ||
+ | ; | ||
+ | |||
+ | ; | ||
+ | ; Operazioni di Inizializzazione Asse | ||
+ | ; | ||
+ | Asse: | ||
+ | Asse:pulse = 40000 ; | ||
+ | Asse:maxvel = 100000 | ||
+ | ; | ||
+ | Asse:maxpos = 999999 | ||
+ | Asse:minpos = -999999 | ||
+ | Asse: | ||
+ | Asse: | ||
+ | Asse:decpt = 0 ; | ||
+ | Asse: | ||
+ | Asse: | ||
+ | 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 ; | ||
+ | Asse: | ||
+ | Asse:prspos = 0 ;Quota di preset | ||
+ | Asse:prsdir = 0 ;Direzione della ricerca di preset | ||
+ | Asse:prsvel = (20 * Asse: | ||
+ | Asse: | ||
+ | ;zero (10% della vel.max.) | ||
+ | Asse:offset = 0 ;Tensione di offset | ||
+ | Asse:pgain = 10 ;Guadagno proporzionale | ||
+ | Asse:feedfw = 1000 ; | ||
+ | Asse:integt = 0 ;Tempo di integrale | ||
+ | Asse:derivt = 0 ;Tempo derivativo | ||
+ | INIT Asse ; | ||
+ | WAIT Asse: | ||
+ | CNTUNLOCK Asse ; | ||
+ | WAIT NOT Asse: | ||
+ | CNTDIR Asse ;Imposta il senso del conteggio | ||
+ | WAIT NOT Asse: | ||
+ | ;del conteggio | ||
+ | REGON Asse ; | ||
+ | WAIT NOT Asse: | ||
+ | ; | ||
+ | WAIT NOT Asse: | ||
+ | LOOPON Asse ;Aggancia loop di reazione dell' | ||
+ | WAIT Asse: | ||
+ | ; | ||
+ | IF (slVelAsse EQ 0) ;Nel caso in cui il set di velocità | ||
+ | ; | ||
+ | slVelAsse = 50 ; | ||
+ | ENDIF | ||
+ | IF (slQuotaPos EQ 0) ;Nel caso in cui la quota di | ||
+ | ; | ||
+ | slQuotaPos = 2000 ;Imposta una quota di posizionamento | ||
+ | ENDIF | ||
+ | |||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; (espressa in % della vel.max.) | ||
+ | ; | ||
+ | ; ---------------------------------- flag utilizzati -------------------------------- | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | MAIN: | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ofToll = Asse: | ||
+ | ;lo stato di tolleranza | ||
+ | ofAxeFermo = Asse: | ||
+ | ;lo stato di asse fermo | ||
+ | |||
+ | ; | ||
+ | ; Gestione movimenti automatici | ||
+ | ; | ||
+ | IF ifStart | ||
+ | IF NOT gfMovMan | ||
+ | IF Asse: | ||
+ | Asse: | ||
+ | Asse:setpos = slQuotaPos | ||
+ | START Asse ;Esegue lo start dell' | ||
+ | gfMovAuto = 1 ; | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | IF ifStop | ||
+ | IF NOT Asse: | ||
+ | STOP Asse ; | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | IF gfMovAuto | ||
+ | ;automatico in corso | ||
+ | IF Asse: | ||
+ | gfMovAuto = 0 ; | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | |||
+ | ; | ||
+ | ; Gestione movimenti manuali | ||
+ | ; | ||
+ | IF ifAvMan | ||
+ | IF NOT (gfMovAuto OR gfMovMan) | ||
+ | ;automatici o manuali | ||
+ | IF Asse: | ||
+ | Asse: | ||
+ | MANFW Asse ; | ||
+ | | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | |||
+ | IF ifInMan | ||
+ | IF NOT (gfMovAuto OR gfMovMan) | ||
+ | ;automatici o manuali | ||
+ | IF Asse: | ||
+ | Asse: | ||
+ | MANBW Asse ; | ||
+ | | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | |||
+ | IF gfMovMan | ||
+ | IF NOT (ifAvMan OR ifInMan) | ||
+ | ;manuale sono OFF | ||
+ | STOP Asse ; | ||
+ | gfMovMan = 0 ;Togli la segnalazione di asse in | ||
+ | ;movimento manuale | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | |||
+ | ; | ||
+ | ; Operazioni finali | ||
+ | ; | ||
+ | WAIT 1 | ||
+ | JUMP MAIN | ||
+ | END | ||
+ | </ | ||
+ | |||