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