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

Ergebnis 1 bis 7 von 7

Thema: DB auslesen Via Excel

  1. #1
    Registriert seit
    15.04.2011
    Beiträge
    20
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich habe eine Aufgabe zu bewältigen die mir Daten aus einem festem Datenbaustein Daten ausließt und diese in Excel sauber einträgt.

    Bei meinem ersten Gedanken bin ich auf OPC Server gestoßen bekomme es aber nicht ohne Hilfe hin.
    Hat vielleicht jemand eine Idee, wie es einfacher funktionieren könnte?
    Zitieren Zitieren DB auslesen Via Excel  

  2. #2
    Registriert seit
    24.01.2012
    Beiträge
    511
    Danke
    92
    Erhielt 21 Danke für 20 Beiträge

    Standard

    Hallo,

    guck mal hier vielleicht hilft es dir weiter...

    Gruß
    DerMatze
    -----------------------------------------------------------------------------------------
    Programmierumgebung: Step 7 V5.5 + SP3
    WinCC flexible 2008 Advanced + SP3
    -----------------------------------------------------------------------------------------

  3. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard

    Und guck mal dieses Beispiel mit EXCEL + LIBNODAVE

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #4
    Purepain ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.04.2011
    Beiträge
    20
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Werde mir das ganze nun mal genauer zu gemüte ziehen und versuchen die VBA Programmierung zu verstehen, da ich reiner S7`ler bin.

    wo füge ich die Libnodave dll´s ein? weil er findet sie nicht... habe sie einfach aus libnodave/win in system32 gepackt.
    kann ich es testen ohne eine SPS zur Hand zu haben? also mit PLC Sim? Wenn ja wie? welche IP Adresse?

    Zu meiner Anlage, es ist eine 319er mit Profinet
    Wenn ich spätermit meinem PC über Ethernet an meiner SPS hänge, welche Verbindungsart muss ich dort auswählen, S7LAN Ethernet Gateway?
    Muss ich dann was in meiner SPS konfigurieren?

    Naja ist wohl doch ein wenig zu kompliziert für mich... kenne mich zu wenig mit VBA und co aus... so wird das nix
    Geändert von Purepain (27.11.2013 um 22:24 Uhr)

  5. #5
    Registriert seit
    29.01.2012
    Ort
    92694 Etzenricht
    Beiträge
    17
    Danke
    0
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Wenn es einfacher gehen soll IP-S7-Link verwenden. Da sind einfache Beispiele enthalten.
    Gruss Alois
    Alois Träger
    Traeger Industry Components GmbH
    Söllnerstr. 9
    92637 Weiden
    www.traeger.de

  6. #6
    Registriert seit
    03.12.2013
    Ort
    Ansbach
    Beiträge
    56
    Danke
    0
    Erhielt 32 Danke für 10 Beiträge

    Standard

    Ich verwende für das Auslesen von DB's mit EXEL ein Klassenmodul, welches das Handling der SPS übernimmt.
    Ein grundsätzliches Problem ist, dass man beim lesen ganzer DB-Blöcke erstmal ByteArrays hat, die man dann noch
    entsprechend interpretieren muss. (Bytereihenfolge drehen, zusammenfassen)

    benötigt wird folgendes

    1. Libnodave Modul für VB, bei Libnodave enthalten.

    2. Funktionen zum verarbeiten von Bits bzw. drehen von Bytes.
    Ich verwende eine C geschriebene DLL Names Bitlogik.dll dort sind speziell die Funktionen
    zusammengefasst, die man für die SPS-Verarbeitung braucht. Die DLL gibts samt C-Code hier

    http://www.activevb.de/cgi-bin/uploa...load.pl?id=383

    3. Klassenmodul für VBA auf libnodave basierend

    Code:
    ' ***************************************************************************************
    '  Klasse für die Verbindung über Libnodave zu einer S7-Steuerung
    '
    '  Autor: Stefan Maag, Dipl.-Ing.(FH) Elektrotechnik
    '  Datum: 21.06.2010
    '  letzte Aenderung: 21.06.2010
    '  Kontakt:
    ' ***************************************************************************************
    Option Explicit
    
    Dim hSocket As Long                      ' handle von openSocket
    Dim hInterface As Long                   ' handle von daveNewInterface
    Dim hConnection As Long                  ' handle von daveNewConnection
    
    Dim m_Online As Boolean                     ' Verbindung zur Steuerung hergestellt
    Dim m_S7_IP As String                       ' String mit IP Adresse der Steuerung
    Dim m_S7_TCPIP_PORT As Long                 ' Port für die TCP/IP Verbindung (102)
    
    Public Function CheckOnline() As Boolean
        CheckOnline = m_Online
    End Function
    
    ' ===========================================================================
    '   IP_ADRESS : IP_Adresse der Steuerung festlegen
    ' ===========================================================================
    
    Public Property Get IP_ADRESS() As String
        IP_ADRESS = m_S7_IP
    End Property
    
    Public Property Let IP_ADRESS(ByVal NewIP As String)
        ' Wenn bereits eine Verbindung zur Steuerung über IP aufgebaut,
        ' dann diese abbauen, wenn sich die IP ändert. Beim erneuten Aufbau
        ' wird die neue IP dann übernommen
      
        If m_S7_IP <> NewIP Then Me.Disconnect
        m_S7_IP = NewIP
    End Property
    
    ' ===========================================================================
    '   TCPIP_PORT : Kommunikationsport für TCP/IP Verbindung festlegen
    '                    Standardport = 102
    ' ===========================================================================
    
    Public Property Get TCPIP_PORT() As Long
        TCPIP_PORT = m_S7_TCPIP_PORT
    End Property
    
    Public Property Let TCPIP_PORT(ByVal NewPort As Long)
        m_S7_TCPIP_PORT = NewPort
    End Property
    
    ' ===========================================================================
    '   IP_ADRESS : Verbindung zur Steuerung herstellen
    ' ===========================================================================
    
    Public Function Connect() As Boolean
    ' Verbindung herstellen
       Dim RetCode As Long
       
       If m_S7_IP = "" Then
          MsgBox "Connect nicht möglich, Klasse C_S7_PLC fehlt IP-Zuweisung!"
          Exit Function
       End If
       
       ' lblConnect.Caption = "connected to " & m_S7_IP & " ... failed!"   ' ... von Natur aus pessimistisch ;-)
       hSocket = openSocket(m_S7_TCPIP_PORT, m_S7_IP)                        ' for ISO over TCP, siehe Doku zu libnodave
       
       If hSocket > 0 Then
          hInterface = daveNewInterface(hSocket, hSocket, "DEMO", 0, daveProtoISOTCP, 0)
          RetCode = daveInitAdapter(hInterface)
          
          If RetCode = daveResOK Then
             hConnection = daveNewConnection(hInterface, 0, 0, 2)
             RetCode = daveConnectPLC(hConnection)
             If RetCode = daveResOK Then
              '  lblConnect.Caption = "connected to " & m_S7_IP
                m_Online = True
                
                MsgBox "Connected with S7 CPU at IP: " & m_S7_IP, vbInformation
    
             End If
       '      cmdConnect.Enabled = (RetCode <> 0)
       '      cmdDisconnect.Enabled = (RetCode = 0)
       '      cmdRead.Enabled = (RetCode = 0)
       '      cmdWrite.Enabled = (RetCode = 0)
           End If
       End If
       Connect = m_Online
       
       
    End Function
    
    Public Sub Disconnect()
       ' Verbindung abbauen
       Dim RetCode As Long
       If hConnection <> 0 Then
           RetCode = daveDisconnectPLC(hConnection)
           daveFree hConnection
           hConnection = 0
       End If
       If hInterface <> 0 Then
           RetCode = daveDisconnectAdapter(hInterface)
           daveFree hInterface
           hInterface = 0
       End If
       If hSocket <> 0 Then
           RetCode = closePort(hSocket)
           hSocket = 0
       End If
       m_Online = False
    
    End Sub
    
    ' ===========================================================================
    ' NAME: ReadDBFromPLC
    ' DESC: liest einen Datenblock aus einem DB der Steuerung
    ' ===========================================================================
    
    Public Function ReadDBFromPLC(ByVal DB As Long, ByVal bytes As Long, Buffer() As Byte) As Boolean
       
       Dim res As Long
       
       Dim ReadOk As Boolean
       
       Dim FirstByte As Long
       FirstByte = 0
       
       If Not m_Online Then Connect     ' Verbindung herstellen, falls noch nicht geschehen
       
       If m_Online Then
         res = daveReadManyBytes(hConnection, daveDB, DB, FirstByte, bytes, VarPtr(Buffer(0)))
        '  daveReadBytes(dc, daveDB, 12, 0, 16, 0)
       
         If res = daveResOK Then
           ReadOk = True
         Else
            MsgBox "LibnodaveRead ... failed!"
         End If
       
       
       End If
         
    '   Dim i&
    '   For i = 0 To 63
    '      Debug.Print i; ": "; Buffer(i)
    '   Next
       
       ReadDBFromPLC = ReadOk
       
       If ReadOk Then
            MsgBox "Read " & bytes & " Bytes from DB: " & DB & " via IP: " & m_S7_IP, vbInformation
    
       End If
       
    End Function
    
    Private Sub Class_Initialize()
        m_S7_TCPIP_PORT = 102         ' Standarport initialisieren
    End Sub

  7. #7
    Registriert seit
    03.12.2013
    Ort
    Ansbach
    Beiträge
    56
    Danke
    0
    Erhielt 32 Danke für 10 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hab noch was vergessen, damit man wirklich was ausliest benötigt man noch ein
    Main Modul

    leider ist das zu lang um es hier zu posten.
    Deshalb hänge ich Exel Datei (Exel 2003) mal hier an.
    Dort ist alles drin
    Angehängte Dateien Angehängte Dateien

Ähnliche Themen

  1. S7 To Excel
    Von salih im Forum Werbung und Produktneuheiten
    Antworten: 0
    Letzter Beitrag: 26.07.2009, 11:41
  2. Excel-Makros
    Von jan820813 im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 30.06.2009, 14:57
  3. Excel-OPC
    Von kay2009 im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 22.01.2009, 19:11
  4. Excel -> DB
    Von mst im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 16.10.2007, 15:57
  5. prozeßdaten mit excel aus einem siemens opc server auslesen
    Von frankL im Forum Programmierstrategien
    Antworten: 1
    Letzter Beitrag: 04.01.2006, 12:27

Lesezeichen

Berechtigungen

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