Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Prossima revisione
Revisione precedente
software:devices:gear [2017/06/19 09:47] – creata qem209software:devices:gear [2025/01/17 10:09] (versione attuale) – [Table] qem215
Linea 1: Linea 1:
 +PRELIMINARE/
  
 +====== DEVICE GEAR  ======
 +
 +====== - Introduzione ======
 +
 +
 +Il device interno GEAR permette di controllare un asse slave in modo che segua un asse master secondo un determinato rapporto di trasmissione. Il device GEAR funziona solamente con assi controllati da device ANPOS2. \\
 +Le principali caratteristiche del device sono:
 +
 +  * Impostazione rapporto di trasmissione con numeratore/denominatore per una precisa sincronizzazione
 +  * Comando degli assi indipendente quando la sincronizzazione è disattiva
 +  * Disattivazione sincronizzazione con rampa di frenata
 +  * Gestione di device di gruppo
 +
 +
 +===== - Dichiarazione del device =====
 +==== - Dichiarazione ====
 +
 +Per poter usufruire del device è necessario eseguirne la dichiarazione nell'apposita sezione INTDEVICE della unit di configurazione.
 +
 +<code QCL>
 +;--------------------------------- 
 +; Dichiarazione device interni 
 +;--------------------------------- 
 +INTDEVICE 
 +...
 +<nome>  GEAR  REF_ANPOS2(AxeMaster) REF_ANPOS2(AxeSlave)
 +</code>
 +
 +Dove:
 +
 +^Nome campo ^ Descrizione ^ Esempio ^ Altro ^
 +| <nome> | Nome assegnato al device | gear | - |
 +| GEAR | Parola chiave che identifica il device GEAR | - | - |
 +| REF_ANPOS2(AxeMaster) | Riferimento al device ANPOS2 per l'asse Master | AxeM | Vedi nota (1) |
 +| REF_ANPOS2(AxeSlave) | Riferimento al device ANPOS2 per l'asse Slave | AxeS | Vedi nota (1) |
 +
 +:info: Si possono dichiarare più slave, fino ad un massimo di 9 FIXME.\\ Es: <code QCL>
 +;--------------------------------- 
 +; Dichiarazione device interni 
 +;--------------------------------- 
 +INTDEVICE 
 +...
 +<nome>  GEAR  REF_ANPOS2(AxeMaster)  REF_ANPOS2(AxeSlave1)  REF_ANPOS2(AxeSlave2)  REF_ANPOS2(AxeSlave3)  X  X  X  X  X  X
 +</code>
 +===== - Descrizione del funzionamento =====
 +
 +==== - Funzionamento ====
 +
 +Il funzionamento del device è illustrato dal seguente schema a blocchi:
 +
 +{{software:devices:gantry:gantry_001.png?800&direct}}
 +
 +===== - Elenco Parametri =====
 +
 +==== commandCode ====
 +{{template>lib:tpl:tpl-s-tapardev-010
 +|shortdescr=|
 +|dim=|
 +|default=-|
 +|accesstype=|
 +|um=|
 +|id=|
 +|range=|
 +|wrcond=|
 +|longdescr=}}
 +---- 
 +
 +
 +<html><pagebreak /></html>
 +
 +==== gearref ====
 +{{template>lib:tpl:tpl-s-tapardev-010
 +|shortdescr=Riferimento rapporto di trasmissione |
 +|dim=Byte|
 +|default=-|
 +|accesstype=Read - Write|
 +|um=-|
 +|id=|
 +|range=0÷1|
 +|wrcond= -|
 +|longdescr=Indica il riferimento al quale applicare il rapporto di trasmissione master/slave. \\
 +  * 0: Posizione comandata master
 +  * 1: Posizione reale master}}
 +
 +---- 
 +<html><pagebreak /></html>
 +
 +==== gearfactor ====
 +{{template>lib:tpl:tpl-s-tapardev-010
 +|shortdescr=Riferimento rapporto di trasmissione |
 +|dim=Byte|
 +|default=-|
 +|accesstype=Read - Write|
 +|um=-|
 +|id=|
 +|range=|
 +|wrcond= -|
 +|longdescr=Indica il rapporto di trasmissione master/slave \\ es: \\ gearfactor = 1 -> lo slave seguirà la posizione del master \\ gearfactor = 2 -> lo slave seguirà la posizione del master moltiplicata x2 \\ gearfactor = 999 -> lo slave seguirà la posizione del master moltiplicata x999}}
 +
 +---- 
 +<html><pagebreak /></html>
 +
 +==== gearoffset ====
 +{{template>lib:tpl:tpl-s-tapardev-010
 +|shortdescr=|
 +|dim=|
 +|default=|
 +|accesstype=|
 +|um=|
 +|id=|
 +|range=|
 +|wrcond= |
 +|longdescr=}}
 +
 +---- 
 +<html><pagebreak /></html>
 +
 +==== qdoIndex ====
 +{{template>lib:tpl:tpl-s-tapardev-010
 +|shortdescr=indice per la configurazione |
 +|dim=|
 +|default=|
 +|accesstype=|
 +|um=|
 +|id=|
 +|range=|
 +|wrcond= |
 +|longdescr= sempre 1 FIXME}}
 +
 +---- 
 +<html><pagebreak /></html>
 +
 +==== qdoSubIndex ====
 +{{template>lib:tpl:tpl-s-tapardev-010
 +|shortdescr= sotto indice per la configurazione|
 +|dim=|
 +|default=|
 +|accesstype=|
 +|um=|
 +|id=|
 +|range=|
 +|wrcond= |
 +|longdescr= }}
 +
 +---- 
 +<html><pagebreak /></html>
 +
 +==== qdoData ====
 +{{template>lib:tpl:tpl-s-tapardev-010
 +|shortdescr= valori principali per la configurazione|
 +|dim=|
 +|default=|
 +|accesstype=|
 +|um=|
 +|id=|
 +|range=|
 +|wrcond= |
 +|longdescr=}}
 +
 +---- 
 +<html><pagebreak /></html>
 +==== wrncode ====
 +{{template>lib:tpl:tpl-s-tapardev-010
 +|shortdescr=Codice di identificazione warning|
 +|dim = Byte |
 +|default= 0 |
 +|accesstype= Read |
 +|um= - |
 +|id= 4 |
 +|range= |
 +|wrcond= - |
 +|longdescr=Indica il tipo di warning rilevato dal device. Per ulteriori informazioni consultare il capitolo dedicato.}}
 +
 +----
 +
 +<html><pagebreak /></html>
 +
 +==== wrnpar ====
 +{{template>lib:tpl:tpl-s-tapardev-010
 +|shortdescr=ID del parametro che ha provocato il warning.|
 +|dim = Byte |
 +|default= 0 |
 +|accesstype= Read |
 +|um= - |
 +|id= 5 |
 +|range= |
 +|wrcond= - |
 +|longdescr=Indica quale parametro ha provocato il warning rilevato dal device. Per ulteriori informazioni consultare il capitolo dedicato.}}
 +
 +----
 +
 +<html><pagebreak /></html>
 +
 +==== wrnvalue ====
 +
 +{{template>lib:tpl:tpl-s-tapardev-010
 +|shortdescr=Codice di identificazione della causa del warning|
 +|dim = Byte |
 +|default= 0 |
 +|accesstype= Read |
 +|um= - |
 +|id= 6 |
 +|range= - |
 +|wrcond= - |
 +|longdescr=Indica la causa del warning rilevato dal device. Per ulteriori informazioni consultare il capitolo dedicato.}}
 +
 +----
 +
 +<html><pagebreak /></html>
 +
 +==== errcode ====
 +
 +{{template>lib:tpl:tpl-s-tapardev-010
 +|shortdescr=Codice di identificazione dell'errore.|
 +|dim = Byte |
 +|default= 0 |
 +|accesstype= Read |
 +|um= - |
 +|id= 7 |
 +|range= - |
 +|wrcond= - |
 +|longdescr=Indica il tipo di errore rilevato dal device. Per ulteriori informazioni consultare il capitolo dedicato.}}
 +
 +----
 +
 +<html><pagebreak /></html>
 +
 +==== errpar ====
 +
 +{{template>lib:tpl:tpl-s-tapardev-010
 +|shortdescr=ID del parametro che ha provocato l'errore.|
 +|dim = Byte |
 +|default= 0 |
 +|accesstype= Read |
 +|um= - |
 +|id= 8 |
 +|range= - |
 +|wrcond= - |
 +|longdescr=Indica il parametro che ha provocato l'errore rilevato dal device. Per ulteriori informazioni consultare il capitolo dedicato.}}
 +
 +----
 +
 +<html><pagebreak /></html>
 +
 +==== errvalue ====
 +
 +{{template>lib:tpl:tpl-s-tapardev-010
 +|shortdescr=Codice di identificazione della causa dell'errore |
 +|dim = Byte |
 +|default= 0 |
 +|accesstype= Read |
 +|um= - |
 +|id= 9 |
 +|range= - |
 +|wrcond= - |
 +|longdescr= Indica il tipo di causa dell'errore rilevato dal device. Per ulteriori informazioni consultare il capitolo dedicato. }}
 +
 +----
 +
 +<html><pagebreak /></html>
 +
 +
 +===== - Elenco Stati =====
 +
 +==== st_gearon ====
 +{{template>lib:tpl:tpl-s-statedev-010
 +|shortdescr=Stato di sincronismo attivo|
 +|default= 0|
 +|id= 10 |
 +|longdescr=Indica che è attivo il sincronismo master/slave.
 +
 + * 0 = sincronismo master/slave non attivo
 + * 1 = sincronismo master/slave attivo }}
 +----
 +
 +<html><pagebreak /></html>
 +
 +
 +==== st_gearchg ====
 +{{template>lib:tpl:tpl-s-statedev-010
 +|shortdescr=Stato di cambiamento denominatore rapporto master/slave|
 +|default= 0|
 +|id= 11 |
 +|longdescr=Indica che è stato modificato il denominatore del rapporto master slave ma non è ancora attivo.
 +
 + * 0 = rapporto master/slave corrisponde al rapporto gearnum/gearden
 + * 1 = denominatore rapporto master/slave modificato e non corrispondente a gearnum/gearden
 +
 +}}
 +----
 +
 +<html><pagebreak /></html>
 +
 +
 +==== st_warning ====
 +{{template>lib:tpl:tpl-s-statedev-010
 +|shortdescr=Presenza di un warning.|
 +|default= 0|
 +|id= 12 |
 +|longdescr=Indica lo stato di warning del device, per riconoscere il tipo di warning si deve fare riferimento alle variabili //wrncode//,  //wrnvalue// e //wrnpar//.
 +
 +0 = warning non presente.\\
 +1 = warning presente.\\
 +
 +}}
 +---
 +
 +<html><pagebreak /></html>
 +
 +==== st_error ====
 +{{template>lib:tpl:tpl-s-statedev-010
 +|shortdescr=Presenza di un errore.|
 +|default= 0|
 +|id= 13 |
 +|longdescr=Indica lo stato di errore del device, per riconoscere il tipo di errore si deve far riferimento alle variabili //errcode// e //errvalue//.
 +
 +0 = errore non presente.\\
 +1 = errore presente.\\
 +
 +}}
 +----
 +
 +<html><pagebreak /></html>
 +
 +===== - Elenco Comandi =====
 +
 +==== GEARON ====
 +{{template>lib:tpl:tpl-s-cmddevice-010
 +|cond=st_error=0, st_emrg=0 |
 +|shortdescr=Attiva la sincronizzazione |
 +|id= 14 |
 +|longdescr=Attiva la sincronizzazione tra gli assi con il rapporto master/slave}}
 +----
 +
 +<html><pagebreak /></html>
 +
 +==== GEAROFF ====
 +{{template>lib:tpl:tpl-s-cmddevice-010
 +|cond=st_error=0 |
 +|shortdescr=Disattiva la sincronizzazione |
 +|id= 14 |
 +|longdescr=Disattiva la sincronizzazione tra gli assi con il rapporto master/slave quindi l'asse slave può essere comandato in maniera indipendente dal master.}}
 +----
 +
 +<html><pagebreak /></html>
 +
 +==== RSERR ====
 +{{template>lib:tpl:tpl-s-cmddevice-010
 +|cond= - |
 +|shortdescr= Reset dello stato di errore.|
 +|id= 15 |
 +|longdescr=Azzera lo stato di errore (//st_error//) nel caso non sia più presente la condizione di errore.}}
 +----
 +
 +<html><pagebreak /></html>
 +
 +==== RSWRN ====
 +{{template>lib:tpl:tpl-s-cmddevice-010
 +|cond= - |
 +|shortdescr= Reset dello stato di warning.|
 +|id= 16 |
 +|longdescr=Azzera lo stato //st_warning//. }}
 +----
 +
 +<html><pagebreak /></html>
 +
 +==== READQDO ====
 +{{template>lib:tpl:tpl-s-cmddevice-010
 +|cond= - |
 +|shortdescr= |
 +|id= |
 +|longdescr=}}
 +----
 +
 +<html><pagebreak /></html>
 +
 +==== WRITEQDO ====
 +{{template>lib:tpl:tpl-s-cmddevice-010
 +|cond= - |
 +|shortdescr= Scrive la configurazione nel device|
 +|id= |
 +|longdescr=Scrive nel device i valori impostati su qdoIndex, qdoSubIndex e qdoData.}}
 +----
 +
 +<html><pagebreak /></html>
 +===== - Errori e Warnings =====
 +
 +==== - Errors ====
 +Quando il device non riesce ad eseguire le operazioni derivanti da una non corretta programmazione da parte dell'utente segnala questa condizione tramite l'attivazione dello stato //st_error//. Il device, inoltre, rende disponibili, tramite i valori sui parametri //errcode//, //errvalue// ed //errpar//, alcune informazioni per meglio comprendere il tipo di errore e quale condizione l'ha generato. Tali informazioni e lo stato di errore //st_error//, permangono finché non viene eseguito l'apposito comando //RSERR// che li cancella.\\
 +La seguente tabella specifica i valori assunti da //errcode//:\\
 +^//errcode// ^Descrizione ^
 +|0|Nessun errore.|
 +|1|Errore dati: Sono presenti valori fuori range nei parametri.|
 +|2|Errore di configurazione.|
 +
 +Per mezzo dei parametri //errvalue// e //errpar// è possibile ottenere informazioni più dettagliate riguardo l'errore.\\
 +Il parametro //errpar// indica sempre l'ID del parametro che ha causato l'errore. \\
 +Invece attualmente il parametro //errvalue// non è utilizzato e vale sempre 0.
 +
 +<html><pagebreak /></html>
 +
 +==== - Warnings ====
 +Quando l'impostazione di un parametro del device non viene accettata o quando non è possibile eseguire un comando il device segnala questa condizione tramite l'attivazione dello stato //st_warning//.
 +Il device, inoltre, rende disponibili, tramite i valori sui parametri //wrncode//, //wrnvalue// e //wrnpar//, alcune informazioni per meglio comprendere il tipo di warning e quale condizione l'ha generato. 
 +Tali  informazioni e lo stato di warning //st_warning//, permangono finché non viene eseguito l'apposito comando //RSWRN// che li cancella.\\
 +La seguente tabella specifica i valori assunti da //wrncode//:\\
 +
 +^ //wrncode//  ^ Descrizione                                                              ^
 +| 0            | Nessun warning.                                                          |
 +| 1            | Impostazione dato fuori range.                                           |
 +| 2            | Variazione parametro non accettata.                                      |
 +| 3            | Comando non accettato: le condizioni di esecuzione non sono rispettate.  |
 +| 8            | Disallineamento massimo superato                                         |
 +
 +Per mezzo dei parametri //wrnvalue// e //wrnpar// è possibile ottenere informazioni più dettagliate riguardo il warning.\\
 +Il parametro //wrnpar// indica sempre l'ID del parametro che ha causato il warning.\\
 +Il parametro //wrnvalue// fornisce le seguenti informazioni:
 +
 +^ wrnvalue ^ descrizione ^
 +|  1  | Il denominatore del rapporto master/slave è zero |  
 +|  2  | Il riferimento dell'asse slave non è valido |  
 +|  3  | Asse slave in emergenza. Attivazione gear non possibile |  
 +
 +
 +<WRAP center round important 60%>
 +documentation  under develop
 +</WRAP>
 +
 +===== - Configurazione =====
 +
 +**Accorgimenti:** Per eseguire la configurazione serve:\\ st_gearon = 0, st_error = 0, st_warning = 0. \\ 
 +  - **Dichiarazione device**: <code QCL>
 +        CONST 
 +           AXE_X   1
 +           AXE_Y   2
 +           AXE_Z   3
 +        INTDEVICE
 +           AxeX    ANPOS2 ...
 +           AxeY    ANPOS2 ...
 +           AxeZ    ANPOS2 ...
 +           Gantry1  GEAR  AxeX  AxeY  AxeZ  X  X  X  X  X  X  X
 +</code>
 +  - **Sospendere esecuzione Gantry**: <code QCL>
 +        ; Gantry1 = nome device GEAR
 +        Gantry1.qdoIndex = 1
 + Gantry1.qdoSubIndex = 10
 + Gantry1.qdoData = 0 ; 1: Resume and 0: Suspend
 + Gantry1.WRITEQDO
 +</code>
 +  - **Settare l'asse master**: <code QCL>
 +        ; Set the master axis
 + Gantry1.qdoIndex = 1
 + Gantry1.qdoSubIndex = 3
 + Gantry1.qdoData = AXE_X   ;Imposto asse X (AxeX) come master
 + Gantry1.WRITEQDO
 +</code>
 +  - **Selezionare l'asse che si vuole comandare come slave**: <code QCL>
 +        ; Select the first slave of the gear device.
 + ; The selected axis is used to assign gearing settings and thresholds
 + Gantry1.qdoIndex = 1
 + Gantry1.qdoSubIndex = 1   ;1 perchè dichiarato come primo slave nella dichiarazione del device GEAR        
 + Gantry1.qdoData = AXE_Y   ;Seleziono asse Y (AxeY)
 + Gantry1.WRITEQDO
 +
 +        ; *** Nel caso in cui si volesse selezionare l'asse Z come slave:
 +        Gantry1.qdoIndex = 1
 + Gantry1.qdoSubIndex = 2   ;2 perchè dichiarato come secondo slave nella dichiarazione del device GEAR         
 + Gantry1.qdoData = AXE_Z   ;Seleziono asse Z (AxeZ)
 + Gantry1.WRITEQDO
 +</code>
 +  - **Settare l'asse slave**: <code QCL>
 +        ; Inform the gantry that the selected axis should be managed as slave
 + Gantry1.qdoIndex = 1
 + Gantry1.qdoSubIndex = 4   ; GEAR_QDO_SUBINDEX_IS_SLAVE
 + Gantry1.qdoData = TRUE   ; TRUE to set it as slave and FALSE to not handle it.
 + Gantry1.WRITEQDO
 +</code>
 +  - **Impostare i fattori di conversione**: <code QCL>
 +        ; Set the factors for the selected slave
 + Gantry1.gearfactor = 1.0  ;l'asse slave seguirà la posizione del master con un rapporto 1:1
 + Gantry1.gearref = 1       ;l'asse slave seguirà la posizione reale del master
 +</code>
 +  - **Impostare il valore di massimo disallineamento per mandare in allarme il device**: <code QCL>
 +  ; Set the alignment threshold for the selected slave in the units set to the anpos2 devices (In this case um)
 + Gantry1.qdoSubIndex = 2
 + Gantry1.qdoData = 100     ;[Um] Se la differenza di posizione tra master e slave supera 100 [Um] il device va in allarme
 + Gantry1.WRITEQDO
 +</code>
 +  - **Abilitare il gantry**: <code QCL>
 +        Gantry1.qdoSubIndex = 10
 + Gantry1.qdoData = 1       ; 1: Resume and 0: Suspend
 + Gantry1.WRITEQDO
 +        Gantry1.RSWRN             ; Reset warning
 + Gantry1.GEARON            ; Gear ON
 +</code>