2 svar
87 visningar
Heretic är nöjd med hjälpen
Heretic 88 – Fd. Medlem
Postad: 20 maj 2017 23:28 Redigerad: 21 maj 2017 00:33

Hydraulik: Varför kan jag inte hitta en lösning till dessa differentialevaktioner?

Hej!

Jag har jobbat länge på denna modell, men jag har inte lyckats att få den fungera. Problemet är att man får komplexa rötter när jag vill lösa ut dessa differentialekvationer. Jag får inte bara en komplex rot, utan 3 stycken för varje ekvation. Jag vill bara ha ett!

Så här ser mitt system ut:

Jag har ställt upp differentialekvationer för varje system:

Differentialekvationen som är överst är för balken längst åt höger.

Differentialekvationen som är i mitten är för stora massan M.

Differentialekvationen som är längst ned är för hydraulcylindern.

Som ni ser så definieras det dynamiska trycket så som: Tryck = oljans bulkmodulNuvarande volym(Flöde in - volymexpandering ) eller

Tryck = Oljans bulkmodulNuvarande volym(Volymminimering - Flöde ut) beroende på vart pumpsidan är.

De renskrivna differentialekvationerna är:

Något att notera är att OM k2My + L2k2Msin(θ) inte finns med i den mittersta differentialekvationen så kommer z och y vara lika stora när systemet är statiskt. Detta betyder att massan M har inget stopp och då kommer z och y alltid ha jämnt avstånd. Men så länge M har ett stopp/gräns så kommer z och y variera.

Om jag sätter L1-x1 som en konstant så får jag inget komplext tal, men jag får två lösningar på systemet. Det vill jag inte ha!

 

Edit: Om jag sätter L1 - x1 till en konstant t.ex. 0.2 meter och x1*m1 till en konstant t.ex 0.2*5 kg så får jag en lösning per ekvation. Det blir en real lösning. Fråga: Kan det vara så att denna modell gick inte att simulera, eller linjärisera för att jag delade med tillstånd med tillstånd?

 

slutedit.

Så här ser tillståndsmodellen ut:

Fråga: Vad är det för fel på min modell? Jag måste ha glömt något!

Jag använder LibreOffice.

Jag har gjort MATLAB/Octave kod här för att simulera

pkg load symbolic

% Linjärisera

% Konstanta värden
k1 = 1000; k2 = 1000; k3 = 500; b1 = 200; b2 = 200;
m1 = 5; m2 = 3; M = 2000; g = 9.82; mu = 0.2; beta = 5000;
Q = 5; Am = 60; Ap = 100; L1 = 0.2; L2 = 1.2; gamma = 100;

% Arbetspunkter
R1 = 0.45; R2 = 0.5;

% Ekvationer
syms x1 x2 x3 x4 x5 x6

dotx1 = x2;
dotx2 = -k1/m1*x1 + k1/m1*x3 - b1/m1*x2 + b1/m1*x4 + (beta*Q*10)/(x1*m1)*R1 - (beta*Ap*60)/(x1*m1)*x2 - (beta*Am*60)/(m1*(L1-x1))*x2 + (beta*Q*Am*10)/(m1*Ap*(L1-x1))*R2 - gamma/m1*x2;
dotx3 = x4;
dotx4 = k1/M*x1 - k1/M*x3 - b1/M*x2 - b1/M*x4 -g*mu*x2 - k2/M*x3 + (L2*k2)/M*(x5);
dotx5 = x6;
dotx6 = (3*k2)/(m2*L2)*x3 - (3*k2)/(m2)*(x5) - (3*k3)/(m2*L2^2)*x5 - (3*b2)/(m2*L2^2)*x6 + (3*g)/(L2*2)*(x5);


[x1, x2, x3, x4, x5, x6] = solve(dotx1 == 0, dotx2 == 0, dotx3 == 0, dotx4 == 0, dotx5 == 0, dotx6 == 0, x1, x2, x3, x4, x5, x6)

Henrik Eriksson 1405 – Fd. Medlem
Postad: 21 maj 2017 17:17

Startvärdet kan inte vara noll för z (som ju ska stå i nämnaren).

Heretic 88 – Fd. Medlem
Postad: 22 maj 2017 09:08 Redigerad: 22 maj 2017 09:12
Henrik Eriksson skrev :

Startvärdet kan inte vara noll för z (som ju ska stå i nämnaren).

Tackar. Jag har bytt program till openmodelica så nu fungerar det att simulera det numeriskt.

Ett annat problem är ODE:n för tröghetsmomentet. Det verkar inte finnas ett stopp. 

Svara Avbryt
Close