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

Seite 3 von 5 ErsteErste 12345 LetzteLetzte
Ergebnis 21 bis 30 von 42

Thema: keine Verbindung S7-1200 mit Windows-Anwendung( libnodave+VS2008/2010 c#)

  1. #21
    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
    Mit readBytes() werden 16 bytes gelesen, beginnend mit MB0.
    Es werden also MB0 bis MB15 gelesen.
    Die von der SPS gelesenen Bytes werden in einen Puffer geschrieben. Der Puffer wird von daveConnection verwaltet. Nach der Ausführung von readBytes() wird ein interner Zeiger auf das erste gelesene Byte gerichtet.
    Dem Testprogramm liegt die (fiktionale) Annahme zugrunde, daß MB0 bis MB15 wie folgt verwendet werden:
    MD0 DINT
    MD4 DINT
    MD8 DINT
    MD12 REAL

    a = dc.getS32();
    holt 4 Bytes aus dem internen Puffer, bringt sie in die richtige Reihenfolge und weist den Wert der Variablen a zu. Die 4 Bytes stammen aus MB0,MB1,MB2 und MB3. Als "Nebenwirkung" steht der besagte Zeiger jetzt auf dem Byte, das aus MB4 gelesen wurde.
    b = dc.getS32();
    holt 4 Bytes aus dem internen Puffer, bringt sie in die richtige Reihenfolge und weist den Wert der Variablen b zu. Die 4 Bytes stammen aus MB4,MB5,MB6 und MB7. Als "Nebenwirkung" steht der besagte Zeiger jetzt auf dem Byte, das aus MB8 gelesen wurde.

    usw.

    Nota bene:
    Du kannst mehr Bytes aus dem Puffer holen als gelesen wurden oder auch als der Puffer lang ist. Dann erhälst du unsinnige Werte oder einen Absturz wegen Speicher-Schutzverletzung.

  2. Folgender Benutzer sagt Danke zu Zottel für den nützlichen Beitrag:

    jbo (14.04.2013)

  3. #22
    jbo ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.04.2013
    Beiträge
    18
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    tja also mit dem anderen PC das gleiche ergebnis connectPLC() liefert -1. wenn die beiden Protokolle eigentlich gut aussehen warum kann ich mich dann nicht verbinden?
    snif1.jpg das sagt mir Wireshark wenn ich mich connecten will. Zeile 82 ist der connectPLC() befehl an die SPS

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

    Standard

    Weiß ich jetzt auch nicht... Ich bin auch kein Wireshark-Experte. Die 5 Zeilen sagen mir wenig.

    Möglichkeit 1: Vergleichen, was Wireshark sagt, wenn du mit dem Testprogramm arbeitest.
    Möglichkeit 2: In deinem Programm die Debug-Ausgabe von libnodave aktivieren und mit den Ausgaben des Testprogramms vergleichen.

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

    Standard

    Zitat Zitat von jbo Beitrag anzeigen
    Hi Zottel,

    Die Zeit hab ich irgendwann zum testen mal geändert in der Hoffnung da würde sich was tun, hatte sie anfangs auf 1000000,
    ok der 1.Befehl: 1st parameter --
    fds8
    fds.rfd 0
    fds.wfd 0
    Couldn´t establish connection to slot=1
    ( das selbe bei slot 0 oder 2)

    der 2.Befehl:
    1st parameter -d
    turning debug onf
    ds8
    openSocketw.c: enter OpenSocket
    openScoketw.c: 1
    openSocketw.c: 2 6600
    openSocketw.c: peer:192.168.0.1=16820416
    openSocketw.c: 6
    openSocketw.c: 7
    openSocketw.c: socket is 120
    openSocketw.c: setsockopt No error 0
    openSocketw.c: 8
    openSocketw.c: connected to host= 192.168.0.1
    fds.rfd 120
    fds.wfd 120
    send pecket: :
    0:0x03;0x00........
    10:0x02,0x01,0x02,0xc0,0x01,0x09,
    timeout in ReadISOPacket
    IF1 daveConnectPLC() step1, got packet: :
    IF1 error in daveConnectPLC() step 1. retrying...timeout in ReadISOPacket.
    (und das ganze dann noch 2mal, endet mit retrying...)
    In deinem Beitrag steht zweimal
    send pecket: :
    Wieso? Das kommt doch aus der dll.

    In der Ausgabe der Testprogramme steht richtig:
    send packet: :
    0:0x03,0x00,0x00,0x16,0x11,0xE0,0x00,0x00,0x00,0x01,0x00,0xC1,0x02,0x01,0x00,0xC 2,
    10:0x02,0x01,0x00,0xC0,0x01,0x09,
    readISOpacket: 22 bytes read, 22 needed
    readISOpacket: packet:
    0:0x03,0x00,0x00,0x16,0x11,0xD0,0x00,0x01,0x00,0x04,0x00,0xC0,0x01,0x09,0xC1,0x0 2,
    10:0x01,0x00,0xC2,0x02,0x01,0x00,

    Wo hast du also die DLL her?

  6. #25
    jbo ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.04.2013
    Beiträge
    18
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hatte ich nur abgetippt und offensichtlich vertippt und war wie gesagt noch mit dem pascal-prog

  7. #26
    jbo ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.04.2013
    Beiträge
    18
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    wie aktiviere ich denn die debug-ausgabe?? An meinem Code ( s.Seite 1) ist ja im wesentlichen nix falsch oder?

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

    Standard

    Zitat Zitat von jbo Beitrag anzeigen
    wie aktiviere ich denn die debug-ausgabe??
    indem du
    daveSetDebug(daveDebugAll);
    in deinen Code einfügst.
    Zitat Zitat von jbo Beitrag anzeigen
    ...an meinem Code ( s.Seite 1) ist ja im wesentlichen nix falsch oder?
    Was ist der letzte Stand deines Codes?
    Sonst ist das beste Beispiel simpleISO_TCP.cs, nur das du die Slot-Nummer ändern mußt.
    Du solltest halt die Timeout-Zeit entweder gar nicht setzen oder auf irgendetwas in Sekunden-Größenordnung (Die Verbindung hat, wenn du sie erzeugst, schon einen Default-Wert von 1000000 (us, also 1 Sekunde) für das Timeout.
    Ferner solltest du die Slot-Nummer auf 1 setzen.

  9. #28
    jbo ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.04.2013
    Beiträge
    18
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    also hier mal der Code, ist so ziemlich das selbe wie in der simpleISO_TCP.cs, bis auf die Consolen-Ausgabe.
    Sorry für die vielleicht doof Frage ( ich mach das hier leider noch net so lang und libnodave kenn ich seit 2 wochen, aber eben nicht wirklich gut): aber an welcher Stelle füge ich denn den Befehl daveSetDebug(daveDebugAll) ein? Hab ihn mal etwas weiter unten reingepackt aber wieder auskommentiert weil da irgendwie nix passiert...
    static libnodave.daveInterface di;
    static libnodave.daveOSserialType fds;
    static libnodave.daveConnection dc;

    private void button2_Click(object sender, EventArgs e)
    {
    int a = 0, res, b = 0, c = 0;
    float d = 0;

    fds.rfd = libnodave.openSocket(102, "192.168.0.1");
    fds.wfd = fds.rfd;

    if (fds.rfd > 0)
    {
    di = new libnodave.daveInterface(fds, "IF1", 0, libnodave.daveProtoISOTCP, libnodave.daveSpeed187k);
    di.setTimeout(1000000);
    //res = dii.initAdapter();

    dc = new libnodave.daveConnection(di, 0, 0, 1); <-- habs mit 0,1 und 2 probiert


    if (0 == dc.connectPLC()) <---- hier wird ne -1 als Rückgabewert erzeugt
    {

    res = dc.readBytes(libnodave.daveFlags, 0, 1, 16, null);

    if (res == 0)
    {
    a = dc.getS32();
    b = dc.getS32();
    c = dc.getS32();
    d = dc.getFloat();

    tb_a.Text = a.ToString();
    tb_b.Text = b.ToString();
    tb_c.Text = c.ToString();
    tb_d.Text = d.ToString();



    }
    else
    MessageBox.Show("error" + res + "" + libnodave.daveStrerror(res));

    }
    //libnodave.daveSetDebug(libnodave.daveDebugAll);
    MessageBox.Show(dc.connectPLC().ToString());
    dc.disconnectPLC();
    libnodave.closeSocket(fds.rfd);

    }
    else
    {
    MessageBox.Show("kann nicht öffnen");

    }

    }

    Kann es sein, dass sich das testISO_TCP Programm auf eine andere Weise mit der SPS verbindet die, im Gegensatz zu der hier, funktioniert?? Hattest ja glaube geschrieben, wenn das Testprogramm funktioniert muss es irgendwie an meinem Code liegen...
    In der Lib gibts ja noch die Funktion daveConnectPLC(...), ich nehm mal an das es beabsichtigt ist das ich die nicht aufrufen kann? bekomme da die Meldung dass ich keinen Zugriff habe aufgrund der Sichheitsebene...

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

    Standard

    Zitat Zitat von jbo Beitrag anzeigen
    ...aber an welcher Stelle füge ich denn den Befehl daveSetDebug(daveDebugAll) ein?
    Wo du willst. Ab dort werden die folgenden Aufrufe von Funktionen von Libnodave was ausgeben. Also möglichst weit vorne, dann siehst du mehr.

    Zitat Zitat von jbo Beitrag anzeigen
    Kann es sein, dass sich das testISO_TCP Programm auf eine andere Weise mit der SPS verbindet die, im Gegensatz zu der hier, funktioniert??
    Nein.
    Zitat Zitat von jbo Beitrag anzeigen
    In der Lib gibts ja noch die Funktion daveConnectPLC(...), ich nehm mal an das es beabsichtigt ist das ich die nicht aufrufen kann? bekomme da die Meldung dass ich keinen Zugriff habe aufgrund der Sichheitsebene...
    daveConnectPLC(...) ist Teil von libnodave.dll. connectPLC ruft es auf, aber so dass das umgebende daveConnection-Object den Aufrufparameter verwaltet...

    Dein Code sieht eigentlich gut aus. Keine Ahnung, was da passiert. Du kannst auch mal simpleISO_TCP.cs nehmen, slot von 2 auf 1 ändern und sehen ob es läuft. Es wird genauso über die Kommandozeile aufgerufen. Und beide dlls müssen auffindbar sein.

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von jbo Beitrag anzeigen
    VS2010 kann egal bei welchen Prgramm die Test.vbproj nicht öffnen weil der Projekttyp nicht unterstützt wird.
    VS2008 kann den Verweis nicht finden, obwohl ich die sogar schon mal neu hinzugefügt hab und auch mal in den debug ordner reingepackt hab.
    Sorry das Ich mich jetzt erst wieder melde...

    Aber hast du VS2010 express? Dann kannst du entweder nur C# oder nur VB.NET entwickeln, und meine Solution enthält Projekte für beide Sprachen. Schmeiss doch einfach die VB Projekte raus, dann solltest du auch compilieren können...
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 08.11.2011, 17:08
  2. Keine Verbindung mit libnodave und eigenem Programm
    Von c0nt4ct im Forum Hochsprachen - OPC
    Antworten: 0
    Letzter Beitrag: 01.03.2011, 12:20
  3. Verbindung S7-1200 mit PC-Anwendung
    Von Praios im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 01.02.2011, 12:07
  4. Libnodave mit VS2008 C++
    Von Zipfelklatscher im Forum Hochsprachen - OPC
    Antworten: 8
    Letzter Beitrag: 10.05.2010, 07:08
  5. [ libnodave ] Keine Verbindung mit testPPI
    Von caret im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 09.02.2006, 10:18

Lesezeichen

Berechtigungen

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