Bonjour,

J'utilise le langage C++ pour simuler le modèle mathématique d'une machine synchrone à aimant permanent. J'ai effectué mon code et cela fonctionne, mais j'obtiens une erreur a la fin :

Run-Time Check Failure #2 - Stack around the variable 'pos_mec' was corrupted.

Voici le code...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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();
 
}
Je ne sais pas de quoi cela vient. Est-ce que quelqu'un peut m'aider???

Merci d'avance
Frédéric