0

我正在使用 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();
4

1 回答 1

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


}

希望它能回答你的问题!

于 2016-12-01T09:23:51.450 回答