Aller à l’article

Organisation des registres Extension

Vérifié 2026-11-01

Référence de bloc pour le protocole v9.0. Les décalages commencent au début de chaque bloc ; ce ne sont pas des adresses de registre héritées distinctes. Lisez chaque bloc complet dans sa longueur exacte. Voir le format de paquet et l’ordre de démarrage séparément.

Blocs de registre d'extension

Un décalage est l’octet de départ d’un champ, comptant à partir de zéro dans son bloc. Les décalages ci-dessous sont décimaux ; les sélecteurs utilisent la notation hexadécimale ( 0x... ). Toutes les écritures utilisent l’instruction 0x91 ; les lectures utilisent 0x90 avec le nombre exact d’octets.

Sélecteur Bloquer Accès Octets
0x90 Capacités Lire 8
0xA0 Configuration Lire/écrire 24
0xB8 Sélection du contrôleur et configuration de la session Écrire 3
0xC1 Retour d’expérience opérationnel Lire 32
0xC2 Commentaires de réglage Lire 54

Capacités — 0x90

Décalage Tapez Valeur/signification
0–3 4 octets ASCII ARMC
4 u8 Version majeure : 9
5 u8 Version mineure : 0
6 u8 Réservé : 0
7 u8 Intervalle normal de mise à jour du contrôleur : 1 ms

La version du protocole définit les blocs disponibles et leurs longueurs exactes. La sélection et la configuration de session partagent un bloc en écriture seule, documenté ci-dessous.

Configuration — 0xA0

Décalage Tapez Champ Unités / plage valide
0 u16 kp_q8 Gain × 256 ; 0 – 65535
2 u16 kd_q8 Gain × 256 ; 0 – 65535
4 u16 ki_q8 Gain × 256 ; 0 – 65535
6 u16 integral_limit Effort ; 0 – effort_limit
8 u16 effort_limit Effort ; 1 – 1000
10 u16 velocity_limit Comptes/s ; 1 – 65535
12 u16 acceleration_limit Comptes/s² ; 1 – 30000
14 u8 velocity_filter_q8 Réponse du filtre rapide ; 1 – 255, réponse supérieure plus rapide
15 u8 ramp_time_ms Rampe d’accélération ; 1 – 255 ms
16 u16 velocity_ff.positive_gain_q8 Sortie/(nombre/s) × 256 ; 0 – 65535
18 u16 velocity_ff.negative_gain_q8 Sortie/(nombre/s) × 256 ; 0 – 65535
20 u16 velocity_ff.effort_limit Effort ; 0 – principal effort_limit
22 u16 gravity_slew Modification de la rémunération, unités/s d’effort ; 1 – 10000

Les gains sont envoyés sous la forme de la valeur souhaitée multipliée par 256. Leurs unités sont sortie/compte pour P, sortie/(compte/s) pour D et sortie/(compte·s) pour I. Par exemple, P = 4.5 produit des unités de sortie 4.5 par nombre d’erreurs et est envoyé sous la forme 1152.

Le servo a une configuration active . L’écriture nécessite la mise hors tension du moteur et une session désarmée. Chaque écriture remplace l’intégralité de la configuration, y compris les paramètres de rétroaction. Les paramètres non valides rejettent l’intégralité de l’écriture sans rien changer. Lisez 0xA0 pour vérifier les paramètres acceptés.

Les gains de vitesse par anticipation ne sont pas négatifs. Une limite de sortie à anticipation nulle nécessite que les deux gains soient nuls. La même limite de sortie anticipée s’applique dans les deux sens et ne doit pas dépasser la limite de sortie principale.

Après une réinitialisation, configurez le servo avant d’activer l’alimentation du moteur. Conservez les paramètres enregistrés et les valeurs de réglage alternatives sur l’hôte ; modifiez les gains entre les courses avec le bras soutenu et le moteur hors tension.

Sélection et configuration de session — 0xB8

Décalage Tapez Signification
0 u8 Mode : héritage 0, extension 1
1 u16 Session : 0 pour l’héritage, 1–65535 pour l’extension

La longueur exacte de la charge utile est de 3 octets , avec la session dans l’ordre petit-boutiste. Par exemple, le mode d’extension avec la session 0x1234 est 01 34 12 ; le mode hérité est 00 00 00 . Les combinaisons invalides rejettent l’intégralité de l’écriture sans changer d’état. Les deux modes nécessitent la mise hors tension du moteur et remplacent toute configuration de session antérieure. La sélection à elle seule ne permet pas de démarrer le contrôle ou de capturer une position de maintien.

Le registre d’activation de couple existant 40 démarre la session d’extension préparée lors de l’écriture dans 1 . Il nécessite une sortie moteur disponible, une configuration valide, des capteurs initialisés avec des lectures datant de moins de 2 ms, aucun défaut nécessitant un arrêt et des limites de position héritées enregistrées et utilisables. La position mesurée doit être dans ces limites lorsqu’elles sont activées. Ces contrôles ont lieu au moment de l’activation, de sorte que les mouvements ou les défauts entre la configuration et l’activation sont pris en compte.

L’arrêt du couple annule à la fois le contrôle en cours et la configuration inutilisée. Les pannes de capteur, l’arrêt de la protection, les modifications de limite de position ou de décalage d’encodeur, l’étalonnage et l’enregistrement des paramètres permanents invalident également la configuration de la session. Lire les commentaires pour vérifier si le contrôle a réellement commencé ; il n’y a pas de commande ARM distincte. L’ancien sélecteur 0xBA et l’ancienne charge utile de sélection à un octet sont rejetés.

Retour d’information opérationnel — 0xC1

Décalage Tapez Champ / unités
0 u32 Temps de mesure, ms depuis le démarrage ; revient à zéro après 4294967295
4 u16 Numéro de mesure ; revient à zéro après 65535
6 u16 Session
8 u16 Séquence cible acceptée
10 u16 Séquence gravitationnelle acceptée
12 u16 Drapeaux, ci-dessous
14 i32 Position mesurée, Q8 compte
18 i32 Vitesse mesurée filtrée, Q8 comptes/s
22 i16 Sortie appliquée ; le positif suit l’augmentation du nombre d’encodeurs
24 i16 Lecture du capteur de courant par rapport à sa ligne de base ; pas des ampères
26 u8 Tension d’alimentation, unités 0.1 V
27 u8 Température validée, °C
28 u8 Indicateurs de défaut/état du servo hérité
29 u8 Réservé : zéro
30 u16 Âge de la mesure au moment de la lecture, ms ; valeur maximale signalée 65535
Mors de drapeau Signification une fois défini
0 L’échantillon est frais et utilisable pour l’état actuel du contrôle du bras
1 Contrôleur actif
2 Réservé : zéro
3 Puissance du moteur limitée
4 Entraînement du bras activé
5 Session démarrée par l’activation du couple
6 Réservé : zéro
7 Sortie prête
8 Une commande de gravité a été reçue
9 Réservé : zéro
10 Température validée disponible
11 Réservé : zéro
12 Cible de mouvement active
13 Réservé : zéro
14 Contrôleur d’armement sélectionné
15 Réservé : zéro

Chaque indicateur est constitué d’un bit : le bit 0 a la valeur 1 , le bit 1 a la valeur 2 , le bit 2 a la valeur 4 , et ainsi de suite. Plusieurs drapeaux peuvent être définis à la fois. Un contrôleur actif avec le bit 12 effacé conserve sa destination. Un mouvement clair ne signifie pas à lui seul que le moteur est alimenté ou prêt.

Les commentaires décrivent une mesure enregistrée. Si l’état du servo change avant que l’hôte ne le lise, certains champs peuvent décrire l’état antérieur. Le bit 0 est effacé lorsque la mesure dépasse 2 ms, que le contrôleur n’est plus sélectionné, armé, en marche ou prêt, ou que ses numéros de session/séquence ne correspondent plus. Vérifiez ensemble le bit 0 , l’âge, la session et la séquence acceptée.

Les relevés de position et d’état de santé sont également disponibles en mode hérité et avec le moteur hors tension. Les champs de contrôle indisponibles sont nuls. La séquence d’échantillons avance lorsque les mesures sont acquises, et non à chaque fois que l’hôte les lit. Il distingue les échantillons qui partagent le même horodatage en millisecondes. Les changements de température importants et inattendus sont vérifiés sur plusieurs lectures avant d’apparaître ici ; voir la limitation de protection ci-dessous.

Commentaires de réglage — 0xC2

Les octets 0 – 31 ont exactement la disposition 0xC1. Les octets restants sont :

Décalage Tapez Champ / unités
32 i32 Position de référence, Q8 compte
36 i32 Vitesse de référence, Q8 comptes/s
40 i16 Sortie demandée après sa limite configurée, avant la protection du moteur
42 i16 P contribution, effort
44 i16 D contribution, effort
46 i16 Contribution intégrale, effort
48 i16 Compensation gravitationnelle actuellement appliquée, effort
50 i16 Anticipation de vitesse locale, effort
52 u16 Délai supplémentaire accumulé du contrôleur, ms ; maximum 65535

Le compteur de retard ajoute le temps supplémentaire chaque fois qu’une mise à jour du contrôleur prend plus que la ms 1 normale ( elapsed_ms − 1 ). Cela ne compte pas les messages perdus. Les contributions P et D déclarées sont limitées à ± 32767 , donc l’ajout des valeurs affichées peut ne pas reproduire le calcul interne complet.

Le servo envoie des commentaires uniquement lorsque cela lui est demandé. Utilisez 0xC1 pour une surveillance normale et 0xC2 lorsque le réglage nécessite des valeurs supplémentaires. La lecture de 0xC2 inclut déjà la totalité de 0xC1 , donc la lecture des deux ajoute inutilement du trafic. Des lectures distinctes peuvent faire référence à différents moments ; comparer leurs horodatages et leurs numéros d’échantillon.

Règles d’interprétation

effort est une commande de sortie PWM signée, et non une mesure en ampères ou un couple mesuré. currentAdcDelta est une lecture relative du capteur de courant ; une conversion distincte est nécessaire pour obtenir un courant physique. La position et la vitesse Q8 ont des unités différentes. Diviser par 256 retire le facteur d’échelle du format à virgule fixe, mais ne convertit pas les pas du codeur en degrés. Les angles des articulations nécessitent une correspondance physique.

Les contrôles de retour de température Extension suppriment les sauts isolés. La protection de la température du moteur utilise toujours des lectures brutes : l’absence de saut en C1/C2 ne prouve pas que cela ne puisse pas affecter la protection.


Accueil de la documentation · Révision source : a995f77 . Extension 9.0 .