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

Ergebnis 1 bis 5 von 5

Thema: libnodave Reconnect Problem

  1. #1
    Registriert seit
    30.05.2011
    Beiträge
    13
    Danke
    1
    Erhielt 6 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo liebe Community,

    ich beschäftige mich seit einiger Zeit mit der libnodave-Bibliothek und habe sie nun für meine Studienarbeit über JNI in Java eingebunden.
    Vorrangig ist hier die Nutzung der MPI-Schnittstelle, wo auch mein Problem besteht.

    Zwar ist es mir möglich die Bibliothek zu initialisieren und auch Daten zu erfassen, jedoch habe ich das Problem, dass kein reconnect mehr möglich ist, wenn die Verbindung unterbrochen wurde.
    Eine erneute Verbindung kann erst aufgebaut werden, wenn das ausführende Java-Programm neu gestartet wurde.

    Um sicher zu stellen, dass es nicht an meiner Java-Implementierung liegt habe ich versucht das ganze mit einem Programm in C zu realisieren, wo jedoch der gleiche Fehler wieder auftritt, sogar wenn ich einen Disconnect mit "davefree" & "daveDiscconect*" mache. Sobald ein Disconnect durchgeführt wurde lässt sich keine neue Verbindung aufbauen, erst nach einem Neustart des Programms.

    Ich hoffe, ihr könnt mir helfen. Ich bin für jede Hilfe sehr dankbar!

    MfG fLaVa
    Zitieren Zitieren libnodave Reconnect Problem  

  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

    kannst du mal einen Codeausschnitt von deinem Programm hier reinstellen ?
    (von interesse ist da der Code vom Verbindungsaufbau und abbau)
    Es ist nicht schwierig, mit noch nicht erreichten Zielen zu Leben; schwierig ist, ohne Ziele zu Leben !
    (Günther Kraftschik)

  3. #3
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Was für ein Adapter nutzt du denn?

    Und ha, stell mal code rein, dann kann man mehr zu sagen!
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  4. #4
    fLaVa ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.05.2011
    Beiträge
    13
    Danke
    1
    Erhielt 6 Danke für 1 Beitrag

    Standard

    guten Morgen...

    Hier wie gewünscht ein Code-Ausschnitt... der erste Teil wird für den Connect benutzt, der zweite für den Disconnect...
    Den Aufbau hierfür habe ich auch der TestMPI.c, welche mit der libnodave mitgeliefert wird. Diese hab ich von oben nach unten durchgearbeitet und alles weggelassen, was für mich meines Erachtens nach irrelevant war.

    Wie gesagt, bei einer einmaligen Verbindung funktioniert alles wunderbar, nur danach nicht mehr.

    So, hier mal der erste Teil:
    Code:
    int connectMPI(char *comport)
    {
        int i;
    
        _daveOSserialType otype;
        otype.rfd = setPort(comport,"38400",'O');
        otype.wfd = otype.rfd;
    
    
        di = daveNewInterface(otype, "IF1", 0, daveProtoMPI2, daveSpeed187k);
        dc = daveNewConnection(di, 2, 0, 0);
        for (i=0; i<3; i++) {
            if (0==daveInitAdapter(di)) {
            //initSuccess=1;    
            //a= daveListReachablePartners(di,buf1);
            //printf("daveListReachablePartners List length: %d\n",a);
            //if (a>0) {
            //    for (j=0;j<a;j++) {
            //    if (buf1[j]==daveMPIReachable) printf("Device at address:%d\n",j);
            //    }    
            //}
            break;    
            } else daveDisconnectAdapter(di);   
        }
    
        //daveNewConnection(daveinterface, MPI, rack, slot)
    
        printf("%d\n", daveConnectPLC(dc));
        printf("ConnectPLC\n");
        if (0==daveConnectPLC(dc)){    
            //if(1) {
            //    a=1;
            //    //daveWriteBits(daveConnection *dc, int area, int DB, int start, int len, char[] buffer)
            //    res=daveWriteBits(dc, daveFlags, 0, 10, 1,&a);
            //}
        }
        return 0;
    }
    Und hier der zweite:
    Code:
    int disconnectMPI()
    {
        printf("Now disconnecting\n");    
        daveDisconnectPLC(dc);
        daveFree(dc);
        daveDisconnectAdapter(di);
        daveFree(di);
        return 0;
    }
    Danke und Gruß fLaVa

  5. #5
    fLaVa ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.05.2011
    Beiträge
    13
    Danke
    1
    Erhielt 6 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    soo, hat sich schon erledigt... hab den Fehler gerade selber gefunden.

    habe ein "closePort" in der Disconnect-Methode vergessen .... jetzt funktioniert alles.

    Trotzdem vielen Dank für eure Hilfsbereitschaft!

    Gruß fLaVa

Ähnliche Themen

  1. LibNoDave und Delphi XE (Problem?)
    Von Cliff im Forum Hochsprachen - OPC
    Antworten: 7
    Letzter Beitrag: 14.04.2011, 11:43
  2. Antworten: 0
    Letzter Beitrag: 09.09.2010, 00:27
  3. Reconnect mit C# und Notification Handles
    Von Kauabunga im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 11.05.2010, 19:21
  4. Problem mit dc.getS16at(i) bei LibNoDave
    Von Earny im Forum Hochsprachen - OPC
    Antworten: 3
    Letzter Beitrag: 12.07.2009, 18:36
  5. Problem mit libnodave
    Von BorisDieKlinge80 im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 16.05.2008, 06:24

Lesezeichen

Berechtigungen

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