Función para partir y unir un float

Si no funciona lo que te comento puedes utilizar la forma que se ha comentado alguna vez en el foro: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1207242838
Debería estar en español por aquí, pero no lo encuentro mirando por encima.

Prueba con esto, a ver que tal funciona.

int send(const float& value)
{
    const int* p = (const int*)(const void*)&value;
    for (int i = 0; i < sizeof(value)/sizeof(int); i++)
	  MODBUS.SEND(*p++);
    return i;
}

int read(float& value)
{
    int* p = (int*)(void*)&value;
    for (int i = 0; i < sizeof(value)/sizeof(int); i++)
	  *p++ = MODBUS.READ();
    return i;
}