• Recent
    • Tags
    • Popular
    • Register
    • Login

    Please Note This forum exists for community support for the Mango product family and the Radix IoT Platform. Although Radix IoT employees participate in this forum from time to time, there is no guarantee of a response to anything posted here, nor can Radix IoT, LLC guarantee the accuracy of any information expressed or conveyed. Specific project questions from customers with active support contracts are asked to send requests to support@radixiot.com.

    Radix IoT Website Mango 3 Documentation Website Mango 4 Documentation Website Mango 5 Documentation Website

    Read more than a register in one request

    Modbus4J general discussion
    3
    4
    4.3k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      bkhashfeh
      last edited by

      Hello guys,
      I'm newbie in industrial field, my background is an IT, I need to use Modbus4j; I have one problem, I think it is easy to solve for you guys,

      I need to read more than one register in one Modbus request as part of the modbus standard, can I do that without changing the code?

      for example:
      I need to send Modbus request to a slave id, with range (4001 Holding register), with offset 3* and length 6 (6 registers)*

      Thanks

      1 Reply Last reply Reply Quote 0
      • M
        mahesh
        last edited by

        hi bkhashfeh
        yes its possible to read more than one register in one request. for detail please post your example code i will suggest u corrections in your code.

        regards

        mahesh

        1 Reply Last reply Reply Quote 0
        • V
          Vicarious
          last edited by

          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");
          
          }
          

          }

          1 Reply Last reply Reply Quote 0
          • First post
            Last post