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 に答える