Skip to content
Snippets Groups Projects
Commit 72386e11 authored by Armin Co's avatar Armin Co
Browse files

Dokumentation

parent 4a37a70e
Branches
Tags
No related merge requests found
doc/opc/Bildschirmfoto vom 2020-10-28 10-19-00.png

75.4 KiB

doc/opc/Bildschirmfoto vom 2020-10-28 10-20-32.png

35.4 KiB

No preview for this file type
...@@ -48,24 +48,200 @@ ...@@ -48,24 +48,200 @@
für das Smart Grid Modell für das Smart Grid Modell
\end{center} \end{center}
\newpage
\section{Übersicht}
Das Smart-Grid-Modell (SGM) veranschaulicht, ein intelligentes Energienetz mit verschiedenen Strom- Erzeugern und Verbrauchern.
Die Hardware des SGM wurde bereites durch mehrere Gruppen von Studierenden am CVH aufgebaut.
Dazu gehörten sowohl Hardware-, als auch Softwarekomponenten.
\newpage Die Gruppe der Erzeuger auf dem SGM stellt sich aus den einer konventionellen Komponente (einem herkömmlichen Kraftwerk) und zwei erneuerbaren Engergiequellen,
einem Windrad und einem Photovoltaikpark, zusammen. Die Gruppe der Verbraucher, ist durch eine Ansiedlung von Häusern dargestellt.
Alle diese Komponenten sind auf dem Modell miteinander verbunden. Bei der Verbindung handelt es sich um LED-Streifen, die sowohl grün als auch rot leuchten können.
Grün steht hierbei für die erneuerbare Energie und Rot für die konventionelle.
Das Windrad auf dem Modell verfügt über einen Motor, worüber die Windgeschwindigkeit veranschaulicht werden kann.
Die Ansteuerung der LED-Streifen, als auch des Windrads wird von einem Arduino übernommen, welcher per PWM die Farbe und Drehgeschwindgeit einstellt.
Dieser Arduino war nicht Teil der folgenden Arbeit, sondern wird lediglich über seine I2C-Schnittstelle angesprochen.
Bis auf eine Aktualisierung des Raspberry-Pis auf das zum derzeit aktuellste Raspberry-Pi OS wurden keine Änderungen an der Hardware vorgenommen.
Der Raspberry Pi wurde aktualisiert, damit die neuesten C++ Standards verwendet werden konnten.
Die bereits bestehende Software, die vorher auf dem Raspberry-Pi installiert war wurde gesichert und ist in diesem Repositorie unter dem Tag SS19 zu finden
\url{https://gitlab.cvh-server.de/aco/smart-grid-modell/-/tree/ss19}.
Dieser Tag stellt eine GUI bereit mit der verschieden Parameter des Modells angepasst werden können und ein Tageszeiten-Simulationsmodus ausgeführt werden kann.
Diese Software bot jedoch keine Möglichkeit, um einen OPC UA Server sinvoll zu integrieren, daher wurde die Software zur Ansteuerung des Modells in gänze neu geschrieben.
\section{Entwicklungen}
Als Vorbereitung zu den folgenden Entwicklungen wurde der Raspberry Pi aktualisiert, da das Betriebsystem zu sehr gealtert war, sodass die Software nicht auf den akutellen Stand
geupdated werden konnte.
\subsection{I2C}
Als erstes wurde eine I2C Modul entwickelt, welches es ermöglicht auf die I2C Schnittstelle des Raspberry-Pis und dadurch auf den Arduino zuzugreifen.
Hierbei wurde im Gegensatz zu vorher auf die Verwendung von der Bibliothek WiringPi verzichtet, sondern es wurden direkt die von Linux bereitgestellten Schnittstellen genutzt.
Eine Beispielanwendung, wie die Schnittstelle zu verwenden ist ist in der Datei \textit{ComTest.cpp} bereitgestellt.
Die zugehörige kompilierte Anwendung ist \textit{manual\_control.exe}.
Mit dieser Anwendung können die Ausgängen des Arduinos gestuert werden.
Die Verwendung ist folgendermaßen:
\begin{lstlisting}[language=C]
// ./manual_control $register $value
// for example
./manual_control 2 50
// Sets the windmill to the speed of 50 (of max 255).
\end{lstlisting}
Darauf aufbauen wurde ein \textit{HardwareController} geschrieben, der eine leichtere Steuerung des Modells
erlaubt. Erfasst die einezelnen Bereiche des Netzes zu logischen Gruppen zusammen die dann gemeinsam gesteutert werden können.
\subsection{Smart Grid Modell}
In Anlehnung an den bereits bestehenden Tagszeiten-Simulationsmodus wurde eine neue Simulation entwicklet,
die ebenfalls einen Tagesablauf, mit Tageszeit abhängigem Verbrauch und Energieerzeugung, sodass zu verschiedenen Tagszeiten
mal ein Überschuss an erneuerbaren Energien besteht und mal die Versorgung ausschließlich durch die konventionelle Energie gedeckt ist.
Abhängig von der Energieverteilung innerhalb des Netz werden die LEDs geschaltet, um den Zustand zu visualiesieren.
Die Uhrzeit kann von außen, aus Softwaresicht, eingestellt werden. Genauso kann das berechnen des Zustands für die nächste Stunde angestoßen
werden, sodass sich das Modell von außen steuern lässt.
Darauf aufbauend wurde das SGM in einen Zustandsautomaten gekapselt, dieser verwaltet lediglich die zwei Zustände Simulation oder Manuelle-Steuerung.
Im Simulationsmodus, wird in einem regelmäßigen Zeitintervall der Zustand für die nächste Stunde des Modells berechnet und eingestellt.
Im manuellen Modus, wird die Zeit festgehalten und das Modell verweilt in diesem Zustand.
Von außen kann jedoch die Uhrzeit manuell geändert werden, wodurch sich der Zustand des Modells ändert.
\subsection{OPC UA Server}
Für die Ergänzung des SGM wurde auf die Bibliothek \textit{FreeOpcUa} \url{https://github.com/FreeOpcUa/freeopcua} zurückgegriffen.
Dies ist eine unter LGPL stehende Software, mit der sowohl OPC UA Server als auch Clients geschrieben werden könne.
Die Bibliothek wurde als Git-Submodule eingebunden.
Es werden auch Code-Beispiele z.B. \url{https://github.com/FreeOpcUa/freeopcua/blob/master/src/examples/example_server.cpp} für einen Server bereitgestellt.
Aufbauen auf diesem Beispiel wurde der OPC UA Server für das SGM implementiert.
Der OPC UA Server soll es ermöglichen, den Simulationszustand zu simulieren und gleichzeitig Verbraucher im Modell ein und ausschalten können.
Zur Steuerung stellt der OPC UA Server daher drei Steuerungs-Variablen zur Verfügung.
\begin{description}
\item[sim\_mode\_enabled] Über diese Variable vom Typ \lstinline{boolean} ist es möglich zwischen den Modi Simulation und manueller Steuerung zu wählen.
\item[time] Über diese Variable vom Typ \lstinline{int} lässt sich eine Uhrzeit zwischen 0 und 23 Uhr einstellen.
\item[producing] Über diese Variable vom Typ \lstinline{boolean} kann im Modell gesteuert werden, ob ein zusätzlicher Verbraucher (zum Beispiel eine Industrieanlage) eingeschaltet oder ausgeschaltet werden soll
\end{description}
Darüber hinaus gibt der OPC UA Server auch den Zustand der Simulation nach außen frei.
Diese veröffentlichten Variablen können jedoch nicht manipuliert werden.
\begin{description}
\item[excess\_power] Im Netz verfügbare (überschüssige) erneuerbare Energie.
\item[power\_production] Insgesamt bereitgestellte Energei, sowohl erneuerbar als auch konventionell.
\item[renewable\_pwer] Produzierte erneuerbare Energie.
\item[sun\_power] Durch den Photovoltaikpark erzeugte Energie.
\item[used\_power] Kommulierte Energie aller Verbraucher.
\item[wind\_power] Druch das Windrad erzeugte Energie.
\end{description}
\begin{figure}[h!]
\centering{
\includegraphics[scale=0.5]{Bildschirmfoto vom 2020-10-28 10-19-00.png}
}
\caption[]{OPC UA Server SGM Variablen}
\label{abb:opc_vat}
\end{figure}
\section{Installation}
\begin{thebibliography}{} Für die Entwicklung der Software kann jeglicher Linux-Desktop verwendet werden.
\begin{bibcomment} Für Debian basierte Linux-Distributionen ist die Installation am einfachsten.
Die Online Quellen beziehen sich auf den Stand im Mai 2020.
\end{bibcomment} Die zu dem Projekt gehörende Quellcode befindet sich im CVH GitLab unter: \url{https://gitlab.cvh-server.de/aco/smart-grid-modell}.
Weitere Quellen Zur Enwicklung werden die fogenden Tools benötigt:
\begin{itemize} \begin{itemize}
\item Introduction into docker images \\ \item git
\url{https://jfrog.com/knowledge-base/a-beginners-guide-to-understanding-and-building-docker-images/} \item gcc
\item make
\item cmake
\end{itemize}
Für das Testen des OPC Server bietet sich darüber hinaus noch das Tool \textit{opcua-client} an.
Dieses kann über die Python Paketverwaltung pip mit dem Befehl \lstinline{pip install opcua-client}
installiert werden.
Das Projekt kann mit dem foglenden Befehl heruntergeladen werden.
\begin{lstlisting}
git clone --recurse-submodules https://gitlab.cvh-server.de/aco/smart-grid-modell
\end{lstlisting}
Für die Installation wurde das Skript \lstinline{install.sh} bereitgestellt.
Sind alle nötigen Abhängigkeiten installiert wird hiermit das gesamte Projekt bebaut.
Auf dem Raspberry-Pi kann das Kompilieren einige Minuten dauern.
Der Grund dafür ist, dass die FreeOpcUa Bibliothek mitgebaut werden muss.
Die Abhängigkeiten, die für die Bibliothek installiert werden müssen, sind in der
Datei \textit{debian.soft} der FreeOpcUa Biblithek aufgelistet.
Die Schritte die das Installations Skript übernimmt sind die folgenden.
Als erstes wird das Verzeichnis \textit{build} angelegt und in dieses gewechselt.
Darin wird der Befehlt \lstinline{cmake ..} ausgeführt.
Damit werden die GNU Makefiles generiert, mit denen das Projekt kompiliert werden kann.
Das Kompilieren kann dann mit dem Befehl \lstinline{make} angestoßen werden.
Beschleunigt werden kann der Vorgang, indem mit der Option \lstinline{-j2}
die Anzahl der Threads angegeben werden, mit denen parallel kompiliert wird.
Beim manuellen kompilieren ist darauf zu achten, dass die ausführbaren Datein
in dem Verzeichnis \textit{build/libs/freeopcua/bin/} abgelegt werden.
Das Installations-Skript kopiert die \textit{smart\_grid.exe} zurück in das \textit{build} Verzeichnis.
\section{Ausführen}
Gestartet werden kann der OPC Server indem die ausführbare Datei gestartet wird.
Beim beenden des Servers, werden die Ausgänge des Modells nicht wieder zurück gesetzt.
Daher leuchten die LEDs weiter und auch das Windrad dreht sich weiter.
Zum ausschalten der LEDs können zwei Skripte benutzt werden die auf das oben genannte Tool
\textit{manual control} zurückgreifen.
Damit können entweder alle Komponeten ausgeschaltet werden, oder nur das Windrad.
\begin{itemize}
\item windmill\_off.sh
\item all\_off.sh
\end{itemize} \end{itemize}
Alternativ kann das Skript \textit{start\_server.sh} verwendet werden.
Mit dem Skript wird nach dem dem Beenden, durch das Drücken das Taste \textit{q} alle Ausgänge wieder
ausgeschaltet.
Der OPC Server ist anschließend unter der lokalen IP Adresse (vergeben über DHCP) oder wenn möglich
über den Hostnamen raspberrypi und dem Port 4840.
Um sich per ssh mit dem Raspberry-Pi zu verbinden werden die Zugangsdaten Benutzername: pi und Passwort: pi benötigt.
In dem OPC UA client können dann zum Beispiel die Daten betrachtet werden.
So wie in Abbildung \ref{abb:excess_pwr} dargestellt.
\begin{figure}[h]
\centering{
\includegraphics[scale=0.5]{Bildschirmfoto vom 2020-10-28 10-20-32.png}
}
\caption[]{Überschüssige Energie im Zeitverlauf}
\label{abb:excess_pwr}
\end{figure}
\newpage
\section{Ressourcen}
\begin{itemize}
\item \url{https://gitlab.cvh-server.de/aco/smart-grid-modell}
\item \url{https://www.raspberrypi.org/}
\item \url{https://github.com/FreeOpcUa/freeopcua}
\item \url{https://cmake.org/}
\end{itemize}
\vfill \vfill
\begingroup \begingroup
...@@ -84,4 +260,4 @@ ...@@ -84,4 +260,4 @@
\endgroup \endgroup
\end{document}} \end{document}
\ No newline at end of file \ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment