Escolar Documentos
Profissional Documentos
Cultura Documentos
04
PUNTI DINTERRUZIONE
Utilizzate il tool Breakpoint, mostrato di seguito, per inserire un punto dinterruzione in un VI, in un nodo o su un collegamento dello schema a blocchi ed arrestare lesecuzione in quella posizione.
ma a blocchi e selezionate SubVI Node Setup dal menu rapido. Contrassegnate il riquadro Suspend when called per sospendere lesecuzione solo per quellistanza del subVI. La finestra VI Hierarchy, che visualizzate selezionando ViewVI Hierarchy, indica se il VI in pausa o sospeso. Una freccia indica un VI regolarmente in esecuzione o in esecuzione passo passo.
Quando impostate un punto dinterruzione su un collegamento, lesecuzione si arresta dopo che il dato passato attraverso il collegamento. Inserite un punto dinterruzione sullo schema a blocchi per arrestare lesecuzione dopo che tutti i nodi nello schema a blocchi sono stati eseguiti. Quando un VI si ferma su un punto dinterruzione, LabVIEW porta lo schema a blocchi in primo piano ed utilizza un simbolo per evidenziare il nodo o il collegamento che contiene il punto dinterruzione. Quando spostate il cursore su un punto dinterruzione esistente, larea nera del cursore Breakpoint appare bianca. Quando raggiungete un punto dinterruzione durante lesecuzione, il VI si ferma e il pulsante Pause appare rosso. Potete svolgere le seguenti azioni: Eseguire passo passo utilizzando i pulsanti single-stepping. Sondare i collegamenti per verificare i valori intermedi. Modificare i valori dei controlli del pannello frontale. Cliccare sul pulsante Pause per proseguire con lesecuzione fino al punto dinterruzione successivo o finch il VI non ha finito lesecuzione.
Un simbolo di pausa verde o vuoto in bianco e nero, indica un VI che si mette in pausa quando richiamato. Un simbolo di pausa rosso, o uno solido in bianco e nero, indica un VI in pausa. Un punto esclamativo indica che il subVI sospeso.
SOSPENSIONE DELLESECUZIONE
Sospendete lesecuzione di un subVI per modificare i valori dei controlli e degli indicatori, per controllare il numero di volte che il subVI viene eseguito prima di tornare al programma chiamante, o per tornare indietro allinizio dellesecuzione del subVI. Potete avviare tutte le chiamate ad un subVI con lesecuzione sospesa o potete sospendere una specifica chiamata ad un subVI. Per sospendere tutte le chiamate ad un subVI, aprite il subVI e selezionate OperateSuspend when Called. Il subVI viene sospeso automaticamente quando un altro VI lo chiama. Se selezionate questa voce di menu quando eseguite passo passo, il subVI non viene sospeso immediatamente. Il subVI viene sospeso quando viene chiamato. Per sospendere una specifica chiamata al subVI, cliccate con il tasto destro del mouse sul nodo del subVI nello sche-
21
SCUOLA DI LABVIEW
04
lesecuzione di una radice quadrata di un numero negativo. Inf (infinito) rappresenta un valore in virgola mobile prodotto da operazioni tipo la divisione di un numero per zero. LabVIEW non verifica condizioni di overflow o di underflow su valori interi. Gli overflow e gli underflow di numeri in virgola mobile sono trattati secondo lIEEE 754, Standard for Binary Floating-Point Arithmetic. Le operazioni in virgola mobile propagano NaN e Inf in modo affidabile. Quando convertite esplicitamente o implicitamente NaN o Inf in interi o in booleani, i valore diventano privi di significato. Per esempio, la divisione di 1 per 0 produce Inf. Convertendo Inf in un intero a 16 bit si ottiene il valore 32767, che appare come un valore normale. Prima di convertire dati in interi, utilizzate lo strumento Probe per verificare la validit di valori in virgola mobile intermedi. Verificate NaN collegando la funzione Not A Number/Path/Refnum? sotto Comparison al valore che sospettate non sia valido. Non basatevi su valori particolari come NaN, Inf o array vuoti per determinare se un VI produce dati indefiniti. Invece, confermate che il VI produce dati definiti facendo s che un VI riporti un errore se incontra una situazione che probabile che produca dati indefiniti. Per esempio, se create un VI che utilizza un array in ingresso per indicizzare un For Loop, determinate cosa volete che faccia il VI quando larray in ingresso vuoto. Se producete un codice di errore in uscita, sostituite i dati definiti per il valore che crea il ciclo o utilizzate una struttura Case che non esegue il For Loop se larray vuoto.
ne automatica degli errori per un subVI o una funzione in un VI, collegate il parametro error out a quello error in di un altro subVI o funzione o ad un indicatore error out.
22
SCUOLA DI LABVIEW
ricamente lerrore. Un codice di errore nonzero accoppiato con uno status di FALSE segnala un avvertimento piuttosto che un errore. source una stringa che identifica dove avvenuto lerrore. La gestione degli errori in LabVIEW segue il modello a flusso di dati. Proprio come i valori dei dati fluiscono attraverso un VI, cos fanno le informazioni sugli errori. Collegate le informazioni sugli errori dallinizio del VI fino alla fine. Includete un VI di gestione degli errori alla fine del VI per determinare se il VI stato eseguito senza errori. Utilizzate i cluster error in ed error out in ogni VI che utilizzate o realizzate per passare informazioni sugli errori attraverso il VI. Quando il VI in esecuzione, LabVIEW verifica se ci sono gli errori in ogni nodo di esecuzione. Se LabVIEW non trova errori, il nodo viene eseguito normalmente. Se LabVIEW rileva un errore, il nodo passa lerrore al nodo successivo senza eseguire quella parte di codice. Il nodo successivo fa lo stesso e cos via. Alla fine del flusso di esecuzione, LabVIEW riporta lerrore.
le selettore di una struttura Case, letichetta del selettore di condizione visualizza due casi - Error e No Error - e la cornice della struttura Case cambia colore - rosso per Error e verde per No Error. In caso di errore, la struttura Case esegue la parte Error dello schema a blocchi. Quando un cluster degli errori collegato al terminale di selezione, la struttura Case riconosce solo lo status booleano del cluster.
Note sullautore
Figura 1. Condizione No Error
Laureato in ingegneria nucleare al Politecnico di Milano, Matteo Foini lavora in qualit di Technical Marketing Engineer presso National Instruments Italy
23