Vai al contenuto

Problema connessione Modbus RTU

Home Forum Terminali operatore (Weintek) Problema connessione Modbus RTU

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Autore
    Post
  • #66653
    Francesco Lisi
    Partecipante

    Stò cercando di collegare una scheda (homebrew e non fatta dal sottoscritto) che comunica dei valori via modbus RTU su RS485  a un terminale Weintek cMT3103. Il terminale è collegato attraverso la Connessione A – COM 2.

    Ho fatto un semplice progetto in cui ho aggiunto il dispositivo, con le caratteristiche richieste 115200,8bit, no parità e 1 bit di stop e ho messo un semplice oggetto numerico che legge un intero 16bit unsigned all’indirizzo zero della scheda, per qualche motivo ricevo l’errore “Device No Response”, però vedo sui led della scheda che lei riceve e invia.

    Utilizzando il programma ricevuto con la scheda, per visualizzare i valori via USB, la comunicazione avviene (Screenshot).

    Ho provato a collegarmi con la scheda anche con modbus poll e anche con lui comunico

    Secondo voi dove sbaglio? Indirizzo nel modo sbagliato?

    Spero di essere stato abbastanza comprensibile.

    #66695
    Sergio Bertana
    Amministratore del forum

    Posso pensare al classico problema dell’offset sull’indirizzamento Modbus.

    Quando si fanno le prove con Mobus conviene sempre utilizzare indirizzi superiori allo 0, poi al limite ti accorgi che tu chiedi l’indirizzo 1 in realtà vai a leggere l’indirizzo 0.

    Nella specifica originale (E così fà anche il terminale Weintek) quando definisci l’indirizzo del registro in realtà viene richiesto l’indirizzo definito -1. Quindi se tu hai scelto di acquisire l’indirizzo 0 in realtà viene richiesto l’indirizzo -1 ed il tuo dispositivo risponde con un codice di eccezione. Se vedi nelle possibilità di scelta del protocollo Modbus c’è anche l’opzione zero base addressing, che elimina l’offset.

    Per le variabili a 16 bits non hai problemi perchè Modbus utilizza il fomato Big-endian, ma nelle variabili a 32 bits come le FLOAT32 potresti avere un problema nell’endianness, vedi le impostazioni nel protocollo (Screenshot).

    Per le variabili float inoltre il pannello utilizza il formato IEE754, che è quello più utilizzato ma se la tua scheda utilizza un’altro formato potresti avere problemi di visualizzazione dei valori.

    #66705
    Francesco Lisi
    Partecipante

    Ok ho modificato il programma e ora leggo il valore 3x-2, ancora errore Device No Response. Il codice d’errore del dispositivo 2 (LW-9401)  è il 2 “Communication error due to unexpected reason).

    Ho provato anche a collegarmi come COM3, ma il risultato è lo stesso.

    Gli indirizzi non mi sembrano sbagliati, la configurazione utilizzata mi pare identica a quella utilizzata quando mi collego via USB.

    #66717
    Sergio Bertana
    Amministratore del forum

    Quindi stai leggendo l’indirizzo 2 quindi abbiamo bypassato il problema dell’offset -1.

    Ma sei sicuro che il tuo dispositivo accetti il comando 3x (Read Holding register) magari vuole il codice 4x.

    Io proverei a connettermi con un simulatore Modbus (Esempio quello del ns programma Toolly).

    Eventualmente se hai due convertitori seriali RS485, puoi anche spiare sempre con Toolly i pacchetti Modbus scambiati dal programma che funziona, così ti rendi conto.

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Devi essere connesso per rispondere a questo topic.