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

Ergebnis 1 bis 3 von 3

Thema: Please help!!! Connection, reading data with S7 300(LibNoDave.dlll, C#)

  1. #1
    Registriert seit
    04.02.2012
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Здравствуйте, все.

    Прошу помощи.
    Мне нужно считать данные с таблиц контроллера.
    Подключение к контроллеру я реализовал вот так:

    Code:
    try 
                { 
                    int a = 0, res, b = 0, c = 0; 
                    float d = 0;
    
                    fds.rfd = libnodave.openSocket(102, IP); 
                    fds.wfd = fds.rfd; 
                    if (fds.rfd > 0) 
                    {
                        di = new libnodave.daveInterface(fds, "IF1", 0, libnodave.daveProtoISOTCP, libnodave.daveSpeed187k); //
                        di.setTimeout(1000000); 
                        // res=di.initAdapter(); // does nothing in ISO_TCP. But call it to keep your programs indpendent of protocols 
                        // if(res==0) { 
                        dc = new libnodave.daveConnection(di, 0, rack, slot); 
                        if (0 == dc.connectPLC()) 
                        { 
                            
                               ............
    
    
                        } 
                        dc.disconnectPLC(); 
                        // } 
                        // di.disconnectAdapter(); // does nothing in ISO_TCP. But call it to keep your programs indpendent of protocols 
                        libnodave.closeSocket(fds.rfd); 
                    } 
                    else 
                    {
                        MessageBox.Show("Couldn't open TCP connaction to " + IP);
                    } 
                } 
                catch (Exception ex) 
                { 
                    MessageBox.Show(ex.ToString()); 
                }
    Verbindung erfolgreich ist.
    Jetzt habe ich auf Daten aus den Tabellen des Controllers lesen müssen, werden in der ersten Tabelle das Datum \ Zeit des Zählers, die zweite Tabelle der numerischen Meter.

    Tabellen der Nachweis kann in der komplexen gesehen werden

    1.jpg2.jpg
    Zitieren Zitieren Please help!!! Connection, reading data with S7 300(LibNoDave.dlll, C#)  

  2. #2
    ceasar ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    04.02.2012
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,alle.

    Bitte helfen Sie.
    Ich mussByte-Array inder Artvon Datum / Uhrzeitzu konvertieren.(C #)

    byte[] buffer = new buffer[] {0,0,0,0,0,0,0,0};
    DateTime dt;

    dt < - buffer - ???

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ist zwar schwer zu verstehen was du genau vorhast, vielleicht schreibst du es besser in englisch (falls du das besser kannst als deutsch).

    Ich denke aber du möchtest den S7 Datentyp DATE_AND_TIME in eine DateTime Variable in .Net konvertieren.
    Wenn man die Millisekundengenauigkeit nicht benötigt, geht das so:

    Code:
    int BcdToInt(byte b)
    {
        return (10 * (b / 16) + (b % 16));
    }
    
    DateTime S7DateAndTime_To_DateTime(byte[] s7dateandtime)
    {
        if (s7dateandtime.Length < 8)
            throw new System.ArgumentException("Parameter DATE_AND_TIME has to be minimum 8 bytes");
    
        int y, m, d, H, M, S;
        y = BcdToInt(s7dateandtime[0]);
        m = BcdToInt(s7dateandtime[1]);
        d = BcdToInt(s7dateandtime[2]);
        H = BcdToInt(s7dateandtime[3]);
        M = BcdToInt(s7dateandtime[4]);
        S = BcdToInt(s7dateandtime[5]);
        y = (y <= 89 ? y += 2000 : y += 1900);
        return new DateTime(y, m, d, H, M, S);
    }
    Wenn eine DATE_AND_TIME Variable im DB1 an DBX0.0 beginnt kann man das dann (vereinfacht) so lesen.
    Code:
    byte[] buffer = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 };
    res = dc.readBytes(libnodave.daveDB, 1, 0, buffer.Length, buffer);
    DateTime dt = S7DateAndTime_To_DateTime(buffer);

Ähnliche Themen

  1. DotNetSiemensPLCToolBoxLib Connection
    Von mlsoftware im Forum Simatic
    Antworten: 24
    Letzter Beitrag: 25.01.2013, 10:57
  2. LibNodave mit Routing und Connection Library...
    Von Jochen Kühner im Forum Hochsprachen - OPC
    Antworten: 0
    Letzter Beitrag: 21.06.2010, 11:49
  3. LibNoDave und Connection Library mit Routing...
    Von Jochen Kühner im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 27.05.2010, 08:06
  4. Antworten: 7
    Letzter Beitrag: 14.12.2008, 14:33
  5. Connection Stringvariablen
    Von fanta im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 13.08.2008, 13:44

Lesezeichen

Berechtigungen

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