Here is the code for the following info we need to pull ModbusFactory factory = new ModbusFactory(); IpParameters params = new IpParameters(); params.setHost("192.168.1.100"); params.setPort(502); params.setEncapsulated(true); ModbusMaster master = factory.createTcpMaster(params, false); // master.setRetries(4); master.setTimeout(50000); master.setRetries(5); long start = System.currentTimeMillis(); try { master.init(); for (int i = 0; i < 40; i++) { System.out.println(master.getValue(100, RegisterRange.COIL_STATUS, 100+i, DataType.BINARY)); } } catch (Exception e) { e.printStackTrace(); } finally { master.destroy(); } System.out.println("Took: " + (System.currentTimeMillis() - start) + "ms"); We are trying to pull the values from the following information Slave ID: 100 Function: 01 Read Coils (0x) Address: 100 Quantity: 40 This works on another program we downloaded just to see if the PLC was ok and the PLC is working. Whenever we try with Modbus4j it times out. Any help is appreciated!