software:devices:dac

DEVICE DAC

1. Introduzione

Il device interno DAC permette di gestire un’uscita analogica in tensione +/- 10 V con risoluzione 16 bit. Le principali caratteristiche del device sono:

  • impostazione in bit del valore di tensione da generare in uscita;
  • applicazione di un valore di offset alla tensione in uscita;
  • applicazione di un limite minimo e massimo alla tensione in uscita;
  • inversione del segno della tensione in uscita.

Nella unit di configurazione, la sezione INTDEVICE deve essere dichiarata in modo tale che siano presenti le risorse hardware necessarie all'utilizzo del device DAC. Deve essere presente almeno un'uscita analogica. Nella sezione INTDEVICE della unit di configurazione deve essere aggiunta la seguente definizione:

;---------------------------------
; Devices definitions
;---------------------------------
INTDEVICE
<device name>  DAC  <IOutA>

dove:

Nome campoDescrizioneEsempioNote
<device name>Nome assegnato al device.AnOut
DACParola chiave che identifica il device uscita analogica.
<IOutA>Indirizzo hardware del componente DAC dell'uscita analogica.3.AN01
:info:Differentemente da altri device, per il device DAC non viene introdotto il tempo di campionamento in quanto si limita a convertire il dato in ingresso e ad aggiornare l'uscita solamente nel momento in cui è introdotto il dato.

Esempio

;---------------------------------
; Devices definitions
;---------------------------------
INTDEVICE
AnOut DAC  2.AN01

Lo schema a blocchi del device è il seguente:

Il device DAC, poiché lavora con una risoluzione di 16 bit, accetta in ingresso valori compresi fra -32768 e 32767: il valore di tensione dell'uscita è proporzionale al valore introdotto dall'utilizzatore. Il device ha comportamento simmetrico rispetto il valore zero di tensione analogica a meno di un eventuale valore di offset introdotto. I valori di tensione analogica minimo e massimo possono essere limitati con i parametri lowlim ed uplim, sempre restando entro il limite ±10 V:

  • 32767 –> +10 V (massimo valore introducibile),
  • -32768 –> -10 V (minimo valore introducibile).

Il valore che si introduce nel device per ottenere una tensione analogica VOUT (in V) viene calcolato tramite una proporzione.

  • Per valori positivi: in = (VOUT * 32767) / 10,
  • per valori negativi: in = (VOUT * 32768) / 10.

1.2.1.1 in

Breve descrizione Input DAC
Dimensione Word
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura -
Range valido -32768÷32767
ID parametro -
Condizioni di scrittura -

Descrizione:

Parametro che permette di scegliere il valore di tensione in uscita dal DAC. Esso deve essere compreso nell'intervallo -32768÷32767. Per ottenere una tensione analogica VOUT (in V) il parametro in viene calcolato tramite una proporzione:

  • Per valori positivi: in = (VOUT * 32767) / 10,
  • per valori negativi: in = (VOUT * 32768) / 10.

1.2.1.2 offset

Breve descrizione Output offset
Dimensione Word
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura -
Range valido -32768÷32767
ID parametro -
Condizioni di scrittura -

Descrizione:

Offset dell'uscita analogica. Questo parametro definisce la correzione dell'uscita analogica, viene introdotto in valori interi compresi tra -32768 e 32767 e perciò si sfrutta la consueta proporzione per avere un valore in Volt.


1.2.1.3 uplim

Breve descrizione Valore massimo di tensione in uscita
Dimensione Word
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura -
Range valido -32768÷32767
ID parametro -
Condizioni di scrittura -

Descrizione:

Questo parametro indica la tensione massima di uscita dal device. Se il valore calcolato dal DAC oltrepassa uplim questo viene forzato al valore del parametro. Il valore introdotto può essere sia positivo che negativo con valori interi compresi tra -32768 e 32767; per ottenere un valore in Volt si sfrutta la consueta proporzione.


1.2.1.4 lowlim

Breve descrizione Valore minimo di tensione in uscita
Dimensione Word
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura -
Range valido -32768÷32767
ID parametro -
Condizioni di scrittura -

Descrizione:

Questo parametro indica la tensione minima di uscita dal device. Se il valore calcolato dal DAC oltrepassa lowlim questo viene forzato al valore del parametro. Il valore introdotto può essere sia positivo che negativo con valori interi compresi tra -32768 e 32767; per ottenere un valore in Volt si sfrutta la consueta proporzione.


1.2.1.5 out

Breve descrizione Output DAC
Dimensione Word
Valore di default Ritentivo
Tipo di accesso Read
Unità di misura -
Range valido lowlim÷uplim
ID parametro -
Condizioni di scrittura -

Descrizione:

Parametro che esprime il valore di tensione di uscita del dispositivo DAC. Il valore visualizzato è la somma algebrica tra i valori impostati nei parametri in e offset. Se il valore dovesse oltrepassare i limiti fissati da uplim e lowlim, out sarà forzato al valore massimo o minimo preimpostato. Anche questo parametro è espresso con valori interi compresi tra -32768 e 32767 che sono convertiti in Volt tramite la consueta proporzione.

1.2.2.1 st_lowlim

Breve descrizione Stato di superamento del limite inferiore per la tensione d'uscita
Valore di default Ritentivo
ID stato -

Descrizione:

Stato che segnala il superamento del limite inferiore di tensione in uscita. Ciò significa che il device ha calcolato un valore di tensione che supera il limite imposto lowlim e quindi l'uscita è stata forzata al valore lowlim:

  • 0: valore in uscita entro il limite inferiore,
  • 1: superamento del limite inferiore per la tensione d'uscita.

1.2.2.2 st_uplim

Breve descrizione Stato di superamento del limite superiore per la tensione d'uscita
Valore di default Ritentivo
ID stato -

Descrizione:

Stato che segnala il superamento del limite superiore di tensione in uscita. Ciò significa che il device ha calcolato un valore di tensione che supera il limite imposto uplim e quindi l'uscita è stata forzata al valore uplim:

  • 0: valore in uscita entro il limite superiore,
  • 1: superamento del limite superiore per la tensione d'uscita.

1.2.2.3 st_outrev

Breve descrizione Stato di inversione del segno della tensione d'uscita
Valore di default Ritentivo
ID stato -

Descrizione:

Stato che segnala che, in seguito al comando OUTREV, il valore della tensione d'uscita è stato cambiato di segno.

I comandi a disposizione per gestire il device sono qui elencati: il device esegue i comandi nell'ordine in cui sono stati ricevuti.

1.2.3.1 OUTREV

Breve descrizione Inversione del segno della tensione d'uscita.
Condizione -
ID comando -

Descrizione:

La tensione d'uscita viene invertita di segno.


1.2.3.2 OUTDIR

Breve descrizione Ripristino del segno della tensione d'uscita.
Condizione -
ID comando -

Descrizione:

Il segno della tensione d'uscita viene ripristinato.


Nessuna limitazione.

In questa sezione si vuole fornire una porzione di codice che faccia da esempio all'utilizzatore per poter muovere i primi passi utilizzando il device che si sta trattando. Come è già stato chiarito è necessario, come primo passo, dichiarare correttamente il device nella unit di configurazione. In seguito sarà possibile creare una nuova unit Qcl in cui scrivere il codice per comandare lo strumento. Si riporta qui di seguito una porzione di codice adeguatamente commentata che esegua alcune semplici operazioni con il device.

[...]
BUS
    1   1K31F   30
    2   .       .
    3   1MG8F   .
    4   .
 
INPUT
  ifChangeOut F 3.INP01 ;Output voltage change command
 
INTDEVICE
  AnalogOut DAC 3.AN01
SYSTEM
  slOutAna    L IN         ;Variable for analog output
 
GLOBAL
  gfChange    F         ;Rise edge flag
 
BEGIN
  ; Initializations
  AnalogOut.offset = 0 
  AnalogOut.uplim = 32767      ;Max analog output as 10V
  AnalogOut.lowlim = -32768    ;Min analog output as -10V
  AnalogOut.OUTDIR             ;Set the right analog output sign
  WAIT NOT AnalogOut.st_outrev ;WAIT the right state
  slOutAna = 0                 ;Set the variable as 0V
MAIN:
  IF ifChangeOut
    IF NOT gfChange;Attende attivazione ingresso
      gfChange= 1 ;Setta il flag di cambio avvenuto
      AnalogOut.in = (slOutAna * AnalogOut.uplim) /100 ;Set the device analog output
    ENDIF
  ELSE
    gfChange = 0 ;Resetta il flag di cambio avvenuto
  ENDIF
 
  WAIT 1
  JUMP MAIN
 
END

Quando l'ingresso ifChangeOut viene attivato, sul fronte di salita, viene aggiornato il valore di tensione in uscita tramite il device DAC dichiarato (che abbiamo chiamato AnalogOut). Il valore in decimi volt della tensione è contenuto nella variabile slOutAna. Un'altra unit presente nel progetto potrebbe accedere alla variabile slOutAna e impostare il valore voluto.

  • Ultima modifica: 2020/07/13 15:06