################################################################################ # # # 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 } }