From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Forum Italiano sui Prodotti NI

annulla
Visualizzazione dei risultati per 
Cerca invece 
Intendevi dire: 

Devo usare dei VI rientranti (comunicazione in tcp/ip verso PLC)?

Risolto!
Vai alla soluzione

Ciao,

cercando in rete sono riuscito a sviluppare dei driver per la comunicazione in TCP fra PC e PLC. Il programma che sto sviluppando deve comunicare con un certo numero di PLC in modo parallelo e indipendente.

Ho creato per ogni PLC dei VI specifici che sono in run in parallelo, all'interno dei quali ci sono i driver di comunicazione di cui parlavo all'inizio. Questi driver li devo fare rientranti, visto che vengono richiamati da più VI in contemporanea?

Cosa succede se dei VI che dovrebbero essere rientranti li lascio invece in esecuzione normale?

 

0 Kudos
Messaggio 1 di 5
6.066Visualizzazioni

Ciao,

questo link spiega nel dettaglio la differenza tra VI rientranti e non:

 

"When the VI is not reentrant there is one data space for the VI. Therefore only one caller at a time can be running the VI and so a caller may have to "wait its turn" to use the VI."

 

Se quindi occorre che lo stesso subVI venga eseguito simultaneamente in più punti del codice (come se si trattasse di due VI diversi), devi settarlo come rientrante.

Spero di esserti stata d'aiuto!

Ciao,

 

Licia

 

 

0 Kudos
Messaggio 2 di 5
6.059Visualizzazioni

Grazie,

quello che non mi è chiaro è se devono essere rientranti anche se sono richiamati da subvi all'interno di un vi generale.

 

Io ho un main.vi, all'interno di questo ci sono subvi1.vi, subvi2.vi, subvi3.vi che girano in parallelo (e sono vi distinti). Dentro subvi1, subvi2, subvi3 è presente lo stesso read.vi. Questo read.vi deve essere rientrante oppure visto che viene richiamato da vi distinti deve rimanere in normal execution?

 

Scusa ma non riesco a capire.

0 Kudos
Messaggio 3 di 5
6.052Visualizzazioni
Soluzione
Accettato da autore argomento sepp974

Ciao,

se i subVI devono girare in parallelo e non vuoi che debbano "attendersi" a vicenda, devi settare il VI chiamato come rientrante, così ciascun subVI può richiamare una sua copia del VI senza quindi attese.

Spero di aver chiarito il tuo dubbio!

Ciao!

 

Licia

0 Kudos
Messaggio 4 di 5
6.045Visualizzazioni
forse ho finalmente capito.. ho fatto delle prove collegando due plc e ho capito che devono essere rientranti tutti i vi richiamati dai subvi, anche quelli annidati all'interno di altri vi..
0 Kudos
Messaggio 5 di 5
6.040Visualizzazioni