Modbus che risponde male,ma neanche tanto

Salve.. Una scheda A Modbus Master deve comunicare via RS485 con una scheda B(co= m mio codice) Modbus slave.

Fino all'altro ieri non c'era problema ,tutti i comandi di scrittura e r= egistri singoli o multipli(anche 100 alla volta)venivano ricevuti corret= tamente da B,che li interpretava bene,anche se poi che li interpretasse = bene o meno non influiva sulla risposta data ad A che era comunque corre= tta, cioe' ripetizione indietro di indirizzo slave, comando ecc ecc..per fini= re con checksum. La persona di B ne modifica il codice,io faccio lo stesso su A,per testa= re nuove funzioni.. Avviene che un la risposta di B ad un comando 0x10(Scrivi registri multi= pli)non piaccia' piu' ad A. I dati trasmessi in risposta sono quelli desiderati,verificato sia nel b= uffer di Tx dello slave,che con analizzatore di stati logici,il piccolo = Saelae,che decodificando il modbus mi fa vedere comodamente il pacchetto= di risposta,che =E8 come mi aspetto. Questo segue dopo soli 2 ms il pacchetto di Tx da master ,quindi nessun = problema di Timeout,impostato molto piu' alto. Tra una scheda e l'altra sul banco di test ci sono meno di 15 cm di fili=

Il problema ,che fa pensare che il colpevole sia B ,e' che sostituendolo= con simulatore Modbus da PC tutto funziona. Credo quindi che il guaio sia a livello elettrico..timing..eppure sembra= no ok Qualche idea? Grazie

Reply to
blisca
Loading thread data ...

Il 07/09/2021 10:06, blisca ha scritto:

su queste informazioni. L'unico indizio che abbiamo potrebbe essere relativo al fatto che stai scrivendo registri multipli. In questo caso i dati trasmessi sono sicuramente maggiori rispetto alla vecchia versione, potresti controllare il tuo buffer di ricezione, eventualmente

per gestire in tempi adeguati lo svuotamento del buffer.

s
Reply to
Simone

blisca ha scritto:

o
o

i
o

hai verificato che con il vecchio codice tutto funzioni correttamente?

nel codice scritto successivamente. comunque hai provato ad abbassare il Baud rate di comunicazione? le R di terminazioni RS485 sono corrette?

Reply to
emilio

In data settembre 2021 alle ore 10:44:01, Simone ha= scritto:

e

ra

l

olo

tto

un

ili

olo

solo

i

e,

pido

Grazie,

57600 bps Circa la stessa quantita' di dati veniva tramessa anche prima, i dati che mi arrivano li ricevo tutti,tant'=E8 che il checksum mi torna=

il problema riguarda i soli 8 bytes restituiti,sono come il master se li= aspetta, ma qualcosa non va

uso un buffer diverso per trasmissione e per ricezione

riguardo allo svuotamento del buffer,questo =E8 640 bytes,ma credo che i= l master non si accorgerebbe se mi dovessi perdere dei dati,lui li spedi= sce e se gli arriva la risposta corretta e' a posto

Reply to
blisca

In data settembre 2021 alle ore 11:58:35, emilio ha = scritto:

e

ra

l

olo

tto

un

ili

olo

l

E' una situazione strana,che non ho descritto per non complicare E' cambiato il codice del master,non posso toccarlo,glielo mandano OTA v= ia WiFi e il vecchio codice del mio slave non va pi=F9 bene per questa versione

Oggi mi arriva un economicissimo convertitore USB RS485 e faccio sapere = cosa vedo utilizzando il PC come modbus slave

intanto grazie

Reply to
blisca

In data settembre 2021 alle ore 21:32:39, RoV ha scritto:

Sai che potrebbe essere? Provo a chiedere dall'altra parte di verificare. E' una scheda "Prodino" che monta ESP32,con varie librerie credo ben collaudate, ma non so se la direzione dell'RS485 dipenda da un comando da mettere esplicitamente, come dicevo non ho a disposizione il codice

Intanto mi e' arrivata una economica interfaccia RS485-USB ho cercato di riutilizzare qualche simulatore modbus per PC, purtroppo ModbusSlave della Modtools e altri erano versioni di prova e sono scaduti. Ho trovato "Diagslave",senza interfaccia grafica ,tutto da finestra cmd.exe e riga di comando e...ha lo stesso problema...la mia scheda sembra un po' meno colpevole

Reply to
blisca

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.