1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
|
:lang: fr
:toc:
= Concepts importants pour l'intégrateur
[[cha:concepts-integrateur]] (((Concepts intégrateur)))
== Système pas à pas
=== Période de base
Période de base (BASE_PERIOD) est le _métronome_ de
l'ordinateur de LinuxCNC. footnote:[Cette section fait référence à
l'utilisation de _stepgen_ le générateur de pas intégré à LinuxCNC.
Certains dispositifs matériels ont leur propre générateur de pas
et n'utilisent pas celui incorporé à LinuxCNC. Dans ce cas se référer
au manuel du matériel concerné.] A chaque période le logiciel de
génération de pas calcule si c'est le moment pour une autre impulsion
de pas. Une période de base plus courte permet de produire plus
d'impulsions de pas par seconde, mais si elle est trop courte l'ordinateur
passera tout son temps à générer les impulsions et les autres services
seront ralentis voir bloqués.
La latence et les besoins des pilotes des moteurs pas à pas déterminent
la durée minimum de la période que nous pouvons utiliser.
La latence la plus défavorable peut ne se présenter que quelquefois par
minute ou même moins. La probabilité que cela se produise au même
moment qu'un changement de direction du moteur et faible. Donc
on peut obtenir des erreurs très rares et intermittentes qui
ruinent une production de temps en temps et il est impossible
d'intervenir pour régler le problème.
La façon la plus simple d'éviter ce problème est de choisir un
BASE_PERIOD qui est la somme des plus longues exigences de temps
de votre périphérique et le pire cas de latence de votre ordinateur.
Ceci n'est pas toujours le meilleur choix.
Par exemple si le pilote moteur a besoin d'un maintien du signal
de direction d'une durée de 20 µs est que la latence maximum est
de 11 µs, la période de base sera de 11+20=31 µs ce qui donne une fréquence
de génération de pas de 32258 pas par seconde dans un mode
et de 16129 pas par seconde dans un autre mode.
Le problème est qu'avec les exigences de 20us pour le maintien
du signal et les 11 µs de latence cela nous force à utiliser une
période défavorable de 31 µs. Mais le générateur de pas du
logiciel LinuxCNC a quelques paramètres qui nous laissent régler
les divers temps d'une période de différentes manières.
Par exemple, si _steplen_ footnote:[Steplen se réfère à un paramètre
qui ajuste la performance du générateur de pas incorporé à LinuxCNC,
_stepgen_, qui est un composant de HAL. Ce paramètre ajuste
la longueur de l'impulsion de pas. Continuez à lire, on expliquera
tous finalement.] est changé de 1 à 2, alors il y aura deux
périodes entre le commencement et la fin de l'impulsion de pas.
De même, si _dirhold_ footnote:[dirhold se réfère à un paramètre
qui adapte la longueur du maintien du signal de commande
de direction.] est changé de 1 à 3, il y aura au moins trois périodes
entre l'impulsion de pas et un changement d'état de la commande
de direction.
Si nous pouvons utilisez _dirhold_ pour répondre aux exigences des 20µs
de maintiens du signal de direction, le prochain délai à respecter est
la durée de 4.5 µs du signal de pas haut, additionnons les 11 µs de
latence au 4.5 µs de signal haut et nous obtenons une période minimum
de 15.5 µs.
Lorsque nous essayons la valeur de 15.5, nous trouvons que l'ordinateur
est lent, donc nous réglons sur 16 µs.
Si nous laissons _dirhold_ à 1 (par défaut) alors temps minimum entre
un pas et le changement de direction est de 16 µs moins les 11 µs
de latence ce qui nous donne 5µs. Ce qui n'est pas suffisant il nous
manque 15 µs. Puisque la période est 16 µs, nous avons besoin d'encore
une période. Dans ce cas nous changeons _dirhold_ de 1 à 2. Maintenant
le temps minimal entre la fin de l'impulsion de pas et le changement
du signal de direction et de 5+16=21 µs. Nous n'avons plus à
nous inquiéter d'une erreur de direction à cause de la latence.
Pour plus d'informations sur stepgen voir la section stepgen du manuel
de HAL.
=== Timing des pas
Sur certain pilote moteur le rapport entre la durée des espaces et
la durée des impulsions n'est pas égal, dans ce cas
le point (le moment) du pas est important. Si le pas se déclenche
sur le front descendant alors, la broche de sortie doit être inversée.
== Systèmes à servomoteurs
=== Opération de base
Les systèmes à servomoteurs sont capables de vitesses plus élevées pour
une précision équivalente au moteur pas-à-pas, mais ils sont plus coûteux
et complexes. Contrairement aux systèmes pas à pas, les servo-systèmes
nécessitent un dispositif de rétroaction pour se positionner.
Ils ne fonctionnent pas immédiatement sorti de la boite et
ils doivent être calibrés pour fonctionner contrairement aux moteurs
pas à pas.
Cette différence s'explique par le mode de régulation différent
des deux systèmes. Les servosystèmes sont régulés en _boucle fermée_
et le moteur pas à pas en _boucle ouverte_.
Que signifie _boucle fermée_ ? Regardons un schéma simplifié et
la façon dont un système de servomoteur fonctionne.
.Boucle fermée
image::images/servo-feedback_fr.png[]
Ce diagramme montre que le signal de consigne (de commande) et le signal
de retour pilotent l'amplificateur sommateur, ensuite celui-ci pilote
l'amplificateur de puissance, qui pilote le moteur, qui actionne
la charge et le dispositif de retour d'information qui fournis
le signal de retour. Cela se perçoit comme une boucle fermée où
A contrôle B, B contrôle C, C contrôle D et D contrôle A.
Si vous n'avez pas travaillé avec des systèmes à servomoteurs auparavant,
cela sera sans aucun doute étrange au premier abord, surtout
par rapport aux plus normal des circuits électroniques, où le bon
déroulement des entrées vers les sorties est de ne jamais revenir
en arrière.footnote:[Si cela peut aider, l'équivalent le plus proche
dans le monde numérique ce sont les machines d'état,
machines séquentielles où l'état des sorties à ce moment dépend
de l'état que les entrées et sorties avaient avant. Si cela n'aide
pas, alors passons.]
Si tout contrôle tout le reste comment cela peut-il fonctionner, qui
en a la charge ? La réponse est que LinuxCNC peut contrôler ce système,
mais il doit le faire en choisissant une des différentes méthodes
de contrôle.
La méthode de contrôle qu'utilise LinuxCNC, est l'une des plus simples
et la meilleure appelée PID.
PID est l'acronyme de **P**roportionnelle, **I**ntégrale et **D**érivée.
La valeur proportionnelle détermine la réaction à l'erreur actuelle,
la valeur intégrale détermine la réaction basée sur la somme d'erreurs
récentes et la valeur dérivée détermine la réaction basée sur
la vitesse de variation de l'erreur. Ce sont trois techniques communes
de mathématique qui sont appliquées pour fournir un processus de suivi
d'une consigne. Dans le cas de LinuxCNC le processus que nous
voulons contrôler est l'actuelle position de l'axe et le point de
consigne qui est la position commandée l'axe.
.Boucle PID
image::images/pid-feedback_fr.png[]
En ajustant trois composantes (proportionnelle, intégrale et dérivée)
dans l'algorithme du contrôleur PID, nous pouvons concevoir
une régulation qui s'adapte aux exigences de processus spécifiques.
La réponse du contrôleur peut être décrite en trois termes
de réactivité : une erreur, de tolérance, au dépassement du point
de consigne et au taux d'oscillation du système.
=== Terme proportionnel
Le terme proportionnel appelé plus souvent gain proportionnel
applique un changement à la sortie qui est proportionnelle a la valeur
d'erreur courante. Un gain élevé provoque un grand changement à
la sortie pour un petit changement de l'erreur. Si le gain est
trop haut, le système peut devenir instable. Au contraire,
un gain trop faible aboutit à une faible réponse de la sortie
en réaction à une grande erreur d'entrée. Si le gain proportionnel
est trop bas, il peut être trop faible pour répondre aux perturbations
du système.
En l'absence de perturbation, un contrôle proportionnel pur ne
se positionnera pas à sa valeur cible, mais conservera un état
d'erreur statique qui est une fonction du gain proportionnel et
du gain du processus. Malgré la compensation de l'état stationnaire,
tant la théorie des systèmes asservis que la pratique industrielle
indiquent que c'est le terme proportionnel qui devrait contribuer
à la plus grande partie du changement de la sortie.
=== Terme intégral
La contribution du terme intégral est proportionnelle à l'amplitude
de l'erreur et à sa durée. La somme des erreurs instantanées au fil
du temps (intégration) donne la compensation accumulée qui devrait
avoir été corrigée précédemment. L'intégration de l'erreur est alors
multipliée par le gain d'intégral et ajoutée à la sortie du contrôleur.
Le terme intégral lorsqu'il est ajouté augmente le mouvement
du processus vers la consigne, il élimine l'erreur de statisme qui
se produit avec un régulateur proportionnel seul. Cependant, puisque
le terme intégral doit répondre aux erreurs accumulées par le passé,
il peut causer un dépassement de la valeur de consigne actuelle
(dépasser le point de consigne et puis créer un écart dans l'autre sens).
=== Terme dérivé
Le taux de variation de l'erreur du processus est calculé en
déterminant la pente de l'erreur au cours du temps (c'est-à-dire
sa dérivée première en relation avec le temps) et en multipliant ce
taux de changement par le gain de dérivé.
Le terme dérivé ralentit le taux de variation de la sortie
du régulateur, cet effet est plus visible à proximité du point
de consigne du contrôleur.
Par conséquent, le contrôle dérivé est utilisé pour réduire l'ampleur du
dépassement que produit la composante intégrale et pour améliorer la stabilité
de la combinaison contrôleur processus.
=== Réglage de la boucle
Si les paramètres du contrôleur PID (les gains des termes
proportionnel, intégral et dérivé) sont mal choisis,
l'entrée du processus contrôlé peut être instable, c'est-à-dire
sa sortie diverge, avec ou sans oscillation et, est limitée seulement
par la saturation ou la rupture mécanique. Le réglage fin d'une boucle
de contrôle consiste en l'ajustement de ses paramètres de contrôle
(gain proportionnel, gain intégral, gain dérivé) aux valeurs optimums
pour la réponse désirée.
=== Réglage manuel
Une méthode de réglage simple consiste à régler les valeurs *I* et *D*
à zéro. Augmentons la valeur de *P* jusqu'à ce que la sortie oscille,
*P* devrait être paramétré approximativement à la moitié de cette valeur
pour diminuer d'un quart l'amplitude de ce type de réponse. Augmentons
sa valeur pour que n'importe quelle compensation soit correcte dans un
temps raisonnable pour le processus. Cependant, une valeur trop élevée
apporte de l'instabilité. Ensuite, augmentons la valeur de *D* pour que
la réponse soit suffisamment rapide pour atteindre sa référence après
une perturbation de charge. Cependant, une valeur trop grande de *D*
provoquera une réponse excessive et un dépassement.
Un réglage de boucle PID rapide a un dépassement léger pour atteindre
le point de consigne plus rapidement, cependant, certains systèmes ne
peuvent accepter de dépassement, dans ce cas, une boucle fermée
sur-amortie est nécessaire, cela requière une valeur *P*
significativement plus basse que celle provoquant l'oscillation.
== RTAI
La _Real Time Application Interface_ (RTAI) Interface d'application
temps réel est utilisée pour fournir la meilleure performance temps réel.
Le noyau patché RTAI permet d'écrire des applications avec des
contraintes temporelles strictes. RTAI donne la possibilité
d'avoir des logiciels comme ceux de génération de pas qui ont besoin
d'un timing précis.
=== ACPI
L'Advanced Configuration and Power Interface (ACPI) a de nombreuses
et différentes fonctions, dont la plupart interfèrent avec les
performances du système temps réel. (Pour par exemple: la gestion de
l'énergie, la réduction de puissance du processeur, la variation de
fréquence du CPU, etc.)
Le noyau LinuxCNC (et probablement tous les noyaux RTAI-patché) ont les
fonctions ACPI désactivées. ACPI prend également soin de mettre hors
tension le système après qu'un arrêt système a été commandé, et
c'est pourquoi vous pourriez avoir besoin de presser sur le bouton
d'alimentation pour éteindre complètement votre ordinateur.
Le groupe RTAI a amélioré cela dans les versions récentes, de sorte
que votre système LinuxCNC peut éteindre le système par lui-même.
|