Edit me

Notas acerca del estado del arte de la maquina sincrona

Lista de libros y modelos

  • Fraile Mora
    • resumen de la pagina 416 y 417 reaccion de polos salientes
  • Krause control, [Krause,Wasynczuk,Sudhoff]analyisOfElectricalMachineryandDriveSystems
    • pag 36, circuito de la maquina de polos salientes,
    • pag 193 ecuaciones dinamica
    • linealizacion 316
    • maquina reducida de orden 342,357
  • Chapma, circuito equivalente

  • Dynamic Simulation of Electric Machine using Matlab, cheen - pag 309, modelo con kd - permanent magnets pag 311 - tres fases, pag 323 - seis fases, pag 340-350 -

Modelado mátemático según Krause

De acuerdo a la documentación de matlab, el modelo proporcionado por la toolbox se basa en el libro de krause (Analysis of Electric Machine, página 122, máquina de tres fases, dos polos, de imanes permanentes). Las ecuaciones son las siguientes

\[\begin{align*} &\bf{v}_{abc,s}=\bf{r}_s \bf{i}_{abc,s} + p \bf{\lambda}_{abc,s}\\ \bf{\lambda}_{abc,s}&=\bf{L}_s \bf{i}_{abc,s} + \bf{\lambda}^{'}_m\\ T_e&=J\left( \frac{2}{p}p \omega_r \right) + B_m\left( \frac{2}{p}\omega_r \right) + T_L \end{align*}\]

Recuerde p, es el operador derivada

NOTE REVISAR SECCION-> VOLTAGE AND TORQUE EQUATIONS IN ROTOR REFERENCE-FRAME VARIABLES –> pag 126

Las ecuaciones a implementar son: 4.3-10 hasta 4.3.12

Modelo basado en kundur

REVISAR ESTO CON ALBERTO EN MODELICA D:\wk_matlab\uc3m\mt\pc104\Matlab\Motors\SYNgnrt\Kundur\mdl\aux2 inicializacion, ok 2021

Proceso de Modelado

En este apartado se explica el proceso de inicialización de la máquina. En la figura se presenta la captura de pantalla del modelo realizado en simulink

matlab sim
Simulation machine syncrhonous

En los siguientes directorio se tiene:

  • Modelado del motor
  • Medidas PQ
  • Datos del motor
addpath('D:\wk_matlab\uc3m\mt\pc104\Matlab\MyComputePrg\MtrSincr')
addpath('D:\wk_matlab\uc3m\mt\pc104\Matlab\MyComputePrg\medidas')
addpath('D:\wk_matlab\uc3m\mt\pc104\Matlab\DataSheet');dtGenSin31300V_v1

Modelado de las ecuaciones

Se emplea el modelo de octavo orden

% Calculate operating characteristics of synchronous machine
function [sys,x0,str,ts]=SynMachine8th(t,x,u,flag,d,ini)
% State variables       x:      [flux_d flux_fd flux_1d flux_q flux_1q flux_2q inc_wr delta]
% Inputs                u:      [ed efd eq Tm]
% Outputs               y:      [id ifd iq inc_wr delta Te]
% Inicial conditions    ini:    [flux_d flux_fd flux_1d flux_q flux_1q flux_2q inc_wr delta]
switch flag,
    case 0, [sys,x0,str,ts]=mdlInitializeSizes(d,ini);
    case 1, sys=mdlDerivatives(t,x,u,d);
    case 3, sys=mdlOutputs(t,x,u,d);
    case {2,4,9},   sys=[];
    otherwise,   error(['Unhandled flag=',num2str(flag)]);
end

function [sys,x0,str,ts]=mdlInitializeSizes(d,ini)
 global invL 
    sizes = simsizes;     sizes.NumContStates  =8;    sizes.NumDiscStates  =0;
    sizes.NumOutputs     =6;   sizes.NumInputs      =4;    sizes.DirFeedthrough =0;
    sizes.NumSampleTimes =1;    sys = simsizes(sizes);    x0=ini;     str=[];       ts=[0 0]; 
    L_d=[-d.Ld d.Lad d.Lad;-d.Lad d.Lffd d.Lad;-d.Lad d.Lad d.L11d];
    L_q=[-d.Lq d.Laq d.Laq;-d.Laq d.L11q d.Laq;-d.Laq d.Laq d.L22q];
    L=[L_d zeros(3);zeros(3) L_q];
    invL=inv(L);
        
function sys=mdlDerivatives(t,x,u,d)   
 global invL
i_total=invL*x(1:6);
id=i_total(1);ifd=i_total(2);i1d=i_total(3);iq=i_total(4);i1q=i_total(5);i2q=i_total(6);
Te=x(1)*iq-x(4)*id;
wr=1+x(7); %wr=1pu+inc_wr
dflux_d=d.w_base*(u(1)+x(4)*wr+d.Ra*id);
dflux_fd=d.w_base*(u(2)-d.Rfd*ifd);
dflux_1d=d.w_base*(-d.R1d*i1d);
dflux_q=d.w_base*(u(3)-x(1)*wr+d.Ra*iq);
dflux_1q=d.w_base*(-d.R1q*i1q);
dflux_2q=d.w_base*(-d.R2q*i2q);
dinc_wr=(u(4)-Te-d.Kd*x(7))/(2*d.H);
ddelta=x(7)*d.w_base;
sys=[dflux_d;dflux_fd;dflux_1d;dflux_q;dflux_1q;dflux_2q;dinc_wr;ddelta];

function sys=mdlOutputs(t,x,u,d)
global invL 
i_total=invL*x(1:6);
id=i_total(1);ifd=i_total(2);iq=i_total(4);
Te=x(1)*iq-x(4)*id;
wr=1+x(7); %wr=1pu+inc_wr
sys=[id;ifd;iq;x(7);x(8);Te];

importante este modelo depende el que se usa

Inicialización del modelo

%Valores de consigna.
addpath('D:\wk_matlab\uc3m\mt\pc104\Matlab\MyComputePrg\MtrSincr')
addpath('D:\wk_matlab\uc3m\mt\pc104\Matlab\MyComputePrg\medidas')
addpath('D:\wk_matlab\uc3m\mt\pc104\Matlab\DataSheet');dtGenSin31300V_v1
%ini=[flux_d0;flux_fd0;flux_1d0;flux_q0;flux_11q0;flux_22q0;inc_wr0;delta0];

ed0=0.5993;  eq0=0.8005;     
P0=1;     Q0=0;   delta0=0;  % valores consigna
efd0=0;   Tm0=0;    % estos valores deben ser cero

disp(sprintf('\t 1).  Operating Point Specifics Define '));
disp(sprintf('\t \t \t-  Stator P0=  %d',P0));
disp(sprintf('\t \t \t-  Stator Q0= %d',Q0));
disp(sprintf('\t \t \t- delta0  = %d ',delta0));
disp(sprintf('\t  Unknown: efd0 Tm0 '));  

NameModel='SymMtrSin8th';
Model_spec = operspec(NameModel) ; % obtiene el punto de operacion

NameBlockOutAdd='SymMtrSin8th/out2';
Model_spec=addoutputspec(Model_spec,NameBlockOutAdd,1);
Model_spec=addoutputspec(Model_spec,NameBlockOutAdd,2);
Model_spec=addoutputspec(Model_spec,NameBlockOutAdd,3);

Model_spec.States(1).Known= [0 0 0 0 0 0 0 1]'; 
Model_spec.States(1).x = [0 0 0 0 0 0 0 delta0]';

Model_spec.Input(1).Known = 1; Model_spec.Input(1).u = 0;
Model_spec.Input(2).Known = 0; Model_spec.Input(2).u = efd0;
Model_spec.Input(3).Known = 1; Model_spec.Input(3).u = 0;
Model_spec.Input(4).Known = 0; Model_spec.Input(4).u = Tm0;
%[P0 Q0 delta0]
Model_spec.Outputs(1).Known=1; Model_spec.Outputs(1).y= P0;
Model_spec.Outputs(2).Known=1; Model_spec.Outputs(2).y= Q0;
Model_spec.Outputs(3).Known=0; Model_spec.Outputs(3).y=delta0;

[Model_op,op_report]=findop(NameModel,Model_spec);
ini=Model_op.States.x; 
efd0= Model_op.Input(2).u
Tm0 = Model_op.Input(4).u

En esta parte se tiene la inicialización, con la función addoutputspec y se calcula con el comando findop.

Datos del motor

% loading machine parameters for synchronous machine
clear all; close all; clc
%...Description Parameters                     
%   Snom => rated power      [VA]        p =>   pair of poles      
%   f    => rated frequency  [Hz]        nr =>  nominal speed  [rpm]
%   Vll  => peak value of rated phase voltage [V]  rms
% MAIN
f_red=50; Sn = 31.3e3 ; Vrms = 400 ; f_base = f_red ; pp=2;
% MACHINE PU
d.Ra=0.04186 ; d.Ll=0.063 ; 
d.Lad=1.497 ; d.Laq=0.717;
d.Rfd=0.02306; d.Lffd=0.1381+d.Lad;
d.R1d=0.1118 ; d.L11d=0.1858+d.Lad;
d.R1q=0.09745 ; d.L11q=0.1258+d.Laq;
d.R2q=0; d.L22q=0.0;
d.H=0.08671; d.Ld=d.Lad+d.Ll; d.Lq=d.Laq+d.Ll;
d.Kd=0;
Ra=d.Ra ; Lad=d.Lad ; Laq=d.Laq;
Ll=d.Ll ; H=d.H; Ld=d.Ld ; Lq=d.Lq;
Rfd=d.Rfd ; Lffd=d.Lffd;
R1d=d.R1d ; L11d=d.L11d;
R1q=d.R1q ; L11q=d.L11q;
R2q=d.R2q ; L22q=d.L22q;
% BASE VALUES
S_base=Sn ; es_base=Vrms*sqrt(2/3);
is_base=2/3*S_base/es_base;
w_base=2*pi*f_base; d.w_base=w_base; %adding w_base to 'd' structure
wm_base=w_base/pp;
Zs_base=es_base/is_base;
Ls_base=Zs_base/w_base;
fluxs_base=Ls_base*is_base;
T_base=S_base/wm_base;
t_base=1/w_base;
%INIT VALUES************************************
%TERMINAL VALUES (per unit)
Pt= 31.3e3/S_base ; Qt=0/S_base;
Ut=1;
It=sqrt(Pt^2+Qt^2)/Ut;
fdp=Pt/Ut/It;
fi=acos(fdp);
%LOAD ANGLE;
delta_i=atan( (Lq*It*cos(fi)-Ra*It*sin(fi) ) / (Ut+Ra*It*cos(fi)+Lq*It*sin(fi)) );
%dq VOLTAGE & CURRENT
Ud_init=Ut*sin(delta_i);       Uq_init=Ut*cos(delta_i);
Id_init=It*sin(delta_i+fi);    Iq_init=It*cos(delta_i+fi);
% field and amortisseur circuits VOLTAGE & CURRENT
Ifd_init=(Uq_init+Ra*Iq_init+Ld*Id_init)/Lad;
Ufd_init=Rfd*Ifd_init;
I1d_init=0 ; I1q_init=0; I2q_init=0;
%MECH
w_init=1 ;
theta_init=-pi/2+delta_i;
Tm_init=Pt+Ra*It^2;

flux_d0=0.698536725;flux_fd0=1.047739435;flux_1d0=0.834806149;
flux_q0=-0.715574206;flux_11q0=-0.66190614;flux_22q0=-0.66190614;
inc_wr0=0;delta0=0.6426;
ini=[flux_d0;flux_fd0;flux_1d0;flux_q0;flux_11q0;flux_22q0;inc_wr0;delta0];

Salida de la inicializacion

Al ejecutar este script se tiene como salida lo siguiente:

1).  Operating Point Specifics Define 
	 	 	-  Stator P0=  1
	 	 	-  Stator Q0= 0
	 	 	- delta0  = 0 
	  Unknown: efd0 Tm0 

 Operating Point Search Report:
---------------------------------

 Operating Report for the Model SymMtrSin8th.
 (Time-Varying Components Evaluated at time t=0)

Operating point specifications were successfully met.
States: 
----------
(1.) SymMtrSin8th/Planta
      x:         0.834      dx:      8.72e-15 (0)
      x:          1.03      dx:     -5.45e-15 (0)
      x:         0.872      dx:     -1.56e-14 (0)
      x:        -0.624      dx:      2.18e-15 (0)
      x:        -0.574      dx:      1.53e-14 (0)
      x:        -0.574      dx:            -0 (0)
      x:      1.89e-17      dx:      8.67e-09 (0)
      x:             0      dx:      5.94e-15 (0)

Inputs: 
----------
(1.) SymMtrSin8th/ed
      u:             0
(2.) SymMtrSin8th/efd
      u:        0.0272    [-Inf Inf]
(3.) SymMtrSin8th/eq
      u:             0
(4.) SymMtrSin8th/Tm
      u:          1.04    [-Inf Inf]

Outputs: 
----------
(1.) SymMtrSin8th/out2
      y:             1    (1)
(2.) SymMtrSin8th/out2
      y:      1.67e-15    (0)
(3.) SymMtrSin8th/out2
      y:             0    [-Inf Inf]

NOTA El código de este apartado se encuentra en D:\wk_matlab\uc3m\mt\pc104\MTLB\src\Motors\SYNgnrt\MySyncGnrt\model_ok_Junio2011_ok2021

Funciones a reutilizar en matlab

  • las condiciones iniciales se tienen en \pc104\MTLB\bin\MyComputePrg\AsignCondIni
  • modelado de las ecuaciones iniciales esta en \pc104\MTLB\bin\MyComputePrg\AsynMach

Maquina sincrona

pc104\MTLB\bin\MyComputePrg\MtrSincr

Codigo bueno en ``

pc104\MTLB\src

Last update control

pc104\MTLB\src\CTR

Parámetros de la máquina

D:\wk_matlab\uc3m\mt\pc104\MTLB\src\Motors\SYNgnrt\StateStable

  • D:\wk_matlab\uc3m\mt\pc104\MTLB\src\Motors\SYNgnrt\StateStable_ok2021

Inicialización de la máquina sincrona

D:\wk_matlab\uc3m\mt\pc104\MTLB\src\Motors\SYNgnrt\MySyncGnrt\model_ok_Junio2011

finalmente encontrado y operativo D:\wk_matlab\uc3m\mt\pc104\MTLB\src\Motors\SYNgnrt\MySyncGnrt\model_ok_Junio2011_ok2021

Diseño del sistema de control

revisar estos archivos D:\wk_matlab\uc3m\mt\pc104\MTLB\src\Motors\SYNgnrt\CheeMunOng

Este es el folder bueno que usamos para los italianos

D:\wk_matlab\uc3m\mt\pc104\MTLB\src\Motors\SYNgnrt\Kundur

Curva de capabilidad

pc104\MTLB\src\capability
%% chech:OK:2015APRIL07
%CHECK:OK:18MAY2013
clear all; close all; clc

%%Edicion to LateX
%{
% Configuracion para los graficos con formato en latex
esq_bajo_izq=0; bajo_dib=0; ancho=16; altura=10; 
Mposition=[esq_bajo_izq bajo_dib ancho altura]; 
%}
iLocLeg='EastOutside';
ColorLine=[0 0 0];
StyleLine='.-|--|-.|:';

set(gcf,'DefaultLineLineWidth',1.5,....
        'DefaultAxesColorOrder',ColorLine,...
      'DefaultAxesLineStyleOrder',StyleLine)

iFontSize=11; iLineWidth=2; jFontSize=9;
%strFontName='Times';
%strFontName='Courier';
%strFontName='ArialBlack';
%strFontName='ModernNo.20';
strFontName='Arial';

set(gcf,'Defaultaxesfontsize',jFontSize,...
    'DefaultAxesFontName','strFontName',...
'DefaultAxesFontUnits','centimeters');
%'DefaultFontWeight','demi'

%--- colocar nombre en los ejes
OBJ01='xlabel(strXlabel);ylabel(strYlabel)'; 
... tamaño y tipo de letra en latex
prop01='FontSize'; prop02='Interpreter'; INprop02='latex';
propA='XLabel'; propB='YLabel';
OBJ02='set(get(gca,propA),prop01,iFontSize,prop02,INprop02)';
OBJ03='set(get(gca,propB),prop01,iFontSize,prop02,INprop02)';
% ---</>

%---- colocar legendas en graficas
OBJ05='legend(strLegend)'; propE='type';  propF='text';
OBJ06='set(findobj(lgOBJ,propE,propF),prop01,jFontSize,prop02,INprop02)';
... color y localizacion de las etiquetas
propG='boxoff'; propH='Location'; propI='edgecolor'; propJ='none';
OBJ07='legend(propG,propH,iLocLeg,propI,propJ)'; 

%ConfigurationPlots
bckGRIS=[.95 .95 .95]; co=[.5 .4 .3]; co01=[.5 .5 .5]; co02=[.7 .7 .7];
posFIG=[509,1071,791,697];
stfC='linewidth';stfA='color';
%% ConvensionGenerador
%% src:stevenson PAGE:98

%---axesTitles
strXlabel='\bf{Potencia Activa P[p.u.]}';
strYlabel='\bf{(fp. en adelanto)|Potencia Reactiva Q[p.u.]|(fp en atraso)}';
strLgnd0={'Límite Estabilidad','Límite de Armadura','Límite de Campo'};
%ylabel(strXlabel,'color','k','fontweight','b') 
%xlabel(strYlabel,'color','k','fontweight','b');
%lead-adelanto  lag-delay

%---DefinitionFUNCTIONS
ShwVls=@(str,in1,in2)eval('disp(sprintf(str,in1,in2))');
LgndVls=@(str,vl)eval('sprintf(str,vl)');%ValueLegendPlot
strAlrm01=['abs(pf) this mus be <= UNO'];
%ShwAlarm=@()eval('warndlg(strAlrm01,'error');')
ShwRing=@()eval('Fs=4096;w=1500;t=0:1/Fs:.15;y=sin(w*t);sound(y,Fs)');
%...
S_pk=@(Va_pk,Ia_pk)(Va_pk*Ia_pk);
angPF=@(pf)(acos(abs(pf)));%angleFactorPower
toDGR=@(ang)(ang*180/pi);
P_pk=@(S_pk,angPF)(S_pk*cos(angPF));
Q_pk=@(S_pk,angPF)(S_pk*sin(angPF));
P_fragm=@(Va,Uexc,Xs)(Va*Uexc/Xs);%PwithoutANGDLTec:3.38
Uexc=@(P,Xs,Va,angDLT)(P*Xs/(Va*sin(angDLT)));%fromEC:3.39
cmplQ=@(Va,Xs)(Va^2/Xs);%termComplementaryEC:3.39CENTRORADIO
angDLT=@(P,Q,cmplQ)(atan(P/(Q+cmplQ)));%fromEC:3.38

%% inputDATA
%[Va,pf,Ia,Xs]=deal(1,0.9,1,2.1);
[Va,pf,Ia,Xs]=deal(1,0.9,1,0.7);
%[Va,pf,Ia,Xs]=deal(1,0.99,1,1.05);%%%%%%%%OK

if abs(pf)>1,warndlg('abs(pf)MUSTbe<=UNO','error');ShwRing,break,end;

A=S_pk(Va,Ia); phio=angPF(pf); pntB=cmplQ(Va,Xs);%pointB-ejeY 

if pf<0, s=-1; else s=1; end

[Po1,Qo1]=deal(P_pk(A,phio),Q_pk(A,phio));
str='%s:%5.3f'; ShwVls(str,'Po1',Po1); ShwVls(str,'Qo1',Qo1);
deltao=angDLT(Po1,Qo1,pntB); 
del1=toDGR(deltao); 
gamo=asin(pntB/A);
phio01=s*toDGR(phio); 
Ef1=Uexc(Po1,Xs,Va,deltao); 

rCC=P_fragm(Va,Ef1,Xs);%radioCurveCap 
bCC=-pntB;%centroCurveCapability
pntR=rCC+bCC;%longitud del arco R

pnt.O.x=0; pnt.O.y=0;%pointOrigen
pnt.Q.x=0; pnt.Q.y=Po1;%pointQ
pnt.P.x=0; pnt.P.y=Qo1;%pointP
pnt.N.x=0; pnt.N.y=bCC;%pointP
pnt.R_b.x=pntR; pnt.R_b.y=bCC;%crucePointM

if del1<0, warndlg('unstableConditions','error');ShwRing,break, end; 

tm=1; 
figure(1);set(gcf,'Position',posFIG);

%PlotPoints
plot(pnt.O.x,pnt.O.y,':k');hold on; 
plot(pnt.O.x,pnt.O.y,'-','color',co01);
plot(pnt.O.x,pnt.O.y,'--','color',co02);

legend(strLgnd0,3);idx=1; %ttlIDX=eval(ttl_idx); %eval(ttlOBJ);
eval(OBJ01); eval(OBJ02); eval(OBJ03);

  disp 'STEP 02: areaCapability'; pause(tm) 

plot([0 A*cos(gamo)],[bCC bCC],':k',stfC,3);%LineStability
%(*1)
phi=-gamo:0.01:s*phio;      x1=A*cos(phi);     x2=A*sin(phi);%Armature 
delta=pi/2-deltao:.01:pi/2; y1=rCC*cos(delta); y2=rCC*sin(delta)+bCC;%Field
 plot(x1,x2,'-',stfA,co01,stfC,3);%Armature(S_pk & phi) 
 pause(2)
 plot(y1,y2,'--',stfA,co02,stfC,3);%field(P_fragm & delta &cmplQ)
 pause(2)
%--AreaSombreada 
a1=[0 A*cos(gamo) x1 y1 pnt.O.x pnt.O.y];%x1-x2:vectores
b1=[bCC+.01 bCC+.01 x2 y2 pnt.R_b.x pnt.R_b.y]; fill(a1,b1,bckGRIS);
%-----------------
disp 'STEP 03: middle & horizontal';pause(tm);
plot([pnt.O.x pnt.O.y],[pnt.R_b.x pnt.R_b.y],'-.k',stfC,2); 
plot([0 1.2*A],[pnt.O.x pnt.O.y],'-.k',stfC,2);%(S_pk)

disp 'STEP 04: lines limit and text'; pause(tm);
plot([pnt.Q.x pnt.Q.y],[bCC Qo1],'color',bckGRIS);
plot([pnt.Q.x pnt.Q.y],[pnt.P.x pnt.P.y],'w');%(S_pk)%PConstant
plot([0 A*cos(gamo)],[pnt.N.x,pnt.N.y],'color',bckGRIS);%(S_pk & cmplQ,fragmP)
%
%-LegendPlots
Qo=LgndVls('%5.3f',Qo1);        Po=LgndVls('%5.3f',Po1)
phio0=LgndVls('%5.2f',phio01);  del=LgndVls('%5.2f',del1);
Ef=LgndVls('%5.3f',Ef1);
%....
text(Po1+.1,Qo1+.1,['Po=',Po,' |\delta_o=',del],'color',co,'fontsize',12)
text(Po1+.1,Qo1,['Qo=',Qo,' |\phi_o=',phio0],'color',co,'fontsize',12)
text(Po1+.2,Qo1-.1,['Ef_o=',Ef],'color',co,'fontsize',12);

disp 'STEP 06: MARK'; pause(tm);

plot(Po1,Qo1,'or','markersize',8,'markerfacecolor','r');%(IaVd)
plot(0,0,'*r','markersize',9); 
plot(0,bCC,'*b','markersize',9);%rCC

disp 'STEP 07: vector'; pause(tm);
vecarrow([0 bCC],[rCC*cos(pi/2-deltao) bCC+rCC*sin(pi/2-deltao)],'k');%Armature
ksttng=0.95;
vecarrow([0 0],[ksttng*A*cos(phio) ksttng*A*sin(s*phio)],'k');%angle 

disp 'STEP 08: text';pause(tm);
text(1.05*A*cos(phio),1.05*A*sin(-phio),'V_aI_a','color',co01);
text(1.05*rCC*cos(1.2),bCC+1.03*rCC*sin(1.2),'V_aE_f/X_s','color',co02);
text(0.04,bCC+.06,'-V_a^2/X_s','color','k'); 
text(.08,bCC+.4,'\delta_o','color','k','fontsize',12); 
text(.15,.04,'\phi_o','color','k','fontsize',12),grid;

axis equal; hold off   %pause(5); close all

%Se genera el vector de puntos a partir del angulo 

%{
set(gcf, 'PaperPositionMode', 'manual');
set(gcf, 'PaperUnits', 'inches');%'centimeters'
set(gcf, 'PaperPosition', [2 1 4 2]);
set(gcf, 'PaperType', 'A4');
%B5-25*18cm
%A5-20.9*14.8
%B3-51*36
%A3
%'arch-A'-OKI
%set(gcf,'PaperOrientation','landscape');%{portrait} 
%set(gcf, 'PaperType', );%OKI
set(gcf, 'PaperPositionMode', 'auto');'manual'   

figure(1); plot(tout,Iabcn_rtr(:,1)/13,'k-',tout,Iabcn_rtr(:,2)/13,'k:',tout,Iabcn_rtr(:,3)/13,'k--','LineWidth',2); %axis([t_ini t_fin -40 40]); 
xlabel('Time [s]','FontSize',20);
ylabel('I_R current [pu]','FontSize',20);  
legend('I_{Ra}','I_{Rb}','I_{Rc}');
set(gca,'FontSize',16,'XTick',[1:0.5:3.5]);
grid; axis([1 3.5 -7 7]); 
print -dpdf 'test01.pdf'; pause(2);% clf; close;
winopen('test01.pdf')
%}

%% Tamaño de la figura y posicion en el monitor
%---- function anonymous para el tamaño del modelo
%{
LBWH=@(LBobj,WHobj) [LBobj(1),LBobj(2),...
    WHobj(1)+LBobj(1),WHobj(2)+LBobj(2)];  
...[left bottom width height]    
%}

%% CONF. texto LATEX
%CnfigDfltPLOTS--archivo con lo anterior
%newDIR='D:\THESIS\CODE\plots_eps2pdf\';%forPRINT
%xo_lim=0; xe_lim=1.1;


%---
%{
nmFIG01='test01'; set(gcf,'name',nmFIG01)
set(0,'Units','centimeters')
monitor_pos=deal(get(0,'MonitorPosition'))
...[left bottom width height] %get(gcf,'Position');   
WHobj=[672,504];  % tamaño figura deseado
LBobj=[-999,520];% donde empieza el bloque
pos_Mdl=LBWH(WHobj,LBobj)
posIN=[-999 680 672 504];%[left bottom width height]
set(gcf,'Position',posIN)
%}

%--- Etiquetas para c/u de las legendas
%{
NameTag='\bf{fp=}';  UnitTag='';
obj_01='legend(strcat(NameTag,num2str(fp(1)),UnitTag),';
obj_02='strcat(NameTag,num2str(fp(2)),UnitTag),';
obj_03='strcat(NameTag,num2str(fp(3)),UnitTag),';
obj_04='strcat(NameTag,num2str(fp(4)),UnitTag))';
obj_=strcat(obj_01,obj_02,obj_03,obj_04);
%--- Titulo para cada subfigura 
ttl_01='\alpha= ';ttl_02='º'; 
ttl_idx='num2str(alpha_values(idx))'; 
ttlOBJ='title(strcat(ttl_01,ttlIDX,ttl_02))'; 
%----
subplot(2,2,1)
plot(abs(Vdip(:,1)),abs(Ic1(:,1)),abs(Vdip(:,1)),abs(Ic2(:,1)),...
    abs(Vdip(:,1)),abs(Ic3(:,1)),abs(Vdip(:,1)),abs(Ic4(:,1)));grid on
idx=1; ttlIDX=eval(ttl_idx); eval(ttlOBJ);
eval(OBJ01); eval(OBJ02); eval(OBJ03);
lgOBJ=eval(obj_); eval(OBJ06); eval(OBJ07);
xlim([xo_lim xe_lim]); ylim([0 10.9]); 
%---
subplot(2,2,2)
plot(abs(Vdip(:,2)),abs(Ic1(:,2)),abs(Vdip(:,2)),abs(Ic2(:,2)),...
    abs(Vdip(:,2)),abs(Ic3(:,2)),abs(Vdip(:,2)),abs(Ic4(:,2)));grid
idx=2; ttlIDX=eval(ttl_idx); eval(ttlOBJ);
eval(OBJ01); eval(OBJ02); eval(OBJ03);
lgOBJ=eval(obj_); eval(OBJ06); eval(OBJ07);
xlim([xo_lim xe_lim]); ylim([0 10.9]); 
%---
subplot(2,2,3)
plot(abs(Vdip(:,3)),abs(Ic1(:,3)),abs(Vdip(:,3)),abs(Ic2(:,3)),...
    abs(Vdip(:,3)),abs(Ic3(:,3)),abs(Vdip(:,3)),abs(Ic4(:,3)));grid
idx=3; ttlIDX=eval(ttl_idx); eval(ttlOBJ);
eval(OBJ01); eval(OBJ02); eval(OBJ03);
lgOBJ=eval(obj_); eval(OBJ06); eval(OBJ07);
xlim([xo_lim xe_lim]); ylim([0 10.9]); 
%---
subplot(2,2,4)
plot(abs(Vdip(:,4)),abs(Ic1(:,4)),abs(Vdip(:,4)),abs(Ic2(:,4)),...
    abs(Vdip(:,4)),abs(Ic3(:,4)),abs(Vdip(:,4)),abs(Ic4(:,4)));grid
idx=4; ttlIDX=eval(ttl_idx); eval(ttlOBJ);
eval(OBJ01); eval(OBJ02); eval(OBJ03);
lgOBJ=eval(obj_); eval(OBJ06); eval(OBJ07);
xlim([xo_lim xe_lim]); ylim([0 10.9]); 

... COMENTADO PARA USARLO SOLO SI SE NECESITA
%print -dpdf  'D:\VirtualBox\Latex\Reportes\dfig\StatCom\fig\Paper080411_fig10.pdf'  
set(gcf,'PaperUnits','centimeters', 'papersize',[ancho altura],'paperposition', [0 0 ancho altura])
nmfig=[newDIR,nmFIG01];  print(gcf, '-deps', nmfig);

%print -dpdf Intensidad_sag_ang.pdf;  pause(1); clf; close;
%winopen  'Intensidad_sag_ang.pdf'
%print -depsc Intensidad_sag_ang.eps; % pause(1); clf; close;
%winopen  'Intensidad_sag_ang.eps'
%copyfile('Intensidad_sag_ang.eps',destine)
%pause(2); close all;
%}

%lgOBJ=eval(obj_); eval(OBJ06); eval(OBJ07);

%% Print
set(gcf,'PaperUnits','centimeters','PaperOrientation','landscape',...
    'PaperType', 'A5');
pprsz=get(gcf, 'PaperSize');
[wdth hght]=deal(20,14.5);
[lft,bttm]=deal((pprsz(1)-wdth)/2,(pprsz(2)-hght)/2);
set(gcf,'PaperPosition',[lft,bttm,wdth,hght])
print -dpdf 'test01.pdf'; pause(2);% clf; close;
winopen('test01.pdf')


[]: