Layout dos registradores Extension
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.
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 .
