Forum Italiano sui Prodotti NI

annulla
Visualizzazione dei risultati per 
Cerca invece 
Intendevi dire: 

opc

Salve!

 

Ho un problema. Sto utilizzando labview per creare un programma che deve comunicare con un plc attraverso l'opc della siemens simatic net. Il mio problema non è nella scrittura dei tag, ma nella lettura. Spesso mi capita che se leggo due tag o più contemporaneamente mi capita che alcuni valori letti sono zero. Questo se faccio un semplice open read e close. Per ovviare a questo problema ho utilizzato una sequenza temporale:apro connessione aspetto un secondo, leggo il tag aspetto un secondo, chiudo la connessione aspetto unsecondo. Questo metodo a volte funziona e a volte no. Che devo fare sono disperato. È da tenere presente che l'opc labview si trovano sulla stesa macchina. È opportuno utilizzare l'opzione wait on update?

0 Kudos
Messaggio 1 di 13
5.333Visualizzazioni

Nessun consiglio? Ho labview 2013! 

 

0 Kudos
Messaggio 2 di 13
5.322Visualizzazioni

Ciao jmontybari,

 

cosa usi per comunicare con l'OPC server? DSC o Datasocket? Da server vedi le variabili che si aggiornano correttamente?

0 Kudos
Messaggio 3 di 13
5.312Visualizzazioni

Utilizzo solo dataSocket, il problema è tanto più frequente con l'utilizzo dei datasocket all'interno di Sub VI che richiamo a monte. Ti allego alcuni sub VI che utilizzo

Scarica tutti
0 Kudos
Messaggio 4 di 13
5.302Visualizzazioni

Si le variabili si aggiornano correttamente

0 Kudos
Messaggio 5 di 13
5.300Visualizzazioni

Ciao jmontybari,

 

ci sono parecchi errori nel codice. Non puoi mai sapere se la wait function viene eseguita prima o dopo il codice in ogni sequence, devi in qualche modo sequenziarla (magari con il filo dell'errore e una flat, o con un'altra sequence). Comunque ti consiglio di usare una macchina a stati, come idea generale.

0 Kudos
Messaggio 6 di 13
5.288Visualizzazioni

Quali errori ci sono?

 

Mancano solo le variabili globali. Come mai devo sequenziare il wait?

0 Kudos
Messaggio 7 di 13
5.284Visualizzazioni

Purtoppro non ho esperienza nella macchina a stati in labview. Comunque come mi hai suggerito ora ho letture consistenti!

0 Kudos
Messaggio 8 di 13
5.283Visualizzazioni

Ci sono parecchi errori di stile che ti fanno perdere in efficienza e leggibilità del codice, ma ci vuole un po' di pratica per imparare a programmare bene in LabVIEW. Devi sequenziare il Wait perchè, messo così, non sai mai se esegue prima o dopo il resto del codice. LabVIEW è ottimizzato per esecuzione in parallelo, ma proprio per questo due pezzi di codice posso essere eseguiti nell'ordine "deciso" dalla CPU in quel momento. Per questo, se te ne serve prima uno poi l'altro, devi fare in modo che l'esecuziona rispecchi la tua volontà. Tutto qui.

 

In bocca al lupo!

0 Kudos
Messaggio 9 di 13
5.275Visualizzazioni

Che errori di stile parli?

 

0 Kudos
Messaggio 10 di 13
5.269Visualizzazioni