GX-TXT-v3 GXTXT_batch_impulsi_v8 - differenze rispetto a GXTXT_batch_v7 ================================================================ Questo file riassume le principali differenze tra la versione 8 del software batch e la precedente versione 7. La v8 deriva dalla stessa procedura di analisi HOLD -> LED utilizzata dalla v7, ma è stata modificata e irrobustita per la successiva campagna sperimentale in cui viene variato il numero di impulsi applicati al circuito. 1. FILE INDICE --------------- v7 File predefinito: prove.txt Campi per ogni prova: p_gain, p_sens, vgen, nome_file_csv Il numero di impulsi non appartiene al file indice: è impostato globalmente nel programma. v8 File predefinito: prove_impulsi.csv Campi per ogni prova: p_gain, p_sens, vgen_vpp, v_rsense_vpp, n_impulsi, nome_file_csv La v8 permette quindi di associare a ogni acquisizione: - ampiezza VGEN; - V_RSENSE misurata; - numero di impulsi effettivamente applicato. 2. NUMERO DI IMPULSI -------------------- v7 Il numero di impulsi è un parametro comune a tutta la campagna: cfg.numeroImpulsi = 100; v8 Il numero di impulsi viene letto dal file indice per ogni singola prova. La durata del burst viene quindi calcolata prova per prova: durataBurst_s = numeroImpulsi / cfg.frequenza_Hz 3. V_RSENSE E I_SENSE ---------------------- La v7 memorizza VGEN ma non contiene una misura diretta di V_RSENSE. La v8 aggiunge: cfg.RSENSE = 51e3; e calcola per ogni prova: I_SENSE = V_RSENSE / RSENSE Nel file master vengono quindi aggiunti i campi: v_rsense_vpp isense_uA Questo permette di utilizzare direttamente la tensione misurata su RSENSE per caratterizzare lo stimolo applicato, invece di dipendere soltanto dal valore impostato su VGEN. 4. CANALI DEL CSV ----------------- Le due versioni sono state utilizzate con acquisizioni differenti. v7: seconda colonna dati -> V_HOLD terza colonna dati -> N_LED_ARANCIO Nel setup originale: CH2 = V_HOLD CH3 = N_LED_ARANCIO v8: seconda colonna dati -> N_LED_ARANCIO terza colonna dati -> V_HOLD Nel setup utilizzato per la v8: CH3 = N_LED_ARANCIO CH4 = V_HOLD Questa differenza è importante quando si riutilizzano vecchi CSV o si adatta lo script a un altro oscilloscopio. 5. CONTROLLO DEL CSV RIGOL -------------------------- La v8 mantiene lo stesso principio di importazione della v7, ma aggiunge controlli prima di procedere con l'analisi. In particolare verifica: - presenza dell'header temporale; - numero minimo di campi nell'header; - validità di Start e Increment; - Increment maggiore di zero; - presenza di campioni; - numero atteso di colonne dati. Il parser rimane comunque specifico per il formato CSV Rigol utilizzato durante le prove e può richiedere adattamenti con oscilloscopi differenti. 6. RICERCA DEL MASSIMO DI HOLD ------------------------------ v7 Il massimo di V_HOLD viene cercato sull'intera acquisizione. v8 Il massimo viene cercato solamente nei campioni con: t >= 0 cioè dopo il riferimento di trigger. Questo evita che un valore precedente al burst venga erroneamente interpretato come massimo della risposta di HOLD. 7. FIT DELLA SCARICA DI HOLD ---------------------------- La v8 tratta il fit della scarica come un risultato opzionale. È stato aggiunto il flag: holdFitValid La prova può quindi essere considerata valida anche quando non esistono punti sufficienti per determinare correttamente tau, R² e capacità apparente. Rispetto alla v7, la v8 aggiunge inoltre controlli sulla validità numerica del fit: - valori finiti; - tempi successivi al massimo di HOLD; - pendenza esponenziale negativa; - tau positiva e finita; - ampiezza del fit finita. Se queste condizioni non sono soddisfatte, i relativi risultati restano NaN e: holdFitValid = false senza trasformare automaticamente la prova in un errore. 8. HOLD PIATTO O MOLTO PICCOLO ------------------------------ La v8 è stata resa più robusta nei casi in cui HOLD presenti una variazione molto piccola o non permetta di costruire un numero sufficiente di livelli per il fit. La mancanza di un fit completo non impedisce il salvataggio degli altri risultati disponibili. 9. LED CHE NON SI ACCENDE ------------------------- La mancata individuazione di una transizione affidabile del LED non viene considerata un errore di elaborazione. Il risultato viene esplicitamente rappresentato mediante: ledTransitionValid = false Questo comportamento è particolarmente importante nella campagna a numero di impulsi variabile, nella quale alcune prove sono intenzionalmente al di sotto della soglia necessaria ad accendere il LED. 10. SALVATAGGIO DEL MASTER PRIMA DEI GRAFICI --------------------------------------------- v7 I grafici vengono generati prima di aggiungere la prova a: risultati_batch.csv Un errore durante la generazione grafica può quindi impedire il completamento della prova all'interno del blocco principale. v8 I risultati numerici vengono salvati nel master PRIMA della generazione dei grafici. La generazione grafica è gestita separatamente. Un eventuale errore nella creazione dei PNG non elimina quindi i risultati numerici già ottenuti e salvati. 11. STATO DELLE PROVE --------------------- La v8 distingue più chiaramente gli errori di analisi dagli errori grafici. Possibili stati: OK Analisi e grafici completati. OK_PLOT_ERROR Risultati numerici salvati correttamente, ma errore durante la generazione dei grafici. ERROR_ANALYSIS Analisi numerica non completata. La v7 utilizza invece una gestione più semplice basata essenzialmente su: OK ERROR 12. FILE risultati_batch.csv ----------------------------- La struttura generale del master rimane simile, ma non è identica. Principali differenze: v7: vgen_V numero_impulsi ... tauHold_s R2Hold Capp_uF v8: vgen_vpp v_rsense_vpp isense_uA numero_impulsi ... holdFitValid tauHold_s R2Hold Capp_uF La maggior parte dei risultati dell'analisi HOLD/LED mantiene lo stesso significato, ma la v8 aggiunge informazioni sullo stimolo e sulla validità del fit. Il file: tabella_hold.csv mantiene invece nelle due versioni la stessa struttura: V_HOLD_V, tempo_s, N_LED_V, I_LED_mA 13. COMPATIBILITÀ CON L'ANALISI GLOBALE --------------------------------------- La versione attuale di: GXTXT_analisi_globale_v1 è stata scritta per il master prodotto da GXTXT_batch_v7. In particolare si aspetta il campo: vgen_V e utilizza la calibrazione VGEN -> I_SENSE adottata nella campagna originale. Il master della v8 non deve quindi essere considerato un sostituto diretto del master della v7 per questo script. La v8 contiene però già il campo: isense_uA ottenuto da V_RSENSE, e costituisce quindi una base più completa per una futura versione dell'analisi globale. 14. IN SINTESI -------------- GXTXT_batch_v7 - versione utilizzata per la campagna HOLD/LED originale; - numero di impulsi comune a tutte le prove; - indice semplice basato su P_GAIN, P_SENS e VGEN; - formato attualmente utilizzato da GXTXT_analisi_globale_v1. GXTXT_batch_impulsi_v8 - evoluzione della v7 per la campagna a numero di impulsi variabile; - V_RSENSE e I_SENSE associate a ogni prova; - numero di impulsi variabile; - gestione più robusta di HOLD, fit e LED non acceso; - controlli aggiuntivi sul CSV; - risultati numerici salvati prima dei grafici; - distinzione tra errori di analisi ed errori grafici; - master arricchito con nuovi campi. TODO / POSSIBILI SVILUPPI ------------------------- - Rendere configurabile l'associazione tra colonne CSV e nodi del circuito. - Separare completamente il parser Rigol dall'algoritmo di analisi. - Unificare in una futura versione il formato indice della v7 e della v8. - Aggiornare l'analisi globale affinché possa usare direttamente isense_uA quando disponibile, mantenendo eventualmente la compatibilità con il vecchio campo vgen_V.