Excel Daten zur Laufzeit in WinCC/STEP 7 importieren

Dav

Level-1
Beiträge
41
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich suche verzweifelt eine Lösung, Daten mit Zeitstempel aus Excel in WinCC zu importieren. Die Daten sollen mit dem WinCC Online Trend Control der ActiveX-Controls dargestellt werden. Weiter sollen die Daten in STEP 7 zur Verarbeitung verfügbar sein. Mittels Button in WinCC soll zur Laufzeit ein gewünschter Datensatz importiert werden können.

Meine Internetrecherche führte mich zur Lösung mittels OPC-Server. Allerdings habe ich keine Ahnung wie die Implementierung aussehen soll, ob es überhaupt ein Lösungsansatz ist und welche Zusatzsoftware ich unter Umständen benötige.?
Ich verwende übrigens STEP 7 V5.5 und WinCC V7.0.

Vielen Dank für eure Hilfe!

Dav
 
Code:
'Variablendeklaration
Dim objExcelApp
Dim objWorkbooks
Dim objSheet

'zuweisen der Excel-Applikation
Set objExcelApp = CreateObject ("excel.application")
    
'zuweisen der Excel-Datei
Set objWorkbooks = objExcelApp.Workbooks
    
'vorhandene Tabelle öffnen
objWorkbooks.Open ("C:\Daten\Vorlagen\Rollenprotokoll.xls")

'Auswahl der Tabelle 1
Set objSheet = objWorkbooks.Item(1).Worksheets(1)


With objSheet
         'übertragen der Kopfdaten Datum und Uhrzeit
        .Cells(1,2).Value = HMIRuntime.Tags("Datum").Read
        .Cells(43,2).Value = HMIRuntime.Tags("Datum").Read
        .Cells(85,2).Value = HMIRuntime.Tags("Datum").Read
        .Cells(127,2).Value = HMIRuntime.Tags("Datum").Read

End With    

objWorkbooks.Close
objExcelApp.Quit
Set objExcelApp = Nothing
Beispiel zum schreiben von einer Excel-Tabelle.
Lesen ist dann dementsprechend.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die schnelle Antwort. Aber sorry, des ist mir zu knapp formuliert. Der Quellcode gehört jetzt wo genau hin? Soll der in eine C-Aktion in WinCC eingetragen werden oder verstehe ich das falsch? Wohin werden die Daten dann geschrieben? Ist .Cells(x,y).Value die Bezeichnung für ein Objekt in WinCC? Was genau bewirkt das Item(1) unter dem Kommentar 'Auswahl der Tabelle 1? Worksheet(1) steht wohl für Tabellenblatt(1)?
Versteh mich nicht falsch, die Antwort macht echt was her, aber ich habe noch etwas Erklärungsbedarf...
Danke!

Dav
 
Der Quellcode gehört jetzt wo genau hin? Soll der in eine C-Aktion in WinCC eingetragen werden oder verstehe ich das falsch?

Das ist ein VB-Script für WinCC. Mit diesem Script wird eine Excel-Datei geöffnet und Werte in Zellen geschrieben.

Ist .Cells(x,y).Value die Bezeichnung für ein Objekt in WinCC?

.Cells(x,y).Value ist deine Zelle in der Excel-Tabelle

Was genau bewirkt das Item(1) unter dem Kommentar 'Auswahl der Tabelle 1? Worksheet(1) steht wohl für Tabellenblatt(1)?

Tabellen-Blatt 1 der Excel-Tabelle.

Bis dann

Schablone
 
Danke! Hab den Code mal folgendermaßen für mich angepasst:
Code:
Sub OnClick(ByVal Item)       
'Variablendeklaration
Dim objExcelApp
Dim objWorkbooks
Dim objSheet
'zuweisen der Excel-Applikation
Set objExcelApp = CreateObject ("excel.application")
    
'zuweisen der Excel-Datei
Set objWorkbooks = objExcelApp.Workbooks
    
'vorhandene Tabelle öffnen
objWorkbooks.Open ("D:\Simulation\Tests\Archiv.xls")
'Auswahl der Tabelle 1
Set objSheet = objWorkbooks.Item(1).Worksheets(1)

With objSheet
         'übertragen der Kopfdaten Datum und Uhrzeit
        .Cells(10,1).Value = HMIRuntime.Tags("P_Last").Read
        '.Cells(43,2).Value = HMIRuntime.Tags("P_Last").Read
        '.Cells(85,2).Value = HMIRuntime.Tags("P_Last").Read
        '.Cells(127,2).Value = HMIRuntime.Tags("P_Last").Read
        'HMIRuntime.Tags("P_Last_1").Write = .Cells(11,1).Value
        .Cells(11,1).Value = HMIRuntime.Tags("P_Last_1").Write 
End With    
objWorkbooks.Close
objExcelApp.Quit
Set objExcelApp = Nothing
End Sub
Das Schreiben in Excel funktioniert einwandfrei. Das Lesen aus .Cells(11,1) funktioniert aber leider nicht. Weist du zufällig hierfür auch noch die Syntax?
Das ganze scheint ja einfacher zu sein, als ich anfangs angenommen habe. :)
Vielen, vielen Dank für deine Hilfe!
Dav
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
With objSheet
         'übertragen der Kopfdaten Datum und Uhrzeit
        .Cells(10,1).Value = HMIRuntime.Tags("P_Last").Read
        '.Cells(43,2).Value = HMIRuntime.Tags("P_Last").Read
        '.Cells(85,2).Value = HMIRuntime.Tags("P_Last").Read
        '.Cells(127,2).Value = HMIRuntime.Tags("P_Last").Read
        'HMIRuntime.Tags("P_Last_1").Write = .Cells(11,1).Value
        .Cells(11,1).Value = HMIRuntime.Tags("P_Last_1").Write 
End With

Schmeiss die letzte Zeile vor "End With" mal raus. ;)
 
Wenn ich die Zeile rausschmeise, schreibt er ja wieder nur in die Excel-Datei. Das Problem ist aber, wie ich eine Zelle aus der Excel Datei lesen kann.
Hab jetz folgendes probiert, nachdem ich nochmal gegoogeld habe, aber leider auch ohne Erfolg.
Code:
Sub OnClick(ByVal Item)              
'Variablendeklaration
Dim objExcelApp
Dim objWorkbooks
Dim objSheet
'zuweisen der Excel-Applikation
Set objExcelApp = CreateObject ("excel.application")
    
'zuweisen der Excel-Datei
Set objWorkbooks = objExcelApp.Workbooks
    
'vorhandene Tabelle öffnen
objWorkbooks.Open ("D:\Simulation\Tests\Archiv.xls")
'Auswahl der Tabelle 1
Set objSheet = objWorkbooks.Item(1).Worksheets(1)

With objSheet
         'übertragen der Kopfdaten Datum und Uhrzeit
        .Cells(10,1).Value = HMIRuntime.Tags("P_Last").Read
        '.Cells(43,2).Value = HMIRuntime.Tags("P_Last").Read
        '.Cells(85,2).Value = HMIRuntime.Tags("P_Last").Read
        '.Cells(127,2).Value = HMIRuntime.Tags("P_Last").Read
        '.Cells(11,1).Value = HMIRuntime.Tags("P_Last_1").Write
        HMIRuntime.Tags("P_Last_1") = .Cells(11,1).Value
  '.Cells(11,1).Value = HMIRuntime.Tags("P_Last_1").Write
End With    
objWorkbooks.Close
objExcelApp.Quit
Set objExcelApp = Nothing
End Sub
Wie kann ich eine Zelle aus Excel auslesen und im WinCC TAg speichern?
 
Hallo Dav.

Ich habs jetzt nochmal selber ausprobiert.
Bei mir klappt das hier.

Code:
'Variablendeklaration
Dim objExcelApp
Dim objWorkbooks
Dim objSheet
'zuweisen der Excel-Applikation
Set objExcelApp = CreateObject ("excel.application")
    
'zuweisen der Excel-Datei
Set objWorkbooks = objExcelApp.Workbooks
    
'vorhandene Tabelle öffnen
objWorkbooks.Open ("E:\Projekte\HOB\Test\Test.xls")

'Auswahl der Tabelle 1
Set objSheet = objWorkbooks.Item(1).Worksheets(1)

With objSheet
        'übertragen der Kopfdaten Datum und Uhrzeit
        HMIRuntime.Tags("Test_1").Write .Cells(1,1).Value
End With    

objWorkbooks.Close
objExcelApp.Quit
Set objExcelApp = Nothing
Kein Witz!!
 
Hi nochmal,
also sorry, aber dieses VBScript bringt mich zur Verzweiflung...
Folgender Code schreibt zwar in Excel, liest aber nicht aus Excel und scheint Excel auch nicht richtig zu schließen.?
Code:
Sub OnClick(Byval Item)                                                           
'Variablendeklaration
Dim objExcelApp
Dim objWorkbooks
Dim objSheet
'zuweisen der Excel-Applikation
Set objExcelApp = CreateObject ("excel.application")
    
'zuweisen der Excel-Datei
Set objWorkbooks = objExcelApp.Workbooks
    
'vorhandene Tabelle öffnen
objWorkbooks.Open ("D:\Simulation\Tests\Archiv.xls")
'Auswahl der Tabelle 1
Set objSheet = objWorkbooks.Item(1).Worksheets(1)
With objSheet
        'Schreiben nach Excel
        .Cells(11,1).Value = HMIRuntime.Tags("P_Last").Read
        'Lesen aus Excel
        HMIRuntime.Tags("P_Last_1").Write.Cells(10,1).Value
End With    
objWorkbooks.Close
objExcelApp.Quit
Set objExcelApp = Nothing
End Sub
Hat jemand eine Ahnung woran das liegen könnte?

Danke!
Dav
 
Code:
HMIRuntime.Tags("P_Last_1").Write.Cells(10,1).Value
Das gibt es auch nicht!

Code:
HMIRuntime.Tags("P_Last_1").Write .Cells(10,1).Value
Das schon!

Mach mal zwischen ".Write" und ".Cells" ein Leerzeichen. ;)

Bis dann

Martin
 
Zurück
Oben