Organisation des registres Extension
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.
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 .
