Problema de comunicación Modbus RTU con ESP32

Buenas a todos.

He avanzado un poco con el tema tratando de buscar el error.

Conseguí utilizar 2 registros de 16 bits en Modbus Poll, el mensaje de transmisión Modbus que envía el software parece ser el correcto, el cual es el siguiente.

Como se ve en la imagen, el software (que simula a la bomba) es el esclavo, y quiere leer el valor de consigna de caudal que arroja el ESP32, en este caso caudal = 90.000.

Id. esclavo = 0x01
Funcion = 0x04  (Read Input Register)  
Reg. ADDR HI = 0x12
Reg. ADDR LO = 0x4C
Num Reg HI = 0x00
Num Reg LO = 0x02
CRC HI = B5
CRC LO = 64

Hasta aquí todo correcto.

Volví a conectar mi ESP32(maestro) con Modbus Poll(esclavo).

Tras ponerlo en marcha e investigar de donde procedía el error que me daba en los archivos .h & .cpp de la libreria ModbusMaster, encontre que el error es el siguiente.

Invalid slave id

Este error corresponde con la línea 759 del archivo .cpp

Seguí investigando y comprobando que se hacía todo correctamente. El array que contiene la trama Modbus es el "u8ModbusADU[256]".
Lo comprobé y era correcto, siendo este:

u8ModbusADU[1] = 1  (dec) = 0x01 (Hex) = Id. Esclavo
u8ModbusADU[2] = 16 (dec) = 0x10 (Hex) = Función
u8ModbusADU[3] = 18 (dec) = 0x12 (Hex) = Reg. ADDR HI
u8ModbusADU[4] = 76 (dec) = 0x4C (Hex) = Reg. ADDR LO
u8ModbusADU[5] = 0  (dec) = 0x00 (Hex) = Num. Reg. HI
u8ModbusADU[6] = 2  (dec) = 0x02 (Hex) = Num. Reg. LO
u8ModbusADU[7] = 4  (dec) = 0x04 (Hex) = Byte count
u8ModbusADU[8] = 0  (dec) = 0x00 (Hex) = Value 1 HI
u8ModbusADU[9] = 0  (dec) = 0x00 (Hex) = Value 1 LO
u8ModbusADU[10]= 35 (dec) = 0x23 (Hex) = Value 2 HI
u8ModbusADU[11]= 40 (dec) = 0x28 (Hex) = Value 2 LO
u8ModbusADU[12]= 58 (dec) = 0x3A (Hex) = CRC HI
u8ModbusADU[13]= 68 (dec) = 0x44 (Hex) = CRC LO

Es a partir de la línea 704 del archivo .cpp cuando empieza a borrar elementos y hace que mi Id.Esclavo tome el valor de 0. No soy un experto en lenguaje Arduino u C++. Así que si me pueden ayudar a comprender este fragmento de código de la librería ModbusMaster me sería de gran ayuda para avanzar a la hora de encontrar mi error.

El fragmento de código que quiero entender es el siguiente, procedente del archivo .cpp, a partir de la linea 704:

// flush receive buffer before transmitting request
  while (_serial->read() != -1);

  // transmit request
  if (_preTransmission)
  {
    _preTransmission();
  }
  for (i = 0; i < u8ModbusADUSize; i++)
  {
    _serial->write(u8ModbusADU[i]);
  }
  
  u8ModbusADUSize = 0;
  _serial->flush();    // flush transmit buffer
  if (_postTransmission)
  {
    _postTransmission();
  }
  
  // loop until we run out of time or bytes, or an error occurs
  u32StartTime = millis();
  while (u8BytesLeft && !u8MBStatus)
  {
    if (_serial->available())
    {
#if __MODBUSMASTER_DEBUG__
      digitalWrite(__MODBUSMASTER_DEBUG_PIN_A__, true);
#endif
      u8ModbusADU[u8ModbusADUSize++] = _serial->read();
      u8BytesLeft--;
#if __MODBUSMASTER_DEBUG__
      digitalWrite(__MODBUSMASTER_DEBUG_PIN_A__, false);
#endif
    }
    else
    {
#if __MODBUSMASTER_DEBUG__
      digitalWrite(__MODBUSMASTER_DEBUG_PIN_B__, true);
#endif
      if (_idle)
      {
        _idle();
      }
#if __MODBUSMASTER_DEBUG__
      digitalWrite(__MODBUSMASTER_DEBUG_PIN_B__, false);
#endif
    }

Un saludo a todos y gracias.