<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Loic+Aboufiras</id>
	<title>Technische Beeinflussbarkeit der Geschmacksache Kaffee - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Loic+Aboufiras"/>
	<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Spezial:Beitr%C3%A4ge/Loic_Aboufiras"/>
	<updated>2026-04-30T05:36:28Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.2</generator>
	<entry>
		<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Startprozedur&amp;diff=4890</id>
		<title>Startprozedur</title>
		<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Startprozedur&amp;diff=4890"/>
		<updated>2026-04-25T09:43:15Z</updated>

		<summary type="html">&lt;p&gt;Loic Aboufiras: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Philipp Schiebel, 13.11.2025 - Aufgabenanalyse =&lt;br /&gt;
==Initialisierung der Systeme==&lt;br /&gt;
Nach dem Einschalten der Stromversorgung werden alle vier Mircocontroller (MCU) automatisch aktiviert und führen ihren Code in main.py aus. Darin wird die Kommunikation initialisiert.&lt;br /&gt;
&lt;br /&gt;
==Aufbau der Kommunikationsstruktur==&lt;br /&gt;
Nach einer definierten Startwertzeit stellt die Messwertplatine den Anfangstoken bereit. Aufgrund des Verbundes der Platinen (Messwertplatine -&amp;gt; Basisplatine -&amp;gt; SSR-Platine -&amp;gt; Displayplatine) kann die Displayplatine bei Erhalt des Anfangstokens auf eine korrekte Initialisierung aller Platinen schließen.&lt;br /&gt;
Jede Platine überprüft zusätzlich den Kommunikations-TimeOut und geht bei ausbleibendem Token in einen Sicherheitszustand über.&lt;br /&gt;
&lt;br /&gt;
==Start der Messwerterfassung==&lt;br /&gt;
Nach erfolgreichem Wiedererhalt des Initialisierungstokens startet die die Messplatine die Messwerterfassung, erstellt den ersten Messwertdatensatz und sendet anschließend kontinuierlich Messwert-Token. Die Basisplatine ergänzt die empfangenen Messwerttoken um eigene Messdaten. Dadurch wird ein kontinuierlicher Kommunikations- und Datenaustausch zwischen allen MCUs ermöglicht, bei dem die Messplatine den Takt vorgibt.&lt;br /&gt;
&lt;br /&gt;
==Reglerstart==&lt;br /&gt;
Mit Beginn der Messwerterfassung wird auch der Boilerfüllstand überprüft. Bei der Glasboilermaschine werden zusätzlich die Füllstände der beiden Tanks überprüft. Darauf reagiert die Füllstandsregelung. Solange der Sollwert noch nicht erreicht ist, bleibt der Boilerdruckregler deaktiviert. Erst wenn der Füllstand erreicht ist, wird dieser aktiviert. Dabei wird zusätzlich die Boilertemperatur überwacht, um die Entschichtungsfunktion zu steuern. Wird eine einstellbare Abschalttemperatur überschritten, wird die Entschichtung deaktiviert.&lt;br /&gt;
Die Startprozedur gilt als erfolgreich abgeschlossen, sobald der Sollwert des Boilerdrucks erstmals überschritten wird. In diesem Moment erkennt der Boilerdruckregler die Betriebsbereitschaft und sendet diese. Die Displayplatine reagiert darauf, indem sie die Betriebsbereitschaft zum Kaffeebezug signalisiert.&lt;br /&gt;
&lt;br /&gt;
==Anzeige und Fehlerausgabe==&lt;br /&gt;
Während des gesamten Ablaufs zeigt die Displayplatine den aktuellen Status der Startprozedur an. Dazu gehören Informationen über den Boilerfüllstand, den Boilerdruck und die Boilertemperatur. Bei Timeout oder Fehlern während des Startvorgangs erfolgt eine sichtbare Ausgabe am Display.&lt;br /&gt;
&lt;br /&gt;
= Armin Rohnen, 18.10.2025 - Vorschlag zur Startprozedur =&lt;br /&gt;
Wenn die aktuelle manuelle Startprozedur der labortechnischen Espressomaschine als Grundlage für die zukünftige Startprozedur dient, dann ergäbe sich für den Ablauf:&lt;br /&gt;
# alle MCUs starten, wenn die Stromversorgung eingeschaltet wird. Dadurch wird der Programmcode in main.py ausgeführt. In main.py wird als erstes die UART-Kommunikation initialisiert, wie es in der 2. Auflage von [40] beschrieben ist. Dabei wird uart.irq_rx mit einem uart_rx.handler verwendet sowie für ausreichend definierten Schreib- und Lesespeicher gesorgt.&lt;br /&gt;
# Alle MCUs warten auf die Initialisierung der Kommunikation&lt;br /&gt;
# Nach einer definierten Startwartezeit sendet die MCU der Messwertplatine einen Token zur Initialisierung der Kommunikation.&lt;br /&gt;
# Jede andere MCU arbeitet die Initialisierung ab und sendet den Token weiter.&lt;br /&gt;
# Der Token muss wieder bei der Messwertplatine ankommen. Erfolgt dies nicht innerhalb einer definierten Zeit (Timeout) dann erfolgt der Abbruch der Startprozedur mit einer entsprechenden Ausgabe am Display. Kommt der Token InTime bei der Messwertplatine wieder an, dann sendet die Messwertplatine einen Token zum Start der Messwerterfassung.&lt;br /&gt;
# Der Token wird von der Messplatine erstellt. Dort wird die Messwerterfassung gestartet und wenn der erste Messwertdatensatz zusammengestellt ist, der erste Token gesendet. Ab diesem Zeitpunkt wird immer dann, wenn ein Messwertdatensatz der Messplatine zusammengestellt ist, ein Token gesendet. Dadurch gibt die Messwertplatine den Kommunikationstakt vor.&lt;br /&gt;
# Die Basisplatine fügt dem Token die Messwerte der Basisplatine bei.&lt;br /&gt;
# Wenn die Displayplatine erstmalig alle Messwerte erhalten hat, sendet diese einen Token zum Start der Systemüberprüfung.&lt;br /&gt;
# Auf den Token der Systemüberprüfung reagiert als erstes die Basisplatine. Dort wird der Boilerfüllstand geprüft und so lange ein Boilerfüllstands-Flag 0 gesetzt, solange der Füllstand nicht erreicht ist. Das Boilerfüllstands-Flag muss Bestandteil des kontinuierlich umlaufenden Tokens sein. Solange der Füllstand nicht erreicht ist, darf der Boilerdruckregler nicht starten bzw. muss die Heizleistung = 0 sein.&lt;br /&gt;
# Wenn der Boilerfüllstand erreicht ist, wird auf der Messplatine der Boilerdruckregler aktiv. Durch Abgleich mit der Boilertemperatur (kleiner 95 ° C) wird entschieden ob die Entschichtungsfunktion aktiviert wird. Wird die Boilertemperatur von 95 °C überschritten wird die Entschichtung deaktiviert. Wird erstmalig der Sollwert des Boilerdrucks überschritten ist die Maschine betriebsbereit.&lt;br /&gt;
# Auf dem Display wird der jeweilige Stand der Startprozedur angezeigt. Während der Startprozedur ist, zumindest aktuell, ein sichtbares Logging sinnvoll.&lt;br /&gt;
# Der Zustand des Boilerfüllstandsreglers, des Druckreglers, die Boilertemperatur und der Boilerdruck werden kontinuierlich am Display visualisiert, ebenso wird bei Kaffeebezug die Durchflussrate und der Brühgruppendruck angezeigt. Die Displayplatine dient der Übertragung von Systemlogging und Messwerten zur MATLAB® Wartungs-App.&lt;br /&gt;
&lt;br /&gt;
= Armin Rohnen, 04.10.2025 =&lt;br /&gt;
Für den Systemstart der Espressomaschine muss der Funktionsablauf definiert werden. So ist z. B. zunächst die MCU-Kommunikation zu starten, die Messwerterfassung zu starten, es ist zu prüfen ob das Wartungstool angeschlossen ist, es sind die Füllstände zu kontrollieren usw.&lt;/div&gt;</summary>
		<author><name>Loic Aboufiras</name></author>
	</entry>
	<entry>
		<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mikrocontroller_Programmierung_in_MicroPython_SoSe_2026&amp;diff=4889</id>
		<title>Mikrocontroller Programmierung in MicroPython SoSe 2026</title>
		<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Mikrocontroller_Programmierung_in_MicroPython_SoSe_2026&amp;diff=4889"/>
		<updated>2026-04-25T09:42:38Z</updated>

		<summary type="html">&lt;p&gt;Loic Aboufiras: /* Leistungsvereinbarung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;htmltag tagname=&amp;quot;img&amp;quot; src=&amp;quot;https://vg07.met.vgwort.de/na/3e58d840a91b42ac97ee493cdd085245&amp;quot; width=&amp;quot;1&amp;quot; height=&amp;quot;1&amp;quot; alt=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/htmltag&amp;gt;&lt;br /&gt;
[[Datei:Breites Logoband.png|mini|zentriert|hochkant=2.5]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Mikrocontroller Programmierung in MicroPython Sommersemester 2026 =&lt;br /&gt;
Für die Projekte zur labortechnischen Espressomaschine (und weiteren Derivaten) ist die Mikrokontroller-Programmierung einer Steuerungselektronik erforderlich.&lt;br /&gt;
&lt;br /&gt;
Die Programmierung der Mikrocontroller erfolgt in MicroPython und die übergeordnete Steuerung ist eine MATLAB®-APP mit einem Prozessschaubild. Die Grundfunktionalität dieses Vorgehensweise ist in der Quellenliste unter [40] (MATLAB® meets MicroPython) beschrieben.&lt;br /&gt;
&lt;br /&gt;
Das Projekt wurde bereits durch eine Projektgruppe bearbeitet und hat einen Projektstand, der jedoch noch nicht die gesamte erforderliche Steuerungsfunktionalität umfasst.&lt;br /&gt;
&lt;br /&gt;
Es wird angestrebt eine Steuerung auf Basis eines Nucleo STM32H743ZI2 zu erstellen. Dies würde die aktuell drei Steuerungsplatinen und Mikrocontroller auf einen reduzieren. Kommunikation wäre dann lediglich zum Displaycontroller erforderlich.&lt;br /&gt;
&lt;br /&gt;
= Aufgabenanalyse =&lt;br /&gt;
==UART-Kommunikation==&lt;br /&gt;
Es soll eine Stern-Topologie implementiert werden, welche die UART-Kommunikation&lt;br /&gt;
zu einem separaten Display-Controller, dem Maschinensimulator und der Wartungs-&lt;br /&gt;
App herstellt. Dabei sind Sende- und Empfangs-Token f¨ ur das Display, die Wartungs-App und den Maschinensimulator einzuf¨ uhren. Es gilt dabei, den Umfang und Takt der&lt;br /&gt;
neuen Token festzulegen.&lt;br /&gt;
&lt;br /&gt;
==Mehrkernnutzung und/oder Multitasking==&lt;br /&gt;
&lt;br /&gt;
Es gibt bestimmte Vorgänge, welche regelmäßig zur Unterbrechung des Pro-&lt;br /&gt;
grammablaufs führen. Es gilt, diese Vorgänge zu identifizieren und umzuleiten,&lt;br /&gt;
damit diese den Programmablauf nicht mehr unterbrechen. Die Möglichkeit&lt;br /&gt;
der Mehrkernnutzung fällt dabei aus, da der STM32H753ZI nur über einen&lt;br /&gt;
M7-Kern verfügt. Dank der Hardware-Unterstützung DMA sowie der Nutzung&lt;br /&gt;
der uasyncio-Library besteht die Möglichkeit, die Vorgänge umzuleiten. Somit&lt;br /&gt;
können die Unterbrechungen des Programmablaufs reduziert werden.&lt;br /&gt;
&lt;br /&gt;
== Maschinensimulator ==&lt;br /&gt;
Die Hauptaufgabe des Maschinensimulators ist die Nachbildung aller Sensordaten der&lt;br /&gt;
&lt;br /&gt;
Kaffeemaschine. Dies ermöglicht die Programmentwicklung der Steuerungselektronik ohne&lt;br /&gt;
&lt;br /&gt;
die reale Hardware. Die für die Simulation benötigte Hardware ist bereits rudimentär&lt;br /&gt;
&lt;br /&gt;
vorhanden, muss aber für einen zuverlässigen und störungsfreien Betrieb optimiert werden.&lt;br /&gt;
&lt;br /&gt;
Zudem muss für die Umsetzung der Durchflusssimulation noch eine entsprechende&lt;br /&gt;
&lt;br /&gt;
Hardware-Modellierung erfolgen. Softwareseitig ist der Python-Code für die&lt;br /&gt;
&lt;br /&gt;
Datengenerierung größtenteils fertiggestellt [Quelle: Wiki ToDo Maschinensimulator -&lt;br /&gt;
&lt;br /&gt;
Funktionsnutzung]. Es fehlen aktuell noch die Flowmetersimulation sowie die&lt;br /&gt;
&lt;br /&gt;
Aufheizsimulation, welche für die Validierung der Druck- und Temperaturregelung benötigt&lt;br /&gt;
&lt;br /&gt;
wird. Die vom Maschinensimulator gelieferten Temperatur- und Druckwerte müssen&lt;br /&gt;
&lt;br /&gt;
validiert werden. Dabei wird soll ein bereits bekannter Messfehler bei den&lt;br /&gt;
&lt;br /&gt;
Temperaturwerten durch die Anpassung der Einstellwerte behoben werden. Für den&lt;br /&gt;
&lt;br /&gt;
Programmablauf des Simulators wird eine MATLAB®-App entwickelt, die parallel zum Ablauf&lt;br /&gt;
&lt;br /&gt;
des STM32 arbeitet. Für die UART-Kommunikation in der Sterntopologie zwischen dem&lt;br /&gt;
&lt;br /&gt;
Maschinensimulator und dem STM32 müssen zudem spezifische Sende- und Empfangs-&lt;br /&gt;
&lt;br /&gt;
Token implementiert sowie deren Taktung und Datenumfang definiert werden. Zusätzlich&lt;br /&gt;
&lt;br /&gt;
wird ein Gateway als Kommunikationsschnittstelle zwischen dem Maschinensimulator und&lt;br /&gt;
&lt;br /&gt;
der Wartungs-App implementiert. Des Weiteren muss während der Ausarbeitung des&lt;br /&gt;
&lt;br /&gt;
Maschinensimulators eine Projektfortschrittsdokumentation erfolgen. Die Ausarbeitung&lt;br /&gt;
&lt;br /&gt;
erfolgt in einem ein- bis zweiwöchigen Turnus.&lt;br /&gt;
&lt;br /&gt;
== Füllstandsregler ==&lt;br /&gt;
Die Füllstandsregelung erkennt den Füllstand über eine Kurzschlussdetektion. Liegt kein &lt;br /&gt;
Kurzschluss vor, wird dies als zu niedriger Füllstand interpretiert und der Boilerdruckregler &lt;br /&gt;
zur Vermeidung von Trockenheizen gesperrt. Beim Erreichen des Sollfüllstands erfolgt eine &lt;br /&gt;
gezielte Überfüllung bei reduzierter Pumpenspannung, um ein periodisches Ein- und &lt;br /&gt;
Ausschalten der Regelung zu vermeiden. Da die in der MATLAB®-GUI realisierte Boiler Füllstandsregelung aus [114] bereits in einem ersten Stand in MicroPython übertragen &lt;br /&gt;
wurde, liegt der Fokus hier auf der Validierung am Maschinensimulator sowie der &lt;br /&gt;
Abstimmung mit den Schnittstellenpartnern.&lt;br /&gt;
&lt;br /&gt;
== Boilerdruckregelung ==&lt;br /&gt;
Ziel ist es, die bisher in der MATLAB®-GUI realisierte Boilerdruckregelung aus [114], die auf &lt;br /&gt;
einem PD-Regler basiert, vollständig zu übertragen, sodass die Regelung unabhängig von der &lt;br /&gt;
externen PC-Umgebung arbeitet.&lt;br /&gt;
&lt;br /&gt;
== Mischtemperaturregler ==&lt;br /&gt;
Der Mischtemperaturregler nach [114] dient zur Regelung der Kaffee- und &lt;br /&gt;
Teewassertemperatur und wird als PID-Regler für das Mischventil umgesetzt. Die Stellgröße &lt;br /&gt;
ist dabei die Verstellung des Mischventils. Der Temperatursollwert wird aus dem jeweils &lt;br /&gt;
aktiven Rezept vorgegeben. Da die Regelung vom aktuellen Durchfluss abhängt, wird eine &lt;br /&gt;
Kaskadenstruktur verwendet. In dieser Struktur arbeitet der Durchflussregler als innerer, &lt;br /&gt;
schneller Regelkreis, während der Mischtemperaturregler den äußeren Regelkreis bildet und &lt;br /&gt;
die Ergebnisse des inneren Kreises berücksichtigt. Daraus ergibt sich ein besonderes &lt;br /&gt;
Augenmerk auf das Testen des Zusammenspiels der beiden Regler anhand des &lt;br /&gt;
Maschinensimulators, um das Ziel – die Implementierung dieser Kaskadenregelung auf dem &lt;br /&gt;
STM32 – zu erreichen.&lt;br /&gt;
&lt;br /&gt;
== Durchflussregler ==&lt;br /&gt;
Ein Durchflussregler, der in MATLAB® gemäß [114] vorliegt, wird als PID-Regler in &lt;br /&gt;
MicroPython umgesetzt. Durch die Anpassung der Pumpendrehzahl über einen &lt;br /&gt;
Spannungssollwert von 0–5 V kann ein konstanter oder ein profildefinierter Volumenstrom &lt;br /&gt;
entsprechend der Sollwertvorgabe realisiert werden. Als innerer Regelkreis liefert er &lt;br /&gt;
kontinuierlich Durchflusswerte an den Mischtemperaturregler. Daraus ergibt sich der Fokus &lt;br /&gt;
auf der Implementierung und dem Test des Reglers sowie auf der Validierung seines &lt;br /&gt;
Zusammenspiels mit dem übergeordneten Mischtemperaturregler im Maschinensimulator, &lt;br /&gt;
um die Integration auf dem STM32 sicherzustellen.&lt;br /&gt;
&lt;br /&gt;
== Startprozedur ==&lt;br /&gt;
Das Ziel ist es, eine Startprozedur zu definieren. Beim Einschalten der Stromversorgung starten die Prozessoren der Maschine. Ohne eine festgelegte Ablauflogik würden die einzelnen Systemteile jedoch unkoordiniert anlaufen. Daraus ergibt sich der technische Bedarf, eine eindeutige Reihenfolge für den Start festzulegen und die zugehörigen Ausgaben auf dem Display so zu definieren, dass der Startprozess nachvollziehbar verfolgt werden kann.&lt;br /&gt;
&lt;br /&gt;
Dafür müssen zunächst die relevanten Inhalte der Startprozedur identifiziert werden. Außerdem sind die beteiligten Schnittstellen zu erkennen und die Reihenfolge der einzelnen Startschritte so festzulegen, dass ein geordneter und technisch sinnvoller Maschinenstart möglich ist.&lt;br /&gt;
&lt;br /&gt;
== Display ==&lt;br /&gt;
Ziel ist eine kompakte und benutzerfreundliche Displaylösung, die sich nahtlos in das Gesamtsystem integriert. Das Display mit Touchfunktion dient als Schnittstelle zur Interaktion zwischen Bediener und Maschine. Messwerte müssen strukturiert darzustellen sowie die Auswahl von Funktionen wie Kaffeerezepten, Teewasser- oder Dampfbezug zu ermöglichen. Zusätzlich übernimmt das Display die Visualisierung der Startprozedur, relevanter Betriebszustände und der Sicherheitsfunktionen.&lt;br /&gt;
&lt;br /&gt;
Zunächst werden die benötigten Funktionalitäten analysiert und definiert, darunter Messwertanzeige, Benutzerführung und Sicherheitsmeldungen. Parallel dazu werden drei unterschiedliche Displaytypen (rundes Display, LCD2 und 1,69Display) auf ihre Eignung hin untersucht, um anschließend die, am besten passende, Variante auszuwählen. Die MCU der Displayplatine erhält die benötigten Informationen über die UART-Kommunikation aus dem System und muss in die bestehende Gesamtarchitektur integriert werden. Der Vertikalhebel dient zur Vorgabe von Sollwerten, während die beiden Anschlagtaster die Funktionen Kaffeebezug und Flush beziehungsweise Reinigung auslösen. Diese Bedienelemente sind mit der Displayplatine zu verbinden, damit das Display die zugehörigen Informationen und Zustände für den Benutzer darstellen kann.&lt;br /&gt;
&lt;br /&gt;
== STM32 ==&lt;br /&gt;
Als Haupt-MCU soll ein STM32H753ZI-Controller verwendet werden. Es soll sichergestellt &lt;br /&gt;
werden, dass die vorinstallierten Steckerleisten CN7 bis CN10 ausreichend Pins für &lt;br /&gt;
Definition der benötigten UART-, ADC-, DAC- und GPIO-Pins aufweisen.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Boilerdruck-, die Wassertemperatur-, die Durchfluss- und die Füllstandsregelung des &lt;br /&gt;
Boilers müssen implementiert werden. Es soll ebenfalls eine UART-Kommunikation für ein &lt;br /&gt;
Touch-Display, einen Maschinensimulator sowie eine Möglichkeit zum Anschließen einer &lt;br /&gt;
Wartungs-App programmiert werden. Um einen geordneten Ablauf der einzelnen &lt;br /&gt;
Komponenten bei Inbetriebnahme der Maschine zu gewährleisten, soll eine Startprozedur &lt;br /&gt;
programmiert werden&lt;br /&gt;
&lt;br /&gt;
== Wartungs - APP ==&lt;br /&gt;
Es müssen der Inhalt des Wartungs-Token definiert werden, ein GUI-Layout erstellt werden, ein Kommunikationsaufbau mit dem Maschinensimulator hergestellt werden, die Darstellung der Messwerte, eine manuelle Startprozedur, das Schalten von Magnetventilen, die Einstellung von Sollwertvorgaben (Boilerdruck, Bezugswassertemperatur, Durchfluss) und manuellen Stellwerten für das PWM-Heizelement, die Pumpenansteuerung und die Stellung des Dosierventils sowie die Messwertspeicherung und das Logging programmiert werden. Die App ist bis zu einem funktionsfähigen Prototypen erforderlich.&lt;br /&gt;
&lt;br /&gt;
= Leistungsvereinbarung =&lt;br /&gt;
&lt;br /&gt;
== Startprozedur ==&lt;br /&gt;
Es wird eine definierte und nachvollziehbare Startprozedur für die Maschine erarbeitet. Das Ergebnis umfasst eine festgelegte Reihenfolge der Startschritte, die Berücksichtigung der relevanten Schnittstellen sowie ein Konzept für die Ausgaben auf dem Display, damit der Startprozess strukturiert abläuft und für den Benutzer verfolgbar ist.&lt;br /&gt;
&lt;br /&gt;
== Maschinensimulator ==&lt;br /&gt;
Das Ziel dieser Arbeit ist die Entwicklung eines voll funktionsfähigen Maschinensimulators,&lt;br /&gt;
&lt;br /&gt;
der das Testen der auf den STM32 zu verlagernden Regelkreisen ermöglicht. Hierfür werden&lt;br /&gt;
&lt;br /&gt;
physikalische Größen wie Temperatur und Druck simuliert und über die Digital-&lt;br /&gt;
&lt;br /&gt;
Potentiometer MCP4151 als elektrische Signale an die Steuerungselektronik ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Der Maschinensimulator wird in einer MATLAB®-App implementiert, sodass ein&lt;br /&gt;
&lt;br /&gt;
Programmablauf des Maschinensimulators parallel zum Hauptprogramm (main.py)&lt;br /&gt;
&lt;br /&gt;
ablaufen kann. Die App soll sowohl den Betrieb des Simulators als solches als auch die&lt;br /&gt;
&lt;br /&gt;
Nutzung als Wartungs-App ermöglichen.&lt;br /&gt;
&lt;br /&gt;
== Wartungs - APP ==&lt;br /&gt;
Die aktuelle MATLAB®-GUI soll in eine komfortable Bedienoberfläche für Wartungs- und Einstellarbeiten überführt werden. Bei aktivierter Wartungs-App sollen sämtliche Tastenfunktionen und die Vertikalhebelfunktion nutzbar sein und zudem alle Aktoren (Magnetventile, Pumpenleistung und Schrittmotorverstellungen) über diese App angesteuert werden können. Des Weiteren soll die bisherige Visualisierung der Messwerte und Schaltzustände erhalten bleiben. Dies allerdings mit einer geringeren Aktualisierungsrate, da vier Aktualisierungen pro Sekunde als ausreichend angesehen werden.&lt;br /&gt;
&lt;br /&gt;
==UART-Kommunikation==&lt;br /&gt;
Um die spezifischen Daten von dem STM32H7 auf das Display zu übertragen, sowie &lt;br /&gt;
Steuerbefehle des Displays für den STM32H7, wird ein neue UART-Schnittstelle mit Display-Token eingeführt. Ebenfalls wird eine UART-Kommunikation mit entsprechendem Token für &lt;br /&gt;
Maschinensimulator und der Wartungs-App implementiert. Dabei soll ein Gateway den &lt;br /&gt;
Zugriff für die Wartungs-App integriert werden.&lt;br /&gt;
&lt;br /&gt;
==Multitasking==&lt;br /&gt;
Die direkte Hardware-Unterstützung über DMA gestaltet sich schwierig in MicroPython, da &lt;br /&gt;
sie von MicroPython automatisch verwendet wird (bspw. bei Buffern) und nur über &lt;br /&gt;
Registeraccess direkt ausgeführt werden kann. Daher wird die Nutzung der uasyncio-Library&lt;br /&gt;
bevorzugt, welche die Vorgänge, die den Programmablauf verzögern, umleitet. Dadurch soll &lt;br /&gt;
das Programm reibungsfreier ablaufen.&lt;br /&gt;
&lt;br /&gt;
==STM32H7==&lt;br /&gt;
Die bestehenden Regelkreise, Füllstandsregelung (Boiler und Tanks), Boilerdruckregelung, &lt;br /&gt;
Mischtemperaturregelung und Durchflussregelung werden von den drei Microcontroller auf &lt;br /&gt;
den STM32H7 verlagert. Ebenfalls erfolgt die Migration der Messwerterfassung aller &lt;br /&gt;
verbauten Sensoren auf die neue STM32H7-Plattform.&amp;lt;br&amp;gt;&lt;br /&gt;
Zusätzlich wird eine UART-Kommunikation implementiert, die die Anbindung des Displays, &lt;br /&gt;
eines Maschinensimulators sowie für den Zugriff durch eine externe Wartungs-App über &lt;br /&gt;
einem Gateway ermöglicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Um einen geordneten Ablauf der einzelnen Komponenten bei Inbetriebnahme der Maschine &lt;br /&gt;
zu gewährleisten, wird eine Startprozedur programmiert.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Hardware-Umsetzung wird von LfbA Armin Rohnen übernommen.&lt;br /&gt;
&lt;br /&gt;
== Display ==&lt;br /&gt;
Es wird eine geeignete Displaylösung ausgewählt und in das Gesamtsystem integriert. Das Ergebnis umfasst die Darstellung relevanter Messwerte, Betriebszustände, Sicherheitsmeldungen und der Startprozedur sowie die Einbindung der Bedienfunktionen über Touch, Vertikalhebel und Anschlagtaster.&lt;br /&gt;
&lt;br /&gt;
== Vertikalhebel ==&lt;br /&gt;
Der Vertikalhebel wird als Bedienelement technisch und funktional in das System integriert. Das Ergebnis umfasst die Erfassung und Verarbeitung der Hebelstellung als Sollwertvorgabe für den Durchflussregler, die Einbindung der Anschlagtaster als zusätzliche Bedienfunktionen sowie die Anzeige der relevanten Informationen auf dem Display.&lt;br /&gt;
&lt;br /&gt;
== Verlagerung der Regler Syntax ==&lt;br /&gt;
Ziel dieser Arbeit ist die vollständige Übertragung der in MATLAB® implementierten Regelalgorithmen aus [114] in MicroPython sowie deren Vorbereitung für die Implementierung auf einer STM32‑MCU. Die Umsetzung erfolgt entlang der bestehenden Reglerstruktur: Füllstandsregler, Boilerdruckregelung, Mischtemperaturregler und Durchflussregler.&lt;br /&gt;
&lt;br /&gt;
= Besprechungsprotokolle und weitere Unterlagen =&lt;br /&gt;
* [[:Datei:20260214 Abschlusspraesentation.pdf|Übergabepräsentation Vorgänger]]&lt;br /&gt;
* [[:Datei:20260326 Projektstart.pdf|Aktueller Projektstand]]&lt;br /&gt;
* [[Projektstart 26.03.2026]]&lt;br /&gt;
* [[Projektrücksprache 02.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 09.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 17.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 24.04.2026]]&lt;br /&gt;
* [[Projektrücksprache 08.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 15.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 22.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 29.05.2026]]&lt;br /&gt;
* [[Projektrücksprache 05.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 12.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 19.06.2026]]&lt;br /&gt;
* [[Projektrücksprache 03.07.2026]]&lt;br /&gt;
* [[Projektrücksprache 10.07.2026]]&lt;br /&gt;
* [[Projektrücksprache 24.07.2026]]&lt;br /&gt;
* [[Abschlusspräsentation 31.07.2026]]&lt;/div&gt;</summary>
		<author><name>Loic Aboufiras</name></author>
	</entry>
	<entry>
		<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Startprozedur&amp;diff=4887</id>
		<title>Startprozedur</title>
		<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Startprozedur&amp;diff=4887"/>
		<updated>2026-04-25T09:35:04Z</updated>

		<summary type="html">&lt;p&gt;Loic Aboufiras: Aufgabenanalyse SoSe2026 hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Loic Aboufiras, 25.04.2026 - Aufgabenanalyse =&lt;br /&gt;
Das Ziel ist es, eine Startprozedur zu definieren. Beim Einschalten der Stromversorgung starten die Prozessoren der Maschine. Ohne eine festgelegte Ablauflogik würden die einzelnen Systemteile jedoch unkoordiniert anlaufen. Daraus ergibt sich der technische Bedarf, eine eindeutige Reihenfolge für den Start festzulegen und die zugehörigen Ausgaben auf dem Display so zu definieren, dass der Startprozess nachvollziehbar verfolgt werden kann.&lt;br /&gt;
&lt;br /&gt;
Dafür müssen zunächst die relevanten Inhalte der Startprozedur identifiziert werden. Außerdem sind die beteiligten Schnittstellen zu erkennen und die Reihenfolge der einzelnen Startschritte so festzulegen, dass ein geordneter und technisch sinnvoller Maschinenstart möglich ist.&lt;br /&gt;
&lt;br /&gt;
= Philipp Schiebel, 13.11.2025 - Aufgabenanalyse =&lt;br /&gt;
==Initialisierung der Systeme==&lt;br /&gt;
Nach dem Einschalten der Stromversorgung werden alle vier Mircocontroller (MCU) automatisch aktiviert und führen ihren Code in main.py aus. Darin wird die Kommunikation initialisiert.&lt;br /&gt;
&lt;br /&gt;
==Aufbau der Kommunikationsstruktur==&lt;br /&gt;
Nach einer definierten Startwertzeit stellt die Messwertplatine den Anfangstoken bereit. Aufgrund des Verbundes der Platinen (Messwertplatine -&amp;gt; Basisplatine -&amp;gt; SSR-Platine -&amp;gt; Displayplatine) kann die Displayplatine bei Erhalt des Anfangstokens auf eine korrekte Initialisierung aller Platinen schließen.&lt;br /&gt;
Jede Platine überprüft zusätzlich den Kommunikations-TimeOut und geht bei ausbleibendem Token in einen Sicherheitszustand über.&lt;br /&gt;
&lt;br /&gt;
==Start der Messwerterfassung==&lt;br /&gt;
Nach erfolgreichem Wiedererhalt des Initialisierungstokens startet die die Messplatine die Messwerterfassung, erstellt den ersten Messwertdatensatz und sendet anschließend kontinuierlich Messwert-Token. Die Basisplatine ergänzt die empfangenen Messwerttoken um eigene Messdaten. Dadurch wird ein kontinuierlicher Kommunikations- und Datenaustausch zwischen allen MCUs ermöglicht, bei dem die Messplatine den Takt vorgibt.&lt;br /&gt;
&lt;br /&gt;
==Reglerstart==&lt;br /&gt;
Mit Beginn der Messwerterfassung wird auch der Boilerfüllstand überprüft. Bei der Glasboilermaschine werden zusätzlich die Füllstände der beiden Tanks überprüft. Darauf reagiert die Füllstandsregelung. Solange der Sollwert noch nicht erreicht ist, bleibt der Boilerdruckregler deaktiviert. Erst wenn der Füllstand erreicht ist, wird dieser aktiviert. Dabei wird zusätzlich die Boilertemperatur überwacht, um die Entschichtungsfunktion zu steuern. Wird eine einstellbare Abschalttemperatur überschritten, wird die Entschichtung deaktiviert.&lt;br /&gt;
Die Startprozedur gilt als erfolgreich abgeschlossen, sobald der Sollwert des Boilerdrucks erstmals überschritten wird. In diesem Moment erkennt der Boilerdruckregler die Betriebsbereitschaft und sendet diese. Die Displayplatine reagiert darauf, indem sie die Betriebsbereitschaft zum Kaffeebezug signalisiert.&lt;br /&gt;
&lt;br /&gt;
==Anzeige und Fehlerausgabe==&lt;br /&gt;
Während des gesamten Ablaufs zeigt die Displayplatine den aktuellen Status der Startprozedur an. Dazu gehören Informationen über den Boilerfüllstand, den Boilerdruck und die Boilertemperatur. Bei Timeout oder Fehlern während des Startvorgangs erfolgt eine sichtbare Ausgabe am Display.&lt;br /&gt;
&lt;br /&gt;
= Armin Rohnen, 18.10.2025 - Vorschlag zur Startprozedur =&lt;br /&gt;
Wenn die aktuelle manuelle Startprozedur der labortechnischen Espressomaschine als Grundlage für die zukünftige Startprozedur dient, dann ergäbe sich für den Ablauf:&lt;br /&gt;
# alle MCUs starten, wenn die Stromversorgung eingeschaltet wird. Dadurch wird der Programmcode in main.py ausgeführt. In main.py wird als erstes die UART-Kommunikation initialisiert, wie es in der 2. Auflage von [40] beschrieben ist. Dabei wird uart.irq_rx mit einem uart_rx.handler verwendet sowie für ausreichend definierten Schreib- und Lesespeicher gesorgt.&lt;br /&gt;
# Alle MCUs warten auf die Initialisierung der Kommunikation&lt;br /&gt;
# Nach einer definierten Startwartezeit sendet die MCU der Messwertplatine einen Token zur Initialisierung der Kommunikation.&lt;br /&gt;
# Jede andere MCU arbeitet die Initialisierung ab und sendet den Token weiter.&lt;br /&gt;
# Der Token muss wieder bei der Messwertplatine ankommen. Erfolgt dies nicht innerhalb einer definierten Zeit (Timeout) dann erfolgt der Abbruch der Startprozedur mit einer entsprechenden Ausgabe am Display. Kommt der Token InTime bei der Messwertplatine wieder an, dann sendet die Messwertplatine einen Token zum Start der Messwerterfassung.&lt;br /&gt;
# Der Token wird von der Messplatine erstellt. Dort wird die Messwerterfassung gestartet und wenn der erste Messwertdatensatz zusammengestellt ist, der erste Token gesendet. Ab diesem Zeitpunkt wird immer dann, wenn ein Messwertdatensatz der Messplatine zusammengestellt ist, ein Token gesendet. Dadurch gibt die Messwertplatine den Kommunikationstakt vor.&lt;br /&gt;
# Die Basisplatine fügt dem Token die Messwerte der Basisplatine bei.&lt;br /&gt;
# Wenn die Displayplatine erstmalig alle Messwerte erhalten hat, sendet diese einen Token zum Start der Systemüberprüfung.&lt;br /&gt;
# Auf den Token der Systemüberprüfung reagiert als erstes die Basisplatine. Dort wird der Boilerfüllstand geprüft und so lange ein Boilerfüllstands-Flag 0 gesetzt, solange der Füllstand nicht erreicht ist. Das Boilerfüllstands-Flag muss Bestandteil des kontinuierlich umlaufenden Tokens sein. Solange der Füllstand nicht erreicht ist, darf der Boilerdruckregler nicht starten bzw. muss die Heizleistung = 0 sein.&lt;br /&gt;
# Wenn der Boilerfüllstand erreicht ist, wird auf der Messplatine der Boilerdruckregler aktiv. Durch Abgleich mit der Boilertemperatur (kleiner 95 ° C) wird entschieden ob die Entschichtungsfunktion aktiviert wird. Wird die Boilertemperatur von 95 °C überschritten wird die Entschichtung deaktiviert. Wird erstmalig der Sollwert des Boilerdrucks überschritten ist die Maschine betriebsbereit.&lt;br /&gt;
# Auf dem Display wird der jeweilige Stand der Startprozedur angezeigt. Während der Startprozedur ist, zumindest aktuell, ein sichtbares Logging sinnvoll.&lt;br /&gt;
# Der Zustand des Boilerfüllstandsreglers, des Druckreglers, die Boilertemperatur und der Boilerdruck werden kontinuierlich am Display visualisiert, ebenso wird bei Kaffeebezug die Durchflussrate und der Brühgruppendruck angezeigt. Die Displayplatine dient der Übertragung von Systemlogging und Messwerten zur MATLAB® Wartungs-App.&lt;br /&gt;
&lt;br /&gt;
= Armin Rohnen, 04.10.2025 =&lt;br /&gt;
Für den Systemstart der Espressomaschine muss der Funktionsablauf definiert werden. So ist z. B. zunächst die MCU-Kommunikation zu starten, die Messwerterfassung zu starten, es ist zu prüfen ob das Wartungstool angeschlossen ist, es sind die Füllstände zu kontrollieren usw.&lt;/div&gt;</summary>
		<author><name>Loic Aboufiras</name></author>
	</entry>
</feed>