Quantcast
Channel: SPS-Forum - Automatisierung und Elektrotechnik
Viewing all articles
Browse latest Browse all 49723

TIA Laden von Langzeitarchiv schlägt fehl

$
0
0
Hallo,

ich habe mehrere Variablen welche in einer Kurvenanzeige darstelle. Über einen Trigger aus der SPS werden diese Echtzeitdaten dann auch in eine Archiv gespeichert bzw von den Archiven wieder in der Kurvenanzeige dargestellt.
Ich habe auf der HMI einen EA-Feld, in welchem in einen Eintrag auswähle, worauf ein bestimmtes Archiv geladen werden soll. Gibt es dieses Archiv nicht, wird ein Leerarchiv geladen.
Also eine Erweiterung des Siemensbeispiel.

Das Speichern klappt auch ohne Probleme. Mein Problem ist das Laden von gespeicherten Archiven.

Ich hab mir mal beispielhaft 5 Archive gespeichert.
Ein Archiv mit 1kB welches Leer ist, um die Kurvenanzeige leer darzustellen.
Je zwei Archive mit 10kB und mit 34kB.

Das leere Archiv lässt sich immer laden. Egal welches Archiv zuvor geladen wurde.
Die anderen Archive lassen sich nur laden, wenn zuvor ein gleich großes oder ein größeres geladen wurde.
Ansonsten erscheint die Systemmeldung 80053 Fehler beim Lesezugriff auf geschlossenes Archiv.

An den Archiven selbst liegt es nicht, da auch beim Tausch der Dateinamen das selbe Phänomen auftritt.

Hier der VBS-Code zum Laden der Archive.

Code:

Sub VBS_Restore_archive()
    'Tip:
    ' 1. Verwenden Sie die Tastenkombination <CTRL+SPACE> oder <CTRL+I>, um eine Liste aller Objekte und Funktionen zu öffnen
    ' 2. Schreiben Sie den Code unter Verwendung des HMI Runtime Objekts.
    '  Beispiel: HmiRuntime.Screens("Screen_1").
    ' 3. Verwenden Sie die Tastenkombination <CTRL+J>, um eine Objektreferenz zu erstellen.
    'Schreiben Sie den Code ab dieser Position:
   
    Dim fso, f
    Dim restore_entry, restore_fields, date_time, Dateiname
    Set fso = CreateObject("Scripting.FileSystemObject")
    'archive_path = SmartTags("File_" & fileChosen)
   
    '[Archiv]_[Datum]_[Uhrzeit]_[HMI-Name] z.B.: Qualitaet0_20190721_201509_Benutzer
    Dateiname = "Qualitaet0_" & SmartTags("OEE.HMI.Archivierung.Datei_Datum") & "_" & SmartTags("OEE.HMI.Archivierung.Datei_Uhrzeit") & "_" & SmartTags("OEE.HMI.Archivierung.HMI_Name") & ".csv"
    archive_path = SmartTags("OEE.HMI.Archivierung.Pfad_Echtzeit") & "\" & Dateiname 'SmartTags("File_" & fileChosen)
    current_path= SmartTags("OEE.HMI.Archivierung.Pfad_Echtzeit") & "\Qualitaet_Archiv0.csv" '"C:\Storage Card SD\Archiv_Qualitaet.csv"
   
    If Not fso.FileExists(archive_path) Then 'Datei existiert nicht
        'Leere Datei laden
        Dateiname = "Qualitaet0_Leer.csv"
        archive_path = SmartTags("OEE.HMI.Archivierung.Pfad_Echtzeit") & "\" & Dateiname
        ShowSystemAlarm "Leere Datei geladen."
       
    End If
       
    fso.CopyFile archive_path, current_path, 1 'Datei kopieren

    Set f = fso.GetFile(current_path) 'Datei laden
    f.Attributes = 0 'Schreibschutz entfernen

    Set f = fso.OpenTextFile(current_path, 1) 'Datei öffnen

    '-----------------------------------------------------
    Do While Not f.AtEndOfStream
        restore_entry = f.ReadLine 'Zeile lesen
        restore_fields = Split(restore_entry, ";") 'Spalten trennen (Trennzeichen ggf. anpassen)
        ShowSystemAlarm "A: " & restore_fields(0)
       
        If Not restore_fields(0) = """$RT_COUNT$""" Then 'Nicht die letzte Zeile
            date_time = Mid(restore_fields(1), 2, Len(restore_fields(1))-2) 'Datum und Uhrzeit holen -> "23.07.2019  14:17:57" => Ab Zeichen 2 bis zum vorletzten Zeichen
            ShowSystemAlarm "B: " & date_time
           
        Else 'Nix machen => ELSE entfernen
            ShowSystemAlarm "C: " & date_time
            'Exit Do

        End If
       
    Loop

    '------------------------------------------------------
    Set fso = Nothing
    Set f = Nothing

    OpenAllLogs

    If IsDate(date_time) = True Then
        restore_time = DateAdd("s", trendview_offset, CDate(date_time))
   
    Else
        ShowSystemAlarm "Can't set trend view time to <" & date_time & ">."
       
    End If
   
    ShowSystemAlarm "Restored archive <" & archive_path & "> to <" & current_path &"> at " & restore_time & "."
       
End Sub

Mein Gedanke war auch ob es vielleicht an der Dateigröße selbst liegt. Das die Datei noch nicht fertig geladen ist und die Software dieses aber schon öffnet. Kann ich mir bei 34kB aber nicht vorstellen...
Wie im Anhang zu sehen ist, werden die Daten auch alle so geladen wie sie sollen. Die Ausgabe der Meldungen (A, B, C) ist auch in der Reihenfolge, wie es sein soll.

Habt ihr hierzu vielleicht eine Idee, was dieses Problem hervorruft?
Angehängte Grafiken

Viewing all articles
Browse latest Browse all 49723

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>