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

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

Thema: Libnodave und ISO over TCP

  1. #1
    Registriert seit
    09.07.2010
    Beiträge
    14
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hallo zusammen,

    leider habe ich zu meinem problem keine passende antwort gefunden, daher dieser thread.

    ich versuche derzeit meinem PC die kommunikation mit einer S7-300 beizubringen. ich programmieren hierzu Libnodave in C und verwende das ISO over TCP protokoll.

    die kommunikation funktioniert soweit einwandfrei. ich kann ohne probleme die speicher auslesen bzw. die analogeingänge direkt auslesen.

    hier erstmal mein quellcode:
    Code:
    void plc_readout(void)
    {
        int                    a, res;
        char                ip[] = "192.168.0.1";
        daveInterface        *di;
        daveConnection        *dc;
        _daveOSserialType    fds;
    
        daveSetDebug(daveDebugPrintErrors);
    
        fds.rfd = openSocket(102, ip);
        fds.wfd = fds.rfd;
    
        if(fds.rfd > 0)
        {
            // Init new connection
            di = daveNewInterface(fds, "IF1", 0, daveProtoISOTCP, daveSpeed187k);
            daveSetTimeout(di, 5000000);
            dc = daveNewConnection(di, 2, 0, 2);  // insert your rack and slot here
    
            if(0 == daveConnectPLC(dc))
            {
                printf("Connected.\n");
                res = daveReadBytes(dc, daveP, 0, 272, 2, NULL);    // Read 2 bytes direct form analog input channel 0 (PEW272)
                if(0 == res)
                {
                    a = daveGetU16(dc);                                // Read 2 bytes direct form analog input channel 0 (PEW272)
                    printf("Analog Input Ch 0: %d\n", a);
                } else {
                    printf("failed! (%d)\n", res);  
                }
                printf("Finished.\n");
            } else {
                printf("Couldn't connect to PLC.\n");    
            }
        } else {
        printf("Couldn't open TCP port. \nPlease make sure a CP is connected and the IP address is ok.\n");    
        }
        closeSocket(fds.rfd);            // Close connection
    }
    ich greife hier direkt auf einen analogeingang zur spannungsmessung meiner S7-300 zu. klappt auch soweit wunderbar. es ist auch nichtmal nötig dass die SPS im Run-Modus ist. man kann auch im Stop-Modus direkt auf die analogeingänge zugreifen und die spannung bzw. den digitalen wert der spannung auslesen.

    mein problem ist nun folgendes:
    wenn ich meinen PC und die SPS einschalte, warte bis die SPS hochgefahren ist, ich mein programm gestartet hab, bekomme ich die fehlermeldung dass Libnodave den port zur SPS nicht öffnen konnte. der port der hier geöffnet werden soll ist 102.

    ich habe versucht die kommunikation über den konsolenbefehl "netstat -an" nachzuvollziehen. dabei hat sich gezeigt das Libnodave versucht den Port zu öffnen indem er die "SYN_GESENDET" anfrage an die SPS schickt. dummerweise antwortet die SPS aber nicht mit einem ACK dadrauf.
    wenn ich nun aber den simatic manger starte und mein SPS-programm nochmals auf die SPS lade, dann funktioniert auch die kommunikation mit Libnodave und der SPS problemlos. es scheint also dass der simatic manger irgendwie den port öffnen kann, aber Libnodave nicht.

    hat schonmal jemand diese erfahrung gemacht bzw. weiß wie man dieses problem beheben kann?
    also damit ich, auch ohne mein SPS-programm erneut aufzuspielen, eine verbindung direkt nach dem einschalten des PCs und der SPS mit Libnodave herstellen kann?

    vielen dank schonmal im voraus
    Geändert von muhmann (09.07.2010 um 14:40 Uhr)
    Zitieren Zitieren Libnodave und ISO over TCP  

  2. #2
    muhmann ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.07.2010
    Beiträge
    14
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    keiner eine idee was man da machen könnte?

  3. #3
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard

    Zitat Zitat von muhmann Beitrag anzeigen
    keiner eine idee was man da machen könnte?
    Ja, eine habe ich dann doch.

    Dein Quellcode sieht aus als würdest Du ihn mit einem Mausklick aufrufen?
    Wie auch immer: Wenn beim Verbindugsaufbau etwas nicht klappt, so heißt
    die Devise: Versuch abbrechen, ein paar Sekunden warten, dann neu versuchen.

    Was bei ISO-on-TCP auch helfen kann: In der SPS eine explizite Verbindung anlegen.

  4. #4
    muhmann ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.07.2010
    Beiträge
    14
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    ja das ist richtig. ich rufe die funktion mit einem klick bzw. tastendruck auf. aber das habe ich schon mehrfach getestet, es funktioniert so einwandfrei. ich kann in kurzer zeit mehrfach auf meine taste drücken ohne das verbindungsprobleme entstehen.

    ich bin leider mit der S7 nicht so bewandert. wie kann man da denn eine explizite verbindung zu einem PC einrichten?

    edit:
    zumindest habe ich rausgefunden dass die kommunikation zum teil funktioniert. ich kann direkt nach dem einschalten über das industrial ethernet auf den scalance x-208 switch zugreifen bzw. anpingen, aber nicht die cpu direkt anpingen.
    Geändert von muhmann (12.07.2010 um 15:31 Uhr)

  5. #5
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Zitat Zitat von muhmann Beitrag anzeigen
    [...]bekomme ich die fehlermeldung dass Libnodave den port zur SPS nicht öffnen konnte. der port der hier geöffnet werden soll ist 102
    Für mich klingt das eher nach einem Problem auf Deinem PC.
    Hast Du mit der Forums-Suche schon dies und das gefunden?

    Gruß
    Harald

  6. #6
    Registriert seit
    29.03.2004
    Beiträge
    5.731
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Für mich klingt das eher nach einem Problem auf Deinem PC.
    Hast Du mit der Forums-Suche schon dies und das gefunden?
    Die dort geschilderten Probleme passen aber nicht zum Problem von muhmann. Er will auf eine Steuerung auf Port 102 verbinden, und keine Verbindungen zu seinem PC auf Port 102 zulassen.

    Wenn er eine Verbindung zu einem anderen Netzwerkteilnehmer auf Port 102 aufbauen will, wird im Normalfall der lokale Port vom Betriebssystem ausgesucht und liegt dann irgendwo im freien tausender Bereich. Außer er gibt beim Verbindungsaufbau explizit eine lokale Portnummer als Endpunkt an. Danach sieht sein Programm aber nicht aus.

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

    PN/DP (13.07.2010)

  8. #7
    muhmann ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.07.2010
    Beiträge
    14
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    danke für die links, die hatte ich nicht gefunden. zumindest weiß ich nun welcher s7-dienst für diesen port zuständig ist. vielleicht lässt sich damit etwas anfangen

    aber wie thomas schon sagte, trifft das leider nicht ganz auf mein problem zu. ich möchte nur von einem PC aus auf den port 102 der SPS zugreifen.
    Code:
    openSocket(102, ip);
    der port steht auf dem PC zur verfügung und wird auch, wie vorgesehen, vom simatic manager geöffnet. nur leider gelingt mir dies nicht mit libnodave. prinzipiell ist es mir nicht wichtig welchen port ich für die SPS öffnen muss, nur das ich ihn öffnen kann. aber soweit ich weiß ist dieser port speziell für ISO over TCP verbindungen gedacht.

    zusätzlich weiß ich jetzt noch das mein scalance switch da probleme macht. irgendwie scheint da das routing zwischen switch, CPU und libnodave probleme zu machen.

  9. #8
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Wenn er eine Verbindung zu einem anderen Netzwerkteilnehmer auf Port 102 aufbauen will, wird im Normalfall der lokale Port vom Betriebssystem ausgesucht und liegt dann irgendwo im freien tausender Bereich.
    Ach ja richtig! Port 102 ist ja der Zielport und nicht der eigene.

    @muhmann
    Wie hängt Deine CPU am Ethernet?
    Ist das eine PN-CPU oder hat die einen IE-CP oder gar einen Ethernet-to-MPI-Adapter?
    Eine Desktop-Firewall auf dem PC funkt nicht dazwischen?

    Gruß
    Harald

  10. #9
    muhmann ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.07.2010
    Beiträge
    14
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    oh sorry, ich hatte ganz vergessen die hardware aufzuschreiben die ich verwende.

    also hier mal mein zeug:
    als stromversorgung benutze ich bei der s7-300 eine PS307 5A. dazu noch die CPU 315F-2PN/DP. sowie je ein digitales und analoges IO modul und eine scalance x208 switch.

    die CPU hängt über ein ethernetkabel direkt an der switch und die switch wiederum ist mit meinem PC verbunden.

    einen eigenen CP habe ich nicht. zumindest soweit ich das bisher verstanden habe ich habe leider bisher nur erfahrungen mit B&R sowie mitsubishi SPSen, daher bin ich nicht so bewandert was die s7 angeht. ich bitte milde walten zu lassen

    als firewall wird nur die windows eigene benutzt und die macht keine probleme mit dem port 102.

  11. #10
    muhmann ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.07.2010
    Beiträge
    14
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    nach langer zeit mal ein kleines update, dank urlaub

    ich weiß zumindest jetzt woran es liegt, dass ich direkt nachdem hochfahren von PC und SPS keine verbindung über tcp zustande bekomme. es ist die scalance switch. ich kann weder auf das WBM zugreifen, noch sie mit ihrer ip adresse anpingen. erst nachdem der simatic manager eine verbindung zur cpu aufgebaut hat, läuft auch die switch. sprich WBM und ping funktionieren.

    weiß vielleicht jemand ob eine projektierung dieser switch in meinem S7 programm abhilfe schaffen könnte?

    die andere lösung ist die, irgendwie eine verbindung über den S7-Dienst "s7otbxsx.exe" aufzubauen. damit arbeitet auch der simatic manager.

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 09.09.2010, 00:27
  2. ÄÖnderungen am libnodave.net.cs File von libnodave
    Von Jochen Kühner im Forum Hochsprachen - OPC
    Antworten: 5
    Letzter Beitrag: 12.05.2010, 16:56
  3. LibNoDave unter VB.Net ohne libnodave.net.dll
    Von Earny im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 09.03.2010, 18:57
  4. libnodave: Woher kommt die "libnodave.net.dll"?
    Von Thomas_v2.1 im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 10.11.2008, 12:07
  5. VB.Net und Libnodave
    Von oliverlorenz im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 07.05.2008, 10:54

Lesezeichen

Berechtigungen

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