TIA Daten aus 4x Array-DB in eine csv schreiben. Wie?

Luke54

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich bin neu dabei eine Sache zu programmieren und ein Wunsch ist es, dass man die Messwerte welche nach dem durchgelaufenem Zyklus in 4 Array DBs of REAL (0...999) geschrieben werden in eine csv-Datei zu exportieren.
Es sollen dann 1000 Zeilen und 4 Spalten sein, idealerweise steht noch irgendwo Datum und Uhrzeit.
Mit der Archivfunktion im HMI generiere ich 4 csv dateien, das sollte nicht Sinn der Sache sein.

Verwendet wird:
- CPU 1515F-2-PN
- HMI TP1500 Comfort (6AV2 124-0QC02-0AX1)
- Tia V18

Wie kann man das am besten lösen?
Einen DBtoCSV Bautstein, welchen ich bereits im Siemensforum gefunden habe, habe ich nicht in Tia18 gefunden.

Gruß
Lukas
 
Siehe hier:

Für ein Comfort Panel (nicht Unified Comfort) musst du die Sektion unter "WinCE" studieren.

Einen DBtoCSV Bautstein, welchen ich bereits im Siemensforum gefunden habe, habe ich nicht in Tia18 gefunden.
Hast du ein Link zu diesen Beitrag ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Siehe hier:

Für ein Comfort Panel (nicht Unified Comfort) musst du die Sektion unter "WinCE" studieren.


Hast du ein Link zu diesen Beitrag ?

Ich habe da experimentiert, ob das über eine Rezeptfunktion gehen könnte.
 
Du kannst auch csv Dateien auf die Speicherkarte der CPU schreiben. Diese csv’s kannst du über den Webserver herunterladen.
Bei dieser Variante bist du bei der Gestaltung der csv’s wahrscheinlich flexibler als übers hmi.
 
Final sollte es auf einen USB Stick, welcher am HMI ansteckt, gespeichert werden.
Mein kommentar bassiert sich daran, obwohl schreiben an den in CPU gesteckte SMC Flash Karte möglich ist, dann wurde ich es nur auf Ereigniss machen, z.B. Wechsel bei der Rezeptur, nicht Zyklisch. Die Flashkarte hat eine begrenzte Anzahl Schreibzykeln. Wenn die SMC Karte defekt geht dann steht die Maschine. Die Risiko hat man nicht wenn man eine Flashkarte in das Comfort Panel beschreibt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit der Archivfunktion im HMI generiere ich 4 csv dateien, das sollte nicht Sinn der Sache sein.
Wie meinst du das?

Verwendet wird:
- CPU 1515F-2-PN
- HMI TP1500 Comfort (6AV2 124-0QC02-0AX1)
das größte Problem ist, die Werte garantiert aktualisiert ins HMI einzulesen. Das geht eigentlich nur als Rezeptur.

Kannst du nicht ein externes Programm (nicht die WinCC RT) nehmen zum auslesen der Werte aus den DB der CPU?
 
Mein kommentar bassiert sich daran, obwohl schreiben an den in CPU gesteckte SMC Flash Karte möglich ist, dann wurde ich es nur auf Ereigniss machen, z.B. Wechsel bei der Rezeptur, nicht Zyklisch. Die Flashkarte hat eine begrenzte Anzahl Schreibzykeln. Wenn die SMC Karte defekt geht dann steht die Maschine. Die Risiko hat man nicht wenn man eine Flashkarte in das Comfort Panel beschreibt.

Wie meinst du das?


das größte Problem ist, die Werte garantiert aktualisiert ins HMI einzulesen. Das geht eigentlich nur als Rezeptur.

Kannst du nicht ein externes Programm (nicht die WinCC RT) nehmen zum auslesen der Werte aus den DB der CPU?

Ich hab eine Variablentabelle angelegt, in dieser 4 Array DBs angelegt mit der verknüpfung zu den DBs in der SPS. Somit zieht sich das HMI automatisch den richtigen bezugspunkt.

Ich habs jetzt ungefähr so gelöst:

Sub ExportArraysWithTimestamp()
Dim fso, f, filePath, i, line, timestamp
Dim d, t

' 1. Zeitstempel generieren (Format: YYYYMMDD_HHMMSS)
d = Date
t = Time
timestamp = Year(d) & _
Right("0" & Month(d), 2) & _
Right("0" & Day(d), 2) & "_" & _
Right("0" & Hour(t), 2) & _
Right("0" & Minute(t), 2) & _
Right("0" & Second(t), 2)

' 2. Dateipfad mit Zeitstempel zusammensetzen
' Pfad für Panel: "\Storage Card SD\Data_" & timestamp & ".csv"
filePath = "C:\Temp\Export_" & timestamp & ".csv"

On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")

' 3. Datei neu erstellen
Set f = fso.CreateTextFile(filePath, True)

If Err.Number <> 0 Then
ShowSystemAlarm "Fehler: " & Err.Description
Exit Sub
End If

' Header (optional)
f.WriteLine "Index;Spalte1;Spalte2;Spalte3;Spalte4"

' 4. Daten schreiben (Schleife über 1000 Zeilen)
For i = 0 To 999
line = i & ";" & _
SmartTags("DB_Array1")(i) & ";" & _
SmartTags("DB_Array2")(i) & ";" & _
SmartTags("DB_Array3")(i) & ";" & _
SmartTags("DB_Array4")(i)
f.WriteLine line
Next

f.Close
Set f = Nothing
Set fso = Nothing

ShowSystemAlarm "Datei gespeichert: " & filePath
End Sub


Danke sehr für euere Infos dazu.
 
Hast du dir denn nun mal angesehen was in deiner Datei drinsteht und es mit den DB's vergleichen ?
Ich denke mal, dass es da nicht unerhebliche Unterschiede geben wird ...
Ja, dss hab ich gemacht und die werte stimmen mit den DBs überein.
Ich habe zum testen mir einen ArrayDb als register angelegt, welcher nur hochzählt und dir werte passen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
verlass dich nicht drauf, dass es immer so ist ...
Hier ein dickes !
Ich hatte diesen Fall einmal: Zeitkritisches Loggen + Logfile wird vom Kunden zur doppelten Beweisführung bei Streitthemen verwendet.
Wenn das Logfile stimmen MUSS gibt es nur die Möglichkeit über die Rezeptur.
Wie das geht ist hier beschrieben: CSV Logging mit Datenkonsistenz

Edit: Es kann auch sein dass es im kleinen Testaufbau funktioniert und dann an der Anlage (Mehr Netzkommunikation, Panel mehr ausgelastet) plötzlich Probleme macht
 
Hier ein dickes !
Ich hatte diesen Fall einmal: Zeitkritisches Loggen + Logfile wird vom Kunden zur doppelten Beweisführung bei Streitthemen verwendet.
Wenn das Logfile stimmen MUSS gibt es nur die Möglichkeit über die Rezeptur.
Wie das geht ist hier beschrieben: CSV Logging mit Datenkonsistenz

Edit: Es kann auch sein dass es im kleinen Testaufbau funktioniert und dann an der Anlage (Mehr Netzkommunikation, Panel mehr ausgelastet) plötzlich Probleme macht
Danke für die Info zu dem Beitrag mit der Datenkonsistenz.

In meinem Fall müssen lediglich 3x1000 Messwerte und 1x 1000 Registernummern in eine csv datei geschrieben werden und das sieht ziemlich gut aus.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wie schon geschrieben : verlass dich nicht darauf - deine 4000 Variablen sind für die Visu ein echtes Kräftemessen ...
Falls es nicht funktionieren sollte, müsste es bei der Auswertung der csv auffallen.

Ein Abgriff über einen Server soll auch noch erfolgen, zum speichern der Messwerte.
Somit sollte ein abgleich der Werte auf Glaubhaftigkeit möglich sein.
 
Ich hatte mal vor, so was ähnlich über FTP zu lösen. Die SPS hätte dann über FTP die CSV erstellt und beschrieben.
Ist dann aber verworfen worden, weil dem Kunden das Datalogging auf die Karte der CPU gereicht hatt. Trotz meiner Bedenken. Allerdings musste ich nur am ende der Produktion einem eine CSV datei schreiben.
 
Zurück
Oben