Adaption an Multi-MCU - Neuprogrammierung MATLAB® GUI

Aus Technische Beeinflussbarkeit der Geschmacksache Kaffee
(Weitergeleitet von Adaption an Multi-MCU)
Zur Navigation springen Zur Suche springen

Madita vom Stein, 27.07.2023 - Abschlussbemerkung MATLAB®-GUI

Abbildung 12: Startseite der alten GUI
Abbildung 11: Startseite der neuen GUI
Abbildung 10: Programme der alten GUI
Abbildung 9: Programme der neuen GUI
Abbildung 8: manueller Modus der alten GUI
Abbildung 7: manueller Modus der neuen GUI
Abbildung 6: Reinigungsprogramm (neue GUI)

Die MATLAB®-GUI ist die graphische Bedieneroberfläche der Laborsiebträgermaschine. Die in der GUI durch den Anwender eingegebenen Befehle, beispielsweise das Schalten eines Ventils, werden über den im Hintergrund laufenden MATLAB®-Programmcode an eine Schnittstelle weitergegeben. Diese Schnittstelle steuert die Multi-MCUs an, die direkt auf die Maschine zugreifen.
Als Anwender gelten Studierende, sowie Lehrende, die im Rahmen der „Geschmackssache Kaffee“ an der Labormaschine arbeiten; also Testversuche fahren oder die Maschine weiterentwickeln. Die MATLAB®-GUI ist demnach nicht für den Endanwender der Maschine gedacht. Das verkaufsfähige Endprodukt soll, wie auf dem Markt üblich, mit Schaltern und Knöpfen ausgestattet sein.

Zum Zeitpunkt des Projektstartes lag bereits eine MATLAB®-App inklusive GUI vor [85]. Statt einer Einarbeitung und Weiterentwicklung in den bestehenden Code, erschien eine vollständige Neuaufsetzung der MATLAB®-App und GUI sinnvoller.

Im Hinblick auf die oben genannten Anwender wurde bei der Zielsetzung die Erleichterung der Arbeit im Labor priorisiert. Da die studentischen Arbeitskräfte zum Großteil einer hohen Fluktuation unterliegen, wurde außerdem auf eine intuitive Bedienbarkeit und eine hohe Übersichtlichkeit geachtet. Dadurch soll das Einfinden in die MATLAB®-GUI erleichtert, und folglich die Einarbeitungszeit verkürzt werden.

Sowohl die alte als auch die neue MATLAB®-GUI ist in Tabs unterteilt. Diese gliedern sich in die Startseite, einen manuellen Modus und einen automatischen Modus für Bezugsprogramme. Die neue MATLAB®-GUI beinhaltet zusätzlich einen Tab für das Reinigungsprogramm, welches im Rahmen der Projektarbeit entstanden ist.
Die bisherige MATLAB®-GUI weist zudem Verbesserungspotenzial auf. So war der gesamte Laptop-Bildschirm durch die GUI ausgefüllt. In der neuen GUI wurde bewusst ein Format von 1720 x 880 Pixeln gewählt, sodass wahlweise am oberen oder unteren Rand der GUI ein im Hintergrund liegendes Programm sichtbar ist. Im Falle der Weiterentwicklung der Systemsoftware könnte dies das Command Window von MATLAB® sein, sodass Fehlermeldungen sofort zur Kenntnis genommen werden.
Ebenfalls neu ist, dass die Tabs nicht die gesamte Oberfläche der GUI einnehmen, sondern es einen immer sichtbaren Bereich gibt. Dieser bringt vier Vorteile mit sich. Erstens wird nicht für jeden Tab ein eigener Button für das Speichern des Messwertepuffers benötigt. Stattdessen gibt es diesen Button ein einziges Mal, aber in dem Bereich, auf den ein Zugriff jederzeit möglich ist. Ein zweiter Vorteil ist, dass die für das Geschmackserlebnis besonders relevanten Messwerte Leitungsdruck [mbar] und Durchflussrate [ml / s] ständig sichtbar sind. Auch der Error-Button, sowie der zugehörige Reset-Error-Button, ist in allen Tabs relevant. Die Verschiebung in den immer sichtbaren Bereich brachte auch hier eine erhöhte Reaktionsgeschwindigkeit auf Probleme mit sich, worin der dritte Vorteil liegt. Bei der Reaktion auf Probleme ist auch der Notaus-Button von Bedeutung. Hier können durch schnelles Handeln Schäden an Menschen und Maschine vermieden werden. Ebenfalls in dem immer sichtbaren Bereich ist der jeweilige Programmstatus der einzelnen Platinen. Das hat den Vorteil, dass immer erkennbar ist, ob diese verbunden sind; nicht nur auf der Startseite.
An der Startseite selbst hat sich kaum etwas verändert. Es gibt hier nach wie vor die Buttons „manueller Modus“, „Verbinden“, sowie „Debug“. Weiterhin gibt es Eingabefelder für Daten wie beispielsweise das Datum, die Kaffeesorte oder den Mahlgrad, die den Messwerten zugeordnet werden. Es ist außerdem einstellbar, wie oft die Daten gesichert werden sollen.
Während der Tab „Programme“ in der alten MATLAB®-GUI neben drei Schalter für Kaffeebezug, Teewasserbezug und Dampfbezug auch noch sehr viele andere Inhalte, die nicht direkt den Programmen zuordbar sind, wie beispielsweise die k-Faktoren der Regler, beinhaltet, ist dieser Tab in der neuen GUI minimalistischer gehalten. Da die Programme bisher gar nicht existieren, gibt es hier lediglich vier Buttons als Platzhalter. Ein Programm wird über diese gestartet und gestoppt. Der aktuelle Programmstatus ist an dem jeweils nebenstehenden Lämpchen erkennbar, wobei „rot“ bedeutet, dass das Programm in dem Moment aktiv ist. Während ein Programm durchläuft, sind Ventilschaltungen und Zustandsparameter in dem manuellen Modus nachverfolgbar.
Ansonsten ist der manuelle Modus primär dazu gedacht, dass Ventile einzeln geschaltet, Parameter einzeln geändert, und dadurch Programme entwickelt und getestet werden können. Das Prozessbild der alten GUI ist sehr detailliert und informativ, dadurch aber leider auch sehr unübersichtlich. Es sind auch die Wege des Brauchwassers hin zur Abtropfschale dargestellt. Dies ist bei Hydraulikplänen unüblich und verbraucht zusätzlichen Platz. Durch die vielen Farben und Formen wird die Aufmerksamkeit des Benutzers immer wieder hin zu anderen Stellen gelenkt. Dadurch, dass die Messwerte recht klein und an wenig intuitiven Stellen dargestellt sind, sind diese schwierig zu finden. Die Schalter für die Grundeinstellungen stehen nicht gesammelt und in keiner sinnvollen Reihenfolge.
In der neuen GUI dagegen sind diese Schalter in schlüssiger Reihenfolge, gesammelt oben links abgebildet. Die Bezeichnungen der Messwerte sind größer und fett gedruckt geschrieben. Die Messwerte selbst sind grau hinterlegt. Die Positionierung der Werte ist im Vergleich zu vorher logisch. Die Mischtemperatur befindet sich zum Beispiel an der Stelle, wo gedrosseltes Kalt- und in der Heizwendel erhitztes Warmwasser zusammentreffen. Die Brühgruppenwerte sind direkt in der angedeuteten Brühgruppe zu finden. Insgesamt ist das neue Prozessbild deutlich ruhiger. Es sind nur die wichtigsten Stränge dargestellt. Die Brauchwasserleitungen sind angedeutet.
Ein Hauptunterschied der neuen zur alten GUI liegt in der Ventildarstellung. Während zuvor durch Lämpchen in den Ventilen signalisiert wurde, ob, beziehungsweise wie, ein Ventil geschaltet ist, wird dies in der neuen GUI durch einen Bildwechsel deutlich. Klickt der Benutzer auf das Ventil im Prozessbild, ändert sich das im MATLAB®-Code hinterlegte Ventilbild und das Ventil wird geschaltet.
Da vor Beginn des Projektstartes noch kein Reinigungsprogramm existierte, gibt es den betreffenden Tab lediglich in der neuen GUI. Hier gibt es einen Button zum Start des Programmes, sowie eine Anzeige zum aktuellen Status. Es ist außerdem eine Beschreibung des Ablaufs und Hinweise dazu eingefügt.
Durch die zuvor angesprochenen Maßnahmen ist die neue MATLAB®-GUI übersichtlicher und intuitiver zu bedienen als die alte GUI. Sie ist außerdem auf dem neusten Stand des Hydraulikplans und bildet somit die Labormaschine treffend ab.















Melina Scherf, 25.07.2023, offene Themen

Der generelle Aufbau des Programmcodes wurde in einzelne Unterüberschriften unterteilt, sodass zukünftigen Bearbeitern die Zugehörigkeit der Funktionen verständlich wird. Diese lauten: Initialisierung und Verarbeitung MCUs, Programm- und Regleraufruf, Regler, Aktorenstellung. Es ist darauf zu achten, dass Programm- und Regleraufruf sowie Regler nur an den Programmcode angepasst wurden, ihre Funktionsweise jedoch nicht verändert wurde.
Von zukünftige Bearbeitende sind noch Verbesserungen vorzunehmen. Eine Statusmeldung am Ende der Initialisierung, dass diese beendet wurde, ist nicht der letzte Eintrag in der Statusleiste. Hier muss eine künstliche Verlangsamung vorgenommen werden. Die Initialisierungsfunktion wird häufiger als 4x aufgerufen. Dies liegt daran, dass durch den Import des ident-Programmes, vor Aufruf der ident()-Funktion, bereits ein Terminator gesendet wird.
Die im Reiter „manueller Modus“ angelegten Schalter sind noch nicht auf Funktionalität überprüft worden. Die Messwerte starten beim letzten Testdurchlauf des Programms automatisch mit der Initialisierung der MWP. Dieses sollte erst durch Betätigung eines Schalters geschehen. Zudem war das Signalwort der einkommenden Messwerte nicht gleichermaßen definiert (M und B!).
Die Abspeicherung der Messwerte in den Messwertpuffer erfolgt nach einer nicht mehr passenden Logik. Da dies Auswirkungen auf die Regler und Programme hat und diese thematisch nicht Teil der Projektgruppe SoSe2023 waren, wurde dies nicht angepasst. Die Anzeige der Messwerte ist noch fehlerhaft oder kein entsprechendes Anzeigelabel mehr in der Oberfläche vorhanden (Messwert 11-15). Hier sollte die Sinnhaftigkeit dieser Messwerte überprüft werden.
Es sollte zudem überprüft werden, ob es während einer Verarbeitungsroutine der Messwerte durch eine neu eingelesene Antwort zu Fehlern kommt. In der Praxis ist dies nie aufgetreten, der Code bietet jedoch die Option.
Die Schaltung der Heizung ist aktuell fehlerhaft. Der Aufruf muss als PWM-Signal übermittelt werden. Die Zuordnung der Ventile erwies sich ebenso als fehlerhaft, sodass manche Ventile nicht oder falsch angesteuert wurden. Die angepasste Ventilschaltung, insbesondere der Icon-Wechsel, bietet Potentiale zur Verbesserung und Vereinfachung. Zusätzlich müssen die geänderten Stellungsaufrufe in den Programm- und Regleraufruf eingepflegt werden.
Der ResetError-Button sowie der Notaus-Knopf haben aktuell noch keine Funktion. Außerdem wurde die Funktionen zum Durchrollieren der Antworten [85] entfernt, da die neue MCU nur eine Statuszeile je Platine und eine allgemeine besitzt.
Aufgrund der Zerstörung der Platinen, bedarf es einer ausführlicheren Übergabe, sodass das erstellte Reinigungsprogramm aus Zeitmangel nicht implementiert wurde. Dieses muss eingefügt und nochmals getestet werden. Aus denselben Gründen wurde ein automatischer Kaffee- und Teewasserbezug nicht realisiert. Diese Bezüge werden jedoch ähnlich dem Reinigungsprogramm ablaufen, womit eine Orientierung daran möglich ist.


Melina Scherf, 23.07.2023, Ventilschaltung automatischer Wechsel

Es soll bei der Magnetventilschaltung in MATLAB® verhindert werden, dass mit jedem Funktionsaufruf der Icon-Wechsel angelegt werden muss und bei zukünftigen automatischen Programmabläufen die Schaltung der Ventile auf der Oberfläche zu beobachten ist. Dazu wurde der Icon-Wechsel der Funktion zur Ventilschaltung hinzugefügt. Im manuellen Modus wird anhand der Statusflag das Bild gewechselt. Im automatischen Modus werden alle Icons der in der Übergabe enthaltenden Ventile zur geöffneten Position gewechselt, alle anderen zur geschlossenen. Somit wird auch der Aufruf vereinfacht und ist im automatischen und manuellen Modus identisch.

  app.ventile_stellen("'Yxx'");


Melina Scherf, 14.06.2023, Ventilschaltung (Python)

Der MicroPython-Code für die Ventilschaltung ab August 2023 wurde erstellt und auf der Seite zum Schalten Magnetventile SSR-Platine Multi-MCU erklärt.


Melina Scherf, 07.06.2023, Ventilschaltung (MATLAB)

Um die Schaltung der Aktoren übersichtlicher zu gestalten, sollen direkt in den Programmen (automatischer Modus) oder bei Wertänderung (manueller Modus) Funktionen aufgerufen werden.
Somit wurde je eine Funktion für die Heizung, Pumpe und das Dosierventil erstellt, die zukünftigen an allen Stellen – automatischer und manueller Modus - aufgerufen werden soll, die einer Stellung bedürfen. Diese Funktion sind bereits im Januar 2023 vorhanden gewesen. Anders verhält es sich mit der Ventilschaltung, diese wurde vollständig neu programmiert.
Die Schaltung der Ventile erfolgte im Januar 2023 über die Festlegung der Sollwerte:

    app.ventileSollIntern=[0 1 0 1 0 0 0 0 0 0]; 

Dieser Vektor wird anschließend im SOLL/IST-Vergleich verarbeitet.
Dies ist in der Handhabung sehr umständlich, da zu einem die Zuordnung der Ventile schwerfällt und zum anderen die Position der Ventile im Vektor nicht mehr zum aktuellen Stand der Maschine passt, was zukünftig verhindert werden soll. Aktuelle Schaltung: [Y01, Y03, Y04, Y05, Y13, Y06, Y07, Y08, Y09, Y00] Daher wurde die neue Funktion ventile_stellen() programmiert, die in der Lage ist eine unbekannte Anzahl an Eingaben zu verarbeiten. Die doppelten Anführungszeichen werden benötigt, da bei der Übertragung an Python eines gelöscht wird (Indikator String).

   Aufruf:  app.ventile_stellen("‘Y01‘", "‘Y13‘", "‘Y07‘");

Im automatischen Modus werden alle Ventile, die in dieser Funktion genannt werden, geöffnet, alle nicht genannten geschlossen. Eine Anwendung dieser Funktionsweise auf den manuellen Modus ist jedoch nicht möglich, da sonst bei Schaltung eines Ventils (Drücken auf Ventilicon) zeitgleich alle anderen Ventile mitgeschaltet werden würden. Die Funktion ist jedoch in der Lage zwischen automatischem und manuellem Modus zu unterscheiden. Im manuellen Modus werden dahingehend die übergebenen geschlossenen Ventile geöffnet und andersherum. Theoretisch würde es im manuellen Modus reichen nur einen Wert zu übergeben, denn manuell ist es bisher nur möglich, ein Ventil gleichzeitig zu schalten. Um aber zukünftigen Komplikationen aus dem Weg zu gehen und für zukünftige Bearbeiter eine bessere Übersichtlichkeit und Anpassungsmöglichkeit zu garantieren, wurde sich für dafür entschieden, einen Mehrfach-Aufruf trotzdem anzulegen.

Madita vom Stein, 06.06.2023

Beschreibung Prozessbild manueller Modus der GUI

Abbildung 5: Prozessbild manueller Modus der GUI

Auf dem Prozessbild sind die wesentlichen Zusammenhänge der im Mai 2023 aktuellen Labormaschine dargestellt.

Das Magnetventil Y01 ist das Ventil für den Festwasseranschluss.
Es wird eine Fluid-O-tech Pumpe verwendet. Parallel gibt es einen steuerbaren Bypass, der über ein Drosselventil mit Schrittmotor hergestellt wird.
Über das Magnetventil Y03 (Entschichtungsventil) wird der Boiler durch Umpumpen entschichtet oder durch Abpumpen entleert. Schmutzwasser kann über Y05 (Entwässerungsventil) abgeführt werden und über Y04 (Boilerbefüllung) wird der Boiler befüllt.
Der Kaffee- bzw. Teewasserbezug wird über Y06 (Bezugsventil) geschaltet. Es führt ein ungedrosselter Wasserstrang durch die Wasserwendel im Boiler zum Mischer. Ein weiterer Wasserstrang, der durch ein Dosierventil gedrosselt wird, führt ebenfalls zum Mischer. Der Mischer selbst ist derzeit als T-Stück realisiert.
Das 3/2-Wegeventil Y07 (Mischventil) führt im nicht-geschalteten Zustand in die Abtropfwanne.
Das Magnetventil Y09 (Umschaltventil) schaltet zwischen Kaffeebezug und Teewasserbezug um. Es steht im nicht-geschalteten Zustand auf Kaffeebezug.
Vor der Brühgruppe befindet sich eine Drossel mit Schrittmotor.
Über das Ventil Y08 (Rückspülventil) wird die halbautomatisierte Rückspülreinigung der Brühgruppe realisiert.
Der Dampfhahn ist als 3/2-Wege-Magnetventil Y13 ausgeführt. Im nicht-geschalteten Zustand wird das Kondenswasser zwischen Dampfhahn und -lanze in die Abtropfschale abgeleitet.
Der Stahlboiler der Labormaschine weist 3,6 Liter Gesamtvolumen auf und wird auf 2,4 Liter befüllt. Mit einem 1800 Watt leistungsgeregeltem Heizelement wurden 12 Minuten Aufheizzeit ermittelt.

Melina Scherf, 26.05.2023, Ventilschaltung

Die Schaltung der Ventile im automatischen Modus wurde angepasst. Im Januar 2023 wurde eine Abfrage der IST- und SOLL-Stellwerte der Ventile durchgeführt und bei detektierten Abweichungen ein Vektor an die STM32 geschickt, die die Ventile entsprechend geschaltet hat. Der Vergleich bleibt vorläufig bestehen, welcher bei abweichenden Werten einer neu eingeführten Statusflag ab August 2023 eine Funktion "Yxx__on" bzw. "Yxx_off" direkt aufgerufen. Die Zuordnung der Pins zu den jeweiligen Ventilen erfolgt bereits in der Initialisierungsfunktion der SSR. Je nach Stellung des Ventils wird das Icon in der Oberfläche im Reiter „manueller Modus“ angepasst.

Melina Scherf, 24.05.2023, Initialisierung BAS, SSR, MWP; Aktorenstellung: Pumpe, Heizung, Dosierventil

Abbildung 4

Es erfolgte die erstmalige Zusammenführung der Elektronik mit der Software.
Initialisierung
Im Zuge dessen wurden die Initialisierungen auf den neu geschriebenen Python-Code angepasst. Auf der SSR werden zusätzlich die Heizung und Ventile initialisiert. Letztere werden alle geschlossen, um einen gesicherten Zustand herzustellen. Die Initialisierung der Pumpe findet auf der BAS statt. Die zuvor verwendete MWP-Initialisierung der simulierten Messwerte wurde zum Import der realen Messwerterfassung geändert. [Abb. 4]
Aktorenstellung
Die Schaltung der Aktoren erfolgt durch writeline-Befehle, welche von MATLAB® an Python geschickt werden. Diese wurden im Code auf den aktuellen Python-Code angepasst und an die jeweils vorgesehenen Platinen gesendet.
Bei der Einarbeitung ist jedoch aufgefallen, dass die Stellung der Aktoren einiges an Einarbeitungszeit bedarf, welche durch Vereinfachung verkürzt werden soll. Die Stellung erfolgte Stand Januar 2023 im manuellen sowie automatischen Modus über eine Änderung der Soll-Wert. Am Ende des gerade ablaufenden Programmes wurde ein Soll-Ist-Vergleich aufgerufen, welcher alle Aktoren bei mindestens einer festgestellten Abweichung stellt. [85]
Um einen unübersichtlichen, großen Befehl zur Stellung aller Aktoren zu vermeiden, wurde der Soll-Ist-Vergleich im automatischen Modus beibehalten, jedoch wird bei festgestellter Abweichung eines Aktors dieser sofort gestellt. Der Vergleich wird vorerst beibehalten, da ein Direkt-Aufruf in den Programmen viele Konsequenzen nach sich ziehen würde, die in der Praxis getestet werden müssen. Da der Schwerpunkt dieser Projektarbeit zunächst auf der Implementierung der Multi-MCU lag, bleibt dies ein offenes ToDo für zukünftige Projektgruppen.
Im manuellen Modus wurde jedoch direkt in die Callbacks bei Wertänderung die Neustellung einprogrammiert und erfolgt Stand August 2023 nicht mehr über einen Soll-Ist-Vergleich.

Melina Scherf, 22.05.2023, neue GUI

Abbildung 3: Flussdiagramm - Bedienbarkeit der Schalter im Reiter "Manueller Modus"

Der Programmcode wurde in die von Madita vom Stein erstellte GUI importiert.

Sobald der Bediener die App startet, werden im Hintergrund alle nötigen Kalibrierkurven und die Eingaben im Reiter „Start“ vor letzter Schließung der App geladen. Im Reiter „manueller Modus“ werden für alle Ventile die Start-Icons im Zustand „geschlossen“ eingefügt, sodass die Stellung der Ventile graphisch angezeigt wird. Es wurde bei Mausklick auf das Bild im Reiter „Manueller Modus“ im manuellen Modus der Wechsel des Icons und die Negierung (Umkehrung) der Stellung des Ventils realisiert, welches durch eine Flag detektiert wird.
Zudem werden die Schalter im Reiter „Manueller Modus“ ausgegraut und sind somit zu diesem Zeitpunkt nicht bedienbar. Dies garantiert, dass keine Funktionen abgerufen werden können, die entweder noch nicht initialisiert sind oder überwacht werden müssen. Nach abgeschlossener Initialisierung werden die Knöpfe im Reiter „manueller Modus“ in der GUI nacheinander sichtbar und bedienbar geschaltet, sobald es die sichere Bedienung der Maschine zulässt. [Abb. 3]
Bei Beendigung der App wird die in der Datensicherung erwähnte Datei „last_data“ erstellt, welche die editierbaren Eingaben der Oberfläche enthält, die bei Neustart der App geladen werden.
















Melina Scherf, 20.05.2023, Verarbeitung BAS, SSR

Abbildung 2: Verarbeitungsfunktionen der Platinen

Die Bestellung der Platinen erfolgte schneller als geplant, somit wurde statt des vorläufigen Konzeptes mit vier Platinen (SSR, BAS, MWP, RPI) bereits im Sommersemester 2023 das geplante Konzept mit drei Platinen (SSR, BAS, MWP) eingeführt. Die RPI-Platine entfällt, sodass deren Funktionen zur Schrittmotorsteuerung auf die BAS- und SSR-Platine verteilt werden. In der gesendeten Antwort wird nach den Signalwörtern der Schrittmotoren („endDrossel“, „endBypass“, „endDosier“) gesucht, welche am Ende einer Schrittmotor-Stellung übermittelt werden. Werden diese erkannt, werden die Schrittmotoren stromlos geschaltet.















Melina Scherf, 18.05.2023, Messwerte anzeigen

Die Messwerte werden kontinuierlich auf der Oberfläche angezeigt und etwa jede Sekunde aktualisiert.

Melina Scherf, 16.05.2023, Datensicherung

Es erfolgt eine kontinuierliche Sicherung der ermittelten Messdaten. Der Zeitabstand der Datensicherung wird im Eingabefeld eingegeben und ist mit 120 Sekunden vorbelegt. Die Datensicherung umfasst die letzten xx Sekunden der erfassten Messdaten. Bei jedem Schließen der GUI wird ebenfalls eine Datensicherung vorgenommen. Diese Datensicherung ist unter dem Dateinamen „last_data.mat“ zu finden.
Zusätzlich ist eine manuelle Datensicherung durchführbar. Diese legt die Daten in einer anderen Datei ab. Dabei wird der Dateiname aus Datum und Uhrzeit gebildet, sodass die Daten wieder einem Ereignis zuordenbar sind, die Dateinamen eindeutig bleiben und es zu keinen Überschreibungen von erfassten Messdaten kommt. Der Dateiname hat das Format „YYYYMMDD_Thhmmss.mat“ (ISO-Datum und Zeitangabe ohne Zwischenzeichen).
Als Meta-Daten werden alle editierbaren Eingaben des Start-Reiters und eine Messpunktliste abgespeichert. Die Amat-Datei verfügt über die Messdatenmatrix und einen Zeitvektor.

Melina Scherf, 15.05.2023, Messwertverarbeitung

In der Verarbeitungsfunktion der Messwerte wird der Zeitstempel in Sekunden der jeweiligen Messung in einer neuen Zeile der Matrix abgespeichert. Die Messwerte werden in dieselbe Zeile in den Messwertpuffer gespeichert und umgerechnet.
Sollte der Messwertpuffer die zuvor definierte Länge überschreiten, wird sowohl dieser als auch die Zeitstempelmatrix gekürzt.
Anschließend werden die Messwerte auf der Oberfläche angezeigt. Letztendlich wird eine erste Datensicherung (bei erster Messung) oder eine automatische Datensicherung (wenn der Zeitabstand den auf der Oberfläche editierbaren Wert überschreitet) ausgelöst.

Melina Scherf, 14.05.2023, Verarbeitungsfunktion BAS (Messwerte)

Analog zur MWP wurde ebenso die Verarbeitungsfunktion der BAS erstellt. Einziger Unterschied ist, dass einkommende Messwerte der BAS-Platine an einem "F!" zu erkennen sind.
Die simulierte Messwerterfassung/Initialisierung wurde in gleicher Weise wie für die MWP für die BAS-Platine erstellt. Um die Funktion in der Praxis zu testen, wurde je die letzte Zeile des von Armin Rohnen erstellten Programm zur simulierten Messdatenerfassung angepasst, sodass die passende Anzahl der Messwerte wie im Real-Betrieb gesendet werden.
MWP:

print('M!',T_Boiler, T_Eingang, T_Mischer, P_Boiler, Leitwert, T_Bruehgruppe, P_Bruehgruppe) 

BAS:

print('F!', Fuellstand , Durchfluss, Pulse)

Melina Scherf, 13.05.2023, Verarbeitungsfunktion MWP

In der MATLAB® GUI wurde die Verarbeitungsfunktion der Messwert-Platine erstellt. Dabei handelt es sich um die Funktion, die bei gesendetem Terminator der MWP aufgerufen wird. Diese unterscheidet einkommende Messwerte (Erkennungszeichen "M!") von Fehlern. Der Benutzer ist in der Lage anhand der Error-Lampe sicherzustellen, ob es zu einem Fehler gekommen ist, diese würde in diesem Fall rot leuchten. Werden Messwerte erkannt wird die messwerte_verarbeiten()-Funktion zur Verarbeitung der Messwerte aufgerufen und die Error-Lampe leuchtet grün.

Melina Scherf, 07.05.2023, Simulierte Messwerte

Um die Verarbeitungsfunktion der MWP zu testen, wurde ein von Armin Rohnen erstelltes Programm zur simulierten Messdatenerfassung eingepflegt. Dieses stellt eine Initialisierung der MWP dar. Nach Import der nötigen Python-Programme wird ein Timer definiert, der bestimmt, in welcher Frequenz (in Sekunden) die Messwerte gesendet werden sollen. Das Programm sendet kontinuierlich 10 Messwerte und wird über einen Knopf gestartet sowie beendet

Melina Scherf, 06.05.2023, Verbinden

Abbildung 1: Flussdiagramm - Verbinngsroutine

Die Initialisierung aller vier MCUs ist möglich.
Verbinden_ButtonButtonPushed
Nach Betätigung des Verbinden-Buttons in der Oberfläche, legt dieser Callback eine Liste aller belegten Ports und eine unidentifizierte MCU inklusive Verarbeitungsgeschwindigkeit, Terminator und Verarbeitungsfunktion für den ersten Port fest. Durch Aufruf der ident()-Funktion wird von der Platine das Identifikationskürzel als Antwort gesendet. Diese Antwort löst die Verarbeitungsfunktion init_mcus() aus.
init_mcus()
Diese Funktion identifiziert das gesendete Antwortkürzel und weist der identifizierten Platine einen neuen Namen und Verarbeitungsfunktion zu. Anschließend wird mit der Initialisierung der Platinen in einer separaten Funktion begonnen.
Um gegebenenfalls die Ansprache des nächsten Portes zu ermöglichen, wird nach abgeschlossener Initialisierung die hochzaehlen()-Funktion aufgerufen. Sollten bereits alle MCUs initialisiert worden sein, wird dies dem Benutzer durch eine Statusmeldung angezeigt.
hochzaehlen()
In dieser Funktion wird für den nächsten Port, sollte es noch ein nicht bearbeiteter vorhanden sein, eine unidentifizierte MCU angelegt und erneut durch den Aufruf der ident()-Funktion die init_mcus()- Funktion aufgerufen.


















Melina Scherf, 28.04.2023

Während der Neuprogrammierung der MATLAB® GUI ist so vorzugehen, dass jeder hinzugefügte Codeabschnitt zunächst mit Versuchs-Microcontrollern getestet wird. Dazu wurden Melina Scherf 4 Versuchs-Microcontroller übergeben.
Es wird bis zur Fertigstellung der neuen GUI durch Madita vom Stein mit einer Testumgebung gearbeitet, in der nach und nach alle für die Programmierung notwendigen Oberflächenelemente angelegt werden. Nach der Fertigstellung werden diese dann in die neue Oberfläche übertragen.
Um die Kommunikation zwischen MATLAB® und MicroPython zu ermöglichen, müssen die MCUs initialisiert werden. Dazu wurde mit Armin Rohnen eine Workshop durchgeführt, in welchem das Vorgehen zur Initialisierung vorgestellt wurde. Anschließend wurde von Melina Scherf diese in den neuen Code eingepflegt. Die MCUs heißen im Code ssr_platine, bas_platine, mwp_platine, rpi_platine nach zuvor festgelegten Definition der Benennungen. So wird die Ansprache der alten STM32 zukünftig auf unterschiedliche MCUs aufgeteilt werden.

Melina Scherf, 16.04.2023

Als Vereinfachungspotential wurde zum einen die generelle Übersichtlichkeit des Codes festgestellt. Um dies zu verbessern, wird mit größeren Einzügen gearbeitet, um die übergeordneten Funktionen auf einen Blick zu erkennen. Die Reihenfolge der functions wird zudem thematisch sinnvoll gegliedert, vorläufig in: Programme, Regler, Kommunikation mit MCU, Aktoren.
Dazu wurde am Anfang der methods im Code ein Inhaltsverzeichnis und über den jeweiligen Abschnitten Überschriften eingefügt.
Das Programm des Mischwasserbezugs besteht im vorhanden Code aus 8 Funktionen, diese sollen zusammengekürzt und (sofern möglich) in einer Funktion zusammengefasst werden.

Melina Scherf, 01.04.2023

Die Neuprogrammierung der MATLAB® GUI wird von Madita vom Stein und Melina Scherf durchgeführt.
Dabei wird Madita vom Stein die graphische Oberfläche der App erstellen. Es soll versucht werden eine übersichtlichere und ansprechendere Ansicht insbesondere des manuellen Modus' zu erarbeiten.
Melina Scherf wird sich in den bereits bestehenden Code einarbeiten und Vereinfachungs- und Verbesserungspotentiale identifizieren. Diese sollen in die neue MATLAB® GUI einfließen.

Melina Scherf, 31.03.2023

Bei der MATLAB® GUI handelt es sich um die graphische Oberfläche, die ein Benutzer sieht und bedient. Die eigentliche Funktionsweise der App wird jedoch in dem zugrundeliegenden Programmcode festgelegt. Dieser Code bildet die Schnittstelle zwischen der Oberfläche und der Elektronik der Laborsiebträgermaschine.
Zum Zeitpunkt des Projektbeginns im März 2023 lag bereits eine MATLAB® GUI mit entsprechendem Programmcode vor. [85]
Eine Neugestaltung soll jedoch die Bedienbarkeit intuitiver und einfacher gestalten sowie die Oberfläche dem aktuell Hardwarestand [64] angepasst werden. Der Programmcode sollte ebenso für die neugestaltete Oberfläche neu aufgesetzt werden. Der bestehende Code bot Potentiale zur Verbesserung und Vereinfachung, welches gerade bei der hohen Fluktuation des Projektes sinnvoll erschien.
In diesem Zug sollte die Vorbereitung für den Umbau auf die geplante Multi-MCU ebenfalls angelegt werden.

Melina Scherf, 24.03.2023

Ein Einführungsworkshop wurde durch Armin Rohnen durchgeführt. Dieser diente dazu, den Projektteilnehmern einen ersten Einblick in die Programmierung von MATLAB® in Kombination mit MicroPython zu geben.
Es wurde die generelle Funktion des MATLAB® App Designers vorgestellt und dafür eine erste Testoberfläche erstellt, welche einen Raspberry Pi initialisiert und eine Lampe per Schalter an- und ausschaltet.
Der dabei entstandene Code wurde von Melina Scherf kommentiert, um den anderen Projektteilnehmern, die zuvor noch nicht mit (Micro)Python gearbeitet hatten, eine eigenständige Nacharbeitung zu ermöglichen

Armin Rohnen, 16.02.2023

Für die Inbetriebnahme der Multi-MCU-Elektronik muss der Programmcode der MATLAB®-GUI entsprechend angepasst werden. Die bisherige Datenverarbeitung der STM32-MCU wird dabei auf drei Datenverarbeitungen aufgeteilt. Die angeschlossenen MCUs müssen dabei eindeutig identifiziert werden.