Ir ao artigo

Layout dos registradores Extension

Verificado 2026-11-01

Referência de bloco para protocolo v9.0. Os deslocamentos começam no início de cada bloco; eles não são endereços de registro legados separados. Leia cada bloco completo em seu comprimento exato. Consulte o formato de pacote e o pedido de inicialização separadamente.

Blocos de registro de extensão

Um deslocamento é o byte inicial de um campo, contando a partir de zero dentro de seu bloco. Os deslocamentos abaixo são decimais; seletores usam notação hexadecimal ( 0x... ). Todas as gravações usam a instrução 0x91; leituras usam 0x90 com a contagem exata de bytes.

Seletor Bloquear Acesso Bytes
0x90 Capacidades Leia 8
0xA0 Configuração Ler/escrever 24
0xB8 Seleção do controlador e configuração da sessão Escreva 3
0xC1 Feedback operacional Leia 32
0xC2 Feedback de ajuste Leia 54

Capacidades — 0x90

Deslocamento Tipo Valor/significado
0–3 Bytes 4 ASCII ARMC
4 u8 Versão principal: 9
5 u8 Versão secundária: 0
6 u8 Reservado: 0
7 u8 Intervalo normal de atualização do controlador: 1 ms

A versão do protocolo define os blocos disponíveis e seus comprimentos exatos. A seleção e a configuração da sessão compartilham um bloco somente gravação, documentado abaixo.

Configuração — 0xA0

Deslocamento Tipo Campo Unidades/intervalo válido
0 u16 kp_q8 Ganho × 256; 0 – 65535
2 u16 kd_q8 Ganho × 256; 0 – 65535
4 u16 ki_q8 Ganho × 256; 0 – 65535
6 u16 integral_limit Esforço; 0 – effort_limit
8 u16 effort_limit Esforço; 1 – 1000
10 u16 velocity_limit Contagens; 1 – 65535
12 u16 acceleration_limit Contagens/s²; 1 – 30000
14 u8 velocity_filter_q8 Resposta do filtro de velocidade; 1 – 255, maior responde mais rápido
15 u8 ramp_time_ms Rampa de aceleração; 1 – 255 ms
16 u16 velocity_ff.positive_gain_q8 Saída/(contagem/s) × 256 ; 0 – 65535
18 u16 velocity_ff.negative_gain_q8 Saída/(contagem/s) × 256 ; 0 – 65535
20 u16 velocity_ff.effort_limit Esforço; 0 –effort_limit principal
22 u16 gravity_slew Alteração de remuneração, unidades/s de esforço; 1 – 10000

Os ganhos são enviados como o valor desejado multiplicado por 256. Suas unidades são saída/contagem para P, saída/(contagem/s) para D e saída/(contagem·s) para I. Por exemplo, P = 4.5 produz unidades de saída 4.5 por contagem de erro e é enviado como 1152.

O servo possui uma configuração ativa . Escrevê-lo requer desligamento do motor e uma sessão desarmada. Cada gravação substitui toda a configuração, incluindo configurações de feedforward. Configurações inválidas rejeitam toda a gravação sem alterar nada. Leia 0xA0 para verificar as configurações que foram aceitas.

Os ganhos feedforward de velocidade não são negativos. Um limite de saída feedforward zero exige que ambos os ganhos sejam zero. O mesmo limite de saída feedforward se aplica em ambas as direções e não deve exceder o limite de saída principal.

Após um reset, configure o servo antes de habilitar a alimentação do motor. Mantenha as configurações salvas e os valores de ajuste alternativos no host; alterar os ganhos entre corridas com o braço apoiado e o motor desligado.

Seleção e configuração de sessão — 0xB8

Deslocamento Tipo Significado
0 u8 Modo: legado 0, extensão 1
1 u16 Sessão: 0 para legado, 1–65535 para extensão

O comprimento exato da carga útil é 3 bytes , com a sessão em ordem little-endian. Por exemplo, o modo de extensão com sessão 0x1234 é 01 34 12 ; o modo legado é 00 00 00 . Combinações inválidas rejeitam toda a gravação sem alterar o estado. Ambos os modos exigem o desligamento do motor e substituem qualquer configuração de sessão anterior. A seleção por si só não inicia o controle nem captura uma posição de retenção.

O registro legado de habilitação de torque 40 inicia a sessão de extensão preparada quando gravado em 1 . Ele requer saída de motor disponível, uma configuração válida, sensores inicializados com leituras de no máximo 2 ms antigas, nenhuma falha que exija desligamento e limites de posição legados salvos utilizáveis. A posição medida deve estar dentro desses limites quando eles estiverem habilitados. Essas verificações acontecem no momento da habilitação, portanto movimentos ou falhas entre a configuração e a habilitação são levados em consideração.

Torque-off cancela o controle de funcionamento e a configuração não utilizada. Falhas do sensor, desligamento da proteção, alterações no limite de posição ou deslocamento do encoder, calibração e salvamento de configurações permanentes também invalidam a configuração da sessão. Leia o feedback para verificar se o controle foi realmente iniciado; não há comando ARM separado. O antigo seletor 0xBA e a antiga carga útil de seleção de um byte são rejeitados.

Feedback operacional — 0xC1

Deslocamento Tipo Campo/unidades
0 u32 Tempo de medição, ms desde a inicialização; retorna a zero após 4294967295
4 u16 Número de medição; retorna a zero após 65535
6 u16 Sessão
8 u16 Sequência alvo aceita
10 u16 Sequência gravitacional aceita
12 u16 Bandeiras, abaixo
14 i32 Posição medida, Q8 conta
18 i32 Velocidade medida filtrada, contagens Q8/s
22 i16 Saída aplicada; positivo segue contagens crescentes de codificadores
24 i16 Leitura do sensor de corrente em relação à sua linha de base; não amperes
26 u8 Tensão de alimentação, unidades 0.1 V
27 u8 Temperatura validada, °C
28 u8 Sinalizadores de falha/status do servo legado
29 u8 Reservado: zero
30 u16 Idade da medição no momento da leitura, ms; valor máximo relatado 65535
Bit de bandeira Significado quando definido
0 A amostra é fresca e utilizável para o estado atual de controle do braço
1 Controlador ativo
2 Reservado: zero
3 Saída do motor limitada
4 Acionamento do braço ativado
5 Sessão iniciada por ativação de torque
6 Reservado: zero
7 Saída pronta
8 Um comando de gravidade foi recebido
9 Reservado: zero
10 Temperatura validada disponível
11 Reservado: zero
12 Alvo de movimento ativo
13 Reservado: zero
14 Controlador de braço selecionado
15 Reservado: zero

Cada sinalizador é um bit: o bit 0 tem o valor 1 , o bit 1 tem o valor 2 , o bit 2 tem o valor 4 e assim por diante. Vários sinalizadores podem ser definidos de uma só vez. Um controlador ativo com o bit 12 limpo está mantendo seu destino. Um bit de movimento claro por si só não significa que o motor esteja ligado ou pronto.

O feedback descreve uma medição registrada. Se o estado do servo mudar antes que o host o leia, alguns campos poderão descrever o estado anterior. O bit 0 é apagado quando a medição ultrapassa 2 ms antiga, o controlador não está mais selecionado, armado, em condução ou pronto, ou seus números de sessão/sequência não correspondem mais. Verifique o bit 0, idade, sessão e sequência aceita juntos.

As leituras de posição e integridade também estão disponíveis no modo legado e com o motor desligado. Os campos de controle indisponíveis são zero. A sequência de amostras avança quando as medições são adquiridas, e não sempre que o host as lê. Ele distingue amostras que compartilham o mesmo carimbo de data/hora em milissegundos. Grandes mudanças inesperadas de temperatura são verificadas em diversas leituras antes de aparecerem aqui; veja a limitação de proteção abaixo.

Feedback de ajuste — 0xC2

Os bytes 0 – 31 possuem exatamente o layout 0xC1. Os bytes restantes são:

Deslocamento Tipo Campo/unidades
32 i32 Posição de referência, contagens Q8
36 i32 Velocidade de referência, contagens Q8/s
40 i16 Saída solicitada após seu limite configurado, antes da proteção do motor
42 i16 Contribuição P, esforço
44 i16 D contribuição, esforço
46 i16 Contribuição integral, esforço
48 i16 Compensação de gravidade aplicada atualmente, esforço
50 i16 Feedforward de velocidade local, esforço
52 u16 Atraso extra acumulado do controlador, ms; máximo 65535

O contador de atraso adiciona o tempo extra sempre que uma atualização do controlador leva mais do que o 1 ms normal ( elapsed_ms − 1 ). Não conta mensagens perdidas. As contribuições P e D relatadas são limitadas a ± 32767 , portanto, a adição dos valores exibidos pode não reproduzir o cálculo interno completo.

O servo envia feedback somente quando solicitado. Use 0xC1 para monitoramento normal e 0xC2 quando o ajuste precisar de valores adicionais. A leitura de 0xC2 já inclui todos os 0xC1 , portanto, a leitura de ambos adiciona tráfego desnecessariamente. Leituras separadas podem referir-se a momentos diferentes; compare seus carimbos de data e hora e números de amostra.

Regras de interpretação

effort é um comando de saída PWM com sinal, não uma medida em ampères nem um torque medido. currentAdcDelta é uma leitura relativa do sensor de corrente; exige uma conversão separada para obter a corrente física. Posição e velocidade Q8 usam unidades diferentes. Dividir por 256 remove a escala de ponto fixo, mas não converte contagens em graus. Os ângulos das articulações exigem um mapeamento físico.

As verificações de feedback de temperatura Extension suprimem saltos isolados. A proteção da temperatura do motor ainda utiliza leituras brutas: a ausência de um salto em C1/C2 não prova que não possa afetar a proteção.


Início da documentação · Revisão de origem: a995f77 . Extension 9.0 .