Forum Italiano sui Prodotti NI

annulla
Visualizzazione dei risultati per 
Cerca invece 
Intendevi dire: 

Aprire una COM

Salve a tutti,
sono nuovo sul forum e ho pochissima esperienza con labview.
 
Ho creato un VI che controlla dei motori elettrici dotati di encoder. I motori sono collegati ad un controller il quale è collegato alla COM del mio PC.
In genere prima di avviare il VI che controlla i motorini, e che legge costantemente le informazioni inviate dagli encoder dei motori (la posizione, la velocità, etc...), avvio un altro VI che mi permette di aprire la COM.
 
Ciò che vorrei fare è inserire l'apertura della COM all'interno del VI che comanda i motori elettrici. Il mio problema (che dovrebbe essere banale ma non ho esperienza a riguardo) è che all'avvio del VI la prima cosa che dovrebbe avvenire è l'apertura della COM, e poi tutto il resto, se no mi dà errore (è naturale!!). La mia domanda è questa:
 
come faccio a specificare che PRIMA di tutto deve avviare le istruzioni dell'apertura della COM e POI tutto il resto?
 
In prima battuta avevo inserito una "flat sequence" dove, nel primo "frame", avevo inserito l'apertura della COM e poi tutto il resto, però non funziona, probabilmente perchè va in loop e quindi cerca di aprire la COM più volte, dandomi errore
 
spero di essermi spiegato
 
Grazie a tutti
0 Kudos
Messaggio 1 di 3
3.932Visualizzazioni

Quello che guida l'esecuzione dei vari pezzi di codeice in LV è il flusso di dati lungo i fili (dataflow) quindi collegare il VISA Resource name out del VISA Configure Serial Port.vi ai successivi vi per scrivere e/o leggere dalla porta garantisce che la porta venga effettivamente aperta prima di utilizzarla.

Se però tu devi garantire che anche altre parti del codice (che non hanno rapporti col flusso dei dati della seriale) vengano eseguite DOPO l'apertura della porta potresti racchiudere quelle parti di codice in un case e collegare l'error out della VISA Configure Serial Port.vi direttamente al selettore del case: nel frame verde del case (caso No error) puoi inserire il codice da eseguire dopo l'apertura della porta



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 Kudos
Messaggio 2 di 3
3.926Visualizzazioni
Ciao, in LabView l'ordine di esecuzione delle parti segue il cosiddetto "Dataflow": ogni blocco (o nodo) viene eseguito quando tutti gli input sono disponibili. Per assicurare un ordine si possono usare le sequenze o i fili di errore: collegando l'uscita errore di un blocco all'ingresso errore del blocco successivo si condiziona l'ordine di esecuzione. Nel tuo caso puoi usare un struttura fatta così: blocco di apertura porta seriale, ciclo while all'interno del quale esegui le operazioni di comunicazione con lo strumento, chiusura della porta seriale fuori dal ciclo dopo le pressione dello stop.
0 Kudos
Messaggio 3 di 3
3.898Visualizzazioni