Ciao a tutti mi sono appena iscritto e ho gia una domanda riguardo ModBus.
Sto cercando … e ci sono riuscito a far comiunicare un arduino/esp32 ecc, non importa, con un Inverter deye fotovoltaico, ho connesso il microcontroller all'inverter attaverso la porta RS485 (A,B) con un modulo MAX485. il tutto funziona e c'e scambio dati.
Il piccolo programma invia allo Slave ID “08” richiesta leggere registro 03 alla posizione 01 con numero byte 01(valori in HEX) , la risposta c'è come da foto.
si legge numero ID codice richiesta 03 numero bite 2 e i due byte di risposta 0 e 1 ,165 e 133 con numeri di conytrollo crc(valori in HEX).
la domanda è questa sul registro 01 dovrei trovare il valore impostato ID di chiamata allo slave quindi 08, questi 0 e 1 come si interpretano? ho provato altri registri ma il risultato sono dei valori che non so interpretare, sono tutti valori stampati in decimale non exadecmale.
void Deye() {
byte N_buf=8;
int Anemometer_buf[N_buf];
for( byte i=0; i<N_buf; i++ ) {
Anemometer_buf[i]=0;
}
Serial.println(" ");
byte DEYE_REQUEST[] = {0x08, 0x03, 0x00, 0x01, 0x00, 0x01,0xD5, 0x53};
RS485Serial.write(DEYE_REQUEST, sizeof(DEYE_REQUEST));
RS485Serial.flush();
RS485Serial.readBytes(DEYE_REQUEST,N_buf);
for( byte i=0; i<N_buf-1; i++ ) {
Serial.print(DEYE_REQUEST[i],DEC);
Serial.print(" . ");
}
Serial.println(" ");
}