Vai al contenuto

Comunicazione Modbus RTU tra MT6070iP e Pixsys ATR243

Home Forum Terminali operatore (Weintek) Comunicazione Modbus RTU tra MT6070iP e Pixsys ATR243

Stai visualizzando 3 post - dal 1 a 3 (di 3 totali)
  • Autore
    Post
  • #36095
    Stefano
    Partecipante

    Sto realizzando un progetto su EB800 per comandare una serie di termoregolatori Pixsys ATR243-21ABC-T connessi su una linea RS485 e protocollo MODBUS RTU. I dispositivi sono slave e possono essere configurati con indirizzi da 1 a 254. L’indirizzo 255 è broadcast mentre 0 è broadcast senza risposta da parte dello slave. Le funzioni supportate sono:

    – WORD READING (max 20 word) (0x03, 0x04)
    – SINGLE WORD WRITING (0x06)
    – MULTIPLE WORDS WRITING (max 20 word) (0x10)

    Gli indirizzi modbus partono da 0 (tipo dipositivo) e arrivano a 4072 (parametro 72). Nel mio progetto utilizzo le seguenti funzioni

    – 6x (Es. imposto il setpoint con 6x-1101)
    – 6x_Bit (Es. Attivo/disattivo la regolazione con 6x_Bit-0101600)
    – 4x (Es. Leggo la temperatura attuale con 4x-1099)
    – 4x_Bit (Es. Leggo lo stato del tuning con 4x_Bit-0301706)

    Il mio problema è che il driver MODBUS RTU fa partire il conteggio degli indirizzi da 1 contandolo come 0. Quindi, per esempio, quando cerco di leggere il setpoint (4x-1101) in realtà leggo la temperatura attuale non filtrata (indirizzo 1100).

    Risolverei velocemente decrementando di 1 tutti gli indirizzi che vado a leggere, ma vorrei mantenere la corrispondenza tra gli indirizzi indicati nel manuale del regolatore e gli indirizzi utilizzati nel progetto. Il driver MODBUS RTU (zero-based addressing) sembrerebbe fare al caso mio, ma non ha la funzione 6x_Bit che mi serve anche se la uso per soli tre indirizzi su ogni dispositivo(6x_Bit-0101600 ; 6x_Bit-0100901 ; 6x_Bit-0100900 ).

    Tutta questa premessa per chiedere:

    – E’ possibile rimappare gli indirizzi con un offset di -1 ?
    – C’è qualche alternativa al comando 6x_Bit? Tipo settare un singolo bit su una word che poi viene scritto con 6x.

    #39812
    Sergio Bertana
    Amministratore del forum

    Le specifiche Modbus indicano che il dispositivo slave deve incrementare di 1 l’indirizzo ricevuto, ecco perchè il terminale invia gli indirizzi ofsettandoli con un -1. Purtroppo molti vendors gestiscono il protocollo Modbus non tenendo conto di questo offset creando confusione.

    Weintek ha proprio per questo scopo inserito anche il protocollo MODBUS RTU (zero-based addressing) che non esegue l’offset. Sinceramente non avendolo mai utilizato non mi ero accorto che non aveva la funzione 6x_Bit. Però ha le funzioni 3x_Bit e 4x_Bit che credo vadano bene per la tua applicazione.

    In caso contrario puoi utilizzare un data transfer dal sistema al terminale e poi utilizzare le RW_Bit o LW_Bit.

    #39813
    Stefano
    Partecipante

    Ho fatto alcune prove ma sembra che il dispositivo tratti le funzioni 3x e 4x in sola lettura. Ora valuterò se utilizzare il data transfer oppure cambiare gli indirizzi.

    Comunque, come sempre, grazie per il rapido e chiaro aiuto!

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