Skip to content

Screens de

github-actions[bot] edited this page Sep 10, 2026 · 31 revisions

Bildschirme

English · Deutsch

Was auf jedem Bildschirm steht, was die Marken im Menü bedeuten und wie die einzelnen Bildschirme bedient werden.

Das Statusband

Das obere Band ist auf allen Bildschirmen gleich. Von rechts: STOP, die Laufzeituhr (im scharfen Zustand oder nach einem Lauf), ARMED oder SAFE, ein FAULT-Code, sobald einer gemeldet wird, der Ausgangsmodus (LINK oder SIM) und LINK oder NO LINK.

STOP funktioniert auf jedem Bildschirm. Es entschärft und rastet ein: der Prüfstand bleibt entschärft, bis er erneut scharf geschaltet wird. Ein Bildschirmwechsel, ein ablaufender Hinweis oder ein zurückkehrender Link hebt einen Stopp nicht auf.

ARM sitzt unten auf einem Prüfstandsbildschirm; STOP sitzt oben im Band.

Marken im Menü

Das Funktionsmenü

Marke Bedeutung
SOON den Bildschirm gibt es nicht; die Kachel nennt, was er tun wird und worauf er wartet
MODELLED den Bildschirm gibt es und er funktioniert, aber seine Hardware ist nicht bestückt; jeder Wert ist simuliert, und der Bildschirm sagt das
keine die Hardware ist bestückt, die Messwerte sind gemessen

Die Marke wird aus den Capability-Bits abgeleitet, die der Koprozessor beim Hochfahren meldet. Ein Bildschirm ohne seine Hardware öffnet trotzdem und arbeitet aus dem Modell.

Das Menü im hellen Theme:

Das Menü im hellen Theme

Splash

Der Splash

Jedes Subsystem meldet beim Hochfahren sein Ergebnis: Platine, Display, Touch, SD-Karte, Einstellungen, Link, Koprozessor. Die Zeile der Platine trägt die Firmware-Version des Panels selbst, die Zeile des Koprozessors die Protokollversion und die Firmware-Version, die dieser Koprozessor gemeldet hat — zwei Platinen können dasselbe Protokoll sprechen und verschiedene Builds sein, und hier zeigt sich das. Eine fehlende Karte ist eine Warnung. Ein Touch-Controller, der nicht antwortet, oder ein Koprozessor mit einer anderen Major-Version des Protokolls ist ein Fehler, und der Prüfstand schaltet nicht scharf. Wenn alle Schritte geantwortet haben, übergibt der Splash nach 1,6 s an das Menü; ein Tippen überspringt das Warten.

Motor & ESC

Motor und ESC

Zwei Spalten. Der Plot und das Gas nehmen die linke, die vier Anzeigen und die Bedienelemente eine Leiste auf der rechten, damit das Ablesen der Werte und das Bedienen des Gases nicht um denselben Teil des Bildschirms konkurrieren.

Der Plot zeigt einen Lauf

Motor und ESC, Telemetrie angehalten

Die Kurve ist die Aufzeichnung eines Laufs. Sie läuft nur, solange der Prüfstand scharf ist: das Scharfschalten löscht sie, das Entschärfen hält sie so an, wie sie stand. Die Beschriftung der Fläche liest LIVE TELEMETRY, solange sie läuft, TELEMETRY HELD, solange sie einen Lauf hält, und TELEMETRY IDLE vor dem ersten Scharfschalten, wenn im Plot no run recorded steht. Die rechte Achsenbeschriftung liest NOW, solange sie läuft, und END dort, wo eine gehaltene stehen geblieben ist. Die Anzeigen, die TABLE-Seite, die Summen und die Temperaturleiste sind jederzeit live, ob scharf oder nicht.

Das Fenster ist 534 Spalten breit bei 20 Abtastungen je Sekunde, also 26,7 s. Ein längerer Lauf hält seine letzten 26,7 s; was davor liegt, steht in der CSV-Datei und nicht auf dem Bildschirm.

Die Kurve endet beim Entschärfen, nicht wenn der Motor steht. Das Entschärfen kommandiert null Gas, und die Luftschraube läuft danach aus. Dieses Auslaufen steht auf den Anzeigen und nicht im Plot, und auch nicht in der CSV-Datei, die an derselben Flanke schliesst.

Das Scharfschalten löscht den Plot, und ein eingerasteter Stopp wird durch Scharfschalten gelöst -- die Kurve eines Laufs, den ein STOP beendet hat, überlebt es also nicht, den Prüfstand wieder benutzbar zu machen. Ein Scharfschalten schreibt eine CSV-Datei, und der Log-Viewer stellt sie dar.

Der Streifen über beiden Spalten trägt die Abfragerate, die Fehlerzahl des Links (CRC-Fehler und Resyncs zusammengezählt; CRC: Cyclic Redundancy Check) und drei Temperaturen. ESC und MOT kommen von der Bench-Page. MCU ist der eigene Die des Panels, gelesen vom Sensor des ESP32-S3: die Temperatur der Displayplatine, nicht die des Koprozessors.

Das Gas bewegt sich um die Strecke, die ein Finger zurücklegt, nicht auf die Stelle, an der er landet. Ein Druck auf den Track kommandiert nichts, eine Berührung am Ende fordert also nichts an; ein Drag über den ganzen Track fordert den ganzen Weg an, und der Pin folgt ihm ohne Rampe. -1 und +1 an den Enden des Tracks schalten um einen Prozentpunkt.

ARM wird gehalten. Die Füllung blendet über zwei Sekunden von Grün ins Gefahrenrot, und der Prüfstand schaltet scharf, wenn die Blende durchgelaufen ist; früher loszulassen schaltet nichts scharf, und das Loslassen selbst ebenfalls nicht.

Der Finger muss auf dem Button bleiben. Verlässt er ihn, ist das Halten abgebrochen — die Geste ist der Kontakt mit dem Bedienelement und nicht mit dem Panel. Zurückrutschen setzt es nicht fort: der Kontakt ist für ARM beendet, und Scharfschalten verlangt danach, den Finger abzuheben und neu zu drücken. Wird der Prüfstand unter einem noch gehaltenen Finger unscharf, endet die Geste ebenfalls — sonst würde genau der Kontakt, mit dem angehalten wurde, zwei Sekunden später wieder scharf schalten. Das Scharfschalten lässt den ganzen Button zweimal aufblitzen: weiss, schwarz, rot, und noch einmal, je ein gezeichneter Frame. Ein scharfer Prüfstand trägt das Gefahrenrot, und DISARM ist ein Druck und kein Halten: Anhalten braucht nie ein Halten. DISARM und STOP halten den Ausgang sofort an, ohne Rampe. RESET PEAKS löscht die Spitzenwertmarken und lässt die Live-Anzeigen unverändert.

EFF ist eine Guessimetrik

Der Header des Telemetrie-Panels zeigt die Nenn-kV, die Umdrehungen je Minute und Volt, die der Motor tatsächlich dreht, und EFF: das Zweite geteilt durch das Erste.

Die Rechnung dahinter ist tragfähig. Die Klemmenspannung teilt sich in den ohmschen Abfall und die Gegen-EMK (elektromotorische Kraft) auf, weshalb rpm/V unter Last die Nenn-kV skaliert mit dem Anteil der Spannung ist, der die Gegen-EMK erreicht, und dieser Anteil ist der Anteil der Eingangsleistung, der mechanisch wird. Im idealen Motor ist das Verhältnis exakt der Umsetzungswirkungsgrad.

Die Zahl auf dem Bildschirm ist das nicht, aus drei Gründen, und sie heisst deshalb EFF und nicht Wirkungsgrad:

  • Sie erfasst nur die Kupferverluste (I hoch 2 mal R). Eisenverluste, Reibung und Luftwiderstand fallen auf die mechanische Seite der Aufteilung, also ist die Zahl eine obere Schranke des Wellenwirkungsgrads und nicht sein Wert.
  • Der Prüfstand misst die Pack-Spannung, nicht die Klemmen des Motors, also stecken die Durchlass- und Schaltverluste des ESC in der Zahl. Sie beschreibt den Antriebsstrang; ein Vergleich mit einem Motordatenblatt vergleicht zwei verschiedene Dinge.
  • Sie ist nur so gut wie die Nenn-kV. Ein Fehler dort geht direkt in den Prozentwert, und ein Wert über 100 % bedeutet, dass die Nennangabe falsch ist; der Bildschirm zeigt das, statt es zu verbergen, gedeckelt bei 199 %.

Die Nenn-kV kommt vom angeschlossenen ESC, sobald einer sie meldet. Noch meldet sie keiner, also ist es in der Praxis die Einstellung Rated kV, deren Standardwert null ist: eine geratene kV ergibt einen plausibel aussehenden, aber falschen Prozentwert, und ohne Wert bleibt das Feld leer und es wird kein Prozentwert gezeigt. Die gemessene rpm/V wird in jedem Fall gezeigt, weil sie eine Messung und keine Herleitung ist.

Solange die Werte simuliert sind, steht SIMULATION quer über dem Bildschirm. Das Panel simuliert nur, solange kein Koprozessor antwortet; das Watermark verschwindet also, sobald einer antwortet. An seine Stelle tritt, was dieser Koprozessor tatsächlich messen kann: heute rpm über Bidirectional DShot, und seine eigenen Sensoren, sobald ein Messfrontend bestückt ist. Eine Größe, die nichts misst, wird als leeres Feld gezeichnet und nicht als modellierter Wert.

Servo

Servo

An beliebiger Stelle auf dem Bogen ziehen, um eine Stellung zu befehlen. Der kräftige Arm ist die gemessene Stellung, der blasse Arm die befohlene. Der Abstand zwischen beiden ist die Verzögerung des Servos selbst. Die Ringe um die Spitze pulsieren, solange das Servo angesteuert wird. Den Finger zu heben lässt noch nicht los: Der Bildschirm wiederholt die letzte Stellung alle SERVO_HOLD_MS, ein Servo bleibt also stehen, wo es hingestellt wurde. Erst RELEASE, die Schaltfläche, führt die Ruderflächen auf die Mitte zurück -- und auch dann bleiben die Pins gebunden und treiben weiter, auf der Mitte ihres Wegs. Beendet werden die Flanken durch ein Entschärfen oder durch das Verlassen des Bildschirms, was entschärft.

Der Bildschirm treibt die Kanäle, die die Bindung als Ruderflächen markiert, und weder einen festen Pin noch ein festes Protokoll. Die acht Kanäle von PPM sind ebenfalls Ruderflächen, ein gebundener PPM-Ausgang bewegt sich also mit diesem Bildschirm genau wie ein gebundener SERVO-PWM-Ausgang. Ist überhaupt kein Ruderflächen-Kanal gebunden, kommandiert er nichts und kein Pin bewegt sich.

SPEED ist die Geschwindigkeit, mit der der Prüfstand den Ausgang bewegen darf, und nicht nur eine Geschwindigkeit für die Zeichnung. Bei 100 % geht der Befehl unverändert durch und das Servo läuft mit seiner eigenen Geschwindigkeit; darunter rampt der Prüfstand den Befehl davor, 30 % braucht also dreimal so lange wie 90 %. Die Änderung wirkt sofort auf einen gehaltenen Ausgang.

Vor jeder Bewegung ARM. Solange der Prüfstand nicht scharf ist, schreibt der Koprozessor auf jeden PWM-Pin einen Impuls der Länge null: der Arm auf dem Bildschirm folgt dem Finger, das Servo nicht. Der Knopf ist ein Zwei-Sekunden-Halten, dieselbe Geste und dieselbe Blende wie auf MOTOR & ESC, und ein Druck darauf im scharfen Zustand schaltet unscharf. Das Verlassen des Bildschirms schaltet unscharf und gibt den Pin frei: ein Bildschirm, den man nicht sieht, darf weder ein Servo halten noch den Prüfstand scharf zurücklassen.

Analyser

Analyser

Sechzehn Kanäle, jeder mit 1,5 s Verlauf und einem Balken für den aktuellen Wert. CH17 und CH18 sind die beiden Digitalkanäle. Ein Glitch ist eine Spitze in einer Spur; ein Dropout ist eine Kerbe durch alle sechzehn im selben Moment.

Der Zustandsblock zeigt einen von SILENT, FAILSAFE, FRAME LOST und LIVE, mit einer Zeile Erklärung:

Ein Empfänger im Failsafe

Im FAILSAFE sendet der Empfänger wohlgeformte Werte, die er selbst erzeugt; jede Spur wird rot gezeichnet. FAILSAFE als Stopp behandeln, nicht als sechzehn gültige Kanäle. Empfängerbusse beschreibt die Zustände.

Programmierer

Die Reihenfolge: Geräteklasse, Protokoll, verbinden.

Geräteklasse

Jede Protokollzeile nennt ihren Transport. Eine automatische Erkennung gibt es nicht:

Die Protokolle einer Klasse

BLHeli_32 steht nicht in der ESC-Liste. Der Prüfstand erkennt diese ESCs, steuert sie an und sendet die DShot Special Commands, kann ihre Parameter aber nicht lesen: BLHeli_32-Parameter.

Bevor ein Gerät geantwortet hat, ist nichts editierbar:

Nichts hat geantwortet

Nachdem ein Gerät geantwortet hat, erscheinen die Parameter in Gruppen, mit der Hilfe zur ausgewählten Zeile unter der Liste:

Verbunden

Jede Firmware zeigt ihre Einstellungen in ihren eigenen Einheiten. BLHeli_S zeigt das Timing als benannte Stufen, die anderen in Grad Vorzündung:

Grad statt benannter Stufen

Ein geänderter Wert wird erst geschrieben, wenn WRITE gedrückt wird. Vorgemerkte Änderungen tragen eine Markierung und eine eigene Farbe, und der WRITE-Knopf zeigt, wie viele vorgemerkt sind:

Zwei vorgemerkte Änderungen

Stepper halten an den Enden einer Liste an; sie springen nicht auf die andere Seite.

Eine Ebene zurück trennt die Verbindung. Zurück geht eine Ebene auf einmal; das Home-Tag im Band verlässt den Bildschirm.

Akku

Zellenabweichung

Die Zellen werden als Abweichung vom Mittelwert des Packs gezeichnet. Das Urteil folgt der Spreizung, dem größten Abstand zwischen zwei beliebigen Zellen: HEALTHY unter 30 mV, WATCH ab 30 mV, REPLACE ab 60 mV. Die Skala folgt dem Pack bis hinunter zu einer Untergrenze von 12 mV und steht neben dem Plot.

Unter Last messen. In Ruhe liest sich eine schwache Zelle wie die anderen.

Logs

Der Dateibrowser

Karte durchsehen, Datei öffnen, prüfen, was der Import erkannt hat, dann plotten:

Die Importansicht Der Plot

Der Reader für CSV (Comma-Separated Values) akzeptiert Dezimalkomma und Dezimalpunkt, eine Einheitenzeile und Zeilen ungleicher Länge; die Importansicht zeigt, was er entschieden hat, bevor die Datei geplottet wird. Vom Prüfstand aufgezeichnete Läufe werden als BENCH001.CSV bis BENCH999.CSV im Wurzelverzeichnis der Karte abgelegt.

Die Liste fasst 48 Einträge, die Karte bis zu 999 Läufe. Passen nicht alle hinein, behält die Liste die neuesten Läufe, und ihr Reiter zeigt 48 OF 137 FILES statt FILES: ein Lauf, der in der Liste fehlt, ist dann einer, für den die Liste zu kurz war, und nicht einer, der nie geschrieben wurde. Was neu heißt, steht in der Nummer im Namen: die Panel-Platine hat keine Uhr, die einen Stromausfall übersteht, deshalb trägt jede Datei auf der Karte das Datum 1980-01-01. Ein Lauf geht einer Datei vor, die der Prüfstand nicht geschrieben hat, also listet eine Karte mit 48 oder mehr Läufen keine andere Datei mehr. Alte Läufe am Rechner löschen, um eine zurückzuholen.

Ein Lauf wird alle 20 Zeilen oder 1000 ms Laufzeit auf die Karte festgeschrieben, je nachdem, was zuerst eintritt. Ein Stromausfall mitten im Lauf kostet die Zeilen, mit denen das Festschreiben noch nicht fertig ist, und die Zeilen, die noch in der Queue zwischen der Control-Task und der Karten-Task stehen: unter 1,0 s Laufzeit, solange die Karte mitkommt, und 84 Zeilen, 4,20 s bei den 20 Hz des Panels, wenn die Karte hängt und die Queue voll ist. Der Rest der Datei bleibt in beiden Fällen lesbar. Geschrieben wird von einer eigenen Task. Eine SD-Karte (Secure Digital) darf sich für einen Schreibvorgang 250 ms Zeit nehmen, und die Task, die die Sicherheitsleitung schlägt, hat eine Obergrenze von 150 ms.

Acht Meldungen sagen, was die Karte mit einem Lauf gemacht hat. Jede erscheint im Band:

Meldung Was passiert ist
no card -- this run is not recorded nichts ist gemountet, der Lauf wurde nie geöffnet
card unreadable -- run not recorded die Karte ließ sich nicht auflisten, es war keine Laufnummer wählbar
card full or unwritable -- run not recorded es ließ sich keine Laufnummer anlegen
the card did not keep up -- run not recorded jede Zeile wurde verworfen, es gibt für diesen Lauf gar keine Datei
the card fell behind -- the log has gaps einzelne Zeilen wurden verworfen; die Zeitspalte der Datei zeigt, wo
the card stopped taking rows -- run not recorded past here ein Schreibvorgang ist mitten im Lauf fehlgeschlagen, jede weitere Zeile wird abgewiesen
the card stopped taking rows -- the log is short derselbe Fehler, beim Schließen des Laufs noch einmal gemeldet
the card failed on the last write -- the log is short das Schließen ist fehlgeschlagen, die Zeilen seit dem letzten Festschreiben fehlen in der Datei

Bei den ersten vier gibt es keine Datei zu suchen. Bei den letzten vier gibt es eine, und sie hört zu früh auf.

Ein Lauf, der gerade geschrieben wird, erscheint nicht in LOGS. Die Länge einer Datei steht in ihrem Verzeichniseintrag und wird beim Schließen geschrieben, ein noch offener Lauf stünde also mit seiner zuletzt festgeschriebenen Länge in der Liste und läse sich wie ein fertiger.

Setup

Setup

Die Einstellungen liegen hinter der SETUP-Kachel, in beiden Themes:

Setup im hellen Theme

Werte behalten

Ein geänderter Wert wirkt sofort und wird erst in den Flash geschrieben, wenn SAVE gedrückt wird. Die Taste unter RESET CATEGORY nennt einen von drei Zuständen:

Beschriftung Bedeutung
SAVED Nichts ist ungeschrieben. Die Taste ist inaktiv.
SAVE Etwas ist ungeschrieben. Ein Druck fordert das Schreiben an.
WHEN IDLE Das Schreiben ist angefordert und wartet auf einen Moment dafür.
NOT SAVED Der Store hat das Schreiben abgelehnt. Was auf das Medium gelangt ist, geht aus dem Bildschirm nicht hervor: Eine Ablehnung bei einem Key lässt die davor geschriebenen Keys committed, der nächste Boot kann also eine Mischung aus neuen und alten Werten laden. Ein Druck versucht es erneut.

Ein geänderter Wert, SAVE angeboten

Der Druck fordert an, er schreibt nicht. Einstellungen zu schreiben committet eine Page im NVS (Non-Volatile Storage), und eine Flash-Operation auf dem ESP32-S3 schaltet den Instruction Cache ab, es läuft also für ihre Dauer auf keinem der beiden Kerne Code. Geschrieben wird im ersten Frame, in dem der Prüfstand disarmed ist und kein Platinenfoto geholt oder abgelegt wird. Auf dem Einstellungs-Bildschirm ist das der nächste Frame, und die Beschriftung steht auf SAVED, so schnell wie das Auge dem Druck folgt. Armed steht die Anforderung als WHEN IDLE, bis der Prüfstand disarmed wird.

Ein Store, der ablehnt, lässt die Beschriftung in der Danger-Farbe auf NOT SAVED stehen, bis das nächste erfolgreiche Schreiben oder die nächste Änderung kommt. Eine Ablehnung macht nicht rückgängig, was schon geschrieben wurde: Die Werte werden Key für Key gesetzt, und ein Fehlschlag mittendrin lässt die früheren Keys committed, das Medium kann also eine Mischung aus neuen und alten Werten halten. Der Bildschirm kann nicht sagen, welche. Ein Panel, dessen NVS gar nicht hochkam, lehnt jedes Schreiben der Sitzung ab, schreibt nichts und sagt das zusätzlich einmal auf dem Splash als NVS unavailable.

Nicht gespeicherte Werte bleiben, bis das Panel ausgeschaltet wird. Das Verlassen des Bildschirms schreibt nichts.

Der Bus-Fehler-Bildschirm

Das Panel führt den CAN-Echo-Selbsttest (Controller Area Network) bei jedem Start aus, 1200 ms lang innerhalb des Splash. Ein anderes Urteil als „alle Probes kamen unversehrt zurück" bringt diesen Bildschirm auf das Panel statt des Menüs.

Frames kommen verändert an

Es gibt ihn, weil der Fehler von jedem anderen Bildschirm aus unsichtbar ist: ein Bus, der keine Frames trägt, sieht genauso aus wie ein Koprozessor, der nicht bestückt ist, und beides sieht aus wie ein Prüfstand, der einfach keine Zahlen zeigt. Das Urteil ist die Überschrift, die Liste ist das, was der Reihe nach zu prüfen ist, und die rechte Spalte ist das, was beide Enden gezählt haben.

Es kam nichts zurück

Verlassen kostet zwei Sekunden Halten — die ARM-Geste und dieselbe Überblendung. Das Quittieren repariert nichts: der Prüfstand läuft in Simulation, nichts treibt einen Ausgang, und der Test läuft beim nächsten Start wieder. Es gibt kein Band und kein STOP, denn dahinter kann nichts armiert sein.

Ein Link, der abreißt

Derselbe Bildschirm trägt die andere Hälfte: ein Link, der stand und seit 4 s weg ist. Die Überschrift ist das, was der CAN-Controller dieses Panels gerade tut — der Draht hat eben noch Frames getragen.

Das Panel ist vom Bus

Überschrift Bedeutung
this panel is off the bus zu viele Frames blieben unquittiert; es hat aufgehört zu senden
this panel is rejoining the bus es zählt die Ruhezeit ab, die ein Rejoin braucht, rund 3 s
this panel's controller has stopped untätig und nicht neu gestartet — ein Fehler in der Firmware
the link stopped answering der Controller ist am Bus und niemand antwortet
the controller cannot be read der Treiber läuft nicht; es kann nichts gesendet werden

Vier Sekunden, nicht eine: der Link fällt gelegentlich für einen Poll aus, und ein Bildschirm, der bei jedem Zucken übernimmt, ist einer, den man wegklickt.

Niemals bei armiertem Prüfstand. Der Bildschirm hat kein STOP, und einem Prüfstand, an dem sich etwas dreht, darf keine Diagnose die Stopptaste verdecken. Armiert sagt das Alert-Band, dass der Link weg ist, und der Bildschirm wartet auf das Disarmieren.

Dieselben Zahlen gehen in RCBENCH.LOG auf der SD-Karte, eine Zeile je Report, solange der Link unten ist:

t=182s link=down for 47s  bus=OFF tx_err=248 rx_err=0 bus_err=1976 rejoins=44/44  polls=5323 replies=5279 timeouts=44

Die Felder sind jedes Mal dieselben in derselben Reihenfolge. rejoins ist dieser Ausfall über der Gesamtzahl seit dem Start, und ein Controller, der sich nicht lesen lässt, schreibt ? in seine Spalten statt einer anders geformten Zeile: die Ablesung, die einen Zeitstempel am nötigsten hat, ist genau die, bei der der Controller nicht geantwortet hat.

Die Karte ist dafür da, weil die Konsole des Panels nicht auf jeder Platine erreichbar ist. Die native USB-Buchse führt GPIO19 und GPIO20, die der Multiplexer etwa eine Sekunde nach dem Start an CAN übergibt — sie ist also weg, bevor ein Fehler am Prüfstand passiert. Die gebrückte Buchse liegt an UART0 und trägt die Konsole normalerweise durchgehend; womit sie verbunden ist, ist aber umschaltbar: ein Schiebeschalter neben den Tastern BOOT und RESET ist mit UART1 und UART2 beschriftet. In einer Stellung meldet sich der Bridge-Chip an und lässt in keine Richtung etwas durch, und dann hat das Panel gar keine Konsole.

Den Link in Betrieb nehmen hat die Urteile und was jedes bedeutet.

Outputs

Hinter der OUTPUTS-Taste auf dem Setup-Bildschirm. Die Protokolle, die an die Pins des Koprozessors gebunden sind, und welche Pins jedes davon treibt.

Outputs

Ein Pin-Satz je Protokoll, nicht acht unabhängige Slots: ein Prüfstand wird protokollweise verkabelt — vier Servokabel, dann ein ESC (Electronic Speed Controller) — und erst nach dem Protokoll und dann nach seinen Pins zu fragen ist die Form dieser Arbeit. Mehr als ein Protokoll kann gleichzeitig gebunden sein, und ein Pin gehört höchstens einem davon.

Jeder angehakte Pin wird ein Slot auf der OUTPUTS-Page, in Pin-Reihenfolge über alle Protokolle hinweg, mit Kanälen ab null — der niedrigste angehakte Pin ist also Kanal 0, in welcher Reihenfolge der Bildschirm auch berührt wurde und welches Protokoll ihn auch hält. Acht Slots und acht Kanäle sind das Budget, geteilt. PPM rendert acht Kanäle auf seinem einen Pin, ein Prüfstand mit PPM hat also für nichts anderes Platz. Es läuft mit 40 Hz und nicht mit den 50 Hz der übrigen Pulstreiber: acht Kanäle brauchen 23 300 us Rahmen, und 50 Hz geben 20 000.

SERVO PWM und MOTOR PWM sind derselbe Puls mit denselben 50 Hz und unterscheiden sich darin, wofür der Kanal da ist. Ein Servokanal geht in die Mitte, wenn ihn nichts kommandiert; ein Motorkanal geht auf null. Am Puls ist nicht zu erkennen, was am Pin hängt, also sagt es der Eintrag: einen ESC als MOTOR PWM binden, ein Ruder als SERVO PWM. Der Gasregler auf MOTOR & ESC treibt jeden als Motor gebundenen Kanal — MOTOR PWM und die DShot-Einträge — und lässt die Servokanäle in Ruhe.

Wenn das Protokoll keinen Pin mehr nehmen kann, steht der Grund in Bernstein darunter: NEEDS 8 CHANNELS, 4 FREE, ALL 8 SLOTS IN USE oder SERVO PWM TAKES 8 PINS. Eine komplett graue Platine ohne Begründung daneben liest sich wie ein Defekt, und PPM färbt die ganze Platine grau, sobald irgendetwas anderes gebunden ist.

PPM bei schon gebundenen Servo-Pins

Das Protokoll ist eine Liste und kein Stepper: es gibt acht davon, und sich an sieben vorbeizuschieben, um das achte zu erreichen, ist keine Auswahl.

Die Protokollliste

Reservierte Pins werden gezeigt und lassen sich nicht anhaken. GP3 trägt die Safety-Heartbeat-Leitung und GP8 bis GP12 den CAN-Controller (Controller Area Network); jeder sagt das unter seinem Namen. Sie zu verstecken hieße, dass jemand GP10 sucht und eine Lücke findet. DShot und die Output-Treiber hat die ganze Übersicht.

Die Pad-Nummer unter jedem Pin ist die auf der Platine aufgedruckte, damit wer Pads zählt und wer GPIO-Nummern (General-Purpose Input/Output) liest beim gleichen Pin ankommen.

Jede Änderung schreibt die Pages sofort. Es gibt keine APPLY-Taste: ein Bildschirm mit einer nicht gesendeten Auswahl ist ein Bildschirm, der dem Prüfstand widerspricht, und nichts sagt, welcher von beiden treibt. Was aus dem Schreiben wurde, steht unter dem Protokoll — WRITTEN, NO LINK oder REFUSED.

Ein Protokollwechsel sagt, welcher Satz gerade bearbeitet wird. Nichts wird verworfen: die Pins des verlassenen Protokolls bleiben gebunden, und die Pins des erreichten kommen zurück, wie sie waren. Ein Selektor, der die aktuellen Pins umlenkte, hieße, dass ein zweites Protokoll zu binden das erste löst.

Ein Pin, den ein anderes Protokoll hält, wird grau gezeichnet, mit dem Namen dieses Protokolls darunter, wo ein freier Pin seine Pad-Nummer zeigt. Das ist eine Auswahl, rückgängig gemacht bei diesem Protokoll — anders als ein reservierter Pin, der rot und durchgestrichen ist, weil er die Verkabelung ist und keine Auswahl.

Vier Servokabel und ein ESC, mit DShot600 als bearbeitetem Protokoll. GP5 ist angehakt; GP0, GP1, GP2 und GP4 sagen SERVO PWM und lassen sich hier nicht anhaken; GP3 und GP8 bis GP12 sind rot, weil der Koprozessor sie reserviert:

Outputs mit Pins, die ein anderes Protokoll hält

Eine Zelle ist also in einem von vier Zuständen, und jeder sagt, was zu tun ist: in diesem Protokoll angehakt, von einem anderen gehalten und benannt, reserviert und durchgestrichen, oder frei und mit seiner Pad-Nummer.

Pin auswählen

Hinter der Taste PICK A PIN auf dem Setup-Bildschirm, und dieselbe Bindung, die der Outputs-Bildschirm hält. Die Liste beantwortet „welcher GPIO ist gebunden“; dieser beantwortet „wo stecke ich das Kabel an“.

Der Pin-Picker

Die Tasten sind nicht die Pads. In jeder Größe, die auf ein 480-Pixel-Panel passt, ist ein Pad unter 40 Pixel breit und damit kleiner als eine Fingerkuppe. Also werden die Pads gezeichnet, wo sie sind, und berührt wird auf versetzten Tastenreihen neben der Platine, jede an einer geraden Leitung zu ihrem eigenen Pad.

Eine Taste ist gefärbt wie ihre Zelle auf dem Outputs-Bildschirm: die Pins dieses Protokolls in der Akzentfarbe, ein Pin, den ein anderes Protokoll hält, grau, und ein vom Koprozessor reservierter Pin hat gar keine Taste — er ist auf dem Pad durchgestrichen, denn eine Taste unter einem Pin, der nicht gewählt werden kann, sagt, er ließe sich wählen.

Links stehen die Pins dieses Protokolls in Kanalreihenfolge, rechts die Pins, die andere Protokolle halten, mit Namen. Beide zusammen lesen sich als ein Lauf von Kanälen, denn das ist, was die OUTPUTS-Page trägt.

Wo die Pads liegen, kommt von der Platine und nicht vom Panel: die Shape-Page trägt den Umriss, das Raster und die Ecke, an der Pad 1 sitzt. Eine Platine, die das nicht sagt, wird gar nicht gezeichnet — ein Bild aus einer geratenen Form zeigt mit derselben Überzeugung auf den falschen wie auf den richtigen Pad, und die ganze Aufgabe dieses Bildschirms ist es, einen Pad auf der Platine vor dir zu finden. Ihre Pins stehen weiterhin auf dem Outputs-Bildschirm.

Das Foto ist wieder davon getrennt. Mit einem ist die Platine auf dem Bildschirm die Platine in deinen Händen; ohne eines werden Umriss und jedes Pad aus der Form gezeichnet, und die Tasten liegen an denselben Stellen:

Der Picker ohne Foto

Das Foto wird einmal je Platine über den Link geholt und im Flash des Panels behalten. Es kostet also etwa zehn Sekunden, wenn eine Platine zum ersten Mal gesehen wird, und danach nichts. Eine Platine ohne Foto, oder eine, deren Übertragung nicht fertig wurde, wird gezeichnet statt leer gelassen.

Ein Servokabel hat drei Adern, und die Tasten beschreiben eine davon. Die anderen beiden sind auf der Platine selbst markiert: eine Masse trägt ein weißes G, eine Versorgung ihre Spannung — 5V0, 3V3. Eine Versorgung, die ein Eingang und keine feste Spannung ist, trägt stattdessen PWR, denn eine Zahl, die nur manchmal stimmt, ist hier schlechter als keine. Pads, die keines von beidem sind, etwa RUN, bekommen einen Punkt und keine Beschriftung.

Sie werden innerhalb des Umrisses an einer kurzen Leitung markiert, in zwei Tiefen, damit eine Reihe von Versorgungen an einem Ende nicht eine Beschriftung über die nächste zeichnet. Innen ist der einzige verbleibende Platz: der Raum neben der Platine gehört den Tasten, und eine Markierung auf dem Pad selbst wäre so klein wie das Pad.

Sie kommen von der Pads-Page, die vom Katalog getrennt ist, weil sie dort nicht hineinpassen — eine Page hat 32 Register, und eine Platine mit 40 Pads hat zwischen beiden mehr Pads als das. Eine Platine, die sie nicht bedient, hat ihre Massen und Versorgungen unmarkiert, und ein Kabel wird gesteckt, indem man die Platine liest statt den Bildschirm.

Der Koprozessor hält sie, nicht das Panel

Eine Bindung beschreibt die Verkabelung, und das Panel ist nicht die Platine, in der die Drähte stecken. Der Koprozessor schreibt die Pages OUTPUTS und CHAN_CFG in seinen eigenen Flash und stellt sie beim Booten wieder her; das Panel speichert keine Bindung und sendet keine ungefragt. Kommt der Link hoch, liest das Panel die Page und zeigt, was drüben konfiguriert ist. Nach einem Panel-Neustart sind das, was dieser Bildschirm zeigt, und das, was Pins treibt, dieselbe Sache.

Das Wiederherstellen konfiguriert die Outputs. Es treibt sie nicht: jeder Treiber ist daran gebunden, dass die Bank armed ist, was der Koprozessor nur gewährt, solange das ARM-Register gesetzt ist, der Link nicht im Failsafe ist und der Heartbeat vertraut wird. Eine wiederhergestellte Bindung belegt also ihre Pins und hält sie im Idle, bis jemand armed. Kanalbefehle werden nicht wiederhergestellt — eine Konfiguration überlebt einen Power-Cycle, eine Gasstellung nicht.

Das Speichern wartet, bis der Prüfstand nicht mehr treibt, und dann auf eine Lücke im Verkehr. Flash zu schreiben hält den Koprozessor mit abgeschalteten Interrupts an, und solange antwortet er auf nichts: auf dem Inbetriebnahme-Modul wurde ein Speichervorgang, der in einem Fenster gelöscht und programmiert hat, mit 19.178 us gemessen, gegen einen CAN-Frame von etwa 130 us und zwei Frames Puffer im Controller. Löschen und Page Program sind nicht getrennt voneinander gemessen. Ein in diesem Fenster verlorener Request kostet das Panel 1000 ms Wartezeit, was über dem 200-ms-Failsafe des Koprozessors liegt; ein einziger verlorener Frame endet also als FAULT 01 (LINK_FAULT_LINK_SILENT) an einem Kabel, an dem nichts fehlt.

Der Sektor wird deshalb nicht je Speichervorgang gelöscht. Zwei Sektoren halten je sechzehn Records; ein Speichervorgang schreibt den nächsten Record, und ein Sektor wird erst gelöscht, wenn jeder Record darin überholt ist. Dieses Löschen wird vor den Speichervorgang gezogen, der es braucht: beim Booten, bevor der Koprozessor antwortet, oder in einem Durchlauf nach dem Speichervorgang, der zuerst in den anderen Sektor schreibt, sobald der Bus 5 ms ruhig war. Gelöscht wird der zurückgelassene Sektor, nicht der gerade gefüllte, und zwischen dem Löschen und dem Speichervorgang, der es braucht, liegen die fünfzehn Speichervorgänge dazwischen. Fünfzehn von sechzehn Speichervorgängen kosten damit ein Page Program und kein Löschen. Wie lange ein Page Program auf dem Flash des Moduls dauert, ist nicht gemessen; die Konsolenzeile nach jedem Speichervorgang trägt den Wert.

Ein Stromausfall während des Speicherns lässt die Bindung von davor stehen. Der gerade geschriebene Record fällt durch seine Prüfsumme, der Record davor ist weiterhin der neueste gültige, und der gelöschte Sektor ist nie der, in dem der noch gebrauchte Record liegt.

Eine Page, die der Bildschirm nicht beschreiben kann — zwei Protokolle gleichzeitig, eine Rate, die kein Eintrag anbietet, ein Pin, der nicht auf dem Header liegt — liest sich als "nichts konfiguriert" zurück, statt als eine Auswahl, die der Page widerspricht, aus der sie stammt.

Auswuchten

Auf einer eigenen Seite beschrieben: Auswuchten.

Bildschirme, die nicht fertig sind

Eine Kachel mit der Marke SOON nennt, was der Bildschirm tun wird und auf welches Bauteil oder welche Entscheidung er wartet.

Clone this wiki locally