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

Ergebnis 1 bis 5 von 5

Thema: LibNoDave + Visual Studio + S7 über TCP/IP

  1. #1
    Registriert seit
    07.09.2005
    Ort
    MOS
    Beiträge
    156
    Danke
    22
    Erhielt 26 Danke für 17 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich möchte in Visual Studio 2005 C# einen Zugriff auf meine S7 über TCP/IP mit LobNoDave realisieren.
    das sollte doch möglich sein, oder?
    leider habe ich kaum zeit um mich da einzuarbeiten.
    gibt es vielleicht schon fertige beispielprojekte in visual Studio, in denen so ein beispiel realisiert ist, so das sich meine einarbeitungszeit etwas verkürzt

    danke.grüße.david.
    Zitieren Zitieren LibNoDave + Visual Studio + S7 über TCP/IP  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Bei Libnodave ist doch ein Ordner "Dot.Net" mit einem Beispiel für CS und VB dabei.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. #3
    Registriert seit
    22.09.2008
    Beiträge
    8
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Guten Tag zusammen.

    Ich benutz jetzt mal diesen Thread hier, da ich ein ähnliches Problem hab und deshalb nicht unbedingt n neuen Thread erstellen will.


    Vorab: Danke schonmal für libnodave, Zottel!


    Folgendes Problem:
    Ich muss mittels C# Daten aus einer SPS auslesen und stoße dabei als Anfänger auf Probleme, die ich in den letzten 2 Tagen nicht lösen konnte.

    Hardware:
    S7-300 (312), CP 343-1, Verbindung über TCP

    Anbei der Code (bin noch in der Test-/Lernphase in Sachen SPS):

    Code:
    static int Main(string[] args)
    {
                int port = 102;
                string ipadress = "192.168.100.122";
                int result = 0;
                int prg_nr = 0;
                int prg_runtime = 0;
                int mixingratio = 0;
                int boothtemp = 0;
                int boothhumidity = 0;
    
                fds.rfd = libnodave.openSocket(port, ipadress);
                fds.wfd = fds.rfd;
                if (fds.rfd > 0)
                {
                    di = new libnodave.daveInterface(fds, "IF1", 0, libnodave.daveProtoISOTCP, libnodave.daveSpeed187k);
                    di.setTimeout(1000000);
                    result = di.initAdapter();
                    if (result == 0)
                    {
                        dc = new libnodave.daveConnection(di, 0, rack, slot);
                        if (0 == dc.connectPLC())
                        {
                            result = dc.readBytes(libnodave.daveFlags, 0, 0, 102, savebuffer);                        
                            if (result == 0)
                            {                     
                                prg_nr =  dc.getS16At(20);
                                prg_runtime = dc.getS16At(22);
                                mixingratio = dc.getS16At(24);
                                boothtemp = dc.getS16At(26);
                                boothhumidity = dc.getS16At(28);                            
                                Console.WriteLine("Programm-Nummer: " + prg_nr);
                                Console.WriteLine("prg_runtime: " + prg_runtime);
                                Console.WriteLine("mixingratio: " + mixingratio);
                                Console.WriteLine("boothtemp: " + boothtemp);
                                Console.WriteLine("boothhumidity: " + boothhumidity);                              
                            }
                            else
                                Console.WriteLine("Fehler! " + result + " " + libnodave.daveStrerror(result));
                        }
                        dc.disconnectPLC();
                        Console.ReadLine();
                    }
                    di.disconnectAdapter();
                    libnodave.closePort(fds.rfd);
                }
                else
                {
                    Console.WriteLine("Fehler! Konnte keine Verbindung zur SPS herstellen!");
                    Console.ReadLine();
                    return -1;
                }
                return 0;
    }
    Ich hab von meinem Chef ein Datenblatt bekommen, auf dem die Daten der SPS vermerkt sind.

    Adresse 0-19 sind Chars, dann einige 16Bit-Integer, dann bool'sche Werte etc. Die Daten ändern sich zu Testzwecken derzeit sekündlich.


    Nun will ich wie oben im Code gesehen die 5 Integer-Werte von Position 20 bis Position 28 ausgeben und in meinem WinForm (derzeit noch Console) anzeigen lassen - ich bekomme für die letzten 4 Werte aber immer 0 und für den ersten Wert entweder 0 oder eine Zahl (je nach Konvertierung 16, 64, 4096 oder 138xx). Scheint mir also eher n Bool zu sein.
    Ich les also irgendwie falsch aus oder konvertiere die Werte falsch - und kann mir keinen Reim darauf machen.

    Den obigen Code hab ich aus den Beispielen, die bei libnodave dabei waren, abgeguckt ...


    Vielen Dank für eure Hilfe!

    mfG Andi

  4. #4
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    wo definierst du rack und slot?
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. #5
    Registriert seit
    22.09.2008
    Beiträge
    8
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Sind Datenelemente, die passen auch so.


    Hab das Problem glaub ich grade gelöst - 5 Minuten nachdem ich den Post hier gemacht hab ...

    Ich hab aus den Flags ausgelesen anstatt aus dem Datenbaustein 50.


    Danke schonmal für das reply, vierlagig!

    Ich geb nachher nochmal ne Bestandsaufnahme ab, ob's wirklich geklappt hat. Muss jetzt erstmal die Daten vergleichen, ob die denn auch passen

    mfG Andi

Ähnliche Themen

  1. S7ProSim in Visual Studio C#
    Von dnick86 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 17.11.2012, 12:22
  2. libnodave in Visual Studio 2005 einbinden
    Von jurgen_Stadler im Forum Hochsprachen - OPC
    Antworten: 5
    Letzter Beitrag: 24.10.2009, 18:25
  3. Libnodave and Visual Studio 2008
    Von Rick im Forum Hochsprachen - OPC
    Antworten: 5
    Letzter Beitrag: 12.10.2009, 22:47
  4. ADS Protokoll in Visual Studio 08
    Von td97 im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 17.03.2009, 21:07
  5. ct -> MS .net Visual Studio auf DVD
    Von Kurt im Forum Werbung und Produktneuheiten
    Antworten: 8
    Letzter Beitrag: 08.05.2007, 11:47

Lesezeichen

Berechtigungen

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