Vai al contenuto
PLC Forum


Linux - Libmodbus - Custom Hardware con RS 485


marco.ben

Messaggi consigliati

Buongiorno a tutti,

abbiamo fatto progettare e realizzare un prototipo per un sistema embedded composto da un SBC (http://www.hce-engineering.it/a51-cortex-a5-536mhz/) e una scheda con un pò di I/O D/A e una porta RS 485.

Il sistema operativo è un Linux Debian 8 per ARM.

Abbiamo concordato che la porta RS 485 sarebbe stata utilizzata tramite http://libmodbus.org/

Sul primo prototipo che abbiamo provato però per poter far funzionare la comunicazione sulla 485 abbiamo dovuto usare la seguente procedura (ho dovuto modificare e ricompilare libmodbus):

  1. scrivere il carattere '1' in /sys/class/gpio/pioD16/value
  2. attendere un tempo X
  3. trasmettere sulla porta seriale
  4. scrivere il carattere '0' in /sys/class/gpio/pioD16/value
  5. attendere un tempo X
  6. attendere risposta e leggere dalla porta seriale

Per abilitare la porta gpio nel sistema:

  • echo 112 > /sys/class/gpio/export
  • echo out > /sys/class/gpio/pioD16/direction

Questa soluzione non permette di avere un comportamento deterministico del sistema.
Variando il tempo di attesa X si ottengono diverse percentuali di errori sulla risposta.
Abbiamo individuato in 1 ms per X l'impostazione che dà la minor percentuale di errori, che è comunque dell'1%

Il fornitore ci dice che secondo loro è tutto corretto perché tramite minicom - abilitando il controllo di flusso - funziona nel modo corretto.

La mia domanda per gli esperti del forum è: il modo descritto sopra è l'unico possibile per usare libmodbus con la RS 485? Come posso avere una comunicazione esente da errori in questa modalità? Il fornitore potrebbe sistemare questa situazione intervenendo sul firmware o sulla compilazione del kernel linux che ci consegna?

Link al commento
Condividi su altri siti


Teoricamente gli errori di comunicazione possono sempre esserci, proprio per questo motivo si fanno controlli tipo checksum sul dato trasmesso.

Quello che, dal mio punto di vista, è assurdo è che si ammetta una percentuale fissa di errori di comunicazione.

L'errore deve essere un'eccezione non la regola.

Ci mancherebbe altro.

Un'apparato come quello che hai descritto non è degno nemmeno di amatore di media capacità, figuriamoci se si tratta di un'applicazione professionale.

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