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

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

Thema: libnodave Begriffserklärungen rund um PLC - Verbindungen

  1. #1
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    weiß jemand was folgende begriffe bedeuten und bewirken bzw. wo ich es nachlesen kann ?

    Code:
    libnodave.closeSocket(fds.rfd);
    
    dc.disconnectPLC();
    
    di.disconnectAdapter();
    
    libnodave.closePort(fds.rfd)
    
    libnodave.closeS7online(fds.rfd)
    Zitieren Zitieren libnodave Begriffserklärungen rund um PLC - Verbindungen  

  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

    Für eine Erklärung solltest du dich mal intensiver mit den Dateien beschäftigen, die du mit Libnodave heruntergeladen hast.

    Ich verwende Libnodave nur mit TCP-Verbindungen, deshalb kann ich nicht auf die Serielen Verbindungen bzw. S7Online eingehen, aber ich versuche es mal:

    Grundsätzlich werden alle genannten Befehle zum beenden einer Verbindung zur Steuerung benötigt und je nach verwendeter Verbindung müssen diese kombiniert werden.
    Code:
    libnodave.closeSocket(fds.rfd);
    Schliesst einen geöffneten Netzwerk Socket und ist nur nötig wenn du deine Verbindung zur Steuerung über TCP betreiben möchtest.
    Code:
    dc.disconnectPLC();
    Beendet eine über "connectPLC" aufgebaute Verbindung
    Code:
    di.disconnectAdapter();
    Schliesst den Adapter. Soweit ich weis ist der bei TCP Verbindungen nicht nötig, soll aber trotzdem verwendet werden.
    Code:
    libnodave.closePort(fds.rfd)

    Schliesst den geöffneten Port bei Seriellen Verbindungen.
    Code:
    libnodave.closeS7online(fds.rfd)
    Beendet die Verbindung zur Siemenseigenen Schnittstelle(hab ich noch nie verwendet)

    Bei TCP-Verbindungen müsste ein Verbindungsabbau in etwa in dieser Reihenfolge passieren:
    Code:
    dc.disconnectPLC();
    di.disconnectAdapter();
    libnodave.closeSocket(fds.rfd);
    

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

  3. Folgender Benutzer sagt Danke zu MW für den nützlichen Beitrag:

    Limette (26.02.2013)

  4. #3
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von MW Beitrag anzeigen

    Bei TCP-Verbindungen müsste ein Verbindungsabbau in etwa in dieser Reihenfolge passieren:
    Code:
    dc.disconnectPLC();
    di.disconnectAdapter();
    libnodave.closeSocket(fds.rfd);
    

    danke, werde es morgen gleich mal so ausprobieren. Wusste nicht dass man sie kombinieren muss. gibt es dazu irgendwo beispiele ? finde diesbezüglich recht wenig.

  5. #4
    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 Limette Beitrag anzeigen
    gibt es dazu irgendwo beispiele ? finde diesbezüglich recht wenig.
    Es sind einige Beispiele beim Download vo Libnodave dabei, z.B. müsste es dort einen Ordner namens "Dot.Net" geben in dem Beispiele für VB.net und C# drin sind.
    Dort ist dan auch die Grundlegende Reihenfolge zum Auf- und Abbau einer Verbindung ersichtlich.
    Es ist nicht schwierig, mit noch nicht erreichten Zielen zu Leben; schwierig ist, ohne Ziele zu Leben !
    (Günther Kraftschik)

  6. #5
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Code:
      dc.disconnectPLC();
    } 
    di.disconnectAdapter();
    libnodave.closeS7online(fds.rfd);
    GC.Collect();
    GC.WaitForPendingFinalizers();
    Console.WriteLine("Here we are");
    } else {
    Console.WriteLine("Couldn't open s7 online "+args[adrPos]);
    return -1;
    }
    return 0; 
    }
    }
     
    
    Ist ein Auszug aus der C# Datei "testS7online".
    Ich habe Befehle
    Code:
    dc.disconnectPLC();
    di.disconnectAdapter();
    libnodave.closeS7online(fds.rfd);
    mir ausgepickt und versucht damit eine Verbindung zu beenden. Aber es wird nur eine Exception geworfen.
    Was muss ich noch beachten ? das Aufrufen der Befehle alleine scheint wohl nicht zu reichen.

  7. #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

    Und wurde die entsprechenden "Gegenbefehle" (connect zu disconnect) auch davor ausgeführt oder nur diese Funktionen aufgerufen? Wie war z.B. die fds-Struktur initialisiert? Welche Funktion löst die Exception aus? Was sagt die Exception? Was sagt der Debugger?
    Rainer Hönle
    DELTA LOGIC GmbH

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

  8. #7
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von Rainer Hönle Beitrag anzeigen
    Und wurde die entsprechenden "Gegenbefehle" (connect zu disconnect) auch davor ausgeführt oder nur diese Funktionen aufgerufen? Wie war z.B. die fds-Struktur initialisiert? Welche Funktion löst die Exception aus? Was sagt die Exception? Was sagt der Debugger?
    Hallo Rainer,

    ich verstehe nicht ganz was sie mit "Gegenbefehle" meinen. Ich habe nur diese Funktionen ausgeführt.

    fds-Struktur initialisiert?
    Code:
    libnodave.daveOSserialType fds;
    libnodave.daveInterface di;
    libnodave.daveConnection dc;
    int rack = 0;
    int slot = 2;
    
    gleich beim ersten bleibt es hängen:
    Code:
    dc.disconnectPLC();
    hab es noch nicht mitgelogt was die Exception sagt, werde es aber noch machen.

  9. #8
    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

    Ein disconnect ohne connect macht keinen Sinn, denn der disconnect ist der Gegenbefehl zu connect. Ich kann eine Tür erst zu machen, wenn ich sie vorher geöffnet habe.
    Welche Funktion löst die Exception aus?
    Was sagt der Debugger?
    Rainer Hönle
    DELTA LOGIC GmbH

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

  10. #9
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von Rainer Hönle Beitrag anzeigen
    Ein disconnect ohne connect macht keinen Sinn, denn der disconnect ist der Gegenbefehl zu connect. Ich kann eine Tür erst zu machen, wenn ich sie vorher geöffnet habe.
    Welche Funktion löst die Exception aus?
    Was sagt der Debugger?
    nein nein, die Verbindung wird schon mit dc.connectPLC aufgebaut.
    die Exception sagt:
    Exception --> Nr. System.NullReferenceException: Object reference not set to an instance of an object.

    Weiß nicht wie man hier den debugger anwendet.

    Gruß und Dank.

    

  11. #10
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.293
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Um welche S7 handelt es sich denn? Kommt überhaupt eine Verbindung zustande?

    Das ist zwar jetzt ne andere Sprache, aber so sieht meine DisconnectFunktion aus. Ist aber halt TCP.
    Code:
    Func _LibNoDave_TCPDisconnect(ByRef $_iSocket, ByRef $_hInterface, ByRef $_hConnection)
        If $_hConnection Then
            _LibNoDave_DisconnectPLC($_hConnection)
            _LibNoDave_Free($_hConnection)
        EndIf
        If $_hInterface Then
            _LibNoDave_DisconnectAdapter($_hInterface)
            _LibNoDave_Free($_hInterface)
        EndIf
        If $_iSocket Then _LibNoDave_CloseSocket($_iSocket)
        Return True
    EndFunc
    Und das ist die daveFree zum bereinigen:
    Code:
    Func _LibNoDave_Free($_pConnection)
        DllCall($__ghLNDDll, "none", "daveFree", "ptr", $_pConnection)
        If @error Then Return SetError(@error, 0, False)
        Return True
    EndFunc
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

Ähnliche Themen

  1. FAQ: alles rund um TwinCAT 2
    Von Chräshe im Forum CODESYS und IEC61131
    Antworten: 12
    Letzter Beitrag: 16.12.2013, 22:45
  2. Libnodave Verbindungen zu mehrereren S7-CPUs
    Von Machtnix im Forum Hochsprachen - OPC
    Antworten: 9
    Letzter Beitrag: 26.09.2013, 13:38
  3. C# & Libnodave Siemens PLC
    Von mrludvig im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 09.11.2012, 13:34
  4. libnodave mit mehreren Verbindungen
    Von Koma im Forum Hochsprachen - OPC
    Antworten: 0
    Letzter Beitrag: 22.02.2010, 11:19
  5. Libnodave - PLC memory areas - S7 200
    Von lan12 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 13.12.2008, 21:27

Lesezeichen

Berechtigungen

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