2.3. Model numeryczny
W oparciu o model fizyczny i matematyczny opracowano model numeryczny z
środowisku SciLab, którego listing przedstawiono poniżej:
function out=silownik(x,r,l,s)
fi1=x(1);
fi2=x(2);
out=[r*cos(fi1)+l*cos(fi2)-s;...
r*sin(fi1)+l*sin(fi2)];
endfunction
r=3;
s=3;
v=.1;
h=1;
l0=1.2;
t0=0;
tk=h/v;
t=0:.01:tk;
l=l0+v*t0;
x0=[.4;4.92];
x=fsolve(x0,silownik);
fi1=x(1);
fi2=x(2);
P1=[0 0];
P2=P1+[cos(fi1) sin(fi1)]*r;
P3=P2+[cos(fi2) sin(fi2)]*l;
P4=P3+[-s 0];
punkty=[P1;P2;P3;P4];
clf();
subplot(2,2,1);
abc=get('current_axes');
abc.data_bounds=[-.1,-.1;3.1,2.1];
title('Siłownik');
xgrid;
plot(punkty(:,1),punkty(:,2),'-or');
h=gca();
uchwyt=h.children(1).children(1);
dane=[];
for i=1:length(t)
l=l0+v*t(i);
x=fsolve(x0,silownik);
fi1=x(1);
fi2=x(2);
P1=[0 0];
P2=P1+[cos(fi1) sin(fi1)]*r;
P3=P2+[cos(fi2) sin(fi2)]*l;
P4=P3+[-s 0];
punkty=[P1;P2;P3;P4];
uchwyt.data=[punkty(:,1) punkty(:,2)];
sleep(1);
A1=[-r*sin(fi1),-l*sin(fi2);...
r*cos(fi1),l*cos(fi2)];
B1=[-v*cos(fi2);...
-v*sin(fi2)];
X1=A1\B1
dfi1=X1(1);
dfi2=X1(2);
A2=[-r*sin(fi1),-l*sin(fi2);...
r*cos(fi1),l*cos(fi2)];