Skip to content

Datums- und Zeitreihenfunktionen (PML)

Datums- und Zeitreihenfunktionen der PML

Zu den PML-Funktionen gehören Datums- und Zeitreihenfunktionen.

Kalender-/Datumsfunktionen zum Simulationszeitpunkt

Bei zeitabhängigen Simulationen kann der aktuelle Simulationszeitpunkt über die folgenden beiden Systemvariablen vom Typ DateTime abgefragt werden.

NamensraumVariablennameTypBeschreibung
.system.timeDateTimeDatum und Uhrzeit des Simulationszeitpunkts in Ortszeit
.system.timeCET DateTimeDatum und Uhrzeit des Simulationszeitpunkts in Mitteleuropäischer Zeit

Kalenderfunktionen wie getDayOfYear() oder getMinuteOfDay() können aus Zeitreihenwerten die zugehörigen Zeitwerte ermitteln. Die Rückgabewerte sind einheitenlos und vom Typ Number. Zur Konvertierung in Variablen vom Typ Number gibt es folgende Datumsfunktionen, die auf oben genannten Systemvariablen aufgerufen werden können und keine Argumente erfordern.

FunktionBasistypArgumenteBeschreibung
.getHourOfDayDateTime
--- berechnet die Stunde des Tages als Number
.getMinuteOfDayDateTime
--- berechnet die Minute des Tages als Number
.getDayOfWeekDateTime
--- berechnet den Wochentag als Number
(Montag = 1, Dienstag = 2, ... , Sonntag = 7)
.getDayOfMonthDateTime
--- berechnet den Tag des Monats als Number
.getDayOfYearDateTime
--- berechnet den Tag des Jahres als Number
.getMonthOfYearDateTime
--- berechnet den Monat des Jahres als Number
.getYear DateTime
--- berechnet das Jahr als Number
.isLeapYearDateTime
--- gibt als Antwort, ob es sich um ein Schaltjahr handelt

Auf diese Weise wird z. B. in der folgenden Gleichung der Monatstag des Simulationszeitpunkts auf die mitteleuropäische Zeitzone bezogen ermittelt.

dayOfMonthCET = .system.timeCET.getDayOfMonth();

Liegt keine Zeitabhängigkeit vor, wird Null zurückgegeben. Die Kalenderfunktionen erlaubt Modelle, die vom aktuellen Simulationszeitpunkt abhängen, wie z. B. die Berechnung des Sonnenstands.

begin declaration

Number a ~ 1220 [min];

Number b ~ 180 [];

Number c ~ 5 [min];

end declaration

begin step

c := 1[min];

a = .system.time.getMinuteOfDay ( ) * c;

b = .system.time.getDayOfYear ( ) ;

end step

Erzeugen einer Dauerlinie

Die Funktion isLoadDurationOf erzeugt eine Dauerlinie (in der folgenden Abbildung rot) als eine neue Zeitreihe, in der die Daten der Eingabezeitreihe (in der folgenden Abbildung blau) absteigend sortiert sind.

Die Syntax lautet:

Ergebnisvariable.isLoadDurationOf(Eingabevariable);

Die Ergebnisvariable muss mit einem Primitiv verbunden sein, in welches die berechnete Zeitreihe direkt gespeichert wird. Die Zeitachse der Dauerlinie ist abstrakt und stimmt insbesondere nicht mit den Simulationszeitpunkten überein. In der Simulation kann mit diesen Ergebnissen nicht weiter gerechnet werden, weil inkonsistente Zeitpunkte vorliegen.

Um zum Beispiel eine Dauerlinie für die Betriebsstunden in der Komponente BHKW zu erzeugen, wird zunächst die Ergebnisvariable deklariert und mit einem Primitiv verbunden.

Number OperatingHoursLoadProfile(„/Local/eProc/…“);

Anschließend kann in den Gleichungen die Funktion isLoadDurationOf als Anweisung aufgerufen werden.

OperatingHoursLoadProfile.isLoadDurationOf(OperatingHours);

Erweiterte Zeitreihenfunktionen

Es gibt erweiterte Zeitreihenfunktionen, die es erlauben, typische Eigenschaften wie Minimum, Maximum, Mittelwert oder Integral für den gesamten Simulationszeitraum oder für jeden Tag, jeden Monat oder jedes Jahr innerhalb des Simulationszeitraums zu ermitteln.

Diese Funktionen erfordern drei Parameter. Die Syntax lautet im Allgemeinen:

Ergebnisvariable.Zeitreihenfunktion(Eingabevariable, Zeitraum, Referenzzeit);

Die Zeitreihenfunktion wird auf der Zeitreihe der Eingabevariable vom Typ Number ausgeführt und darf nur als Anweisung verwendet werden. Das Ergebnis wird in der Ergebnisvariable, ebenfalls vom Typ Number, gespeichert.

Für die vier Funktionen isMinValueOf, isMaxValueOf, isMeanValueOf und isWeightedMeanValueOf ist das Ergebnis eine konstante Zeitreihe.

Für die Funktion isIntegralOf ist das Ergebnis eine Zeitreihe, die für jeden Zeitpunkt das Integral der Eingabezeitreihe ab dem Referenzzeitpunkt enthält. Der Referenzzeitpunkt richtet sich nach dem Zeitraum.

Zeitraum

Der Zeitraum bestimmt die jeweils betrachteten Zeiträume. Er ist ein Parameter vom Typ Integer. Es gibt die folgenden vier verschiedenen Zeitraumvarianten:

WertZeitraum
0gesamter Simulationszeitraum
1Jahr
2Monat
3Tag

Referenzzeitpunkt

Der Referenzzeitpunkt ist ein Parameter vom Typ Integer und bestimmt den Beginn der jeweiligen Zeiträume. Das Integral beginnt am Referenzzeitpunkt mit 0.

  • Bezieht sich die Berechnung auf den gesamten Simulationszeitraum, so hat der Parameter keinen Einfluss.
  • Bezieht sich die Berechnung auf ein Jahr, so entspricht der Parameter der Nummer des Monats, in dem jedes Jahr beginnt (Januar = 1, Februar = 2, usw.).
  • Bezieht sich die Berechnung auf einen Monat, so entspricht der Parameter dem Tag, an dem jeder Monat beginnt.
  • Bezieht sich die Berechnung auf einen Tag, so entspricht der Parameter der Stunde, in der jeder Tag beginnt.

Auf diese Weise kann man jahrweise ab Juli, monatsweise ab dem 15. des Monats oder tagweise ab 12 Uhr rechnen.

Die Standardwerte ergeben sich, indem man den Wert 0 wählt. Man kann in die Funktion auch nur den ersten bzw. die ersten beiden Parameter eintragen. Die restlichen Parameter werden dann als Null interpretiert.

Verfügbare Zeitreihenfunktionen

Zeitreihenfunktionen wie isMaxValueOf() oder isWeightedMeanValueOf() berechnen eine neue Zeitreihe, indem sie die Simulationszeitpunkte mit in Betracht ziehen. So kann z. B. für eine Eingabezeitreihe monatsweise das Maximum bestimmt werden. Die Funktionen erhalten drei Inputs, deren erster der Eingabezeitreihe entspricht. Der zweite Input ist eine Steuerungsgröße, die entscheidet, ob die Operation für den Gesamtzeitraum (Wert 0), pro Jahr (Wert 1), pro Monat (Wert 2) oder pro Tag (Wert 3) ausgeführt wird. Der dritte Input ist ein Referenzzeitpunkt, mit dem das betrachtete Jahr jeweils im k-ten Monat oder der betrachtete Monat jeweils am k-ten Tag begonnen wird.

Die verfügbaren Zeitreihenfunktionen sind in der folgenden Tabelle zu sehen.

FunktionBasistypArgumenteBeschreibung
.isMinValueOf Number
Number, Integer, Integer (3)berechnet das Minimum pro Jahr, Monat, Tag oder für den gesamten Simulationszeitraum
.isMaxValueOf Number
Number, Integer, Integer (3)berechnet das Maximum pro Jahr, Monat, Tag oder für den gesamten Simulationszeitraum
.isMeanValueOf Number
Number, Integer, Integer (3)berechnet den Mittelwert pro Jahr, Monat, Tag oder für den gesamten Simulationszeitraum
.isWeightedMeanValueOfNumber
Number, Integer, Integer (3)berechnet den gewichteten Mittelwert pro Jahr, Monat, Tag oder für den gesamten Simulationszeitraum
.isIntegralOfNumber
Number, Integer, Integer (3)berechnet das Integral pro Jahr, Monat, Tag oder für den gesamten Simulationszeitraum

Für Variablen a, b, c vom Typ Number ordnet

b.isMaxValueOf(a, 2);

jedem Zeitpunkt von b das Monatsmaximum von a zu. Der nicht spezifizierte Parameter für den Referenzzeitpunkt nimmt hier den Standardwert Null an. Ferner ordnet

c.isMeanValueOf(a, 1, 4);

jedem Zeitpunkt von c das Jahresmittel von a im Zeitraum April-März zu. Die Ergebnisse für einen Wärmebedarf sind in der folgenden Abbildung dargestellt: sie zeigt den Wärmebedarf eines Jahres mit Monatsmaxima (blau) und Jahresmittel (rot).

Werden das zweite und dritte Argument weggelassen, ergibt sich der Ausdruck analog zu dem im Abschnitt Einfache Zeitreihenfunktionen.

Die Ausdrücke

a = b.min() ;

und

a.isMinValueOf(b) ;

sind identisch.

An den Anfang scrollen