################################################################################
# #
# Modele du MOTEUR #
# #
# incluant l'equation mecanique de la machine #
# et le calcul des valeurs "moyennes instantanees" des couples moteurs #
# #
################################################################################
# #
# p = nbre de paires de poles #
# #
################################################################################
template moteur t1 t2 t3 omega = r,l,ke,Cfric,Fv,kr,j,p,a1,a3,a5,a7,a9,\
a11,a13,a15,a17,a19,vitesse_initiale,\
ias_initial,ibs_initial,ics_initial
#Declaration des points de connection :
electrical t1,t2,t3
rotational_vel omega
#Declaration des parametres (d'entree) du moteur :
#- parametres electriques :
number r=100m,l=100u,ke=1,p=1
#- parametres mecaniques :
number Cfric=0,Fv=0,kr=0,j=0
#- coefficients de Fourier de la fcem :
number a1=1,a3=0,a5=0,a7=0,a9=0,a11=0,a13=0,a15=0,a17=0,a19=0
#- conditions initiales (avec leurs valeurs par defaut) :
number vitesse_initiale=0,ias_initial=0,ibs_initial=0,ics_initial=0
{
#Declaration du point neutre electrique de la machine :
electrical Neutre
#Declaration des variables continues :
var ang_rad theta_elec
var i ias,ibs,ics
var p pelecrtm,pemagrtm,pmecartm
var tq_Nm couple_resultant,crtm,tertm
val w_rpm N
val tq_Nm te
val nu e1,e2,e3
val v vas,vbs,vcs,cemfa,cemfb,cemfc
val p pertes_emag_moyen,pertes_meca_moyen,pertes_totales_moyen
val p p_elec,p_emag,p_meca,pertes_emag,pertes_meca,pertes_totales
#Declaration des variables discretes :
state time t0
state nu enable
state tq_Nm couple_moyen,te_moyen
state p p_elec_moyen,p_emag_moyen,p_meca_moyen
#Declaration des constantes :
number ang,kon,omega_initial
<consts.sin
parameters {
#Definition des constantes :
ang=2*math_pi/3 #Dephasage des fem dans un moteur triphase
kon=30/math_pi #Coefficient de conversion rad/s ==> tr/min
omega_initial=vitesse_initiale/kon #Vitesse initial en rad/s
}
when (dc_init|time_init) {
#Initialisation des variables discretes :
schedule_event(time,t0,0)
schedule_event(time,enable,1)
schedule_event(time,te_moyen,0)
schedule_event(time,couple_moyen,0)
schedule_event(time,p_elec_moyen,0)
schedule_event(time,p_emag_moyen,0)
schedule_event(time,p_meca_moyen,0)
schedule_next_time(time)
}
when (threshold(cemfa,0)) {
#A chaque demi-periode de cemfa :
schedule_event(time,t0,time)
schedule_event(time,enable,0)
schedule_event(time,te_moyen,tertm)
schedule_event(time,couple_moyen,crtm)
schedule_event(time,p_elec_moyen,pelecrtm)
schedule_event(time,p_emag_moyen,pemagrtm)
schedule_event(time,p_meca_moyen,pmecartm)
schedule_next_time(time)
}
when (event_on(enable)) {
#Lorsqu'il y a un changement d'etat de "enable" :
if (enable==0) {
schedule_event(time+1n,enable,1)
schedule_next_time(time+1n)
}
}
values {
#Definition de la vitesse de rotation en tours/minute "N" :
N=kon*w_radps(omega)
#Definition des tensions simples aux bornes des differentes phases :
vas=v(t1)-v(Neutre)
vbs=v(t2)-v(Neutre)
vcs=v(t3)-v(Neutre)
#Definition de la forme des fcem aux bornes des differentes phases :
e1=a1*cos(theta_elec)+a3*cos(3*theta_elec)+a5*cos(5*theta_elec)\
+a7*cos(7*theta_elec)+a9*cos(9*theta_elec)+a11*cos(11*theta_elec)\
+a13*cos(13*theta_elec)+a15*cos(15*theta_elec)+a17*cos(17*theta_elec)\
+a19*cos(19*theta_elec)
e2=a1*cos(theta_elec-ang)+a3*cos(3*(theta_elec-ang))\
+a5*cos(5*(theta_elec-ang))+a7*cos(7*(theta_elec-ang))\
+a9*cos(9*(theta_elec-ang))+a11*cos(11*(theta_elec-ang))\
+a13*cos(13*(theta_elec-ang))+a15*cos(15*(theta_elec-ang))\
+a17*cos(17*(theta_elec-ang))+a19*cos(19*(theta_elec-ang))
e3=a1*cos(theta_elec+ang)+a3*cos(3*(theta_elec+ang))\
+a5*cos(5*(theta_elec+ang))+a7*cos(7*(theta_elec+ang))\
+a9*cos(9*(theta_elec+ang))+a11*cos(11*(theta_elec+ang))\
+a13*cos(13*(theta_elec+ang))+a15*cos(15*(theta_elec+ang))\
+a17*cos(17*(theta_elec+ang))+a19*cos(19*(theta_elec+ang))
#Definition des fcem simples aux bornes des differentes phases :
cemfa=ke*e1*w_radps(omega)
cemfb=ke*e2*w_radps(omega)
cemfc=ke*e3*w_radps(omega)
#Definition du couple electromagnetique du moteur :
te=ke*(ias*e1+ibs*e2+ics*e3)
#Definition des puissances :
#- puissance electromagnetique delivree par le moteur :
p_emag=te*w_radps(omega)
#- puissance electrique consommee par le moteur :
p_elec=vas*ias+vbs*ibs+vcs*ics
#- puissance mecanique delivree par le moteur :
p_meca=couple_resultant*w_radps(omega)
#Definition des pertes :
#- pertes electro-magnetiques dans le moteur :
pertes_emag=p_elec-p_emag
pertes_emag_moyen=p_elec_moyen-p_emag_moyen
#- pertes mecaniques du moteur :
pertes_meca=p_emag-p_meca
pertes_meca_moyen=p_emag_moyen-p_meca_moyen
#- pertes totales du moteur :
pertes_totales=p_elec-p_meca
pertes_totales_moyen=p_elec_moyen-p_meca_moyen
}
control_section {
#Definition des conditions initiales :
initial_condition(crtm,0)
initial_condition(tertm,0)
initial_condition(pelecrtm,0)
initial_condition(pemagrtm,0)
initial_condition(pmecartm,0)
initial_condition(v(Neutre),0)
initial_condition(theta_elec,0)
initial_condition(ias,ias_initial)
initial_condition(ibs,ibs_initial)
initial_condition(ics,ics_initial)
initial_condition(w_radps(omega),omega_initial)
}
equations {
#Definition des courants dans les differentes phases :
i(t1->Neutre)+=ias
i(t2->Neutre)+=ibs
i(t3->Neutre)+=ics
ias: vas=r*ias+d_by_dt(l*ias)+cemfa
ibs: vbs=r*ibs+d_by_dt(l*ibs)+cemfb
ics: vcs=r*ics+d_by_dt(l*ics)+cemfc
#Definition du couple resultant sur l'arbre du moteur :
couple_resultant: couple_resultant=te-Cfric-Fv*w_radps(omega)\
-kr*w_radps(omega)*w_radps(omega)\
-d_by_dt(j*w_radps(omega))
tq_Nm(omega)+=couple_resultant
#Definition de "theta_meca" :
theta_elec: p*w_radps(omega)=d_by_dt(theta_elec)
#Definition des "valeurs moyennes instantanees" :
#- couple electromagnetique moyen :
tertm: d_by_dt(tertm*(time-t0))=enable*te
tertm: tertm=enable*tertm
#- couple resultant moyen :
crtm: d_by_dt(crtm*(time-t0))=enable*couple_resultant
crtm: crtm=enable*crtm
#- puissance electrique moyenne absorbee :
pelecrtm: d_by_dt(pelecrtm*(time-t0))=enable*p_elec
pelecrtm: pelecrtm=enable*pelecrtm
#- puissance electromagnetique moyenne :
pemagrtm: d_by_dt(pemagrtm*(time-t0))=enable*p_emag
pemagrtm: pemagrtm=enable*pemagrtm
#- puissance mecanique moyenne transmise :
pmecartm: d_by_dt(pmecartm*(time-t0))=enable*p_meca
pmecartm: pmecartm=enable*pmecartm
}
}