Visualisierung und Interaktion über die MATLAB®-GUI: Unterschied zwischen den Versionen
| (3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
= Armin Rohnen, 20.05.2026 - Programmgerüst der MATLAB® Maschinensimulator / Wartungs - APP = | |||
Aufgrund der nichtlinearität der digitalen Potis und der Auswirkung der Schaltungstoleranzen auf den Platinen sind Kennlinien für die Übersetzung von phys. Wert der eingestellt werden soll zu Digitalwert für die Einstellung des jeweiligen Potis erforderlich. Die Ermittlung dieser Kennlinien erfordert den gelichzeitigen Betrieb von mindestens zwei MCUs an einem PC. Das ist mit Thonny nicht darstellbar. Da sich die gleiche Situation für die spätere Nutzung des Maschinensimulators ebenso ergeben wird und eine einfache Bedienung ermöglicht werden soll, ist die Entscheidung getroffen worden, dass der Maschinensimulator integraler Bestandteil der Wartungs-App wird. | |||
Zum Zeitpunkt der Kennlinienermittlung lag noch kein Progarmmgerüst der Wartungs-App vor. Um jedoch nicht in weiteren Zeitverzug zu geraten, wurde im Zuge der Kennlinienermittlung für den Maschinensimulator das Programmgerüst für die Wartungs-App erstellt. | |||
[[Datei:20260520 Maschinensimulator.png|thumb|1000px|gerahmt|zentriert|]] | |||
Um mit die Wartungs-App betreiben zu können und um mit dem Maschinensimulator arbeiten zu können, muss die MCU des Maschinensimulators via USB angeschlossen sein. Über den Button erfolgt der Verbindungsaufbau mit der Maschinensimulator MCU. Dieser Verbindungsaufbau ist bislang lediglich für das Betriebssystem UNIX /macOS realisiert. Für andere Betriebssysteme muss dies noch erfolgen. In der Initialisierung der Maschinensimulator MCU erfolgt auch nur jener Teil, welcher für die Bestimmung der Digitalwert-Kennlinien erforderlich ist. Insbesondere erfolgt noch nicht die UART-initialisierung und ebenso keine Weiterleitung der Token. | |||
Wenn der Maschinensimulator verbunden ist, wird der Verbindungsaufbau zu einer Messplatine freigegeben und es ist möglich eine MCU-Verbindung mit einer Messplatine aus der Multi-MCU-Baureihe aufzubauen. Ist die Verbindung aufgebaut kann über den Button "Messwerte erfassen" Messwertdatensätze für die jeweils 8 Messkanäle erfasst und verarbeitet werden. Um diese Art der Messwerterfassung durchführen zu können ist auf der MCU der Messplatine das Python-Programm mwp_chanMesswerte.py erforderlich, was sich in der ZIP-Datei 20260516_Simulator_Wartungs_APP.zip auf der Wiki-Seite des [http://www.institut-fuer-kaffeetechnologie.de/Intern/index.php?title=Programmcode Programmcodes] befindet. Bei jedem erfassten Messdatensatz wird aus den ermittelten Spannungswerten über die logische phys. Umrechnung oder über die erforderliche Kennlinie aus dem Spannungswert auf den phys. Wert umgerechnet. Die Werte werden in der Messwerttabelle (rechte Tabelle) als Spannungswert in [mV] und im jeweiligen phys. Messwert ausgegeben. In der linken Tabelle kann der jeweilige Simulationswert eingegeben werden. Entweder als Digitalwert oder als phys. Wert. Im falle der phys. Werteeingabe wird über die ermittelte Kennlinie auf den erforderlichen Digitalwert umgerechnet und dieser wird dann auf dem Maschinensimulator eingestellt. Da die Digitalpotentiometer lediglich über eine 8-Bit-Auflösung verfügen, ist diese Einstellung recht grob und der gemessene Wert weicht vom gewünschten Einstellwert oft ab. | |||
Die Kennlinienermittlung läuft automatisiert ab und dauert ca. 15 Min. Damit diese nicht versehentlich ausgelöst wird, ist sie über einen Switch zusätzlich verriegelt. | |||
Für den Kommunikation mit dem Maschinensimulator und der Messwertplatine ist ein jeweils 4zeiliges Statusfeld angelegt. Hier werden die zugehörigen Statusmeldungen angezeigt. | |||
== Programmstuktur == | |||
=== function startupFcn(app) === | |||
Wird zum Start der App durchgeführt. Hier werden alle Voreinstellungen durchgeführt, es werden die erforderlichen Kennlinien eingelesen und es wird der "Trace" vorbereitet. | |||
Es wird das Betriebssystem des ausführenden Host ermittelt. Allerdings erfolgt lediglich für "UNIX/macOS" eine Abarbeitung. Damit ist diese App für die Nutzung auf anderen betriebssystemen als "UNIX/macOS" noch anzupassen. | |||
=== function SimulatorVerbindenButtonPushed(app, event) === | |||
Der Button Simulator Verbinden führt die Funktion SimulatorVerbindenButtonPushed aus. Es wird über den ersten freien USB-Port versucht die Verbindung zum Maschinensimulator aufzubauen. Dieser Teil des Programmcodes ist individuell für "UNIX/macOS" programmiert und muss für andere Betriebssysteme noch angepasst werden. | |||
Zur Abarbeitung der ersten Daten vom Maschinensimulator wird die Funktion init_sim als ISR konfiguriert. | |||
=== function init_sim(app, ~, ~) === | |||
Zur Indentifikation des Maschinensimulators wurde auf dieser MCU die Funktion ident aufgerufen. Diese gibt die Platinenkennung zurück und es kann entschieden werden ob der Port gewechselt werden muss oder tatsächlich der Maschinensimulator angeschlossen ist. Ist der Maschinensimulator angeschlossen, erfolgt die tatsächliche Initialisierung des Maschinensimulators in der Funktion sim_initialisieren. | |||
=== function sim_initialisieren(app, ~, ~) === | |||
Für die Initialisierung des Maschinensimulators werden alle Digitalpotis auf Digitalwert 250 gestellt und alle Kurzschlüsse (Füllstandssimulationen) geöffnet. | |||
Für das weitere Interrupthandling der eingehenden Daten wird das ISR auf die Funktion sim_datenverarbeitung umgestellt. | |||
Als letzte Aktion in der Initialisierung wird auf der Maschinensimulator-MCU "import machine" durchegführt. Dies muss die letzte Aktion bleiben, da über die nachfolgende ISR Abarbeitung durch das Echo des Aufrufs die Betriebsbereitschaft erkannt wird. Weitere Initialisierungsschritte müssen vor diesem Aufruf eingefügt werden. | |||
=== function sim_datenverarbeitung(app, ~, ~) === | |||
Die Funktion sim_datenverarbeitung übernimmt die eigentliche Abarbeitung der von der Maxchinensimulator gesendeten Daten. | |||
Stand 20.05.2026 wird lediglich das Logging durchgeführt. | |||
Die weitere Funktionalität muss noch hinzugefügt werden. | |||
=== function KalibrierungVerbindenButtonPushed(app, event) === | |||
Der Button Espressomaschine/Messplatine (Kalibrierung) Verbinden führt die Funktion KalibrierungVerbindenButtonPushed aus. Es wird über den ersten freien USB-Port versucht die Verbindung zr Messwertplatine aufzubauen. Dieser Teil des Programmcodes ist individuell für "UNIX/macOS" programmiert und muss für andere Betriebssysteme noch angepasst werden. | |||
Zur Abarbeitung der ersten Daten von der Messwertplatine wird die Funktion init_kal als ISR konfiguriert. | |||
=== function init_kal(app, ~, ~) === | |||
Zur Indentifikation der Messwertplatine wurde auf dieser MCU die Funktion ident aufgerufen. Diese gibt die Platinenkennung zurück und es kann entschieden werden ob der Port gewechselt werden muss oder tatsächlich eine Messwertplatine angeschlossen ist. Ist eine Messwertplatine angeschlossen, erfolgt die tatsächliche Initialisierung der Messwertplatine in der Funktion kal_initialisieren. | |||
=== function kal_initialisieren(app, ~, ~) === | |||
Für die Initialisierung der Messwertplatine wird die Anweisung "writeline(app.MCU_KAL, 'from mwp_chanMesswerte import mwp_chanMesswerte');" durchgeführt. Dazu muss isch auf der Messwertplatine die Datei mwp_chanMesswerte.py befinden. | |||
Für das weitere Interrupthandling der eingehenden Daten wird das ISR auf die Funktion kal_datenverarbeitung umgestellt. | |||
Als letzte Aktion in der Initialisierung wird auf der Messwertplatinen-MCU "import machine" durchegführt. Dies muss die letzte Aktion bleiben, da über die nachfolgende ISR Abarbeitung durch das Echo des Aufrufs die Betriebsbereitschaft erkannt wird. Weitere Initialisierungsschritte müssen vor diesem Aufruf eingefügt werden. | |||
=== function MesswerteErfassenButtonPushed(app, event) === | |||
Der Button Messwerte Erfassen löst die Funktion MesswerteErfassenButtonPushed aus. Darin wird die Anweisung "writeline(app.MCU_KAL, 'mwp_chanMesswerte(0)');" ausgeführt, was die Messung von Messwert Kanal(0) auf der Messwertplatine auslöst. Ist die Messung abgeschlossen wird der Messwert an die APP zurück gesendet und über den ISR wird die Funktion kal_datenverarbeitung ausgeführt. | |||
=== function kal_datenverarbeitung(app, ~, ~) === | |||
Die Funktion kal_datenverarbeitung übernimmt die Datenverarbeitung der von der Messwertplatine kommenden Daten. Ist dies ein Messwert der zu keiner Kalibrierung gehört wird der Messwert logisch und ohysikalisch verarbeitet und im entsprechenden Datenfeld ausgegeben. Es wird danach die Messung des nächsten Messwertkanals angestoßen. | |||
Gehört der Messwert zu einer Kalibrierdurchführung, wird dieser in die zugehörige Stelle der Kalibriermatrix eingefügt und es wird die nächst folgende Kalibrierstufe ausgeführt. Zum Abschluss der Kalibrierung wird die Kalibriermatrix abgespeichert. | |||
= Armin Rohnen, 11.04.2024 = | = Armin Rohnen, 11.04.2024 = | ||
In der Übergangsphase soll der Betriebsstart der Espressomaaschine von der MATLAB®-GUI ausgelöst werden. | In der Übergangsphase soll der Betriebsstart der Espressomaaschine von der MATLAB®-GUI ausgelöst werden. | ||
Die aktuelle MATLAB®-GUI soll in eine komfortable Bedienoberfläche für Wartungs- und Einstellarbeiten überführt werden. Alle Tastenfunktionalitäten und die Vertikalhebelfunktionalität sollen über die Oberfläche durchgeführt werden können.Wie bisher soll jeder Aktor (Magnetventile, Pumpenleistung und Schrittmotorverstellungen) über die GUI ausgelöst werden können. Ebenso soll die bisherige Visualisierung der Messwerte und Schaltzustände erhalten bleiben. Dies allerdings mit einer geringeren Aktualisierungsrate. Vier Aktualisierungen je Sekunde werden als ausreichend angesehen. | Die aktuelle MATLAB®-GUI soll in eine komfortable Bedienoberfläche für Wartungs- und Einstellarbeiten überführt werden. Alle Tastenfunktionalitäten und die Vertikalhebelfunktionalität sollen über die Oberfläche durchgeführt werden können.Wie bisher soll jeder Aktor (Magnetventile, Pumpenleistung und Schrittmotorverstellungen) über die GUI ausgelöst werden können. Ebenso soll die bisherige Visualisierung der Messwerte und Schaltzustände erhalten bleiben. Dies allerdings mit einer geringeren Aktualisierungsrate. Vier Aktualisierungen je Sekunde werden als ausreichend angesehen. | ||
Aktuelle Version vom 22. Mai 2026, 20:29 Uhr
Armin Rohnen, 20.05.2026 - Programmgerüst der MATLAB® Maschinensimulator / Wartungs - APP
Aufgrund der nichtlinearität der digitalen Potis und der Auswirkung der Schaltungstoleranzen auf den Platinen sind Kennlinien für die Übersetzung von phys. Wert der eingestellt werden soll zu Digitalwert für die Einstellung des jeweiligen Potis erforderlich. Die Ermittlung dieser Kennlinien erfordert den gelichzeitigen Betrieb von mindestens zwei MCUs an einem PC. Das ist mit Thonny nicht darstellbar. Da sich die gleiche Situation für die spätere Nutzung des Maschinensimulators ebenso ergeben wird und eine einfache Bedienung ermöglicht werden soll, ist die Entscheidung getroffen worden, dass der Maschinensimulator integraler Bestandteil der Wartungs-App wird.
Zum Zeitpunkt der Kennlinienermittlung lag noch kein Progarmmgerüst der Wartungs-App vor. Um jedoch nicht in weiteren Zeitverzug zu geraten, wurde im Zuge der Kennlinienermittlung für den Maschinensimulator das Programmgerüst für die Wartungs-App erstellt.
Um mit die Wartungs-App betreiben zu können und um mit dem Maschinensimulator arbeiten zu können, muss die MCU des Maschinensimulators via USB angeschlossen sein. Über den Button erfolgt der Verbindungsaufbau mit der Maschinensimulator MCU. Dieser Verbindungsaufbau ist bislang lediglich für das Betriebssystem UNIX /macOS realisiert. Für andere Betriebssysteme muss dies noch erfolgen. In der Initialisierung der Maschinensimulator MCU erfolgt auch nur jener Teil, welcher für die Bestimmung der Digitalwert-Kennlinien erforderlich ist. Insbesondere erfolgt noch nicht die UART-initialisierung und ebenso keine Weiterleitung der Token.
Wenn der Maschinensimulator verbunden ist, wird der Verbindungsaufbau zu einer Messplatine freigegeben und es ist möglich eine MCU-Verbindung mit einer Messplatine aus der Multi-MCU-Baureihe aufzubauen. Ist die Verbindung aufgebaut kann über den Button "Messwerte erfassen" Messwertdatensätze für die jeweils 8 Messkanäle erfasst und verarbeitet werden. Um diese Art der Messwerterfassung durchführen zu können ist auf der MCU der Messplatine das Python-Programm mwp_chanMesswerte.py erforderlich, was sich in der ZIP-Datei 20260516_Simulator_Wartungs_APP.zip auf der Wiki-Seite des Programmcodes befindet. Bei jedem erfassten Messdatensatz wird aus den ermittelten Spannungswerten über die logische phys. Umrechnung oder über die erforderliche Kennlinie aus dem Spannungswert auf den phys. Wert umgerechnet. Die Werte werden in der Messwerttabelle (rechte Tabelle) als Spannungswert in [mV] und im jeweiligen phys. Messwert ausgegeben. In der linken Tabelle kann der jeweilige Simulationswert eingegeben werden. Entweder als Digitalwert oder als phys. Wert. Im falle der phys. Werteeingabe wird über die ermittelte Kennlinie auf den erforderlichen Digitalwert umgerechnet und dieser wird dann auf dem Maschinensimulator eingestellt. Da die Digitalpotentiometer lediglich über eine 8-Bit-Auflösung verfügen, ist diese Einstellung recht grob und der gemessene Wert weicht vom gewünschten Einstellwert oft ab.
Die Kennlinienermittlung läuft automatisiert ab und dauert ca. 15 Min. Damit diese nicht versehentlich ausgelöst wird, ist sie über einen Switch zusätzlich verriegelt.
Für den Kommunikation mit dem Maschinensimulator und der Messwertplatine ist ein jeweils 4zeiliges Statusfeld angelegt. Hier werden die zugehörigen Statusmeldungen angezeigt.
Programmstuktur
function startupFcn(app)
Wird zum Start der App durchgeführt. Hier werden alle Voreinstellungen durchgeführt, es werden die erforderlichen Kennlinien eingelesen und es wird der "Trace" vorbereitet.
Es wird das Betriebssystem des ausführenden Host ermittelt. Allerdings erfolgt lediglich für "UNIX/macOS" eine Abarbeitung. Damit ist diese App für die Nutzung auf anderen betriebssystemen als "UNIX/macOS" noch anzupassen.
function SimulatorVerbindenButtonPushed(app, event)
Der Button Simulator Verbinden führt die Funktion SimulatorVerbindenButtonPushed aus. Es wird über den ersten freien USB-Port versucht die Verbindung zum Maschinensimulator aufzubauen. Dieser Teil des Programmcodes ist individuell für "UNIX/macOS" programmiert und muss für andere Betriebssysteme noch angepasst werden.
Zur Abarbeitung der ersten Daten vom Maschinensimulator wird die Funktion init_sim als ISR konfiguriert.
function init_sim(app, ~, ~)
Zur Indentifikation des Maschinensimulators wurde auf dieser MCU die Funktion ident aufgerufen. Diese gibt die Platinenkennung zurück und es kann entschieden werden ob der Port gewechselt werden muss oder tatsächlich der Maschinensimulator angeschlossen ist. Ist der Maschinensimulator angeschlossen, erfolgt die tatsächliche Initialisierung des Maschinensimulators in der Funktion sim_initialisieren.
function sim_initialisieren(app, ~, ~)
Für die Initialisierung des Maschinensimulators werden alle Digitalpotis auf Digitalwert 250 gestellt und alle Kurzschlüsse (Füllstandssimulationen) geöffnet.
Für das weitere Interrupthandling der eingehenden Daten wird das ISR auf die Funktion sim_datenverarbeitung umgestellt.
Als letzte Aktion in der Initialisierung wird auf der Maschinensimulator-MCU "import machine" durchegführt. Dies muss die letzte Aktion bleiben, da über die nachfolgende ISR Abarbeitung durch das Echo des Aufrufs die Betriebsbereitschaft erkannt wird. Weitere Initialisierungsschritte müssen vor diesem Aufruf eingefügt werden.
function sim_datenverarbeitung(app, ~, ~)
Die Funktion sim_datenverarbeitung übernimmt die eigentliche Abarbeitung der von der Maxchinensimulator gesendeten Daten.
Stand 20.05.2026 wird lediglich das Logging durchgeführt.
Die weitere Funktionalität muss noch hinzugefügt werden.
function KalibrierungVerbindenButtonPushed(app, event)
Der Button Espressomaschine/Messplatine (Kalibrierung) Verbinden führt die Funktion KalibrierungVerbindenButtonPushed aus. Es wird über den ersten freien USB-Port versucht die Verbindung zr Messwertplatine aufzubauen. Dieser Teil des Programmcodes ist individuell für "UNIX/macOS" programmiert und muss für andere Betriebssysteme noch angepasst werden.
Zur Abarbeitung der ersten Daten von der Messwertplatine wird die Funktion init_kal als ISR konfiguriert.
function init_kal(app, ~, ~)
Zur Indentifikation der Messwertplatine wurde auf dieser MCU die Funktion ident aufgerufen. Diese gibt die Platinenkennung zurück und es kann entschieden werden ob der Port gewechselt werden muss oder tatsächlich eine Messwertplatine angeschlossen ist. Ist eine Messwertplatine angeschlossen, erfolgt die tatsächliche Initialisierung der Messwertplatine in der Funktion kal_initialisieren.
function kal_initialisieren(app, ~, ~)
Für die Initialisierung der Messwertplatine wird die Anweisung "writeline(app.MCU_KAL, 'from mwp_chanMesswerte import mwp_chanMesswerte');" durchgeführt. Dazu muss isch auf der Messwertplatine die Datei mwp_chanMesswerte.py befinden.
Für das weitere Interrupthandling der eingehenden Daten wird das ISR auf die Funktion kal_datenverarbeitung umgestellt.
Als letzte Aktion in der Initialisierung wird auf der Messwertplatinen-MCU "import machine" durchegführt. Dies muss die letzte Aktion bleiben, da über die nachfolgende ISR Abarbeitung durch das Echo des Aufrufs die Betriebsbereitschaft erkannt wird. Weitere Initialisierungsschritte müssen vor diesem Aufruf eingefügt werden.
function MesswerteErfassenButtonPushed(app, event)
Der Button Messwerte Erfassen löst die Funktion MesswerteErfassenButtonPushed aus. Darin wird die Anweisung "writeline(app.MCU_KAL, 'mwp_chanMesswerte(0)');" ausgeführt, was die Messung von Messwert Kanal(0) auf der Messwertplatine auslöst. Ist die Messung abgeschlossen wird der Messwert an die APP zurück gesendet und über den ISR wird die Funktion kal_datenverarbeitung ausgeführt.
function kal_datenverarbeitung(app, ~, ~)
Die Funktion kal_datenverarbeitung übernimmt die Datenverarbeitung der von der Messwertplatine kommenden Daten. Ist dies ein Messwert der zu keiner Kalibrierung gehört wird der Messwert logisch und ohysikalisch verarbeitet und im entsprechenden Datenfeld ausgegeben. Es wird danach die Messung des nächsten Messwertkanals angestoßen.
Gehört der Messwert zu einer Kalibrierdurchführung, wird dieser in die zugehörige Stelle der Kalibriermatrix eingefügt und es wird die nächst folgende Kalibrierstufe ausgeführt. Zum Abschluss der Kalibrierung wird die Kalibriermatrix abgespeichert.
Armin Rohnen, 11.04.2024
In der Übergangsphase soll der Betriebsstart der Espressomaaschine von der MATLAB®-GUI ausgelöst werden.
Die aktuelle MATLAB®-GUI soll in eine komfortable Bedienoberfläche für Wartungs- und Einstellarbeiten überführt werden. Alle Tastenfunktionalitäten und die Vertikalhebelfunktionalität sollen über die Oberfläche durchgeführt werden können.Wie bisher soll jeder Aktor (Magnetventile, Pumpenleistung und Schrittmotorverstellungen) über die GUI ausgelöst werden können. Ebenso soll die bisherige Visualisierung der Messwerte und Schaltzustände erhalten bleiben. Dies allerdings mit einer geringeren Aktualisierungsrate. Vier Aktualisierungen je Sekunde werden als ausreichend angesehen.