-
Notifications
You must be signed in to change notification settings - Fork 0
/
Modelisation.tex
188 lines (115 loc) · 10.9 KB
/
Modelisation.tex
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
% !TEX TS-program = pdflatex
% !TEX encoding = UTF-8 Unicode
% This is a simple template for a LaTeX document using the "article" class.
% See "book", "report", "letter" for other types of document.
\documentclass[11pt]{article} % use larger type; default would be 10pt
\usepackage[utf8]{inputenc} % set input encoding (not needed with XeLaTeX)
%%% Examples of Article customizations
% These packages are optional, depending whether you want the features they provide.
% See the LaTeX Companion or other references for full information.
%%% PAGE DIMENSIONS
\usepackage{geometry} % to change the page dimensions
\geometry{a4paper} % or letterpaper (US) or a5paper or....
% \geometry{margin=2in} % for example, change the margins to 2 inches all round
% \geometry{landscape} % set up the page for landscape
% read geometry.pdf for detailed page layout information
\usepackage{graphicx} % support the \includegraphics command and options
% \usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty line rather than an indent
%%% PACKAGES
\usepackage{booktabs} % for much better looking tables
\usepackage{array} % for better arrays (eg matrices) in maths
\usepackage{paralist} % very flexible & customisable lists (eg. enumerate/itemize, etc.)
\usepackage{verbatim} % adds environment for commenting out blocks of text & for better verbatim
\usepackage{subfig} % make it possible to include more than one captioned figure/table in a single float
\usepackage{amsmath} %math package
\usepackage{graphicx} %used to include images
\usepackage{hyperref}
% These packages are all incorporated in the memoir class to one degree or another...
%%% HEADERS & FOOTERS
\usepackage{fancyhdr} % This should be set AFTER setting up the page geometry
\pagestyle{fancy} % options: empty , plain , fancy
\renewcommand{\headrulewidth}{0pt} % customise the layout...
\lhead{}\chead{}\rhead{}
\lfoot{}\cfoot{\thepage}\rfoot{}
%%% SECTION TITLE APPEARANCE
\usepackage{sectsty}
\allsectionsfont{\sffamily\mdseries\upshape} % (See the fntguide.pdf for font help)
% (This matches ConTeXt defaults)
%%% ToC (table of contents) APPEARANCE
\usepackage[nottoc,notlof,notlot]{tocbibind} % Put the bibliography in the ToC
\usepackage[titles,subfigure]{tocloft} % Alter the style of the Table of Contents
\renewcommand{\cftsecfont}{\rmfamily\mdseries\upshape}
\renewcommand{\cftsecpagefont}{\rmfamily\mdseries\upshape} % No bold!
%%% END Article customizations
%%% The "real" document content comes below...
\title{Simulation de Chaîne Correcteur PID - Moteur CC pour la stabilisation des constantes de GA-optimisateur des constantes PID}
\author{Timo Demos-Tacos}
%\date{} % Activate to display a given date or no date (if empty),
% otherwise the current date is printed
\begin{document}
\maketitle
\section{Introduction}
Après avoir implimenté un algorithme génétique capable de corriger de manière automatique des coéfficients PID, on s'intèresse à un autre problème avant de l'utiliser pour faire un asservissement réel : Comment choisir certaines constantes utilisées dans GA, afin d'augmenter la vitesse de convergence et assurer la convergence vers un équilibre maximale? Pour ça, il faut pouvoir tester un algorithme. On doit, donc, simuler la sortie temporelle du système numériquement. On modélise notre système par une fonction de transfert dans le domaine de Laplace (Section 2). On passe ensuite dans le domaine temporelle, en utilisant le fait que le nombre de points est fini et les points sont assez proches.
P. S. : Ce document fait partie de répertoire GitHub. Le code associé se trouve dans le dossier "simulator".
\section{Fonction de Transfert}
Calculons d'abord la fonction de transfert du système qu'on veut asservir en vitesse. Comme système on choisit le robot qui se déplace grâce à un moteur de courant continue. On a, donc un schèma bloc suivant, qui décrit une partie de la chaîne du système :
\begin{center}
\includegraphics[width=9cm, height=4cm]{bloc1}
\end{center}
\subsection{Fonction de transfert du moteur à courant continu (M(p))}
On peut modéliser le moteur CC par une approche classique. On obtient un modèle équivalent en régime dynamique :
\begin{center}
\includegraphics[width=12cm, height=8cm]{schem_induit}
\end{center}
Il est facile de démontrer qu'en appliquant le principe fondamental de la dynamique, il est facile d'obtenir la fonction de transfert :
\begin{equation} M(p) = \frac{K_0}{1 + (\tau + \tau e)p + \tau^2 ep^2} \end{equation}
où \begin{math} \tau = \frac{RJ}{K^2 + Rf} \end{math}, et \begin{math} \tau e = \frac{L}{R}\end{math}, et \begin{math} K_0 = \frac{K}{K^2 + Rf} \end{math}
Pour plus d'informations, voir \href{http://physiquenetappliquee.free.fr/Modele_dyna_MCC.php}{ici, par exemple}
On les ordres de grandeur de moteurs utilisés(nom du moteur) :
\begin{equation} R=10\Omega , J=10^{-3} kg \cdot m^2 , f=0.45 , L =20mH , K=0.19SI \end{equation}
D'où \begin{math} \tau e = 20 \cdot 10^{-4} , \tau = 2.2 \cdot 10^{-3} , K_0 = 4.2 \cdot 10^{-2} \end{math}
\subsection{Fonction de transfert du système mécanique (R(p))}
On modélise la courbure du sol par une simple sinusoide \begin{equation} r(t) = A \cdot \sin (\omega_v t) \end{equation}
où \begin{math} \omega_v = \frac{2\pi v}{s_0}\end{math}
Comme l'angle d'inclinaison est très petite on a : \begin{equation} N = mg , \sin \alpha \approx \tan \alpha \approx \alpha\end{equation}
La liaison moteur-roue est un pivot idéal.
La force des frottements fluides(projection en x, en supposant la vitesse faible) : \begin{equation} -K_f \cdot v \end{equation}
La force motrice : \begin{equation} F_m = \frac{J}{r} \cdot \frac{d\omega}{dt}\end{equation}
La force des frottements solides (en supposant système à l'équilibre dynamique, se déplaçant depuis longtemps à une vitesse de consigne) : \begin{equation} -K_s \sigma mg \end{equation}
On a \begin{math} \sigma =\frac{A \omega_v r \epsilon}{2<v>} = \pi \cdot \frac{Av}{s_0<v>} \cdot r \epsilon \end{math}
Les ordres de grandeurs et la description des constantes utilisées :
\begin{math} A = 0.001m \end{math} est une amplitude de la courbure, \begin{math} m=5kg \end{math} la masse de robot, l'angle moyen de surface avec l'horizontal, \begin{math} r=0.03m \end{math} rayon de la roue, \begin{math} s_0=0.04m \end{math} longueur caractéristique de la courbure, \begin{math} J = 10^{-3} kg \cdot m^2 \end{math} moment d'inertie de la roue, \begin{math} \epsilon = 0.008m \end{math} l'épaisseur de la roue, \begin{math} <v>=1 \frac{m}{s} \end{math} la vitesse moyenne, \begin{math} K_f = 1.7 \cdot 10^{-4} SI \end{math} (loi de Stokes) la constante des frottements fluides, la constante des frottements solides et \begin{math} K_s = 0.45 SI \end{math} la constante de frottements solide par unité de surface.
On obtient une équation différentielle (PFD) :
\begin{equation} \frac{J}{r} \cdot \frac{d\omega}{dt} - K_f \cdot v - K_s \cdot \frac{A\pi r \epsilon mg}{s_0<v>} \cdot v = m \cdot \frac{dv}{dt}\end{equation}
Alors
\begin{equation} R(p) = \frac{\frac{J}{r K_1}p}{\frac{m}{K_1}p + 1} , K_1 = K_f + K_s \cdot \frac{A\pi r \epsilon mg}{s_0<v>} \end{equation}
On \begin{math} K_1 \approx 5.86 \cdot 10^{-4} SI \end{math}
\subsection{Chaîne directe}
Rajoutons maintenant un correcteur PID et calculons la fonction de transfert de la chaîne directe. Le schèma bloc général est ci-dessous, avec \begin{math} T(s) = 1 \end{math} et \begin{math} H(s) = M(s)R(s) \end{math} :
\includegraphics[width=14cm, height=8cm]{CorrecteurPIDclassique}
Dans notre cas la consigne est constante \begin{math} v_c(t) = v_0 \end{math} , soit dans le domaine de Laplace \begin{math} V_c(p) = \frac{V_0}{p} \end{math}
On pose \begin{math} C(p) = \frac{1 + K_p K_i p + K_d K_i p^2}{K_i p}\end{math} la fonction de transfert de correcteur PID
Alors, on obtient :
\begin{equation} V(p) = \frac{V_0}{p + \frac{p}{C(p)R(p)M(p)}} \end{equation}
\section{Extraction de sortie temporelle}
\subsection{Méthode d'inversion discrète de la transformée de Laplace (ne marche pas pour le moment : voir les commits)}
Prenons un cas général, quand on a \begin{math} n \end{math} valeurs réelles de \begin{math} (p_i)_{1 \leq i \leq n}\end{math}. On obtient un vecteur de sortie dans le domaine de Laplace colonne \begin{math} S_p , \forall i \in [1,n], [S_p]_{i,1} = S(p_i) \end{math}.
On définit aussi \begin{math} (t_i)_{0 \leq i \leq n} \, t_i = i \cdot \delta t \end{math} et un vecteur colonne \begin{math} S_t , \forall i \in [1,n], [S_t]_{i,1} = s(t_i) \end{math}.
On a, d'après la définition de la transformée de Laplace, \begin{math} S(p_i) = \int_{0}^{\infty} s(t) \cdot e^{-p_i t}\,dt\end{math}. Comme seule répresentation discrète de \begin{math} s(t) \end{math} nous intéresse, on applique le méthode des réctangles pour le calcul de cet intégral (qui existe, car la fonction \begin{math} t \mapsto C \cdot e^{-p_i t}\end{math} est intégrable). On a, en supposant le système est à l'équilibre à l'instant \begin{math} t_n \end{math} :
\begin{equation} \int_{0}^{\infty} s(t) \cdot e^{-p_i t}\,dt = \sum_{k=1}^{n} s(t_k) e^{-p_i t_k} \cdot (t_k - t_{k-1}) + \int_{t_n}^{\infty} s(t_n) e^{-p_i t} \, dt \end{equation}
En simplifiant et en calculant la valeur d'intégrale, on obtient :
\begin{equation} S(p_i) = \sum_{k=1}^{n-1} s(t_k) \cdot \delta t e^{-p_i k \delta t} + s(t_n) \cdot e^{-p_i n \delta t}(\delta t + \frac{1}{p_i})\end{equation}
On a, donc :
\begin{equation} S_p = A \cdot S_t \end{equation}
\[ A = \left\{ \begin{array}{ll}
A_{i,j} = \delta t \cdot e^{-p_i j \delta t} & \mbox{si ${i,j} \in {[1,n] \times [1,n-1]}$}; \\
A_{i,n} = (\delta t + \frac{1}{p_i}) \cdot e^{-p_i n \delta t} & \mbox{si $i \in {[1,n]}$}. \end{array} \right. \]
Comme on voit, la matrice ne dépend pas de la sortie, mais uniquement des points choisis. Il suffit, donc, d'inverser la matrice (à condition que les \begin{math} (p_i)_{1 \leq i \leq n}\end{math} sont disjoints et la matrice est inversible)
\subsection{Modélisation par une résolution d'équation différentielle par le méthode d'Euler}
\subsection{Equation différentielle}
\subsection{Résolution}
Soit une équation \begin{equation} \sum_{k=0}^{n} a_k \cdot y ^ {(k)}(t) = f(t) \end{equation}
On pose, donc \begin{math} Y(t) = (y^{(k)}(t))_{0 \leq k \leq n-1}^T\end{math} , alors
\begin{math} Y^{(1)}(t) = (y^{(k)}(t))_{1 \leq k \leq n}^T\end{math}. Comme on dispose d'une équation différentielle, on peut trouver la rélation entre \begin{math} Y(t) \, et \, \,Y^{(1)}(t) \end{math}. En effet il existe une matrice \begin{math} A(t) \, tq \, Y^{(1)}(t) = A(t)Y(t) \end{math}.
Supposons qu'on dispose d'un vecteur \begin{math} t = (t_i)_{0 \leq i \leq p} \, ,tq \, t_0 = 0 \, et \, \forall i \in [1,n] \, t_i - t_{i-1}= dt \end{math} et de vecteur \begin{math} Y_0 = (y^{(k)}(0))_{0 \leq k \leq n-1}^T \end{math}. On obtient, donc un problème de Cauchy, qu'on peut résoudre numériquement à temps discret: \begin{math} Y(t_i+1) = Y(t_i) + dt \cdot A(t_i)Y(t_i) \end{math}
\end{document}