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
|
# include <iostream.h>
# include <iomanip.h>
# include <stdio.h>
# include< math.h>
# include <limits>
# include <fstream>
void main(void)
{
// Déclaration des paramètres de la machine MSAP
double B = 0.00038818;
double J = 0.00176;
double Kt = 1.3914;
double Ld = 0.0056;
double Lq = 0.0058;
double P_pole = 3;
double R = 1.4;
double flux_AF = 0.1546;
double Tl = 0.0;
int Vd = 0.2;
int Vq = 5;
// Déclaration des paramètre de la simulation
double dt = 0.001;
int temps = 1; //temps de simulation
int Ntot = temps/dt;
const int taille = 1000;
// Déclaration des diverses
double id[taille];
double iq[taille];
double w[taille];
double pos_mec[taille];
double did = 0;
double diq = 0;
double dw = 0;
// Pointeur sur le fichier texte d'enregistrement. En mode écriture
FILE *fvitesse = fopen ("vitesse.txt", "w");
FILE *fid = fopen ("id.txt", "w");
FILE *fiq = fopen ("iq.txt", "w");
FILE *fposmec = fopen ("posmec.txt", "w");
// Initialisations
id[0]=0;
iq[0]=0;
w[0]=0;
pos_mec[0]=0;
for (int n=0;n<Ntot;n++)
{
did = dt * (Vd-R*id[n]+(w[n]*P_pole)*Lq*iq[n])/Ld;
diq = dt * (Vq-R*iq[n]-(w[n]*P_pole)*Ld*id[n]-(w[n]*P_pole)*flux_AF)/Lq;
dw = dt * (Kt*iq[n]-Tl-B*w[n])/J;
id[n+1] = id[n]+did;
iq[n+1] = iq[n]+diq;
w[n+1] = w[n]+dw;
pos_mec[n+1] = pos_mec[n]+w[n];
fprintf(fvitesse,"%f\n",w[n]);
fprintf(fposmec,"%f\n",pos_mec[n]);
fprintf(fid,"%f\n",id[n]);
fprintf(fiq,"%f\n",iq[n]);
}
fclose(fvitesse);
fclose(fid);
fclose(fiq);
fclose(fposmec);
printf("Simulation terminée\n");
printf("Appuyer sur une touche pour fermer\n");
getchar();
} |
Partager