Distribución de los registros Extension
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.
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.
