#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass book \begin_preamble \usepackage[plainpages=false,pdfpagelabels,colorlinks=true,linkcolor=blue]{hyperref} \end_preamble \language frenchb \inputencoding default \fontscheme bookman \graphics default \float_placement !htbp \paperfontsize default \spacing single \papersize letterpaper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 1in \topmargin 1in \rightmargin 0.8in \bottommargin 0.8in \secnumdepth 1 \tocdepth 5 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Chapter \begin_inset LatexCommand \label{cha:Composants-internes} \end_inset Composants internes \layout Standard La plupart des composants ont leurs pages de manuel, style *nix. Pour afficher ces \begin_inset Quotes eld \end_inset man pages \begin_inset Quotes erd \end_inset pour les composants temps réel, taper dans un terminal \begin_inset Quotes eld \end_inset man 9 \emph on nomducomposant \emph default \begin_inset Quotes erd \end_inset . \layout Standard Le présent document se concentre sur les composants les plus complexes qui demandent des figures difficiles à reproduire dans une man page. \layout Section \begin_inset LatexCommand \label{sec:Stepgen} \end_inset Stepgen \begin_inset LatexCommand \index{stepgen} \end_inset \layout Standard Ce composant fournit un générateur logiciel d'impulsions de pas répondant aux commandes de position ou de vitesse. En mode position, il contient une boucle de position pré-réglée, de sorte que les réglages de PID ne sont pas nécessaires. En mode vitesse, il pilote un moteur à la vitesse commandée, tout en obéissant aux limites de vitesse et d'accélération. C'est un composant uniquement temps réel, dépendant de plusieurs facteurs comme la vitesse du CPU, etc, il est capable de fournir des fréquences de pas maximum comprisent entre 10kHz et 50kHz. La figure \begin_inset LatexCommand \ref{fig:Diagramme-bloc-stepgen} \end_inset montre trois schémas fonctionnels, chacun est un simple générateur d'impulsions de pas. Le premier diagramme est pour le type '0', (pas et direction). Le second est pour le type '1' (up/down, ou pseudo-PWM) et le troisième est pour les types 2 jusqu'à 14 (les différentes séquences de pas). Les deux premiers diagrammes montrent le mode de commande position et le troisième montre le mode vitesse. Le mode de commande et le type de pas, se réglent indépendamment et n'importe quelle combinaison peut être choisie. \layout Standard \begin_inset Float figure wide false collapsed false \layout Standard \align center \begin_inset Graphics filename stepgen-block-diag.eps width 7.5in height 8.5in keepAspectRatio clip \end_inset \layout Caption \begin_inset LatexCommand \label{fig:Diagramme-bloc-stepgen} \end_inset Diagramme bloc du générateur de pas (en mode position) \end_inset \layout Standard \begin_inset Float figure wide false collapsed false \layout Standard \align center \begin_inset Graphics filename freqgen-block-diag.eps width 7.5in height 8.5in keepAspectRatio clip \end_inset \layout Caption \begin_inset LatexCommand \label{fig:Diagramme-bloc-freqgen} \end_inset Diagramme bloc du générateur de pas (en mode vitesse) \end_inset \layout Subsection L'installer \layout LyX-Code emc2$ \series bold halcmd loadrt stepgen step_type= [ctrl_type=] \layout Standard \family typewriter \family default est une série d'entiers décimaux séparés par des virgules. Chaque chiffre provoquera le chargement d'un simple générateur d'impulsions de pas, la valeur de ce chiffre déterminera le type de pas. \family typewriter \family default est une série de lettres \begin_inset Quotes eld \end_inset \family typewriter \series bold p \family default \series default \begin_inset Quotes erd \end_inset ou \begin_inset Quotes eld \end_inset \family typewriter \series bold v \family default \series default \begin_inset Quotes erd \end_inset séparées par des virgules, qui spécifient le mode pas ou le mode vitesse. \family typewriter \series bold ctrl_type \family default \series default est optionnel, si il est omis, tous les générateurs de pas seront en mode position. Par exemple, la commande: \layout LyX-Code emc2# \series bold halcmd loadrt stepgen.o step_type=0,0,2 ctrl_type=p,p,v \layout Standard va installer trois générateurs de pas. Les deux premiers utilisent le type de pas '0' (pas et direction) et fonctionne nt en mode position. Le dernier utilise le type de pas '2' (quadrature) et fonctionne en mode vitesse. La valeur par défaut de \family typewriter \family default est \family typewriter \begin_inset Quotes eld \end_inset 0,0,0 \begin_inset Quotes erd \end_inset \family default qui va installer trois générateurs de type '0' (step/dir). Le nombre maximum de générateurs de pas est de 8 (comme définit par MAX_CHAN dans stepgen.c). Chaque générateur est indépendant, mais tous sont actualisés par la même fonction(s), au même instant. Dans les descriptions qui suivent, \family typewriter \family default est le nombre de générateurs spécifiques. La numérotation des générateurs commence à 0. \layout Subsection Le désinstaller \layout LyX-Code emc2$ \series bold halcmd unloadrt stepgen \layout Subsection Pins \layout Standard Chaque générateur d'impulsions de pas n'aura que certaines de ces pins, selon le type de pas et le mode de contrôle sélectionné. \layout Itemize \family typewriter \noun on (float) \noun default stepgen..position-cmd \family default -- Position désirée du moteur, en unités de longueur (mode position seulement). \layout Itemize \family typewriter \noun on (float) \noun default stepgen..velocity-cmd \family default -- Vitesse désirée du moteur, en unités de longueur par seconde (mode vitesse seulement). \layout Itemize \family typewriter \noun on (s32) \noun default stepgen..counts \family default -- Rétroaction de la position en unités de comptage, actualisée par la fonction \family typewriter capture_position() \family default . \layout Itemize \family typewriter \noun on (float) \noun default stepgen..position-fb \family default -- Rétroaction de la position en unités de longueur, actualisée par la fonction \family typewriter capture_position() \family default . \layout Itemize \family typewriter \noun on (bit) \noun default stepgen..step \family default -- Sortie des impulsions de pas (type de pas 0 seulement). \layout Itemize \family typewriter \noun on (bit) \noun default stepgen..dir \family default -- Sortie direction (type de pas 0 seulement). \layout Itemize \family typewriter \noun on (bit) \noun default stepgen..up \family default -- Sortie UP en pseudo-PWM (type de pas 1 seulement). \layout Itemize \family typewriter \noun on (bit) \noun default stepgen..down \family default -- Sortie DOWN en pseudo-PWM (type de pas 1 seulement). \layout Itemize \family typewriter \noun on (bit) \noun default stepgen..phase-A \family default -- Sortie phase A (séquences de pas 2 à 14 seulement). \layout Itemize \family typewriter \noun on (bit) \noun default stepgen..phase-B \family default -- Sortie phase B (séquences de pas 2 à 14 seulement). \layout Itemize \family typewriter \noun on (bit) \noun default stepgen..phase-C \family default -- Sortie phase C (séquences de pas 3 à 14 seulement). \layout Itemize \family typewriter \noun on (bit) \noun default stepgen..phase-D \family default -- Sortie phase D (séquences de pas 5 à 14 seulement). \layout Itemize \family typewriter \noun on (bit) \noun default stepgen..phase-E \family default -- Sortie phase E (séquences de pas 11 à 14 seulement). \layout Subsection Paramètres \layout Itemize \family typewriter \noun on (float) \noun default stepgen..position-scale \family default -- Pas par unité de longueur. Ce paramètre est utilisé pour les sorties et les rétroactions. \layout Itemize \family typewriter \noun on (float) \noun default stepgen..maxvel \family default -- Vitesse maximale, en unités de longueur par seconde. Si égal à 0.0, n'a aucun effet. \layout Itemize \family typewriter \noun on (float) \noun default stepgen..maxaccel \family default -- Valeur maximale d'accélération, en unités de longueur par seconde au carré. Si égal à 0.0, n'a aucun effet. \layout Itemize \family typewriter \noun on (float) \noun default stepgen..frequency \family default -- Fréquence des pas, en pas par seconde. \layout Itemize \family typewriter \noun on (float) \noun default stepgen..steplen \family default -- Durée de l'impulsion de pas (types de pas 0 et 1) ou durée minimum dans un état donné (séquences de pas 2 à 14), en nanosecondes. \layout Itemize \family typewriter \noun on (float) \noun default stepgen..stepspace \family default -- Espace minimum entre deux impulsions de pas (types de pas 0 et 1 seulement), en nanosecondes. \layout Itemize \family typewriter \noun on (float) \noun default stepgen..dirsetup \family default -- Durée minimale entre un changement de direction et le début de la prochaine impulsion de pas (type de pas 0 seulement), en nanosecondes. \layout Itemize \family typewriter \noun on (float) \noun default stepgen..dirhold \family default -- Durée minimale entre la fin d'une impulsion de pas et un changement de direction (type de pas 0 seulement), en nanosecondes. \layout Itemize \family typewriter \noun on (float) \noun default stepgen..dirdelay \family default -- Durée minimale entre un pas dans une direction et un pas dans la direction opposée (séquences de pas 1 à 14 seulement), en nanosecondes. \layout Itemize \family typewriter \noun on (s32) \noun default stepgen..rawcounts \family default -- Valeur de comptage brute (count) de la rétroaction, réactualisée par la fonction \family typewriter make_pulses() \family default . \layout Standard En mode position, les valeurs de maxvel et de maxaccel sont utilisées par la boucle de position interne pour éviter de générer des trains d'impulsions de pas que le moteur ne peut pas suivre. Lorsqu'elles sont réglées sur des valeurs appropriées pour le moteur, même un grand changement instantané dans la position commandée produira un mouvement trapézoïdal en douceur vers la nouvelle position. L'algorithme fonctionne en mesurant à la fois, l'erreur de position et l'erreur de vitesse, puis en calculant une accélération qui tende à réduire vers zéro, les deux en même temps. Pour plus de détails, y compris les contenus de la boîte \begin_inset Quotes eld \end_inset d'équation de contrôle \begin_inset Quotes erd \end_inset , consulter le code source. \layout Standard En mode vitesse, maxvel est une simple limite qui est appliquée à la vitesse commandée, maxaccel est utilisé pour créer une rampe avec la fréquence actuelle, si la vitesse commandée change brutalement. Comme dans le mode position, des valeurs appropriées de ces paramètres assurent que le moteur pourra suivre le train d'impulsions généré. \layout Subsection \begin_inset LatexCommand \label{sub:Stepgen-séquences-de-pas} \end_inset Séquences de pas \layout Standard Le générateur de pas supporte 15 différentes \begin_inset Quotes eld \end_inset séquences de pas \begin_inset Quotes erd \end_inset . Le type de pas 0 est le plus familier, c'est le standard pas et direction (step/dir). Quand stepgen est configuré pour le type 0, il y a quatre paramètres supplément aires qui déterminent le timing exact des signaux de pas et de direction. Voir la figure \begin_inset LatexCommand \ref{fig:StepDir-timing} \end_inset pour la signification de ces paramètres. Les paramètres sont en nanosecondes, mais ils doivent être arrondis à un entier, multiple de la période du thread qui appelle \family typewriter make_pulses() \family default . Par exemple, si \family typewriter make_pulses() \family default est appelée toutes les 16 \begin_inset Formula $µ$ \end_inset s et que \begin_inset Quotes eld \end_inset steplen \begin_inset Quotes erd \end_inset est à 20000, alors l'impulsion de pas aura une durée de 2 x 16 = 32 \begin_inset Formula $µ$ \end_inset s. La valeur par défaut de ces quatre paramètres est de 1ns, mais l'arrondi automatique prendra effet au premier lancement du code. Puisqu'un pas exige d'être haut pendant \family typewriter \begin_inset Quotes eld \end_inset steplen \begin_inset Quotes erd \end_inset \family default ns et bas pendant \family typewriter \begin_inset Quotes eld \end_inset stepspace \begin_inset Quotes erd \end_inset \family default ns, la fréquence maximale est 1.000.000.000 divisé par \family typewriter (steplen+stepspace) \family default . Si \family typewriter \begin_inset Quotes eld \end_inset maxfreq \begin_inset Quotes erd \end_inset \family default est réglé plus haut que cette limite, il sera abaissé automatiquement. Si \begin_inset Quotes eld \end_inset maxfreq \begin_inset Quotes erd \end_inset est à zéro, il restera à zéro, mais la fréquence de sortie sera toujours limitée. \layout Standard \begin_inset Float figure wide false collapsed false \layout Standard \align center \begin_inset Graphics filename stepgen-type0.eps width 7in height 4in keepAspectRatio \end_inset \layout Caption \begin_inset LatexCommand \label{fig:StepDir-timing} \end_inset Timing pas et direction \end_inset \layout Standard Le type de pas 1 a deux sorties, up et down. Les impulsions apparaissent sur l'une ou l'autre, selon la direction du déplacement. Chaque impulsion a une durée de \family typewriter \begin_inset Quotes eld \end_inset steplen \begin_inset Quotes erd \end_inset \family default ns et les impulsions sont séparées de \family typewriter \begin_inset Quotes eld \end_inset stepspace \begin_inset Quotes erd \end_inset \family default ns. La fréquence maximale est la même que pour le type 0. Si \family typewriter \begin_inset Quotes eld \end_inset maxfreq \begin_inset Quotes erd \end_inset \family default est réglé plus haut que cette limite il sera abaissé automatiquement. Si \begin_inset Quotes eld \end_inset maxfreq \begin_inset Quotes erd \end_inset est à zéro, il restera à zéro, mais la fréquence de sortie sera toujours limitée. \layout Standard Les séquences 2 jusqu'à 14 sont basées sur les états et ont entre deux et cinq sorties. Pour chaque pas, un compteur d''état est incrémenté ou décrémenté. Les figures \begin_inset LatexCommand \ref{fig:Trois-phases-quadrature} \end_inset , \begin_inset LatexCommand \ref{fig:Quatre-phases} \end_inset et \begin_inset LatexCommand \ref{fig:Cinq-phases} \end_inset montrent les différentes séquences des sorties en fonction de l'état du compteur. La fréquence maximale est 1.000.000.000 divisé par \family typewriter \begin_inset Quotes eld \end_inset steplen \family default \begin_inset Quotes erd \end_inset et comme dans les autres séquences, \family typewriter \begin_inset Quotes eld \end_inset maxfreq \begin_inset Quotes erd \end_inset \family default sera abaissé si il est au dessus de cette limite. \layout Standard \begin_inset Float figure wide false collapsed false \layout Standard \align center \begin_inset Graphics filename stepgen-type2-4.eps width 7.5in height 8.5in keepAspectRatio rotateAngle 90 \end_inset \layout Caption Séquences de pas à trois phases \begin_inset LatexCommand \label{fig:Trois-phases-quadrature} \end_inset \end_inset \layout Standard \begin_inset Float figure wide false collapsed false \layout Standard \align center \begin_inset Graphics filename stepgen-type5-10.eps width 7.5in height 8.5in keepAspectRatio rotateAngle 90 \end_inset \layout Caption \begin_inset LatexCommand \label{fig:Quatre-phases} \end_inset Séquences de pas à quatre phases \end_inset \layout Standard \begin_inset Float figure wide false collapsed false \layout Standard \align center \begin_inset Graphics filename stepgen-type11-14.eps width 7.5in height 8.5in keepAspectRatio \end_inset \layout Caption \begin_inset LatexCommand \label{fig:Cinq-phases} \end_inset Séquence de pas à cinq phases \end_inset \layout Subsection Fonctions \layout Standard Le composant exporte trois fonctions. Chaque fonction agit sur tous les générateurs d'impulsions de pas. Lancer différents générateurs dans différents threads n'est pas supporté. \layout Itemize \family typewriter \noun on (funct) \noun default stepgen.make-pulses \family default -- Fonction haute vitesse de génération et de comptage des impulsions (non flottant). \layout Itemize \family typewriter \noun on (funct) \noun default stepgen.update-freq \family default -- Fonction basse vitesse de conversion de position en vitesse, mise à l'échelle et traitement des limitations. \layout Itemize \family typewriter \noun on (funct) \noun default stepgen.capture-position \family default -- Fonction basse vitesse pour la rétroaction, met à jour les latches et les mesures de position. \layout Standard La fonction à grande vitesse \family typewriter \begin_inset Quotes eld \end_inset stepgen.make-pulses \begin_inset Quotes erd \end_inset \family default devrait être lancée dans un thread très rapide, entre 10 et 50us selon les capacités de l'ordinateur. C'est la période de ce thread qui détermine la fréquence maximale des pas, de \family typewriter steplen \family default , \family typewriter stepspace \family default , \family typewriter dirsetup \family default , \family typewriter dirhold \family default et \family typewriter dirdelay, tous sont arrondis \family default au multiple entier de la période du thread en nanosecondes. Les deux autres fonctions peuvent être appelées beaucoup plus lentement. \layout Standard \begin_inset ERT status Collapsed \layout Standard \backslash clearpage \end_inset \layout Section \begin_inset LatexCommand \label{sec:PWMgen} \end_inset PWMgen \begin_inset LatexCommand \index{pwmgen} \end_inset \layout Standard Ce composant fournit un générateur logiciel de PWM (modulation de largeur d'impulsions) et PDM (modulation de densité d'impulsions). C'est un composant temps réel uniquement, dépendant de plusieurs facteurs comme la vitesse du CPU, etc, Il est capable de générer des fréquences PWM de quelques centaines de Hertz en assez bonne résolution, à peut-être 10kHz avec une résolution limitée. \layout Subsection L'installer \layout LyX-Code emc2$ \series bold halcmd loadrt pwmgen output_type= \layout Standard \family typewriter \family default est une série d'entiers décimaux séparés par des virgules. Chaque chiffre provoquera le chargement d'un simple générateur de PWM, la valeur de ce chiffre determinera le type de sortie. Par exemple: \layout LyX-Code emc2$ \series bold halcmd loadrt pwmgen step_type=0,1,2 \layout Standard va installer trois générateurs de PWM. Le premier utilisera une sortie de type '0' (PWM seule), le suivant utilisera une sortie de type 1 (PWM et direction) et le troisième utilisera une sortie de type 2 (UP et DOWN). Il n'y a pas de valeur par défaut, si \family typewriter \family default n'est pas spécifié, aucun générateur de PWM ne sera installé. Le nombre maximum de générateurs de fréquences est de 8 (comme définit par MAX_CHAN dans pwmgen.c). Chaque générateur est indépendant, mais tous sont mis à jour par la même fonction(s), au même instant. Dans les descriptions qui suivent, \family typewriter \family default est le nombre de générateurs spécifiques. La numérotation des générateurs de PWM commence à 0. \layout Subsection Le désinstaller \layout LyX-Code emc2$ \series bold halcmd unloadrt pwmgen \layout Subsection Pins \layout Standard Chaque générateur de PWM aura les pins suivantes: \layout Itemize \family typewriter \noun on (float) \noun default pwmgen..value \family default -- Valeur commandée, en unités arbitraires. Sera mise à l'échelle par le paramètre d'échelle (voir ci-dessous). \layout Itemize \family typewriter \noun on (bit) \noun default pwmgen..enable \family default -- Active ou désactive les sorties du générateur de PWM. \layout Standard Chaque générateur de PWM aura également certaines de ces pins, selon le type de sortie choisi: \layout Itemize \family typewriter \noun on (bit) \noun default pwmgen..pwm \family default -- Sortie PWM (ou PDM), (types de sortie 0 et 1 seulement). \layout Itemize \family typewriter \noun on (bit) \noun default pwmgen..dir \family default -- Sortie direction (type de sortie 1 seulement). \layout Itemize \family typewriter \noun on (bit) \noun default pwmgen..up \family default -- Sortie PWM/PDM pour une valeur positive en entrée ( type de sortie 2 seulement). \layout Itemize \family typewriter \noun on (bit) \noun default pwmgen..down \family default -- Sortie PWM/PDM pour une valeur négative en entrée (type de sortie 2 seulement). \layout Subsection Paramètres \layout Itemize \family typewriter \noun on (float) \noun default pwmgen..scale \family default -- Facteur d'échelle pour convertir les valeurs en unités arbitraires, en coefficients de facteur cyclique. \layout Itemize \family typewriter \noun on (float) \noun default pwmgen..pwm-freq \family default -- Fréquence de PWM désirée, en Hz. Si égale à 0.0, la modulation sera PDM au lieu de PWM. Si elle est réglée plus haute que les limites internes, au prochain appel de la fonction \family typewriter update_freq() \family default elle sera ramenée aux limites internes. Si elle est différente de zéro et si \family typewriter le lissage \family default est faux, au prochain appel de la fonction \family typewriter update_freq() \family default elle sera réglée au plus proche entier multiple de la période de la fonction \family typewriter make_pulses() \family default . \layout Itemize \family typewriter \noun on (bit) \noun default pwmgen..dither-pwm \family default -- Si vrai, active le lissage pour affiner la fréquence PWM ou le rapport cyclique qui ne pourraient pas être obtenus avec une pure PWM. Si faux, la fréquence PWM et le rapport cyclique seront tous les deux arrondis aux valeurs pouvant être atteintes exactement. \layout Itemize \family typewriter \noun on (float) \noun default pwmgen..min-dc \family default -- Rapport cyclique minimum compris entre 0.0 et 1.0 (Le rapport cyclique sera à zéro quand il est désactivé, indépendamment de ce paramètre). \layout Itemize \family typewriter \noun on (float) \noun default pwmgen..max-dc \family default -- Rapport cyclique maximum compris entre 0.0 et 1.0. \layout Itemize \family typewriter \noun on (float) \noun default pwmgen..curr-dc \family default -- Rapport cyclique courant, après toutes les limitations et les arrondis (lecture seule). \layout Subsection Types de sortie \layout Standard Le générateur de PWM supporte trois \begin_inset Quotes eld \end_inset types de sortie \begin_inset Quotes erd \end_inset . Le type 0 a une seule pin de sortie. Seules, les commandes positives sont acceptées, les valeurs négatives sont traitées comme zéro (elle seront affectées par \family typewriter min-dc \family default si il est différent de zéro). Le type 1 a deux pins de sortie, une pour le signal PWM/PDM et une pour indiquer la direction. Le rapport cyclique d'une pin PWM est basé sur la valeur absolue de la commande, de sorte que les valeurs négatives sont acceptables. La pin de direction est fausse pour les commandes positives et vraie pour les commandes négatives. Finalement, le type 2 a également deux sorties, appelées \begin_inset Quotes eld \end_inset up \begin_inset Quotes erd \end_inset et \begin_inset Quotes eld \end_inset down \begin_inset Quotes erd \end_inset . Pour les commandes positives, le signal PWM apparaît sur la sortie up et la sortie down reste fausse. Pour les commandes négatives, le signal PWM apparaît sur la sortie down et la sortie up reste fausse. Les sorties de type 2 sont appropriées pour piloter la plupart des ponts en H. \layout Subsection Fonctions \layout Standard Le composant exporte deux fonctions. Chaque fonction agit sur tous les générateurs de PWM, lancer différents générateurs dans différents threads n'est pas supporté. \layout Itemize \family typewriter \noun on (funct) \noun default pwmgen.make-pulses \family default -- Fonction haute vitesse de génération de fréquences PWM (non flottant). \layout Itemize \family typewriter \noun on (funct) \noun default pwmgen.update \family default -- Fonction basse vitesse de mise à l'échelle, limitation des valeurs et traitement d'autres paramètres. \layout Standard La fonction haute vitesse \family typewriter \begin_inset Quotes eld \end_inset pwmgen.make-pulses \begin_inset Quotes erd \end_inset \family default devrait être lancée dans un thread très rapide, entre 10 et 50 \begin_inset Formula $µ$ \end_inset s selon les capacités de l'ordinateur. C'est la période de ce thread qui détermine la fréquence maximale de la porteuse PWM, ainsi que la résolution des signaux PWM ou PDM. L'autre fonction peut être appelée beaucoup plus lentement. \layout Standard \begin_inset ERT status Collapsed \layout Standard \backslash clearpage \end_inset \layout Section \begin_inset LatexCommand \label{sec:Codeur} \end_inset Codeur \begin_inset LatexCommand \index{encoder} \end_inset \layout Standard Ce composant fournit, en logiciel, le comptage des signaux provenant d'encodeurs en quadrature. Il s'agit d'un composant temps réel uniquement, il est dépendant de divers facteurs comme la vitesse du CPU, etc, il est capable de compter des signaux de fréquences comprises entre 10kHz à peut être 50kHz. La figure \begin_inset LatexCommand \ref{fig:Diagramme-bloc-du-codeur} \end_inset est le diagramme bloc d'un canal de comptage de codeur. \layout Standard \begin_inset Float figure wide false collapsed false \layout Standard \align center \begin_inset Graphics filename encoder-block-diag.eps width 7in height 6in keepAspectRatio \end_inset \layout Caption \begin_inset LatexCommand \label{fig:Diagramme-bloc-du-codeur} \end_inset Diagramme bloc du compteur de codeur \end_inset \layout Subsection L'installer \layout LyX-Code emc2$ \series bold halcmd loadrt encoder [num_chan=] \layout Standard \family typewriter \family default est le nombre de compteurs de codeur à installer. Si \family typewriter numchan \family default n'est pas spécifié, trois compteurs seront installés. Le nombre maximum de compteurs est de 8 (comme définit par MAX_CHAN dans encoder.c). Chaque compteur est indépendant, mais tous sont mis à jour par la même fonction(s) au même instant. Dans les descriptions qui suivent, \family typewriter \family default est le nombre de compteurs spécifiques. La numérotation des compteurs commence à 0. \layout Subsection Le désinstaller \layout LyX-Code emc2$ \series bold halcmd unloadrt encoder \layout Subsection Pins \layout Itemize \family typewriter \noun on (bit) \noun default encoder..phase-A \family default -- Signal de la phase A du codeur en quadrature. \layout Itemize \family typewriter \noun on (bit) \noun default encoder..phase-B \family default -- Signal de la phase B du codeur en quadrature. \layout Itemize \family typewriter \noun on (bit) \noun default encoder..phase-Z \family default -- Signal de la phase Z (impulsion d'ndex) du codeur en quadrature. \layout Itemize \family typewriter \noun on (bit) \noun default encoder..reset \family default -- Voir l'interface canonique des codeurs à la section \begin_inset LatexCommand \ref{sec:CanonEncoder} \end_inset . \layout Itemize \family typewriter \noun on (bit) \noun default encoder..velocity \family default -- Vitesse estimée du signal de quadrature. \layout Itemize \family typewriter \noun on (bit) \noun default encoder..index-enable \family default -- Voir l'interface canonique des codeurs. \layout Itemize \family typewriter \noun on (s32) \noun default encoder..count \family default -- Voir l'interface canonique des codeurs. \layout Itemize \family typewriter \noun on (float) \noun default encoder..position \family default -- Voir l'interface canonique des codeurs. \layout Subsection Paramètres \layout Itemize \family typewriter \noun on (s32) \noun default encoder..raw-count \family default -- Valeur de comptage brute, actualisée par la fonction \family typewriter update-counters() \family default . \layout Itemize \family typewriter ( \noun on bit \noun default ) encoder..x4-mode \family default -- Ajuste le comptage en mode 4x ou 1x. Le mode 1x est intéressant pour les manivelles de jog. \layout Itemize \family typewriter \noun on (float) \noun default encoder..position-scale \family default -- Voir l'interface canonique des codeurs à la section \begin_inset LatexCommand \ref{sec:CanonEncoder} \end_inset . \layout Subsection Fonctions \layout Standard Le composant exporte deux fonctions. Chaque fonction agit sur tous les compteurs de codeur, lancer différents compteurs de codeur dans différents threads n'est pas supporté. \layout Itemize \family typewriter \noun on (funct) \noun default encoder.update-counters \family default -- Fonction haute vitesse de comptage d'impulsions (non flottant). \layout Itemize \family typewriter \noun on (funct) \noun default encoder.capture-position \family default -- Fonction basse vitesse d'actualisation des latches et mise à l'échelle de la position. \layout Standard \begin_inset ERT status Collapsed \layout Standard \backslash clearpage \end_inset \layout Section \begin_inset LatexCommand \label{sec:PID} \end_inset PID \begin_inset LatexCommand \index{pid} \end_inset \layout Standard Ce composant fournit une boucle de contrôle Proportionnel/Intégrale/Dérivée. C'est un composant temps réel uniquement. Par souci de simplicité, cette discussion suppose que nous parlons de boucles de position, mais ce composant peut aussi être utilisé pour implémenter d'autres boucles de rétroaction telles que vitesse, hauteur de torche, température, etc. La figure \begin_inset LatexCommand \ref{fig:Diagramme-bloc-PID} \end_inset est le schéma fonctionnel d'une simple boucle PID. \layout Standard \begin_inset Float figure wide false collapsed false \layout Standard \align center \begin_inset Graphics filename pid-block-diag.eps width 8in height 10in keepAspectRatio rotateAngle 90 rotateOrigin center \end_inset \layout Caption \begin_inset LatexCommand \label{fig:Diagramme-bloc-PID} \end_inset Diagramme bloc d'une boucle PID \end_inset \layout Subsection L'installer \layout LyX-Code emc2$ \series bold halcmd loadrt pid [num_chan=] [debug=1] \layout Standard \family typewriter \family default est le nombre de boucles PID à installer. Si \family typewriter numchan \family default n'est pas spécifié, une seule boucle sera installée. Le nombre maximum de boucles est de 16 (comme définit par MAX_CHAN dans pid.c). Chaque boucle est complétement indépendante. Dans les descriptions qui suivent, \family typewriter \family default est le nombre de boucles spécifiques. La numérotation des boucle PID commence à 0. \layout Standard Si \family typewriter debug=1 \family default est spécifié, le composant exporte quelques paramètres destinés au déboguage et aux réglages. Par défaut, ces paramètres ne sont pas exportés, pour économiser la mémoire partagée et éviter d'encombrer la liste des paramètres. \layout Subsection Le désinstaller \layout LyX-Code emc2$ \series bold halcmd unloadrt pid \layout Subsection Pins \layout Standard Les trois principales pins sont: \layout Itemize \family typewriter \noun on (float) \noun default pid..command \family default -- La position désirée (consigne), telle que commandée par un autre composant système. \layout Itemize \family typewriter \noun on (float) \noun default pid..feedback \family default -- La position actuelle (mesure), telle que mesurée par un organe de rétroactio n comme un codeur de position. \layout Itemize \family typewriter \noun on (float) \noun default pid..output \family default -- Une commande de vitesse qui tend à aller de la position actuelle à la position désirée. \layout Standard Pour une boucle de position, 'command' et 'feedback' sont en unités de longueur. Pour un axe linéaire, cela pourrait être des pouces, mm, mètres, ou tout autre unité pertinente. De même pour un axe angulaire, ils pourraient être des degrés, radians, etc. Les unités sur la pin 'output' représentent l'écart nécessaire pour que la rétroaction coïncide avec la commande. Pour une boucle de position, 'output' est une vitesse exprimée en pouces/second e, mm/seconde, degrés/seconde, etc. Les unités de temps sont toujours des secondes et les unités de vitesses restent cohérentes avec les unités de longueur. Si la commande et la rétroaction sont en mètres, la sortie sera en mètres par seconde. \layout Standard Chaque boucle PID a deux autres pins qui sont utilisées pour surveiller ou contrôler le fonctionnement général du composant. \layout Itemize \family typewriter \noun on (float) \noun default pid..error \family default -- Egal à \family typewriter .command \family default moins \family typewriter .feedback \family default . (consigne - mesure) \layout Itemize \family typewriter \noun on (bit) \noun default pid..enable \family default -- Un bit qui active la boucle. Si \family typewriter .enable \family default est faux, tous les intégrateurs sont remis à zéro et les sorties sont forcées à zéro. Si \family typewriter .enable \family default est vrai, la boucle opère normalement. \layout Subsection Paramètres \layout Standard Le gain PID, les limites et autres caractèristiques 'accordables' de la boucle sont implémentés comme des paramètres. \layout Itemize \family typewriter \noun on (float) \noun default pid..Pgain \family default -- Gain de la composante proportionnelle \layout Itemize \family typewriter \noun on (float) \noun default pid..Igain \family default -- Gain de la composante intégrale \layout Itemize \family typewriter \noun on (float) \noun default pid..Dgain \family default -- Gain de la composante dérivée \layout Itemize \family typewriter \noun on (float) \noun default pid..bias \family default -- Constante du décalage de sortie \layout Itemize \family typewriter \noun on (float) \noun default pid..FF0 \family default -- Correcteur prédictif d'ordre zéro (feedforward) - sortie proportionnelle à la commande (position). \layout Itemize \family typewriter \noun on (float) \noun default pid..FF1 \family default -- Correcteur prédictif de premier ordre (feedforward) - sortie proportionnelle à la dérivée de la commande (vitesse). \layout Itemize \family typewriter \noun on (float) \noun default pid..FF2 \family default -- Correcteur prédictif de second ordre (feedforward) - sortie proportionnelle à la dérivée seconde de la commande (accélération) \begin_inset Foot collapsed true \layout Standard FF2 n'est actuellement pas implémenté, mais il pourrait l'être. Considérez cette note \begin_inset Quotes eld \end_inset FIXME \begin_inset Quotes erd \end_inset dans le code. \end_inset . \layout Itemize \family typewriter \noun on (float) \noun default pid..deadband \family default -- Définit la bande morte (tolérance) \layout Itemize \family typewriter \noun on (float) \noun default pid..maxerror \family default -- Limite d'erreur \layout Itemize \family typewriter \noun on (float) \noun default pid..maxerrorI \family default -- Limite d'erreur intégrale \layout Itemize \family typewriter \noun on (float) \noun default pid..maxerrorD \family default -- Limite d'erreur dérivée \layout Itemize \family typewriter \noun on (float) \noun default pid..maxcmdD \family default -- Limite de la commande dérivée \layout Itemize \family typewriter \noun on (float) \noun default pid..maxcmdDD \family default -- Limite de la commande dérivée seconde \layout Itemize \family typewriter \noun on (float) \noun default pid..maxoutput \family default -- Limite de la valeur de sortie \layout Standard Toutes les limites \family typewriter max???, \family default sont implémentées de sorte que si la valeur de ce paramètre est à zéro, il n'y a pas de limite. \layout Standard Si \family typewriter debug=1 \family default est spécifié quand le composant est installé, quatre paramètres supplémentaires seront exportés: \layout Itemize \family typewriter \noun on (float) \noun default pid..errorI \family default -- Intégrale de l'erreur. \layout Itemize \family typewriter \noun on (float) \noun default pid..errorD \family default -- Dérivée de l'erreur. \layout Itemize \family typewriter \noun on (float) \noun default pid..commandD \family default -- Dérivée de la commande. \layout Itemize \family typewriter \noun on (float) \noun default pid..commandDD \family default -- Dérivée seconde de la commande. \layout Subsection Fonctions \layout Standard Le composant exporte une fonction pour chaque boucle PID. Cette fonction exécute tous les calculs nécessaires à la boucle. Puisque chaque boucle a sa propre fonction, les différentes boucles peuvent être incluses dans les différents threads et exécutées à différents rythmes. \layout Itemize \family typewriter \noun on (funct) \noun default pid..do_pid_calcs \family default -- Exécute tous les calculs d'une seule boucle PID. \layout Standard Si vous voulez comprendre exactement l'algorithme utilisé pour calculer la sortie d'une boucle PID, référez vous à la figure \begin_inset LatexCommand \ref{fig:Diagramme-bloc-PID} \end_inset , les commentaires au début du source \family typewriter emc2/src/hal/components/pid.c \family default et bien sûr, au code lui même. Les calculs de boucle sont dans la fonction C \family typewriter calc_pid() \family default . \layout Standard \begin_inset ERT status Collapsed \layout Standard \backslash clearpage \end_inset \layout Section \begin_inset LatexCommand \label{sec:Codeur-simulé} \end_inset Codeur simulé \begin_inset LatexCommand \index{sim-encoder} \end_inset \layout Standard Le codeur simulé est exactement la même chose qu'un codeur. Il produit des impulsions en quadrature avec une impulsion d'index, à une vitesse contrôlée par une pin de HAL. Surtout utile pour les essais. \layout Subsection L'installer \layout LyX-Code emc2$ \series bold halcmd loadrt sim-encoder num_chan= \layout Standard \family typewriter \family default est le nombre de codeurs à simuler. Si aucun n'est spécifié, un seul codeur sera installé. Le nombre maximum de codeurs est de 8 (comme définit par MAX_CHAN dans sim_encoder.c). \layout Subsection Le désinstaller \layout LyX-Code emc2$ \series bold halcmd unloadrt sim-encoder \layout Subsection Pins \layout Itemize \family typewriter \noun on (float) \noun default sim-encoder..speed \family default -- La vitesse commandée pour l'arbre simulé. \layout Itemize \family typewriter \noun on (bit) \noun default sim-encoder..phase-A \family default -- Sortie en quadrature. \layout Itemize \family typewriter \noun on (bit) \noun default sim-encoder..phase-B \family default -- Sortie en quadrature. \layout Itemize \family typewriter \noun on (bit) \noun default sim-encoder..phase-Z \family default -- Sortie de l'impulsion d'index. \layout Standard Quand \family typewriter .speed \family default est positive, \family typewriter .phase-A \family default mène \family typewriter .phase-B \family default . \layout Subsection Paramètres \layout Itemize \shape smallcaps \noun on (u32) \family typewriter \shape default \noun default sim-encoder..ppr \family default -- Impulsions par tour d'arbre. \layout Itemize \shape smallcaps \noun on (float) \family typewriter \shape default \noun default sim-encoder..scale \family default -- Facteur d'échelle pour \family typewriter \series bold speed \family default \series default . Par défaut est de 1.0, ce qui signifie que \family typewriter \series bold speed \family default \series default est en tours par seconde. Passer l'échelle à 60 pour des tours par minute, la passer à 360 pour des degrés par seconde, à 6.283185 pour des radians par seconde, etc. \layout Standard Noter que les impulsions par tour ne sont pas identiques aux valeurs de comptage par tour (counts). Une impulsion est un cycle complet de quadrature. La plupart des codeurs comptent quatre fois pendant un cycle complet. \layout Subsection Fonctions \layout Standard Le composant exporte deux fonctions. Chaque fonction affecte tous les codeurs simulés. \layout Itemize \family typewriter \noun on (funct) \noun default sim-encoder.make-pulses \family default -- Fonction haute vitesse de génération d'impulsions en quadrature (non flottant). \layout Itemize \family typewriter \noun on (funct) \noun default sim-encoder.update-speed \family default -- Fonction basse vitesse de lecture de \family typewriter \series bold speed \family default \series default , de mise à l'échelle et d'activation de \family typewriter \series bold make-pulses \family default \series default . \layout Standard \begin_inset ERT status Collapsed \layout Standard \backslash clearpage \end_inset \layout Section \begin_inset LatexCommand \label{sec:Anti-rebond} \end_inset Anti-rebond \begin_inset LatexCommand \index{Anti-rebond} \end_inset \layout Standard L'anti-rebond est un composant temps réel capable de filtrer les rebonds créés par les contacts mécaniques. Il est également très utile dans d'autres applications, où des impulsions très courtes doivent être supprimées. \layout Subsection L'installer \layout LyX-Code emc2$ \series bold halcmd loadrt debounce cfg= \begin_inset Quotes erd \end_inset \begin_inset Quotes erd \end_inset \layout Standard \family typewriter \family default est une série d'entiers décimaux séparés par des espaces. Chaque chiffre installe un groupe de filtres anti-rebond identiques, le chiffre détermine le nombre de filtres dans le groupe. Par exemple: \layout LyX-Code emc2$ \series bold halcmd loadrt debounce cfg= \begin_inset Quotes erd \end_inset 1 4 2 \begin_inset Quotes erd \end_inset \layout Standard va installer trois groupes de filtres. Le groupe 0 contient un filtre, le groupe 1 en contient quatre et le groupe 2 en contient deux. La valeur par défaut de \family typewriter \family default est \family typewriter \begin_inset Quotes eld \end_inset 1 \begin_inset Quotes erd \end_inset \family default qui installe un seul groupe contenant un seul filtre. Le nombre maximum de groupes est de 8 (comme définit par MAX_GROUPS dans debounce.c). Le nombre maximum de filtres dans un groupe est limité seulement par l'espace de la mémoire partagée. Chaque groupe est complétement indépendant. Tous les filtres dans un même groupe sont identiques et ils sont tous mis à jour par la même fonction, au même instant. Dans les descriptions qui suivent, \family typewriter \family default est le numéro du groupe et \family typewriter \family default est le numéro du filtre dans le groupe. Le premier filtre est le filtre 0 dans le groupe 0. \layout Subsection Le désinstaller \layout LyX-Code emc2$ \series bold halcmd unloadrt debounce \layout Subsection Pins \layout Standard Chaque filtre individuel a deux pins. \layout Itemize \family typewriter \noun on (bit) \noun default debounce...in \family default -- Entrée du filtre \family typewriter \family default du groupe \family typewriter \family default . \layout Itemize \family typewriter \noun on (bit) \noun default debounce...out \family default -- Sortie du filtre \family typewriter \family default du groupe \family typewriter \family default . \layout Subsection Paramètres \layout Standard Chaque groupe de filtre a un paramètre \begin_inset Foot collapsed false \layout Standard Chaque filtre individuel a également une variable d'état interne. C'est un switch du compilateur qui peut exporter cette variable comme un paramètre. Ceci est prévu pour des essais et devrait juste être un gaspillage de mémoire partagée dans des circonstances normales. \end_inset . \layout Itemize \family typewriter \noun on (s32) \noun default debounce..delay \family default -- Délai de filtrage pour tous les filtres du groupe \family typewriter \family default . \layout Standard Le délai du filtre est dans l'unité de la période du thread. Le délai minimum est de zéro. La sortie d'un filtre avec un délai de zéro, suit exactement son entrée, il ne filtre rien. Plus le délai augmente, plus larges seront les impulsions rejetées. Si le délai est de 4, toutes les impulsions égales ou inférieures à quatre périodes du thread, seront rejetées. \layout Subsection Fonctions \layout Standard Chaque groupe de filtres exporte une fonction qui met à jour tous les filtres de ce groupe \begin_inset Quotes eld \end_inset simultanément \begin_inset Quotes erd \end_inset . Différents groupes de filtres peuvent être mis à jour dans différents threads et à différentes périodes. \layout Itemize \family typewriter \noun on (funct) \noun default debounce. \family default -- Met à jour tous les filtres du groupe \family typewriter \family default . \layout Section \begin_inset LatexCommand \label{sec:Siggen} \end_inset Siggen \begin_inset LatexCommand \index{siggen} \end_inset \layout Standard Siggen est un composant temps réel qui génère des signaux carrés, triangulaires et sinusoïdaux. Il est principalement utilisé pour les essais. \layout Subsection L'installer \layout LyX-Code emc2$ \series bold halcmd loadrt siggen [num_chan=] \layout LyX-Code \layout Standard \family typewriter \family default est le nombre de générateurs de signaux à installer. Si \family typewriter numchan \family default n'est pas spécifié, un seul générateur de signaux sera installé. Le nombre maximum de générateurs est de 16 (comme définit par MAX_CHAN dans siggen.c). Chaque générateur est complétement indépendant. Dans les descriptions qui suivent, \family typewriter \family default est le numéro d'un générateur spécifique. Les numéros de générateur commencent à 0. \layout Subsection Le désinstaller \layout LyX-Code emc2$ \series bold halcmd unloadrt siggen \layout Subsection Pins \layout Standard Chaque générateur a cinq pins de sortie. \layout Itemize \family typewriter \noun on (float) \noun default siggen..sine \family default -- Sortie de l'onde sinusoïdale. \layout Itemize \family typewriter \noun on (float) \noun default siggen..cosine \family default -- Sortie de l'onde cosinusoïdale. \layout Itemize \family typewriter \noun on (float) \noun default siggen..sawtooth \family default -- Sortie de l'onde en dents de scie. \layout Itemize \family typewriter \noun on (float) \noun default siggen..triangle \family default -- Sortie de l'onde triangulaire. \layout Itemize \family typewriter \noun on (float) \noun default siggen..square \family default -- Sortie de l'onde carrée. \layout Standard Les cinq sorties ont les mêmes fréquence, amplitude et offset. \layout Standard Trois pins de contrôle s'ajoutent aux pins de sortie: \layout Itemize \family typewriter \noun on (float) \noun default siggen..frequency \family default -- Réglage de la fréquence en Hertz, par défaut la valeur est de 1 Hz. \layout Itemize \family typewriter \noun on (float) \noun default siggen..amplitude \family default -- Réglage de l'amplitude de pic des signaux de sortie, par défaut, est à 1. \layout Itemize \family typewriter \noun on (float) \noun default siggen..offset \family default -- Réglage de la composante continue des signaux de sortie, par défaut, est à 0. \layout Standard Par exemple, si \family typewriter siggen.0.amplitude \family default est à 1.0 et \family typewriter siggen.0.offset \family default est à 0.0, les sorties oscilleront entre -1.0 et +1.0. Si \family typewriter siggen.0.amplitude \family default est à 2.5 et \family typewriter siggen.0.offset \family default est à 10.0, les sorties oscilleront entre 7.5 et 12.5. \layout Subsection Paramètres \layout Standard Aucun. \begin_inset Foot collapsed false \layout Standard Dans les versions antérieures à la 2.1, fréquence, amplitude et offset étaient des paramètres. Ils ont été modifiés en pins pour permettre le contrôle par d'autres composants. \end_inset \layout Subsection Fonctions \layout Itemize \family typewriter \noun on (funct) \noun default siggen..update \family default -- Calcule les nouvelles valeurs pour les cinq sorties. \the_end