Ir al artículo

Distribución de los registros Extension

Comprobado 2026-11-01

Referencia de bloque para el protocolo v9.0. Las compensaciones comienzan al principio de cada bloque; no son direcciones de registro heredadas separadas. Lea cada bloque completo en su longitud exacta. Consulte formato de paquete y orden de inicio por separado.

Bloques de registro de extensión

Un desplazamiento es el byte inicial de un campo, contando desde cero dentro de su bloque. Las compensaciones siguientes son decimales; Los selectores utilizan notación hexadecimal (0x...). Todas las escrituras utilizan la instrucción 0x91; las lecturas usan 0x90 con el recuento de bytes exacto.

Selector Bloquear Acceso bytes
0x90 Capacidades leer 8
0xA0 Configuración Leer/escribir 24
0xB8 Selección de controlador y configuración de sesión. escribir 3
0xC1 Comentarios operativos leer 32
0xC2 Comentarios de ajuste leer 54

Capacidades –0x90

compensación Tipo Valor / significado
0–3 4 bytes ASCIIARMC
4 u8 Versión principal: 9
5 u8 Versión menor: 0
6 u8 Reservado: 0
7 u8 Intervalo normal de actualización del controlador: 1 ms

La versión del protocolo define los bloques disponibles y sus longitudes exactas. La selección y la configuración de la sesión comparten un bloque de solo escritura, que se documenta a continuación.

Configuración —0xA0

compensación Tipo campo Unidades/rango válido
0 u16 kp_q8 Ganancia × 256; 0–65535
2 u16 kd_q8 Ganancia × 256; 0–65535
4 u16 ki_q8 Ganancia × 256; 0–65535
6 u16 integral_limit Esfuerzo; 0–effort_limit
8 u16 effort_limit Esfuerzo; 1–1000
10 u16 velocity_limit Cuentas/s; 1–65535
12 u16 acceleration_limit Cuentas/s²; 1–30000
14 u8 velocity_filter_q8 Respuesta del filtro de velocidad; 1–255, más alto responde más rápido
15 u8 ramp_time_ms Rampa de aceleración; 1–255 ms
16 u16 velocity_ff.positive_gain_q8 Salida/(cuenta/s) × 256; 0–65535
18 u16 velocity_ff.negative_gain_q8 Salida/(cuenta/s) × 256; 0–65535
20 u16 velocity_ff.effort_limit Esfuerzo; 0–principaleffort_limit
22 u16 gravity_slew Cambio de compensación, unidades/s de esfuerzo; 1–10000

las ganancias de control se envían como el valor deseado multiplicado por 256. Sus unidades son salida/recuento para P, salida/(recuento/s) para D y salida/(recuento·s) para I. Por ejemplo, P = 4,5 produce 4,5 unidades de salida por recuento de error y se envía como 1152.

El servo tiene una configuración activa. Escribirlo requiere apagado del motor y sesión desarmada. Cada escritura reemplaza toda la configuración, incluida la configuración de avance. Las configuraciones no válidas rechazan la escritura completa sin cambiar nada. Lea 0xA0 para verificar las configuraciones que fueron aceptadas.

Las ganancias de control de velocidad anticipada no son negativas. Un límite de salida anticipado cero requiere que ambas ganancias de control sean cero. El mismo límite de salida anticipada se aplica en ambas direcciones y no debe exceder el límite de salida principal.

Después de un reinicio, configure el servo antes de habilitar la alimentación del motor. Mantenga las configuraciones guardadas y los valores de ajuste alternativos en el host; Cambie las ganancias de control entre carreras con el brazo apoyado y el motor apagado.

Selección y configuración de sesión: 0xB8

compensación Tipo Significado
0 u8 Modo: 0 heredado, 1 extensión
1 u16 Sesión: 0 para herencia, 1–65535 para extensión

La longitud exacta de la carga útil es 3 bytes, con la sesión en orden little-endian. Por ejemplo, el modo de extensión con sesión 0x1234 es 01 34 12; el modo heredado es 00 00 00. Las combinaciones no válidas rechazan toda la escritura sin cambiar de estado. Ambos modos requieren que el motor se apague y reemplazan cualquier configuración de sesión anterior. La selección por sí sola no inicia el control ni captura una posición de espera.

El registro heredado de habilitación de torsión 40 inicia la sesión de extensión preparada cuando se escribe en 1. Requiere salida de motor disponible, una configuración válida, sensores inicializados con lecturas de no más de 2 ms de antigüedad, ninguna falla que requiera apagado y límites de posición heredados guardados utilizables. La posición medida debe estar dentro de esos límites cuando estén habilitados. Estas comprobaciones se realizan en el momento de la habilitación, por lo que se tienen en cuenta los movimientos o las fallas entre la configuración y la habilitación.

La desactivación del par cancela tanto el control en funcionamiento como la configuración no utilizada. Las fallas del sensor, el apagado de la protección, los cambios de límite de posición o compensación del codificador, la calibración y el guardado de configuraciones permanentes también invalidan la configuración de la sesión. Lea los comentarios para comprobar si el control realmente ha comenzado; no existe un comando ARM separado. Se rechazan el selector 0xBA anterior y la carga útil de selección de un byte anterior.

Comentarios operativos: 0xC1

compensación Tipo Campo / unidades
0 u32 Tiempo de medición, ms desde el inicio; vuelve a cero después de 4294967295
4 u16 Número de medida; vuelve a cero después de 65535
6 u16 Sesión
8 u16 Secuencia objetivo aceptada
10 u16 Secuencia de gravedad aceptada
12 u16 Banderas, abajo
14 i32 Posición medida, Q8 cuenta
18 i32 Velocidad medida filtrada, Q8 cuentas/s
22 i16 Salida aplicada; positivo sigue a recuentos crecientes de codificadores
24 i16 Lectura del sensor de corriente en relación con su línea de base; no amperios
26 u8 Tensión de alimentación, unidades de 0,1 V
27 u8 Temperatura validada, °C
28 u8 Indicadores de estado/fallo del servo heredado
29 u8 Reservado: cero
30 u16 Edad de medición en el momento de la lectura, ms; valor máximo reportado 65535
Bit de bandera Significado cuando se establece
0 La muestra es nueva y utilizable para el estado actual de control del brazo.
1 Controlador activo
2 Reservado: cero
3 Potencia del motor limitada
4 Unidad de brazo habilitada
5 Sesión iniciada por habilitación de torque
6 Reservado: cero
7 Salida lista
8 Se ha recibido un comando de gravedad.
9 Reservado: cero
10 Temperatura validada disponible
11 Reservado: cero
12 Objetivo de movimiento activo
13 Reservado: cero
14 Controlador de brazo seleccionado
15 Reservado: cero

Cada bandera es un bit: el bit 0 tiene el valor 1, el bit 1 tiene el valor 2, el bit 2 tiene el valor 4, y así sucesivamente. Se pueden configurar varias banderas a la vez. Un controlador activo con el bit 12 limpio mantiene su destino. Un bit de movimiento claro por sí solo no significa que el motor esté encendido o listo.

La retroalimentación describe una medición registrada. Si el estado del servo cambia antes de que el host lo lea, algunos campos pueden describir el estado anterior. El bit 0 se borra cuando la medición tiene más de 2 ms, el controlador ya no está seleccionado, armado, conduciendo o listo, o sus números de sesión/secuencia ya no coinciden. Verifique juntos el bit 0, la edad, la sesión y la secuencia aceptada.

Las lecturas de posición y salud también están disponibles en modo heredado y con el motor apagado. Los campos de control no disponibles son cero. La secuencia de muestra avanza cuando se adquieren las mediciones, no cada vez que el host las lee. Distingue muestras que comparten la misma marca de tiempo de milisegundos. Los grandes cambios de temperatura inesperados se verifican en varias lecturas antes de aparecer aquí; consulte la limitación de protección a continuación.

Comentarios de ajuste: 0xC2

Los bytes 0 a 31 tienen exactamente el diseño 0xC1. Los bytes restantes son:

compensación Tipo Campo / unidades
32 i32 Posición de referencia, Q8 cuenta
36 i32 Velocidad de referencia, Q8 cuentas/s
40 i16 Salida solicitada después de su límite configurado, antes de la protección del motor
42 i16 P contribución, esfuerzo
44 i16 D contribución, esfuerzo
46 i16 Aporte integral, esfuerzo.
48 i16 Compensación de gravedad aplicada actualmente, esfuerzo
50 i16 Avance de velocidad local, esfuerzo
52 u16 Retardo adicional acumulado del controlador, ms; máximo 65535

El contador de retraso agrega el tiempo adicional cada vez que una actualización del controlador demora más de 1 ms normal (elapsed_ms − 1). No cuenta mensajes perdidos. Las contribuciones P y D informadas están limitadas a ±32767, por lo que agregar los valores mostrados puede no reproducir el cálculo interno completo.

El servo envía retroalimentación solo cuando se le solicita. Utilice 0xC1 para el monitoreo normal y 0xC2 cuando el ajuste necesite valores adicionales. La lectura de 0xC2 ya incluye todo 0xC1, por lo que leer ambos agrega tráfico innecesariamente. Las lecturas separadas pueden referirse a momentos diferentes; compare sus marcas de tiempo y números de muestra.

Reglas de interpretación

effort es una orden de salida PWM con signo, no una medida en amperios ni un par medido. currentAdcDelta es una lectura relativa del sensor de corriente: requiere una conversión independiente para obtener corriente física. La posición y la velocidad Q8 tienen unidades distintas. Dividir entre 256 elimina la escala de punto fijo, pero no convierte cuentas en grados. Los ángulos articulares requieren una correspondencia física.

Las comprobaciones de retroalimentación de temperatura de extensión suprimen los saltos aislados. La protección de la temperatura del motor todavía utiliza lecturas sin procesar: la ausencia de un salto en C1/C2 no prueba que no pueda afectar la protección.


Inicio de la documentación · Revisión de la fuente: a995f77. Extensión 9.0.