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:dac [2017/01/19 14:54] – [30. Dichiarazione del device] qem103 | software:devices:dac [2020/07/13 15:06] (versione attuale) – qem103 | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
+ | ====== DEVICE DAC ====== | ||
+ | |||
+ | |||
+ | ====== - Introduzione ====== | ||
+ | |||
+ | Il device interno DAC permette di gestire unuscita 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. | ||
+ | |||
+ | |||
+ | ===== - Dichiarazione del device ===== | ||
+ | |||
+ | Nella unit di configurazione, | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Devices definitions | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | <device name> | ||
+ | </ | ||
+ | |||
+ | dove: | ||
+ | ^Nome campo^Descrizione^Esempio^Note^ | ||
+ | |<device name> | ||
+ | |DAC|Parola chiave che identifica il device uscita analogica.| | | | ||
+ | |< | ||
+ | |||
+ | ^: | ||
+ | |||
+ | ** Esempio ** | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Devices definitions | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | AnOut DAC 2.AN01 | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== - Descrizione del funzionamento ===== | ||
+ | |||
+ | 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' | ||
+ | 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. | ||
+ | |||
+ | |||
+ | ==== - Elenco Parametri ==== | ||
+ | |||
+ | === - in === | ||
+ | {{template> | ||
+ | |shortdescr=Input DAC| | ||
+ | |dim=Word| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um=-| | ||
+ | |id=-| | ||
+ | |range=-32768÷32767| | ||
+ | |wrcond=-| | ||
+ | |longdescr=Parametro che permette di scegliere il valore di tensione in uscita dal DAC. Esso deve essere compreso nell' | ||
+ | * Per valori positivi: in = (VOUT * 32767) / 10, | ||
+ | * per valori negativi: in = (VOUT * 32768) / 10.}} | ||
+ | ----------------------------------------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | === - offset === | ||
+ | {{template> | ||
+ | |shortdescr=Output offset| | ||
+ | |dim=Word| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um=-| | ||
+ | |id=-| | ||
+ | |range=-32768÷32767| | ||
+ | |wrcond=-| | ||
+ | |longdescr=Offset dell' | ||
+ | ----------------------------------------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | === - uplim === | ||
+ | {{template> | ||
+ | |shortdescr=Valore massimo di tensione in uscita| | ||
+ | |dim=Word| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um=-| | ||
+ | |id=-| | ||
+ | |range=-32768÷32767| | ||
+ | |wrcond=-| | ||
+ | |longdescr=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.}} | ||
+ | ----------------------------------------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | === - lowlim === | ||
+ | {{template> | ||
+ | |shortdescr=Valore minimo di tensione in uscita| | ||
+ | |dim=Word| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um=-| | ||
+ | |id=-| | ||
+ | |range=-32768÷32767| | ||
+ | |wrcond=-| | ||
+ | |longdescr=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.}} | ||
+ | ----------------------------------------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | === - out === | ||
+ | {{template> | ||
+ | |shortdescr=Output DAC| | ||
+ | |dim=Word| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read| | ||
+ | |um=-| | ||
+ | |id=-| | ||
+ | |range=// | ||
+ | |wrcond=-| | ||
+ | |longdescr=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.}} | ||
+ | |||
+ | |||
+ | ==== - Elenco Stati ==== | ||
+ | |||
+ | === - st_lowlim === | ||
+ | {{template> | ||
+ | |shortdescr=Stato di superamento del limite inferiore per la tensione d' | ||
+ | |default= Ritentivo| | ||
+ | |id= - | | ||
+ | |longdescr=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' | ||
+ | * 0: valore in uscita entro il limite inferiore, | ||
+ | * 1: superamento del limite inferiore per la tensione d' | ||
+ | }} | ||
+ | ----------------------------------------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | === - st_uplim === | ||
+ | {{template> | ||
+ | |shortdescr=Stato di superamento del limite superiore per la tensione d' | ||
+ | |default= Ritentivo| | ||
+ | |id= - | | ||
+ | |longdescr=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' | ||
+ | * 0: valore in uscita entro il limite superiore, | ||
+ | * 1: superamento del limite superiore per la tensione d' | ||
+ | }} | ||
+ | ----------------------------------------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | === - st_outrev === | ||
+ | {{template> | ||
+ | |shortdescr=Stato di inversione del segno della tensione d' | ||
+ | |default= Ritentivo| | ||
+ | |id= - | | ||
+ | |longdescr=Stato che segnala che, in seguito al comando OUTREV, il valore della tensione d' | ||
+ | }} | ||
+ | |||
+ | |||
+ | ==== - Elenco Comandi ==== | ||
+ | |||
+ | I comandi a disposizione per gestire il device sono qui elencati: il device esegue i comandi nell' | ||
+ | |||
+ | |||
+ | === - OUTREV === | ||
+ | {{template> | ||
+ | |cond= - | | ||
+ | |shortdescr=Inversione del segno della tensione d' | ||
+ | |id= - | | ||
+ | |longdescr=La tensione d' | ||
+ | ----------------------------------------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | === - OUTDIR === | ||
+ | {{template> | ||
+ | |cond= - | | ||
+ | |shortdescr=Ripristino del segno della tensione d' | ||
+ | |id= - | | ||
+ | |longdescr=Il segno della tensione d' | ||
+ | ----------------------------------------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | |||
+ | ===== - Limitazioni ===== | ||
+ | |||
+ | Nessuna limitazione. | ||
+ | |||
+ | |||
+ | ===== - Esempio applicativo ===== | ||
+ | |||
+ | In questa sezione si vuole fornire una porzione di codice che faccia da esempio all' | ||
+ | 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. | ||
+ | |||
+ | ==== - Unit di configurazione ==== | ||
+ | |||
+ | <code QCL> | ||
+ | [...] | ||
+ | BUS | ||
+ | 1 | ||
+ | 2 | ||
+ | 3 | ||
+ | 4 . | ||
+ | | ||
+ | INPUT | ||
+ | ifChangeOut F 3.INP01 ;Output voltage change command | ||
+ | | ||
+ | INTDEVICE | ||
+ | AnalogOut DAC 3.AN01 | ||
+ | </ | ||
+ | |||
+ | ==== - Unit QCL ==== | ||
+ | |||
+ | <code QCL> | ||
+ | SYSTEM | ||
+ | slOutAna | ||
+ | | ||
+ | GLOBAL | ||
+ | gfChange | ||
+ | | ||
+ | BEGIN | ||
+ | ; Initializations | ||
+ | AnalogOut.offset = 0 | ||
+ | AnalogOut.uplim = 32767 ;Max analog output as 10V | ||
+ | AnalogOut.lowlim = -32768 | ||
+ | AnalogOut.OUTDIR | ||
+ | WAIT NOT AnalogOut.st_outrev ;WAIT the right state | ||
+ | slOutAna = 0 ;Set the variable as 0V | ||
+ | MAIN: | ||
+ | IF ifChangeOut | ||
+ | IF NOT gfChange; | ||
+ | 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' | ||
+ | |||