WinCC Daten in Excel schreiben

mg1382

Level-1
Beiträge
41
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich hab eine S7-Steuerung und WinCC 6 dran.
Nun möchte ich bestimmte Werte entweder aus dem S7 DB oder aus WinCC in eine Excel Tabelle speichern.
Wie geht das?
Was muß ich da machen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hi,
anbei ein kleines beispiel :
Code:
Dim TPFile
Dim TPFileName
Dim fso
Dim Zeile
Dim Tag_1
Dim Tag_2
Dim Datei_Schreiben   <--- NEU

Set Tag_1 = HMIRuntime.Tags("Tag_1")
Set Tag_2 = HMIRuntime.Tags("Tag_2")
Set Datei_Schreiben = HMIRuntime.Tags("Datei_Schreiben") <---NEU

Datei_Schreiben.Read(1)  <---NEU

If Datei_Schreiben.Value = 1 then <--- NEU

Tag_1.Read(1)
Tag_2.Read(1)

TPFileName = "d:\daten\daten.csv"
Set fso = CreateObject("Scripting.FileSystemObject")
Set TPFile = fso.OpenTextFile(TPFileName, 8,True)
Zeile = Tag_1.Value &";"& Tag_2.Value

TPFile.WriteLine(Zeile)
TPFile.Close
End If   <---NEU
 
Das ganze hört sich vernünftig an, habs aber noch nicht getestet!
Wie kann ich es machen das die Werte nur bei einer Flanke abgespeichert werden!
Seh ich das richtig das in das Dokument die Werte alle nacheinander eingetragen werden, das heist endlos viele!
Kann ich das auch begrenzen z.B. auf 100 Stück??
 
ich habe das beispiel etwas erweitert.

wenn du den trigger des scripts auf datei_schreiben setzt, wird beim setzen der variable die datei geschrieben.

die werte werden hintereinander in die datei geschrieben.
pro aufruf des scripts eine zeile:

z.bsp.:
1025;125
2897;784
5697;899

um die datei zu begrenzen, könntest du vorher die datensätze zählen und ab 100 eine neue datei erzeugen. du müsstest die nur geadanken zu den dateinamen machen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mein Signal steht aber länger Zeit an und ich möcht nur die Werte 1mal ablegen und dann erst wieder das Signal ein 2.mal kommt!
Die Variante mit der neuen Datei ist nicht ganz das was ich möchte, denn da müll ich mir den PC zu!
Brauh wie schon geschrieben nur ne Bestimmte Anzahl!
 
da script wird bei einer änderung deiner triggervariable aufgerufen,
egal wie lange das signal ansteht.

sollen die werte archiviert werden oder kannst du sie überschreiben ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mir ist gerade noch was eingefallen, es würde auch gehen wen ich montags in eine Datei schreibe, di in ne andere.......und ne woche später die mo. Datei wieder überschreib!
Vielleicht hat ja da einer idee dafür?
 
Wir machen das so, dass wir täglich eine neue Datei erzeugen nach dem Schema: yyyymmdd.

Also heute heißt das File "20060119.txt", morgen dann "20060120.txt"
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Fariante kenn ich auch, diese möcht ich aber nicht.
Denn wenn du die Datein nicht löschst, müllst du dir dein pc zu!
Hab schon erlebt das bei einem PC der Speicher durch sowas voll war und der nur noch macken gemacht hat!
Die daten sollen nur einpaar tag da sein, also würde es reichen nach Wochentagen!
Weiß einer wie das geht?
 
Also das mit dem Zumüllen kann man in der Regel vorab berechnen, in dem man pessimistische Annahmen bezüglich des Datenaufkommens macht, und mit der Anzahl der zu erwartenden Dateien multipliziert. Vorausgesetzt, das Filesystem spielt dabei mit.

Aber wenn Du keine historischen Daten brauchst:

Wenn Du nur zB sieben Tage aufheben willst, so nummerier sie einfach durch und wenn Du bei sieben angekommen bist, einfach bei eins weitermachen. Wo Du gerade bist, kannst Du Dir in einer extra Datei merken.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kann mir jemand sagen wie ich eine Zählschleife programmier!
Bin noch auf die idee gekommen, das ich es einfach so mach ich schreibe 100 Datensätze in Datei A, wechsle dan und schreib 100 in Datei B und dann wieder von vorne.
Wär ja auch noch ne möglichkeit!
 
Hallo zusammen,

hab das ganze probiert und ich kann jetzt die Werte in csv Datei schreiben - DANKE!

Hab nur noch ein Problem mit dem Wechseln der Dateien.
Hab folgendes geschrieben:


Dim i=0
.
.
.
.

If .........Read = 0 Then
.
.
.

i = i+1

If i <100 Then

.
.

Exit Function
End If


If i >100 Then

.
.

Exit Function
End If

If i > 200 Then
i = 0

Exit Function
End If

Exit Function
End If

End Function

Was ist daran falsch??
Kenn mit Basic nicht aus....
 
Zurück
Oben