Variablenarchivierung per Skript

IceBear

Level-1
Beiträge
117
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
Bräuchte mal ne Starthilfe zum Skript-schreiben. Ich brauche ein Skript womit ich mir selbst eine CSV-Datei anlege wo ich ca. 30 Werte Minutenweise abspeichere. Bin ein Absoluter Neuling was Skripte betrifft, hab mir hier aus'm Forum ein paar Codes angeschaut und es wenigsten so hinbekommen das ich die Standard CSV-Dateien die aus dem Panel erzeugt werden mit nem Eigenen Namen und nem Datum versehen auf nen USB-Stick speichere. Nun muß ich aber die CSV-Datei so aufbauen das ich in der 1. Spalte Datum+Uhrzeit; 2.Spalte Analogwert 1; 3.Spalte Analogwert 2; usw habe...

Hätte da mal einer ein paar Anregungen für mich wie ich da anfange?

Panel ist ein MP277 10" Touch

Danke im Voraus

IceBear
 
Schaust du bitte zuerst in die FAQ des Forums, dort gibt es einen Beitrag zum Thema.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen zusammen,
Stimmt, auf die FAQ hätt ich ja auch direkt kommen können. Hab ich dann natürlich auch gemacht und es funzt auch eigentlich. Hatte mir erst mal nen Code geschrieben wo ich nur 2 Variablen archiviere, hat alles soweit gut geklappt. Nun will ich meinen Code erweitern das ich 22 Variablen archiviere. Hab das auch gemacht, nur bekomm ich jetzt von dem Panel immer die Systemmeldung 20010 mit dem Text:

:?:Fehler 'no tag 'Temperaturfühler\Temp_TC03'' in Skript <CSV_Datei_erstellen> in Zeile 18.:?:

Kann mir da einer sagen was ich da falsch mache?

Gruß IceBearAnhang anzeigen CSV-erstellen.txt
 
Zuletzt bearbeitet:
Hallo,
die Fehler-Meldung besagt, dass die Variable mit dem Namen nicht gefunden wurde. Hast du die denn wirklich als Variable ?

Bei der Durchsicht deines Scriptes ist mir aber noch etwas anderes aufgefallen :
- warum kopierst du dir die Visu-Variablen zuerst in Script-interne Variablen um und schreibst die dann in die Datei ? Da kannst du doch auch gleich die Ursprungs-Variable nehmen (spart Code) ...
- Überall, wo du in die Datei schreibst, bist bist du stellenweise mit den Gänsefüßchen ein wenig durcheinander gekommen. Die Variable braucht nicht (darf nicht) in Gänsefüßchen. Das & ist ein Verkettungs-Operator, der auch nicht. Das Semikolon ist dein Trenner für einen späteren Import, somit ein Zeichen und das MUSS in Gänsefüßchen. Schau dir die relevanten Zeilen bitten noch einmal genau an ...

Gruß
Larry
 
Hallo Larry,
Die Variable hab ich genau so wie die Temp_TC01 und die .._02

Punkt 1: wusste ich nicht, hab rumprobiert und so hat es dann geklappt. (bin ein absoluter Einsteiger in VB-Skript)
Punkt 2: Code Funzt so und gibt mir keinen Fehler beim Durchlauf...

anbei mal eine CSV-Datei wie sie aus dem Code erstellt wird...
Anhang anzeigen Daten.txt

endung in .csv ümändern dann geht sie auch mit Excel auf...

Gruß IceBear
 
Problem gelöst, die Einfachsten Sachen vernachlässigt man ja fast immer. Temporäre Dateien gelöscht und alles neu generiert, nun klappt's.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten morgen zusammen,
wollte jetzt nicht ein neues Thema erstellen weil's sich um das selbe Projekt handelt.

Habe mein Skript nun eigentlich soweit fertig und es funzt an sich...

ABER!!!

Habe nun das problem das bei meinem Skript jede Minute eine neue Datei erzeugt wird. Das soll natürlich nicht so sein. Hab schon gesucht aber nix gefunden.
Frage: Ist es überhaupt möglich das ich eine CSV-Datei anlege (mit Datum und Zeit im Dateinamen zum Zeitpunkt des erstellens) und dann über 2-5 Stunden Minutenweise Daten sichere?

Anbei mein Skript

Code:
Dim f, fs, datei, datum, laenge
Dim Variable_Datensatz, Variable_Rezept
Dim Temp_TC01, Temp_TC02, Temp_TC03, Temp_TC04, Temp_TC05, Temp_TC06, Temp_TC07, Temp_TC08, Temp_TC09, Temp_TC10
Dim Temp_TC11, Temp_TC12, Temp_TC13, Temp_TC14, Temp_TC15, Temp_TC16, Temp_TC17, Temp_TC18, Temp_TC19, Temp_TC20
Dim Hzg_Vakuum_RAUMTEMPERATUR, Hzg_Vakuum_Vakuum  
Dim Variable_Year, Variable_Month, Variable_Day, Variable_Minute, Variable_Hour

Variable_Rezept = SmartTags("Rezepte\Rezept")
Variable_Datensatz =SmartTags("Rezepte\Datensatz")

SmartTags("Day_Old") = DateAdd("h",-1, Now)

Variable_Minute = Minute (SmartTags("Day_Old"))
Variable_Hour = Hour(SmartTags("Day_Old"))
Variable_Year = Year (SmartTags("Day_Old"))
Variable_Month = Month (SmartTags("Day_Old"))
Variable_Day = Day (SmartTags("Day_Old"))

Set f= CreateObject("filectl.file")
Set fs= CreateObject("filectl.filesystem")


datei="Storage Card MMC\Daten\"&SmartTags("Rezepte\Datensatz")& SmartTags("DataMmcFilename")&Variable_Datensatz& "_" &Variable_Rezept& "_" & Variable_Day & "-" & Variable_Month & "-" & Variable_Year & "_" & Variable_Hour & "-" & Variable_Minute & "_" & Variable_Datensatz &".csv"
datum="20"&Right(Date,2)&"."&Mid(Date,4,2)&"."&Left(Date,2)

If fs.dir(datei) = "" Then
    f.open datei, 2
    f.LinePrint "Daten"& Variable_Datensatz
    f.LinePrint "Datum;"&"Uhrzeit;"&"TC01;"&"TC02;"&"TC03;"&"TC04;"&"TC05;"&"TC06;"&"TC07;"&"TC08;"&"TC09;"&"TC10;"&"TC11;"&"TC12;"&"TC13;"&"TC14;"&"TC15;"&"TC16;"&"TC17;"&"TC18;"&"TC19;"&"TC20;"&"Raumtemperatur;"&"Vakuum"
    f.Close
End If

f.open datei, 8
f.LinePrint datum&";"&Time&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC1")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC2")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC3")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC4")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC5")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC6")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC7")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC8")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC9")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC10")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC11")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC12")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC13")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC14")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC15")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC16")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC17")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC18")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC19")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC20")&";"&SmartTags("Hzg.-Temp/Vakuum\Temp-Vakuum-Ist.RAUMTEMPERATUR")&";"&SmartTags("Hzg.-Temp/Vakuum\Temp-Vakuum-Ist.Vakuum") 
f.Close
    

' Verwendeten Speicher wieder freigeben
Set f = Nothing
Set fs  = Nothing

Danke im Voraus

Gruß IceBear
 
Ähhh ... wenn du die Uhrzeit mit zum Bestandteil des Dateinamens machst dann erzeugt das System natürlich folgerichtig immer wieder eine neue Datei, weil die Uhrzeit sich ja ändert. Vielleicht einfach nur das Datum für den Dateinamen nehmen - so mache ich das meißtens.
Das minutenweise Abspeichern an sich sollte aber gar kein Problem darstellen.
 
Hab ich auch schon gemacht, dann ist nur das Problem wenn das gleiche Programm noch mal im Anschluss gestartet wird wird in die gleiche Datei wieder reingeschrieben und keine neue angelegt... Wäre deßhalb am praktischsten wenn das Datum zum Startzeitpunkt mit in dem Dateinamen steht...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich würde das erzeugen der datei abhängig von einem ereignis machen.
mit diesem ereignis erzeugst du deine datei und sicherst den dateinamen in einer internen variablen.
beim archivieren benutzt du dann diese variable.
 
Ah.... Ok......
Abhängig vom Ereignis könnte ja dann mein Programmstart sein. Das heist ich müsste mir ein 2. Skript schreiben wo ich mir den Dateinamen erzeuge und den dann intern speichere?
 
Nein - ich würde beim Programmstart nachschauen, ob es unter dem Datumsstempel schon eine Datei gibt, wenn nein den Dateinamen als interne Variable generieren oder wenn ja einen neuen Dateinamen als interne Variable generieren und diesen dann in der Folge verwenden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habs jetzt so gelöst das ich mir das Aktuelle Datum und Uhrzeit beim Programmstart speichere und als Variable dann in meinen Dateinamen einfüge.

Mit dem Datum klappt das jetzt auch soweit, nur die Uhrzeit bekomm ich da nicht so richtig rein. Sobald ich die Uhrzeit als Time_of_Day formatiert hab und das Skript teste wird gemeckert das der Dateiname incorrekt ist. Hab's nun probiert das ganze im Time-Format zu lösen, das nimmt das Skript auch an nur hab ich dann eine merkwürdige Zahlenkombination da stehen. Laut System ist die gespeicherte Zeit 16:20:52 Uhr, im Panel bekomm ich aber 58852000 angezeigt (Hab bei der Uhrzeit die ms ausmaskiert).
Das muß man doch bestimmt irgendwie wandeln können das ich das richtig angezeigt bekomme.
Jemand nen Tip für mich?

Gruß IceBear
 
Verstehe ich nicht so ganz 8)
Du könntest hier doch so, wie du DATE als VBScript-Funktion verwendest, auch TIME als VBScript-Funktion verwenden und dann damit arbeiten.
Wozu Time_of_Day aus der SPS ?
 
Verstehe ich nicht so ganz 8)
Du könntest hier doch so, wie du DATE als VBScript-Funktion verwendest, auch TIME als VBScript-Funktion verwenden und dann damit arbeiten.
Wozu Time_of_Day aus der SPS ?

Hab das ja auch mit TIME gemacht, bekomme dann halt nur diesen Zahlensalat womit ich nicht wirklich was anfangen kann, es sollte halt die Uhrzeit dargestellt werden als HH:MM:SS...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten morgen zusammen,
Nach einer Erholsamen Nacht hab ich dann bemerkt das ich die Uhrzeit in Sekunden angezeigt bekomme, so bekomm ich die auch in meinen Dateinamen eingefügt.
Kann mir jetzt einer nen Tip geben wie ich die Sekunden umrechnen muß damit ich die als vernünftige Uhrzeit angezeigt bekomme?

Gruß IceBear
 
das problem bei time ist der doppelpunkt. der ist in dateinamen nicht erlaubt. den musst du rausfiltern.
zb so
zeit=replace(zeitvariable,":","-") 'ersetzt den : durch ein -
 
Hallo Volker,
genau so was hat mir gefehlt. Hab das so gemacht, bekomme jetzt keine Fehlermeldung mehr aber leider auch keine Uhrzeit in meinen Dateinamen... :cry:

Anbei mal mein aktuelles Skript
Code:
Dim f, fs, datei, datum, laenge
Dim Variable_Datensatz, Variable_Rezept
Dim Temp_TC01, Temp_TC02, Temp_TC03, Temp_TC04, Temp_TC05, Temp_TC06, Temp_TC07, Temp_TC08, Temp_TC09, Temp_TC10
Dim Temp_TC11, Temp_TC12, Temp_TC13, Temp_TC14, Temp_TC15, Temp_TC16, Temp_TC17, Temp_TC18, Temp_TC19, Temp_TC20
Dim Hzg_Vakuum_RAUMTEMPERATUR, Hzg_Vakuum_Vakuum  
Dim Variable_Year, Variable_Month, Variable_Day, Variable_Minute, Variable_Hour
Dim Datum_S, UHRZEIT

Variable_Rezept = SmartTags("Rezepte\Rezept")
Variable_Datensatz =SmartTags("Rezepte\Datensatz")
Datum_S =SmartTags("Datum_S")
UHRZEIT =Replace(UHRZEIT,":","-")

SmartTags("Day_Old") = DateAdd("h",-1, Now)

Variable_Minute = Minute (SmartTags("Day_Old"))
Variable_Hour = Hour(SmartTags("Day_Old"))
Variable_Year = Year (SmartTags("Day_Old"))
Variable_Month = Month (SmartTags("Day_Old"))
Variable_Day = Day (SmartTags("Day_Old"))

Set f= CreateObject("filectl.file")
Set fs= CreateObject("filectl.filesystem")


datei="Storage Card MMC\Daten\"&SmartTags("Rezepte\Datensatz")& "_" &Datum_S& "_" &UHRZEIT& ".csv"
datum="20"&Right(Date,2)&"."&Mid(Date,4,2)&"."&Left(Date,2)

If fs.dir(datei) = "" Then
    f.open datei, 2
    f.LinePrint "Daten"& "_"& Variable_Datensatz
    f.LinePrint "Datum;"&"Uhrzeit;"&"TC01;"&"TC02;"&"TC03;"&"TC04;"&"TC05;"&"TC06;"&"TC07;"&"TC08;"&"TC09;"&"TC10;"&"TC11;"&"TC12;"&"TC13;"&"TC14;"&"TC15;"&"TC16;"&"TC17;"&"TC18;"&"TC19;"&"TC20;"&"Raumtemperatur;"&"Vakuum"
    f.Close
End If

f.open datei, 8
f.LinePrint datum&";"&Time&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC1")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC2")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC3")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC4")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC5")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC6")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC7")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC8")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC9")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC10")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC11")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC12")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC13")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC14")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC15")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC16")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC17")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC18")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC19")&";"&SmartTags("TC-Elemente\Temp-Vakuum-Ist.TC20")&";"&SmartTags("Hzg.-Temp/Vakuum\Temp-Vakuum-Ist.RAUMTEMPERATUR")&";"&SmartTags("Hzg.-Temp/Vakuum\Temp-Vakuum-Ist.Vakuum") 
f.Close
    

' Verwendeten Speicher wieder freigeben
Set f = Nothing
Set fs  = Nothing

Gruß IceBear
 
Zurück
Oben