我正在使用jamod1.2,我尝试通过此代码发送布尔值,它完美地工作。
现在我试图将一个整数值发送到我的一些寄存器,比如发送5到%mw100!我如何通过jamod库或者有更简单的方法来做到这一点?
TCPMasterConnection con = null;
try {
con = new TCPMasterConnection(InetAddress.getByName(IP));
} catch (UnknownHostException e) {
e.printStackTrace();
}
con.setPort(502);
try {
con.connect();
} catch (Exception e) {
e.printStackTrace();
}
// Prepare the transaction
ModbusTCPTransaction trans = new ModbusTCPTransaction(con);
// Prepare the request
WriteCoilRequest wcr = new WriteCoilRequest();
// Don't know what unit ID is; 1 seems to work
wcr.setUnitID(1);
// This is the number of the coil to set.
wcr.setReference(unit_num);
// Turn coil on or off?
// This doesn't physically do anything; it just specifies
// what state should be set later on.
if(value=="false") {
wcr.setCoil(false);
}else{
wcr.setCoil(true);
}
// Must execute a transaction now to actually do stuff.
trans.setRequest(wcr);
try {
trans.execute();
} catch (ModbusException e) {
e.printStackTrace();
}
WriteCoilResponse res = (WriteCoilResponse) trans.getResponse();
if (res != null) {
System.out.println("Set coil " + res.getReference() + " to "
+ res.getCoil());
}
con.close();
答案 0 :(得分:0)
我有一种在寄存器中设置16位值的方法。
public class PlcMethods {
TCPMasterConnection con = null; //the connection
ModbusTCPTransaction trans = null; //the transaction
ReadInputDiscretesRequest req = null; //the request
ReadInputDiscretesResponse res = null; //the response
public PlcMethods( String ipaddress , int port ) throws UnknownHostException {
InetAddress ipaddr = null;
ipaddr = InetAddress.getByName(ipaddress);
con = new TCPMasterConnection(ipaddr);
con.setPort(port);
System.out.println("Making connection to Plc..");
try {
con.connect();
} catch (Exception e) {
System.err.println("Connection successful");
e.printStackTrace();
}
}
public void writeRegister(int regaddr, int value) throws ModbusIOException, ModbusSlaveException, ModbusException {
WriteSingleRegisterRequest WriteReq = null;
SimpleRegister MyReg = new SimpleRegister(1);
//3. Prepare the request
WriteReq = new WriteSingleRegisterRequest();
WriteReq.setReference(regaddr); //register number
MyReg.setValue(value); //value for register
WriteReq.setRegister(MyReg);
//4. Prepare the transaction
trans = new ModbusTCPTransaction(con);
trans.setRequest(WriteReq);
trans.execute();
}
public static void main(String[] args) throws UnknownHostException {
PlcMethods plc = new PlcMethods("192.168.0.34",502);
try {
plc.writeRegister(0x1000, 58880);
} catch (ModbusException e) {
e.printStackTrace();
}
}
}
希望它能回答你的问题!