Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 27

Thema: libnodave timeout Problem

  1. #1
    Registriert seit
    03.09.2008
    Beiträge
    48
    Danke
    7
    Erhielt 2 Danke für 2 Beiträge

    Ausrufezeichen


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Community,

    erst einmal Danke an Zottel für libnodave. Ich habe bisher alle Probleme die ich so hatte (meistens Userprobleme^^) umschiffen können. Nun habe ich aber evtl. ein Problem in libnodave selbst.

    Verbindungsaufbau, Lesen, Schreiben, Abbau, alles prima. Nun habe ich durch einen Zufall folgendes festgestellt.

    In dem Augenblick wo ich ein readManyBytes() von einem ca. 4k Großen Block(braucht ca. 1 sek) und genau in diesem Lesevorgang die Verbindung auf SPS-Seite getrennt wird, passiert garnichts mehr. Ich erhalte auch nach mehreren Minuten kein Timeout oder etwas in der Art.

    Wichtig ist dabei die folgende Config.

    PC mit libnodave -> verbunden mit Switch -> verbunden mit CP343-1

    wird die Verbindung auf PC Seite getrennt und steht somit keine Netzwerkverbindung mehr(die zwei kleinen Cumputer unten rechts in der Ecke mit nem X) so kommt ein Connect Timeout (libnodave Fehler -1025), soweit OK.

    wird die Verbindung auf SPS Seite getrennt(SPS zu Switch), hat der PC ja noch eine Verbindung mit dem Netzwerk, und es taucht beschriebenes Problem auf. Es kommt kein Fehler und er hängt in der readManyBytes() Funktion von libnodave.

    Das ganze ist aufgefallen als meine Applikation in einen Thread lief und die SPS genau in dieser Leseanfrage Stromlos war und somit auch die CP343-1.

    Kennt jemand das Problem oder kann mir sagen wie ich es beseitigen kann??? Soweit ich weiß hatte ja die Timeout Option in libnodave ja keine Relevanz für TCP on ISO oder?!

    Verwende Version 0.8.4.4 .NET DLL
    Visual C#.NET 2005

    Gruß Key
    Geändert von Key (26.01.2009 um 16:10 Uhr)
    Zitieren Zitieren libnodave timeout Problem  

  2. #2
    Key ist offline Benutzer
    Themenstarter
    Registriert seit
    03.09.2008
    Beiträge
    48
    Danke
    7
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Problem ist immer noch aktuell.

    Keiner da der helfen kann???

  3. #3
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Grundsätzlich sieht es so aus, dass es im TCP/IP-Stack einen eigenen Timeout gibt. Dieser liegt nach meinen Erfahrungen im Bereich von 40-45 Sekunden. Dann wird von diesem ein Fehler gemeldet. Meldet libnodave sich trotzdem nach dieser Zeit nicht mit Fehler zurück?
    Was bedeutet "Soweit ich weiß hatte ja die Timeout Option in libnodave ja keine Relevanz für TCP on ISO oder?!"? Schon einmal getestet und festgestellt oder ist dies eine reine Vermutung?
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  4. #4
    Key ist offline Benutzer
    Themenstarter
    Registriert seit
    03.09.2008
    Beiträge
    48
    Danke
    7
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo Herr Hönle,

    wie gesagt es tut sich auch nach mehreren Minuten nichts.

    Code:
    di = new libnodave.daveInterface(fds, "IF1", 0, libnodave.daveProtoISOTCP, libnodave.daveSpeed187k);
    di.setTimeout(1000000);
    
    entspricht dem Standard laut Doku. Ich hatte diesen Wert schon in beide Richtungen verändert. Es hat sich jedoch nichts getan. Bin mir allerdings nicht sicher ob es Millisekunden sein sollen oder Ticks. Das wären dann entweder 1000. Sek oder 1. Sek. was bei MS ein langes Timeout wäre. Werde es noch mal prüfen.

    Was mir noch aufgefallen ist
    Version 0.8.1

    Fixes a bug in MPI which made applications wait forever if PLC doesn't respond

    Kann sich da etwas in die neuere Version eingeschlichen haben?

  5. #5
    Key ist offline Benutzer
    Themenstarter
    Registriert seit
    03.09.2008
    Beiträge
    48
    Danke
    7
    Erhielt 2 Danke für 2 Beiträge

    Standard

    So ich wieder.

    Hab jetzt folgendes probiert.

    Hab mal das einfache TCP_ISO Beispiel genommen um evtl. Fehler in meiner App auszuschließen.

    Ich habe es mit ReadManyBytes und ReadBytes probiert. Selbes Resultat. Auch das Ändern der Timeout Werte in Schritten bis auf 10 runter.

    Sobald die Verbindung direkt am PC getrennt wird kommt nach ein paar Sekunden die bekannte Timeout Meldung -1025. Soweit OK.

    Trenne ich die Verbindung auf SPS Seite passiert nichts mehr. Er bleibt einfach in dem Read Befehl stecken. Gleiches gilt übrigends auch für beide Writes wie ich festgestellt habe. Ich habe auch nochmal den HUB gegen einen Switch getauscht. Bringt auch nix.

    Muss ich das jetzt irgendwie selbst prüfen???

  6. #6
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    An dieser Stelle müssen jetzt die libnodave-Profis einspringen (zottel, Ralle, afk, .. um nur wenige zu nennen).
    Ich weiss nur, wie es bei unser Bibliothek realisiert ist, dass mir dieses Problem auch aufgefallen ist und ich für diesem Fall eine Timeout-Meldung implementiert habe.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  7. #7
    Key ist offline Benutzer
    Themenstarter
    Registriert seit
    03.09.2008
    Beiträge
    48
    Danke
    7
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Ich vermute mal auch so etwas. Ich warte mal noch was die Profis dazu meinen.

    Ansonsten werd ich wohl oder übel das ganze noch mit ein paar Events erweitern müssen.

  8. #8
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zitat Zitat von Key Beitrag anzeigen
    Ich vermute mal auch so etwas. Ich warte mal noch was die Profis dazu meinen.

    Ansonsten werd ich wohl oder übel das ganze noch mit ein paar Events erweitern müssen.
    Es ist wohl bei der Umsetzung Linux/Windows was schiefgelaufen:

    settimeout setzt einen Wert, der unter Linux verwendet wird, um mittels select() darauf zu warten, daß Zeichen zum Lesen verfügbar sind.
    Der Wert ist in us (Mikrosekunden).
    Dann wird mit read() gelesen. Dies wird für serielle Schnittstellen und sockets einheitlich gehandhabt.

    Unter Windows geht das nicht, daher wird von sockets mit recv() gelesen. recv() kehrt nicht zurück, wenn nicht die nötige Zahl von Zeichen da ist.
    Bei den Net-Link Protokollen wird mittels select() ermittelt, ob Zeichen verfügbar sind, bevor recv() aufgerufen wird. Bei ISO_TCP aber nicht!!

    Ich habe mal schnell eine Version erstellt, die das auch bei ISO_TCP macht.

    Bitte die Endung .doc entfernen, die ist nur damit das Forum nicht meckert! Der richtige Filename ist libnodave.dll !
    Angehängte Dateien Angehängte Dateien

  9. #9
    Key ist offline Benutzer
    Themenstarter
    Registriert seit
    03.09.2008
    Beiträge
    48
    Danke
    7
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Habe es gerade mit einem Timer implementiert der das ElapsedEvent feuert wenn er abgelaufen ist. Funktioniert so einwanfrei. Nur schade dass es nicht direkt von der Lib so kommt.

    Edit: OK versuche ich es mal damit. Ist also ein Bug gewesen?
    Geändert von Key (28.01.2009 um 14:00 Uhr)

  10. #10
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Key Beitrag anzeigen
    Edit: OK versuche ich es mal damit. Ist also ein Bug gewesen?
    [Satire An]Nein ein Feature.[Satire Aus] Dies würde jedenfalls so von manchen großen Unternehmen dargestellt. Ich meine die mit mindestens einem S im Namen .
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 09.09.2010, 00:27
  2. S7-Graph Timeout, Unplausible Eingänge, Einzelschritt
    Von element. im Forum Programmierstrategien
    Antworten: 6
    Letzter Beitrag: 11.11.2009, 12:36
  3. libnodave und Timeout
    Von HeizDuese im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 06.01.2009, 15:06
  4. timeout am SEW-Umrichter
    Von Lubro im Forum SEW-EURODRIVE
    Antworten: 7
    Letzter Beitrag: 01.10.2008, 19:29
  5. Libnodave Timeout
    Von Lazarus™ im Forum Hochsprachen - OPC
    Antworten: 7
    Letzter Beitrag: 16.10.2005, 00:41

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •