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

Ergebnis 1 bis 9 von 9

Thema: LibNoDave: Was tun, wenn Funktion nicht zurückkommt?

  1. #1
    Registriert seit
    20.05.2009
    Beiträge
    32
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe folgendes Problem: Ich muss mit einem Server-Programm Daten aus einer SPS lesen und in einer Datenbank abspeichern. Funktioniert mit LibNoDave soweit auch sehr gut.

    Nur wenn z.B. das Netzwerkkabel gezogen und wieder angestöpselt wird, hängt sich LibNoDave weg, d.h. Funktionsaufrufe kommen nicht mehr zurück. Habe bei Test's schon bis zu einer 1/2 Stunde gewartet, nichts passiert.

    Da die Software unbeaufsichtigt, tagelang und auch nach solchen groben Fehlern weiterlaufen muss, stellt sich mir die Frage: wie kann ich das lösen?

    Hat jemand eine Idee?
    Wenn die Klügeren immer nachgeben, geschieht nur das, was die Dummen wollen
    Zitieren Zitieren LibNoDave: Was tun, wenn Funktion nicht zurückkommt?  

  2. #2
    Registriert seit
    27.11.2005
    Ort
    im Osten
    Beiträge
    1.183
    Danke
    141
    Erhielt 271 Danke für 248 Beiträge

    Standard

    Zitat Zitat von Manni01 Beitrag anzeigen
    Nur wenn z.B. das Netzwerkkabel gezogen und wieder angestöpselt wird, hängt sich LibNoDave weg, d.h. Funktionsaufrufe kommen nicht mehr zurück. Habe bei Test's schon bis zu einer 1/2 Stunde gewartet, nichts passiert.

    Hat jemand eine Idee?
    Das Problem scheint bekannt zu sein, nur an einer einfachen Lösung scheint es noch zu happern

    vielleicht hilft dir folgender Link
    Es ist nicht schwierig, mit noch nicht erreichten Zielen zu Leben; schwierig ist, ohne Ziele zu Leben !
    (Günther Kraftschik)

  3. #3
    Registriert seit
    20.05.2009
    Beiträge
    32
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja, besten Dank. Der Link hat schon mal geholfen. Die neue DLL von Zottel funktioniert bei mir wunderbar.
    Wenn die Klügeren immer nachgeben, geschieht nur das, was die Dummen wollen

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

    Standard

    Hallo Manni,

    ich habe das Problem ja ursprünglich mal aufgeworfen und ich konnte das ganze nur über eine eigene Timerüberwachung lösen. Mir ist auch bekannt das es bei anderen Bibliotheken so gemacht wird. Du hast gesagt das die DLL von Zottel dein Problem gelöst hat. Bei mir war das nciht der Fall. Denn...

    Hast du mal die netzwerkverbindung bei einem langen lesen bzw. schreibversuch hinter einem Switch gezogen. Genau dann dürfte das glecihe Problem wieder auftreten. Da die Route bis zum Switch zwar funktioniert jedoch nur das direkte entfernen des Netzwerkkables am Rechner erkannt wird. Ich habe es halt dann über einen Überwachungstimer gelöst.

    Quasi

    Timer.Start()
    read bzw. write Data
    Timer.Stop()

    und das Timer elapsed Event wird gefeuert wenn die Zeit überschirtten wird z.B.: 10 sec oder länger

    Gruß Key

  5. #5
    Registriert seit
    20.05.2009
    Beiträge
    32
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja, ich hatte alle möglichen Kombinationen ausprobiert. Kabel ziehen vor und hinter dem Switch sowie SPS einfach abschalten. Ich habe das mehrere Male hintereinander probiert. Die Funktionen sind jedesmal nach ca. 5 Sec. mit Timeout zurückgekommen. Ich benutze die Funktionen
    readManyBytes, writeManyBytes. Vorher hing er fast immer in einer dieser Funktionen fest.

    Aber wie machst Du das dann mit Deinem Überwachungstimer? Du kriegst zwar mit, dass die Funktion hängt, aber wie kommt die Anwendung wieder in den Tritt? Neustart? Thread abschiessen?
    Wenn die Klügeren immer nachgeben, geschieht nur das, was die Dummen wollen

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

    Standard

    Achso noch was. Wenn du dann einen Disconnect machst ist weider alles sauber. Beim anschließenden Reconnect erhälst du dann nämlich die korrekte Fehlermeldung das die Verbindung nicht aufgebaut werden konnte.

    Also Timerüberwachung wie lange ein Read/Write dauern darf. Wenn überschritten Event feuern -> Timeout. Dann Disconnect und Reconnect...

    Gruß Key

    P.S.: Bei mir ging die neue Version auch nicht. Hatte da das Problem das er das Trotzdem nicht mitbekommen hat wenn es nach dem Switch war...
    Geändert von Key (10.07.2009 um 11:17 Uhr)

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

    Standard

    Ich weiß nicht ob du das wirklich probiert hast. Aber mache mal ein Read auf einen DB der so 15-20 KByte liest und dann zeihe mal das netz hinter dem Switch. Also genau während des lesens. Dann sollte es zum gleichen Fehler kommen das nämlich garnix mehr geht.

    War bei mir zumindest so. Denn bei kurzen Read Writes bist du garnicht so schnell und es kommt der normale Res Fehler -125 von Libnodave...

    Gruß Key

  8. #8
    Registriert seit
    20.05.2009
    Beiträge
    32
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Habe es eben nochmal mit vielen Daten ausprobiert. Bei mir funktioniert's einwandfrei. Mal bricht er beim Lesen, mal beim Schreiben der Daten ab. Ich bekomme jedesmal den DaveError -1025 (Timeout). Ich habe es jetzt mind. 20 x hintereinander probiert. Stecker raus, 5 Sek. warten, Stecker wieder rein und nach spätestens 2 Sek. hatte ich mit einem Reconnect wieder eine laufende Verbindung. Konfiguration: S7-312C mit CP343-1 Lean und einem VB.NET-Programm.

    Vielleicht liegt bei Dir ein anderes Problem vor. Ich hatte neulich mit 'nem Wago-Ethernet-Controller ein merkwürdiges Problem. Ich hatte mir eine kleine Routine geschrieben, mit der ich per ModbusTCP zyklisch Daten lese und schreibe alle (10 ms ca. 200 Byte). Das Ganze brach nach unterschiedlicher Zeit 1 - 10 Min. einfach mit einem Verbindungsfehler ab. Selbst nach Rücksprache mit den entsprechenden Wago-Fachleuten war kein Fehler in Programm oder Firmware zu finden. Ich habe dann einfach mal einen anderen Port an unserem Switch probiert und, siehe da, es funktionierte einwandfrei. Ich hatte dann jedoch nicht mehr die Zeit den Fehler am Switch näher zu untersuchen....

    Eine weitere Möglichkeit wäre das Zusammenspiel von .NET mit der DLL. Ich habe Unterschiede festgestellt, wenn ich auf die Originale Wrapper-DLL (libnodave.net.dll) nur verweise oder aber wenn ich den Quellcode direkt in mein .NET-Projekt mit einbinde. Das Verhalten beim Reconnect im Zusammenhang mit I/O-Bytes ist ein anderes.
    Wenn die Klügeren immer nachgeben, geschieht nur das, was die Dummen wollen

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Dann werde ich mir das bei Gelegenheit nochmal anschauen.

    Gruß Key

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 09.09.2010, 00:27
  2. Was mach ich, wenn HW nicht im HW Katalog?
    Von detoto im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 17.12.2009, 12:53
  3. Wenn mal die SPS nicht funktioniert.....
    Von mariob im Forum Stammtisch
    Antworten: 8
    Letzter Beitrag: 12.12.2009, 22:25
  4. Wenn ich alt bin und nicht mehr kann, werde ich:
    Von Lebenslang im Forum Stammtisch
    Antworten: 16
    Letzter Beitrag: 02.09.2008, 16:12
  5. Antworten: 0
    Letzter Beitrag: 23.05.2006, 10:56

Lesezeichen

Berechtigungen

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