Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: Daten aus DB in csv-Datei schreiben

  1. #1
    Registriert seit
    04.04.2008
    Beiträge
    388
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich muss 1000 Realwerte, die während einer schnellen Messwertaufzeichnung in einen Datenbaustein geschrieben wurden, nach der Aufzeichnung in eine csv-Datei schreiben. Ich arbeite mit der WinCC RT für PC (V13.1) und habe TIA V13.1.
    Ich denke im Moment daran beim Klick auf die Schaltfläche "Messwerte übernehmen" einen VB-Skript aufzurufen und dann den Lesevorgang (aus dem DB) und den Schreibvorgang (in die csv-Datei) in einer FOR-Schleife auszulösen.

    Oder gibt es einen einfacheren Weg.

    Ich wäre für eine stichwortartige Beschreibung der Vorgehensweise dankbar.
    Zitieren Zitieren Daten aus DB in csv-Datei schreiben  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    9.558
    Danke
    825
    Erhielt 2.826 Danke für 2.275 Beiträge

    Standard

    Da lauern sehr viele Stolperfallen --> Linkliste
    Ich würde mir was mit Libnodave und Excel oder VB/C++/... programmieren.
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Earny (23.08.2016)

  4. #3
    Earny ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.04.2008
    Beiträge
    388
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard

    Mit VB.NET + libnodave habe ich das auch schon gemacht.
    Ich würde aber die Messwertübernahme lieber durch die ohnehin vorhandene WinCC-Visu machen lassen.

    Vielleicht werde ich es mal mit VB-Skript versuchen.

  5. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.202
    Danke
    389
    Erhielt 2.297 Danke für 1.911 Beiträge

    Standard

    @Earny:
    Das Problem ist nicht, mit der Siemens-Visu, Daten aus einem DB in eine CSV-Datei zu schreiben. Das geht genau so, wie du es angedeutet hast (Schleife).
    Das Problem ist, dass du die Daten in deine CSV-Datei geschrieben bekommst, die wirklich in dem DB stehen (also nicht die, die vor ein paar Sekunden noch darin waren). Stichwort hier : Konsistenz.
    Gerade bei der von dir genannten großen Anzahl sehe ich das doch schon als problematisch an - das wars es auch, was Harald dir mitteilen wollte ...

    Gruß
    Larry

  6. #5
    Earny ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.04.2008
    Beiträge
    388
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard

    Ich denke Konsistenz ist gegeben: Ich zeichne Messwerte mit z.B. 10ms Zeittakt (OB35) im DB10 auf. Es werden 1000 Messwerte als Real-Werte in die ersten 4000 Bytes des DB10 geschrieben. Die Aufzeichnungsdauer beträgt 10s. Mich interessiert nicht der absolute Zeitwert, zu dem der jeweilige Messwert angefallen ist, sondern ich will mir nur den Messwertverlauf in die csv-Datei schreiben und mir dann später in Excel anschauen.

  7. #6
    Registriert seit
    11.12.2009
    Beiträge
    2.024
    Danke
    383
    Erhielt 372 Danke für 259 Beiträge

    Standard

    Also.. Du willst 10 Sek lang alle 10ms Daten aufzeichnen, und anschließend ganz in Ruhe in eine CSV Datei kopieren?

    Hier ein Codebeispiel für eine Zeile

    Code:
    Sub DATENLOGGING_MESSWERTE(ByRef Text, ByRef Variable1_Text, ByRef Variable1_Wert, ByRef Variable2_Text, ByRef Variable2_Wert, ByRef Variable3_Text, ByRef Variable3_Wert)
    Dim fs
    Dim f
    Dim mode
    Dim pfad
    
    
    
    ' pfad festlegen
    pfad = "Storage Card SD\Logs\"
    
    ' Objekt fuer Filehandling erstellen
    Set fs = CreateObject("filectl.filesystem")
    Set f= CreateObject("filectl.file")
        
    ' Pruefen ob Verzeichnis existiert und sonst erstellen
    If fs.dir(pfad) = "" Then fs.mkdir(pfad)
                                
    ' Daten in Datei schreiben
    ' Format in etwa: 2016.06.05 14:53:31, Dies ist ein Beispieltext, Variable 1, Variable 2
    f.open pfad + "messwerte.csv", 8
    f.LinePrint CStr(Now) & ";" & Text & ";" & Variable1_Text  & ";" & Variable1_Wert  & ";" & Variable2_Text  & ";" & Variable2_Wert  & ";" & Variable3_Text  & ";" & Variable3_Wert  & ";"
    f.Close
    End Sub
    Grüße

    Marcel
    Stell Dir vor es geht, und keiner kriegts hin!

  8. #7
    Registriert seit
    29.03.2004
    Beiträge
    5.178
    Danke
    129
    Erhielt 1.509 Danke für 1.109 Beiträge

    Standard

    In WinCC (V6/V7) würde ich das mit einer Rohdatenvariable lösen, und dann den gesamten Datenblock per BSEND von der SPS zum WinCC schicken. Das lässt sich dann relativ einfach und konsistent per Skript zerlegen und in eine Datei schreiben.

    Was ist denn WinCC RT? Ist das TIA WinCC Professional, also ein abgewandeltes WinCC Scada? Oder Nachfolger von WinCC flexible.
    Geändert von Thomas_v2.1 (23.08.2016 um 19:58 Uhr)
    Die Genialität einer Konstruktion liegt in ihrer Einfachheit – Kompliziert bauen kann jeder.

    (Sergei Pawlowitsch Koroljow, sowjetischer Konstrukteur von Raketen und Weltraumpionier)

  9. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.202
    Danke
    389
    Erhielt 2.297 Danke für 1.911 Beiträge

    Standard

    @Thomas:
    Es hört sich für mich nach dem Flex-Nachfolger in TIA an ...

    @Earny:
    Das du die Daten in deinem DB konsistent hast habe ich nicht einen Moment bezweifelt. Das würde auch noch mit einer sehr viel schnelleren Taktung des OB35 funktionieren.
    Das Problem (und da hast du mich nicht richtig verstanden) ist die Übergabe der Daten von der SPS in die Visu. Wenn du nicht die von Thomas angesprochene Visu hast sondern vielmehr die von mir vermutete dann kannst du dein Array nicht als ein Element (und somit konsistent) an die Visu übergeben - die Visu holt sich den Inhalt mehr oder weniger "nach Gutdünken" - bei LibNoDave hingegen (da du damit ja schon gearbeitet hast) würdest du das Array wieder als einen kompletten Block einlesen.
    Wenn du .Net und LibNoDave kannst - was spricht dann nach deiner Ansicht dagegen, das einzusetzen ?

    Gruß
    Larry

  10. #9
    Earny ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.04.2008
    Beiträge
    388
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard

    Die WinCC Runtime (RT) für PC ermöglicht es, Visualisierungen für einen Standard-PC zu erstellen.

    Normalerweise wird WinCC (V13) dazu benutzt, Parametrierungen für Siemens-Panels zu erstellen. Es gibt aber auch die Möglichkeit, Visualisierungen für einen Standard-PC zu erstellen. Ich weiß, es gibt auch WinCC als Leitsystem. Das ist aber ein anderes Softwarepaket.

    Das WinCC, das ich meine und einsetze wird typischerweise integriert im TIA eingesetzt.

  11. #10
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.202
    Danke
    389
    Erhielt 2.297 Danke für 1.911 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ... also der Flex-Nachfolger ... ist ja nicht das Problem.
    Was sagst du nun zu dem Rest, den ich geschrieben habe ...

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 18.03.2016, 08:21
  2. Step 7 AktualWerte aus DB auslesen und in CSV Datei schreiben
    Von Toki0604 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 16.12.2015, 02:35
  3. Antworten: 7
    Letzter Beitrag: 27.02.2015, 17:04
  4. WINCC flex - Daten in csv-Datei schreiben
    Von dirknico im Forum HMI
    Antworten: 8
    Letzter Beitrag: 02.12.2013, 11:39
  5. Antworten: 11
    Letzter Beitrag: 01.09.2011, 20:24

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •