Denkanstöße zu SocketException bei EasyModbus.ModbusClient.ReadHoldingRegisters

  • VB.NET
  • .NET (FX) 4.5–4.8

    Denkanstöße zu SocketException bei EasyModbus.ModbusClient.ReadHoldingRegisters

    Hallo zusammen,

    ich nutze in VB.NET die EasyModbus-Bibliothek und frage periodisch (meist alle 15 Min.) verschiedenste Geräte damit ab, z.B. so:

    Quellcode

    1. ...
    2. Dim modbusClient = New EasyModbus.ModbusClient(host, port)
    3. modbusClient.Connect()
    4. Dim EreignisNr As Int32 = EasyModbus.ModbusClient.ConvertRegistersToDouble(modbusClient.ReadHoldingRegisters(30197, 2), modbusClient.RegisterOrder.HighLow)
    5. Dim Status As Int32 = EasyModbus.ModbusClient.ConvertRegistersToDouble(modbusClient.ReadHoldingRegisters(30201, 2), modbusClient.RegisterOrder.HighLow)
    6. Dim EmpfohleneAktion As Int32 = EasyModbus.ModbusClient.ConvertRegistersToDouble(modbusClient.ReadHoldingRegisters(30211, 2), modbusClient.RegisterOrder.HighLow)
    7. modbusClient.Disconnect()
    8. ...

    Die Connections werden immer schön geschlossen und ich achte darauf, zusammenhängende Register auch zusammenhängend auszulesen (und nicht ein einzelnes Byte mittendrin o.ä.).

    Das läuft schon zig Monate problemlos, jetzt habe ich bei drei Geräten (2 davon ziemlich gleich) "plötzlich" folgendes Problem:

    In die Übertragungsverbindung können keine Daten geschrieben werden: Eine bestehende Verbindung wurde softwaregesteuert durch den Hostcomputer abgebrochen.: System.Net.Sockets.SocketException (0x80004005): Eine bestehende Verbindung wurde softwaregesteuert durch den Hostcomputer abgebrochen bei System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size)

    Und zwar passiert das im obigen Code bei in Zeile 4, also beim ersten Lesen aus einem Register (vorher hatte ich fälschlicherweise den Connect angegeben!).
    Das interessante ist, bei einem Gerät hat dessen Reboot geholfen - möglicherweise aber nur temporär, das weiß ich noch nicht.
    Zwei andere Geräte werden alle 15 MIn. so abgefragt, einmal klappt's, dann kommt wieder die Fehlermeldung, dann klappts, dann Fehlermeldung usw. Das setzte bei beiden zeitversetzt aber am selben Tag ein und das gab es schon zweimal! Hier hat eine Umkonfiguration bzw. auch Reboot geholfen.

    Das einzige, was sich an der Systemumgebung ändert, sind die Windows-Updates (die aber nicht zeitgleich mit dem Start der Fehlermeldungen waren).

    Hat jemand Erfahrung mit per Modbus angesprochenen Geräten, dass diese irgendwann anfangen zu zicken? Was könnte bei diesen das Problem sein, dass diese der Modbus-Kommunikation plötzlich überdrüssig werden (nach einiger Zeit auftretende Überläufe o.ä.) und sich wie o.g. verhalten?

    Vielen Dank im Voraus!
    Gruß
    Micha

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DahProgrammah“ ()