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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Verbindungsprobleme Libnodave SPS

  1. #1
    Registriert seit
    23.11.2010
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!

    Ich habe eine SPS S7-1200. Und kann erfolgreich mit libnodave werte auslesen oder schreiben.
    Mein Programm pollt alle 30 sec, die SPS und holt sich Messwerte. Soweit so gut.
    Hin und wieder ( 1x Mal am Tag mindestens scheint sich was zu verhängen auf der SPS und ich kann keine Werte mehr holen.

    Mein Code zum Verbinden:

    fds.rfd = libnodave.openSocket(102, this.IP);
    fds.wfd = fds.rfd;
    if (fds.rfd > 0)
    {
    di = new libnodave.daveInterface(fds, "IF1", 0, libnodave.daveProtoISOTCP, libnodave.daveSpeed187k);
    di.setTimeout(100000000);
    dc = new libnodave.daveConnection(di, 0, rack, slot);
    int connResult = dc.connectPLC();
    if (0 ==connResult)
    {

    ConnResult ist in diesem Fehlerfall dann -1 und sollte ich da trotzdem einen Leseversuch starten, bekomme ich den Fehler, Es wurde versucht einen geschützten Speicherbereich zu lesen oder so ähnlich. Ich glaube aber das das nur ein folge der defekten Verbindung ist.
    Dieses Problem verschwindet erst wieder wenn ich die SPS komplett Stromlos schalte und dann neu starte. Step7 kann aber während dieser Phase immer daten Lesen.

    Hat Irgendeiner von euch SPS / Libnodave Profis eine Idee?

    wünsche noch einen Guten Abend

    Peter
    Zitieren Zitieren Verbindungsprobleme Libnodave SPS  

  2. #2
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Beitrag

    Hallo,

    Zitat Zitat von Peter1234
    scheint sich was zu verhängen auf der SPS und ich kann keine Werte mehr holen.
    Zitat Zitat von Peter1234
    Step7 kann aber während dieser Phase immer daten Lesen.
    Daraus folgt, das sich nichts auf der SPS verhakt, sondern eher in Deiner Applikation. Mal eine Frage : Öffnest Du zu jedem Lesen die Verbindung und schließt die anschließend wieder ?

    Zitat Zitat von Peter1234
    ConnResult ist in diesem Fehlerfall dann -1 und sollte ich da trotzdem einen Leseversuch starten, bekomme ich den Fehler
    Und genau deshalb musst Du in Deiner Applikation verhindern, bei einer nicht bestehenden Verbindung (und das ist die Aussage ConnResult = -1), noch weitere Lese/Schreibaufträge zu starten, Du schreibst dann in nicht initiierte Speicherbereiche Deiner Applikation.
    Und das mit dem Wert für den Timeout solltest Du Dir auch nochmal überlegen

    Gruß

    Question_mark
    ''Ich habe wirklich keine Vorurteile.
    Meine Meinung ist nur die Summe der Erfahrungen" ... (Question_mark)
    Zitieren Zitieren ...  

  3. #3
    Peter1234 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    23.11.2010
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja ich baue die Verbindung jedesmal neu auf und wieder ab. Mein Verdacht lag auch zuerst mal bei meinem Programm, aber die SPS nimmt auch keine Libnodave verbindungen mehr von einem anderen PC und anderen Programm mehr an.

    Das das Timeout zu hoch ist, ist mir klar aber bei 1 Sek war es das selbe, das scheint es nicht zu sein.

  4. #4
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Lächeln

    Hallo,

    Zitat Zitat von Peter1234
    Ja ich baue die Verbindung jedesmal neu auf und wieder ab.
    Das habe ich auch schon befürchtet

    Es gibt keinen vernünftigen Grund, die Verbindung für jeden Schreib/Lesezugriff aufzubauen und danach wieder zu schließen. Sowas ist absoluter Unfug. Baue beim Start Deiner Applikation die Verbindung auf und schließe die Verbindung erst beim Beenden Deiner Applikation. Und wenn Deine Applikation ein paar Jahre durchläuft, dann bleibt auch die Verbindung ein paar Jahre bestehen. Und so soll es auch sein, jedenfalls wenn man ein Grundverständnis für den Begriff "Verbindung" hat.

    Zitat Zitat von Peter1234
    aber die SPS nimmt auch keine Libnodave verbindungen mehr von einem anderen PC und anderen Programm mehr an.
    Wie ich schon im vorigen Beitrag geschrieben habe, liegt das nicht an der SPS sondern an LibNoDave oder eher wahrscheinlich an Deiner Applikation.

    Gruß

    Question_mark
    ''Ich habe wirklich keine Vorurteile.
    Meine Meinung ist nur die Summe der Erfahrungen" ... (Question_mark)
    Zitieren Zitieren Grundlagen ...  

  5. #5
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Beitrag

    Hallo,

    Zitat Zitat von Peter1234
    Das das Timeout zu hoch ist, ist mir klar aber bei 1 Sek war es das selbe, das scheint es nicht zu sein.
    Eine Sekunde ist auch Unsinn und kann im Ethernet nicht funktionieren. Bis das OS im PC die Ressourcen für diese Verbindung freigegeben hat und mit der gleichen Verbindung wieder belegt werden kann, vergehen einige Sekunden. Stelle den Timeout auf 10 sec. ein, das ist ein guter Wert.
    Es gibt zwar Wege, diese Ressourcen direkt wieder verfügbar zu machen, aber damit will ich Dich jetzt nicht belästigen.

    Gruß

    Question_mark
    Geändert von Question_mark (24.11.2010 um 01:43 Uhr)
    ''Ich habe wirklich keine Vorurteile.
    Meine Meinung ist nur die Summe der Erfahrungen" ... (Question_mark)
    Zitieren Zitieren Also an dem Timeout musst Du noch arbeiten  

  6. #6
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Beitrag

    Hallo,

    Zitat Zitat von =Peter1234
    di = new libnodave.daveInterface(fds, "IF1", 0, libnodave.daveProtoISOTCP, libnodave.daveSpeed187k);
    Ich kenne jetzt die LibNoDave nicht exakt im Detail, aber mir springt da nur ins Auge : Protokoll = ISOTCP, aber Speed = 187k (also MPI) ?

    Vielleicht gibt es dafür eine vernünftige Erklärung, da ich mich nicht wirklich intensiv mit LibNoDave beschäftigt habe (das Ding ist mir zu unhandlich, das könnte man alles anwenderfreundlicher machen, aber Ok, ist eben für Umme) fällt mir nur so auf den ersten Blick dieser Widerspruch auf. Vielleicht kann uns der Zottel den Zusammenhang etwas besser erklären.

    Gruß

    Question_mark
    ''Ich habe wirklich keine Vorurteile.
    Meine Meinung ist nur die Summe der Erfahrungen" ... (Question_mark)
    Zitieren Zitieren Was mir da noch so auffällt  

  7. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.192
    Danke
    925
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Zitat Zitat von Question_mark Beitrag anzeigen
    mir springt da nur ins Auge : Protokoll = ISOTCP, aber Speed = 187k (also MPI) ?
    [...]
    Vielleicht kann uns der Zottel den Zusammenhang etwas besser erklären.
    Bei daveProtoISOTCP wird der letzte Parameter daveSpeed187k natürlich nicht benötigt. Es ist tatsächlich egal, was man da einsetzt.
    Damit es nicht für jedes Protokoll eine andere daveInterface() gibt, hat Zottel das eben so gelöst, daß daveInterface() immer mit
    5 Parametern aufgerufen wird, egal ob benötigt oder nicht.
    Auf diese Art läßt sich das eigene Programm ohne große Änderungen am Quelltext schnell auf andere Protokolle und Verbindungswege
    umstellen. Ich meine, das hat Zottel auch schon mal irgendwo hier im Forum geschrieben.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #8
    Peter1234 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    23.11.2010
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Guten Morgen!

    Ich hab mein Programm grad umgebaut und warte jetzt mal ob das wieder auftritt, was ich befürchte.
    Falls es das mit dem permantenten Verbinden nicht ist, hier noch einige Zusatzinformationen.
    Der Fehler tritt unter linux und auch unter Windows auf. Mein Programm kommuniziert mit mehreren SPSen über LAN oder VPN. Damit bei einem Crash in Libnodave (unmanaged Code) nicht auch mein Programm in c# mitstirbt (trotz try catch) habe ich den Libnodave code in ein eigenes Programm ausgelagert welches regelmäßig angestoßen wird. und Daten von nur einer SPS holt. Es besteht immer nur eine Verbindung mit einer SPS.

    Kann das sein das das mit mehreren Spsen gleichzeitig ein Problem ist?

    Das mit der Speedeinstellung habe ich auch schon so irgendwo gelesen.

    Ein Workaround, der mir aber nicht gefällt wäre es die SPS von Remote zu booten, oder mit einer Art Watchdog zuversehen ( 5 min kein Rücksetzen eines Wertes => reboot).

    Gruß Peter

  9. #9
    Registriert seit
    01.08.2005
    Beiträge
    149
    Danke
    0
    Erhielt 20 Danke für 19 Beiträge

    Standard

    Was zeigen denn die Verbindungsresourcen deiner CPU an wenn Libnodave keine Verbindung mehr aufbauen kann?

    Ich denke fasst dass die Verbindungsresourcen deiner CPU erschöpft sind da evtl. eine Verbindung nach einem Hängen deiner Anwendung nicht mehr frei gegeben wird.

    Step7 geht dann immer, da eine Verbindung immer für das PG frei gehalten wird.

  10. #10
    Peter1234 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    23.11.2010
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi

    Das hört sich sehr nach meinem Problem an. Ich mache zwar Serverseitig die Verbindungen auch wieder zu, aber bei einem Crash, bleibt da vielleicht was zurrück. Ich hatte gestern vor dem Ausfall 4 -6 Solche Verbindungsunterbrechungen laut meinem Log.

    Wo im Step 7 finde ich das? Und gibt es eine möglichkeit diese Ressourcen aus dem SPS Programm her wieder freizugeben, damit das automatisch geht?

    Grüße Peter

Ähnliche Themen

  1. Libnodave<->S7 Verbindungsprobleme
    Von Magoo50 im Forum Hochsprachen - OPC
    Antworten: 8
    Letzter Beitrag: 04.04.2011, 18:42
  2. S7-1200 Verbindungsprobleme
    Von Anger im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 09.09.2010, 18:48
  3. TP177A Verbindungsprobleme
    Von PhGruber im Forum HMI
    Antworten: 9
    Letzter Beitrag: 24.03.2010, 15:26
  4. OP3 Verbindungsprobleme
    Von st.sch. im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 16.05.2009, 23:25
  5. Verbindungsprobleme S7 200 PG
    Von INST im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 17.03.2009, 08:32

Lesezeichen

Berechtigungen

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