Goals
- improve the stability of the acquisition system of the stored current;
- move the code to a virtual machine;
- get rid of the LEXTEL couple by employing digital voltmeres readable over Ethernet.
Overall strategy
- ---
Repository
Type | Link / Path | Note |
---|---|---|
git | — | — |
Hardware description
Type | Description |
---|---|
Processor | Standard DANTE virtual machine vldantedev030 |
Hardware | Agilent digital voltmeter 34411A 800902096C4E: 192.168.190.16 DVM42001 DCTEL002 I multimetri rispondono anche in http |
Programming languages
Language | Required Add ons/Plugins/Extensions/Libraries |
---|---|
LabVIEW 12.0.1f5 (32-bit) | DriversInstrument I/O > Instr Drivers > Agilent 34401 (nativi in LabVIEW). Creata directory /u2/dcs/source_linux/3_hell_Drivers/Agilent-34401A/ Configurazione VISALe VISA vanno configurate sulla macchina virtuale sulla quale gira il DEVIL723 (vldantedev030). Configurazione per 34411AVISA resource: TCPIP0::192.168.190.14::INSTR Configurazione per 34465AVISA resource: TCPIP0::192.168.190.16:inst0::INSTR |
# | Title | User Story | Importance | Notes |
---|---|---|---|---|
1 |
GODCmd – warnings and fixes
# | Title | User Story | Importance | Notes |
---|---|---|---|---|
1 |
GDCTSta.vi / DEVIL723.DBSta
This global is initialized with data from the DBSta file.
#DCTEL002 @HCI(S)[(I32),(DBL),DU32,DU32,DBL,DU32:5,DU32:5] DCT,DCTEL002,250,2,0.01,2000:1000:500:200:100,4:4:4:4:4 @HPE(S)[(DBL),HU32,DI32,DU16,DU16,DU16,DU16,DU16,DU16,DU16,DI32,DI32,DI32,DBL,HU32,DI32:4] DVM42001,C0A8BE10,0,0,2,3,1,0,1,0,1,1,0,0.203,E0100000,4096:2048:1024:512 chanName DVM42001 boardBaseAdd C0A8BE10 boardNum n.u. measurementFunction 0=DCV, ACV, HOMS range 125 mV, 1 V, 8 V, 64 V, 300 V, Autorange apertureTime 267 ms, 16.7 ms, 320 ms, 20 ms, 2.5 ms, 100 us, 10 us autozero ON, OFF, Once offsetCompensation OFF, ON triggerSource Immediate, External, Hold, TTL trig line 0, 1, 2, ..., 7 sampleSource Immediate, Timer, Software, Control register triggerCount 1 sampleCount 1 triggerDelay 0 samplePeriod 0.203 acquisitionStackArea n.u. maxInAcquisitionStackArea 4096:2048:1024:512
GGODDyn.vi / DEVIL704.DBDyn
This global is initialized with data from the DBDyn file.
#DCTEL002 @HCI(S)[(DBL),DI32,DI32,TF,TF,TF,TF,DI32,DBL,DBL,DBL,DBL,DBL,DBL,DBL,DBL:5] DCTEL002,0,0,0,0,0,0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0:0.0:0.0:0.0:0.0 @HPE(S)[(DBL),HU32:6,DBL,DBL,DBL,TF] DVM42001,0:0:0:0:0:0,0.0,0.0,-2.0E-3,1
DEVIL723.pref
There are no class specific sections in the DEVIL .pref file
Connessione ethernet
Il multimetro digitale Agilent si connette in Ethernet e viene acceduto tramite le VISA. Questo comporta il dover recuperare la VISA resource o la VISA alias.
Metodo 1
Gli alias delle VISA di ogni macchina, sono memorizzati in:
/usr/local/vxipnp/linux/NIvisa/visaconf.ini
nella consueta modalità dei LabVIEW config file:
......
[ALIASES]
Alias0="'SER48003','ASRL3::INSTR'"
Alias1="'SER48011','ASRL11::INSTR'"
Alias2="'DVM42001','TCPIP0::192.168.190.14::INSTR'"
NumAliases=3
.....
Si possono quindi recuperare con gli operatori:
Open Config Data.vi
Read Key.vi
Close Config Data.vi
ponendo:
section = [ALIASES]
key = Alias...
e poi cercando l'IP nel vettore di Aliases che si ottiene, per filtrare la componente corrispondente al voltmetro Agilent.
Metodo 2
Si usa un alias definito ed univoco, tipo quello delle seriali (p.es. DVM 42 001) e si forza in un campo del DB
Metodo 3 <--- USO QUESTO
Si ricostruisce la "VISA resource name" (e non l'alias) a partire dall'IP come:
- per 34411 TCPIP0::192.168.190.14::INSTR
- per 34465 TCPIP0::192.168.190.14::inst0::INSTR
Si mantengono i typeDefs DCT esistenti. Questo comporta che si mantiene il controllo HPE1326B (il vecchio multimetro digitale HP per VME).
#DCTEL002
@HCI(S)[(I32),(DBL),DU32,DU32,DBL,DU32:5,DU32:5]DCT,DCTEL002,250,2,0.01,2000:1000:500:200:100,4:4:4:4:4@HPE(S)[(DBL),HU32,DI32,DU16,DU16,DU16,DU16,DU16,DU16,DU16,DI32,DI32,DI32,DBL,HU32,DI32:4]
DVM42001,C0A8BE10,0,0,2,3,1,0,1,0,1,1,0,0.203,E0100000,4096:2048:1024:512
L'alias si mette nel campo chanName e l'IP address nel campo boardBaseAdd del controllo HPE1326B della DCTSta (l'indirizzo 192.168.190.14 si scrive in HEX come C0A8BE0E).
initHWDCT.vi
Standardizzato il nome e connector pane.
Messa porzione di codice da esempio che effettua l'inizializzazione.
Rimane da recuperare i valori dalla globale.
Errori da gestire.
Versione in progress.
Testata nella versione temporanea 26-06-2019: ok.
Controls
Data type | Name | Description |
---|---|---|
Indicators
Data type | Name | Description |
---|---|---|
Details
Examples
---
openDCT.vi
Creata solo per completezza. Dentro è vuota.
Testata: ok.
Controls
Data type | Name | Description |
---|---|---|
Indicators
Data type | Name | Description |
---|---|---|
Details
Examples
---
DCTCtrl.vi
Standardizzato il connector pane.
Riscritta sulla base di quella del vecchio devil Apple.
NOTA: Il frame di calcolo del tau era skippato sul DEVIL Apple e quindi non è stato implementato. In previsione di ripristinare il calcolo del Tau sul devil, sono stati copiati nel folder ctrl i due VI attualmente utilizzati a primo livello per il calcolo del Tau (averageCurrent (rinominato come calcTau) e linearTau).
Diversamente dalla versione Apple che faceva tutti e due i DVM ad ogni giro (elemID non usato), questa segue l'elemID e quindi fa un run per e- e poi uno per e+.
ATTENZIONE: Ci sono due case che si indicizzano direttamente con l'elemID ed hanno assegnati: il frame 0 agli elettroni e il frame 1 ai positroni. Questo costringe a mettere nei DBFiles gli elementi nel suddetto ordine: prima il DCT elettroni e poi quello positroni.
Operazione di calibrazione spostata nella control: nella vecchi versione la divisione per il valore di calibrazione e la sottrazione dell'offset era fatta nella finestra, partendo dai dati raw memorizzati su memcached.
Adesso, i valori acquisiti dal DVM [V] sono divisi per "calibration", poi gli viene sottratto "offset" e dopo vengono scritti su memcached.
Quindi adesso su memcached ci sono i valori di corrente convertiti in mA con l'offset già sottratto.
Bug: durante la visualizzazione della corrente (con la finestra del DCCT sia su e- che su e+), sporadicamente di vede una rilettura a zero in corrispondenza del puntatore. All'aggiornamento successivo il dato a zero non rimane visualizzato e il plot è regolare.
Ipotesi: nel devil, le scritture della dinamica (che contiene il ptr) e del buffer dati avvengono in due frames diversi. La finestra di livello 1 recupera la dinamica ed il buffer il due azioni successive e completamente asincrone con la scrittura.
C'è quindi la possibilità che al momento di costruire il buffer del display con il running pointer, i due dati non siano consistenti, ovvero appartenenti alla stessa acquisizione.
Soluzione: il devil deve scrivere tutta la dinamica insieme al buffer dati e quindi mettere su memcached un cluster composto dal sottocluster del typedef DCTDyn e dal vettore di DBL del buffer.
La finestra del DCCT, quando deve usare dati della dinamica, deve prenderli dal cluster suddetto e non dalla dinamica scritta convenzionalmente.
Errori da gestire.
Versione in progress.
Testata nella versione temporanea 26-06-2019: ok.
Controls
Data type | Name | Description |
---|---|---|
Indicators
Data type | Name | Description |
---|---|---|
Details
Examples
---
DCTCmd.vi
Standardizzato il connector pane.
Riscritta sulla base di quella del vecchio devil Apple.
Implementato il solo comando OFCA ELEXXNNN <offset>,A|B
che memorizza nella dinamica offset e calibrationType (F=A, T=B).
Il comando non esegue alcuna azione hardware.
I vecchi comandi RESV, PUTT e SCAL non erano usati nella finestra utente e sono rimasti abbandonati.
ATTENZIONE: i comandi RESV, PUTT e SCAL sono stati comunque lasciati nella GClass&Services per far si che il serviceID (che arriva numerico dal DEVIL) rimanga lo stesso e possa selezionare il corrispondente case all'interno della DCTCmd.vi .
Errori da gestire.
Versione in progress.
Testata nella versione temporanea 07-05-2019: ok.
Controls
Data type | Name | Description |
---|---|---|
Indicators
Data type | Name | Description |
---|---|---|
Details
Examples
---
closeDCT.vi
Creata dalla base.
Messa porzione di codice da esempio che effettua la chiusura.
Rimane da recuperare i valori dalla globale.
Errori da gestire.
Versione in progress.
Testata nella versione temporanea 26-06-2019: ok.
Nota: controllare che i sub-folders:.../DCT/console <--- ok: questo c'è anche in source_solaris.../DCT/tau <--- ok: questo c'è anche in source_solaris.../DCT/librarysiano presenti nella classe DCT su Solaris e siano utilizzati dal livello 1.Se si, buttarli dalla classe DTC di livello 3 / Linux / LV12-SP1
Compressi in tar per il momento.
FATTO.