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...
Je ne sais pas de quoi cela vient. Est-ce que quelqu'un peut m'aider???
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(); }
Merci d'avance
Frédéric
Partager