Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente | ||
software:devices:anpos [2017/01/18 16:44] – [8.21.1. Dichiarazione device nella unit di configurazione] qem103 | software:devices:anpos [2020/07/13 15:01] (versione attuale) – qem103 | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
+ | ====== DEVICE ANPOS ====== | ||
+ | |||
+ | |||
+ | ====== - Introduzione ====== | ||
+ | |||
+ | * Il device interno ANPOS è un tool residente nella CPU che permette di gestire il movimento di un asse meccanico con un comando analogico a rampe trapezoidali. | ||
+ | * La funzione principale del device è quella di generare una traiettoria o profilo di velocità che, opportunamente convertito in un segnale di tensione proporzionale, | ||
+ | * 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 lazionamento viene generata da un dispositivo hardware DAC (Digital to Analogic Converter) presente sul BUS QMOVE. | ||
+ | * Per la sincronizzazione della posizione rilevata dal device con quella reale dellasse, esiste una speciale procedura di movimentazione detta ricerca di preset. | ||
+ | * Il feed-back è di tipo PID+FF (proporzionale, | ||
+ | I cablaggi e collegamenti dellapparecchiatura descritta nel presente manuale, devono rispettare la Normativa Europea EN60204-1. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | ===== - Installazione ===== | ||
+ | |||
+ | ==== - Dichiarazione device nella unit di configurazione ==== | ||
+ | |||
+ | Nella unit di configurazione, | ||
+ | presenti le risorse hardware necessarie all' | ||
+ | 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 della unit di configurazione deve essere aggiunta la seguente definizione: | ||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Dichiarazione devices | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | .. | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | ^:info:^È 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 oppure X.^ | ||
+ | |||
+ | dove: | ||
+ | ^<nome device> | ||
+ | |ANPOS|Parola chiave che identifica il devices posizionatore analogico.| | ||
+ | |TCamp|Tempo di campionamento device 1÷255 ms)| | ||
+ | |ICont|Ingresso contatore bidirezionale| | ||
+ | |IntL|Numero della linea di interrupt dedicata per l' | ||
+ | |IAZero|Ingresso di __abilitazione__ per l' | ||
+ | |IOutA|Indirizzo hardware del componente DAC dell' | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Dichiarazione devices | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | Asse_X | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== - Funzionamento ===== | ||
+ | |||
+ | ==== - Rilevazione posizione ==== | ||
+ | |||
+ | Il device ANPOS 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 // | ||
+ | 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.\\ | ||
+ | // | ||
+ | |||
+ | === - 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 al numeratore 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. | ||
+ | |||
+ | === - Esempio === | ||
+ | |||
+ | ^:info:^Per rendere attivo il device inviare il comando INIT.^ | ||
+ | |||
+ | * Si vuole rappresentare le posizioni in centimetri con un punto decimale. | ||
+ | * Nello spazio di 18,2 centimetri il trasduttore genera 500 impulsi. | ||
+ | |||
+ | Come detto per il calcolo della risoluzione si deve considerare lo spazio eseguito rappresentato | ||
+ | nellunità di misura millimetri. Per questo la risoluzione risulta:\\ | ||
+ | **cntratio = (18.2 x 10< | ||
+ | |||
+ | le impostazioni devono allora essere:\\ | ||
+ | // | ||
+ | // | ||
+ | |||
+ | Per eseguire un posizionamento a 146 centimetri bisogna digitare\\ | ||
+ | // | ||
+ | |||
+ | Per impostare una velocità di 10 centimetri al secondo bisogna digitare:\\ | ||
+ | // | ||
+ | // | ||
+ | |||
+ | ==== - Calibrazione uscita analogica ==== | ||
+ | |||
+ | ^: | ||
+ | |||
+ | Per la gestione dell' | ||
+ | 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 emergenzacon 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 ANPOS 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 ==== | ||
+ | |||
+ | ^: | ||
+ | |||
+ | Le procedure fin qui descritte hanno permesso di completare la prima fase di parametrizzazione del device. Ora é possibile eseguire una semplice movimentazione dell' | ||
+ | * Spostare l'asse in una posizione tale per cui possa compiere un determinato spazio senza toccare i finecorsa di quota massima. | ||
+ | * Impostare la posizione attuale dell' | ||
+ | * Impostare i parametri che definiscono la posizione dei finecorsa software: //minpos// = 0 e //maxpos// al valore della corsa massima dell' | ||
+ | * Impostare il parametro che definisce il tempo impiegato dall' | ||
+ | * Impostare la velocitá di posizionamento con il parametro //setvel//. | ||
+ | * Impostare la quota di destinazione con il parametro //setpos//. | ||
+ | * Impostare il parametro // | ||
+ | * Se il device é in stato di emergenza (st_emrg = 1) dare il comando //RESUME//. | ||
+ | * Avviare il posizionamento con il comando //START//. In 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 una imperfezione nella taratura della velocitá massima. Successivamente abilitando la | ||
+ | retroazione di spazio questo errore scompare. | ||
+ | |||
+ | ==== - 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, | ||
+ | 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, | ||
+ | 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; | ||
+ | regolazioni in condizioni particolari. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | === - Azione feed forward === | ||
+ | Il feed-forward contribuisce a rendere il sistema più pronto nei posizionamenti, | ||
+ | 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). | ||
+ | |||
+ | {{: | ||
+ | |||
+ | === - Azione proporzionale === | ||
+ | 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. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | === - 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 di integrazione dellerrore, | ||
+ | ma il sistema può diventare 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 // | ||
+ | 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 | ||
+ | // | ||
+ | |||
+ | === - 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 questo ingresso in un punto prestabilito. | ||
+ | * La procedura di ricerca di preset viene 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 sottolineare 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 // | ||
+ | |||
+ | === - Ricerca di preset - Modo 0 === | ||
+ | |||
+ | ^: | ||
+ | |||
+ | Alla disattivazione dell' | ||
+ | Successivamente, | ||
+ | |||
+ | |Figura 1: caricamento preset utilizzando la sola camma di abilitazione.| | ||
+ | |{{ : | ||
+ | |||
+ | === - Ricerca di preset - Modo 1 === | ||
+ | |||
+ | ^: | ||
+ | |||
+ | Alla disattivazione dell' | ||
+ | del primo impulso di zero fornito dal trasduttore e, su questo segnale, viene caricata la quota | ||
+ | di preset nel conteggio (parametro // | ||
+ | Per permettere il caricamento della quota di preset con "Modo 1", la scheda sulla quale è collegato | ||
+ | l' | ||
+ | hardware. Inoltre il device deve essere stato definito per utilizzare la stessa linea di interrupt | ||
+ | hardware (veri definizione nel file .CNF).\\ | ||
+ | Successivamente, | ||
+ | attiva lo stato // | ||
+ | fino all' | ||
+ | sempre a zero. Vedi figura 2. | ||
+ | |||
+ | |Figura 2: caricamento preset utilizzando camma di abilitazione ed impulso di zero trasduttore.| | ||
+ | |{{ : | ||
+ | |||
+ | === - Ricerca di preset "Modo 2" === | ||
+ | |||
+ | ^: | ||
+ | |||
+ | Con questa procedura, la ricerca di preset non esegue nessun posizionamento. Il comando di | ||
+ | caricamento della quota di preset viene fornito dall' | ||
+ | encoder e lo stato // | ||
+ | Se l' | ||
+ | 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 ANPOS 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; | ||
+ | (// | ||
+ | Normalmente tutti i device devono essere nello stato // | ||
+ | al dispositivo DAC. Prima di iniziare il posizionamento, | ||
+ | interessato viene portato allo stato di // | ||
+ | completamento, | ||
+ | Per nessun motivo due device si devono trovare contemporaneamente nello stato di // | ||
+ | Quando il device viene posto nella condizione di regoff, luscita analogica rimane fissa allultimo | ||
+ | valore di tensione definito prima del comando //REGOFF//. | ||
+ | |||
+ | ==== - Cambio quota e conteggio in movimento ==== | ||
+ | |||
+ | ^:info:^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 // | ||
+ | |||
+ | ==== - 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//. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Durante il posizionamento possono essere variati anche i tempi di accelerazione/ | ||
+ | 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. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== - Delta conteggio ==== | ||
+ | |||
+ | ^:info:^Il comando è inviabile solamente se l'asse è fermo, condizione di st_still = 1.^ | ||
+ | |||
+ | Il device visualizza sempre la posizione assoluta dell' | ||
+ | è 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: | ||
+ | // | ||
+ | |||
+ | ^:info:^La modifica del valore di risoluzione (// | ||
+ | |||
+ | Questa operazione introduce un errore perché impone la posizione "// | ||
+ | Il comando //DELCNT// somma al conteggio una quantità pari al parametro delta senza perdere la parte frazionaria della posizione: | ||
+ | // | ||
+ | //DELCNT Asse//\\ | ||
+ | Il comando di //DELCNT// può essere inviato solamente con asse fermo (// | ||
+ | |||
+ | === - 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: | ||
+ | // | ||
+ | lasse assume la nuova posizione B.\\ | ||
+ | Con le istruzioni :\\ | ||
+ | // | ||
+ | //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, | ||
+ | |||
+ | === - Esempio === | ||
+ | // | ||
+ | //DELCNT Asse//\\ | ||
+ | //WAIT Asse: | ||
+ | // | ||
+ | //DELCNT Asse// | ||
+ | |||
+ | |||
+ | ===== - 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 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; | ||
+ | |||
+ | **A**\\ | ||
+ | Indica la modalità di accesso.\\ | ||
+ | R = Read (lettura).\\ | ||
+ | W = Write (scrittura).\\ | ||
+ | RW = Read / Write. | ||
+ | |||
+ | ==== - Comandi ==== | ||
+ | |||
+ | 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 = 1|**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_cal = 0\\ st_still = 1|**Start**\\ Comanda il posizionamento alla quota //setpos// e velocitá // | ||
+ | |STOP|st_init = 1\\ st_regoff = 0\\ st_emrg = 0\\ st_cal = 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\\ 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' | ||
+ | |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|**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 backward**\\ Comanda il posizionamento manuale in indietro (verso minpos) alla velocitá impostata.| | ||
+ | |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_still = 1\\ st_init = 1|**Delta counter**\\ Questo comando viene accettato solamente se l'asse è fermo; il conteggio (posizione dell' | ||
+ | |||
+ | ==== - Parametri ==== | ||
+ | |||
+ | ^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' | ||
+ | |maxpos|L|R|R-W|st_still = 1|**Maximum position**\\ Definisce la massima quota raggiungibile dall' | ||
+ | |minpos|L|R|R-W|st_still = 1|**Minimum position**\\ Definisce la minima quota raggiungibile dall' | ||
+ | |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: // | ||
+ | |maxvel|L|R|R-W|st_still = 1|**Maximum velocity**\\ Definisce la massima velocità dell' | ||
+ | |prsvel|L|R|R-W|st_still = 1|**Preset velocity**\\ Definisce la velocità dell' | ||
+ | |sprsvel|L|R|R-W|st_still = 1|**Preset search velocity**\\ Nella procedura di ricerca di preset, definisce la velocità dell' | ||
+ | |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' | ||
+ | |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/ | ||
+ | |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/ | ||
+ | |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' | ||
+ | |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' | ||
+ | |tinv|W|R|R-W|Nessuna|**Direction inversion delay**\\ Viene utilizzato per evitare stress meccanici dovuti a troppo rapide inversioni del senso di movimento. Valore espresso in centesimi di secondo.\\ Range valido: da 0 a 999| | ||
+ | |toldly|W|R|R-W|Nessuna|**Tolerance delay**\\ Definisce il tempo che intercorre tra l' | ||
+ | |pgain|W|R|R-W|Nessuna|**Proportional gain**\\ Impostando il valore 1000, il coefficente è 1.000\\ È il coefficiente che moltiplicato per l' | ||
+ | |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' | ||
+ | |integt|W|R|R-W|Nessuna|**Integral time**\\ È il tempo, espresso in millisecondi, | ||
+ | |derivt|W|R|R-W|Nessuna|**Derivative time**\\ È il tempo, espresso in millisecondi, | ||
+ | |prsmode|B|R|R-W|Nessuna|**Preset mode**\\ Definisce il tipo di ricerca di preset:\\ **0** = Per la ricerca dell' | ||
+ | |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' | ||
+ | |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' | ||
+ | |offset|W|R|R-W|Nessuna|**Offset**\\ Offset uscita DAC in bit.\\ Definisce il valore in bit della correzione relativa all' | ||
+ | |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\\ posizionemato.\\ Il parametro viene\\ alterato se eseguita\\ una ricerca di preset\\ con prsmode = 0 o 1.|**Setted position**\\ Definisce la quota di posizionamento raggiungibile dall' | ||
+ | |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.\\ Range valido: -100 ÷ 100| | ||
+ | |vel|L|0|R|Nessuna|**Velocity**\\ É il valore della velocitá istantanea dell' | ||
+ | |frq|L|0|R|Nessuna|**Frequency**\\ É il valore della frequenza istantanea dell' | ||
+ | |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' | ||
+ | |follerr|L|0|R|Nessuna|**Following error**\\ É il valore istantaneo dell' | ||
+ | |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.| | ||
+ | |derreg|L|0|R|Nessuna|**Derivative register**\\ È il valore istantaneo del registro derivativo espresso in bit.| | ||
+ | |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| | ||
+ | |||
+ | ==== - Stati ==== | ||
+ | |||
+ | ^Nome^D^R^A^Condizioni^Descrizione^ | ||
+ | |st_init|F|0|R|Nessuna|**Initialization**\\ Segnalazione di device inizializzato.\\ **0** = device non inizializzato.\\ **1** = device inizializzato.\\ All' | ||
+ | |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.\\ All' | ||
+ | |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.\\ All' | ||
+ | |st_still|F|0|R|Nessuna|**Still**\\ Segnalazione di asse fermo.\\ **0** = asse in movimento.\\ **1** = asse fermo.\\ All' | ||
+ | |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 prest in corso.\\ All' | ||
+ | |st_movdir|F|0|R|Nessuna|**Movement direction**\\ Segnalazione della direzione del movimento.\\ **0** = avanti.\\ **1** = indietro.\\ All' | ||
+ | |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.\\ All' | ||
+ | |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.\\ All' | ||
+ | |st_regoff|F|0|R|Nessuna|**Regulation**\\ Segnala che la regolazione é disabilitata e che l' | ||
+ | |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.\\ All' | ||
+ | |st_cntlock|F|R|R|Nessuna|**Counter locked**\\ Segnalazione di asse sbloccato.\\ **0** = conteggio asse sbloccato.\\ **1** = conteggio asse bloccato| | ||
+ | |st_cntrev|F|R|R|Nessuna|**Counter revers**\\ Segnalazione di conteggio asse invertito.\\ **0** = Conteggio asse non invertito.\\ **1** = Conteggio asse invertito.\\ All' | ||
+ | |st_cntrev|F|R|R|Nessuna|**Counter revers**\\ Segnalazione di conteggio asse invertito.\\ **0** = Conteggio asse non invertito.\\ **1** = Conteggio asse invertito.\\ All' | ||
+ | |||
+ | |||
+ | ===== - Limitazioni ===== | ||
+ | |||
+ | Nessuna limitazione | ||
+ | |||
+ | |||
+ | ===== - Esempio applicativo ===== | ||
+ | |||
+ | ==== - File di configurazione ==== | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Nome Modulo: Ex_Anpos.CNF | ||
+ | ; Autore: QEM srl Data: 01/05/99 | ||
+ | ; Sistema: QMove1 / QCL3 | ||
+ | ; Funzionalità: | ||
+ | ; | ||
+ | ; [1] - Applicativo di esempio per utilizzo device ANPOS | ||
+ | ************************************************************************************** | ||
+ | |||
+ | ; | ||
+ | ; Definizione Costanti | ||
+ | ; | ||
+ | CONST | ||
+ | |||
+ | ; | ||
+ | ; Definizione Variabili SYSTEM | ||
+ | ; | ||
+ | SYSTEM | ||
+ | slQuotaPos | ||
+ | slVelAsse | ||
+ | |||
+ | ; | ||
+ | ; Definizione Variabili GLOBAL | ||
+ | ; | ||
+ | GLOBAL | ||
+ | gfMovMan | ||
+ | ;manuali in corso | ||
+ | gfMovAuto | ||
+ | ;automatici in corso | ||
+ | | ||
+ | ; | ||
+ | ; Definizione Variabili TIMER | ||
+ | ; | ||
+ | TIMER | ||
+ | |||
+ | ; | ||
+ | ; Definizione DATAGROUP | ||
+ | ; | ||
+ | ;DATAGROUP | ||
+ | ; | ||
+ | ; Configurazione Bus | ||
+ | ; | ||
+ | BUS | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | ; | ||
+ | ; Definizione Variabili INPUT | ||
+ | ; | ||
+ | INPUT | ||
+ | ifAvMan | ||
+ | ifInMan | ||
+ | ifStart | ||
+ | ifStop | ||
+ | |||
+ | ; | ||
+ | ; Definizione Variabili OUTPUT | ||
+ | ; | ||
+ | OUTPUT | ||
+ | ofToll | ||
+ | ofAxeFermo | ||
+ | |||
+ | ; | ||
+ | ; Dichiarazione device | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | ;Nome | ||
+ | Asse ANPOS 0004 2.CNT01 | ||
+ | |||
+ | END | ||
+ | </ | ||
+ | |||
+ | ==== - Gestione ANPOS ==== | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Nome File: TASK_00.MOD | ||
+ | ; Progetto : EX_ANPOS | ||
+ | ; Descrizione: | ||
+ | ; | ||
+ | |||
+ | ; | ||
+ | ; Operazioni di Inizializzazione Asse | ||
+ | ; | ||
+ | Asse: | ||
+ | ; | ||
+ | Asse:maxvel = 100000 | ||
+ | ; | ||
+ | vout=100) | ||
+ | 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: | ||
+ | vel.max.) | ||
+ | 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: | ||
+ | RESUME Asse ;Togli l'asse dallo stato di emergenza | ||
+ | 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 | ||
+ | |||
+ | ; | ||
+ | ; Operazioni di Posizionamento | ||
+ | ; | ||
+ | ; ------------------------------- variabili utilizzate ------------------------------ | ||
+ | ; slVelAsse: Variabile impostabile che rappresenta la velocità dell' | ||
+ | ; (espressa in % della vel.max.) | ||
+ | ; slQuotaPos: Variabile impostabile che rappresenta la quota di posizionamento | ||
+ | dell' | ||
+ | ; ---------------------------------- flag utilizzati -------------------------------- | ||
+ | ; gfMovMan: movimento manuale in corso | ||
+ | ; gfMovAuto: Movimento automatico in corso | ||
+ | ; | ||
+ | MAIN: | ||
+ | ; | ||
+ | ; Gestione uscite | ||
+ | ; | ||
+ | ofToll = Asse: | ||
+ | ;lo stato di tolleranza | ||
+ | ofAxeFermo = Asse: | ||
+ | ;lo stato di asse fermo | ||
+ | |||
+ | ; | ||
+ | ; Gestione movimenti automatici | ||
+ | ; | ||
+ | IF ifStart | ||
+ | IF NOT gfMovMan | ||
+ | ;manuali | ||
+ | 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 ;Avanti asse in manuale | ||
+ | gfMovMan = 1 ;Segnala movimento manuale in corso | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | IF ifInMan | ||
+ | IF NOT (gfMovAuto OR gfMovMan) | ||
+ | ;autometici o manuali | ||
+ | IF Asse: | ||
+ | Asse: | ||
+ | MANBW Asse ;Avanti asse in manuale | ||
+ | gfMovMan = 1 ;Segnala movimento manuale in corso | ||
+ | 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 | ||
+ | </ | ||
+ | |||