Servo de - subtilitas/rcbench GitHub Wiki
English · Deutsch
Drei Verfahren am Servo. Das erste misst ein Servo im eingebauten Zustand:
die Endlagensuche läuft auf dem SERVO-Bildschirm und liest INA3221 CH1, und
bei einem KST- oder Chaservo-Servo am Programmierport kann sie die eigenen
Weggrenzen des Servos senken. Das zweite, der Abgleich, braucht einen
Stromsensor über ein Paar Ausgänge, der nicht bestückt ist, und läuft nur
gegen ein modelliertes Servo. Ihre Vorgabewerte stammen aus
servo_limit_defaults() und servo_sync_defaults() in shared/servo/. Das
dritte, der automatische Test, liest den Strom des
Netzteils, das das Servo versorgt.
Im Sender gesetzte Endpunkte sind Schätzungen. Ein Servo, das gegen einen mechanischen Anschlag gehalten wird, zieht Blockierstrom, solange es dorthin befohlen wird, und der Einbau, nicht das Servo, bestimmt, wo der Anschlag liegt. Die beiden Enden des Ruderwegs unterscheiden sich; beide messen.
Die Suche schreitet von der Mitte nach außen, in Schritten von 10 µs Pulsweite (etwa 0,9° bei einem Servo mit 11 µs je Grad Weg), bis 600 µs von der Mitte und nie über 500 oder 2500 µs hinaus. Ein letzter Schritt unter 10 µs erreicht dieses Ende, so wird das Ende selbst gemessen. Nach jedem Schritt wartet sie 120 ms, bis das Servo steht, und mittelt den Strom über 80 ms. Solange die Fläche frei läuft, ist der Strom flach und niedrig. Das Gestänge gilt als angelaufen, wenn der Strom das 1,8-Fache des Grundstroms im freien Lauf übersteigt und mindestens 0,15 A darüber liegt. Die Suche hält beim ersten solchen Schritt an, nimmt 25 µs zurück und meldet diese Pulsweite als Endpunkt.
Am Prüfstand sucht der Endlagenlauf (shared/servo/servo_limrun.c) zuerst
die untere Seite, dann die obere. Wo, hängt vom Ziel ab:
| PWM-ZIEL | Zuerst gelesen | Suche |
|---|---|---|
| ein SERVO-PWM-Pin auf AUSGÄNGE | nichts | PULS CENTRE bis PULS MIN und PULS MAX |
| PROG-PORT | eine Lesesitzung des Programmierers | NEUTRAL des Servos bis zu seinem eigenen PULSE LOWER und PULSE UPPER, nie darüber hinaus |
Der Abstand zu diesem Ende ersetzt die 600 µs. Der Strom sind die 50-ms-Fenster von INA3221 CH1, jede Stellung dauert also 250 ms. Vor und nach jeder Suche steht das Servo 1000 ms in der Mitte: der Rückweg von einem Ende, 600 µs bei 0,67 µs/ms, dauert 900 ms, und der Grundstrom soll ihn nicht sehen.
Dauer: der Host-Test begrenzt eine vollständige Suche gegen das modellierte Servo auf unter 12 s. Ein Lauf am Prüfstand ist nicht gemessen.
Die Seite GRENZEN der Servo-Einstellungen enthält den Lauf. ENDLAGENLAUF wählt mit einem Tippen NUR SUCHE oder SUCHE+PROG. SERVOPULSE, nur mit PWM-ZIEL auf PROG-PORT angezeigt, wählt mit einem Tippen BEHALTEN oder 1000-2000; es beginnt bei BEHALTEN. ENDLAGENLAUF STARTEN startet den Lauf nach 2 s Halten, wie TEST STARTEN; ein Tippen oder ein kürzeres Halten startet nichts.

Die Zeile unter der Schaltfläche nennt die ganze Zeit, was der Lauf treibt
und liest: AUSGANG PROG-PORT GP13, STROM INA3221 CH1, oder mit PWM-ZIEL
auf AUSGÄNGE die als SERVO PWM gebundenen GPIOs. Während der Lauf geht,
zeigt die linke Karte sein Feld: die Phase, die Seite und den befohlenen
Puls, und in der dritten Zeile wieder den Ausgang. Die Zeile ZIEL der
rechten Karte bleibt ebenfalls sichtbar.

Der Lauf liest den INA3221 und sonst nichts. Die Messwerte des PD mini und das Modell des Panels werden abgelehnt, bevor etwas angesteuert wird: die Schaltfläche bleibt grau, und die Zeile darunter sagt warum.
| Zeile | Bedingung |
|---|---|
ZUERST ARM |
der Prüfstand ist SAFE |
LETZTER BERICHT SCHREIBT NOCH |
ein automatischer Test oder ein Endlagenlauf läuft, oder sein Bericht geht noch auf die Karte |
INA3221 NICHT FÜR DIE SERVOSCHIENE EINGERICHTET |
INA3221 oder sein CH1 in SETUP aus, ein Koprozessor älter als Protokoll 4.11, oder eine SENSE-Page, die die Einrichtung nicht hält |
INA3221 NICHT ONLINE |
kein Link, das Bauteil antwortet nicht, oder sein Reset-Zähler hat sich bewegt |
NOCH KEINE INA3221-FENSTER |
der INA3221 ist noch nicht das Messgerät der Servoschiene: seine Einrichtung ist kürzer als 1000 ms gehalten, oder kein Fenster mit Strom in den letzten 200 ms |
SERVOSCHIENE UNTER 3.0 V ODER NICHT GELESEN |
das letzte INA3221-Fenster enthält keine Schienenspannung, oder ihr Mittel liegt unter 3,0 V (SERVO_LIMRUN_RAIL_MIN_MV). Ein ausgeschalteter Ausgang liest 0 V, und eine Suche dort fände zwei freie Enden an einem Servo, das sich nie bewegt hat. 3,0 V liegen unter den 4,8 V, für die Servos üblicherweise angegeben sind, so dass die Schiene einer einzelnen Lithiumzelle noch startet; die Spannung, bei der ein bestimmtes Servo stehen bleibt, ist nicht gemessen |
PORT-PWM AUS: DER PORT GIBT KEINEN PULS AUS |
PWM-ZIEL auf PROG-PORT mit PORT-PWM aus |
KEIN SERVO-PWM-PIN, PINS NICHT GELESEN
|
PWM-ZIEL auf den Ausgängen des Prüfstands, ohne einen als SERVO PWM gebundenen Ausgang, oder die Bindung noch nicht gelesen: die Worte der Zeile ZIEL |
MITTE NICHT ZWISCHEN PULS MIN UND PULS MAX |
PULS CENTRE liegt nicht zwischen PULS MIN und PULS MAX |
SUCHE+PROG wird für ein Servo am Programmierport angeboten: PWM-ZIEL auf
PROG-PORT, der Port in PWM und eine Versorgung von 4,8 V oder mehr. Mit
einem antwortenden PD mini muss dessen Ausgang eingeschaltet sein, und sein
Sollwert zählt; ohne ihn der Mittelwert
der Servoschiene im letzten Fenster des INA3221. An den Ausgängen des
Prüfstands sucht der Lauf nur, die Zeile lautet NUR SUCHE, und die dritte
Zeile lautet PROGRAMMIEREN: NUR EIN SERVO AM PROG-PORT. Am PROG-PORT
beginnt jeder Lauf mit einer Lesesitzung, deshalb halten die übrigen
Bedingungen auch NUR SUCHE an: die Schaltfläche bleibt grau, und die dritte
Zeile nennt die Bedingung.
| Zeile | Bedingung |
|---|---|
PROGRAMMIEREN: DER PORT IST NICHT IN PWM |
der Programmierer hält den Port, oder der Port ist nicht für einen Lauf bereit |
PROGRAMMIEREN: PD-MINI-AUSGANG AUS |
ein PD mini antwortet mit ausgeschaltetem Ausgang: die Lesesitzung schaltete ihn neben dem Netzteil ein, das die Schiene speist |
PROGRAMMIEREN: VERSORGUNG UNTER 4.8 V |
ein PD mini antwortet, und sein Sollwert liegt unter 4,8 V |
PROGRAMMIEREN: SERVOVERSORGUNG UNTER 4.8 V |
kein PD mini antwortet, und die Servoschiene liegt im letzten Fenster des INA3221 unter 4,8 V oder ist nicht gelesen |
Jeder Lauf auf PROG-PORT, auch NUR SUCHE, beginnt mit einer Lesesitzung. Das Servo steht auf PULS CENTRE, der Lauf schaltet den Prüfstand auf SAFE, VERBINDEN liest alle Register, VERLASSEN gibt den Port zurück, und der Lauf schaltet den Prüfstand auf ARMED. Vorher wird nichts angesteuert.
- Ein Lesen, das scheitert, beendet den Lauf vor jeder Suche: ABGEBROCHEN,
Programmierport ohne Abschluss, wenn VERBINDEN oder sein Lesen nicht abschließt; NICHT BESTANDEN,kein KST- oder Chaservo-Servo, wenn das gelesene Servo Werte hält, die die harten Regeln nicht annehmen. Ein Servo, das kein KST oder Chaservo ist, wird mit PWM-ZIEL auf einem SERVO-PWM-Pin gesucht. - NEUTRAL nicht zwischen PULSE LOWER und PULSE UPPER beendet ihn als NICHT
BESTANDEN,
NEUTRAL außerhalb LOWER/UPPER. - PULSE LOWER bis PULSE UPPER nicht innerhalb von PULS MIN bis PULS MAX
des Prüfstands beendet ihn als NICHT BESTANDEN,
Servopulse außerhalb MIN/MAX. Der Prüfstand bleibt SAFE, nichts wird angesteuert, und Feld und Bericht nennen beide Bereiche, zum Beispiel900-2100 NICHT IN 1000-2000 us.
Ein KST-Servo im Lieferzustand hält PULSE LOWER 900,0 µs und PULSE UPPER 2100,0 µs. PULS MIN und PULS MAX des PWM-Typs STANDARD sind 1000 µs und 2000 µs, also wird dieses Servo bei BEHALTEN abgelehnt. SERVOPULSE auf 1000-2000, oder ein PWM-Typ, dessen Bereich 900 bis 2100 µs enthält, lässt es laufen.
SERVOPULSE auf 1000-2000 schreibt in der Lesesitzung PULSE LOWER 1000,0 µs
und PULSE UPPER 2000,0 µs, bevor etwas angesteuert wird, und liest sie
zurück. NEUTRAL wird nicht geschrieben. Ein Servo, das diese Werte schon
hält, bekommt kein Schreiben. NEUTRAL außerhalb des neuen Bereichs beendet
den Lauf als NICHT BESTANDEN, bevor etwas angesteuert wird, mit
ZURÜCKSPIELEN im Angebot. Die Einstellung wirkt mit NUR SUCHE und mit
SUCHE+PROG; mit NUR SUCHE sind die Pulse das einzige Schreiben, und die
dritte Zeile sagt NUR SUCHE: SETZT PULSE LOWER/UPPER, SONST NICHTS.
LEFT ANGLE und RIGHT ANGLE sind die eigenen Weggrenzen des Servos, je ein 8-Bit-Register, in einer unbekannten Einheit. Der kleinste Wert, den die harten Regeln des Programmierers nehmen, ist bei einem KST 1: 0 wird abgelehnt. Ein Wert unter 50 ist eine weiche Grenze; das Halten von 2 s beim Start ist die Zustimmung dazu.
Der Lauf nimmt das Servo als linear. PULSE LOWER und PULSE UPPER sind die Eingangspulse, bei denen das Servo den vollen Weg erreicht, den LEFT ANGLE und RIGHT ANGLE setzen. Zwischen NEUTRAL und diesem Puls ist der Weg linear im Puls; darüber hinaus hält das Servo den vollen Weg. Der Anteil einer Seite beim Puls p ist
f = (p - NEUTRAL) / (P_lim - NEUTRAL)
mit P_lim gleich PULSE LOWER auf der unteren und PULSE UPPER auf der oberen
Seite, so wie das Servo sie während der Suche hält. Die Einheit von LEFT
ANGLE und RIGHT ANGLE ist unbekannt, und der lineare Zusammenhang ist eine
Annahme, keine Messung. Eine angelaufene Seite, deren letzter freier Puls
nicht jenseits von NEUTRAL liegt, beendet den Lauf vor jedem Schreiben als
NICHT BESTANDEN, freies Ende vor NEUTRAL.
v0 ist der Wert, den das Register der Seite beim Lesen hält.
- Der Vorhalt:
v1 = ceil(v0 x fb x 1.03), fb der Anteil am ersten angelaufenen Puls der ersten Suche, höchstens v0 und mindestens der kleinste Wert. Der erste angelaufene Puls liegt am Anschlag oder dahinter, also bleibt der Anschlag bei v1 erreichbar und rückt nahe an die Pulsgrenze. Die Seite wird erneut gesucht. Ist sie dort frei, endet der Lauf als NICHT BESTANDEN,kein Anschlag nach dem Vorhalt, ohne zweites Schreiben und mit ZURÜCKSPIELEN im Angebot. - Der Endwert:
v2 = floor(v1 x f1), f1 der Anteil am letzten freien Puls der Vorhalt-Suche, mindestens der kleinste Wert. Kein Abstand kommt hinzu: der letzte freie Puls liegt einen Schritt von 10 µs vor dem angelaufenen. Eine Vorhalt-Suche, die weit innerhalb der Pulsgrenze anläuft, ergibt v2 ebenso; kein weiterer Vorhalt folgt.
Durchgerechnet am modellierten Servo des Hosts: NEUTRAL 1500,2 µs, PULSE LOWER 900,0 µs, v0 150, der Anschlag bei 1000 µs. Die erste Suche ist frei bei 1000 µs und läuft bei 990 µs an: fb = 510,2 / 600,2 = 0,850, v1 = ceil(150 x 0,850 x 1,03) = 132. Bei 132 ist die Suche frei bis 930 µs: f1 = 570,2 / 600,2 = 0,950, v2 = floor(132 x 0,950) = 125. Bei 125 endet der volle Weg bei 1000,2 µs.
Der Vorhalt entfällt, wo v1 nicht unter v0 läge, oder wo das Modell den
Anschlag um weniger als 20 µs verschiebt: d0 x (v0 - v1) / v1 unter 20 µs,
d0 der Abstand des letzten freien Pulses der ersten Suche von NEUTRAL. Eine
Suche könnte diese Verschiebung nicht von keiner unterscheiden. Die erste
Suche zählt dann als die des Vorhalts, und v2 = floor(v0 x f0), f0 der
Anteil an ihrem letzten freien Puls: ein Schreibvorgang für diese Seite.
Die Protokollnotizen sagen nicht, welche Pulsseite jedes Register begrenzt,
und nicht, wie REVERSION das ändert. Der Lauf findet es beim ersten
Schreiben der ersten angelaufenen Seite: dieser Wert geht nur an LEFT ANGLE
(an RIGHT ANGLE, wo LEFT ANGLE schon den kleinsten Wert hat), und die Seite
wird gesucht. Das Ende hat sich bewegt, wenn es jetzt frei ist oder sein
Endpunkt 20 µs weiter außen liegt. Ein Ende, das innerhalb von 20 µs blieb,
schickt LEFT ANGLE auf seinen Wert zurück und den aus dem v0 von RIGHT
ANGLE neu berechneten Wert an RIGHT ANGLE; bewegt es sich dann, begrenzt
RIGHT ANGLE diese Seite. Ein Ende, das mit beiden Registern versucht
bleibt, beendet den Lauf als NICHT BESTANDEN, LEFT/RIGHT ANGLE: Seite unklar. Ein Ende, das sich um 20 µs oder mehr nach innen bewegt, ebenso.
Ein Ende, das mit seinem Register auf dem kleinsten Wert anläuft, beendet
ihn als NICHT BESTANDEN, läuft beim kleinsten Winkel an. Ein Register,
dessen Seite nie anlief, behält seinen Wert.
Zuletzt werden beide Enden noch einmal gesucht: BESTANDEN, wenn beide frei
sind, NICHT BESTANDEN ein Ende läuft weiterhin an, wenn eines anläuft.
Nach NICHT BESTANDEN folgt kein weiteres Schreiben; ZURÜCKSPIELEN bringt
die Werte vor dem Lauf zurück.
Der Lauf schreibt in Sitzungen des Programmierers:
- Das Servo geht in die Mitte zurück und wird dort 1000 ms gehalten.
- Der Lauf schaltet den Prüfstand auf SAFE.
- VERBINDEN nimmt den Port und liest alle Register.
- Das Schreiben: SCHREIBEN AUF SERVO FREIGEBEN an, die Felder des Laufs, der Schreibschalter wieder aus. Es ist das gewöhnliche Schreiben des Programmierers mit jeder Grenzprüfung, und es liest die Werte zurück.
- VERLASSEN gibt den Port an PWM zurück.
- Der Lauf schaltet den Prüfstand auf ARMED und sucht die Seite, für die geschrieben wurde.
Die Lesesitzung schreibt nichts außer den Pulsen von SERVOPULSE. Ein
VERLASSEN, das dieser Link oder diese Versorgung nicht abschließt, beendet
den Lauf, bevor sich ein Wert ändert. Das erste Schreiben des Laufs sichert
die Werte des Servos in eine Datei auf der Karte, wie das erste Schreiben
des Programmierers; die späteren Sitzungen sichern nicht. Jede spätere
Sitzung liest das Servo erneut. Ein anderer Typ, umgeschaltete REVERSION,
ein anderer Bereich der Werte, die die harten Regeln annehmen, andere
Pulse, oder LEFT ANGLE und RIGHT ANGLE anders, als der Lauf sie zuletzt
schrieb, beenden den Lauf als ABGEBROCHEN, Servo hat andere Werte, bevor
er wieder schreibt.
| Konstante | Wert | Zweck |
|---|---|---|
SERVO_LIMRUN_WRITES_MAX |
8 | Registerwerte, die ein Lauf höchstens schreibt: PULSE LOWER und PULSE UPPER (2), Vorhalt und Endwert auf jeder Seite (4), und das erste Schreiben von LEFT ANGLE mit seinem Wert zurück, wenn RIGHT ANGLE diese Seite begrenzt (2). Eine Sitzung, deren Werte darüber gingen, wird nicht gesendet: NICHT BESTANDEN Grenze von 8 Werten erreicht
|
SERVO_LIMRUN_OVERSET_PCT |
3 % | der Vorhalt über dem Anteil am ersten angelaufenen Puls |
SERVO_LIMRUN_STD_LOWER_DUS, SERVO_LIMRUN_STD_UPPER_DUS
|
1000,0 µs, 2000,0 µs | was SERVOPULSE auf 1000-2000 schreibt |
SERVO_LIMRUN_MOVED_US |
20 µs | ein Ende, das sich bewegt hat oder blieb; die kleinste Verschiebung des Anschlags, für die ein Vorhalt geschrieben wird |
SERVO_LIMRUN_RETURN_MS |
1000 ms | in der Mitte vor jeder Suche und vor jedem SAFE |
Schreiben: kein Schritt des Protokolls ist bekannt, der einen Wert dauerhaft macht, und kein Schreiben, das nur das RAM ändert. Jedes Schreiben ist das Registerschreiben, das der Programmierer zurückliest. Ob ein KST-Servo den Wert bei jedem Schreiben im EEPROM (elektrisch löschbarer programmierbarer Nur-Lese-Speicher) ablegt und wie viele Schreibvorgänge dieser Speicher verträgt, ist unbekannt; die Grenze hält einen Lauf bei 8 Werten. Ein Lauf mit beiden Enden angelaufen und SERVOPULSE auf 1000-2000 schrieb am modellierten Servo des Hosts 6 Werte in 4 Schreibvorgängen und 4 Sitzungen, 85,6 s, mit REVERSION AUS, und 8 Werte in 5 Schreibvorgängen und 5 Sitzungen, 97,7 s, mit REVERSION EIN.
Die gefundenen Enden werden nicht auf PULS MIN und PULS MAX des Prüfstands angewendet.
| Schutz | Wert | Wirkung |
|---|---|---|
| Stromobergrenze | 3,0 A | Abbruch, bei jedem 1-ms-Messwert eines Fensters geprüft |
| Der INA3221 am Ende seines Bereichs | ein begrenzter Messwert | Abbruch |
| Stall-Timeout | Fenstermittel über 1,0 A für 400 ms | Abbruch |
| Kein Fenster | 200 ms, 4 Fenster zu 50 ms | Abbruch; SERVO_TEST_WIN_STALE_MS, der Wert des automatischen Tests. Ein Fenster ohne Strommesswert zählt nicht als Fenster |
| Eine Suche | 40 s | Abbruch: 1000 µs Weg sind 100 Stellungen zu 250 ms, 25 s |
| Ein Schritt des Programmierers | 150 s | Abbruch: VERBINDEN mit seinem Lesen, ein Schreiben oder VERLASSEN |
| Das Umschalten des Prüfstands | 3 s | Abbruch, wenn SAFE oder ARMED 3 s nach der Anforderung nicht steht |
| Das Netzteil | Sollwerte und Ausgang, ein oder aus, wie bei seiner ersten Messung, ob es antwortet oder nicht, in jeder Phase außer den Sitzungen des Programmierers (VERBINDEN bis VERLASSEN), denen das Netzteil gehört; ein Ausgang, der beim Start aus ist und eingeschaltet wird, oder ein Netzteil, das beim Start nicht antwortet und später antwortet, mit ein- oder ausgeschaltetem Ausgang, beendet den Lauf als Netzteil oder Spannung geändert, so wird neben einer Schiene, die anderswo gespeist wird, kein zweites Netzteil eingeschaltet; ein VERBINDEN wird nicht gesendet, solange ein PD mini antwortet, mit dem der Lauf nicht begonnen hat, oder dessen Ausgang aus ist: der Lauf endet, wie eine Messung außerhalb einer Sitzung ihn beendet, mit Netzteil oder Spannung geändert für einen PD mini, mit dem der Lauf nicht begonnen hat, und mit Netzteilausgang ging aus für seinen eigenen; während einer Suche zudem die Schienenspannung innerhalb 1,0 V des ersten Fensters |
Abbruch |
| Die Schienenspannung im Fenster einer Suche | in jedem Fenster einer Suche vorhanden, ihr Mittel bei 3,0 V oder mehr (SERVO_LIMRUN_RAIL_MIN_MV), das erste Fenster eingeschlossen |
Abbruch, bevor das Fenster die Suche bewegt: kein Spannungswert im Fenster ohne Wert, Netzteil oder Spannung geändert unter 3,0 V; Bezug des 1,0-V-Bands ist das erste Fenster des Laufs, das die Spannung enthält |
| Schrittweite | 10 µs | ein Schritt kann das Horn nicht von frei bis hart an den Anschlag bewegen |
Sie gelten in jeder Phase. Die Suche und die Schutzmechanismen lesen den Betrag des Stroms: ein verkehrt herum eingebauter Shunt liest ein anlaufendes Servo als stärker negativen Strom, und der Lauf findet es wie mit richtig eingebautem Shunt. Ein Messwert von -32768 mA zählt als 32768 mA, über der Grenze von 3,0 A. Der Lauf folgt den Regeln für ARMED des SERVO-Bildschirms und des Programmierports: sein ARM wird abgelehnt, solange der Port gehalten wird, eine STOP-Sperre oder verlorene Touch-Ereignisse halten den Prüfstand SAFE, und ein ARM, das nicht ankommt, beendet den Lauf.
Der Abgleich ist ein Modul in shared/servo, auf dem Host gegen ein
modelliertes Servo getestet; keines der beiden Firmware-Images ruft es auf.
STOP, LAUF BEENDEN im Feld oder auf der Seite GRENZEN, ein Umschalten auf SAFE durch den Bediener, Linkverlust, das Verlassen des Bildschirms, der Bediener, der das Servo nimmt, eine Änderung an den Einstellungen des Servos, verlorene Touch-Ereignisse, der INA3221 nicht mehr das Messgerät, und ein Netzteil, das nicht mehr antwortet, auslöst, ausschaltet oder dessen Sollwerte sich ändern: die Gründe des automatischen Tests, in Was einen Lauf beendet. SAFE und ARM des Laufs selbst beenden nichts. Jeder Grund beendet den Lauf als ABGEBROCHEN, mit ausgeschaltetem Ausgang und freigegebenem Servo. Ein Lauf, der endet, während er auf ARMED wartet, fordert zudem SAFE an: ein ARM, das er anforderte und das der Prüfstand noch nicht übernommen hat, schaltet den Prüfstand nach dem Ende nicht auf ARMED. Ein Start des Panels löscht den Lauf ohne Bericht.
Die zuletzt geschriebenen Werte bleiben im Servo. Ein Lauf, der schrieb und
nicht bestand, zeigt in seinem Feld ZURÜCKSPIELEN IN PROGRAMM.. Ein
Schreiben, das nach dem Senden scheitert, ohne Antwort oder mit einer
Antwort, die der Programmierer nicht annimmt, gilt als geschrieben: ein Teil
davon kann angekommen sein. Ein Schreiben, das der Programmierer vor dem
Senden ablehnt, gilt als keines.
ZURÜCKSPIELEN im Programmierer bietet nach VERBINDEN und ALLES LESEN Werte vor dem Endlagenlauf an: das Servo, wie die erste Sitzung des Laufs es las,
zurückgeschrieben als gewöhnliches Schreiben von LEFT ANGLE, RIGHT ANGLE,
PULSE LOWER und PULSE UPPER. Das Angebot steht, solange das gelesene Servo
sich darin in diesen vier Feldern und in keinem anderen unterscheidet. Es liegt im Speicher des
Panels: ein Start des Panels vergisst es, die Sicherungsdatei auf der Karte
bleibt. Eine Sitzung nach dem Lauf gehört dem Bediener: ihr erstes
Schreiben sichert eine eigene Sicherungsdatei.

- Ein Endpunkt wird bereits um 25 µs zurückgenommen gemeldet.
- „Keine Endlage gefunden“ (
FREI) heißt: die Suche hat das Ende ihres Wegs gemessen, ohne dass das Gestänge angelaufen ist: PULS MIN oder PULS MAX an einem SERVO-PWM-Pin, PULSE LOWER oder PULSE UPPER des Servos am PROG-PORT. - Eine Endlage nahe der Mitte kann eine Schwergängigkeit im Gestänge sein, etwa ein klemmender Umlenkhebel oder eine streifende Schubstange, statt des Endes des Ruderwegs.
| Urteil | Bedeutung |
|---|---|
| GEFUNDEN | nur Suche: ein Ende läuft an; die Endpunkte werden gemeldet |
| FREI | kein Ende läuft an; nichts wird geschrieben |
| BESTANDEN | programmiert, und beide Enden in der letzten Suche frei |
| NICHT BESTANDEN | der Lauf endete wie geplant und ein Ende läuft weiterhin an, oder das Servo lässt sich nicht programmieren |
| ABGEBROCHEN | ein Schutz, der Bediener, der Link, das Messgerät, das Netzteil oder der Programmierer hat ihn beendet |
Das Feld auf der linken Karte zeigt bis SCHLIESSEN das Urteil, den Grund
oder die Werte (LEFT 150>87 RIGHT 150>95), die Enden oder den Ausgang,
an dem der Lauf begann, und den Dateinamen des Berichts.

Der Bericht ist eine eigene BENCHnnn.TXT ohne CSV-Datei daneben, unter
der nächsten freien Nummer, geschrieben unabhängig davon, was BERICHT auf
der Seite PRÜFLING sagt. Während eines Laufs schreiben weder das
Prüfstandslog noch das Netzteillog eine Zeile; die Zeit des Netzteillogs
läuft durch den Lauf weiter, wie seine Summen. Vom Start des Laufs, bis die
Karte den Bericht geschlossen hat, gilt er als offener Log-Lauf: WLAN und ein Update warten
darauf, wie auf die CSV eines Laufs. Ein Lauf am modellierten
Servo des Hosts mit REVERSION AUS und SERVOPULSE auf 1000-2000; die
Anschläge bei 1150 µs und 1880 µs Hornweg liegen bei 1208 µs und 1817 µs
Eingangspuls, sobald PULSE LOWER und PULSE UPPER 1000,0 µs und 2000,0 µs
sind:
RCBENCH SERVO-ENDLAGEN-BERICHT
Ergebnis: BESTANDEN
Prüfling: SERVO
Firmware: rcbench 0.20.0
Modus: Suche, dann LEFT ANGLE und RIGHT ANGLE programmiert
Ausgang: PROG-PORT GP13, 50 Hz
Pulsbereich: Centre 1500 us, 1000-2000 us
Gesucht: von 1500 us bis 1000 us und 2000 us
Strom: INA3221 CH1, Fenster zu 50 ms, Shunt 100.0 mOhm
Suchregel: Schritte zu 10 us, 120 ms warten, Mittel über 80 ms; angelaufen über 1.8 x frei und +0.15 A
Schutz: ein Messwert ab 3.0 A, über 1.0 A für 400 ms, 200 ms kein Fenster, 40 s je Suche
Dauer: 85.6 s
AS5600: nicht eingebaut, keine Winkel
ENDEN (die Suche vor dem Programmieren)
Unteres Ende: angelaufen bei 1200 us, Endpunkt 1235 us; frei 0.120 A, angelaufen 0.627 A
Oberes Ende: angelaufen bei 1820 us, Endpunkt 1785 us; frei 0.120 A, angelaufen 0.322 A
PROGRAMMIEREN (LEFT ANGLE und RIGHT ANGLE, Einheit unbekannt)
Servo: Typ 6, REVERSION AUS
Servopulse: NEUTRAL 1500.2 us, PULSE LOWER 900.0 us, PULSE UPPER 2100.0 us
Pulse schreiben: PULSE LOWER 900.0 -> 1000.0 us, PULSE UPPER 2100.0 -> 2000.0 us
LEFT ANGLE: 150 vorher, 87 nachher; begrenzt das untere Ende
Anteil frei 0.580, angelaufen 0.600; Vorhalt 93, Anteil 0.940; Endwert 87
RIGHT ANGLE: 150 vorher, 95 nachher; begrenzt das obere Ende
Anteil frei 0.620, angelaufen 0.640; Vorhalt 99, Anteil 0.960; Endwert 95
Verfahren: linear im Puls; Vorhalt +3 % auf den Anteil am ersten angelaufenen Puls, dann der Anteil, den seine Suche frei fand
Schreibvorgänge: Werte geschrieben 6, Schreibvorgänge gesendet 4, Grenze 8 Werte; Sitzungen 4
Sicherung: KST001, die Werte vor dem Lauf
ENDEN NACH DEM PROGRAMMIEREN (beide neu gesucht)
Unteres Ende: frei bis 1000 us; frei 0.120 A
Oberes Ende: frei bis 2000 us; frei 0.120 A
Einheit: die Einheit von LEFT ANGLE und RIGHT ANGLE ist unbekannt; der Weg gilt als linear im Puls von NEUTRAL bis PULSE LOWER und PULSE UPPER, das ist nicht gemessen.
Prüfstand: die gefundenen Enden werden nicht auf PULS MIN und PULS MAX angewendet.
Mit eingebautem AS5600 hat jedes Ende eine Zeile mit dem Winkel des Horns
an seiner letzten freien Stellung, AS5600 +38.5 Grad an der letzten freien Stellung. Ein Lauf, der schrieb und nicht bestand, hat eine Zeile
Rückholen:. Ein Lauf, der kein Schreiben sendete, hat keine Zeile
Sicherung:: die Werte vor dem Lauf liegen ab dem ersten Schreiben vor.
Die Zeile Sicherung: nennt die Datei, die das erste Schreiben dieses
Laufs sicherte, auch wenn dieses Schreiben gesendet wurde und verloren ging,
nie die Datei eines früheren Laufs. Die Zeile Gesucht: nennt Mitte und Enden der Suche; ein
Lauf, der vor seiner ersten Suche endete, hat keine. Ein Lauf an einem
SERVO-PWM-Pin hat keine Zeile Servopulse:.
Nicht gemessen: jede Zahl oben an einem echten Servo. Unbekannt sind die Einheit von LEFT ANGLE und RIGHT ANGLE, welches Register an einem echten KST- oder Chaservo-Servo welche Pulsseite begrenzt, ob ein geschriebener Wert einen Neustart der Versorgung übersteht, ob sich das Servo bewegt, wenn seine Grenze geschrieben wird, wie lange eine Sitzung an der Hardware dauert, und die Zeit von VERLASSEN bis zu einem wirksamen ARM.
Zwei Servos an einer Fläche (Doppelquerruder, geteiltes Höhenruder) arbeiten gegeneinander, sobald ihr Weg oder ihre Mitte nicht übereinstimmen, und ziehen dafür dauerhaft zusätzlichen Strom. Die Fläche zeigt kein sichtbares Zeichen.
Die beiden hören am Punkt des kleinsten Gesamtstroms auf, gegeneinander zu arbeiten. Die Suche hält Servo A fest und fährt eine Korrektur an Servo B durch, in der Mitte und bei ±300 µs Ausschlag:
- ein Unterschied in der Mitte ist ein Offsetfehler (Trimmung);
- ein Unterschied an einem Ende ist ein Wegfehler für dieses Ende.
Jede Stufe führt 3 Suchläufe mit je 7 Punkten aus. Der erste Suchlauf deckt ±40 µs um den Startpunkt der Stufe ab: 0 µs bei der Mittenstufe, der Ausschlag von ±300 µs bei den Endstufen. Jeder spätere Suchlauf ist auf den besten Punkt des vorigen zentriert und deckt ±13 µs, dann ±4 µs ab. Jeder Punkt wartet 120 ms plus die Fahrzeit bei angenommenen 0,8 µs/ms und mittelt den Strom dann über 100 ms. Ein Minimum gilt, wenn der Strom über den Suchlauf um mindestens 0,08 A schwankt. Die Stromobergrenze für das Paar liegt bei 4,0 A.
Jedes Ende bekommt seine eigene Korrektur; ein Gestänge mit Horn und Schubstange ist nicht symmetrisch zur Mitte. Ein Stromsensor über das Paar genügt.
- Ein Paar, das bereits abgeglichen ist, liefert ein Minimum bei Korrektur null.
- „Kein Minimum“ heißt: der Strom schwankt über den breitesten Suchlauf um weniger als 0,08 A.
- Zwei Servos, die sich einig sind und beide falsch stehen, erzeugen keinen Stromunterschied. Dieser Fall braucht den Beschleunigungssensor oder eine Sichtprüfung.
Was ein Servo in Ruhe, in Bewegung und beim Halten eines Endes zieht und wie lange es von Ende zu Ende braucht, bei den Versorgungsspannungen, für die es ausgelegt ist; und die Spannung, unter der es sich nicht mehr bewegt (Brown-out). Nichts am Prüfstand misst das Horn, solange der Ausgangsencoder (siehe unten) nicht an ist, also wird jedes Ergebnis am Strom des Netzteils abgelesen, das das Servo versorgt: am PD mini (WeAct PD Power Mini V1), wenn SETUP ANSCHLÜSSE ihn freigibt, sonst am Netzteilmodell des Panels. Ein Lauf am Modell sagt das in seinem Bericht, und seine Zahlen sind simuliert. Ist der INA3221 bei TEST STARTEN das Messgerät der Servo-Schiene und das Netzteil der PD mini, liest der Lauf stattdessen CH1 des INA3221, in 50-ms-Fenstern: siehe Der Strommesser des Laufs.
TEST STARTEN auf der TEST-Seite von SERVO startet ihn;
Bildschirme beschreibt die Bedienung. Die Engine ist
shared/servo/servo_test.c; die Konstanten unten stehen in servo_test.h.
Die Spannungsstufen sind STUFE 4.8 V und STUFE 6.0 V der TEST-Seite, und mit HV SERVO an STUFE 7.4 V und STUFE 8.4 V. HV SERVO ist nach jedem Neustart aus. Ein Lauf mit einer Stufe über 6,0 V startet nur über die Warnung NUR HV-SERVOS, 2 s gehalten. Die Strombegrenzung im Lauf ist die der Zeile SOLL.
Jede Stufe durchläuft diese Phasen:
| Phase | Das Servo | Endet |
|---|---|---|
| SETZEN | auf PULS CENTRE; die Spannung wird verlangt; die erste Stufe schaltet den Ausgang ein | wenn das Netzteil den Sollwert auf 0,05 V genau zurückliest, spätestens nach 3000 ms |
| EINSCHWINGEN | auf PULS CENTRE | nach EINSCHWINGEN der TEST-Seite |
| RUHE | auf PULS CENTRE: der Ruhestrom ist der Mittelwert der Messwerte, das Ruherauschen ihre Standardabweichung | nach 1000 ms |
| BEWEGEN | ein Sprung auf ein Ende, ohne Rampe: TEMPO gilt nicht | bei der Ankunft oder nach 3000 ms plus der Verzögerung des Strommessers (3300 ms am PD mini): verspätet mit erkannter Bewegung, unerkannt ohne |
| HOLD | an diesem Ende: der Haltestrom ist der Mittelwert der Messwerte | nach VERWEILEN, mindestens 600 ms |
Die beiden Enden sind die von SWEEP: BEREICH des Wegs zu beiden Seiten von PULS CENTRE, ohne Trim. Mit den Vorgaben (BEREICH 80 %, WEG +/-90 Grad, PULS MIN 1000 us, MAX 2000 us) sind das 1100 und 1900 us. KURVE und TEMPO gelten nur für SWEEP.
Auch ein Lauf, der zu Ende geht, schaltet den Ausgang aus und gibt das Servo zur Mitte frei. Auf dem Prüfstand, den er in ARMED zurücklässt, ist der gezeigte befohlene Wert dann die Ruhelage, wie nach FREIGEBEN: 1500 us bei STANDARD PWM, gleich welcher TRIM, und der nächste Drag oder die nächste Knopfdrehung beginnt dort. Die ersten beiden Bewegungen einer Stufe, von der Mitte zum unteren Ende und weiter zum oberen, werden nicht gezählt: sie messen den Haltestrom an jedem Ende. Danach gehen die gezählten Bewegungen von Ende zu Ende, BEWEGUNGEN viele oder für TESTZEIT, wie LÄNGE NACH sagt, höchstens 1000 je Stufe.
-
Schwelle: je Stufe der größere Wert aus 0,020 A
(
SERVO_TEST_MOVE_MIN_A) und dem 3-fachen (SERVO_TEST_NOISE_K) Ruherauschen, der Standardabweichung der Messwerte in RUHE. Der Bericht nennt sie in der SpalteSchw.. Ein Servo, dessen Messwerte in Ruhe um 0,010 A streuen, hat eine Schwelle von 0,030 A. - Bewegung: ein Messwert, der mehr als die Schwelle vom Wert vor dem Befehl entfernt ist: darüber, oder darunter, wenn das Servo ein Ende verlässt, an dem es gegen einen Anschlag gedrückt hat.
-
Ankunft: nach Bewegung ein Messwert mehr als die Schwelle über dem
Haltestrom des Zielendes, dann der erste Messwert, der wieder auf 0,05 A
(
SERVO_TEST_BAND_A) daran liegt, auf jeder Seite. Ein Messwert, der die Schwelle über dem Wert liegt, ist nie eine Ankunft; das Band von 0,05 A beendet also keine Bewegung zu früh, wo die Schwelle kleiner ist. Ein Messwert, der stattdessen mehr als 0,05 A unter den Wert fällt, wie nach einem Stromstoß beim Beschleunigen, übergibt die Bewegung der Regel unten. Die Halteströme der beiden Enden können sich um mehr als 0,05 A unterscheiden; ein Messwert, der noch auf dem Wert des Startendes liegt, oder ein steigender Strom, der den Wert des Ziels durchläuft, ist keine Ankunft. - Ankunft an einem Ende, das härter gehalten wird, als das Servo sich bewegt, einem Ende am Anschlag: dieser Wert wird nie überschritten, also ist die Bewegung beim ersten von zwei Messwerten in Folge angekommen, die nach Bewegung auf 0,05 A am Wert und aneinander liegen. Ein Strom, der den Wert des Ziels mit weniger als 0,05 A je Messwert durchsteigt, kann dort für eine Ankunft gehalten werden.
- Nicht unterscheidbar: ein Servo, dessen Strom in Bewegung auf 0,05 A am Haltestrom des Ziels liegt, ist von einem, das schon dort steht, nicht zu unterscheiden; eine Bewegung zu diesem Ende endet bei ihren ersten zwei Messwerten nach Bewegung.
-
Fenster: eine Bewegung hat 3000 ms (
SERVO_TEST_TRAVEL_TIMEOUT_MS) plus die Verzögerung des Strommessers, um anzukommen: 3300 ms am PD mini, dessen Messwerte eine Ankunft etwa 300 ms später zeigen. Die Verzögerung wird addiert, statt die letzten 300 ms des Fensters unbeurteilt zu lassen: ein Servo, das bei 2900 ms ankommt, zeigt das bei etwa 3200 ms und wird gemessen, und eine Bewegung, die nie ankommt, ist trotzdem verspätet, 300 ms später. Ein Messwert am Ende des Fensters oder danach, 3300 ms am PD mini, ist nie eine Ankunft: die Bewegung ist verspätet. -
Unerkannt: eine gezählte Bewegung ohne Messwert jenseits der Schwelle
binnen des Fensters. Der Strom unterscheidet sie nicht von einem stillstehenden
Servo: sie wird weder gemessen noch als verspätet gezählt, und der Bericht
zählt sie in der Spalte
Unerk.. Eine Stufe, bei der keine Bewegung erkannt wurde, lautetNICHT MESSBAR. - Stellzeit: vom Befehl bis zum Messwert der Ankunft.
- Strom in Bewegung: der Mittelwert der Messwerte zwischen Befehl und Ankunft; der Spitzenwert ist der höchste davon.
Warum das Band bei 0,05 A bleibt, während die Schwelle mitgeht: die Wiedergaben der beiden Läufe am Prüfstand unten messen mit dem Band bei 0,05 A und mit dem Band gleich der Schwelle dieselben Bewegungen auf die Millisekunde gleich, weil ein Messwert, der die Schwelle über dem Wert liegt, nie eine Ankunft ist. Mitgehen musste die Schwelle. 0.13.0 nahm 0,10 A als Bewegung, und der MG90S bewegt sich mit 0,04 bis 0,077 A über 0,001 A Haltestrom: keine Bewegung wurde erkannt, jede lief nach 3000 ms aus und zählte als verspätet, und der Lauf lautete NICHT BESTANDEN.
Einschränkung: die Bewegung zur Mitte kann in RUHE reichen. Mit EINSCHWINGEN 500 ms tragen die Messwerte in RUHE noch das Ende der Bewegung der Stufe zur Mitte: beim 1102HB bei 5,00 V 0,025 A, fallend auf 0,003 A, aus der Verzögerung des PD mini von 0,3 s und der Bewegung selbst. Das hebt den Ruhemittelwert und das Rauschen und damit die Schwelle: dort 0,026 A statt 0,020 A. Ein längeres EINSCHWINGEN vermeidet das.
Brown-out. Nach den Stufen, mit BROWN-OUT an: ab 5,00 V
(SERVO_TEST_BROWNOUT_START_V) oder der geltenden Spannungsgrenze, wenn
die niedriger ist, in Schritten von 0,20 V (SERVO_TEST_BROWNOUT_STEP_V)
abwärts bis 3,00 V (SERVO_TEST_BROWNOUT_FLOOR_V) oder bis zum kleinsten
Sollwert des Netzteils, wenn der höher liegt. Die geltende Grenze ist die
niedrigste aus SPANNUNG MAX, dem Höchstwert des Netzteils und beim PD mini
seiner Eingangsspannung abzüglich 0,7 V. Eine Untergrenze neben dem
0,20-V-Raster ist die letzte Stufe: am Modell, dessen kleinster Sollwert
3,3 V ist, geht der Lauf 5,0, 4,8 ... 3,4, 3,3 V. Jede Spannung durchläuft SETZEN, EINSCHWINGEN
und RUHE, dann zwei Bewegungen (SERVO_TEST_BROWNOUT_MOVES), von der Mitte
zum oberen Ende und weiter zum unteren, jede 600 ms gehalten. Eine Spannung
zeigt keine Bewegung, wenn kein Messwert der beiden Bewegungen mehr als
die Schwelle dieser Spannung, aus ihren eigenen Messwerten in RUHE, vom Wert
vor ihrem Befehl entfernt liegt. Der Lauf abwärts endet bei der ersten
Spannung ohne Bewegung; der Bericht nennt sie, die niedrigste, bei der sich
das Servo noch bewegt hat, und die Schwelle der zuletzt gelaufenen
Spannung. Keine Bewegung schon bei der ersten Spannung, 5,00 V, lautet
nicht messbar: ein Servo, an dem nie Bewegung erkannt wurde, kann sich
unter der Schwelle bewegen.
| Konstante | Wert | Bedeutung |
|---|---|---|
SERVO_TEST_MOVE_MIN_A |
0,020 A | die kleinste Schwelle: Bewegung; über dem Wert des Ziels, noch nicht angekommen |
SERVO_TEST_NOISE_K |
3 | die Schwelle in Ruherauschen, wo das größer ist |
SERVO_TEST_BAND_A |
0,05 A | am Haltestrom angekommen |
SERVO_TEST_PDMINI_LAG_MS |
300 ms | die Verzögerung des PD mini, wie der Bericht sie nennt |
SERVO_TEST_IDLE_MS |
1000 ms | die Ruhestrommessung |
SERVO_TEST_HOLD_MIN_MS |
600 ms | das kürzeste gemessene Halten |
SERVO_TEST_TRAVEL_TIMEOUT_MS |
3000 ms | eine Bewegung, die nicht angekommen ist, ist verspätet, nach diesem Wert plus der Verzögerung des Strommessers |
SERVO_TEST_SET_TOL_V |
0,05 V | ein zurückgelesener Sollwert |
SERVO_TEST_SET_TIMEOUT_MS |
3000 ms | für den Sollwert und für das Einschalten |
SERVO_TEST_STALE_MS |
1500 ms | kein neuer Messwert beendet den Lauf |
SERVO_TEST_STALL_ABORT_MS |
1000 ms | so lange über BLOCKIERT AB beendet den Lauf |
SERVO_TEST_CC_ABORT_MS |
1000 ms | so lange Netzteil im Konstantstrom beendet den Lauf |
SERVO_TEST_WIN_STALE_MS |
200 ms | ein Lauf am INA3221: so lange kein Fenster beendet ihn; 4 Fenster von 50 ms. Der Endlagenlauf teilt den Wert |
SERVO_TEST_WIN_MS |
50 ms | ein Fenster des INA3221 |
SERVO_TEST_NEG_IDLE_A |
0,020 A | ein Ruhestrom unter minus diesem Wert wird als Richtung des Shunts berichtet |
SERVO_TEST_BROWNOUT_START_V |
5,00 V | wo der Brown-out-Lauf beginnt |
SERVO_TEST_BROWNOUT_STEP_V |
0,20 V | jeder Schritt abwärts |
SERVO_TEST_BROWNOUT_FLOOR_V |
3,00 V | die niedrigste verlangte Spannung |
SERVO_TEST_BROWNOUT_MOVES |
2 | Bewegungen je Brown-out-Spannung |
Ein Messwert zählt einmal. Beim PD mini ist der Zähler das Register SAMPLES
der SUPPLY-Seite: die Zahl der beantworteten Ausgangsmessungen des Moduls,
vom Koprozessor gezählt. Ein Lesen der Seite, bei dem SAMPLES stehen
geblieben ist, bringt keinen neuen Messwert, gleich welche Spannung und
welchen Strom es trägt -- ein Display-Lesen auf dem Koprozessor, das langsam
war (bis 400 ms, PDMINI_REPLY_MS) oder fehlschlug, lässt die letzten stehen
--, und ein Lauf ohne neuen Messwert über 1,5 s endet. Ein Messwert trägt die
Panelzeit des ersten Lesens der Seite, das seinen Zählerstand zeigte; das
Modell zählt und stempelt seine eigenen Schritte. Der Koprozessor liest den
Ausgang des PD mini alle 100 ms (PDMINI_DISPLAY_MS), das Panel die Seite
alle 100 ms (SUPPLY_LINK_READ_MS); ein neuer Messwert erreicht den Test
also bestenfalls alle 100 ms, beim Modell alle 50 ms. Springt SAMPLES
zwischen zwei Lesevorgängen um mehr als eins, erreichen die Messwerte
dazwischen den Test nie: der Bericht zählt sie in seiner Zeile Skipped, und
die Rate des Netzteils schließt sie ein. Der Bericht nennt beide Raten, im
Lauf gemessen, und den mittleren Abstand zweier Messwerte, die den Test
erreicht haben.
Eine Stellzeit endet am ersten Messwert, der wieder am Haltestrom liegt; sie ist also um bis zu einen Abstand zu lang. Sie enthält auch den Weg des Befehls vom Panel zum Pin: Render-Schleife, Control-Task, CAN-Link (Controller Area Network) und den nächsten PWM-Frame (Pulsweitenmodulation). Diese Verzögerung ist nicht gemessen. Wie der PD mini einen Messwert mittelt, ist nicht bekannt.
Die Messwerte des PD mini sind verzögert und wiederholen sich. Zwei
Läufe am Prüfstand mit dem PD mini auf 0.13.0, ein MG90S und ein 1102HB,
lasen ihn alle 102 bis 106 ms. Vom Befehl bis zum ersten Messwert 0,02 A
über dem Wert davor vergehen im Median 0,31 s, und ein Strom wiederholt sich
oft über mehrere Messwerte. Jede am PD mini abgelesene Stellzeit ist darum
eine Obergrenze: beim MG90S 771 bis 989 ms für ein Servo mit etwa 0,1 s je
60 Grad. Der Bericht sagt das in seinen Zeilen Verzögerung,
Wiederholung und Stellzeiten, und STELLZEIT kann einen Lauf am PD mini
nicht scheitern lassen: ihre Zeile nennt die längste Stellzeit und lautet
Obergrenze, nicht gegen die Grenze geprüft. Was den Strom misst, wird dem
Lauf beschrieben (servo_test_meter_t: ein Name, die Verzögerung, ob sich
Messwerte wiederholen, ob Stellzeiten eine Obergrenze sind); ein schnellerer
Stromsensor setzt seine eigenen Werte und lässt STELLZEIT prüfen. Ein Lauf
am Netzteilmodell des Panels nennt keine eigene Verzögerung und prüft
STELLZEIT wie der PD mini: gar nicht.
Am INA3221 ist ein Messwert ein Fenster, gezählt an der Nummer des Fensters:
springt sie zwischen zwei Fenstern, die der Lauf bekam, um mehr als eins,
zählt die Zeile Übersprungen die fehlenden. Das Panel nimmt jedes Fenster
einmal und in Reihenfolge; die Queue zum Bildschirm fasst 8, ein Frame von
mehr als 400 ms verliert also die ältesten. Die Zeit eines Fensters ist der
späteste Zeitpunkt, zu dem es geschlossen haben kann: die Panelzeit des
Lesens, das es brachte, abzüglich 50 ms für jedes Fenster, das nach ihm
schloss und im selben Lesen kam. Fenster, die zusammen ankommen, liegen im
Lauf und in der CSV also 50 ms auseinander, wie die, die einzeln ankommen.
Ein Lauf liest von TEST STARTEN bis zu seinem Ende ein Messgerät: das Messgerät der Servo-Schiene, wie das Panel es beim Start des Laufs nennt (Link).
| PD mini | INA3221 CH1 | |
|---|---|---|
| Der Lauf liest es, wenn | der INA3221 bei TEST STARTEN nicht das Messgerät der Schiene ist oder das Netzteil das Modell des Panels ist | der INA3221 bei TEST STARTEN das Messgerät der Schiene ist und das Netzteil der PD mini |
| Ein Messwert | ein Messwert des Netzteils, alle 102 bis 106 ms | ein 50-ms-Fenster von CH1, 20 je Sekunde |
| Strom | der Messwert | das Mittel des Fensters. Die Spitze ist der höchste oder der tiefste 1-ms-Messwert des Fensters, je nachdem, welcher weiter von null liegt |
| Spannung | der Messwert am Ausgang des Netzteils | die Busspannung von CH1 an der Lastseite des Shunts: das Mittel des Fensters in Ist V, sein tiefster Messwert in V min
|
| RUHE und HOLD | die Messwerte, die in der Phase genommen wurden | die Fenster, die ganz in der Phase liegen; eines, das vor ihr begann, gehört zu keiner. Am modellierten Prüfstand der Host-Suite liegen in den 1000 ms von RUHE 19 bis 20 Fenster und in 600 ms Halten 11 bis 12 |
| BEWEGEN | die Messwerte ab dem Befehl | die Fenster ab dem, das beim Befehl offen ist |
| Stellzeit | bis zum Messwert, der die Ankunft zeigt: um bis zu einen Messwert und etwa 300 ms Verzögerung zu lang | bis zum Fenster, das die Ankunft zeigt: um bis zu zwei Fenster und den Poll, der sie liest, zu lang, 145 ms |
| STELLZEIT | berichtet, nicht geprüft | berichtet, nicht geprüft |
| Eine Bewegung ist verspätet nach | 3300 ms | 3050 ms |
| Spannung und Strom des Netzteils | jede Zahl und jede Zeile | nicht verwendet und nicht geloggt |
| Zustand des Netzteils: antwortet, Ausgang, Abschaltung, zurückgelesener Sollwert, Modus | gelesen | gelesen |
Am INA3221 misst das Panel eine Bewegung aus den Fenstern. Die Bewegungsaufzeichnung des Koprozessors, die eine Bewegung in 1 ms ab dem PWM-Frame misst, verwendet der Lauf nicht.
-
Bis zum Ende gehalten. Ein Lauf am INA3221 endet ABGEBROCHEN, wenn der
INA3221 nicht mehr das Messgerät der Schiene ist, mit der Bedingung, die
ausfiel, als Grund (siehe
Was einen Lauf beendet), und wenn ihn 200 ms
lang kein Fenster erreicht (
SERVO_TEST_WIN_STALE_MS). Er läuft nie mit dem PD mini weiter: die beiden Messgeräte stimmen nicht überein. In einem aufgezeichneten Lauf eines MS24 war der höchste Messwert des PD mini 0,390 A und der höchste 1-ms-Messwert des INA3221 1,637 A. Ein Lauf am PD mini läuft mit ihm weiter, wenn der INA3221 unter ihm zum Messgerät wird. -
Warum nicht der INA3221. Ein Lauf am PD mini, bei dem der INA3221 in
SETUP an ist, hat die Berichtszeile
INA3221: nicht verwendet: <Grund>:der Koprozessor ist älter als Link-Protokoll 4.11,der Koprozessor hält seine Einstellung nicht,er antwortet nicht,kein Fenster mit Strom in den letzten 200 ms,er hat sich zurückgesetzt,er arbeitet seit weniger als 1 soderdas Netzteil ist vom Panel simuliert. -
Strom mit Vorzeichen. Ein negativer Strom ist ein Messwert.
RUHESTROM, HALTESTROM, BLOCKIERT AB und die Spitze nehmen seinen Betrag,
CSV und Bericht behalten das Vorzeichen. Ein Lauf, dessen Ruhestrom in
einer Stufe unter -0,020 A liegt (
SERVO_TEST_NEG_IDLE_A), hat die BerichtszeileStrom in Ruhe negativ: Richtung des Shunts. -
Übersteuern. Der INA3221 liest eine Shuntspannung bis 163,8 mV:
1,638 A an einem Shunt von 0,1 Ω, 3,276 A an 0,05 Ω. Ein Messwert an einem
Ende dieses Bereichs zählt in seinem Fenster mit dem Bereichsende, und das
Fenster ist ein Messwert wie jeder andere: sein Mittel, seine Spitze und
sein Platz im Urteil sind die Werte, die der Baustein lieferte. Die Spalte
clippedder CSV nennt die Zahl solcher Messwerte im Fenster, die BerichtszeileÜbersteuertdie Zahl der Fenster mit einem; ihre Werte sind eine Untergrenze. Wie viele Messwerte eines Fensters übersteuert sind, entscheidet nichts. Ein Servo, das mehr zieht als der Bereich, liest sich als das Bereichsende. Welcher Shunt bestückt ist, entscheidet, was dieses Messgerät zeigen kann. -
Der Spannungsabfall am Shunt.
Ist VundV minwerden hinter dem Shunt gemessen. Der Sollwert wird für den Abfall nicht angehoben: am Bereichsende fallen am Shunt 0,164 V ab, bei jedem Shuntwert, und die BerichtszeileShuntsagt das.
| Regel | Bedingung | Wirkung |
|---|---|---|
| BLOCKIERT AB | ein Messwert nach EINSCHWINGEN in einer Spannungsstufe, dessen Betrag über BLOCKIERT AB liegt | NICHT BESTANDEN |
| 1 s über BLOCKIERT AB | Messwerte über BLOCKIERT AB über 1000 ms (SERVO_TEST_STALL_ABORT_MS) ohne einen bei oder unter dem Wert, in jeder Phase und im Brown-out-Lauf |
der Lauf endet, 1 s über BLOCKIERT AB
|
| 1 s Konstantstrom | das Netzteil meldet in jedem Messwert Konstantstrom (CC, constant current), 1000 ms (SERVO_TEST_CC_ABORT_MS) ab dem ersten |
der Lauf endet, 1 s im Konstantstrom, gleich wie BLOCKIERT AB steht |
| Konstantstrom unter 1 s | nichts endet und nichts fällt durch; die Berichtszeile Konstantstrom nennt die Zahl solcher Messwerte und die längste Folge vom ersten bis zum letzten |
|
| BLOCKIERT AB bei oder über der Strombegrenzung | bei TEST STARTEN | der Lauf startet. Die TEST-Seite und der Bericht sagen BLOCKIERT AB 3.00 A unerreichbar: Strombegrenzung 2.00 A
|
| BLOCKIERT AB bei oder über dem Bereich des INA3221 | bei TEST STARTEN mit dem INA3221 als Messgerät | der Lauf startet. Die TEST-Seite und der Bericht sagen BLOCKIERT AB 2.00 A unerreichbar: INA3221-Bereich 1.638 A
|
- Jeder Vergleich eines Stroms mit RUHESTROM, HALTESTROM und BLOCKIERT AB geschieht in ganzen mA, im Urteil wie im Bericht: ein Messwert von 0,050 A gegen eine Grenze von 0,05 A besteht, 0,051 A nicht.
- Am PD mini zählen die 1000 ms ab dem ersten Messwert über BLOCKIERT AB: ein Messwert 999 ms später lässt den Lauf laufen, einer 1000 ms später beendet ihn.
- Am INA3221 ist der Messwert das Mittel des Fensters, gleich wie hoch sein höchster Messwert ist, und die 1000 ms zählen ab dem Beginn des ersten Fensters über BLOCKIERT AB: 20 Fenster in Folge beenden den Lauf.
- Ein Netzteil im Konstantstrom hält seine Strombegrenzung; kein Messwert liegt also über einem BLOCKIERT AB bei oder über dieser Grenze. BLOCKIERT AB und der Startstrom des Netzteils stehen beide ab Werk auf 2,00 A. Die Konstantstrom-Regel beendet einen solchen Lauf: ein Servo am Anschlag, das die Grenze zieht, beendet ihn 1,0 bis 1,1 s, nachdem das Netzteil Konstantstrom meldet.
- Mit dem INA3221 an seinem 0,1-Ω-Shunt und BLOCKIERT AB auf dem Werkswert
2,00 A ist BLOCKIERT AB unerreichbar. Ein Servo am Anschlag, das weniger
zieht als die Grenze des Netzteils und mehr als 1,638 A, liest sich den
ganzen Lauf als 1,638 A; der Bericht hat dann die Zeile
Übersteuertund die Zeileunerreichbar. BLOCKIERT AB auf 1,60 A oder tiefer oder ein Shunt von 0,05 Ω legt BLOCKIERT AB in den Bereich.
Nicht gemessen: was der PD mini mit einem Servo am Anschlag meldet (Konstantstrom oder Überstrom, und ob er selbst abschaltet) und wie lange er nach einem Einschaltstrom Konstantstrom hält. Im aufgezeichneten Lauf des MS24 hielt er ihn zweimal 0,43 s lang während gesunder Bewegungen, bei 0,004 bis 0,342 A.
Ein magnetischer Winkelsensor AS5600 auf der Ausgangswelle des Servos, in SETUP, ANSCHLÜSSE unter AS5600 eingestellt (Standard AUS) und vom Koprozessor gelesen (Link, SENSE-Register 26 bis 31), fügt einem Lauf den Winkel des Horns hinzu. Die Ergebnisse aus dem Strom bleiben, wie sie sind, und der Winkel entscheidet nichts: er geht nicht ins Urteil ein und hat keine Grenze. Ohne AS5600 sind der Lauf, seine CSV und sein Bericht wie ohne das Bauteil. Der Coprozessor übernimmt das SENSE-Setup nur bei einer Bank in SAFE. Ein Lauf nutzt den Winkel nur, wenn der Coprozessor AS5600 als eingeschaltet hält: wird AS5600 bei einer Bank in ARMED eingeschaltet, hat der Lauf keine Winkelspalten, bis das Setup in SAFE übernommen ist.
Der Winkel ist der 12-Bit-Zählerstand des Sensors minus der Mitte (AS5600-Mitte oder ENC-MITTE auf der Seite PRÜFLING, die den aktuellen Zählerstand nimmt, wenn das Servo in Neutral steht), in Grad von -180 bis knapp unter 180. Der Sensor zählt in der Richtung hoch, auf die sein DIR-Pin gelegt ist; der Test nimmt an, dass der Winkel mit der Pulsbreite steigt, eine DIR-Beschaltung in die andere Richtung zeigt sich also als Winkelfehler vom Doppelten des Wegs. Die befohlenen Winkel sind die der Seite: -90 Grad bei PULS MIN, +90 bei PULS MAX, mit REVERSE und TRIM. Bei REVERSE an wird der gemessene Winkel genauso negiert, auf der Seite, im Bericht und in der CSV; ein Horn am befohlenen Ende zeigt dann keinen Fehler. Ein Servo, das über diese Spanne weniger als 90 Grad dreht, zeigt den Unterschied als Winkelfehler.
Der Zählerstand springt von 4095 auf 0, jeder Winkel ist also eine Position auf einer Umdrehung, und keine zwei werden als bloße Zahlen subtrahiert oder gemittelt. Der Abstand einer Bewegung von ihrem Start wird auf dem kürzeren Weg genommen, 0 bis 180 Grad: zwei Positionen 1 Schritt beiderseits der halben Umdrehung von der Mitte liegen 0,18 Grad auseinander, nicht 359,8. Die Endwinkel einer Stufe an einem Ende werden als Abstände vom ersten von ihnen gemittelt, und der Mittelwert wird auf den Kreis zurückgelegt; Enden bei +179,9 und -179,9 Grad ergeben also 180 (angezeigt als -180.00), nicht 0. Auch der Winkelfehler wird auf -180 bis +180 Grad gefaltet.
Der Sensor unterscheidet nur eine Umdrehung, und das begrenzt, was für ein Servo berichtet wird, das mehr als 180 Grad dreht:
| Fall | Berichtet |
|---|---|
| die Enden mehr als 180 Grad auseinander, jedes innerhalb von 180 Grad um die Mitte (-100 und +100) | beide Endwinkel und beide Fehler, wie sie sind; die beiden Enden werden nie voneinander subtrahiert |
| ein Ende mehr als 180 Grad von der Mitte (+200) | der Endwinkel um 360 Grad versetzt (-160); der Winkelfehler stimmt, solange der befohlene Winkel dieselbe Position nennt (+200), weil er gefaltet wird |
| eine Bewegung, die innerhalb von 2,0 Grad um eine ganze Umdrehung von ihrem Start endet | unbewegt |
| die Richtung einer Bewegung und die Umdrehungen eines Windenservos | nicht beurteilt, nicht gezählt |
Für jede Bewegung, vom Befehl bis zum nächsten Befehl (Konstanten in
servo_test.h):
| Begriff | Regel |
|---|---|
| bewegt | der Winkel verlässt SERVO_TEST_ENC_MOVED_DEG, 2,0 Grad, um den Winkel vor dem Befehl, auf dem kürzeren Weg; dieser Messwert muss jünger sein als SERVO_TEST_ENC_STALE_MS, 500 ms, sonst wird die Bewegung nicht beurteilt |
| beruhigt | nach der Bewegung ein Messwert, dessen Ruhezeit mindestens SERVO_TEST_ENC_HOLD_MS, 100 ms, beträgt und deren Ruhe nach dem Befehl begann. Der Winkel ist dann so lange innerhalb von SERVO_TEST_ENC_TOL_COUNTS, 12 Schritten oder 1,05 Grad, eines Ankers geblieben |
| Stellzeit (Winkel) | der Beginn dieser Ruhe minus der Befehl: der Moment, in dem der Winkel in die Toleranz um seinen Endwert kam |
| Endwinkel | der Winkel beim letzten Messwert vor dem nächsten Befehl, bei einer beruhigten Bewegung |
| Winkelfehler | der mittlere Endwinkel an einem Ende, auf dem Kreis ab dem ersten Endwinkel der Stufe dort gemittelt, minus der befohlene Winkel dieses Endes, auf -180 bis +180 Grad gefaltet |
| unbewegt | der Winkel verließ die 2,0 Grad nie |
| spät | er bewegte sich und war vor dem nächsten Befehl keine 100 ms ruhig |
Die Toleranz ist SENSE_ENC_STILL_TOL des Koprozessors; test_as5600 hält
beide gleich. Die Ruhezeit führt der Koprozessor in seinem 2-ms-Messintervall,
die Stellzeit hängt also nicht davon ab, wie oft das Panel die Page liest (alle
40 ms). Sie beginnt beim Befehl, wie der Test ihn ausgibt, und enthält den
Weg des Befehls zum Pin: die Render-Schleife, den Control Task, den Link und
den nächsten PWM-Frame, bis zu einem Poll-Intervall und einem Frame, nicht
gemessen. Sie endet, wenn der Winkel innerhalb von 1,05 Grad seines Endwerts
ist, und das ist früher als die letzte Bewegung des Arms um die Zeit, die das
dauert: bei einem Servo mit 0,09 Grad je Mikrosekunde und 1,2 µs je
Millisekunde etwa 10 ms. Berichtet werden nur gezählte Bewegungen; die
Bewegungen, die das Horn zuerst an jedes Ende stellen, nicht. Eine Bewegung
fällt aus den Zählungen des Winkels heraus, weder unbewegt noch spät, wenn der
Winkel eine Lücke hat, während sie offen ist, und sie sich noch nicht beruhigt
hatte (ein als ungültig markierter Messwert oder einer, der auf Messwerte
folgt, die nach einem Stillstand der Anzeige von 320 ms oder mehr auf dem Weg
zum Bildschirm verloren gingen, löscht den Winkelverlauf), wenn
sie keinen Startwinkel hat und wenn der Lauf aus einem anderen Grund als dem
Abschluss endet (STOP, Wechsel auf SAFE, Linkverlust, Versorgungsfehler, Blockade),
bevor sie sich beruhigt hat: ihr Fenster wurde abgeschnitten, und die
Ergebnisse aus dem Strom zählen so eine Bewegung auch nicht. Eine Bewegung,
die sich vor der Lücke oder dem Abbruch beruhigt hatte, behält ihr Ergebnis.
Der Winkel ist nur ein Messwert, solange der Sensor seinen Magneten erkennt
(STATUS MD, Link). Meldet er keinen, ist sein Zählerstand keine
Position: das Panel gibt ihn an nichts weiter, der Messwert erreicht den Lauf
als ungültig mit dem Grund, die Winkelspalte der CSV bleibt leer, und eine
offene, noch nicht beruhigte Bewegung fällt wie oben heraus. Der Bericht hat
dann die Zeile Kein Magnet: AS5600 meldete N-mal keinen. ...; N zählt, wie
oft der Sensor im Lauf aus einem anderen Zustand zu "kein Magnet" wechselte,
ein in diesem Zustand gestarteter Lauf eingeschlossen. Ein als zu schwach oder
zu stark gemeldeter Magnet (ML, MH) bei gesetztem MD lässt den Winkel in
Gebrauch: das Datenblatt nennt keine Wirkung auf den Winkel und spezifiziert
sein Rauschen nur für 30 bis 90 mT. Der Bericht zählt diese Messwerte: Feld: N Messwert(e) mit zu schwachem Magneten, M mit zu starkem. .... Keine der
beiden Zeilen steht im Bericht, wenn ihre Zahlen 0 sind.
Der Bericht bekommt eine Kopfzeile (Encoder:), eine Tabelle je Stufe -- den
mittleren Endwinkel und seinen Fehler an jedem Ende, die mittlere und die
längste Stellzeit, die gezählten, unbewegten und späten Bewegungen -- und die
befohlenen Winkel mit den Regeln oben. Die Tabelle des Stroms und seine Spalte
Stell. bleiben, die beiden Zeiten stehen also nebeneinander: am PD mini ist
die aus dem Strom eine Obergrenze und hinkt dem Horn um etwa 0,3 s nach, die aus dem Winkel
nicht. Die CSV bekommt zwei Spalten, angle (deg) in jeder Zeile, deren
Winkelmesswert jünger als 500 ms ist, und travel angle (ms) in der ersten
Zeile, die zur Zeit des Messwerts, der die Beruhigung fand, oder danach
genommen wurde. Jede Zeile nimmt den neuesten Winkelmesswert, der zur Zeit der
Zeile oder davor genommen wurde, aus den letzten 16 Messwerten (etwa 640 ms);
die Reihenfolge, in der das Panel Messwerte und Zeilen abarbeitet, schiebt
also keinen Winkel in die falsche Zeile. Der Bericht vermerkt, dass das Totband nicht
gemessen wird: es braucht Schritte, die kleiner sind als die Bewegungen von
Ende zu Ende, und der Test macht keine. Die Zeile GEMESSEN der Seite SERVO
zeigt den aktuellen Winkel, solange AS5600 an ist. Fällt der Link aus, wird
der Messwert gelöscht: die Zeile zeigt Striche, und ENC-MITTE setzt nichts,
bis mit dem Link wieder ein Messwert eintrifft. Dasselbe gilt, solange der
Sensor keinen Magneten meldet.
Jedes Ende schaltet den Ausgang aus, gibt das Servo zur Mitte frei und schreibt trotzdem den Bericht, als ABGEBROCHEN mit dem Grund markiert. Der Prüfstand bleibt ARMED, außer das Ende war DISARM, STOP oder das Verlassen der Seite, die auf SAFE schalten. Ein Schritt, den der Lauf gepostet und das Panel noch nicht gesendet hat, wenn der Prüfstand auf SAFE schaltet oder stoppt, wird nicht gesendet. Nach einem Lauf, den DISARM, STOP oder das Verlassen der Seite beendet hat, bleiben Horn und PULSBREITE auf der Stellung, die der Lauf zuletzt gefahren hat; nach einem Ende, das den Prüfstand in ARMED lässt, zeigen sie die Ruhelage, in die die Freigabe die Pins stellt, 1500 us bei STANDARD PWM, gleich welcher TRIM, und der nächste Drag oder die nächste Knopfdrehung beginnt dort. Ist ein Lauf vorbei, gehen die Sollwerte von SUPPLY auf ihre Werte vor dem Lauf zurück, gleich welche Seite oben ist. Das wartet, bis das OFF des Laufs gesendet ist, ein danach genommener Messwert zeigt, dass das Netzteil selbst den Ausgang aus meldet, kein ON unterwegs ist und AUSGANG EIN weder auf SERVO noch auf SUPPLY gehalten wird. Sollwerte, die nach dem Ende des Laufs geändert wurden, bleiben, wie sie sind.
| Grund im Bericht | Ursache |
|---|---|
STOP |
STOP in der Leiste |
Prüfstand SAFE |
DISARM oder alles andere, was den Prüfstand auf SAFE geschaltet hat |
Link verloren |
der Link zum Koprozessor ging während des Laufs verloren |
Seite SERVO verlassen |
eine andere Seite wurde geöffnet |
vom Bediener gestoppt |
TEST BEENDEN, ein Finger auf der Skala, ZENTRIEREN, SWEEP, FREIGEBEN, ein Tippen auf einen Sollwert, PROGRAMM. |
Servo-Optionen geändert |
Typ, Frame Rate, Impulse, Trim, Weg, Reverse oder TEMPO geändert |
Touch-Ereignisse verloren |
zwischen zwei Frames gingen Ereignisse verloren |
Netzteil antwortet nicht |
ein Messwert als nicht antwortend markiert |
Netzteil abgeschaltet |
der Ausgang ging durch eine Abschaltschwelle aus |
Netzteilausgang ging aus |
der Ausgang ging anders aus, AUSGANG AUS eingeschlossen |
seit 1.5 s kein Messwert |
SERVO_TEST_STALE_MS |
Netzteilausgang ging nicht an |
3000 ms nach dem ON nicht an |
Sollwert 3 s nicht bestätigt |
das Netzteil hat die Spannung einer Stufe nicht übernommen |
Stufe über Spannungsobergrenze |
eine Stufe über der geltenden Grenze: SPANNUNG MAX oder die Eingangsspannung des PD mini abzüglich 0,7 V |
1 s über BLOCKIERT AB |
SERVO_TEST_STALL_ABORT_MS |
1 s im Konstantstrom |
das Netzteil meldete SERVO_TEST_CC_ABORT_MS lang Konstantstrom |
0.2 s kein INA3221-Fenster |
ein Lauf am INA3221: SERVO_TEST_WIN_STALE_MS ohne ein Fenster mit Strom und Spannung. Ein Durchlauf 199 ms nach dem letzten Fenster lässt den Lauf laufen, einer bei 200 ms beendet ihn |
INA3221 setzte sich zurück |
ein Lauf am INA3221: der Reset-Zähler des Bausteins hat sich bewegt |
INA3221 antwortet nicht |
ein Lauf am INA3221: kein Lesen von SENSE in 200 ms zeigt den Baustein online und erkannt an einem Bus, der nicht hängt |
INA3221-Fenster ohne Strom |
ein Lauf am INA3221: das neueste Fenster enthält keine Strommesswerte, oder seine Nummer steht seit 200 ms |
INA3221-Einstellung fehlt |
ein Lauf am INA3221: der Koprozessor hält die Einstellung nicht mehr, oder SETUP hat den INA3221 aus |
INA3221 misst nicht mehr |
ein Lauf am INA3221: das Messgerät wechselte, und das Panel nannte die Bedingung nicht |
Die sechs Gründe eines Laufs am INA3221 sind die Bedingungen, unter denen der INA3221 das Messgerät der Schiene ist. Die Gründe des Netzteils gelten an beiden Messgeräten: sein Zustand wird in jedem Lauf gelesen.
Eine Stufe wird nie über der Grenze verlangt: ein Lauf, dessen Stufen außerhalb des Bereichs des Netzteils liegen, wird bei START abgelehnt, und eine Grenze, die während des Laufs sinkt, beendet ihn vor der Stufe darüber.
Über die Spannungsstufen (der Brown-out-Lauf wird berichtet, nicht beurteilt) NICHT BESTANDEN, wenn eines davon zutrifft:
- der höchste Ruhestrom liegt über RUHESTROM;
- der höchste Haltestrom liegt über HALTESTROM;
- die längste Stellzeit liegt über STELLZEIT, wo der Strommesser Stellzeiten misst (nicht der PD mini und nicht die Fenster des INA3221);
- ein Messwert nach EINSCHWINGEN liegt über BLOCKIERT AB;
- eine gezählte Bewegung war verspätet: Bewegung erkannt, keine Ankunft binnen des Fensters, 3000 ms plus der Verzögerung des Strommessers.
Sonst NICHT MESSBAR, wenn eine gezählte Bewegung unerkannt blieb oder der
Brown-out-Lauf bei seiner ersten Spannung keine Bewegung erkannte, und
BESTANDEN, wenn keines davon zutrifft. Ein Lauf nur aus dem Brown-out, der
nichts erkennt, lautet NICHT MESSBAR, nicht BESTANDEN. Seine Zeile
Ergebnis lautet dann keine Bewegung erkannt bei 5.00 V, der ersten Spannung des Brown-out, und Brown-out-Start unter den Grenzen nennt
dieselbe Spannung mit NICHT MESSBAR. NICHT MESSBAR sagt, dass der Strom nicht jede
Bewegung zeigen konnte: ein Servo, das sich unter der Schwelle bewegt, und
eines, das stillsteht, lesen sich gleich. Die Zeile Ergebnis nennt, bei
wie vielen der gezählten Bewegungen keine Bewegung erkannt wurde, und
Unerkannt deren Zahl. Ein Servo, das sich nicht bewegt, lautet NICHT
MESSBAR, nicht NICHT BESTANDEN. Kam keine Bewegung an, gibt es keine
längste Stellzeit, und die Zeile Stellzeit lautet längste -- und
nicht gemessen, keine Bewegung kam an, an jedem Strommesser.
Ein Wert 0 auf der GRENZEN-Seite wird nicht geprüft; BLOCKIERT AB immer. Ein Strom wird mit seinem Betrag und in ganzen mA verglichen: siehe Blockieren und Konstantstrom.
Ein Lauf nimmt die nächste Laufnummer auf der Karte, wie ein Prüfstand
in ARMED, und die eigene Task der SD-Karte schreibt seine Dateien:
BENCHnnn.CSV, eine Zeile je Messwert des Messgeräts des Laufs, und mit
BERICHT an (PRÜFLING-Seite) BENCHnnn.TXT. Ein Lauf ist eine CSV: das eigene
Lauflog des Prüfstands in ARMED schreibt keine Zeile, solange ein Lauf
läuft. Seine Zeitspalte springt über den Lauf, und seine Zeilen beginnen
wieder, wenn der Lauf endet. Eine Nummer, die nur ein
BENCHnnn.TXT trägt, dessen CSV am Computer gelöscht wurde, ist trotzdem
vergeben, damit kein Bericht überschrieben wird, und LÖSCHEN in der
Log-Ansicht löscht mit einem Lauf seinen Bericht. Ein Lauf, den die Karte nicht
annimmt, sagt das in der Leiste und im Ergebnis, OHNE DATEI. Zeilen, für
die die Warteschlange zur Karte keinen Platz hatte, zählt der Bericht. Vom
Start des Laufs, bis die Karte seine CSV und seinen Bericht geschlossen hat,
gilt der Lauf als offener Log-Lauf, die Zeit zwischen dem OPEN der Datei und
seiner Antwort eingeschlossen: WLAN und ein Update warten darauf, und die
Log-Ansicht listet und öffnet die Datei, die noch geschrieben wird, nicht.
Die CSV, mit Semikolon getrennt und Dezimalpunkt, wie jedes Log des Prüfstands:
| Spalte | Einheit | Bedeutung |
|---|---|---|
time (s) |
s | wann das Panel den Messwert hatte, ab Laufbeginn |
test |
STEP oder BROWN-OUT
|
|
step |
die Stufe, 1 bis n in der Reihenfolge des Laufs | |
phase |
SET, SETTLE, IDLE, MOVE oder HOLD
|
|
command (us) |
us | der befohlene Impuls |
position (us) |
us | die gemessene Stellung; leer, weil nichts sie misst |
set (V) |
V | die Spannung der Stufe |
voltage (V) |
V | die des Messgeräts: am Ausgang des Netzteils, oder die mittlere Busspannung von CH1 im Fenster |
limit (A) |
A | die Strombegrenzung |
current (A) |
A | der des Messgeräts, mit Vorzeichen: der Messwert des Netzteils, oder das Mittel des Fensters |
power (W) |
W | Spannung mal Strom |
mode |
der des Netzteils: CV, CC oder OFF. Am INA3221 der Modus des letzten Messwerts des Netzteils, leer vor dem ersten |
|
travel (ms) |
ms | in der Zeile einer Ankunft: die Stellzeit dieser Bewegung |
angle (deg) |
deg | nur mit AS5600 an: der Winkel des Horns ab der Mitte, aus dem neuesten Messwert, der zur Zeit der Zeile oder davor genommen wurde; leer, wenn dieser älter als 500 ms ist oder fehlt |
travel angle (ms) |
ms | nur mit AS5600 an: in der Zeile nach einer beruhigten Bewegung ihre Stellzeit aus dem Winkel |
meter |
INA3221, PDMINI oder MODEL, in jeder Zeile |
|
window |
am INA3221: die Nummer des Fensters, modulo 65536; ein Schritt von mehr als 1 sind Fenster, die den Lauf nie erreichten | |
current max (A) |
A | am INA3221: der höchste 1-ms-Messwert des Fensters |
current min (A) |
A | am INA3221: sein tiefster |
voltage min (V) |
V | am INA3221: der tiefste Messwert der Busspannung im Fenster |
clipped |
am INA3221: Messwerte des Fensters an einem Bereichsende, bei 255 gehalten |
Die letzten sechs Spalten folgen auf alles davor: Spalten 14 bis 19 ohne
AS5600, 16 bis 21 mit. Am PD mini und am Modell sind die fünf nach meter
leer. Eine Datei aus der Zeit vor diesen Spalten, 13 breit oder 15 mit
AS5600, liest die Log-Ansicht wie zuvor: ihr Parser nimmt die Spalten aus
der Kopfzeile.
Der Bericht steht in der Sprache, die beim Start seines Laufs gilt; seine
deutschen Wörter liegen in shared/ui/ui_text_de.c, die englischen in
shared/servo/servo_report.c (Sprache der Oberfläche).
Die CSV ist in jeder Sprache englisch. Ein englischer Bericht aus der
Wiedergabe eines Laufs eines MG90S am Prüfstand mit dem PD mini steht auf
der englischen Seite; auf Deutsch lauten seine Stufen:
Ergebnis: BESTANDEN
...
Soll V Ist V V min Ruhe Schw. Beweg. Spitze Halt mn Halt mx Stell. Längste Anz. Spät Unerk.
4.80 4.80 4.80 0.004 0.020 0.037 0.065 0.001 0.001 861 989 41 0 0
6.00 6.00 5.99 0.001 0.020 0.040 0.077 0.001 0.001 892 978 41 0 0
Dieselbe Wiedergabe eines 1102HB, das 0,015 bis 0,029 A hält und in
Bewegung bis 0,039 bis 0,044 A zieht, lautet NICHT MESSBAR - bei 25 von 46 gezählten Bewegungen keine Bewegung im Strom erkannt: seine Bewegungen zum
oberen Ende verlassen die 0,028 A des unteren Endes und überschreiten sie
nie um 0,020 A. Auf 0.13.0 lautete dasselbe Servo NICHT BESTANDEN, alle 34
gezählten Bewegungen verspätet. Ein abgebrochener Lauf zeigt Ergebnis: ABGEBROCHEN - <Grund>, eine abgeschnittene Stufe ist mit (verkürzt) markiert, eine nie
erreichte mit nicht gelaufen. Kann zerstören nennt das rote Schild, wenn
ein Heli-Typ oder eine Frame Rate über 60 Hz gilt.
Ein Lauf am INA3221 hat diese Zeilen anstelle derer des PD mini, hier vom modellierten Prüfstand der Host-Suite:
Log: die .CSV mit der Nummer dieser Datei, eine Zeile je Fenster des INA3221
Netzteil: PD mini
Strom: INA3221 CH1, Shunt 100.0 mOhm, Bereich 1.638 A
Spannung: INA3221 CH1, Lastseite des Shunts
Shunt: bis 0.164 V fallen am Bereichsende an ihm ab; der Sollwert wird dafür nicht angehoben
Messwerte: 20.0 /s Fenster vom INA3221 geschlossen, 20.0 /s erreichten den Test
Übersprungen: 0 Fenster des INA3221 erreichten den Test nie
Auflösung: ein Fenster alle 50 ms: eine Stellzeit ist um bis zu zwei Fenster und den Poll, der sie liest, zu lang
Verzögerung: etwa 50 ms von einer Stromänderung bis zum Messwert, der sie zeigt
Stellzeiten: eine Obergrenze, nicht gegen die Grenze geprüft
...
Position: nichts misst das Ruderhorn; jedes Ergebnis ist der Strom des INA3221 auf CH1.
Strom zwischen zwei 1-ms-Messwerten von CH1: ein Fenster enthält deren Mittel, Höchst- und Tiefstwert.
Drei Läufe von 0.13.0 am Prüfstand mit dem PD mini, von einem Tester: ein MG90S-Mikroservo, ein Digitalservo 1102HB
und ein Digitalservo MS24. Das MS24, in Bewegung 0,16 bis 0,18 A, bestand. MG90S
und 1102HB lauteten NICHT BESTANDEN, jede Bewegung verspätet, weil 0.13.0
0,10 A als Bewegung nahm; beide Servos bewegten sich. Die Host-Suite gibt
die CSVs von MG90S und 1102HB (test/host/fixtures/, gekürzt) gegen die
Engine wieder, dazu einen MS24-ähnlichen Fall, die Ströme des MG90S mal 3.
Die Host-Suite prüft die Engine gegen servo_sim und
supply_sim, die Seite SERVO, die sie führt, und die CSV, vom Parser der
Log-Ansicht zurückgelesen. Nicht gemessen: die Mittelung des PD mini und die
Verzögerung des Befehls bis zum Pin.
test_servo_test_win fährt den Test mit dem INA3221 als Messgerät auf dem Host: der modellierte INA3221 führt den Strom von servo_sim,
Zeitplan und Seiten des Koprozessors machen daraus Fenster, sense_link
nimmt jedes einmal und servo_source nennt das Messgerät, neben einem
Modell des PD mini, das alle 104 ms gelesen wird. Zwei Aufzeichnungen von
einem Prüfstand auf 0.14.0 werden wiedergegeben: die ganze CSV eines MS24 am
PD mini (servo-ms24-pdmini.csv) mit ihren zwei Abschnitten im
Konstantstrom, und das daneben geschriebene Prüfstandslog
(servo-ms24-windows.csv), das 1309 der 3817 Fenster enthält, die der
INA3221 schloss, und einen Lauf am INA3221 an seiner ersten Lücke von mehr als
200 ms beendet: auf Fenster 19804 folgt 20409, 30,25 s später. Der Lauf liest
50 Fenster und zählt die 5 Fensternummern, die vor dieser Lücke fehlen, als
ausgelassen. Nicht am Prüfstand gemessen: wie weit ein Fenster hinter dem Horn
liegt, ob das 50-ms-Mittel die Bewegungen eines Servos zeigt, die der PD mini
nicht zeigt, was CH1 mit einem Servo am Anschlag liest, und die
Konstantstrom-Regel an einem PD mini.
Die befohlene Stellung des SERVO-Bildschirms ändert sich nur, solange der Prüfstand ARMED ist, also solange ein Pin ihr folgt.
| Prüfstand | Befohlene Stellung |
|---|---|
| SAFE | die zuletzt gefahrene Stellung; Zifferblatt, Drehknopf, ZENTRIEREN und SWEEP werden abgelehnt, und nichts wird gesendet |
| beim ARM | die Ruhelage der Ruderfläche: die Mitte zwischen den Endpunkten des Kanals, ohne TRIM |
| ARMED | was Zifferblatt, Knopf, ZENTRIEREN, ein Sweep oder ein Lauf befehlen |
| TYP | Endpunkte | Wert beim ARM |
|---|---|---|
| STANDARD PWM | 1000 bis 2000 us | 1500 us |
| NARROW 760 | 660 bis 860 us | 760 us |
| WIDE | 800 bis 2200 us | 1500 us |
| HELI CYCLIC | 820 bis 2220 us | 1520 us |
Die Ruhelage ist outputs_role_rest() in shared/outputs/outputs.c, der
Wert, den der Koprozessor auf einem Kanal in ARMED ausgibt, den niemand
kommandiert, umgerechnet über den Bereich, den die Kommandos des Bildschirms
tragen. Dieser Bereich ist auf PULS CENTRE zentriert; ein PULS CENTRE abseits
der Mitte zwischen PULS MIN und MAX ist also der Wert beim ARM. TRIM
verschiebt befohlene Stellungen und nicht die Ruhelage: Mit TRIM +20 zeigt
das ARM 1500 us, und eine Stellung bei 0 deg ist 1520 us.
Ein Sweep endet beim Wechsel auf SAFE, und seine zuletzt gezeichnete Stellung bleibt auf dem Bildschirm; keine seiner Stellungen wird nach dem Wechsel auf SAFE gesendet. Die Bedienelemente im Einzelnen: Bildschirme.
Das Panel zentriert die Ruderflächen, bevor es auf ARMED schaltet, und der Bildschirm zeigt die Ruhelage, wenn der Prüfstand ARMED meldet; die Zeit zwischen beidem ist auf einem Prüfstand nicht gemessen.
SWEEP auf der Seite SERVO fährt das Servo die Kurve der TEST-Seite ab. TEMPO auf der rechten Karte begrenzt, wie schnell sich der Ausgang bewegen darf. Ist TEMPO langsamer als die schnellste Änderung, die die Kurve verlangt, bestimmt TEMPO die Bewegung statt der Kurve, und die Zeile von TEMPO lautet in der Warnfarbe TEMPO BEGRENZT DEN SWEEP (Bildschirme).
Die schnellste Änderung, mit f der Rate der TEST-Seite in Hz und A der Amplitude in Grad (BEREICH des Wegs zu beiden Seiten von PULS CENTRE):
| KURVE | Schnellste Änderung | Wo |
|---|---|---|
| Rechteck | ein Sprung | bei jedem Wechsel des Endes |
| Sinus | 2 pi f A | durch die Mitte |
| Dreieck | 4 f A | überall |
TEMPO unter 100 % erlaubt 3,6 Grad/s je Prozent: 36 Grad/s bei 10 %,
356,4 Grad/s bei 99 %. Bei 100 % wird der Befehl nicht verlangsamt, und
nichts wird begrenzt. Ein Rechteck ist bei jedem TEMPO unter 100 %
begrenzt. VERWEILEN zählt nicht: es fügt Zeit an den Enden hinzu, nicht zur
Bewegung. Die Zeile folgt den Einstellungen, vor dem Druck auf SWEEP und
während er läuft. sweep_slew_limited() in shared/servo/servo_sweep.c
entscheidet das, in den Befehlseinheiten, in denen der Koprozessor die Rampe
fährt.
| TEST-Seite | A | Schnellste Änderung | Verschwindet ab TEMPO |
|---|---|---|---|
| Sinus, 0,5 Hz, BEREICH 80 %, WEG +/-90 Grad | 72 Grad | 226 Grad/s | 63 % |
| Dreieck, 0,5 Hz, BEREICH 80 %, WEG +/-90 Grad | 72 Grad | 144 Grad/s | 40 % |
| Rechteck, beliebig | beliebig | ein Sprung | 100 % |
Die Zeile verschwindet, wenn TEMPO steigt oder TEMPO (die Rate) oder BEREICH auf der TEST-Seite sinkt.
Die Zeile vergleicht die Kurve nur mit TEMPO. Ein Servo, das langsamer ist als beide, begrenzt den Sweep ebenfalls; nichts auf dem Prüfstand misst das Ruderhorn, daher wird das nicht angezeigt.
PAUSE, der Sweep-Knopf während ein Sweep läuft, hält den Ausgang dort, wo er gerade steht, und der Knopf heißt PAUSIERT, gefüllt in der Warnfarbe. Ein Tippen auf PAUSIERT setzt den Sweep ab der Phase fort, an der er angehalten wurde, bei einem Koprozessor mit Protokoll 4.6; ein älterer startet die Kurve von vorn. Ein angehaltener Sweep ist der Moment, TEMPO zu erhöhen: die Pause bleibt, und das Fortsetzen läuft mit der neuen Rate.
Die Strommessung an der Servoschiene. Die Endlagensuche liest INA3221 CH1, verdrahtet und in SETUP ANSCHLÜSSE freigegeben, und sonst nichts. Der Abgleich braucht einen Sensor über das Paar der Ausgänge, der nicht bestückt ist. Der automatische Test liest den INA3221 oder den PD mini, oder läuft am Netzteilmodell des Panels. Das Programmieren von LEFT ANGLE und RIGHT ANGLE braucht den Programmierport (Servo-Programmierer).
Die Pulse selbst gibt es: der PWM-Treiber (Pulsweitenmodulation) des Koprozessors ist geschrieben, DShot und die Output-Treiber beschreibt ihn. Die Reihenfolge der Arbeiten steht in STATUS.md.