Documentos de Académico
Documentos de Profesional
Documentos de Cultura
LAB. DE CONTROL 1
ING: LUIS MERCADO
LAB. N2 MODELACION DE
SISTEMAS UTILIZANDO MATLAB
ALUMNO: PILCO CHUA WILVER
CUI: 20111485
AREQUIPA - PERU
LABORATORIO 2
MODELACION DE SISTEMAS UTILIZANDO MATLAB
2.1.
Trabajo Preparatorio.-
Se tiene un circuito serie RLC alimentado por una fuente v(t) entrada y Vc(t) tensin en el
capacitor de salida
2.1.1.
ei
Vcc=
1
idt=e 0
c
2.1.2.
11
LsI(s)+RI(s)+ c s
11
cs
I(s) E0 ( s)
E0
1
=
2
E i LC S + RCS +1
I(s) Ei ( s)
2.1.3.
2.1.4.
Obtener analticamente Vc(t) para una entrada escaln unitario para valores RLC
asumidos por el estudiante. (ntese que la entrada paso es la integral de una entrada
impulso)
E0
1
=
2
E i LC S + RCS +1
Escaln unitario :
1
1
0.5 S +1.5 S+1
1
E 0=
=
3
2
s
0.5 S +1.5 s + s
2.1.5.
1
X(s)= s
Ei=
1
X(s)= s
y (t) e2t 2 et +1
Con la ayuda del Excel presente los grficos para una entrada escaln unitario en lazo
abierto.
%func escalon
t=[0:0.01:20];
y=exp(-2*t)- 2*exp(-t)+1;
u=0.1;
plot(t,y,t,u,'--g')
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
2.2.
2.2.1.
10
12
14
16
18
20
Trabajo Experimental.Obtenga el modelo en espacio de estado, zpk, respuesta en frecuencia si es posible del
sistema del trabajo preparatorio.
x2 0 -2 1
x3 0 0 -1
b=
u1
x1 0
x2 0
x3 1.414
c=
y1
x1 x2
0 1.414
x3
0
d=
u1
y1 0
FRD : modelo de respuesta a frecuencia
2.2.2.
Obtener la respuesta en lazo abierto y cerrado para las entradas: impulso, paso, rampa,
senoidal. Solon abierto
clc
disp('Respuesta a impulso')
num=[2 5];
den=[1 2 5];
%impulse(num,dem)
subplot(2,2,1),impulse(num,den),grid
disp('Respuesta paso')
%step(num,den)
subplot(2,2,2),step(num,den),grid
disp('Respuesta a entrada rampa')
num1=[1];
den1=[1 0 0];
a=tf(num,den)
b=tf(num1,den1)
sys=series(a,b)
%impulse(sys)
subplot(2,2,3),impulse(sys),grid
2.2.3.
ei
eo
i= IR+ I 1R
;
e
1
idt=e 0 ; I= I 1 + I 2
c
I 1 (s)R2 Ei ( s)
11
cs
I 2 (s) E0 ( s)
E0
R2
=
E i R 1 R 2 CS+ R 1+ R 2
2.3.
2.3.1.
Informe.Empleando lazos y estructura de control de flujo, elabore un programa que permita obtener
sobre un mismo grafico la respuesta escaln en lazo abierto para cinco valores diferentes del
parmetro a del sistema dado por la siguiente funcin de transferencia:
G ( s)
a
s4
CONTROL DE FLUJO
0.35
f1
f2
f3
f4
f5
0.3
eje y
0.25
0.2
0.15
0.1
0.05
0
2.4.
3
4
eje tiempo
Bibliografa.-
end
if (Duplicate==0)
L{n}.NumberLoops=L{n}.NumberLoops+1;
L{n}.Coeff{(L{n}.NumberLoops)}=[L{1}.Coeff{first}, L{n-1}.Coeff{second}];
L{n}.Node{(L{n}.NumberLoops)}=[L{1}.Node{first}, L{n-1}.Node{second}];
end
end
end
end
if (L{n}.NumberLoops==0)
break
end
end
fprintf('\n-- Network Info --\n')
fprintf('Net File : ');fprintf(NetFile);fprintf('\n');
fprintf('Start Node : %d\n',Start);
fprintf('Stop Node : %d\n',Stop);
fprintf('\n----- Paths -----\n')
for pathn=1:length(P)
fprintf('P%d : ',pathn);
fprintf('%d ',P{pathn}.Coeff);
fprintf('\n');
end
for loop_order=1:length(L)-1
fprintf('\n- Order %d Loops -\n',loop_order)
for loop_number=1:L{loop_order}.NumberLoops
fprintf('L%d%d : ',loop_order,loop_number)
fprintf('%d ',L{loop_order}.Coeff{loop_number})
fprintf('\n')
end
end
Num='';
for pathn=1:length(P)
Num=sprintf('%s%s*(1', Num, CoeffToString(P{pathn}.Coeff)); % Pn*(1 ..
for order=1:length(L)-1
if (rem(order,2)==1)
Num=sprintf('%s-',Num);
else
Num=sprintf('%s+',Num);
end
Num=[Num,PrintSumsNotTouching(L,order,P{pathn}.Node)];
end
Num=sprintf('%s)+',Num); %
end
Num=Num(1:length(Num)-1);
Den='1';
for order=1:length(L)-1 %
if (rem(order,2)==1)
Den=sprintf('%s-',Den);
else
Den=sprintf('%s+',Den);
end
Den=[Den,PrintSumsNotTouching(L,order,[9999999 999999])];
end
fprintf('\nThe variables returned are strings describing\n')
fprintf('the numerator and Denominator of the transfer equation.\n')
if not(isempty(FoundPath))
PathUp=[PathUp;[FoundPath,zeros(1,NumberCoeff+1-length(FoundPath))]];
NodesUp=[NodesUp;[FoundNodes,zeros(1,NumberCoeff+1-length(FoundPath))]];
end
end
end
function Same=IsSameLoop(Loop1,Loop2)
Loop1Length=sum(Loop1>0);
Loop2Length=sum(Loop2>0);
if (Loop1Length~=Loop2Length)
Same=0;
return
end
if (sum(abs(sort(Loop1)-sort(Loop2)))==0)
Same=1;
else
Same=0; %
function Str=PrintSumsNotTouching(L,order,Pnodes)
No_NonTouching=1;
Str=('(');
for n=1:L{order}.NumberLoops
if not(AreTouchingLoops(Pnodes,L{order}.Node{n})) Str=sprintf('%s
%s+',Str,CoeffToString(L{order}.Coeff{n}));
No_NonTouching=0; %
end
end
Str=Str(1:(length(Str)-1));
Str=sprintf('%s)',Str);
if No_NonTouching==1
end
function [LoopList,NodeList]=RemoveDuplicateLoops(LoopList,NodeList);
temp=size(LoopList);
NumberLoops=temp(1);
first=1;
while (first<=NumberLoops)
second=first+1;
while (second<=NumberLoops)
if (IsSameLoop(LoopList(first,:),LoopList(second,:))==1)
LoopList=[LoopList(1:second-1,:);LoopList(second+1:NumberLoops,:)];
NodeList=[NodeList(1:second-1,:);NodeList(second+1:NumberLoops,:)];
NumberLoops=NumberLoops-1;
else
second=second+1;
end
first=first+1;
end