Vai al contenuto
PLC Forum


Mikrobasic RS485


Messaggi consigliati

Inserito:

Salve a tutti, vorrei chiedere un aiuto a chi è più pratico di me sul protocollo 485 che utilizza Mikrobasic.

Utilizzando la seguente espressione all'interno del programma:

Rs485master_Send(dat,3,$29)

ottengo in uscita la seguente sequenza di byte:

0x96 0x29 0x83 0xDA 0xDB 0xDC 0x9B 0xA9

da quello che ci ho capito io:

0x96 = START byte

0x29 = ADDRESS byte

0x83 = LENGHT byte [0x3 (3 dati) + 0x80 (master)]

0xDA = dat[0] byte

0xDB = dat[1] byte

0xDC = dat[2] byte

0x9B = questo è il mio scoglio, ovvero non mi è chiaro l'algoritmo che usa per formulare il CRC.

0xA9 = STOP byte

Qualcuno saprebbe darmi qualche delucidazione a riguardo?


Inserita:

Buongiorno,

Dovresti entrare nella routine e vedere cosa fa... questo è il contro di utilizzare routine già fatte da terze parti..

Inserita:

Purtroppo ho difficoltà ad operare con l'assembler (altrimenti mica avrei speso 150 euro per Mikrobasic).

Attualmente ho problemi anche a configurare in maniera ottimale la seriale in Qbasic, in quanto risulta difficile gestire il segnale RTS (che a me serve solo in trasmissione).

Sto tentando di capirci qualcosa, anche se è un vero e proprio caos...

Inserita:

Purtroppo come dice bene Resnic devi trovare le info sulla routine

Non uso Mikrobasic quindi non sono in grado di aiutarti.

Mi sembra strano che non ci sia un documento un foglioqualcosa dove dicono qual'è la formula per il calcolo del CRC.

Se hai il sorgente della procedura e lo puoi inserire forse riusciamo a darti un a mano

Da ultimo ti dirò che inzialmente puoi anche fregartene del CRC prendi per buono quello che ricevi sai dove sono i dati all'interno del buffer. il controllo CRC sul messaggio ricevuto potrai anche aggiungerlo successivamente

Inserita:

RS485 non è un protocollo, ma uno standard elettrico. Se non ci sono indicazioni suol tipo di protocollo, standard o proprietario, non ti si può dare aiuti.

Inserita:

Ciao

Sembra che la funzione che hai a disposizione "incapsuli" i tuoi dati all'interno di un datagramma relativo ad un particolare protocollo.

Se la funzione che stai utilizzando per spedire i tuoi dati fa parte di una libreria del tuo basic dovresti obbligatoriamente avere una dettagliata descrizione del protocollo implementato.

Come giustamente citato da Livio RS485 e' uno standard elettrico per cui il protocollo e' un elemento a parte che tu devi conoscere a priori.

Ciao

Gianluca

Inserita: (modificato)

Scusatemi se mi sono spiegato male, ma come protocollo non intendevo lo standard elettrico RS485 (come qualcuno ha giustamente fatto notare), ma l'RS485 di Mikrobasic (che genera questo compilatore).

A tal proposito ho effettuato una semplice prova, scrivendo queste poche righe di Mikrobasic che trovate qui

Una volta compilato viene generato il file in assembler che trovate qui

Inserito nel microprocessore, la stringa risultate è:

0x96 0x13 0x83 0x12 0x43 0x21 0x27 0xA9

dove:

0x96 è il byte di START

0x13 è il byte di ADDRESS

0x83 è il byte LENGHT

0x12 è il byte DAT[0]

0x43 è il byte DAT[1]

0x21 è il byte DAT[2]

0x27 è il byte di CRC

0xA9 è il byte di STOP

Qualcuno esperto di assembler riesce a leggere il file e a spiegarci come si genera sto cavolo di CRC?

Modificato: da wxy79

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...