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