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

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

Thema: Libnodave und S7Online

  1. #1
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich teste gerade Libnodave (V0.8.2) mit der S7Online-Schnittstelle.
    Ich kann einmal die Verbindung herstellen, Daten auslesen, das beliebig lange.
    Nach einem Beenden der Verbindung (z.Bsp. STOP beim Delphi-Testprogramm).
    Kann die Verbindung nicht noch einmal hergestellt werden. Erst wenn man das Programm komplett beendet und neu startet geht es wieder (für 1 Mal).
    Hat jemand Ähnliches auch schon festgestellt? Die Delphi-Demo aus Libnodave wird nach einem 2. gescheiterten Startversuch bei einem Beenden, mit einer Schutzrechtsverletzung geschlossen. Ich habe den Eindruck, daß es mit der Verknüpfung zwischen der Libnodave-DLL und dem Simatic-Progamm zu tun hat. Irgendein Funktionsaufruf (o.ä.), wird nicht richtig abgeschlossen.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal
    Zitieren Zitieren Libnodave und S7Online  

  2. #2
    Registriert seit
    19.09.2005
    Ort
    Freudenstadt
    Beiträge
    811
    Danke
    64
    Erhielt 101 Danke für 64 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Ich habe den Eindruck, daß es mit der Verknüpfung zwischen der Libnodave-DLL und dem Simatic-Progamm zu tun hat. Irgendein Funktionsaufruf (o.ä.), wird nicht richtig abgeschlossen.
    Das kann durchaus auch an meiner Delphi-Komponente liegen. Ich habe die Funktionen für das S7Online-Protokoll in der Komponente implementiert, da war das Protokoll in libnodave noch im Teststadium (ich glaube, damals waren wir über das libnodave-Forum in Kontakt ?), und seither hab ich nichts mehr daran gemacht, da ich das Protokoll selbst nicht verwende. Falls Zottel danach noch was an dem Protokoll in libnodave geändert hat, muß meine Komponente evtl. noch angepaßt werden, aber darüber habe ich im Moment zumindest keine Infos.

    Hat hier jemand Erfahrungen, ob das beschriebene Problem beim Protokoll S7Online auch in Verbindung mit anderen Programmiersprachen existiert ?


    Gruß Axel
    Man muß sparn wo mn knn!

  3. #3
    Avatar von Ralle
    Ralle ist offline Super-Moderator
    Themenstarter
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Hallo Axel,

    in meinem Programm nutze ich nicht deine Komponente, sondern hab ein paar Funktionen davon genutzt beziehungsweise auch abgewandelt . Das liegt daran, daß ich auch noch den Weg über Prodave implementiert habe, bzw. libnodave dazugebaut habe. Hat mir sicher viel Zeit gespart, danke nochmal, für deine gute Komponente. Mein Programm bringt zwar keine Schutzrechtsverletzung, ansonsten zeigt es aber gleiches Verhalten, ein zweiter Verbindungsufbau geht nicht. Meldung meistens -124. S7Online scheint problematisch zu sein, man kann auch nur mit einer Steuerung Verbindung aufnehmen, eine zweite zeigt dann die Werte der Ersten an. Ich muß nochmal testen, ob es auch davon abhängt, welchen Weg man man mit S7Online nutzt (CP5512, USB via Teleservice II). Was Siemens zwischendurch ändert weiß auch niemand. Interessant ist übrigens, daß bei Prodave Mini (V4) nur die DLL installiert werden muß, wenn Step7 auf dem PC zu Hause ist, schon läuft die Verbindung und das absolut problemlos. Muß also irgenwie gehen. Ich hab auch schon, daß ich die Verbindung beenden und problemlos mit Libnodave wieder aufbauen konnte. Ein Schema hab ich dabei noch nicht erkannt. Was ganz böse endet, ist ein Ziehen des Kabels während eine S7-Verbindung mit S7Online und libnodave steht. Dann kann danach selbst der Simatic-Manager keiner Verbindung mehr herstellen, da hilft nut die CP5512 zu entfernen. Ich kann libnodave halt nicht mit einem seriellen oder USB-Adapter nutzen, da ich keinen hab . Was bisher völlig problemlos ging, war Ethernet und libnodave mit einer 319.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  4. #4
    Registriert seit
    09.05.2006
    Beiträge
    93
    Danke
    19
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Hallo!
    Dieses Problem, dass man die Verbindung nicht nochmals aufbauen kann,
    habe ich bereits vor längerem berichtet.

    http://www.esatex.com/SPS-Forum/show...ight=libnodave

    Ich habe mit eine Krücke gebaut, indem ich die Verbindung und das Ausslesen
    der Daten in einem eigenem Process starte.
    Schön wäre natürlich wenn ich das nicht machen müsste und alles in einem
    Thread laufen lassen könnte.

    Servus

    Vbxler

  5. #5
    Avatar von Ralle
    Ralle ist offline Super-Moderator
    Themenstarter
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    MIt TCP und einer Delphi-Applikation hatte ich keinerlei Probleme, S7Online scheint das Problemkind zu sein.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  6. #6
    Avatar von Ralle
    Ralle ist offline Super-Moderator
    Themenstarter
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    So geht es wieder: closeport statt closeS7online

    closePort(DaveInterface.Remote[I].DaveFDS.rfd);
    // closeS7online(DaveInterface.Remote[I].DaveFDS.rfd);

    Das werd ich morgen nochmal vertiefen .
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  7. #7
    Registriert seit
    19.09.2005
    Ort
    Freudenstadt
    Beiträge
    811
    Danke
    64
    Erhielt 101 Danke für 64 Beiträge

    Idee

    Zitat Zitat von Ralle Beitrag anzeigen
    So geht es wieder: closeport statt closeS7online

    closePort(DaveInterface.Remote[I].DaveFDS.rfd);
    // closeS7online(DaveInterface.Remote[I].DaveFDS.rfd);

    Das werd ich morgen nochmal vertiefen .
    Heißt das, du rufst openS7online auf, kommuniziert mit der SPS, und beendest die Verbindung jetzt mit closePort statt mit closeS7online, und dann funktioniert es ohne Probleme ?

    Dann lass uns das doch mal vertiefen, denn ich glaub noch nicht, daß das die Lösung ist. Ich hab mal in den libnodave-Quellen nachgeschaut, und wundere mich jetzt ein wenig.

    Die Funktion closePort hat in den Quellen mit der Funktion openS7online gar nichts zu tun, demnach sollte es die gleiche Wirkung haben, wenn Du closePort auch weglässt, probier das doch mal aus. Wenn dem so ist, dann liegt das Problem wohl tatsächlich am Aufruf von closeS7Online, aber durch das Weglassen dieses Aufrufs werden vermutlich in der S7onlinx.dll mit jedem Aufruf von openS7online Resourcen belegt, die dann nicht mehr freigegeben werden (Speicherfresser !?).

    Im Siemens-Handbuch zur FDL-Programmierschnittstelle habe ich den Hinweis gelesen, das unter Windows nach dem Öffnen der Schnittstelle die Routine SetSinecHWnd mit einem Fenster-Handle aufgerufen werden muß. Diese Funktion findet sich auch in der S7Onlinx.dll, wird von libnodave aber nicht aufgerufen.

    Ich hab das mal abgeändert, kann das bei mir aber im Moment nicht ausprobieren. Schick mir mal 'ne Mail (an die Adresse in der Quelle der Delphi-Komponente), dann schicke ich Dir die dll zum Testen zu.


    Gruß Axel
    Man muß sparn wo mn knn!
    Zitieren Zitieren Ich hab da 'ne Idee ...  

  8. #8
    Avatar von Ralle
    Ralle ist offline Super-Moderator
    Themenstarter
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Genau so ist es, ohne closeport geht es auch, aber die rfd "DaveInterface.Remote[I].DaveFDS.rfd" wird mit jedem Start/Stop hochgezählt. Irgenwann kommt dann wahrscheinlich der Absturz .

    Mail kommt, Danke.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  9. #9
    Registriert seit
    08.01.2007
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Unglücklich

    Nun habe ich versucht alle Beiträge zum Thema "Verbindungsprobleme" zwischen libnodave und der entsprechenden Schnittstelle (IBH, S7 ...) zu lesen und habe hier noch keine wirklich richtige Lösung, die zur Behebung des Problemes beiträgt, gefunden.
    Ich selber versuche gerade unter VC++ mit einem IBH-NetLink mich an eine S7-315 zu hängen und von dort Daten auszulesen (die Verbindung klappt!). Da ich diese Prozedur als DLL für ein anderes Programm zur Verfügung stellen will (Grund ist die einzig mögliche Programmierschnittstelle des Progs), passiert mir genau das, wass auch Vbxler aus dem Tritt gebracht hatte (siehe http://www.esatex.com/SPS-Forum/show...ight=libnodave ) und jetzt so auch in ähnlicher Form hier von Ralle berichtet wird:
    Der geöffnete PORT, den ich mittels
    fds.rfd=openSocket(1099, "172.20.48.170")
    aufrufe, bleibt auch nach dem Disconnect offen. Sollte ich die Prozedur nun mehrmals aufrufen, werden weitere PORTs auf meinem PC geöffnet... Bis nichts mehr geht - d.h. ich bekomme keine Verbindung mehr zum NetLink (mehr als 2 offne Verbindungen werden von dem Teil nicht verkraftet) .
    Schliesse ich nun das Hauptprogramm (dass auf die DLL-Zugriffe ausführt) werden auch die PORTs geschlossen...

    Wie nun weiter ?

    So wie Vbxler kann ich leider nicht verfahren...

    (Anbei ein Screenshot meiner Firewall und der PORTs auf NetLink

    Gruss Marco
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren Status libnodave  

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    openSocket() öffnet eine TCP/IP Verbindung zum IBHLink
    daveConnectPLC() weist den IBHLink an, eine (MPI-)Verbindung mit einer bestimmten MPI-Adresse aufzubauen.
    daveDisconnectPLC(dc) weist den IBHLink an, die durch dc referenzierte (MPI-)Verbindung abzubauen. Die TCP/IP Verbindung zum IBHLink bleibt natürlich bestehen.
    close (fd.rfd) schließt die TCP/IP Verbindung zum IBHLink.
    close() sollte einfach das close aus winsock.dll sein. Oder heißt das da anders? Oder konnte man das aus VB nicht aufrufen? Aus so einem ähnlichen Grund habe ich, glaube ich, mal eine daveClose() Funktion hinzugefügt?

Ähnliche Themen

  1. libnodave S7Online mir .Net
    Von eloboy im Forum Hochsprachen - OPC
    Antworten: 14
    Letzter Beitrag: 31.08.2011, 01:57
  2. Libnodave und S7online
    Von adi im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 05.01.2011, 16:31
  3. Libnodave mit VBA und S7Online
    Von Watchdog im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 02.06.2010, 09:45
  4. LibNoDave + S7Online
    Von Lazarus™ im Forum Hochsprachen - OPC
    Antworten: 14
    Letzter Beitrag: 05.05.2009, 19:56
  5. LibNoDave - S7Online - TCP/IP
    Von Jochen Kühner im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 09.03.2009, 12:33

Lesezeichen

Berechtigungen

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