Saturday 15 January 2011

serial port - Java MODBUS RTU master example code -



serial port - Java MODBUS RTU master example code -

i need write modbus rtu master app in java back upwards 03 - read holding registers , 16 - write multiple registers.

i found 3 java libraries: jamod, j2mod, modbus4j. seek of these libraries (i spend 4 hours) , still doesn't work.

do know step-by-step tutorial or illustration code?

i'm using usb->rs-485 converter. if testing in qmodbus, works good.

thank you.

import java.io.file; import com.serotonin.io.serial.serialparameters; import com.serotonin.modbus4j.modbusfactory; import com.serotonin.modbus4j.modbusmaster; import com.serotonin.modbus4j.code.datatype; import com.serotonin.modbus4j.code.registerrange; import com.serotonin.modbus4j.exception.modbusinitexception; public class modbus4jtest { public static void main(string[] args) throws exception { modbusfactory mill = new modbusfactory(); serialparameters params = new serialparameters(); params.setcommportid("/dev/ttyusb1"); params.setbaudrate(9600); params.setdatabits(8); params.setstopbits(1); params.setparity(0); modbusmaster master = factory.creatertumaster(params); master.settimeout(2000); master.setretries(0); long start = system.currenttimemillis(); // don't start if rtu master can't initialized. seek { master.init(); } grab (modbusinitexception e) { system.out.println( "modbus master init error: " + e.getmessage()); return; } seek { system.out.println("reg. 1001 value:" + master.getvalue(7, registerrange.holding_register, 1000, datatype.four_byte_float_swapped)); // more above until required register values read. // .. } { master.destroy(); } system.out.println("time elapsed: " + (system.currenttimemillis() - start) + "ms"); } }

.

import java.io.file; import com.ghgande.j2mod.modbus.modbuscoupler; import com.ghgande.j2mod.modbus.io.modbusserialtransaction; import com.ghgande.j2mod.modbus.msg.modbusrequest; import com.ghgande.j2mod.modbus.msg.readinputregistersrequest; import com.ghgande.j2mod.modbus.msg.readinputregistersresponse; import com.ghgande.j2mod.modbus.net.serialconnection; import com.ghgande.j2mod.modbus.util.serialparameters; import com.serotonin.modbus4j.msg.readholdingregistersrequest; import com.serotonin.modbus4j.msg.readholdingregistersresponse; // -djava.library.path="/usr/lib/jni/" public class j2mod { public static void main(string[] args) throws exception { file lock = new file("/var/lock/lck..ttyusb0"); lock.delete(); file lock1 = new file("/var/lock/lck..ttyusb1"); lock1.delete(); serialconnection con = null; // connection modbusserialtransaction trans = null; // transaction //readinputregistersrequest req = null; // request readholdingregistersrequest req = null; readholdingregistersresponse res = null; //readinputregistersresponse res = null; // response string portname = null; // name of serial port used int unitid = 0; // unit identifier talking int ref = 0; // reference, start reading int count = 0; // count of ir's read int repeat = 1; // loop repeating transaction seek { portname = "/dev/ttyusb1"; //system.setproperty("gnu.io.rxtx.serialports", portname); unitid = 2; ref = 0; count = 4; } grab (exception ex) { ex.printstacktrace(); system.exit(1); } // 2. set master identifier // modbuscoupler.createmodbuscoupler(null); modbuscoupler.getreference().setunitid(1); // 3. setup serial parameters serialparameters params = new serialparameters(); params.setportname(portname); params.setbaudrate(9600); params.setdatabits(8); params.setparity("none"); params.setstopbits(1); params.setencoding("rtu"); params.setecho(false); // 4. open connection con = new serialconnection(params); con.open(); // 5. prepare request req = new readholdingregistersrequest(unitid, ref, count); //req = new readinputregistersrequest(ref, count); //req.setunitid(unitid); //req.setheadless(); // 6. prepare transaction trans = new modbusserialtransaction(con); trans.setrequest(req); int k = 0; { trans.execute(); res = (readinputregistersresponse) trans.getresponse(); //res = (readholdingregistersresponse) trans.getresponse(); (int n = 0; n < res.getwordcount(); n++) { system.out.println("word " + n + "=" + res.getregistervalue(n)); } k++; } while (k < repeat); // 8. close connection con.close(); } }

java serial-port rxtx modbus

No comments:

Post a Comment