Datenlogger WinCC´f Skript

michal

Level-2
Beiträge
36
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute, ich bastle mir gerade einen Datenlogger für einen Versuchsaufbau.

hierbei soll 40.000 mal ein Druck an eine Membran angelegt werden.
Hierzu hab ich mir ein kleinens Skript "wissenstransferiert", da ich selbst mit VB so ziemlich nichts am hut habe.

Die Aufzeichnungen erfolgt kontinueierlich, und es werden ca. alle halbe sekunde (einstellbar) Messpunkte ermittelt und gespeichert.

Mein Skript speichert alles in einer csv Datei.

Plöd ist nur, dass Excel nur 65.636 zeilen darstellen kann.

Jetzt möchte ich aber, dass mein Skript eine neue CSV datei erstellt, wenn die 65.636 zeilen gefüllt sind.

Hat wer da einen Kniff?

Code:
Dim fs, f, FName, Header
 
 ' Archivierung nur bei Wertänderung von 'FALSE' auf 'TRUE'
If SmartTags("m_archiv_start")And SmartTags("Archivierung_Ein/Aus") = True Then
 
 ' Archivierungspfad und Dateiname zusammensetzen 
 FName = StoragePath & "\Drucktest_Stopfen" & CStr(DatePart("d",Date)) & "_" & CStr(DatePart("m",Date)) & "_" & CStr(DatePart("yyyy",Date)) & ".csv"
 
 ' Tabellenkopf zusammenstellen 
 Header = "Storage time;Druck_Zelle_1;Druck_Zelle_2;Druck_Zelle_3;Druck_Zelle_4;Druck_Zelle_5;Druck_Zelle_6" &  Chr(10)
 
 ' FileSystemObject erstellen
  Set fs = CreateObject("FileCtl.FileSystem") 
 
 ' FileObject erstellen
 Set f = CreateObject("FileCtl.File")
 
 ' Datei öffnen bzw. erstellen, wenn sie noch nicht existiert
 f.open FName, 8         
 
 ' Wenn Datei 0 Byte groß, dann ist sie neu
  If fs.FileLen(FName) = 0 Then       
    f.lineprint(Header)
 
'  =0 => Tabellenkopf muss eingefügt werden
  End If 
 
 ' Werte der Variablen in die Archivdatei schreiben (VAR_1)
 f.lineprint(CStr(Now) & ";" & CStr(SmartTags("DB_TP177.Druck_sensor_1"))& ";" & CStr(SmartTags("DB_TP177.Druck_sensor_2"))& ";" & CStr(SmartTags("DB_TP177.Druck_sensor_3"))& ";" & CStr(SmartTags("DB_TP177.Druck_sensor_4"))& ";" & CStr(SmartTags("DB_TP177.Druck_sensor_5"))& ";" & CStr(SmartTags("DB_TP177.Druck_sensor_6"))) 
 
 ' Datei wieder schließen
 f.Close
 
 ' Verwendeten Speicher wieder freigeben
 Set f  = Nothing
 Set fs = Nothing
 
End If
ResetBit(SmartTags("m_archiv_start"))
 
Zuletzt bearbeitet:
Hallo,
du könntest du eine Flex-interne Variable zur Zähl-Variablen machen. Diese müßte vom Typ Long (DINT) sein.
Wird die Datei neu angelegt setzt du sie auf "0" - ansonsten erhöhst du sie mit jedem Schreiben in die Datei.
Bist du über 40000 so hängst du an deinen Datei-Namen z.B. ein "-1" mit dran. Hat der Dateiname schon dieses "-1" erhöhst du die Zahl nach dem "-" um eins.

Gruß
Larry
 
Hab mir folgendes noch zusammengeschustert:
Code:
'Speicherzeilen begrenzen
SmartTags("datenspeicher") = SmartTags("datenspeicher") + 1
If SmartTags("Datenspeicher") > 10 Then SmartTags("Print_NR") = SmartTags("Print_NR") + 1 End If
If SmartTags("datenspeicher") > 10 Then SmartTags("datenspeicher") = 0  End If

und der

archivierungspfad wurde noch mit folgendem erweitert

HTML:
 ' Archivierungspfad und Dateiname zusammensetzen 
 FName = StoragePath & "\Drucktest_Stopfen" & CStr(DatePart("d",Date)) & "_" & CStr(DatePart("m",Date)) & "_" & CStr(DatePart("yyyy",Date))& "_" & "Tabelle" &"_" &  CStr(SmartTags("Print_NR"))& ".csv"
 
Zuletzt bearbeitet:
Zurück
Oben