Hi, I'm not bkhashfeh but I have the same problem and I'd apreciate the help :D . Here is my code where I'm reading three registers per second (or trying). package modbusmastertest; import com.serotonin.modbus4j.ModbusFactory; import com.serotonin.modbus4j.ModbusMaster; import com.serotonin.modbus4j.code.DataType; import com.serotonin.modbus4j.ip.IpParameters; import java.io.FileWriter; import java.io.PrintWriter; import java.util.Calendar; class MBMasterTest { public static void main(String[] args) throws Exception { // Modbus master settings ModbusFactory factory = new ModbusFactory(); IpParameters params = new IpParameters(); params.setHost("192.168.0.1"); params.setPort(502); params.setEncapsulated(false); ModbusMaster master = factory.createTcpMaster(params, false); master.setTimeout(333); master.setRetries(1); // CSV writter settings FileWriter fwriter; fwriter = new FileWriter("C:/Users/NESTOR/Dropbox/Siemens_S7-1200.csv"); PrintWriter outputFile = new PrintWriter(fwriter); outputFile.println("Date,Sensor_1,Sensor_2,Sensor_3"); // Primera línea Object []Register = new Object[3]; // Date settings Calendar cal = Calendar.getInstance(); long elapsedTime = 0; long time = 0; // Cuerpo del programa long start = System.currentTimeMillis(); // Tiempo de inicio try { master.init(); while(System.currentTimeMillis()<(start+10000)) { time = System.currentTimeMillis(); for(int i = 0; i<3; i++) { Register* = master.getValue(1,40001+i,DataType.TWO_BYTE_INT_SIGNED); } System.out.println(Register[0]+","+Register[1]+","+Register[2]); System.out.println("" + ""); elapsedTime = System.currentTimeMillis()-time; cal.setTimeInMillis(cal.getTime().getTime() + elapsedTime); outputFile.println(cal.getTime().toString()+","+Register[0]+","+Register[1]+","+Register[2]); // Se escribe nueva linea en archivo } outputFile.close(); // Se cierra el archivo } finally { master.destroy(); //Se destruye el objeto master } System.out.println("" + ""); System.out.println("Tardo " + (System.currentTimeMillis()-start) + "ms"); } }