en:appnote:an003

This is an old revision of the document!


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

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.

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.

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

  • Last modified: 2019/08/29 17:18