Convertion Du Basic au C++

Fermé
Samiracle Messages postés 23 Date d'inscription mardi 23 avril 2013 Statut Membre Dernière intervention 25 janvier 2015 - 30 avril 2013 à 18:47
Samiracle Messages postés 23 Date d'inscription mardi 23 avril 2013 Statut Membre Dernière intervention 25 janvier 2015 - 11 mai 2013 à 21:48
Salut , je cherche quelqu'un qui sais comment programmer en C++ et le basic ..je veux traduire un programme Du basic au C++ ( programme pour tracer le diagramme de circle machine asynchrone ) ..s'il vous plait si vous connaissez comment les traduire repondez moi ( c'est un mini projet que je doit renre avant le 15 mai ) Merci .. :(
A voir également:

3 réponses

qbasic45 Messages postés 55 Date d'inscription vendredi 14 décembre 2012 Statut Membre Dernière intervention 15 juin 2019 3
11 mai 2013 à 19:01
bounjour
oui il son corriger dans le programme
1
Samiracle Messages postés 23 Date d'inscription mardi 23 avril 2013 Statut Membre Dernière intervention 25 janvier 2015 1
11 mai 2013 à 21:48
Merci ;D
0
BusyBeingDelicious Messages postés 4 Date d'inscription vendredi 10 mai 2013 Statut Membre Dernière intervention 11 mai 2013
10 mai 2013 à 19:00
poste le code source au moins, qu'on voit ce qu'on doit faire. Sinon pour apprendre le c++, le siteduzero peut tapprendre en tres peu de temps
0
Samiracle Messages postés 23 Date d'inscription mardi 23 avril 2013 Statut Membre Dernière intervention 25 janvier 2015 1
10 mai 2013 à 21:33
REM Programme en cours d''laboration
REM fichier asynchro.bas
REM Ce programme est 'crit en qbasic. L'interpr'teur qbasic.exe (et son aide
REM qbasic.hlp) n'cessaire ... son ex'cution fait partie du DOS ... partir de la
REM version 5. Il se trouve aussi
REM sur le CD d'installation de windows 95 en \OTHER\OLDMSDOS\
REM et sur le CD d'installation de windows 98 en \TOOLS\OLDMSDOS\
REM Il fonctionne encore en windows 2000/XP mais sans possibilit' de copie
REM d''cran. Pour contourner ce problSme, vous pouvez utiliser l'environnement
REM de programmation t'l'chargeable gratuitement ... l'adresse
REM http://fbide.freebasic.net/
REM
DEFSNG A-Z
DECLARE SUB basin (a$, g!, b$)
DECLARE FUNCTION argument! (X!, y!)
DIM SHARED pi!
REM n'cessite un 'cran ega ou vga
SCREEN 9
root3 = SQR(3!)
pi! = 4 * ATN(1!)
debut: 'choix des valeurs par d'faut
rapecran = 1.6 'rapport largeur/hauteur de l''cran
'ce rapport doit ^tre ajust' pour obtenir des graphes PQ corrects
npp = 2! 'nombre de paires de p"les
k = 1! 'rapport de transformation
frequref = 50!
frequ = frequref 'fr'quence statorique
nref = frequref / npp * 60!
pref = 70! 'pertes m'caniques ... la vitesse de r'f'rence
r1 = 4.699 'r'sistance statorique mise en amont des 'l'ments //
r1compl = 4.699 'r'sistance statorique mise en aval des 'l'ments //
x1 = 0! 'r'actance statorique
x2p = 10! 'r'actance rotorique ramen'e au stator
r2p = 4! 'r'sistance rotorique ramen'e au stator
u2seuil = 0! 'seuil de conduction rotorique (contact bague-balais)
rp = 2064! 'r'sistance parallSle statorique
flags% = 1
xmuu = 254! 'r'actance parallSle non satur'e
cnl = 1! / 300! 'inverse de la tension "de saturation"
etnl = 6! 'exposant de la fonction de saturation
u1 = 380!
nrot = 0!
i2n = 0!
u2 = 0!
fp2 = 1!
flagc% = 0
nbexp% = 0
choixsol% = 1
entree: CLS
PRINT "E. Matagne 17-05-2010"
PRINT
PRINT "Ce programme analyse de fa#on exacte le comportement d'un"
PRINT "moteur asynchrone triphas' mod'lis'"
PRINT " soit par un circuit 'quivalent en T"
PRINT " soit par un circuit 'quivalent en L (circuit 'quivalent simplifi')"
PRINT
PRINT "Pour obtenir un circuit 'quivalent en L, il suffit d'attribuer"
PRINT " ... la r'sistance statorique Rs (mise en amont)"
PRINT " et ... la r'actance de fuite statorique Xs la valeur z'ro"
GOSUB pourconti
CLS
PRINT "Valeur des paramStres (page 1)"
PRINT
basin "Nombre de paires de p"les", npp, ""
basin "fr'quence d'alimentation statorique", frequ, "Hz"
nsyn = frequ * 60! / npp
PRINT " vitesse de synchronisme = "; nsyn; " t/m"
PRINT
PRINT "Nous supposons les pertes m'caniques dues uniquement ... un couple de"
PRINT " frottement sec."
PRINT
PRINT "Vitesse de r'f'rence pour exprimer les pertes m'caniques (df";
PRINT nref; "t/m) =";
INPUT in$
IF in$ <> "" THEN nref = VAL(in$)
PRINT "pertes m'caniques ..."; nref; "t/m (df"; pref; "W)=";
INPUT in$
IF in$ <> "" THEN pref = VAL(in$)
cfrot = pref / nref * 30! / pi!
COLOR 10
PRINT "Le couple de frottement sec m'canique vaut donc"; cfrot; "Nm"
COLOR 15
PRINT
PRINT "La valeur du rapport de transformation est sans importance si aucune"
PRINT "mesure 'lectrique n'est faite au rotor."
PRINT "Rapport de transformation k de la machine id'ale"
PRINT " (plac' en aval de tout le circuit 'quivalent);"
PRINT "ce rapport est d'fini comme le flux statorique de la machine id'ale"
PRINT " divis' par le flux rotorique."
PRINT " Votre choix k = (df"; k; ")";
INPUT in$
IF in$ <> "" THEN k = VAL(in$)
GOSUB pourconti
CLS
PRINT "Valeur des paramStres (page 2)"
PRINT
PRINT "El'ments s'rie"
PRINT
PRINT "Valeur de la r'sistance statorique Rs (mise en amont)"
PRINT " (Choisissez 0 si vous utilisez un circuit 'quivalent en L)"
PRINT " votre choix (df"; r1; "ohms) =";
INPUT in$
IF in$ <> "" THEN r1 = VAL(in$)
PRINT
PRINT "Valeur de la r'actance de fuite statorique (..."; frequ; "Hz) Xs"
PRINT " (Choisissez 0 si vous reportez toute la r'actance s'rie en aval";
PRINT " des 'l'ments parallSles)"
PRINT " votre choix (df"; x1; "ohms) =";
INPUT in$
IF in$ <> "" THEN x1 = VAL(in$)
IF r1 = 0! THEN
PRINT "r'sistance statorique s'rie Rs"
PRINT " (en aval des 'l'ments parallSles)"
PRINT " votre choix (df"; r1compl; ") =";
INPUT in$
IF in$ <> "" THEN r1compl = VAL(in$)
ELSE
r1compl = 0!
END IF
PRINT
IF x1 = 0! THEN
PRINT "r'actance s'rie 'quivalente (..."; frequ; "Hz) ramen'e au stator Xe'"
ELSE
PRINT "r'actance s'rie rotorique (..."; frequ; "Hz) ramen'e au stator Xr'"
END IF
PRINT " (en aval des 'l'ments parallSles)"
PRINT " votre choix (df"; x2p; "ohms)=";
INPUT in$
IF in$ <> "" THEN x2p = VAL(in$)
PRINT "r'sistance s'rie rotorique ramen'e au stator Rr'"
PRINT " (en aval des 'l'ments parallSles)"
PRINT " votre choix (df"; r2p; "ohms)=";
INPUT in$
IF in$ <> "" THEN r2p = VAL(in$)
PRINT
PRINT "Seuil de conduction des balais rotoriques (en tension de ligne)"
PRINT "Il faut choisir 0 si le court-circuiteur se trouve dans le rotor m^me"
PRINT "Dans le cas contraire, ce paramStre tient compte de fa#on"
PRINT "approch'e de la non-lin'arit' due aux contacts bague-balais"
PRINT "Votre choix (df"; u2seuil; "V) =";
INPUT in$
IF in$ <> "" THEN u2seuil = VAL(in$)
GOSUB pourconti
entmag: CLS
PRINT "Valeur des paramStres (page 3)"
PRINT
PRINT "El'ments parallSle"
PRINT
PRINT "Entrez 0 pour une r'actance de magn'tisation lin'aire"
PRINT " 1 pour une r'actance de magn'tisation non lin'aire"
PRINT " votre choix (df"; flags%; ")=";
INPUT in$
IF in$ <> "" THEN flags% = VAL(in$)
IF flags% <> 0 AND flags% <> 1 THEN GOTO entmag
PRINT
IF flags% = 0 THEN
PRINT "R'actance de magn'tisation Xmu ";
ELSE
PRINT "R'actance de magn'tisation non satur'e Xmuu ";
END IF
PRINT "(df"; xmuu; "ohms) =";
INPUT in$
IF in$ <> "" THEN xmuu = VAL(in$)
IF flags% = 1 THEN
PRINT "La r'actance de magn'tisation non satur'e est divis'e en cours"
PRINT "de calcul par"
PRINT " ( 1 + (cnl * E) ^ etnl )";
PRINT "o-- E est la force 'lectromotrice (de ligne)";
PRINT " au niveau de l'inductance saturable"
PRINT
PRINT "co'fficient de non lin'arit' cnl (df"; cnl; "V^-1) = ";
INPUT in$
IF in$ <> "" THEN cnl = VAL(in$)
PRINT "exposant etnl du terme non lin'aire (df"; etnl; ") =";
INPUT in$
IF in$ <> "" THEN etnl = VAL(in$)
ELSE
cnl = 0!
etnl = 6!
END IF
PRINT
PRINT "R'sistance de pertes magn'tiques rp (df"; rp; "ohms) =";
INPUT in$
IF in$ <> "" THEN rp = VAL(in$)
PRINT

GOSUB pourconti
etat: CLS
PRINT "Tension de ligne statorique Us (df"; u1; "volts) =";
INPUT in$
IF in$ <> "" THEN u1 = VAL(in$)
u1m = u1 / root3
' provisoire
nrothau = 1.3 * nsyn
nrotbas = -.3 * nsyn
zut1 = SQR((r1 + r1compl) * (r1 + r1compl) + (x1 + x2p) * (x1 + x2p))
zut2 = (r1 + r1compl + zut1) * (r1 + r1compl + zut1) + (x1 + x2p) * (x1 + x2p)
zut = u1 * u1 / zut2 * zut1
cmecmax = zut * 60! / nsyn / 2 / pi - cfrot
cmecmin = -zut * 60! / nsyn / 2 / pi - cfrot
cmechau = cmecmax
cmecbas = cmecmin
zut1 = x1 + x2p
qmax = u1 * u1 / (x1 + x2p)
q1hau = qmax
q1bas = 0!
pmax = qmax / 2! + u1 * u1 / rp
pmin = -qmax / 2! + u1 * u1 / rp
p1hau = pmax
p1bas = pmin
PRINT
menu: CLS
PRINT "tension de ligne statorique Us ="; u1; "V (de ligne)"
PRINT
PRINT "menu principal"
PRINT
PRINT "entrez <R> pour revenir aux valeurs par d'faut"
PRINT " <D> pour modifier les donn'es"
PRINT " <E> pour red'finir la vitesse ou la tension statorique"
PRINT " <C> pour analyser un r'gime avec rotor court-circuit'"
PRINT " <U> pour analyser un r'gime ... tension rotorique impos'e"
PRINT " <V> pour analyser un r'gime ... rotor ouvert"
PRINT " <I> pour analyser un r'gime ... courant rotorique impos'"
PRINT " <P> pour entrer ou modifier les points exp'rimentaux"
PRINT " <T> pour tracer le diagramme couple-vitesse"
PRINT " <Q> pour tracer le diagramme PQ (dit du cercle)"
PRINT " <F> pour quitter le programme"
INPUT menu$
IF menu$ = "r" OR menu$ = "R" THEN GOTO debut
IF menu$ = "d" OR menu$ = "D" THEN GOTO entree
IF menu$ = "e" OR menu$ = "E" THEN GOTO etat
IF menu$ = "c" OR menu$ = "C" THEN GOTO court
IF menu$ = "u" OR menu$ = "U" THEN GOTO tension
IF menu$ = "v" OR menu$ = "V" THEN GOTO vide
IF menu$ = "i" OR menu$ = "I" THEN GOTO courant
IF menu$ = "p" OR menu$ = "P" THEN GOTO entpoints
IF menu$ = "t" OR menu$ = "T" THEN GOTO graphe1
IF menu$ = "q" OR menu$ = "Q" THEN GOTO graphe2
IF menu$ = "f" OR menu$ = "F" THEN GOTO fin
GOTO menu


court: CLS
PRINT "Analyse ... rotor court-circuit'"
GOSUB entvitesse
u2 = 0!
phich = 0!
GOTO suitetension

tension: CLS
GOSUB entvitesse
PRINT
PRINT "Analyse pour une tension rotorique Ur impos'e"
PRINT
enttension:
PRINT "amplitude de la tension rotorique (df"; u2; "Veff de ligne)=";
INPUT in$
IF in$ <> "" THEN u2 = VAL(in$)
IF u2 < 0! THEN GOTO enttension
PRINT
IF u2 = 0! THEN
phich = 0!
ELSE
GOSUB entphich
END IF
suitetension: CLS
IF u2 <> 0! THEN
PRINT "Analyse pour une tension rotorique Ur impos'e de";
PRINT u2; "V"
PRINT "angle phi de la charge 'lectrique ="; phich / pi! * 180!; "ø"
ELSE
PRINT "Analyse ... rotor court-circuit'"
END IF
zutr = u2 * COS(phich) + u2seuil
zuti = u2 * SIN(phich)
u2c = SQR(zutr * zutr + zuti * zuti)
IF u2c = 0! THEN
phichc = 0!
ELSE
phichc = argument(zutr, zuti)
END IF
u2cpmn = u2c / root3 * k
GOSUB calcul1
GOTO impr

vide: CLS
GOSUB entvitesse
PRINT "Analyse pour un fonctionnement ... rotor ouvert"
i2n = 0!
phich = 0!
GOTO suitecourant

courant: CLS
GOSUB entvitesse
PRINT "Analyse pour un courant rotorique Ir impos'"
PRINT
entcharge:
PRINT "amplitude du courant de charge (df"; i2n; "Aeff) =";
INPUT in$
IF in$ <> "" THEN i2n = VAL(in$)
IF i2n < 0! THEN GOTO entcharge
PRINT
IF i2n = 0! THEN
phich = 0!
ELSE
GOSUB entphich
END IF
CLS
PRINT "Analyse pour un courant rotorique Ir impos'"
PRINT
suitecourant:
PRINT "courant rotorique ="; i2n; "A"
IF i2n <> 0! THEN PRINT "angle phi de l''l'ment connect' au rotor =";
PRINT phich / pi! * 180!; "ø"
i2pn = i2n / k
xmu = xmuu
nbsol% = 1
choixsol% = 1
nbiter% = 0
itercourant:
nbiter% = nbiter% + 1
xmuold = xmu
GOSUB precalcul
du2cpmn = zen * i2pn
u2c0pmminn = du2cpmn * ABS(SIN(zea - phich))
u2cpmmoyn = -du2cpmn * COS(zea - phich)
IF u2c0pmn < u2c0pmminn THEN
nbsol% = -1
PRINT "Aucune solution exacte ... l'it'ration No"; nbiter%
PRINT "Le programme continue les it'rations avec une solution approch'e"
GOSUB pourconti
u2cpmn = u2cpmmoyn
ELSE
zut = SQR(u2c0pmn * u2c0pmn - u2c0pmminn * u2c0pmminn)
u2cpmn = u2cpmmoyn - zut
IF u2cpmn >= 0! THEN
nbsol% = 2
entchoixsoli:
PRINT "il y a deux solutions ... l'it'ration No"; nbiter%
PRINT "Entrez 1 pour la solution ... plus petite tension U2"
PRINT " 2 pour la solution ... plus grande tension U2"
PRINT " votre choix (df"; choixsol%; ")=";
INPUT in$
IF in$ <> "" THEN choixsol% = VAL(in$)
IF choixsol% < 1 OR choixsol% > 2 THEN GOTO entchoixsoli
ELSE
choixsol% = 2
END IF
IF choixsol% = 2 THEN u2cpmn = u2cpmmoyn + zut
IF u2cpmn >= 0! THEN
nbsol% = 1
ELSE
nbsol% = 0
PRINT "Il y a deux solutions inacceptables ... l'it'ration No"; nbiter%
PRINT "Le programme continue les it'rations avec la moins mauvaise"
GOSUB pourconti
END IF
END IF
zuti = u2cpmn * SIN(zea - phich)
zutr = du2cpmn + u2cpmn * COS(zea - phich)
zut = argument!(zutr, zuti)
i2a = u2c0a + zut - zea
i2pr = i2pn * COS(i2a)
i2pi = i2pn * SIN(i2a)
u2ca = i2a + phich
emr = e0mr - r1p * i2pr + x1p * i2pi
emi = e0mi - r1p * i2pi - x1p * i2pr
emn = SQR(emr * emr + emi * emi)
en = emn * root3
xmu = xmuu / (1! + (cnl * en) ^ etnl)
IF ABS(xmuold - xmu) > .000001 * xmu THEN GOTO itercourant
PRINT "terminaison aprSs "; nbiter%; "it'rations"
u2cpmr = u2cpmn * COS(u2ca)
u2cpmi = u2cpmn * SIN(u2ca)
IF nbsol% = -1 THEN
PRINT "convergence vers un 'tat sans solution"
GOSUB pourconti
GOTO menu
END IF
u2c = u2cpmn / k * root3
u2 = u2c - u2seuil ' provisoire
i2n = i2pn * k
emr = e0mr - r1p * i2pr + x1p * i2pi
emi = e0mi - r1p * i2pi - x1p * i2pr
en = root3 * SQR(emr * emr + emi * emi)
xmu = xmuu / (1 + (cnl * en) ^ etnl)
ymur = 1! / rp
ymui = -1! / xmu
i1r = i2pr + emr * ymur - emi * ymui
i1i = i2pi + emr * ymui + emi * ymur
i1n = SQR(i1r * i1r + i1i * i1i)
u1mr = emr + r1 * i1r - x1 * i1i
u1mi = emi + r1 * i1i + x1 * i1r
p1 = root3 * u1 * i1r
q1 = -root3 * u1 * i1i
ptransm = 3! * (emr * i2pr + emi * i2pi) - 3! * r1compl * i2pn * i2pn
ctransm = ptransm / (2! * pi! * frequ) * npp
GOTO impr

impr:
IF nbsol% = -1 THEN
PRINT "convergence vers un 'tat sans solution"
GOSUB pourconti
GOTO menu
END IF
IF nbsol% = 0 THEN
PRINT "Convergence vers une solution inacceptable."
PRINT "Examinez soigneusement les r'sultats ci-dessous"
END IF
IF nbsol% = 2 THEN
PRINT "convergence vers la plus ";
IF choixsol% = 1 THEN
PRINT "petite"
ELSE
PRINT "grande"
END IF
PRINT " de deux solutions possibles"
END IF
GOSUB pourconti
CLS
PRINT
PRINT "tension rotorique ="; u2; "V (de ligne)"
PRINT "courant rotorique ="; i2n; "A"
PRINT
PRINT "tension rotorique + seuil multipli's par k ="; u2cpm * root3;
PRINT "V (de ligne)"
PRINT "courant rotorique ramen' au stator ="; i2pn; "A"
PRINT
PRINT "force 'lectromotrice rotorique ="; en * ABS(gamma); "V (de ligne)"
PRINT "force 'lectromotrice sur 'l'ments parallSles ="; en; "V (de ligne)"
PRINT "r'actance parallSle ="; xmu; "ohm"
PRINT
COLOR 12
PRINT "courant statorique ="; i1n; "A"
COLOR 15
PRINT "tension statorique (... titre de contr"le)"
PRINT " = "; u1mr * root3; "+j"; u1mi * root3; "V (de ligne)"
PRINT "facteur de puissance ="; i1r / i1n
PRINT
PRINT "couple 'lectromagn'tique ="; ctransm; "Nm"
COLOR 12
PRINT "couple m'canique ="; cmec; "Nm"
COLOR 15
GOSUB pourconti
CLS
COLOR 12
PRINT "puissance entrant au stator ="; p1; "W"
COLOR 15
PRINT "puissance r'active ="; -root3 * u1 * i1i; "VAr"
PRINT "pertes dans la r'sistance s'rie statorique (amont) = ";
PRINT 3! * r1 * i1n * i1n; "W"
PRINT "pertes dans la r'sistance rp ="; en * en / rp; "W"
PRINT "pertes dans la r'sistance s'rie statorique (aval) = ";
PRINT 3! * r1compl * i2pn * i2pn; "W"
PRINT
PRINT "puissance totale transmise au rotor ="; ptransm; "W"
PRINT
PRINT "puissance 'lectrique re#ue au rotor =";
PRINT ptransm * gamma; "W"
PRINT "puissance dissip'e dans la r'sistance rotorique (partie lin'aire)";
PRINT 3! * r2p * i2pn * i2pn; "W"
PRINT "puissance dissip'e dans le seuil de tension rotorique";
PRINT root3 * u2seuil * i2n
PRINT "puissance totale dissip'e par effet Joule au rotor";
PRINT 3! * r2p * i2pn * i2pn + root3 * u2seuil * i2n
PRINT "puissance 'lectrique fournie par le rotor";
PRINT root3 * u2 * i2n * COS(phich); "W"
PRINT
pconv = ptransm * (1! - gamma)
PRINT "puissance convertie ="; pconv; "W"
pfrot = cfrot * nrot / 30! * pi!
PRINT "pertes m'caniques ="; pfrot; "W"
pmec = pconv - pfrot
COLOR 12
PRINT "puissance m'canique utile ="; pmec; "W"
COLOR 15
PRINT " soit"; pmec / 75 / 9.806; "CV"
PRINT " ou encore"; pmec / 745.7; "HP"
PRINT
PRINT "rendement = "; pmec / p1 * 100!; "%"
GOSUB pourconti
GOTO menu

entvitesse:
PRINT "Vitesse de rotation (df"; nrot; "t/m) =";
INPUT in$
IF in$ <> "" THEN nrot = VAL(in$)
gamma = 1! - nrot / (frequ * 60! / npp)
PRINT
PRINT "glissement = "; gamma
PRINT "fr'quence rotorique ="; frequ * gamma; "Hz"
RETURN

entpoints: CLS
IF nbexp% > 0 THEN nbexpold% = nbexp%
PRINT "nombre de points exp'rimentaux (df "; nbexp%; ") =";
INPUT in$
IF in$ <> "" THEN nbexp% = VAL(in$)
IF nbexp% > 0 THEN
IF nbexpold% <> nbexp% THEN
REDIM pexp1(1 TO nbexp%), pexp2(1 TO nbexp%)
REDIM pexp3(1 TO nbexp%), pexp4(1 TO nbexp%)
END IF
FOR noexp% = 1 TO nbexp%
PRINT
PRINT "Point No"; noexp%
PRINT "Vitesse de rotation (df"; pexp1(noexp%); "t/m) =";
INPUT in$
IF in$ <> "" THEN pexp1(noexp%) = VAL(in$)
PRINT "Couple utile Cr (df"; pexp2(noexp%); "Nm) =";
INPUT in$
IF in$ <> "" THEN pexp2(noexp%) = VAL(in$)
PRINT "Puissance active (df"; pexp3(noexp%); "W) =";
INPUT in$
IF in$ <> "" THEN pexp3(noexp%) = VAL(in$)
PRINT "Puissance r'active (df"; pexp4(noexp%); "VAr) =";
INPUT in$
IF in$ <> "" THEN pexp4(noexp%) = VAL(in$)
NEXT noexp%
pexp1bas = pexp1(1)
pexp1hau = pexp1(1)
pexp2bas = pexp2(1)
pexp2hau = pexp2(1)
pexp3bas = pexp3(1)
pexp3hau = pexp3(1)
pexp4bas = pexp4(1)
pexp4hau = pexp4(1)
FOR noexp% = 1 TO nbexp%
IF pexp1(noexp%) < pexp1bas THEN pexp1bas = pexp1(noexp%)
IF pexp1(noexp%) > pexp1hau THEN pexp1hau = pexp1(noexp%)
IF pexp2(noexp%) < pexp2bas THEN pexp2bas = pexp2(noexp%)
IF pexp2(noexp%) > pexp2hau THEN pexp2hau = pexp2(noexp%)
IF pexp3(noexp%) < pexp3bas THEN pexp3bas = pexp3(noexp%)
IF pexp3(noexp%) > pexp3hau THEN pexp3hau = pexp3(noexp%)
IF pexp4(noexp%) < pexp4hau THEN pexp4bas = pexp4(noexp%)
IF pexp4(noexp%) > pexp4hau THEN pexp4hau = pexp4(noexp%)
NEXT noexp%
END IF
GOSUB pourconti
GOTO menu

graphe1: CLS
menu$ = "t"
u2 = 0!
phich = 0!
u2c = u2seuil
phichc = 0!
u2cpmn = u2c / root3 * k
IF nbexp% > 0 THEN
PRINT "vitesse exp'rimentale la plus 'lev'e =";
PRINT pexp1hau; "t/m"
END IF
PRINT "extr'mit' sup'rieure de l''chelle des vitesses (df"; nrothau; "t/m) =";
INPUT in$
IF in$ <> "" THEN nrothau = VAL(in$)
IF nbexp% > 0 THEN PRINT "vitesse exp'rimentale la plus faible =";
PRINT pexp1bas; "Nm"
PRINT "extr'mit' inf'rieure de l''chelle des vitesses (df"; nrotbas; "t/m) =";
INPUT in$
IF in$ <> "" THEN nrotbas = VAL(in$)
nrotgrad = (nrothau - nrotbas) / 20!
PRINT "'cart entre deux graduations de vitesse (df"; nrotgrad; "t/m) =";
INPUT in$
IF in$ <> "" THEN nrotgrad = VAL(in$)
nrotinc = (nrothau - nrotbas) / 50!
IF nbexp% > 0 THEN PRINT "couple exp'rimental le plus 'lev' ="; pexp2hau; "Nm"
PRINT "Extr'mit' sup'rieure de l''chelle des couples (df"; cmechau; "Nm) =";
INPUT in$
IF in$ <> "" THEN cmechau = VAL(in$)
IF nbexp% > 0 THEN PRINT "couple exp'rimental le plus bas ="; pexp2bas; "Nm"
PRINT "extr'mit' inf'rieure de l''chelle de couple (df"; cmecbas; "Nm) =";
INPUT in$
IF in$ <> "" THEN cmecbas = VAL(in$)
cmecgrad = (cmechau - cmecbas) / 20! * rapecran
PRINT "'cart entre deux graduations de couple (df"; cmecgrad; "Nm) =";
INPUT in$
IF in$ <> "" THEN cmecgrad = VAL(in$)
cmecinc = (cmechau - cmecbas) * rapecran / 50!
CLS
WINDOW (nrotbas, cmecbas)-(nrothau, cmechau)
PRINT "diagramme couple-vitesse 1 graduation horizontale ="; nrotgrad;
PRINT "t/m";
PRINT " 1 graduation verticale ="; cmecgrad;
PRINT "Nm";
LINE (0, cmecbas)-(0, cmechau)
LINE (nrotbas, 0)-(nrothau, 0)
FOR zut = 0! TO nrothau STEP nrotgrad
LINE (zut, -cmecinc)-(zut, cmecinc)
NEXT zut
FOR zut = 0! TO nrotbas STEP -nrotgrad
LINE (zut, -cmecinc)-(zut, cmecinc)
NEXT zut
FOR zut = 0! TO cmechau STEP cmecgrad
LINE (-nrotinc, zut)-(nrotinc, zut)
NEXT zut
FOR zut = 0! TO cmecbas STEP -cmecgrad
LINE (-nrotinc, zut)-(nrotinc, zut)
NEXT zut
IF nbexp% > 0 THEN
FOR noexp% = 1 TO nbexp%
nrotexp = pexp1(noexp%)
cmecexp = pexp2(noexp%)
LINE (nrotexp - nrotinc, cmecexp - cmecinc)-(nrotexp + nrotinc, cmecexp + cmecinc)
LINE (nrotexp + nrotinc, cmecexp - cmecinc)-(nrotexp - nrotinc, cmecexp + cmecinc)
gamma = 1! - pexp1(noexp%) / (frequ * 60! / npp)
NEXT noexp%
END IF
nrot = nrotbas
FOR i% = 1 TO 199
nrot = nrot + nrotinc
gamma = 1! - nrot / nsyn
GOSUB calcul1
IF i% <> 1 THEN LINE (nrotold, cmecold)-(nrot, cmec)
nrotold = nrot
cmecold = cmec
NEXT i%
INPUT dummy$
GOTO menu





graphe2: CLS
menu$ = "q"
u2 = 0!
phich = 0!
u2c = u2seuil
phichc = 0!
u2cpmn = u2c / root3 * k
PRINT "rapport entre largeur et hauteur de l''cran (df"; rapecran; ") =";
INPUT in$
IF in$ <> "" THEN rapecran = VAL(in$)
IF nbexp% > 0! THEN
PRINT "puissance active exp'rimentale la plus 'lev'e"; pexp3hau; "W"
END IF
PRINT "extr'mit' de l''chelle des puissances (df"; p1hau; "VA) =";
INPUT in$
IF in$ <> "" THEN p1hau = VAL(in$)
IF nbexp% > 0! THEN
PRINT "puissance active exp'rimentale la plus basse"; pexp3bas; "W"
END IF
PRINT "extr'mit' inf'rieure de l''chelle des puissances actives (df";
PRINT p1bas; "VA) =";
INPUT in$
IF in$ <> "" THEN p1bas = VAL(in$)
q1hau = (p1hau - p1bas) * (rapecran + 1!) / 2!
IF nbexp% > 0! THEN
PRINT "puissance r'active exp'rimentale la plus 'lev'e"; pexp4hau; "W"
END IF
PRINT "extr'mit' sup'rieure de l''chelle des puissances r'actives(df";
PRINT q1hau; "VAr) =";
INPUT in$
IF in$ <> "" THEN q1hau = VAL(in$)
q1bas = q1hau - rapecran * (p1hau - p1bas)
PRINT "l'extr'mit' inf'rieure de l''chelle des puissances r'actives est";
PRINT "donc de"; q1bas; "VAr"
pgrad = (p1hau - p1bas) / 20!
PRINT "'cart entre les graduations des axes (df"; pgrad; "VA) =";
INPUT in$
IF in$ <> "" THEN pgrad = VAL(in$)
pinc = pgrad / 3!
CLS
WINDOW (q1bas, p1bas)-(q1hau, p1hau)
PRINT "diagramme P-Q 1 graduation horizontale ="; pgrad; "VAr"
PRINT " 1 graduation verticale ="; pgrad; "W";
LINE (0, p1bas)-(0, p1hau)
LINE (q1bas, 0)-(q1hau, 0)
FOR zut = 0! TO p1hau STEP pgrad
LINE (-pinc, zut)-(pinc, zut)
NEXT zut
FOR zut = 0! TO p1bas STEP -pgrad
LINE (-pinc, zut)-(pinc, zut)
NEXT zut
FOR zut = 0 TO q1hau STEP pgrad
LINE (zut, -pinc)-(zut, pinc)
NEXT zut
FOR zut = 0 TO q1bas STEP -pgrad
LINE (zut, -pinc)-(zut, pinc)
NEXT zut
IF nbexp% > 0 THEN
FOR noexp% = 1 TO nbexp%
p1exp = pexp3(noexp%)
q1exp = pexp4(noexp%)
LINE (q1exp - pinc, p1exp - pinc)-(q1exp + pinc, p1exp + pinc)
LINE (q1exp + pinc, p1exp - pinc)-(q1exp - pinc, p1exp + pinc)
gamma = 1! - pexp1(noexp%) / (frequ * 60! / npp)
GOSUB calcul1
COLOR 12
LINE (q1, p1)-(q1exp, p1exp)
COLOR 15
NEXT noexp%
END IF
anglaux = -pi / 2!
FOR i% = 1 TO 199
anglaux = anglaux + pi / 200!
gamma = r2p / (x1 + x2p) * TAN(anglaux)
GOSUB calcul1
IF i% <> 1 THEN LINE (q1old, p1old)-(q1, p1)
q1old = q1
p1old = p1
NEXT i%
INPUT dummy$
GOTO menu






calcul1:
xmu = xmuu
nbiter% = 0
itertension:
nbiter% = nbiter% + 1
xmuold = xmu
GOSUB precalcul
u2c0pmminn = u2cpmn * ABS(SIN(zea - phichc))
du2cpmmoyn = -u2cpmn * COS(zea - phichc)
nbsol% = -1
IF u2c0pmn >= u2c0pmminn THEN
nbsol% = 0
zut = SQR(u2c0pmn * u2c0pmn - u2c0pmminn * u2c0pmminn)
du2cpmn = du2cpmmoyn + zut
IF du2cpmn >= 0! THEN nbsol% = 1
du2cpmn = du2cpmmoyn - zut
IF du2cpmn >= 0! THEN nbsol% = 2
END IF
IF nbsol% <= 0 THEN
BEEP
REM SOUND 440, 10
IF menu$ <> "q" AND menu$ <> "t" THEN
PRINT "Aucune solution exacte ... l'it'ration No"; nbiter%
PRINT "Le programme continue les it'rations ... i2 nul"
GOSUB pourconti
END IF
i2pn = 0!
i2a = 0!
ELSE
IF nbsol% = 1 OR choixsol% = 1 THEN du2cpmn = du2cpmmoyn + zut
zutr = u2cpmn + du2cpmn * COS(zea - phichc)
zuti = du2cpmn * SIN(zea - phichc)
zut = argument!(zutr, zuti)
u2ca = u2c0a - zut
u2cpmr = u2cpmn * COS(u2ca)
u2cpmi = u2cpmn * SIN(u2ca)
du2cpmr = u2c0pmr - u2cpmr
du2cpmi = u2c0pmi - u2cpmi
du2cpmn = SQR(du2cpmr * du2cpmr + du2cpmi * du2cpmi)
i2pn = du2cpmn / zen
i2a = u2ca - phichc
END IF
i2pr = i2pn * COS(i2a)
i2pi = i2pn * SIN(i2a)
emr = e0mr - r1p * i2pr + x1p * i2pi
emi = e0mi - r1p * i2pi - x1p * i2pr
emn = SQR(emr * emr + emi * emi)
en = emn * root3
xmu = xmuu / (1! + (cnl * en) ^ etnl)
IF ABS(xmuold - xmu) > .00001 * xmu THEN GOTO itertension
IF menu$ <> "q" AND menu$ <> "t" THEN PRINT "terminaison aprSs "; nbiter%; "it'rations"
i2n = i2pn * k
i1r = i2pr + emr * ymur - emi * ymui
i1i = i2pi + emr * ymui + emi * ymur
i1n = SQR(i1r * i1r + i1i * i1i)
p1 = root3 * u1 * i1r
q1 = -root3 * u1 * i1i
u1mr = emr + r1 * i1r - x1 * i1i
u1mi = emi + r1 * i1i + x1 * i1r
ptransm = 3! * (emr * i2pr + emi * i2pi) - 3! * r1compl * i2pn * i2pn
ctransm = ptransm / (2! * pi! * frequ) * npp
cmec = ctransm - cfrot
RETURN

entphich:
PRINT "entrez -1 pour une charge capacitive"
PRINT " 0 pour une charge purement r'sistive"
PRINT " 1 pour une charge inductive"
PRINT " votre choix (df"; flagc%; ") =";
INPUT in$
IF in$ <> "" THEN flagc% = VAL(in$)
IF flagc% < -1 OR flagc% > 1 THEN GOTO entphich
IF flagc% = 0 THEN
phich = 0!
RETURN
END IF
entfact:
PRINT "facteur de puissance de la charge (df"; fp2; ") =";
INPUT in$
IF in$ <> "" THEN fp2 = VAL(in$)
IF fp2 < -1! OR fp2 > 1! THEN GOTO entfact
phich = ATN((1! - fp2 * fp2) / fp2)
IF phich < 0! THEN phich = phich + pi!
IF flagc% = -1 THEN phich = -phich
RETURN

entchoixsolt:
PRINT "s'il y a deux solutions acceptables"
PRINT "Entrez 1 pour la solution ... plus petit courant I2"
PRINT " 2 pour la solution ... plus grand courant I2"
PRINT "votre choix (df"; choixsol%; ")=";
INPUT in$
IF in$ <> "" THEN choixsol% = VAL(in$)
IF choixsol% < 1 OR choixsol% > 2 THEN GOTO entchoixsolt
RETURN


precalcul:
ymur = 1 / rp
ymui = -1 / xmu
denom = ymur * ymyr + ymui * ymui
zmur = ymur / denom
zmui = -ymui / denom
zutr = r1 + zmur
zuti = x1 + zmui
denom = zutr * zutr + zuti * zuti
y0r = zutr / denom
y0i = -zuti / denom
rappr = zmur * y0r - zmui * y0i
rappi = zmur * y0i + zmui * y0r
e0mr = u1m * rappr
e0mi = u1m * rappi
u2c0pmr = e0mr * gamma
u2c0pmi = e0mi * gamma
u2c0pmn = SQR(u2c0pmr * u2c0pmr + u2c0pmi * u2c0pmi)
u2c0a = argument!(u2c0pmr, u2c0pmi)
denom = r1 * r1 + x1 * x1
IF denom = 0! THEN
r1p = 0!
x1p = 0!
ELSE
zutr = r1 / denom + 1 / rp
zuti = -x1 / denom - 1 / xmu
denom = zutr * zutr + zuti * zuti
r1p = zutr / denom
x1p = -zuti / denom
END IF
rep = (r1p + r1compl) * gamma + r2p
xep = (x1p + x2p) * gamma
denom = rep * rep + xep * xep
zen = SQR(denom)
zea = argument!(rep, xep)
yer = rep / denom
yei = -xep / denom
RETURN

pourconti: PRINT
PRINT "pressez <enter> pour continuer";
INPUT dummy$
RETURN

fin: END

FUNCTION argument! (X!, y!)
IF X! * X! + y! * y! = 0! THEN
PRINT "argument ind'termin'"
BEEP
REM SOUND 100, 10
argument! = 0!
ELSEIF ABS(y!) <= ABS(X!) THEN
zut = ATN(y! / X!)
IF X! > 0! THEN
argument! = zut
ELSE
argument! = zut + pi!
END IF
ELSE
zut = ATN(X! / y!)
IF y! > 0! THEN
argument! = pi! / 2 - zut
ELSE
argument! = 3 * pi! / 2 - zut
END IF
END IF
END FUNCTION

SUB basin (a$, g!, b$)
PRINT " "; a$; " (df "; g!; " "; b$; ")= ";
INPUT in$
IF in$ <> "" THEN g! = VAL(in$)
END SUB
0
BusyBeingDelicious Messages postés 4 Date d'inscription vendredi 10 mai 2013 Statut Membre Dernière intervention 11 mai 2013
11 mai 2013 à 00:49
alors, le code est très long, et il n'y a pas de "traducteur" Basic/C++ il faut le faire à la main. ça aurait été plus court, à la limite je te l'aurais traduit, mais bon là faut pas exagérer.
Si tu connais le basic, le c++ ne devrait pas etre très dur, aprends juste le C au pire, c'est suffisant.
Bon courage pour la traduction
0
Samiracle Messages postés 23 Date d'inscription mardi 23 avril 2013 Statut Membre Dernière intervention 25 janvier 2015 1
11 mai 2013 à 01:07
je connais les base en c++ mais je connais rien en basic cest ça mon probleme , et il faut que je le rende le 15 may (4 jours ) STP :'(
0
qbasic45 Messages postés 55 Date d'inscription vendredi 14 décembre 2012 Statut Membre Dernière intervention 15 juin 2019 3
11 mai 2013 à 15:37
bonjour le programme 3 petite eurreur

REM Programme en cours d''laboration
REM fichier asynchro.bas
REM Ce programme est 'crit en qbasic. L'interpr'teur qbasic.exe (et son aide
REM qbasic.hlp) n'cessaire ... son ex'cution fait partie du DOS ... partir de la
REM version 5. Il se trouve aussi
REM sur le CD d'installation de windows 95 en \OTHER\OLDMSDOS\
REM et sur le CD d'installation de windows 98 en \TOOLS\OLDMSDOS\
REM Il fonctionne encore en windows 2000/XP mais sans possibilit' de copie
REM d''cran. Pour contourner ce problSme, vous pouvez utiliser l'environnement
REM de programmation t'l'chargeable gratuitement ... l'adresse
REM http://fbide.freebasic.net/
REM
DEFSNG A-Z
DECLARE SUB basin (a$, g!, b$)
DECLARE FUNCTION argument! (X!, y!)
DIM SHARED pi!
REM n'cessite un 'cran ega ou vga
SCREEN 9
root3 = SQR(3!)
pi! = 4 * ATN(1!)
debut: 'choix des valeurs par d'faut
rapecran = 1.6 'rapport largeur/hauteur de l''cran
'ce rapport doit ^tre ajust' pour obtenir des graphes PQ corrects
npp = 2! 'nombre de paires de p"les
k = 1! 'rapport de transformation
frequref = 50!
frequ = frequref 'fr'quence statorique
nref = frequref / npp * 60!
pref = 70! 'pertes m'caniques ... la vitesse de r'f'rence
r1 = 4.699 'r'sistance statorique mise en amont des 'l'ments //
r1compl = 4.699 'r'sistance statorique mise en aval des 'l'ments //
x1 = 0! 'r'actance statorique
x2p = 10! 'r'actance rotorique ramen'e au stator
r2p = 4! 'r'sistance rotorique ramen'e au stator
u2seuil = 0! 'seuil de conduction rotorique (contact bague-balais)
rp = 2064! 'r'sistance parallSle statorique
flags% = 1
xmuu = 254! 'r'actance parallSle non satur'e
cnl = 1! / 300! 'inverse de la tension "de saturation"
etnl = 6! 'exposant de la fonction de saturation
u1 = 380!
nrot = 0!
i2n = 0!
u2 = 0!
fp2 = 1!
flagc% = 0
nbexp% = 0
choixsol% = 1
entree: CLS
PRINT "E. Matagne 17-05-2010"
PRINT
'PRINT "Ce programme analyse de fa#on exacte le comportement d'un"
PRINT "Ce programme analyse de façon exacte le comportement d'un"
PRINT "moteur asynchrone triphas' mod'lis'"
PRINT " soit par un circuit 'quivalent en T"
PRINT " soit par un circuit 'quivalent en L (circuit 'quivalent simplifi')"
PRINT
PRINT "Pour obtenir un circuit 'quivalent en L, il suffit d'attribuer"
PRINT " ... la r'sistance statorique Rs (mise en amont)"
PRINT " et ... la r'actance de fuite statorique Xs la valeur z'ro"
GOSUB pourconti
CLS
PRINT "Valeur des paramStres (page 1)"
PRINT
'basin "Nombre de paires de p"les", npp, ""
basin "Nombre de paires de ples", npp, ""
basin "fr'quence d'alimentation statorique", frequ, "Hz"
nsyn = frequ * 60! / npp
PRINT " vitesse de synchronisme = "; nsyn; " t/m"
PRINT
PRINT "Nous supposons les pertes m'caniques dues uniquement ... un couple de"
PRINT " frottement sec."
PRINT
PRINT "Vitesse de r'f'rence pour exprimer les pertes m'caniques (df";
PRINT nref; "t/m) =";
INPUT in$
IF in$ <> "" THEN nref = VAL(in$)
PRINT "pertes m'caniques ..."; nref; "t/m (df"; pref; "W)=";
INPUT in$
IF in$ <> "" THEN pref = VAL(in$)
cfrot = pref / nref * 30! / pi!
COLOR 10
PRINT "Le couple de frottement sec m'canique vaut donc"; cfrot; "Nm"
COLOR 15
PRINT
PRINT "La valeur du rapport de transformation est sans importance si aucune"
PRINT "mesure 'lectrique n'est faite au rotor."
PRINT "Rapport de transformation k de la machine id'ale"
PRINT " (plac' en aval de tout le circuit 'quivalent);"
PRINT "ce rapport est d'fini comme le flux statorique de la machine id'ale"
PRINT " divis' par le flux rotorique."
PRINT " Votre choix k = (df"; k; ")";
INPUT in$
IF in$ <> "" THEN k = VAL(in$)
GOSUB pourconti
CLS
PRINT "Valeur des paramStres (page 2)"
PRINT
PRINT "El'ments s'rie"
PRINT
PRINT "Valeur de la r'sistance statorique Rs (mise en amont)"
PRINT " (Choisissez 0 si vous utilisez un circuit 'quivalent en L)"
PRINT " votre choix (df"; r1; "ohms) =";
INPUT in$
IF in$ <> "" THEN r1 = VAL(in$)
PRINT
PRINT "Valeur de la r'actance de fuite statorique (..."; frequ; "Hz) Xs"
PRINT " (Choisissez 0 si vous reportez toute la r'actance s'rie en aval";
PRINT " des 'l'ments parallSles)"
PRINT " votre choix (df"; x1; "ohms) =";
INPUT in$
IF in$ <> "" THEN x1 = VAL(in$)
IF r1 = 0! THEN
PRINT "r'sistance statorique s'rie Rs"
PRINT " (en aval des 'l'ments parallSles)"
PRINT " votre choix (df"; r1compl; ") =";
INPUT in$
IF in$ <> "" THEN r1compl = VAL(in$)
ELSE
r1compl = 0!
END IF
PRINT
IF x1 = 0! THEN
PRINT "r'actance s'rie 'quivalente (..."; frequ; "Hz) ramen'e au stator Xe'"
ELSE
PRINT "r'actance s'rie rotorique (..."; frequ; "Hz) ramen'e au stator Xr'"
END IF
PRINT " (en aval des 'l'ments parallSles)"
PRINT " votre choix (df"; x2p; "ohms)=";
INPUT in$
IF in$ <> "" THEN x2p = VAL(in$)
PRINT "r'sistance s'rie rotorique ramen'e au stator Rr'"
PRINT " (en aval des 'l'ments parallSles)"
PRINT " votre choix (df"; r2p; "ohms)=";
INPUT in$
IF in$ <> "" THEN r2p = VAL(in$)
PRINT
PRINT "Seuil de conduction des balais rotoriques (en tension de ligne)"
PRINT "Il faut choisir 0 si le court-circuiteur se trouve dans le rotor m^me"
PRINT "Dans le cas contraire, ce paramStre tient compte de fa#on"
PRINT "approch'e de la non-lin'arit' due aux contacts bague-balais"
PRINT "Votre choix (df"; u2seuil; "V) =";
INPUT in$
IF in$ <> "" THEN u2seuil = VAL(in$)
GOSUB pourconti
entmag: CLS
PRINT "Valeur des paramStres (page 3)"
PRINT
PRINT "El'ments parallSle"
PRINT
PRINT "Entrez 0 pour une r'actance de magn'tisation lin'aire"
PRINT " 1 pour une r'actance de magn'tisation non lin'aire"
PRINT " votre choix (df"; flags%; ")=";
INPUT in$
IF in$ <> "" THEN flags% = VAL(in$)
IF flags% <> 0 AND flags% <> 1 THEN GOTO entmag
PRINT
IF flags% = 0 THEN
PRINT "R'actance de magn'tisation Xmu ";
ELSE
PRINT "R'actance de magn'tisation non satur'e Xmuu ";
END IF
PRINT "(df"; xmuu; "ohms) =";
INPUT in$
IF in$ <> "" THEN xmuu = VAL(in$)
IF flags% = 1 THEN
PRINT "La r'actance de magn'tisation non satur'e est divis'e en cours"
PRINT "de calcul par"
PRINT " ( 1 + (cnl * E) ^ etnl )";
PRINT "o-- E est la force 'lectromotrice (de ligne)";
PRINT " au niveau de l'inductance saturable"
PRINT
PRINT "co'fficient de non lin'arit' cnl (df"; cnl; "V^-1) = ";
INPUT in$
IF in$ <> "" THEN cnl = VAL(in$)
PRINT "exposant etnl du terme non lin'aire (df"; etnl; ") =";
INPUT in$
IF in$ <> "" THEN etnl = VAL(in$)
ELSE
cnl = 0!
etnl = 6!
END IF
PRINT
PRINT "R'sistance de pertes magn'tiques rp (df"; rp; "ohms) =";
INPUT in$
IF in$ <> "" THEN rp = VAL(in$)
PRINT

GOSUB pourconti
etat: CLS
PRINT "Tension de ligne statorique Us (df"; u1; "volts) =";
INPUT in$
IF in$ <> "" THEN u1 = VAL(in$)
u1m = u1 / root3
' provisoire
nrothau = 1.3 * nsyn
nrotbas = -.3 * nsyn
zut1 = SQR((r1 + r1compl) * (r1 + r1compl) + (x1 + x2p) * (x1 + x2p))
zut2 = (r1 + r1compl + zut1) * (r1 + r1compl + zut1) + (x1 + x2p) * (x1 + x2p)
zut = u1 * u1 / zut2 * zut1
cmecmax = zut * 60! / nsyn / 2 / pi - cfrot
cmecmin = -zut * 60! / nsyn / 2 / pi - cfrot
cmechau = cmecmax
cmecbas = cmecmin
zut1 = x1 + x2p
qmax = u1 * u1 / (x1 + x2p)
q1hau = qmax
q1bas = 0!
pmax = qmax / 2! + u1 * u1 / rp
pmin = -qmax / 2! + u1 * u1 / rp
p1hau = pmax
p1bas = pmin
PRINT
menu: CLS
PRINT "tension de ligne statorique Us ="; u1; "V (de ligne)"
PRINT
PRINT "menu principal"
PRINT
PRINT "entrez <R> pour revenir aux valeurs par d'faut"
PRINT " <D> pour modifier les donn'es"
PRINT " <E> pour red'finir la vitesse ou la tension statorique"
PRINT " <C> pour analyser un r'gime avec rotor court-circuit'"
PRINT " <U> pour analyser un r'gime ... tension rotorique impos'e"
PRINT " <V> pour analyser un r'gime ... rotor ouvert"
PRINT " <I> pour analyser un r'gime ... courant rotorique impos'"
PRINT " <P> pour entrer ou modifier les points exp'rimentaux"
PRINT " <T> pour tracer le diagramme couple-vitesse"
PRINT " <Q> pour tracer le diagramme PQ (dit du cercle)"
PRINT " <F> pour quitter le programme"
INPUT menu$
IF menu$ = "r" OR menu$ = "R" THEN GOTO debut
IF menu$ = "d" OR menu$ = "D" THEN GOTO entree
IF menu$ = "e" OR menu$ = "E" THEN GOTO etat
IF menu$ = "c" OR menu$ = "C" THEN GOTO court
IF menu$ = "u" OR menu$ = "U" THEN GOTO tension
IF menu$ = "v" OR menu$ = "V" THEN GOTO vide
IF menu$ = "i" OR menu$ = "I" THEN GOTO courant
IF menu$ = "p" OR menu$ = "P" THEN GOTO entpoints
IF menu$ = "t" OR menu$ = "T" THEN GOTO graphe1
IF menu$ = "q" OR menu$ = "Q" THEN GOTO graphe2
IF menu$ = "f" OR menu$ = "F" THEN GOTO fin
GOTO menu


court: CLS
PRINT "Analyse ... rotor court-circuit'"
GOSUB entvitesse
u2 = 0!
phich = 0!
GOTO suitetension

tension: CLS
GOSUB entvitesse
PRINT
PRINT "Analyse pour une tension rotorique Ur impos'e"
PRINT
enttension:
PRINT "amplitude de la tension rotorique (df"; u2; "Veff de ligne)=";
INPUT in$
IF in$ <> "" THEN u2 = VAL(in$)
IF u2 < 0! THEN GOTO enttension
PRINT
IF u2 = 0! THEN
phich = 0!
ELSE
GOSUB entphich
END IF
suitetension: CLS
IF u2 <> 0! THEN
PRINT "Analyse pour une tension rotorique Ur impos'e de";
PRINT u2; "V"
PRINT "angle phi de la charge 'lectrique ="; phich / pi! * 180!; "ø"
ELSE
PRINT "Analyse ... rotor court-circuit'"
END IF
zutr = u2 * COS(phich) + u2seuil
zuti = u2 * SIN(phich)
u2c = SQR(zutr * zutr + zuti * zuti)
IF u2c = 0! THEN
phichc = 0!
ELSE
phichc = argument(zutr, zuti)
END IF
u2cpmn = u2c / root3 * k
GOSUB calcul1
GOTO impr

vide: CLS
GOSUB entvitesse
PRINT "Analyse pour un fonctionnement ... rotor ouvert"
i2n = 0!
phich = 0!
GOTO suitecourant

courant: CLS
GOSUB entvitesse
PRINT "Analyse pour un courant rotorique Ir impos'"
PRINT
entcharge:
PRINT "amplitude du courant de charge (df"; i2n; "Aeff) =";
INPUT in$
IF in$ <> "" THEN i2n = VAL(in$)
IF i2n < 0! THEN GOTO entcharge
PRINT
IF i2n = 0! THEN
phich = 0!
ELSE
GOSUB entphich
END IF
CLS
PRINT "Analyse pour un courant rotorique Ir impos'"
PRINT
suitecourant:
PRINT "courant rotorique ="; i2n; "A"
IF i2n <> 0! THEN PRINT "angle phi de l''l'ment connect' au rotor =";
PRINT phich / pi! * 180!; "ø"
i2pn = i2n / k
xmu = xmuu
nbsol% = 1
choixsol% = 1
nbiter% = 0
itercourant:
nbiter% = nbiter% + 1
xmuold = xmu
GOSUB precalcul
du2cpmn = zen * i2pn
u2c0pmminn = du2cpmn * ABS(SIN(zea - phich))
u2cpmmoyn = -du2cpmn * COS(zea - phich)
IF u2c0pmn < u2c0pmminn THEN
nbsol% = -1
PRINT "Aucune solution exacte ... l'it'ration No"; nbiter%
PRINT "Le programme continue les it'rations avec une solution approch'e"
GOSUB pourconti
u2cpmn = u2cpmmoyn
ELSE
zut = SQR(u2c0pmn * u2c0pmn - u2c0pmminn * u2c0pmminn)
u2cpmn = u2cpmmoyn - zut
IF u2cpmn >= 0! THEN
nbsol% = 2
entchoixsoli:
PRINT "il y a deux solutions ... l'it'ration No"; nbiter%
PRINT "Entrez 1 pour la solution ... plus petite tension U2"
PRINT " 2 pour la solution ... plus grande tension U2"
PRINT " votre choix (df"; choixsol%; ")=";
INPUT in$
IF in$ <> "" THEN choixsol% = VAL(in$)
IF choixsol% < 1 OR choixsol% > 2 THEN GOTO entchoixsoli
ELSE
choixsol% = 2
END IF
IF choixsol% = 2 THEN u2cpmn = u2cpmmoyn + zut
IF u2cpmn >= 0! THEN
nbsol% = 1
ELSE
nbsol% = 0
PRINT "Il y a deux solutions inacceptables ... l'it'ration No"; nbiter%
PRINT "Le programme continue les it'rations avec la moins mauvaise"
GOSUB pourconti
END IF
END IF
zuti = u2cpmn * SIN(zea - phich)
zutr = du2cpmn + u2cpmn * COS(zea - phich)
zut = argument!(zutr, zuti)
i2a = u2c0a + zut - zea
i2pr = i2pn * COS(i2a)
i2pi = i2pn * SIN(i2a)
u2ca = i2a + phich
emr = e0mr - r1p * i2pr + x1p * i2pi
emi = e0mi - r1p * i2pi - x1p * i2pr
emn = SQR(emr * emr + emi * emi)
en = emn * root3
xmu = xmuu / (1! + (cnl * en) ^ etnl)
IF ABS(xmuold - xmu) > .000001 * xmu THEN GOTO itercourant
PRINT "terminaison aprSs "; nbiter%; "it'rations"
u2cpmr = u2cpmn * COS(u2ca)
u2cpmi = u2cpmn * SIN(u2ca)
IF nbsol% = -1 THEN
PRINT "convergence vers un 'tat sans solution"
GOSUB pourconti
GOTO menu
END IF
u2c = u2cpmn / k * root3
u2 = u2c - u2seuil ' provisoire
i2n = i2pn * k
emr = e0mr - r1p * i2pr + x1p * i2pi
emi = e0mi - r1p * i2pi - x1p * i2pr
en = root3 * SQR(emr * emr + emi * emi)
xmu = xmuu / (1 + (cnl * en) ^ etnl)
ymur = 1! / rp
ymui = -1! / xmu
i1r = i2pr + emr * ymur - emi * ymui
i1i = i2pi + emr * ymui + emi * ymur
i1n = SQR(i1r * i1r + i1i * i1i)
u1mr = emr + r1 * i1r - x1 * i1i
u1mi = emi + r1 * i1i + x1 * i1r
p1 = root3 * u1 * i1r
q1 = -root3 * u1 * i1i
ptransm = 3! * (emr * i2pr + emi * i2pi) - 3! * r1compl * i2pn * i2pn
ctransm = ptransm / (2! * pi! * frequ) * npp
GOTO impr

impr:
IF nbsol% = -1 THEN
PRINT "convergence vers un 'tat sans solution"
GOSUB pourconti
GOTO menu
END IF
IF nbsol% = 0 THEN
PRINT "Convergence vers une solution inacceptable."
PRINT "Examinez soigneusement les r'sultats ci-dessous"
END IF
IF nbsol% = 2 THEN
PRINT "convergence vers la plus ";
IF choixsol% = 1 THEN
PRINT "petite"
ELSE
PRINT "grande"
END IF
PRINT " de deux solutions possibles"
END IF
GOSUB pourconti
CLS
PRINT
PRINT "tension rotorique ="; u2; "V (de ligne)"
PRINT "courant rotorique ="; i2n; "A"
PRINT
PRINT "tension rotorique + seuil multipli's par k ="; u2cpm * root3;
PRINT "V (de ligne)"
PRINT "courant rotorique ramen' au stator ="; i2pn; "A"
PRINT
PRINT "force 'lectromotrice rotorique ="; en * ABS(gamma); "V (de ligne)"
PRINT "force 'lectromotrice sur 'l'ments parallSles ="; en; "V (de ligne)"
PRINT "r'actance parallSle ="; xmu; "ohm"
PRINT
COLOR 12
PRINT "courant statorique ="; i1n; "A"
COLOR 15
'PRINT "tension statorique (... titre de contr"le)"
PRINT "tension statorique (... titre de contr le)"
PRINT " = "; u1mr * root3; "+j"; u1mi * root3; "V (de ligne)"
PRINT "facteur de puissance ="; i1r / i1n
PRINT
PRINT "couple 'lectromagn'tique ="; ctransm; "Nm"
COLOR 12
PRINT "couple m'canique ="; cmec; "Nm"
COLOR 15
GOSUB pourconti
CLS
COLOR 12
PRINT "puissance entrant au stator ="; p1; "W"
COLOR 15
PRINT "puissance r'active ="; -root3 * u1 * i1i; "VAr"
PRINT "pertes dans la r'sistance s'rie statorique (amont) = ";
PRINT 3! * r1 * i1n * i1n; "W"
PRINT "pertes dans la r'sistance rp ="; en * en / rp; "W"
PRINT "pertes dans la r'sistance s'rie statorique (aval) = ";
PRINT 3! * r1compl * i2pn * i2pn; "W"
PRINT
PRINT "puissance totale transmise au rotor ="; ptransm; "W"
PRINT
PRINT "puissance 'lectrique re#ue au rotor =";
PRINT ptransm * gamma; "W"
PRINT "puissance dissip'e dans la r'sistance rotorique (partie lin'aire)";
PRINT 3! * r2p * i2pn * i2pn; "W"
PRINT "puissance dissip'e dans le seuil de tension rotorique";
PRINT root3 * u2seuil * i2n
PRINT "puissance totale dissip'e par effet Joule au rotor";
PRINT 3! * r2p * i2pn * i2pn + root3 * u2seuil * i2n
PRINT "puissance 'lectrique fournie par le rotor";
PRINT root3 * u2 * i2n * COS(phich); "W"
PRINT
pconv = ptransm * (1! - gamma)
PRINT "puissance convertie ="; pconv; "W"
pfrot = cfrot * nrot / 30! * pi!
PRINT "pertes m'caniques ="; pfrot; "W"
pmec = pconv - pfrot
COLOR 12
PRINT "puissance m'canique utile ="; pmec; "W"
COLOR 15
PRINT " soit"; pmec / 75 / 9.806; "CV"
PRINT " ou encore"; pmec / 745.7; "HP"
PRINT
PRINT "rendement = "; pmec / p1 * 100!; "%"
GOSUB pourconti
GOTO menu

entvitesse:
PRINT "Vitesse de rotation (df"; nrot; "t/m) =";
INPUT in$
IF in$ <> "" THEN nrot = VAL(in$)
gamma = 1! - nrot / (frequ * 60! / npp)
PRINT
PRINT "glissement = "; gamma
PRINT "fr'quence rotorique ="; frequ * gamma; "Hz"
RETURN

entpoints: CLS
IF nbexp% > 0 THEN nbexpold% = nbexp%
PRINT "nombre de points exp'rimentaux (df "; nbexp%; ") =";
INPUT in$
IF in$ <> "" THEN nbexp% = VAL(in$)
IF nbexp% > 0 THEN
IF nbexpold% <> nbexp% THEN
REDIM pexp1(1 TO nbexp%), pexp2(1 TO nbexp%)
REDIM pexp3(1 TO nbexp%), pexp4(1 TO nbexp%)
END IF
FOR noexp% = 1 TO nbexp%
PRINT
PRINT "Point No"; noexp%
PRINT "Vitesse de rotation (df"; pexp1(noexp%); "t/m) =";
INPUT in$
IF in$ <> "" THEN pexp1(noexp%) = VAL(in$)
PRINT "Couple utile Cr (df"; pexp2(noexp%); "Nm) =";
INPUT in$
IF in$ <> "" THEN pexp2(noexp%) = VAL(in$)
PRINT "Puissance active (df"; pexp3(noexp%); "W) =";
INPUT in$
IF in$ <> "" THEN pexp3(noexp%) = VAL(in$)
PRINT "Puissance r'active (df"; pexp4(noexp%); "VAr) =";
INPUT in$
IF in$ <> "" THEN pexp4(noexp%) = VAL(in$)
NEXT noexp%
pexp1bas = pexp1(1)
pexp1hau = pexp1(1)
pexp2bas = pexp2(1)
pexp2hau = pexp2(1)
pexp3bas = pexp3(1)
pexp3hau = pexp3(1)
pexp4bas = pexp4(1)
pexp4hau = pexp4(1)
FOR noexp% = 1 TO nbexp%
IF pexp1(noexp%) < pexp1bas THEN pexp1bas = pexp1(noexp%)
IF pexp1(noexp%) > pexp1hau THEN pexp1hau = pexp1(noexp%)
IF pexp2(noexp%) < pexp2bas THEN pexp2bas = pexp2(noexp%)
IF pexp2(noexp%) > pexp2hau THEN pexp2hau = pexp2(noexp%)
IF pexp3(noexp%) < pexp3bas THEN pexp3bas = pexp3(noexp%)
IF pexp3(noexp%) > pexp3hau THEN pexp3hau = pexp3(noexp%)
IF pexp4(noexp%) < pexp4hau THEN pexp4bas = pexp4(noexp%)
IF pexp4(noexp%) > pexp4hau THEN pexp4hau = pexp4(noexp%)
NEXT noexp%
END IF
GOSUB pourconti
GOTO menu

graphe1: CLS
menu$ = "t"
u2 = 0!
phich = 0!
u2c = u2seuil
phichc = 0!
u2cpmn = u2c / root3 * k
IF nbexp% > 0 THEN
PRINT "vitesse exp'rimentale la plus 'lev'e =";
PRINT pexp1hau; "t/m"
END IF
PRINT "extr'mit' sup'rieure de l''chelle des vitesses (df"; nrothau; "t/m) =";
INPUT in$
IF in$ <> "" THEN nrothau = VAL(in$)
IF nbexp% > 0 THEN PRINT "vitesse exp'rimentale la plus faible =";
PRINT pexp1bas; "Nm"
PRINT "extr'mit' inf'rieure de l''chelle des vitesses (df"; nrotbas; "t/m) =";
INPUT in$
IF in$ <> "" THEN nrotbas = VAL(in$)
nrotgrad = (nrothau - nrotbas) / 20!
PRINT "'cart entre deux graduations de vitesse (df"; nrotgrad; "t/m) =";
INPUT in$
IF in$ <> "" THEN nrotgrad = VAL(in$)
nrotinc = (nrothau - nrotbas) / 50!
IF nbexp% > 0 THEN PRINT "couple exp'rimental le plus 'lev' ="; pexp2hau; "Nm"
PRINT "Extr'mit' sup'rieure de l''chelle des couples (df"; cmechau; "Nm) =";
INPUT in$
IF in$ <> "" THEN cmechau = VAL(in$)
IF nbexp% > 0 THEN PRINT "couple exp'rimental le plus bas ="; pexp2bas; "Nm"
PRINT "extr'mit' inf'rieure de l''chelle de couple (df"; cmecbas; "Nm) =";
INPUT in$
IF in$ <> "" THEN cmecbas = VAL(in$)
cmecgrad = (cmechau - cmecbas) / 20! * rapecran
PRINT "'cart entre deux graduations de couple (df"; cmecgrad; "Nm) =";
INPUT in$
IF in$ <> "" THEN cmecgrad = VAL(in$)
cmecinc = (cmechau - cmecbas) * rapecran / 50!
CLS
WINDOW (nrotbas, cmecbas)-(nrothau, cmechau)
PRINT "diagramme couple-vitesse 1 graduation horizontale ="; nrotgrad;
PRINT "t/m";
PRINT " 1 graduation verticale ="; cmecgrad;
PRINT "Nm";
LINE (0, cmecbas)-(0, cmechau)
LINE (nrotbas, 0)-(nrothau, 0)
FOR zut = 0! TO nrothau STEP nrotgrad
LINE (zut, -cmecinc)-(zut, cmecinc)
NEXT zut
FOR zut = 0! TO nrotbas STEP -nrotgrad
LINE (zut, -cmecinc)-(zut, cmecinc)
NEXT zut
FOR zut = 0! TO cmechau STEP cmecgrad
LINE (-nrotinc, zut)-(nrotinc, zut)
NEXT zut
FOR zut = 0! TO cmecbas STEP -cmecgrad
LINE (-nrotinc, zut)-(nrotinc, zut)
NEXT zut
IF nbexp% > 0 THEN
FOR noexp% = 1 TO nbexp%
nrotexp = pexp1(noexp%)
cmecexp = pexp2(noexp%)
LINE (nrotexp - nrotinc, cmecexp - cmecinc)-(nrotexp + nrotinc, cmecexp + cmecinc)
LINE (nrotexp + nrotinc, cmecexp - cmecinc)-(nrotexp - nrotinc, cmecexp + cmecinc)
gamma = 1! - pexp1(noexp%) / (frequ * 60! / npp)
NEXT noexp%
END IF
nrot = nrotbas
FOR i% = 1 TO 199
nrot = nrot + nrotinc
gamma = 1! - nrot / nsyn
GOSUB calcul1
IF i% <> 1 THEN LINE (nrotold, cmecold)-(nrot, cmec)
nrotold = nrot
cmecold = cmec
NEXT i%
INPUT dummy$
GOTO menu





graphe2: CLS
menu$ = "q"
u2 = 0!
phich = 0!
u2c = u2seuil
phichc = 0!
u2cpmn = u2c / root3 * k
PRINT "rapport entre largeur et hauteur de l''cran (df"; rapecran; ") =";
INPUT in$
IF in$ <> "" THEN rapecran = VAL(in$)
IF nbexp% > 0! THEN
PRINT "puissance active exp'rimentale la plus 'lev'e"; pexp3hau; "W"
END IF
PRINT "extr'mit' de l''chelle des puissances (df"; p1hau; "VA) =";
INPUT in$
IF in$ <> "" THEN p1hau = VAL(in$)
IF nbexp% > 0! THEN
PRINT "puissance active exp'rimentale la plus basse"; pexp3bas; "W"
END IF
PRINT "extr'mit' inf'rieure de l''chelle des puissances actives (df";
PRINT p1bas; "VA) =";
INPUT in$
IF in$ <> "" THEN p1bas = VAL(in$)
q1hau = (p1hau - p1bas) * (rapecran + 1!) / 2!
IF nbexp% > 0! THEN
PRINT "puissance r'active exp'rimentale la plus 'lev'e"; pexp4hau; "W"
END IF
PRINT "extr'mit' sup'rieure de l''chelle des puissances r'actives(df";
PRINT q1hau; "VAr) =";
INPUT in$
IF in$ <> "" THEN q1hau = VAL(in$)
q1bas = q1hau - rapecran * (p1hau - p1bas)
PRINT "l'extr'mit' inf'rieure de l''chelle des puissances r'actives est";
PRINT "donc de"; q1bas; "VAr"
pgrad = (p1hau - p1bas) / 20!
PRINT "'cart entre les graduations des axes (df"; pgrad; "VA) =";
INPUT in$
IF in$ <> "" THEN pgrad = VAL(in$)
pinc = pgrad / 3!
CLS
WINDOW (q1bas, p1bas)-(q1hau, p1hau)
PRINT "diagramme P-Q 1 graduation horizontale ="; pgrad; "VAr"
PRINT " 1 graduation verticale ="; pgrad; "W";
LINE (0, p1bas)-(0, p1hau)
LINE (q1bas, 0)-(q1hau, 0)
FOR zut = 0! TO p1hau STEP pgrad
LINE (-pinc, zut)-(pinc, zut)
NEXT zut
FOR zut = 0! TO p1bas STEP -pgrad
LINE (-pinc, zut)-(pinc, zut)
NEXT zut
FOR zut = 0 TO q1hau STEP pgrad
LINE (zut, -pinc)-(zut, pinc)
NEXT zut
FOR zut = 0 TO q1bas STEP -pgrad
LINE (zut, -pinc)-(zut, pinc)
NEXT zut
IF nbexp% > 0 THEN
FOR noexp% = 1 TO nbexp%
p1exp = pexp3(noexp%)
q1exp = pexp4(noexp%)
LINE (q1exp - pinc, p1exp - pinc)-(q1exp + pinc, p1exp + pinc)
LINE (q1exp + pinc, p1exp - pinc)-(q1exp - pinc, p1exp + pinc)
gamma = 1! - pexp1(noexp%) / (frequ * 60! / npp)
GOSUB calcul1
COLOR 12
LINE (q1, p1)-(q1exp, p1exp)
COLOR 15
NEXT noexp%
END IF
anglaux = -pi / 2!
FOR i% = 1 TO 199
anglaux = anglaux + pi / 200!
gamma = r2p / (x1 + x2p) * TAN(anglaux)
GOSUB calcul1
IF i% <> 1 THEN LINE (q1old, p1old)-(q1, p1)
q1old = q1
p1old = p1
NEXT i%
INPUT dummy$
GOTO menu






calcul1:
xmu = xmuu
nbiter% = 0
itertension:
nbiter% = nbiter% + 1
xmuold = xmu
GOSUB precalcul
u2c0pmminn = u2cpmn * ABS(SIN(zea - phichc))
du2cpmmoyn = -u2cpmn * COS(zea - phichc)
nbsol% = -1
IF u2c0pmn >= u2c0pmminn THEN
nbsol% = 0
zut = SQR(u2c0pmn * u2c0pmn - u2c0pmminn * u2c0pmminn)
du2cpmn = du2cpmmoyn + zut
IF du2cpmn >= 0! THEN nbsol% = 1
du2cpmn = du2cpmmoyn - zut
IF du2cpmn >= 0! THEN nbsol% = 2
END IF
IF nbsol% <= 0 THEN
BEEP
REM SOUND 440, 10
IF menu$ <> "q" AND menu$ <> "t" THEN
PRINT "Aucune solution exacte ... l'it'ration No"; nbiter%
PRINT "Le programme continue les it'rations ... i2 nul"
GOSUB pourconti
END IF
i2pn = 0!
i2a = 0!
ELSE
IF nbsol% = 1 OR choixsol% = 1 THEN du2cpmn = du2cpmmoyn + zut
zutr = u2cpmn + du2cpmn * COS(zea - phichc)
zuti = du2cpmn * SIN(zea - phichc)
zut = argument!(zutr, zuti)
u2ca = u2c0a - zut
u2cpmr = u2cpmn * COS(u2ca)
u2cpmi = u2cpmn * SIN(u2ca)
du2cpmr = u2c0pmr - u2cpmr
du2cpmi = u2c0pmi - u2cpmi
du2cpmn = SQR(du2cpmr * du2cpmr + du2cpmi * du2cpmi)
i2pn = du2cpmn / zen
i2a = u2ca - phichc
END IF
i2pr = i2pn * COS(i2a)
i2pi = i2pn * SIN(i2a)
emr = e0mr - r1p * i2pr + x1p * i2pi
emi = e0mi - r1p * i2pi - x1p * i2pr
emn = SQR(emr * emr + emi * emi)
en = emn * root3
xmu = xmuu / (1! + (cnl * en) ^ etnl)
IF ABS(xmuold - xmu) > .00001 * xmu THEN GOTO itertension
IF menu$ <> "q" AND menu$ <> "t" THEN PRINT "terminaison aprSs "; nbiter%; "it'rations"
i2n = i2pn * k
i1r = i2pr + emr * ymur - emi * ymui
i1i = i2pi + emr * ymui + emi * ymur
i1n = SQR(i1r * i1r + i1i * i1i)
p1 = root3 * u1 * i1r
q1 = -root3 * u1 * i1i
u1mr = emr + r1 * i1r - x1 * i1i
u1mi = emi + r1 * i1i + x1 * i1r
ptransm = 3! * (emr * i2pr + emi * i2pi) - 3! * r1compl * i2pn * i2pn
ctransm = ptransm / (2! * pi! * frequ) * npp
cmec = ctransm - cfrot
RETURN

entphich:
PRINT "entrez -1 pour une charge capacitive"
PRINT " 0 pour une charge purement r'sistive"
PRINT " 1 pour une charge inductive"
PRINT " votre choix (df"; flagc%; ") =";
INPUT in$
IF in$ <> "" THEN flagc% = VAL(in$)
IF flagc% < -1 OR flagc% > 1 THEN GOTO entphich
IF flagc% = 0 THEN
phich = 0!
RETURN
END IF
entfact:
PRINT "facteur de puissance de la charge (df"; fp2; ") =";
INPUT in$
IF in$ <> "" THEN fp2 = VAL(in$)
IF fp2 < -1! OR fp2 > 1! THEN GOTO entfact
phich = ATN((1! - fp2 * fp2) / fp2)
IF phich < 0! THEN phich = phich + pi!
IF flagc% = -1 THEN phich = -phich
RETURN

entchoixsolt:
PRINT "s'il y a deux solutions acceptables"
PRINT "Entrez 1 pour la solution ... plus petit courant I2"
PRINT " 2 pour la solution ... plus grand courant I2"
PRINT "votre choix (df"; choixsol%; ")=";
INPUT in$
IF in$ <> "" THEN choixsol% = VAL(in$)
IF choixsol% < 1 OR choixsol% > 2 THEN GOTO entchoixsolt
RETURN


precalcul:
ymur = 1 / rp
ymui = -1 / xmu
denom = ymur * ymyr + ymui * ymui
zmur = ymur / denom
zmui = -ymui / denom
zutr = r1 + zmur
zuti = x1 + zmui
denom = zutr * zutr + zuti * zuti
y0r = zutr / denom
y0i = -zuti / denom
rappr = zmur * y0r - zmui * y0i
rappi = zmur * y0i + zmui * y0r
e0mr = u1m * rappr
e0mi = u1m * rappi
u2c0pmr = e0mr * gamma
u2c0pmi = e0mi * gamma
u2c0pmn = SQR(u2c0pmr * u2c0pmr + u2c0pmi * u2c0pmi)
u2c0a = argument!(u2c0pmr, u2c0pmi)
denom = r1 * r1 + x1 * x1
IF denom = 0! THEN
r1p = 0!
x1p = 0!
ELSE
zutr = r1 / denom + 1 / rp
zuti = -x1 / denom - 1 / xmu
denom = zutr * zutr + zuti * zuti
r1p = zutr / denom
x1p = -zuti / denom
END IF
rep = (r1p + r1compl) * gamma + r2p
xep = (x1p + x2p) * gamma
denom = rep * rep + xep * xep
zen = SQR(denom)
zea = argument!(rep, xep)
yer = rep / denom
yei = -xep / denom
RETURN

pourconti: PRINT
PRINT "pressez <enter> pour continuer";
INPUT dummy$
RETURN

fin: END

FUNCTION argument! (X!, y!)
IF X! * X! + y! * y! = 0! THEN
PRINT "argument ind'termin'"
BEEP
REM SOUND 100, 10
argument! = 0!
ELSEIF ABS(y!) <= ABS(X!) THEN
zut = ATN(y! / X!)
IF X! > 0! THEN
argument! = zut
ELSE
argument! = zut + pi!
END IF
ELSE
zut = ATN(X! / y!)
IF y! > 0! THEN
argument! = pi! / 2 - zut
ELSE
argument! = 3 * pi! / 2 - zut
END IF
END IF
END FUNCTION

SUB basin (a$, g!, b$)
PRINT " "; a$; " (df "; g!; " "; b$; ")= ";
INPUT in$
IF in$ <> "" THEN g! = VAL(in$)
END SUB
0
Samiracle Messages postés 23 Date d'inscription mardi 23 avril 2013 Statut Membre Dernière intervention 25 janvier 2015 1
11 mai 2013 à 18:29
Bonsoir ;
dsl mais j'ai pas compris ce que tu voulais me dire , tu les a corriger et puis tu a recopier le programme ici ? :p
0