Forum Italiano sui Prodotti NI

annulla
Visualizzazione dei risultati per 
Cerca invece 
Intendevi dire: 

accensione doppia

Risolto!
Vai alla soluzione

Buongiorno,

nel Vi che allego, se la T on viene abbassata al di sotto di un valore costante (95 per 1, 75 per 2), il corrispondente fan (1 o 2) si accende. Si spegne solo quando la T off si alza al di sopra dello stesso valore prefissato.

Per qualche motivo inspiegabile, i led si accendono e spengono entrambi, a prescindere da quale T si alza o si abbassa.

Il sub Vi hystSR implementa un circuito set/reset con isteresi e sembra funzionare correttamente.

Suggerimenti?

Grazie,

Davide

0 Kudos
Messaggio 1 di 5
6.061Visualizzazioni

Ciao Davide,

Penso che il problema risieda nella rientranza (disabilitata) del VI di isteresi. In poche parole, stai eseguendo in parallelo un VI che ha una sola copia in memoria e che dovrebbe invece avere dei cloni (da qui la proprietà di rientranza):

 

Recursion in LabVIEW

 

Ho inoltre avuto modo di mettere mano al tuo codice. Non conosco la versione di LabVIEW con cui programmi, pertanto ho retrocompilato il progetto in LabVIEW 8.6. In questo modo spero di suggerirti come sfruttare le best practice di programmazione LabVIEW e rendere il tuo codice Leggibile, Manutenibile e Scalabile.

Fammi sapere se hai bisogno di aiuto.

Buona giornata

Matteo
0 Kudos
Messaggio 2 di 5
6.050Visualizzazioni

Ciao Matteo,

e grazie, il tuo VI ha in effetti il comportamento desiderato.

A parte la gestione degli errori però, non riesco a capire quali differenze di logica ci siano tra la tua soluzione e la mia...

Puoi darmi qualche delucidazione?

Grazie mille,

Davide

0 Kudos
Messaggio 3 di 5
6.046Visualizzazioni
Soluzione
Accettato da autore argomento DavideB

Ciao,

L'unica differenza è che il tuo subVI di partenza era NON rientrante. In questo modo la copia in memoria era unica e le due istanze nel Block Diagram che lo richiamavano continuavano a passare i propri input alla stessa copia di codice, falsandone l'esecuzione. Ho reso il VI rientrante andando a selezionare il checkbox Reentrant Execution andando sotto File >> Properties >> dal Menu Category ho selezionato Execution. Così facendo, ogni istanza del subVI richama una copia del codice passandogli ed eseguendo i propri input separatamente.

Matteo
Messaggio 4 di 5
6.044Visualizzazioni

Grazie Matteo,

ottima soluzione

Davide

0 Kudos
Messaggio 5 di 5
6.041Visualizzazioni