Bonjour,

cela fait quelque semaine que je cherche à écrire sur un registre en java. je vous explique le contexte, je dispose un automate (unidrive sp) qui dispose un boitier ethernet, donc mon but étant d'écrite sur les registres afin de commander l'automate en MODBUS TCP/IP en java. l'automate dispose des boutons physique pour faire des commande et on aimerai remplacer les boutons de commande sur l’automate par une application sur l'ordinateur sans qu'on est besoin d'aller sur l'automate pour faire des commandes.

J'ai commencer a codé mais le code ne fonctionne pas très bien voir pas du tout. j'aimerai bien que vous m'aidez à faire une écriture sur un ou plusieurs registres.

public class Ecriture_Registre {

//Initialise les variable
WriteSingleRegisterRequest Write_Req = null;
WriteSingleRegisterResponse Write_Res = null;
ModbusTCPTransaction transaction = null;

String reference = "0";// HEX Address
int count = 0; // the number Address to read
int ref = Integer.parseInt(reference, 16);// convertir Hex to int
InetAddress addr;
int port;

public Ecriture_Registre()
{
try {
Write();
} catch (NoRouteToHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ModbusIOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void Write() throws ModbusIOException, NoRouteToHostException{

try{

//Prepare les sockets de connexion
InetAddress ip = InetAddress.getByName("192.168.10.138");
TCPMasterConnection con = new TCPMasterConnection(ip);
con.setPort(502);
con.connect();

//Prepare les requete modbus
Write_Req = new WriteSingleRegisterRequest(); //request
Write_Res = new WriteSingleRegisterResponse(); //response

SimpleRegister MyReg = new SimpleRegister();

//3. Prepare the request
Write_Req = new WriteSingleRegisterRequest();
Write_Req.setReference(2); //register number
MyReg.setValue(10); //value for register
Write_Req.setRegister(MyReg);

//4. Prepare the transaction
transaction = new ModbusTCPTransaction(con);
transaction.setRetries(3);
transaction.setReconnecting(true);
transaction.setRequest(Write_Req);
transaction.execute();

Write_Res = (WriteSingleRegisterResponse) transaction.getResponse();

// Affichage des requetes
System.out.println("Request [ WriteMultipleRegistersRequest ] "+ "= "+Write_Req.getHexMessage());
System.out.println("Response [ WriteMultipleRegistersResponse ] "+ "= "+Write_Res.getHexMessage());


con.close();
}
}