Zahlavi

Sprache auswählen

Beschreibung des Steuerprogramms Version 1.3.3

Wichtige Warnung: Die Steuerungsprogrammversion 1.3.3 ist für HW1.0 vorgesehen. Es kann nicht für die neue HW2.x-Version oder eine spätere Version verwendet werden. Der Grund liegt in der unterschiedlichen Verwendung von GPIO-Pins im ersten Design!

Das Programm können Sie hier herunterladen. Entpacken Sie die Datei. Kopieren Sie den Inhalt mit einem FTP-Client in das Verzeichnis /home/pi/ auf dem Raspberry Pi. Dadurch wird das Satprowler-Verzeichnis mit dem erforderlichen Unterverzeichnis und der Dateistruktur erstellt, wie im Artikel „Allgemeine Prinzipien der Arbeit mit Python“ beschrieben. Laut diesem Artikel sollten Sie das Programm auf dem Raspberry Pi ausführen können. Ich empfehle, zunächst den Terminalmodus zu verwenden. Sobald Sie die ordnungsgemäße Funktion des Programms überprüft haben, können Sie in den Dauerbetrieb wechseln. In beiden Fällen wird ein Webserver aktiviert, der mit jedem Webbrowser kommuniziert werden kann.

1) Verwendung des Programms
Die Nutzung des Programms erfolgt über die Verbindung zu seinem Webserver auf dem Raspberry Pi mit einem beliebigen Browser von einem PC aus. Ich verwende Google Chrome, in dem alle Steuerelemente korrekt angezeigt werden. Geben Sie in die Adressleiste ein

http://192.168.xxx.xxx:8080

Die Zahlen 192.168 bedeuten Zugriff auf Ihr lokales (Heim-)Netzwerk, in dem Webbrowser keine https-verschlüsselte Kommunikation erfordern. xxx.xxx  ist die Adresse Ihres Raspberry Pi. Die Nummer 8080 ist der Standardport, auf dem der Server lauscht. Nach dem Herstellen der Verbindung erscheint die folgende Seite in Ihrem Browser.  ProgramThumb

Abb. 1 - Benutzeroberfläche des Programms

Die Steuerung des Stellungsreglers ist in zwei gelbe Felder unterteilt. Der obere dient der direkten manuellen Steuerung der Motoren, der untere enthält Voreinstellungen und deren Verwaltung. Die manuellen Bedienelemente verfügen für jeden Motor über einen separaten grünen Bereich.

Der Azimut-Bereich verfügt über zwei Schaltflächen und ein Fenster mit der aktuellen Position. Der AZ-Motor dreht sich, solange der Knopf gedrückt wird. Die Position sollte zwischen 0 und 36.000 liegen. Die Höheneinstellung ist identisch. Die Skew-Einstellung ist etwas komplizierter. Zunächst muss HW1.0 um das Servomotormodul erweitert werden. Die Grundfunktion besteht darin, den Single-Polarity-LNB um 90° zu drehen. Dies stellt das Umschalten der Polarität Horizontal/Vertikal bzw. Links/Rechts dar. Dafür sorgen die Tasten H/L und V/R. Für unterschiedliche Azimute ist es jedoch erforderlich, zu diesen beiden Grundpositionen einen Skew-Wert hinzuzufügen. Und es wird mit der linken oder rechten Pfeiltaste eingestellt. Als Servomotor habe ich den Corotor Chaparral für das C-Band und den CSP 1210 C-Polarisator ausprobiert.

Die Voreinstellungen sind einfach zu verwenden. Wenn sie programmiert sind, haben sie eine grüne Farbe und die Informationen aus dem Positionsfenster im Etikett. Klicken Sie einfach auf die Schaltfläche. Die Motoren beginnen automatisch, sich in die angegebene Position zu drehen. Bisher wird nach und nach zunächst der Azimut eingestellt, dann die Elevation und schließlich der Skew. Ich muss die gleichzeitige Drehung aller Motoren noch lösen.

Wenn wir eine neue Voreinstellung programmieren müssen, stellen wir zunächst manuell die richtige Position ein. In die oberen Fenster Position und Satellitenname schreiben wir die erforderlichen Daten. Anschließend klicken wir auf die Schaltfläche „Store mem“. Dadurch wird der Write-to-Preset-Modus aktiviert – diese Schaltfläche wird rot. Anschließend klicken wir auf die Schaltfläche „Einstellungen“, in der wir den aktuellen Stand speichern möchten. Dadurch werden alle Daten vom manuellen Bedienfeld in die ausgewählte Voreinstellung kopiert. Gleichzeitig ändert sich die Beschreibung der Preset-Schaltfläche und ihre Farbe auf Grün. Dies bedeutet, dass die Voreinstellung verwendet wird. Beim Programmieren einer Voreinstellung wird nicht geprüft, ob diese Voreinstellung leer oder bereits programmiert war. Dadurch können die alten voreingestellten Daten direkt durch neue ersetzt werden. Aber achten Sie darauf, dass Sie nicht versehentlich eine andere Voreinstellung überschreiben.

Wenn wir nur die Voreinstellung löschen möchten, klicken wir auf die Schaltfläche „Clear mem“. Dadurch wird der Löschmodus aktiviert – diese Schaltfläche wird rot. Dann klicken wir auf die Schaltfläche „Einstellungen“ und alle gespeicherten Daten werden gelöscht. Gleichzeitig ändert sich die Farbe der Preset-Taste von Grün auf Grau. Das bedeutet, dass die Voreinstellung kostenlos ist.

Wenn wir versehentlich auf die Schaltfläche „Store mem“ oder „Clear mem“ geklickt haben, klicken Sie erneut darauf. Dadurch wird der aktivierte Modus abgebrochen.

Für das Programm ist noch ein weiterer Teil vorbereitet, der noch nicht abgeschlossen ist. Wenn Sie mit der Maus auf eine beliebige Schraube klicken, öffnet sich die Serviceseite. Hier ist es möglich, die Nullpositionen von Azimut und Elevation einzustellen.

Wenn Sie jetzt die Nullpositionen für Azimut und Elevation festlegen möchten, müssen Sie zunächst den Terminalmodus des Programms verwenden. Die Werte der Schalter AZOrigin und ELOrigin werden auch bei manueller Bedienung der Motoren im Terminal angezeigt. Drehen Sie den Motor zunächst manuell nach Osten, bis sich der AZOrigin-Wert von 1 -> 0 ändert. Stoppen Sie an diesem Punkt den Motor so schnell wie möglich. Drehen Sie dann den Motor manuell nach Westen. Wenn sich der AZOrigin-Wert von 0 -> 1 ändert, wird der Azimutzähler automatisch zurückgesetzt. Der Höhennullpunkt wird auf die gleiche Weise festgelegt. Drehen Sie den Motor zunächst manuell nach unten, bis sich der ELOrigin-Wert von 1 -> 0 ändert. An diesem Punkt stoppen Sie den Motor so schnell wie möglich. Drehen Sie dann den Motor manuell nach oben. Wenn sich der ELOrigin-Wert von 0 -> 1 ändert, wird der Höhenzähler automatisch zurückgesetzt.

Für den Betrieb des Stellungsreglers ist das Anfahren der Nullposition nicht zwingend erforderlich. Wenn Sie sich entscheiden, Nullpunkte festzulegen, achten Sie sehr genau auf den Status der Origin-Schalter im Terminal. Motoren drehen zu schnell. Wenn alle Voreinstellungen leer sind, müssen beide Nullpunkte gesetzt werden. Durch eine Änderung des Zählerwerts würde die Synchronisierung der Voreinstellungen mit der gewünschten Position verloren gehen.

2) Benutzermodifikationen des Programms

Das Ausführen eines Programms auf einem Raspberry Pi bedeutet lediglich, einen Webserver zu starten. Der Server selbst tut nichts, er wartet nur auf Benutzerbefehle. Standardmäßig werden diese auf Port 8080 erwartet. Wenn Sie diesen Port ändern möchten, öffnen Sie die Datei satprowler.py in einem Texteditor und scrollen Sie bis zum Ende. Finden Sie dort die Zeile

app.run(host='0.0.0.0', port=8080, debug=True)

Hier können Sie die Portnummer ändern. Vergessen Sie nicht, dass einige Ports bereits eine allgemein definierte Verwendung haben und es keine gute Idee ist, sie für andere Zwecke zu verwenden. Nach dem Zugriff auf die Datei muss das Programm neu gestartet werden.

Für diejenigen, die keine Erfahrung mit der Python-Sprache haben, ist es notwendig, eine ihrer Besonderheiten hervorzuheben. Leerzeichen am Zeilenanfang haben die Funktion, den Code in einzelne Blöcke zu unterteilen. Wenn Sie die Anzahl dieser führenden Leerzeichen ändern, ohne zu wissen, was Sie tun, stürzt Ihr Programm ab und wird nicht ausgeführt. Deshalb müssen Sie einen Texteditor verwenden, der ohne Ihr Wissen nichts anderes zur Datei hinzufügt. Sie können Word nicht wirklich aus Office heraus verwenden. Ich verwende das Programm PSPad, das den Text je nach Dateierweiterung farblich unterscheiden und so übersichtlicher machen kann. Sie können PSPad hier herunterladen.

Eine andere Datei, die Sie möglicherweise in einem Texteditor bearbeiten, ist config.ini. In dieser Datei werden die Daten einzelner Presets gespeichert. Voreinstellungen sind mit [mem01] bis [mem80] gekennzeichnet. Die Anzahl der Voreinstellungen kann nicht einfach durch Hinzufügen weiterer Elemente zu dieser Datei erweitert werden. Ihre Unterstützung bei der Änderung des Programms ist ebenfalls erforderlich. Jede Voreinstellung enthält Daten gemäß der folgenden Tabelle.

 Artikel Bedeutung  Der Wertebereich
 [mem01]  Voreingestelltes Etikett, verändere dich nicht  mem01 ÷ mem80
 posaz  Motorposition AZ  0 ÷ 36 000
 posel  Motorposition EL  0 ÷ 32 000
 skew  Servo1-Position  500 ÷ 2500
 satpos  Positionsbeschreibung (voreingestellt)  Text UTF8, 7 Zeichen
 satname  Satellitenbeschreibung  Text UTF8, 43 Zeichen

 

Nach manueller Änderung des Inhalts der Datei config.ini muss das Programm satprowler.py neu gestartet werden. Wenn der Wert von posaz und posel Null ist, markiert das Programm eine solche Einstellung als leer (die Einstellungsschaltfläche ist grau). Der erste Eintrag [Default] enthält den aktuellen Zustand des Stellungsreglers. Das Programm überschreibt es, sobald jeder Motor stoppt. Wenn Sie es manuell ändern, geht die Synchronisierung zwischen den voreingestellten Daten und der gewünschten Ausrichtung des Positionierers verloren. Im Gegensatz zu den Voreinstellungen verfügt der Eintrag [Default] auch über einen Polar-Eintrag, in dem Informationen über die aktuell eingestellte Polarisation gespeichert werden.

Sie haben keinen Grund, in andere Dateien einzugreifen. Alle Programmtextdateien liegen im UTF-8-Textcodierungsmodus vor.

Wichtige WarnungPython ist eine Skriptsprache. Die Ausführung des Programms garantiert nicht, dass alle Teile ordnungsgemäß funktionieren. Bei allen Experimenten ist zu beachten, dass EPS-203-Motoren keine Endschalter haben. Wenn das Programm bei laufendem Motor abstürzt, ist es ERFORDERLICH, die 24-V-Quelle so schnell wie möglich abzuschalten. Führen Sie daher alle Ihre Modifikationen mit Vorsicht durch und überprüfen Sie ständig den Zustand der EPS-203-Motoren.

3) Bekannte Programmfehler

  • Hier muss ich auf einen wichtigen Fehler im Programm hinweisen, den ich noch nicht behoben habe. Gilt für die manuelle Steuerung von Azimut- und Elevationsmotoren. Die Motoren werden durch zwei separate Befehle gesteuert. Das Einschalten des Motors stellt das Drücken der Steuertaste durch Drücken der linken Maustaste dar. Das Abstellen des Motors bedeutet das Loslassen derselben Steuertaste, d. h. das Loslassen der linken Maustaste über dieser Steuertaste. Wenn Sie die Steuertaste drücken, startet der Motor. Wenn Sie dann die Maus von der Taste wegbewegen und die linke Maustaste loslassen, stoppt der Motor nicht. Das Drücken und Loslassen der linken Maustaste muss über dieselbe Steuertaste erfolgen, damit der Motor nach dem Befehl zum Einschalten den Befehl zum Ausschalten erhält. Wenn Sie die Maus während des Drückens der Taste irgendwo anders „bewegen“, müssen Sie die verwendete Taste erneut klicken. Dadurch wird der Steuertaste ein zweiter Befehl gesendet und der Motor stoppt.
  • Die Motoren werden noch nicht gleichzeitig, sondern nacheinander angesteuert. Das bedeutet, dass durch Klicken auf eine Voreinstellung zuerst der Azimut und dann die Höhe eingestellt wird. Parallele Thread-Programmierung, also gleichzeitige Ansteuerung beider Motoren, studiere ich noch.
  • Die Serviceseite ist weiterhin nur symbolisch. Die Funktionalität wird später weiterentwickelt.

Keine Kommentare

Kommentar hinterlassen

Als Antwort auf Some User