MATLAB®-GUI Initialisierung Multi-MCU

Aus Technische Beeinflussbarkeit der Geschmacksache Kaffee
Version vom 30. Juli 2023, 15:52 Uhr von Armin Rohnen (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= Armin Rohnen, 30.07.2023 = Diese Beschreibung ist gültig für die MATLAB®-GUI ab der Version "EspressoGUI_20230801_AR" == Problemstellung == Die Multi-MCU-Elektronik besteht aus drei Platinen mit jeweils einer eigenen Rasperry Pi Pico MCU. Je nach verwendeten PC, Produktionscharge der Picos, Einschaltfolge der MCU und weiteren noch nicht bekannten Einflüssen verbindet sich die einzelne MCU nicht immer mit dem gleichen COM-Port am PC. Für die Funkti…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Armin Rohnen, 30.07.2023

Diese Beschreibung ist gültig für die MATLAB®-GUI ab der Version "EspressoGUI_20230801_AR"

Problemstellung

Die Multi-MCU-Elektronik besteht aus drei Platinen mit jeweils einer eigenen Rasperry Pi Pico MCU. Je nach verwendeten PC, Produktionscharge der Picos, Einschaltfolge der MCU und weiteren noch nicht bekannten Einflüssen verbindet sich die einzelne MCU nicht immer mit dem gleichen COM-Port am PC. Für die Funktionalität der Software ist jedoch Eindeutigkeit erforderlich.

Für die Verbindung MicroPython der MCU mit der MATLAB®-GUI wird die in [40, Abschn. 4.1] beschriebene Kommunikation verwendet. Im Wesentlichen ist dies gekennzeichnet durch eine Verarbeitungsfunktion, welche nach jedem Zeilenendezeichen des zugehörigen COM-Ports ausgelöst wird.

Jede von MATLAB® an die MCU gesendete Anweisung wird durch ">>> <MATLAB-ANWEISUNG>" von der MCU postwendent wieder an MATLAB® beantwortet. Dies ist nicht die Reaktion der durchzuführenden Anweisung, sondern eine Antwort der MicoPython-Laufzeitumgebung. Das Zeilenende des Anweisungs-Echos löst in MATLAB® wiederum die Verarbeitungsfunktion aus. Um nicht mehrfach gleiche Anweisungen von MATLAB® an die MCU zu senden, muss hier für Eindeutigkeit gesorgt werden. U. a. ist dafür sorge zu tragen, dass nach jeder an die MCU gesendeten Anweisung, das Verarbeitungsprogramm beendet wird und erst beim nächsten Aufruf, im Zweifelsfall durch den Eingang von ">>> <MATLAB-ANWEISUNG>", erst die nächste Anweisungszeile an die MCU gesendet wird.

Die mechanische Initialisierung der Schrittmotoren benötigt etwas Zeit, da jeder durchgeführte 1/2-Schritt 2000 us Pausenzeit erfordert. Die Initialisierung muss hier die erforderliche Zeitspanne warten, bis sie weitere Initialisierungsschritte ausführt.

Globale Initialiiserung

Nach dem Start der App wird durch drücken des Buttons "Verbinden" das Verbinden und die Initialisierung der MCUs ausgelöst. In der Callback-Funktion "Verbinden_ButtonPushed" wird in Abhängigkeit mit dem Verbindungsstatus der Verbindungsaufbau gestartet. Dazu erfolgen einige Statusausgaben, es wird die Liste der freien Ports ermittelt und je nach Bedarf die Protokollierung der eingehenden MCU-Antworten gestartet. Für die einwandfreie Funktionalität dieses Prozesses besteht die Forderung, dass alle am PC angeschlossenen USB-Geräte entweder über die MATLAB®-GUI verbunden werden müssen, oder bereits anderweitig verbunden sind. Jede freie USB-Verbindung wird versucht zu verbinden. Dabei wird davon ausgegangen, dass dies die drei MCUs aus der Multi-MCU-Elektronik sind.

Es wird der erste verfügbare ungenutze COM-Port verbunden. Dieser Verbindung wird die Verarbeitungsfunktion "init_mcus" zugewiesen, es wird die Identifikationsfunktion der MCU geladen und es wird die Identifikation aufgerufen.