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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: WinCC Verbindungsprobleme Libnodave

  1. #11
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.181
    Danke
    923
    Erhielt 3.289 Danke für 2.658 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Jennsy Beitrag anzeigen
    irgendwie scheint das bei mir nicht so ganz zu funktionieren
    Beim Aufbauen und Abbauen der LibNoDave-Verbindung muß die Reihenfolge der Aktionen genau eingehalten werden! Dein Code Button3../Button4.. sieht für mich ziemlich unplanmäßig aus ... Außerdem vermisse ich das closeSocket(...) - ich bin nicht sicher, doch ich meine, erst dann wird die Verbindungsressource auf der CPU wieder freigegeben. Ohne das closeSocket gehen Dir aber auf jeden Fall irgendwann die Verbindungsressourcen auf dem PC aus.

    Wenn Du feststellst, daß die Verbindung zur CPU nicht mehr funktioniert, dann baue die Verbindungsressourcen komplett ab (inklusive closeSocket(...)!) und verbinde komplett neu.
    Besser: halte die Verbindung nur kurzzeitig, nur solange Du sie tatsächlich brauchst.

    Hier nochmal schematisch die korrekte Reihenfolge. Siehe auch die Beiträge #8 und #6
    Code:
    ph = 0: di = 0: dc = 0
    
    //Reihenfolge Verbindungsaufbau
    ph = openSocket(...)
    If ph > 0 Then
        di = daveNewInterface(ph, ...)
        res = daveInitAdapter(di)
        If res = 0 Then
            dc = daveNewConnection(di, ...)
            res = daveConnectPLC(dc)
            If res = 0 Then ' Verbindung zu PLC erfolgreich aufgebaut
                ' tu was produktives ...
            End If
        End If
    End If
    
    //Reihenfolge Verbindungsabbau
    If dc <> 0 Then
        res = daveDisconnectPLC(dc)
        Call daveFree(dc)
        dc = 0
    End If
    If di <> 0 Then
        res = daveDisconnectAdapter(di)
        Call daveFree(di)
        di = 0
    End If
    If ph <> 0 Then
        res = closePort(ph)
        res = closeSocket(ph)
        ph = 0
    End If
    PS:
    Ich meine, das di.setTimeout(1000000) kann man weglassen, das hat bei ISO-on-TCP keinen Effekt.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  2. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Jennsy (10.10.2013)

  3. #12
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Hast du denn schonmal geprüft wie sich dein .Net Control überhaupt verhält wenn z.B. das Bild gewechselt wird?
    Wird dann der Destruktor aufgerufen, oder bleibt das Objekt bestehen und wenn das Bild neu aufgerufen wird, dann wird ein neues erzeugt?

    Das alles musst du in deinem Control behandeln. Also im Destruktor auf jeden Fall die Verbindung trennen und alle Ressourcen freigeben (kann ja sein dass der Bediener das Bild wechselt obwohl noch eine Abfrage läuft), anonsten kann der Garbage Collector den Speicher nicht wieder freigeben.

    Mir ist das Erstellen von eigenen Controls bei WinCC zu spärlich beschrieben. Du kannst die Kommunikation mit libnodave auch direkt in WinCC C-Skript schreiben, siehe hier:
    Libnodave mit Wincc 7.0

  4. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    Jennsy (10.10.2013)

  5. #13
    Jennsy ist offline Benutzer
    Themenstarter
    Registriert seit
    13.05.2013
    Beiträge
    81
    Danke
    29
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo,
    @ducati
    Bin natürlich für jederlei Anmerkungen (auch Kritik) dankbar. Jedoch ist es so, dass wir vorher schon mit einem ActiveX (Delphi) gearbeitet haben, und meine Aufgabe war es, dieses Control zu erneuern, und ich habe dafür diese Möglichkeit gewählt, da sie am ehesten zu den alten Erfordernissen herankommt, bzw. auch neue Möglichkeiten bietet.

    @PN/DP und Thomas_v2.1
    Dankeschön für eure Hilfe!!
    Ich habe es jetzt mal so gelöst, dass ich die Verbindungen beim Unload der Form schließe. (was, wenn ich es mit netstat verfolge, so auch zu funktionieren scheint...)

    Code:
    Private Sub UserControl1_Unload(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.HandleDestroyed
            dc.disconnectPLC()
            libnodave.closePort(fds.rfd)
            libnodave.closePort(fds.wfd)
            libnodave.closeSocket(102)
            di.disconnectAdapter()
            End Sub
    mfG Jenny
    Geändert von Jennsy (11.10.2013 um 08:18 Uhr)

  6. #14
    Registriert seit
    25.02.2010
    Beiträge
    618
    Danke
    35
    Erhielt 121 Danke für 110 Beiträge

    Standard

    Hallo
    Bin durch Zufall auf den alten Thread gestossen.
    @Jennsy
    Bedenke bitte, dass es das Ereigniss "HandleDestroyed" erst ab .Net 3,5 SP1 vollständig unterstützt wird.

    Plattform
    ", , Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)"

    Ich habe bei .Net schon öfter bei einer Inbetriebnahme Updates machen müssen, weil bestimmte Eigenschaften nicht funktionierten.
    Grüsse Holger

  7. #15
    Jennsy ist offline Benutzer
    Themenstarter
    Registriert seit
    13.05.2013
    Beiträge
    81
    Danke
    29
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @holgermaik

    Vielen Dank für die Info! Ich verwende .Net 3.5 , denn neuere Versionen sind (zumindest mal unter WinCC V7.0 ) nicht unterstützt worden.
    Habs jetzt auch auf Win7 /Windows Server 2008 R2 mit WinCC 7.2 ausprobiert und es wird ebenfalls noch alles unterstützt, aber für zukünftige Anwendungsfälle ist das sicherlich zu klären, was womit noch kompatibel ist, damit auch alle Funktionen weiterhin zur Verfügung stehen.

    mfG Jenny

Ähnliche Themen

  1. WinCC Verbindungsprobleme
    Von Jennsy im Forum HMI
    Antworten: 1
    Letzter Beitrag: 30.07.2013, 07:53
  2. Libnodave<->S7 Verbindungsprobleme
    Von Magoo50 im Forum Hochsprachen - OPC
    Antworten: 8
    Letzter Beitrag: 04.04.2011, 18:42
  3. Verbindungsprobleme Libnodave SPS
    Von Peter1234 im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 24.11.2010, 13:11
  4. Antworten: 3
    Letzter Beitrag: 07.06.2010, 15:39
  5. TP177A Verbindungsprobleme
    Von PhGruber im Forum HMI
    Antworten: 9
    Letzter Beitrag: 24.03.2010, 15:26

Lesezeichen

Berechtigungen

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