Auslesen von Archivwerten (lange Ausleszeiten)

Auslesen von Archivwerten (lange Ausleszeiten)

Moin,

wir haben ein Archiv mit 2000 Datenpunkte, wo täglich um 0 Uhr ein Wert gespeichert wird. Das Archiv wird in ARX-Datein gespeichert.

Über ein Addin wollen wir immer die letzten 31 Werte auslesen und weiter verarbeiten. Hierbei kommt es zu langen Wartezeiten (mehrere Minuten).

Folgend der Ausschnitt zum Auslesen der Archivdaten. Alleine das Programm benötigt schon sehr lange und ist eigentlich entsprechend der Hilfe programmiert.

Wenn man die Funktion Archiv Exportieren ausführt und in eine CSV-Datei exportieren lässt, sind die Daten innerhalb einer Sekunde (7MB Dateigröße) vorhanden. Gibt es eine Möglichkeit den Zugriff zu beschleunigen?

  1.       Dim zArv As IRuntimeArchive = Nothing
                Dim zarvVar As IRuntimeArchiveFilterVariable = Nothing

                '  Zuweisung des Archivs für die Zählerdaten
                zArv = main.RuntimeArchiveCollection.Item("XYZ")
                ' Nur ausführen, wenn es das Archiv gibt
                If Not zArv Is Nothing Then


                    ' Erstellung eines neuen Archivfilters
                    Dim zArv_Filter As IRuntimeArchiveFilter = zArv.FilterCollection.Create
                    ' Hinzufügen der Variablen aus dem Archiv zum Filter
                    For i = 0 To zArv.VariableCollection.Count - 1
                        zArv_Filter.AddVariable(zArv.VariableCollection.Item(i))
                    Next
                    ' Setzen der Startzeit im UTC-Zeitformat als Integer Wert. Weiterhin ist die Beachtung der Sommer / Winterzeit notwendig

                    zArv_Filter.EndTime = Zeit.System2Zenon(Sommer_Winter_Zeit(DateTime.Now))
                    zArv_Filter.StartTime = Zeit.System2Zenon(Sommer_Winter_Zeit(DateTime.Now.AddDays(-30)))

                    ' Nach den Variablen filtern
                    Dim zarv_FilterVars As IRuntimeArchiveFilterVariableCollection = zArv_Filter.Query

                    Dim AnzahlVars As Integer = zarv_FilterVars.Count
                    ' Durchlaufen der gefilterten Archivvariablen
                    For j = 0 To AnzahlVars - 1

                        ' Zuweisung der Archivvariable
                        zarvVar = zarv_FilterVars.Item(j)
                        ' Erstellung einer Collection für die Archivwert
                        zarvVar.ArchiveValueCollection.Create()


                        Dim AnzahlValues As Integer = zarvVar.ArchiveValueCollection.Count
                        ' Durchlaufen der Archivwerte für die aktuelle Archivvariable. Es werden immer die letzten 30 Tage (31 Werte) gefiltert
                        For i = 0 To AnzahlValues - 2
                            ' Speicherung des Datumstempel, der anschließend noch einmal für die verschiedenen Dateiformate bearbeitet werden muss
                            Dim zArvValue As IRuntimeArchiveValue = zarvVar.ArchiveValueCollection.Item(i)

                        Next

                    Next
                End If


    Disclaimer

    This document governs the use of our Community Forum. By registering and using the platform, you accept these conditions.

    The COPA-DATA Community Forum serves to encourage the exchange of information and experience about the zenon software between forum users respectively zenon users.

    Please mind that any published information on the Community Forum is the subjective opinion and view based on the experience and the level of knowledge of the author. COPA-DATA does not overtake any responsibility for the content and the accuracy of the shared information.

    Users of the Community Forum are encouraged to share only well-founded experiences and to point out any risks associated with the implementation of proposed solutions to problems. COPA-DATA at its absolute discretion, reserves the right to moderate the forum. In this connection COPA-DATA may remove any information containing false facts, potentially dangerous solutions, bad language or content that may insult, degrade or discriminate others. COPA-DATA may block a non-complying user from forum access if the user violated this provision.

    COPA-DATA reserves the right to change this document from time to time at own discretion.


    Ing. Punzenberger COPA-DATA GmbH
    Karolingerstraße 7b · 5020 Salzburg · Austria
    www.copadata.com