Home › Forum › Terminali operatore (Weintek) › Comunicazione Modbus RTU tra MT6070iP e Pixsys ATR243
- Questo topic ha 2 risposte, 2 partecipanti ed รจ stato aggiornato l'ultima volta 9 anni, 8 mesi fa da
Stefano.
-
AutorePost
-
Gennaio 5, 2017 alle 6:44 pm #36095
Stefano
PartecipanteSto 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.Gennaio 9, 2017 alle 7:33 am #39812Sergio Bertana
Amministratore del forumLe 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.
Gennaio 9, 2017 alle 1:41 pm #39813Stefano
PartecipanteHo 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!
-
AutorePost
- Devi essere connesso per rispondere a questo topic.