Process Modeling Language (PML)
Die Process Modeling Language (PML) ist die Modellbeschreibungssprache des Simulationsmoduls (eSim). Sie enthält die Gleichungen, Algorithmen und Zuweisungen, die zur Beschreibung einer Komponente in eSim benötigt und die während einer Simulation berechnet werden.
Mithilfe der PML wird die Verbindung zwischen den Variablen definiert. Alle Variablen müssen in der Deklaration ausreichend deklariert werden. Die Variablen können mit Primitiven verknüpft und in Formularansichten veranschaulicht werden.
Im Simulationsformular Modellbeschreibung sind die globalen Modellierungssichten ebenso wie im Template-Editor vorhanden. Sie können für einfache Veränderungen benutzt werden.
Aufbau der PML
Die PML besteht aus Abschnitten. Sie leiten die Modellierungsgleichungen, die Deklaration oder die Anfangswertvergabe ein und aus.
Die Schriftfarben werden für eine bessere Übersichtlichkeit automatisch vergeben.
Die Einrückungen dienen lediglich der besseren Übersichtlichkeit und haben sonst keine Bedeutung.
Das folgende Beispiel zeigt eine im Template-Editor geöffnete solarPhotovoltaic-Elementarkomponente.
Die Modellbeschreibung unterteilt sich in die Deklaration, die in einem separaten Artikel behandelt wird, und das Gleichungssystem, das im Folgenden kurz vorgestellt und in drei separten Artikeln detailliert beschrieben wird.
Gleichungssystem
Die wesentlichen Bestandteile eines Modells werden im Gleichungssystem zwischen begin step und end step beschrieben. In diesen sogenannten step-Abschnitten können Gleichungen, Zuweisungen und Randbedingungen enthalten sein.
begin step
//************************************************//
//*** NOCT: Nominal Operation Cell Temperature ***//
//*** STC: Standard Test Conditions **************//
//************************************************//
P_max_solar = PerformanceRatio * peak_Facility * (Irradiance_global_inclined/Irradiance_STC) * (1 + Temp_Coefficient*(T_cell-T_cell_STC));
lP_max_solar == P_max_solar ;
//Specific yield
FinalYield := P_max_solar/peak_Facility;
begin case(opt_PeakPower >= 0.5) // Peak per solar cell
peak_Facility := NumberOfModules * peak_Facility_perModule ;
Area_collector := NumberOfModules * AreaPerModule ;
area.lArea == Area_collector ;
end case
lP_nom == peak_Facility ;
P_nom = peak_Facility ;
//*********************************//
//*** PV Temperature Correction ***//
//*********************************//
T_cell = T_amb + (Irradiance_global_inclined/Irradiance_NOCT)*(T_cell_installed_NOCT – T_amb_NOCT);
//PV Temperature dependence
T_cell_installed_NOCT = T_cell_NOCT + Delta_T_cell_installed_NOCT_correction;
//Temperature_Factors
T_cell_STC = 298.15 [K]; //Cell Temperature at standard test conditions
Irradiance_STC := 1000 [W/m^2]; //Incident radiation at standard test conditions
Irradiance_NOCT := 800 [W/m^2]; //Solar radiation at which the Nominal Operating Cell Temperature (NOCT) is defined
T_amb_NOCT := 293.15[K]; //ambient temperature at which the Nominal Operating Cell Temperature (NOCT) is defined
T_cell_NOCT := 318.15[K]; //Nominal Operating Cell Temperature
//Option NOCT Temperature
if (opt_NOCT < 0.5 )
Delta_T_cell_installed_NOCT_correction := -3[K];
else if(opt_NOCT > 0.5 && opt_NOCT < 1.5)
Delta_T_cell_installed_NOCT_correction := 18[K];
else if(opt_NOCT > 1.5 && opt_NOCT < 2.5)
Delta_T_cell_installed_NOCT_correction := 11[K];
else if(opt_NOCT > 2.5 && opt_NOCT < 3.5)
Delta_T_cell_installed_NOCT_correction := 2 [K];
else
Delta_T_cell_installed_NOCT_correction := -1 [K];
end if
end step
Das Komponentenmodell besteht aus Zuweisungen, algebraischen und linearen Gleichungen, die während einer Simulation berechnet werden.
- Gleichungen, Zuweisungen und Variablendeklarationen werden mit einem Semikolon (;)
beendet. - Dezimaltrennzeichen ist ein Punkt.
- Die Einheiten auf beiden Seiten müssen ineinander umrechenbar sein.
delta_T_water : = T_water_out – T_water_in;
Anfangswerte initialisieren
Bestimmte Modellkomponenten wie Speicher besitzen eine weitere Modellierungssicht, die der Initialisierung von Anfangswerten dient. Die Modellierung von Speichern unterscheidet sich von der Modellierung anderer Komponenten darin, dass Speicher mehrere Zeitschritte miteinander koppeln. Während bei einer Simulation ohne Speicher davon ausgegangen wird, dass die Zeitschritte unabhängig voneinander sind, werden durch die Variable, die den Speicherinhalt beschreibt, die Zeitschritte miteinander verknüpft. In der Initialisierungsansicht wird die Modellierung mit einem init-Abschnitt angeführt, z. B.:
begin init
lE_integral.initIntegral(E_0) ;
end init
Diese Modellierung lässt ausschließlich Zuweisungen zu, in denen alle Variablen vor der Auswertung des Gleichungssystems bekannt sind (z. B. Eingabeprimitive).
Kommentare
Zum besseren Verständnis ist das Modell ausreichend mit Kommentaren zu versehen.
// Einzeiliger Kommentar
oder
/*
Mehrzeiliger
Kommentar
*/
PML-Meldungen
| Syntax | Beschreibung |
|---|---|
| .system.warning(Text) | modellspezifische Warnung |
| .system.error(Text) | modellspezifischer Fehler |
Beispiel
// Error
if(P_in < P_out)
.system.error(“<id>8507 <de_DE> Fehlerhafte Auslegungsdaten: Im Nennbetriebspunkt übersteigt die erzeugte Leistung die Antriebsleistung. Bitte überprüfen Sie die Eingabedaten. <en_US> Wrong dimensioning: At the nominal point, the power generated exceeds the drive power. Please verify the plausibility of the input data.”);
end if
Anzeige der Meldung im Simulator-Fenster:
Der Meldungstext kann auf Deutsch und Englisch eingegeben werden. Die Sprachen werden durch <de_De> und <en_US> eingeleitet, zum Beispiel:
<de_DE>Fehler im Modell! <en_US> Error in the model!






