Kurve als CSV speichern

Steff_F

Level-1
Beiträge
29
Reaktionspunkte
7
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe folgendes Problem.

Mit WinCC flexible habe ich eine Kurvenanzeige mit 5 Kurven projektiert. Die Übertragung erfolgt Bitgetriggert. Jede Kurve besteht aus 999 Integer - Werten, die über einen Weckalarm in einem DB abgelegt wurden, insgesamt also aus 4995 Integern.

Um diese Kurve auch in MS - Excel bearbeiten zu können sollen die Werte in eine Tabelle einer CSV - Datei gespeichert werden.
Kennt jemand eine Möglichkeit ohne diese Variablen in WinCC flexible anzulegen?

Mit Variablen aus WinCC flexible funktioniert es mit Hilfe eines Scripts. Möchte aber nicht die ganzen Variablen anlegen müssen.

Gruß
Stefan
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Herr Götz,

ihre Software sieht sehr interessant aus. Da ich diese Anwendung doch nur einmalig für mein Abschlussprojekt zum Techniker benötige würde ich dieses gerne mit einer Freeware oder bereits in VinCC flexible enthaltenen Möglichkeit realisieren.

Gruß

Stefan Frick
 
Mit Variablen aus WinCC flexible funktioniert es mit Hilfe eines Scripts. Möchte aber nicht die ganzen Variablen anlegen müssen.

Hallo,
womit hast du denn da ein Problem ?
Du mußt doch nur für jede Kurve die Variable benutzen, die du in der Visu sowieso schon als Kurvenvariable benutzt hast (also das ARRAY mit den Kurvenwerten). Für 5 Kurven sind das also 5 Variablen, die du dann im Script entsprechend verarbeitest ...

Zu dem Thema gibt es auch ein paar schöne Beispiele im Forum ...
Stichwort "Kurvenanzeige"

Gruß
LL
 
Mahlzeit :ROFLMAO:

Wenn Du es in Flexible realisieren willst musst Du auch die Variablen angelegt haben um diese zu archivieren! Umgehen kannst Du das nur mit der vorgeschlagenen Lösung... obwohl ich mir selbst bei einem Preis von 400€ für das kleine Programm die arbeit machen würde und die Variablen in Flexible schnell anlegen würde.
 
...
du mußt nur beachten, dass das Array mit dem Index 0 beginnt (und wenn es 999 Elemente hat mit dem Index 998 aufhört).

Gruß
LL
 
Hallo,

leider bin ich mit VB ein totaler Anfänger und habe keine Anleitung gefunden wie ich die ARRAY Elemente in die CRV Datei bekomme.
In den Anleitungen bei Siemens wird nur beschrieben wie man Int und String abspeichern kann. Für das Speichern meiner anderen Daten konnte ich mir hierfür eine Musterlösung von Siemens so anpassen, dass es auf meine Anwendung passt.

Dataset = CStr(Now) & ";" & CStr(SmartTags("Prot.Messung[1].P_Sys")) & ";" & CStr(SmartTags("Prot.Messung[1].PST")) & …….

Hierbei wird jede einzelne Variable in eine Zelle geschrieben.

Wie müsste der Befehl aussehen um die Inhalte des ARRAY[0..998] einer Messreihe in eine Zeile oder Spalte einer CSV – Datei zu schreiben?

Bin für jede Hilfe dankbar.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... mal so aus der Hüfte geschossen :
Code:
Daten = [FONT=Times New Roman][SIZE=3]CStr(Now)  +  ";" [/SIZE][/FONT]
for i = 0 to 998
   Daten = Daten + [FONT=Times New Roman][SIZE=3]CStr(SmartTags("Prot.Messung[[B][COLOR=red]i[/COLOR][/B]].P_Sys"))  + ";"[/SIZE][/FONT]
next
Gruß
LL
 
Hallo,

mit der for - Schleife ist einleuchtend.
Allerdings wird die ARRAY Variable als Syntaxfehler angezeigt wenn ich" hinzufüge
Name der ersten Messreihe: NormierteMessreihe.NormierteMesswerte_P (DB-Name.ARRAYname)
Ich habe versucht „ “ an verschiedenen Stellen einzufügen aber bisher ohne Erfolg.
i wurde deklariert.


Gruß
 
Hier mal ein kurzes Programmbeispiel für das Kopieren eines Datensatzes (ARRAY) in WinCC flexible in VBScript :

Code:
' Datensatz (ARRAY) kopieren
 
Dim i
 
For i = 0 To 9  
    SmartTags("Datensatz_2")(i) = SmartTags("Datensatz_1")(i) 
Next

Gruß Kai
 

Anhänge

  • Variablen.jpg
    Variablen.jpg
    356,9 KB · Aufrufe: 56
  • Skripte.jpg
    Skripte.jpg
    379,2 KB · Aufrufe: 43
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die tolle Hilfe!
Das abspeichern funktioniert jetzt. Musste nur den Code noch so ändern, dass die Variablen in eine Spalte geschrieben werden, weil Excel keine 999 Spalten anzeigen kann.

Dataset = CStr(Now) & ";"
For i = 0 To 998
Dataset = Dataset & CStr(SmartTags("NormierteMessreihe.NormierteMesswerte_P")(i)) & Chr(10) & ";"
Next


Jetzt muss ich nur noch den Code so ändern, dass die anderen 4 Messreihen in den Spalten daneben abgelegt werden.

Gruß
 
Hallo,

habe hier nochmals die fertigen Scripte zugefügt, fals nochmals jemand vor dem gleichen Problem stehen sollte.

Gruß
 

Anhänge

  • Script_Storage_Path_KV.TXT
    1,1 KB · Aufrufe: 81
  • Storage_KV.TXT
    3 KB · Aufrufe: 60
... wenn du diese Werte in Excel weiter verwenden willst ...
Warum speicherst du dann nicht jede Kurve in eine Spalte und die Einzelwerte dann Zeilenweise untereinander ? Das würde dann in Excel die Sache etwas vereinfachen ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das syntax ist wie so:

SmartTags("ODBC\FromDB\arrayToCDR")(0) = rst.Fields(0).Value

ODBC\FromDB\arrayToCDR ist ein ARRAY Tag.

rst.Fields ist ein VBS Array von typ ADO Recordset.


Ich vermute es wird funktionieren mit ein Index variabel:

SmartTags("ODBC\FromDB\arrayToCDR")(i) = rst.Fields(i).Value


Dies wird nicht funktionieren:
CStr(SmartTags("Prot.Messung[i].P_Sys"))

So weit das ich weiss kann man nicht WinCC Flex ARRAYs erzeugen von STRUCTs oder UDTs. Nur "einfache" variabel typen wie INTs, DINTs oder REALs.

edit: Oho, ich hatte nicht gesehen das ihr es schon gelöst hatte.
 
... wenn du diese Werte in Excel weiter verwenden willst ...
Warum speicherst du dann nicht jede Kurve in eine Spalte und die Einzelwerte dann Zeilenweise untereinander ? Das würde dann in Excel die Sache etwas vereinfachen ...

Genau das mache ich ja jetzt, nachdem ich mein Script fertig habe. (Siehe Anhang oben)

Code:
 Dataset = CStr(Now)  &  ";" 
For i = 0 To 998
   Dataset = Dataset & CStr(SmartTags("NormierteMessreihe.NormierteMesswerte_P")(i))& ";" &_
           CStr(SmartTags("NormierteMessreihe.NormierteMesswerte_P_DRV")(i))& ";" &_
           CStr(SmartTags("NormierteMessreihe.NormierteMesswerte_P_MST")(i))& ";" &_
           CStr(SmartTags("NormierteMessreihe.NormierteMesswerte_I")(i))& ";" &_        
           CStr(SmartTags("NormierteMessreihe.NormierteMesswerte_Q")(i)) & Chr(10) & ";"
 
Next

Funzt jetzt prima!
Die Datei wird auch automatisch mit aktuellem Datum und Auftragsnummer erzeugt.

Gruß :cool:
 
Genau so was wie Steff damals verwendet hat möchte ich auch anwenden.
Meine ergänzende Frage ist nur noch, funktioniert das mit dem speichern der Messwerten in ein CSV file auch mit einem CE Panel (MP377) oder nur auf PC mit Runtime Lizenz.
 
Zurück
Oben