2016-01-21 52 views
0

我正在使用jamod1.2,我試圖通過此代碼發送布爾值,它的工作原理完美。寫整數值不布爾到存儲器字100

現在我試圖發送一個整數值給我有一些寄存器,比如發送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

我有一個方法來設置寄存器中的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(); 
    } 
} 


} 

希望它回答你的問題!