Zum Artikel

Aufbau der Extension-Register

Geprüft 2026-11-01

Blockreferenz für Protokoll v9.0. Offsets beginnen am Anfang jedes Blocks; es handelt sich nicht um separate Legacy-Registeradressen. Lesen Sie jeden vollständigen Block in seiner genauen Länge. Siehe -Paketformat und -Startreihenfolge separat.

Erweiterungsregisterblöcke

Ein -Offset ist das Startbyte eines Feldes, das innerhalb seines Blocks von Null an zählt. Die folgenden Offsets sind dezimal; Selektoren verwenden die Hexadezimalschreibweise (0x...). Alle Schreibvorgänge verwenden die Anweisung 0x91; Lesevorgänge verwenden 0x90 mit der genauen Byteanzahl.

Selektor Blockieren Zugang Bytes
0x90 Fähigkeiten Lesen 8
0xA0 Konfiguration Lesen/schreiben 24
0xB8 Controller-Auswahl und Sitzungseinrichtung Schreiben 3
0xC1 Operatives Feedback Lesen 32
0xC2 Tuning-Feedback Lesen 54

Fähigkeiten – 0x90

Versatz Typ Wert / Bedeutung
0–3 4 Bytes ASCII ARMC
4 u8 Hauptversion: 9
5 u8 Nebenversion: 0
6 u8 Reserviert: 0
7 u8 Normales Controller-Aktualisierungsintervall: 1 ms

Die Protokollversion definiert die verfügbaren Blöcke und deren genaue Längen. Auswahl und Sitzungseinrichtung teilen sich einen schreibgeschützten Block, der unten dokumentiert ist.

Konfiguration – 0xA0

Versatz Typ Feld Einheiten/gültiger Bereich
0 u16 kp_q8 Verstärkung × 256 ; 0 – 65535
2 u16 kd_q8 Verstärkung × 256 ; 0 – 65535
4 u16 ki_q8 Verstärkung × 256 ; 0 – 65535
6 u16 integral_limit Stellwert; 0 – effort_limit
8 u16 effort_limit Stellwert; 1 – 1000
10 u16 velocity_limit Anzahl/s; 1 – 65535
12 u16 acceleration_limit Anzahl/s²; 1 – 30000
14 u8 velocity_filter_q8 Geschwindigkeitsfilter-Antwort; 1 – 255, höher reagiert schneller
15 u8 ramp_time_ms Beschleunigungsrampe; 1 – 255 ms
16 u16 velocity_ff.positive_gain_q8 Ausgabe/(Anzahl/s) × 256 ; 0 – 65535
18 u16 velocity_ff.negative_gain_q8 Ausgabe/(Anzahl/s) × 256 ; 0 – 65535
20 u16 velocity_ff.effort_limit Stellwert; 0 – Haupt-effort_limit
22 u16 gravity_slew Vergütungsänderung, Stellwertseinheiten/s; 1 – 10000

Verstärkungen werden als gewünschter Wert multipliziert mit 256 gesendet. Ihre Einheiten sind Ausgabe/Anzahl für P, Ausgabe/(Anzahl/s) für D und Ausgabe/(Anzahl·s) für I. Beispielsweise erzeugt P = 4.5 4.5-Ausgabeeinheiten pro Fehleranzahl und wird als 1152 gesendet.

Das Servo verfügt über eine aktive Konfiguration . Das Schreiben erfordert das Ausschalten des Motors und eine entschärfte Sitzung. Jeder Schreibvorgang ersetzt die gesamte Konfiguration, einschließlich der Feedforward-Einstellungen. Ungültige Einstellungen lehnen den gesamten Schreibvorgang ab, ohne dass sich etwas ändert. Lesen Sie 0xA0, um die akzeptierten Einstellungen zu überprüfen.

Geschwindigkeits-Feedforward-Verstärkungen sind nicht negativ. Eine Feedforward-Ausgangsgrenze von Null erfordert, dass beide Verstärkungen Null sind. In beiden Richtungen gilt die gleiche Feedforward-Ausgangsgrenze, die die Hauptausgangsgrenze nicht überschreiten darf.

Konfigurieren Sie nach einem Reset den Servo, bevor Sie die Motorleistung aktivieren. Behalten Sie gespeicherte Einstellungen und alternative Tuning-Werte auf dem Host bei; Ändern Sie die Verstärkung zwischen den Läufen mit unterstütztem Arm und ausgeschaltetem Motor.

Auswahl und Sitzungsaufbau – 0xB8

Versatz Typ Bedeutung
0 u8 Modus: 0 Legacy, 1 Erweiterung
1 u16 Sitzung: 0 für Legacy, 1–65535 für Erweiterung

Die genaue Nutzlastlänge beträgt 3 Bytes , wobei die Sitzung in Little-Endian-Reihenfolge erfolgt. Beispielsweise ist der Erweiterungsmodus mit der Sitzung 0x1234 01 34 12; Der Legacy-Modus ist 00 00 00. Ungültige Kombinationen lehnen den gesamten Schreibvorgang ab, ohne den Status zu ändern. Beide Modi erfordern das Ausschalten des Motors und ersetzen alle früheren Sitzungseinstellungen. Durch die Auswahl allein wird weder die Steuerung gestartet noch eine Halteposition eingenommen.

Das Legacy-Drehmoment-Aktivierungsregister 40 startet die vorbereitete Erweiterungssitzung, wenn es in 1 geschrieben wird. Es erfordert eine verfügbare Motorleistung, eine gültige Konfiguration, initialisierte Sensoren mit Messwerten, die nicht älter als 2 ms sind, keinen Fehler, der eine Abschaltung erfordert, und verwendbare gespeicherte Legacy-Positionsgrenzwerte. Die gemessene Position muss innerhalb dieser Grenzen liegen, wenn sie aktiviert sind. Diese Prüfungen erfolgen zum Zeitpunkt der Aktivierung, sodass Bewegungen oder Fehler zwischen Einrichtung und Aktivierung berücksichtigt werden.

Durch die Torque-Off-Funktion werden sowohl die Betriebskontrolle als auch ungenutzte Einstellungen aufgehoben. Sensorfehler, Schutzabschaltung, Positionsgrenzwert- oder Encoder-Offset-Änderungen, Kalibrierung und das Speichern dauerhafter Einstellungen führen ebenfalls dazu, dass die Sitzungseinrichtung ungültig wird. Lesen Sie das Feedback, um zu prüfen, ob die Kontrolle tatsächlich begonnen hat; Es gibt keinen separaten ARM-Befehl. Der frühere 0xBA-Selektor und die frühere Ein-Byte-Auswahlnutzlast werden abgelehnt.

Betriebsrückmeldung – 0xC1

Versatz Typ Feld / Einheiten
0 u32 Messzeit, ms seit dem Start; kehrt nach 4294967295 auf Null zurück
4 u16 Messnummer; kehrt nach 65535 auf Null zurück
6 u16 Sitzung
8 u16 Akzeptierte Zielsequenz
10 u16 Akzeptierte Schwerkraftsequenz
12 u16 Flaggen, unten
14 i32 Gemessene Position, Q8 zählt
18 i32 Gefilterte gemessene Geschwindigkeit, Q8-Zählungen/s
22 i16 Angewandte Leistung; positiv folgt steigenden Encoder-Zählungen
24 i16 Aktueller Sensorwert relativ zu seiner Grundlinie; nicht Ampere
26 u8 Versorgungsspannung, 0.1 V-Einheiten
27 u8 Validierte Temperatur, °C
28 u8 Legacy-Servofehler-/Statusflags
29 u8 Reserviert: Null
30 u16 Messalter zum Lesezeitpunkt, ms; Maximaler gemeldeter Wert 65535
Flag-Bit Bedeutung, wenn festgelegt
0 Die Probe ist frisch und für den aktuellen Armkontrollzustand verwendbar
1 Controller aktiv
2 Reserviert: Null
3 Motorleistung begrenzt
4 Armantrieb aktiviert
5 Sitzung durch Drehmomentfreigabe gestartet
6 Reserviert: Null
7 Ausgabe bereit
8 Ein Schwerkraftbefehl wurde empfangen
9 Reserviert: Null
10 Validierte Temperatur verfügbar
11 Reserviert: Null
12 Bewegungsziel aktiv
13 Reserviert: Null
14 Arm-Controller ausgewählt
15 Reserviert: Null

Jedes Flag besteht aus einem Bit: Bit 0 hat den Wert 1, Bit 1 hat den Wert 2, Bit 2 hat den Wert 4 und so weiter. Es können mehrere Flags gleichzeitig gesetzt werden. Ein aktiver Controller mit gelöschtem Bit 12 hält sein Ziel. Ein Clear-Motion-Bit allein bedeutet nicht, dass der Motor mit Strom versorgt oder bereit ist.

Feedback beschreibt eine aufgezeichnete Messung. Wenn sich der Status des Servos ändert, bevor der Host ihn liest, beschreiben einige Felder möglicherweise den früheren Status. Das Bit 0 wird gelöscht, wenn die Messung älter ist als 2 ms, der Controller nicht mehr ausgewählt, scharfgeschaltet, fahrbereit oder bereit ist oder seine Sitzungs-/Sequenznummern nicht mehr übereinstimmen. Überprüfen Sie Bit 0, Alter, Sitzung und akzeptierte Sequenz zusammen.

Positions- und Gesundheitswerte sind auch im Legacy-Modus und bei ausgeschaltetem Motor verfügbar. Nicht verfügbare Kontrollfelder sind Null. Die Probensequenz schreitet voran, wenn Messungen erfasst werden, nicht jedes Mal, wenn der Host sie liest. Es unterscheidet Samples, die denselben Millisekunden-Zeitstempel haben. Unerwartete große Temperaturänderungen werden über mehrere Messwerte hinweg überprüft, bevor sie hier angezeigt werden. siehe die Schutzbeschränkung unten.

Tuning-Feedback – 0xC2

Die Bytes 0 – 31 haben genau das Layout 0xC1. Die restlichen Bytes sind:

Versatz Typ Feld / Einheiten
32 i32 Referenzposition, Q8 zählt
36 i32 Referenzgeschwindigkeit, Q8 zählt/s
40 i16 Angeforderter Ausgang nach dem konfigurierten Grenzwert, vor dem Motorschutz
42 i16 P Beitrag, Stellwert
44 i16 D Beitrag, Stellwert
46 i16 Integraler Beitrag, Stellwert
48 i16 Derzeit angewendeter Schwerkraftausgleich, Stellwert
50 i16 Lokale Geschwindigkeitsvorsteuerung, Stellwert
52 u16 Kumulierte zusätzliche Controller-Verzögerung, ms; maximal 65535

Der Verzögerungszähler fügt die zusätzliche Zeit hinzu, wenn ein Controller-Update länger als die normalen 1 ms ( elapsed_ms − 1 ) dauert. Verlorene Nachrichten werden nicht gezählt. Die gemeldeten P- und D-Beiträge sind auf ± 32767 begrenzt, sodass die Addition der angezeigten Werte möglicherweise nicht die vollständige interne Berechnung reproduziert.

Das Servo sendet nur dann Rückmeldung, wenn es dazu aufgefordert wird. Verwenden Sie 0xC1 für die normale Überwachung und 0xC2, wenn für die Optimierung zusätzliche Werte erforderlich sind. Das Lesen von 0xC2 umfasst bereits den gesamten Inhalt von 0xC1, sodass das Lesen beider Dateien unnötigerweise zusätzlichen Datenverkehr verursacht. Separate Lesevorgänge können sich auf unterschiedliche Momente beziehen; Vergleichen Sie ihre Zeitstempel und Probennummern.

Interpretationsregeln

effort ist ein vorzeichenbehafteter PWM-Stellbefehl, kein Messwert in Ampere und kein gemessenes Drehmoment. currentAdcDelta ist ein relativer Stromsensorwert; erst eine separate Umrechnung liefert einen physikalischen Stromwert. Q8-Position und Q8-Geschwindigkeit haben unterschiedliche Einheiten. Die Division durch 256 entfernt den Festkommafaktor, wandelt aber keine Encoder-Zählschritte in Grad um. Gelenkwinkel benötigen eine physikalische Zuordnung.

Extension-Temperaturrückmeldungsprüfungen unterdrücken isolierte Sprünge. Der Motortemperaturschutz verwendet immer noch Rohwerte: Das Fehlen eines Sprungs in C1/C2 beweist nicht, dass er den Schutz nicht beeinträchtigen könnte.


Startseite der Dokumentation · Quellrevision: a995f77 . Extension 9.0 .