| 12
 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