Good morning, get the modbus master tcp to work.
This gives me the values in hexadecimal, I did some tests and it works perfectly.
The last two pairs of 00 show me the data reading, at first I think it is the information of the slave, the type of data to read, in this case holding register.
What I can not do is get the data I read in a floating number

import java.io.*;
import java.lang.*;
import java.net.InetAddress;
import net.wimpi.modbus.Modbus;
import net.wimpi.modbus.io.ModbusTCPTransaction;
import net.wimpi.modbus.msg.WriteCoilRequest;
import net.wimpi.modbus.msg.ReadInputRegistersRequest;
import net.wimpi.modbus.msg.ReadInputRegistersResponse;
import net.wimpi.modbus.msg.ReadCoilsRequest;
import net.wimpi.modbus.msg.ReadCoilsResponse;
import net.wimpi.modbus.msg.ReadInputDiscretesRequest;
import net.wimpi.modbus.msg.ReadInputDiscretesResponse;
import net.wimpi.modbus.msg.ReadMultipleRegistersRequest;
import net.wimpi.modbus.msg.ReadMultipleRegistersResponse ;
import net.wimpi.modbus.net.TCPMasterConnection;
import java.io.FileOutputStream;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class test_modbus {

    public static void main(String args[]) {
        try {
            /* The important instances of the class */
            TCPMasterConnection con = null; // la conexion
            ModbusTCPTransaction trans = null; // la transaccion
            ReadMultipleRegistersRequest rreq = null; // la lectura requerida
            ReadMultipleRegistersResponse  rres = null; // la lectura entregada

            /* Variables para guardar los parametros */
            InetAddress addr = null; // la direccion del esclavo
            int port = 502; // el puerto por defecto

            // 1. Configurar los parámetros
            addr = InetAddress.getByName("84.31.57.55"); // ** La direccion
                                                            // asignada a el 
                                                            // modulo **

            // 2. Abriendo la conexion
            con = new TCPMasterConnection(addr);
            con.setPort(port);
            con.connect();
            System.out.println( "--- Message: Line:36 success --- " );
            // ~~~~~~~~~~~~~~~~~~~~ La solicitud de lectura defectuosa ~~~~~~~~~~~~~~~~~~~~
            // 3r. Preparar la peticion de lectura

            int k = 5391; //Numero de registro a leer, sin el 4

            rreq = new ReadMultipleRegistersRequest(k, 1); 

            // 4r. Preparando la transaccion de lectura
            trans = new ModbusTCPTransaction(con);
            trans.setRequest(rreq);
            System.out.println( "--- Message: Line:46 success --- " );

            // 5r. Ejecutar la transaccion leer

            trans.execute();           

            rres = (ReadMultipleRegistersResponse) trans.getResponse();

            System.out.println("Valor hexa de registro " + " = "+ rres.getHexMessage());

            //Se crea un archivo de texto para guardar el valor obtenido
            //Abro stream, crea el fichero si no existe
            FileWriter fw=new FileWriter("C:\\Users\\sels.ldisa\\Documents\\netbeans ejemplos\\fichero1.txt",true);

            fw.write(rres.getHexMessage()+",\r\n");

            //Cierro el stream
            fw.close(); 
            //Abro el stream, el fichero debe existir
            FileReader fr=new FileReader("C:\\Users\\sels.ldisa\\Documents\\netbeans ejemplos\\fichero1.txt");
            //Leemos el fichero y lo mostramos por pantalla
            //int valor=fr.read();
            //while(valor!=-1){
            //System.out.print((char)valor);
            //valor=fr.read();}

            // 6. Close the connection
            //con.close();

        } catch (Exception ex) {
            System.out.println("Error");
            ex.printStackTrace();
        }
    }

}