-
Notifications
You must be signed in to change notification settings - Fork 0
Screens de
English · Deutsch
Was auf jedem Bildschirm steht, was die Marken im Menü bedeuten und wie die einzelnen Bildschirme bedient werden.
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.

| 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:


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.

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.

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.
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.

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.

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:

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.
Die Reihenfolge: Geräteklasse, Protokoll, verbinden.

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

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:

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

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

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:

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.

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.

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

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.

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

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. |

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.
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.

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.

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.
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.

| Ü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.
Hinter der OUTPUTS-Taste auf dem Setup-Bildschirm. Die Protokolle, die an die Pins des Koprozessors gebunden sind, und welche Pins jedes davon treibt.

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.

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.

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:

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.
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“.

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:

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.
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.
Auf einer eigenen Seite beschrieben: Auswuchten.
Eine Kachel mit der Marke SOON nennt, was der Bildschirm tun wird und auf welches Bauteil oder welche Entscheidung er wartet.
rcbench
English
Using the bench
- What this is for
- Building
- Bringing up the link
- First run on hardware
- Screens
- Balancing
- Servo procedures
- Receiver buses
- Safety
- BLHeli_32 parameters
Reference
Deutsch
Den Prüfstand benutzen
- Worum es geht
- Bauen
- Den Link in Betrieb nehmen
- Erster Lauf auf der Hardware
- Bildschirme
- Auswuchten
- Servoverfahren
- Empfängerbusse
- Sicherheit
- BLHeli_32-Parameter
Referenz