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: 

Strano Errore funzionamento Porta seriale

Risolto!
Vai alla soluzione

Ciao a tutti,

Mi accade una cosa molto strana. Ho realizzato un SW Labview che comunica con un'apparechiatura via Porta seriale attraverso un'interrogazione continua dell'utenza (pooling). Il software si comporta benissimo se utilizzo un convertitore RS232-USB mentre si interrompe in modo randomatico se utilizzo direttamente la porta seriale del PC. Sapreste dirmi come mai? Utilizzo la versione 4.4.1 dei driver. Sapete se per caso esiste una patch che aggioni i drivers ad una versione più recente?

 

Grazie a tutti.

Ricky
Italian Developer engineer
www.www.selt-sistemi.com
0 Kudos
Messaggio 1 di 6
7.062Visualizzazioni

Buongiorno Riccardo,

 

Puoi darci per favore maggiori dettagli in merito all'errore che hai riscontrato? Ad esempio, se esiste, un codice di errore o il messaggio che eventualmente è stato stampato a video? Sarebbe inoltre utile conoscere quali driver intendi aggiornare e le versioni dei software con cui stai sviluppando.

 

Grazie

 

M.C.

Matteo
0 Kudos
Messaggio 2 di 6
7.052Visualizzazioni

Buongiorno a te Proven,

avete ragione, avrei dovuto darvi qualche informazione in più. Usa la versione LV 8.6.1 e ho installati i driver VISA 4.4.1. Ho trovato dopo indicazione di un tecnico ho scaricato la versione VISA 4.6 (ultima rilasciata) ma ancora non l'ho installata.

 

Lerrore che mi viene restituito è questo:

 

Error -1073807253 occurred at VISA Read in COM_Port_Handler.vi->Serial_CORE_Engine.vi->Main.vi

Possible reason(s):

VISA:  (Hex 0xBFFF006B) A framing error occurred during transfer.

 

Probabilemente, a quanto ho capito io esistono ancora dati sul bus seriale mentre il programma cerca di scrivere un nuovo comando sulla stessa.

Infatti, il mio codice ha questa sequenza logica:

 

  inizializzo seriale

  attendo 500ms

 

loop

  scrivo comando

  attendo 2000ms

  leggo seriale

  attendo 500ms

end loop

 

 rilascio seriale

 esco programma

 

Attualmente ho risolto controllando il codice di errore e eliminandolo con il cancel error. Non è una soluzione fine ma mi permette di far funzionare l'applicazione. Quello che non capisco è come mai si comporta in modo diverso a seconda del tipo di seriale che uso.

 

Ricky
Italian Developer engineer
www.www.selt-sistemi.com
0 Kudos
Messaggio 3 di 6
7.048Visualizzazioni

Ciao Riccardo,

 

Sicuramente le indicazioni sugli errori che hai fornito permettono di arrivare direttamente al nocciolo del problema Smiley Strizza l'occhio

Infatti quello che sta succedendo al momento della segnalazione del messaggio di errore altro non è che un avvertimento che i byte che si stanno effettivamente leggendo non sono come ci si aspetta. Questo dipende dal fatto che ciascun byte ha uno formato specifico (bit di start, stop, parità e di dati). Diverse sono le ragioni che veicolano questo errore, la più ragionevole è che la porta seriale ed il dispositivo siano configurate diversamente. Per ovviare a tale comportamento, apri il Measurement & Automation Explorer (MAX), seleziona la porta seriale sotto Devices and Interfaces e verifica che i parametri di Baud rate, Data bit, Parity e Stop bit rispecchine i valori del tuo device. In alternativa puoi modificare tali parametri programmaticamente.

Se tali configurazioni non ti sono di aiuto per eliminare il framing error, probabilmente la tua linea di comunicazione risulta rumorosa.

 

Sebbene il mascheramento dell'errore che hai operato, talvolta sia una soluzione efficace, non si può dire che sia efficiente, infatti, a fronte di un mismatch di formati di dati, potresti correre il rischio di perdere dell'informazione sul tuo canale di comunicazione.

 

Fammi sapere se hai bisogno di aiuto o se ci sono ulteriori novità.

Saluti

Matteo
0 Kudos
Messaggio 4 di 6
7.046Visualizzazioni

Anch'io immaginavo una cosa simile. Quello che non mi spiego è il comportamento differente che si verifica utilizzando i due sistemi, con convertitore e senza.

Il set-up della porta: velocità di trasmissione, bit di stop e tutto il resto; viene fatto via software quindi è identico per i due sistemi. Normalmente la comunicazione che utilizza un convertitore è di gran lunga meno sicura e più "sporca" di quella fatta direttamente su porta RS232.

Vuoi dire che in questo caso è il contrario e che difficilmente riuscirò ad eliminare il rumore sulla linea?

 

Comunque, grazie per l'aiuto.

Ricky
Italian Developer engineer
www.www.selt-sistemi.com
0 Kudos
Messaggio 5 di 6
7.040Visualizzazioni
Soluzione
Accettato da autore argomento g_Ricky

Appogiandomi al forum LAVA ho avuto la soluzione al mio problema.

Il problema erano i tempi di aggiornamento delle impostazioni della porta stessa. La seriale del PC necessita un tempo minimo di aggiornamento quando si cambiano le impostazioni di bout rate, bit di stop etc.. prima di poter fare una scrittura o lettura, tentando di scrivere o leggere immediatamente dopo l'operazione di set-up mi restituiva l'errore sopra citato. La soluzione al problema è stata quella di inserire un delay time di 100ms dopo il VI di configurazione della porta. La differenza con il convertitore USB sta nel fatto che il convertirore risulta più veloce in queste operazioni e quindi si presenta, dopo i cambiamenti di set-up della porta, immediatamente disponibile.

Per maggiori informazioni:

discussione sul forum LV a dell'argomento

documento di riferimento NI

Ricky
Italian Developer engineer
www.www.selt-sistemi.com
0 Kudos
Messaggio 6 di 6
7.016Visualizzazioni