Go Down

Topic: anomalia converttitore usb-rs485 (Read 964 times) previous topic - next topic

niki77

Buona sera a tutti.
Sono in possesso di 2 convertitori USB-rs485 , entrambi basati su chip ft232r.
Sono pressoché identici, cambia soltanto il contenitore.
Ho scaricato un tool della ftdi fatto apposta per programmarne la eprom interna e configurare varie opzioni.
Con questo tool ho appurato che le due interfacce sono anche configurate in maniera identica, e apoteosi massima , entrambi usano lo stesso driver.
Ora però nasce un problema. Una delle due interfacce mette uno zero byte in testa ed in coda ad ogni messaggio ricevuto,l'altra no!
Non è un problema,perché tanto il sw di gestione lo sviluppo io stesso,pertanto posso aggirare il problema,ma mi sarebbe piaciuto capire il perché.
Grazie a tutti in anticipo.

P.s. ovviamente entrambe le interfacce sono state provate singolarmente sullo stesso bus interrogando sempre lo stesso slave con lo stesso sw.
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

lesto

mi sembra più un errore di settaggio, sicuro di averli impostati entrambi come 8n1 ? (8bit dati, no bit parità, 1 bit di stop)

Altrimenti è strano, mi aspetto che la conversione dati sia 1<->1
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

niki77

#2
Jan 07, 2013, 08:53 pm Last Edit: Jan 07, 2013, 10:43 pm by niki77 Reason: 1
È si, oltretutto perché li inizialzzo da sw, ed il software è lo stesso per entrambi,ed anche i driver!
L'unica cosa che mi viene pensato possa essere è del rumore, uno entra direttamente col cavo twistato, l'altro ha il cavo suo per 1,8 metri prima di arrivare al circuito, ma mi pare strano non sia twistato.
È sempre un adattatore originale ftdi, non è roba cinese.

Es. Convertitore A riceve (in hex)
02060000000000003b7a

Convertitore B riceve (in hex)
0002060000000000003b7a00
Sembra quasi che quando passa da tx a rx metta uno zero byte
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

lesto

no, nella seriale ogni byte è un messaggio a se.
forse aggiunge 00 quando apri e e chiudi la seriale?
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

niki77


no, nella seriale ogni byte è un messaggio a se.


???

P.S. non ho mai specificato che la comunicazione avviene per BYTE RAW , non a caratteri, quindi quanto parlo di ZERO BYTE intendo un byte che ha valore zero(0x00) , non due 00 formato char ( 0x30 0x30)


No non c'entra con l'apertura e chiusura connessione seriale, viene aperta all'inizio e chiusa alla fine, ma non del messaggio, della sessione.
Lo fà indistintamente con linux e windows .... misteeeeeerooooooo
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

lesto

la seriale invia tutto come raw, cambia solo come interpreti i dati lato tx/rx.

02060000000000003b7a equivale a
02 06 00 00 00 00 00 00 3b 7a

ovvero 10 byte. se quei 00 fossero aggiunti ad ogni "messaggio" (concetto che in rs232 non esiste, dato che un messaggio è composto da un byte) avresti tutti i byte tra 0x00

se usi un serial monitor tipo hyperterminal vedi comunque gli 0x00? puoi postare il tuo codice?
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

niki77

Lo sò come funziona una seriale ...  :smiley-eek:

Sul  serial monitor  non vedrò mai quei valori, ma caratteri strani corrispondenti al byte inviato, e non si vedono nemmeno tutti,ma questo è nromalissimo.
Ho un serial monitor specifico che mi visualizza i byte ricevuti in formato esadecimale.

Quote


ovvero 10 byte. se quei 00 fossero aggiunti ad ogni "messaggio" (concetto che in rs232 non esiste, dato che un messaggio è composto da un byte) avresti tutti i byte tra 0x00



adesso ho capito cosa intendevi , no, non può essere , infatti io ti avevo detto che sembrava più che lo aggiungesse alla comutazione tra tx e rx , ovvero quando al transceiver 485 si porta alto DE e RE (stato trasmissione) e viceversa . [in questo transceiver RE è su una porta invertente]
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

lesto

ah ok, ora capisco cosa intendevi con commutazione txrx

Quote
Ho un serial monitor specifico che mi visualizza i byte ricevuti in formato esadecimale.


e immagino che ti visaulizzi quei 0x00, giusto? se sì è un bel problema, mi viene da dire che sia un bug/feature del chip
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

astrobeed

Certo che questa cosa è proprio strana, non mi risulta che gli FTDI possono aggiungere in nessun modo dei byte ai pacchetti.
Sei sicuro che tutti e due gli adattatori montano lo stesso chip FTDI, non è che per caso uno dei due usa un Vinculum ?

niki77

Ho scaricato il tool della ftdi per leggere la eeprom interna al chip (si usa anche per configurare  l'echo locale se serve).
Non solo è lo stesso identico chip, ma è configurato anche alla stessa maniera.
Ora provo a rivedere.

Ma è solo per curiosità perchè come ho detto, essendo il sw di mia fattura, non ho problemi a trimmare gli zero byte in testa e coda al buffer.

Un adattatore in oggeto è questo :

LINK

l'altro è questo

LINK
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

astrobeed

Scommetto che quello che ti da il problema è il secondo (PVI-USB-RS232_485).

niki77

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

astrobeed

Allora mettilo dentro una morsa e stringi più che puoi  :smiley-mr-green:

niki77

Perché, porello, funziona tanto bene  :smiley-mr-green:

È possibile astro che la commutazione da DE a RE non troppo pulita possa generare sti zero byte in ricezione o è fantascienza?
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Go Up