Hallo ihr,
ich hoffe man kann mir hier weiterhelfen.
Ich habe schon länger gesucht konnte jedoch keine Antwort finden.
Ich möchte mittels ModBus/TCP mehrere Register beschreiben.
Dazu nutze ich jamod. Beim Ausführen meines Codes bekomme ich jedoch keine Antwort (Read Time Out) meiner Gegenstelle. Das liegt daran, dass jamod meine Nachricht als TCP schickt und nicht als Modbus/TCP.
Hier die ganze Fehlermeldung (Fehler kommt bei transaction.execute()
:
Hier Bilder von Wireshark wie es momentan aussieht:

Und hier ein Bild wie die Nachricht eigentlich aussehen sollte:

Und hier Codeschnipsel:
Fehlen mir irgend welche Flags die ich erst setzen muss?
Oder was mache ich falsch...
Danke schon mal für eure Mithilfe.
ich hoffe man kann mir hier weiterhelfen.
Ich habe schon länger gesucht konnte jedoch keine Antwort finden.
Ich möchte mittels ModBus/TCP mehrere Register beschreiben.
Dazu nutze ich jamod. Beim Ausführen meines Codes bekomme ich jedoch keine Antwort (Read Time Out) meiner Gegenstelle. Das liegt daran, dass jamod meine Nachricht als TCP schickt und nicht als Modbus/TCP.
Hier die ganze Fehlermeldung (Fehler kommt bei transaction.execute()
Code:
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:170)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
at java.io.DataInputStream.read(DataInputStream.java:149)
at net.wimpi.modbus.io.ModbusTCPTransport.readResponse(ModbusTCPTransport.java:189)
at net.wimpi.modbus.io.ModbusTCPTransaction.execute(ModbusTCPTransaction.java:192)
Hier Bilder von Wireshark wie es momentan aussieht:

Und hier ein Bild wie die Nachricht eigentlich aussehen sollte:

Und hier Codeschnipsel:
Code:
WriteMultipleRegistersRequest multipleRegistersRequest = new WriteMultipleRegistersRequest(startAdresse,
register);
ModbusResponse response = starteTransaction(multipleRegistersRequest);
Code:
private synchronized ModbusResponse starteTransaction(ModbusRequest modbusRequest) {
modbusRequest.setUnitID(1);
ModbusTCPTransaction transaction = new ModbusTCPTransaction();
transaction.setConnection(this.tcpVerbindung);
transaction.setRequest(modbusRequest);
try {
transaction.execute();
} catch (ModbusException e) {
e.printStackTrace();
}
return transaction.getResponse();
}
Fehlen mir irgend welche Flags die ich erst setzen muss?
Oder was mache ich falsch...
Danke schon mal für eure Mithilfe.