Vai al contenuto
PLC Forum


Mikrobasic RS485


wxy79

Messaggi consigliati

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?

Link al commento
Condividi su altri siti


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...

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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
Link al commento
Condividi su altri siti

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...