Energiehaushalt eines Hauses: Lastkollektive LKT

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Abbildung 1: Symbolbild der Seminaraufgabe [1]

Autoren: Marvin Stute; David Schartner
Betreuer: Prof. Dr.-Ing. M. Göbel

→ zum Hauptartikel: Systems Design Engineering - Seminaraufgabe SoSe 2023: Energiehaushalt eines Hauses



Einleitung

Zielsetzung der Seminaraufgabe

V-Modell

Abbildung. 2: V-Modell


Anforderungsdefinition: Lastenheft

Funktionaler Systementwurf

Der funktionale Systementwurf war im Sommersemester 2023 kein Bestandteil der Gruppenaufgabe und wurde von Prof. Dr. Göbel bereitgestellt.

Technischer Systementwurf

Komponentenspezifikation

Programmierung / Modellierung

In der Programmierung werden die Komponenten den zuvor festgelegten Spezifikationen entsprechend umgesetzt. Die Programmierung erfolgte auf Basis des im technischen Systementwurf entworfenen Simulink Modells. Neben dem Simulink Modell wurde außerdem eine Matlab-Datei mit Parametern entworfen. Diese wird beim Start des Programms aufgerufen, sodass die Parameter im Workspace gespeichert sind.

%****************************************************************
%                   Hochschule Hamm-Lippstadt                   *
%****************************************************************
% Modul	          : parameter_LKT.m                             *
%                                                               *
% Datum           : 22.05.2023                                  *
%                                                               *
% Funktion        : Speichern der Parameter für die Last-       *
%                   kollektive des Haus-Modells im Workspace    *
%                                                               *
% Implementation  : MATLAB 2022a                                *
%                                                               *
% Req. Toolbox    : -                                           *
%                                                               *
% Req. Dateien    : Temperaturdaten.mat                         *
%                                                               *
% Author          : David Schartner; Marvin Stute               *
%                                                               *
% Bemerkung       :                                             *
%                                                               *
% Letzte Änderung : 04.06.2023                                  *
%                                                               *
%***************************************************************/

load('Temperaturdaten.mat')

PAR_LKT_Grundflaeche = 100; %in m^2
PAR_LKT_Deckenhoehe = 2.5; % in m
PAR_LKT_Etagen = 2; % in Etagenanzahl
PAR_LKT_Fensterflaeche = 25; % in Prozent
PAR_LKT_Strompreis = 0.3606; % in €/kWh
PAR_LKT_WasserverbrauchProPerson = 0.1230; % in m^3 für eine Person
PAR_LKT_StromverbrauchProPerson = 6.8; % in kWh für eine Person
PAR_LKT_zweiErwachsene = 2; % Anzahl Personen
PAR_LKT_zweiKinder = 2; % Anzahl Personen
PAR_LKT_Wochenendtag = 1;
PAR_LKT_Urlaubstag = 0;

Im Folgenden sind die einzelnen Komponenten dargestellt:

Eigenschaften des Hauses

Die nachfolgende Abbildung zeigt die Modellierung der Komponente "Eigenschaften des Hauses". Diese ist in einem Simulink-Subsystem implementiert. Die Parameter werden direkt aus der Parameter-Datei ausgelesen und mit einem Bus Creator auf einem Bus gespeichert.

Abbildung 7: Modellierung der Komponente "Eigenschaften des Hauses"


Daten

Die nachfolgende Abbildung zeigt die Modellierung der Komponente "Daten". Diese ist in einem Simulink-Subsystem implementiert. Die aktuelle Temperatur wird aus einem Lookup-Table ausgelesen. Dafür werden die Sekunden der Simulationszeit in Stunden bzw. Tage umgewandelt. Der Wasser- & Stromverbrauch wird auf Basis der Anzahl der Bewohner im Haus berechnet. Außerdem werden die Stromkosten über die Solarstromerzeugung und dem aktuellen Stromverbrauch bestimmt. Die vier Ausgänge gehen dann direkt aus dem Submodul heraus.

Abbildung 7: Modellierung der Komponente "Daten"


Code für die Funktion, die Strom-& Wasserverbrauch für die Urlaubstage reduziert:

function TageZuhause = fcn(aktuellerTag)

% Die Funktion zieht die Tage von dem Tageszähler ab, an denen die Familie
% außer Haus ist über den Sommer- bzw. Winterurlaub

persistent TageAusserHausSommer TageAusserHausWinter ersterDurchlauf Sommerurlaub Winterurlaub

if isempty(ersterDurchlauf)

    Sommerurlaub = [213 227]; 
    Winterurlaub = [358 365]; 
    TageAusserHausSommer = 0; % initialisiert den Zähler für Tage die Sie nicht zuhause sind
    TageAusserHausWinter = 0;
    ersterDurchlauf = 1;
end

if aktuellerTag>=Sommerurlaub(1) && aktuellerTag <= Sommerurlaub(2)
    
    TageAusserHausSommer = aktuellerTag - Sommerurlaub(1);
    
end

if aktuellerTag>=Winterurlaub(1) && aktuellerTag <= Winterurlaub(2)

    TageAusserHausWinter = aktuellerTag - Winterurlaub(1);

end

TageZuhause = aktuellerTag - TageAusserHausSommer - TageAusserHausWinter;

Szenarioermittlung

Die nachfolgende Abbildung zeigt die Modellierung der Komponente "Szenarioermittlung". Diese ist in einem Simulink-Subsystem implementiert. Die aktuelle Simulationszeit wird in den aktuellen Tag und die aktuelle Stunde aufgeteilt. Auf Basis der Stunde wird die aktuelle Zahl der Bewohner im Haus für jedes Szenario bestimmt. Auf Basis des aktuellen Tags wird das Szenario festgelegt. Anschließend wird die Anzahl der Personen im Haus ausgegeben.

Abbildung 7: Modellierung der Komponente "Szenarioermittlung"


Code für die Funktion die das aktuelle Szenario festlegt:

function LKT_PersonenZuhause = fcn(WochentagP, WochenendTagP, UrlaubstagP, aktuellerTag)


LKT_PersonenZuhause = 0; % Initialisiert die Ausgangsvariable
Sommerurlaub = [213 227]; % Tage in denen die Familie im Sommerurlaub ist
Winterurlaub = [358 365]; % Tage in denen die Faimilie im Winterurlaub ist

if aktuellerTag>=Sommerurlaub(1) && aktuellerTag <= Sommerurlaub(2) || aktuellerTag>=Winterurlaub(1) && aktuellerTag <= Winterurlaub(2)
    % Überprüft ob sich die Personen im Urlaub befinden und wählt falls es
    % der Fall ist das passende Szenario aus
    LKT_PersonenZuhause = UrlaubstagP;
    return
end

day  = mod(aktuellerTag, 7); % Der Rest aus der Division mit 7 gibt an, welcher Wochentag aktuell ist (Zahl zwischen 0 - 6)

if day == 5 || day == 6 % Die Tage 5 & 6 sind Samstag und Sonntag, also Wochenende
    weekend = true;
else
    weekend = false;
end

% Überprüft ob Wochenende ist und wählt das passende Szenario aus
if weekend == false
    LKT_PersonenZuhause = WochentagP;
    return
elseif weekend == true
    LKT_PersonenZuhause = WochenendTagP;
    return
end

Code für die PAR_LKT_Werktag Funktion.

function y = fcn(u)

if u >= 0 && u < 8
    y = 1;
elseif u >= 8 && u < 14
    y = 0;
elseif u >= 14 && u < 18
    y = 0.75;
else
    y = 1;
end

Datum und Tageszeit

Die nachfolgende Abbildung zeigt die Modellierung der Komponente "Daten und Tageszeit". Diese ist in einem Simulink-Subsystem implementiert. Sie gibt über den "Clock"-Block die Simulationszeit der gesamten Simulationszeit in Sekunden an.

Abbildung 7: Modellierung der Komponente "Datum und Tageszeit"


Komponententest

Der Komponententest der Gruppe "Lastkollektive LKT" wurde durch die Gruppe ISO (Nico Kasprik und Jonas Loddenkemper) durchgeführt. Er umfasst den Test der Einzelnen Komponenten voneinander getrennt um die für sich stehende Funktionalität sicherzustellen. Nachfolgend die Dokumentation dieser Tests:

Eigenschaften des Hauses

Testfall-ID Testfall-Name Anforderungs-ID Vorbedingungen und Eingänge Aktionen Erwartetes Ergebnis Ergebnis Bewertung Kommentar
010 Test der gesamten Komponente "Eigenschaft des Hauses" xx Parameter geladen; mit konstanten Werten Simulation eines Zeitschritts Ausgabe der Parameter ohne Änderung Parameter Ausgabe ohne Änderung i.O. Daten werden an Bus und Ausgang weitergegeben
020 Ausgabe Grundfläche xx Parameter geladen; Parameter konstant Simulation eines Zeitschritts Ausgabe der Parameter ohne Änderung Parameter Ausgabe ohne Änderung i. O. Daten werden an Bus und Ausgang weitergegeben
030 Ausgabe Deckenhöhe xx Parameter geladen; Parameter konstant Simulation eines Zeitschritts Ausgabe der Parameter ohne Änderung Parameter Ausgabe ohne Änderung i. O. Daten werden an Bus und Ausgang weitergegeben
040 Ausgabe Etagen xx Parameter geladen; Parameter konstant Simulation eines Zeitschritts Ausgabe der Parameter ohne Änderung Parameter Ausgabe ohne Änderung i. O. Daten werden an Bus und Ausgang weitergegeben
050 Ausgabe Fensterfläche xx Parameter geladen; Parameter konstant Simulation eines Zeitschritts Ausgabe der Parameter ohne Änderung Parameter Ausgabe ohne Änderung i. O. Daten werden an Bus und Ausgang weitergegeben

Daten

Testfall-ID Testfall-Name Anforderungs-ID Vorbedingungen und Eingänge Aktionen Erwartetes Ergebnis Ergebnis Bewertung Kommentar
010 Test der gesamten Komponente "Daten" xx Parameter geladen; mit konstanten und variablen Werten Simulation eines Jahres Ausgabe der Parameter mit korrekter Berechnung Ausgabe erfolgt rechnerisch korrekt i. O.
020 Ausgabe Strompreis xx Parameter geladen; mit konstanten Werten Ein Zeitschritt Simuliert korrektes Ergebnis als Ausgabe Ausgabe erfolgt rechnerisch korrekt i. O.
030 Ausgabe Wasserverbrauch xx Parameter geladen; Parameter variiert Simulation eines Jahres korrektes Ergebnis als Ausgabe Ausgabe erfolgt rechnerisch korrekt i. O.
040 Ausgabe Anzahl Erwachsene xx Parameter geladen; Parameter konstant Simulation eines Jahres korrektes Ergebnis als Ausgabe Ausgabe erfolgt rechnerisch korrekt i. O.
050 Ausgabe Anzahl Kinder xx Parameter geladen; Parameter konstant Simulation eines Jahres korrektes Ergebnis als Ausgabe Ausgabe erfolgt rechnerisch korrekt i. O.
060 Ausgabe Temperatur xx Parameter geladen; Parameter variiert Simulation eines Jahres korrektes Ergebnis als Ausgabe Ausgabe innerhalb einen Jahres erfolgt korrekt, danach Abfall der Temperatur siehe Kommentar Für Simulationszeitraum von einem Jahr alles i.O., danach Wiederholung Look-Up-Table oder neue Daten notwendig
Abbildung 7: Ausgabe Temperaturdaten innerhalb eines Jahres
Abbildung 7: Ausgabe Temperaturdaten nach mehr als einem Jahr
Abbildung 7: Ausgabe Wasserverbrauch


Szenarioermittlung

Testfall-ID Testfall-Name Anforderungs-ID Vorbedingungen und Eingänge Aktionen Erwartetes Ergebnis Ergebnis Bewertung Kommentar
010 Test der gesamten Komponente "Szenario Ermittlung" xx Parameter geladen; über Simulationszeit Fortlaufende Simulation Ausgabe varriert Ausgabe erfolgt rechnerisch korrekt; Parameter in Parameterdatei fehlen n. i. O. PAR_LKT_Wochenendtag und PAR_LKT_Urlaubstag fehlen
020 Personenanzahl am Tag xx Parameter geladen; über Simulationszeit Fortlaufende Simulation Personenanzahl unterscheidet sich nach Uhrzeit Personenanzahl variiert innerhalb des Tages i. O.
030 Personenanzahl im Jahr xx Parameter geladen; über Simulationszeit Fortlaufende Simulation Arbeitstage und Urlaubstage In Urlaubszeit Anzahl Peronen = 0 i. O.
Abbildung 7: Anzahl der Personen über ein Jahr dargestellt von 0-4


Datum und Tageszeit

Testfall-ID Testfall-Name Anforderungs-ID Vorbedingungen und Eingänge Aktionen Erwartetes Ergebnis Ergebnis Bewertung Kommentar
010 Test der gesamten Komponente "Datum und Tageszeit" xx Parameter geladen; über Simulationszeit Fortlaufende Simulation Simulation des Tages Zeit wird simuliert i. O.
020 Ausgabe der Clock xx Parameter geladen; über Simulationszeit Fortlaufende Simulation Simulation des Tages in Sekunden Zeit wird in Sekunden simuliert i. O.

Integrationstest

Der Integrationstest der Gruppe "Lastkollektive LKT" wurde durch die Gruppe ISO (Nico Kasprik und Jonas Loddenkemper) durchgeführt. Er umfasst den Test der einzelnen Komponenten als Verbund in dem Model "LKT - Lastkollektive". So soll sichergestellt werden, dass sich aufeinander beziehende Komponenten im Verbund funktionieren und einen sinnvollen Output liefern. Nachfolgend die Dokumentation dieser Tests:

Testfall-ID Testfall-Name Anforderungs-ID Vorbedingungen und Eingänge Aktionen Erwartetes Ergebnis Ergebnis Bewertung Kommentar
1000 Test auf Gesamtfunktion xx Parameter geladen fortlaufende Simulation Aufruf des Modells Aufruf des Modells i. O.
1100 Test des Input Bus xx Modell laden fortlaufende Simulation Konstanten werden im Modell weitergegeben Konstanten werden im Modell an den richtigen Stellen benutzt i. O.
1110 Konstante ESP_Verbrauch xx Konstante gesetzt fortlaufende Simulation Konstante = 5000 ESP_Verbrauch = 5000 i. O.
1120 Konstante EEZ_PVLeistungAC xx Konstante gesetzt fortlaufende Simulation Konstante = 2000 EEZ_PVLeistungAC = 2000 i. O.
1200 Test des Output Bus xx Modell laden fortlaufende Simulation Konstanten werden im Modell richtig verrechnet; plausible Output Ergebnisse plausible Ouputs i. O.
1210 LKT_Grundfaeche xx Parameter und Inputs bekannt fortlaufende Simulation LKT_Grundfaeche = 100 plausible Ouput; LKT_Grundfaeche = 100 i. O.
1220 LKT_Deckenhoehe xx Parameter und Inputs bekannt fortlaufende Simulation LKT_Deckenhoehe = 2.5 plausible Ouput; LKT_Deckenhoehe = 2.5 i. O.
1230 LKT_Etagen xx Parameter und Inputs bekannt fortlaufende Simulation LKT_Etagen = 2 plausible Ouput; LKT_Etagen = 2 i. O.
1240 LKT_Fensterfläche xx Parameter und Inputs bekannt fortlaufende Simulation LKT_Fensterfläche = 25 plausible Ouput; LKT_Fensterfläche = 25 i. O.
1250 LKT_Stromkosten xx Parameter und Inputs bekannt fortlaufende Simulation LKT_Stromkosten = 1082 plausible Ouput; LKT_Stromkosten = 1082 i. O.
1260 LKT_PersonenZuhause xx Parameter und Inputs bekannt fortlaufende Simulation LKT_PersonenZuhause = wechselnde Personenanzahl über Jahresverlauf plausible Ouput; LKT_PersonenZuhause = wechselnde Personenanzahl über Jahresverlauf i. O.
1270 LKT_Wasserverbrauch xx Parameter und Inputs bekannt fortlaufende Simulation LKT_Wasserverbrauch = steigender Verlauf;abhängig von Personenanzahl; Reset zum Jahreswechsel plausible Ouput; LKT_Wasserverbrauch = steigender Verlauf;abhängig von Personenanzahl; Reset zum Jahreswechsel i. O.
1280 LKT_Temperatur xx Parameter und Inputs bekannt fortlaufende Simulation LKT_Temperatur = schwankenden Verlauf über Jahr plausible Ouput; LKT_Temperatur = schwankenden Verlauf über Jahr i. O.
1290 LKT_Simulationszeit xx Parameter und Inputs bekannt fortlaufende Simulation LKT_Simulationszeit = stetig ansteigend plausible Ouput; LKT_Simulationszeit = stetig ansteigend i. O.
1211 LKT_Stromverbrauch xx Parameter und Inputs bekannt fortlaufende Simulation LKT_Stromverbrauch = steigender Verlauf;abhängig von Personenanzahl; Reset zum Jahreswechsel plausible Ouput; LKT_Stromverbrauch = steigender Verlauf;abhängig von Personenanzahl; Reset zum Jahreswechsel i. O.
Abbildung 7: Integrationstest des Moduls "LKT - Lastkollektive" & die Outputs


Systemtest

Fazit

Literaturverzeichnis


→ zum Hauptartikel: Systems Design Engineering - Seminaraufgabe SoSe 2023: Energiehaushalt eines Hauses