This is an old revision of the document!
AN003 - Example of using and calibrating the COUNTER3 device
In this section we want to describe the first steps that will make the user in his first contact with the COUNTER3 device. You also want to provide a simple example using the COUNTER3 device.
We can divide in the following sections, the proceed of the operation:
-
device declaration in the configuration unit
-
introduction of parameters in order to correctly calibrate inputs and outputs
-
development of the application according to the needs
Device declaration in the unit configuration
As was already explained in the description of the COUNTER3 device, You must program properly the unit application configuration. It is very important to the part of code that declares the device, Here you should indicate the hardware resources to be used to ensure proper operation. It will be the responsibility of the programmer to pick and choose the most appropriate inputs and outputs. For example with the following line of code:
;--------------------------------- ; Internal device declaration ;--------------------------------- INTDEVICE ... Asse COUNTER3 2 2.CNT02 3 2.OUT01 2.OUT02
You define a COUNTER3 device with “Axis” name where the sampling time is 2 ms. Have been declared the following hardware resources: the input to the bidirectional counter has address 2.CNT02 (2 indicates the slot where installed the card, while CNT02 is the mnemonic name of the input), the number of digital input for interruption dedicated to the acquisition of the count (number 3) and finally the addresses of two exits used by comparators.
An application that has just inside the device declaration in the configuration unit and the qcl unit that it does not run anything (with the exception of the forced WAIT) already allows to perform the first operations using the capabilities of the device. In fact after downloading the application on the instrument and have done work, it can change the parameters, observe the States or give commands to devices using the appropriate monitor from QView.
This is very convenient in the early stages of planning when you just want to make some runs or being debugged.
Corretta parametrizzazione del device
Una volta dichiarate correttamente le risorse hardware da utilizzare è necessario impostare alcuni parametri in base alle componenti che sono collegate al prodotto Qmove.
Introduzione di measure e pulse
Prendiamo in considerazione il caso (piuttosto diffuso) in cui il trasduttore bidirezionale sia un encoder digitale. Supponiamo che l'encoder sia direttamente calettato su un motore che debba movimentare un asse. Sarà necessario impostare correttamente i parametri measure e pulse del device in modo che quest'ultimo possa interpretare gli impulsi encoder che arriveranno al QMove, lo strumento quindi potrà calcolare la posizione dell'asse. L'introduzione di measure e pulse consente di stabilire una corrispondenza tra uno spazio in una unità di misura prescelta ed un determinato numero di impulsi. Nel caso in cui l'utilizzatore conosca già lo spazio percorso in un giro encoder allora potrà procedere direttamente all'inserimento dei valori.
Chiariamo questo concetto con un esempio: se l'encoder genera 1000 impulsi giro e si è a conoscenza che l'asse si muove di 5 cm quando l'encoder compie precisamente un giro allora si potranno inserire i seguenti valori:
Asse:measure = 50; Asse:pulse = 4000
il valore di measure introdotto inoltre implica la scelta di un'unità di misura del millimetro per misurare le posizioni, nel parametro pulse sì è introdotto un valore pari al numero di impulsi encoder moltiplicato per 4. Si ricorda che il rapporto measure/pulse deve avere un valore compreso tra 0.00935 e 1 (per rispetto dei limiti di precisione del device e del prodotto QMove). È importante sottolineare che i valori appena descritti sono presi come riferimento: non è necessario introdurre i parametri prendendo come riferimento un giro encoder come si andrà a descrivere di seguito.
Quando l'utilizzatore non conosce preventivamente i parametri di misura, potrà comunque effettuare la corretta calibrazione seguendo questi passi:
-
tramite il “device monitor” di QView visualizzare sul pc il valore del parametro posit
-
impostare measure e pulse entrambi al valore 1
-
movimentare l'asse manualmente facendogli compiere uno spostamento di una posizione facilmente misurabile
-
leggere il valore di posit
-
a questo punto inserire con la unità di misura desiderata il valore misurato nel parametro measure ed il valore del parametro posit nel parametro pulse.
La risoluzione dell'encoder è ora correttamente impostata.
Sviluppo di un applicativo
Nella sezione precedente è stato spiegato quali sono i primi passi da seguire. In questa sezione è inserito un codice di esempio, dettagliatamente commentato, da cui l'utilizzatore può prendere spunto per sviluppare un applicativo.
Il modo in cui il device va dichiarato è spiegato precedentemente, e perciò in questa sezione è omessa la unit di configurazione. Vedi qui
;************************************************************************************* ; Unit Qcl ;************************************************************************************* ;------------------------------------------------------------------------------------- ; Operazioni di parametrizzazione del device ; ----------------------------- variabili utilizzate -------------------------------- ; slSet1: Quota di comparazione per uscita 2.OUT01 ; slSet2: Quota di comparazione per uscita 2.OUT02 ;------------------------------------------------------------------------------------- Asse:measure = 1000 Asse:pulse = 1000 ;come calcolare measure e pulse è spiegato nel paragrafo apposito*. Asse:capture = 1 ;la posizione istantanea dell'asse viene catturata sul primo fronte di ;discesa dopo l'attivazione di st_intenbl IF slSet1 EQ 0 slSet1 = 500 ENDIF IF slSet2 EQ 0 slSet2 = 100 ENDIF ;------------------------------------------------------------------------------------- ; Funzione di homing abilitata ad ogni passaggio sul finecorsa ; ---------------------------- variabili utilizzate --------------------------------- ; slPrsPos : posizione di home impostata ;-------------------------------------------------------------------------------------- MAIN: IF ifAbilZ ;Attesa dell'ingresso di abilitazione impulso di zero trasduttore INTENBL Asse ;Abilita la cattura dell'impulso di zero trasduttore ELSE INTDSBL Asse ;Disabilita la cattura dell'impulso di zero trasduttore ENDIF IF Asse:st_capture ;Se è stata catturata la posizione istantanea IF ifAxeFermo ;Se l'asse è fermo Asse:delta = -(Asse:delta-slPrsPos) ;Calcolo quota da sommare al conteggio DELCNT Asse ;Imposto il nuovo valore del conteggio RSCAPTURE Asse ;Resetto st_capture dell'Asse ENDIF ENDIF ;------------------------------------------------------------------------------------- ; Comparazioni sul conteggio solo se ifAbilComp attivo, altrimenti le uscite ; sono disattive ;------------------------------------------------------------------------------------- IF ifAbilComp IF NOT gfApp01 Asse:mode1 = 5 ;Attiva out1 se posit>setpoint1 Asse:selout1 = 0 ;e disattiva out1 se posit<setpoint1 Asse:setpoint1 = slSet1 :impostazione del setpoint comparatore 1 Asse:timer1 = 0 ;nessun ritardo nella commutazione dell'uscita Asse:mode2 = 6 ;Disattiva out2 se posit>setpoint2 Asse:selout2 = 1 ;e attiva out2 se posit<setpoint2 comparatore 2 Asse:setpoint2 = slSet2 ; impostazione del setpoint Asse:timer2 = 0 ;nessun ritardo nella commutazione dell'uscita gfApp01 = 1 gfApp02 = 0 ENDIF ELSE IF NOT gfApp02 Asse:mode1 = 0 RESOUT out201 ;Disattiva out1 Asse:selout1 = 0 Asse:mode2 = 0 RESOUT out202 ;Disattiva out2 Asse:selout2 = 1 gfApp01 = 0 gfApp02 = 1 ENDIF ENDIF ;------------------------------------------------------------------------------------- ; Operazioni finali ;------------------------------------------------------------------------------------- WAIT 1 JUMP MAIN END
*come calcolare measure e pulse è spiegato nel paragrafo apposito