kramann.info
© Guido Kramann

Login: Passwort:










5 Saalübung - Tilger

Aufgabenbeschreibung

Schwingende Systeme können mit einem Tilger versehen werden, der dem System über ein dissipatives Element Schwingungsenergie entzieht. Voraussetzung für ihr Funktionieren ist, dass ihre Ankopplung die gleiche Eigenfrequenz hat, wie das Schwingungssystem selbst. Allerdings darf die Tilgermasse nicht zu groß sein, damit sich die Eigenfrequenz des Gesamtsystems nicht zu sehr verschiebt. Die Eigenfrequenzen eines linearen Schwingungssystems entsprechen den imaginären Anteilen der Eigenwerte ihrer Systemmatrix. In der folgenden schematischen Zeichnung ist ein lineares Schwingungssystem mit einem angefügten Tilger dargestellt. In den Einzelsystemen gilt, dass für x1=0m gerade die Federkraft des Schwingungssystems verschwindet und für x2=0m gerade die Feder-Kraft am Tilgersystem verschwindet. Im Gesamtsystem gilt, dass für x1=0m gerade die Federkraft des Schwingungs-Teilsystems verschwindet und für x2-x1=0m gerade die Feder-Kraft und für v2-v1=0m/s die Dämpfer-Kraft zwischen Tilgermasse m2 und Schwingermasse m1 verschwindet. Außer die durch die Feder/Dämpfer-Komponenten verursachten, greifen an den starren Massen keine weiteren Kräfte an.

Aufgabenteile

  1. Bestimmen Sie die Eigenfrequenz für das Schwingungssystem ohne Tilger in Abhängigkeit von m1 und C1 (vergl. Zeichnung).
  2. Bestimmen Sie die Eigenfrequenz für den Tilger in Abhängigkeit von m2, C2 und D2, wenn er an eine starre Wand angekoppelt wäre (vergl. Zeichnung).
  3. Bestimmen Sie D2 so, dass die Eigenfrequenz des Tilgersystems für sich (Ergebnis von b) ) gerade so groß wird, wie die Eigenfrequenz des Schwingungssystems für sich (Ergebnis von a) ), wenn gilt: m1=500kg, C1=1000N/m, m2=20kg, C2=40N/m.
  4. Bestimmen Sie mit den Werten aus c) außerdem D2 so, dass der Tilger für sich gerade in den aperiodischen Grenzfall übergeht.
Schwinger mit Tilger

Bild 5-1: Schwinger mit Tilger

m1 = 500.0;
m2 = 20.0;
C1 = 1000.0;
C2 = 80.0;
D  = 56.7;

param = [C2,D];

//  y = [x1 v1 x2 v2]

function f = rechteSeite(t,y)
    x1 = y(1,1);
    v1 = y(2,1);
    x2 = y(3,1);
    v2 = y(4,1);

    f(1,1)  = v1;
    f(2,1)  = (  -C1*x1 + C2*(x2-x1) + D*(v2-v1)  )/m1;
    f(3,1)  = v2;
    f(4,1)  = (         - C2*(x2-x1) - D*(v2-v1)  )/m2;
endfunction

//"Urversion"
C2 = param(1);
D = param(2);
t = linspace(0,30,3000);
y0 = [1,0,0,0]';
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);
plot(t,y(1,:)','blu');


function fehler = berechneFehler(param)
    C2 = param(1);
     D = param(2);

    t = linspace(0,10,500);
    y0 = [1,0,0,0]';
    t0 = 0;
    y  = ode(y0,t0,t,rechteSeite);

    yy = y(1,:);

    fehler = yy*yy';    
endfunction

//CC = [60:1:100];
//DD = [40:1:70];

fehler_best = berechneFehler(param);
param_best = [param(1),param(2)];
disp(fehler_best);


for CC=65:95
    for DD=45:75
        param(1) = CC;
        param(2) = DD;
        fehler = berechneFehler(param);

        if fehler<=fehler_best then
            fehler_best = fehler;
            param_best = param;
        end
    end
end
disp(fehler_best);

//"Plotte beste Version"
param = param_best;
C2 = param(1);
D  = param(2);

t = linspace(0,30,3000);
y0 = [1,0,0,0]';
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);

plot(t,y(1,:)','blk');

Code 5-1: Musterlösung zu: Parameterstudie bei Tilger.

Optimierung

m1 = 500.0;
m2 = 20.0;
C1 = 1000.0;
C2 = 80.0;
D  = 56.7;

param = [C2,D]

//  y = [x1 v1 x2 v2]

function f = rechteSeite(t,y)
    x1 = y(1,1);
    v1 = y(2,1);
    x2 = y(3,1);
    v2 = y(4,1);

    f(1,1)  = v1;
    f(2,1)  = (  -C1*x1 + C2*(x2-x1) + D*(v2-v1)  )/m1;
    f(3,1)  = v2;
    f(4,1)  = (         - C2*(x2-x1) - D*(v2-v1)  )/m2;
endfunction

//"Urversion"
C2 = param(1);
D = param(2);
t = linspace(0,30,3000);
y0 = [1,0,0,0]';
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);
plot(t,y(1,:)','blu');


function fehler = berechneFehler(param)
    C2 = param(1);
     D = param(2);

    t = linspace(0,10,500);
    y0 = [1,0,0,0]';
    t0 = 0;
    y  = ode(y0,t0,t,rechteSeite);

    yy = y(1,:);

    fehler = yy*yy';    
endfunction

//CC = [60:1:100];
//DD = [40:1:70];

fehler_best = berechneFehler(param);
param_best = [param(1),param(2)];
disp(fehler_best);
delta = ones(2,2)*0.1;
for i=1:1000
    //Liefert 1 oder 2:
    pnumber         = 1+ floor(grand(1, 1, "unf", 0, 1.999999999));
    prichtung       = 2*floor(grand(1, 1, "unf", 0, 1.999999999))-1;
    prichtung_index = (prichtung+1)/2 + 1;
    
    param(pnumber) = param_best(pnumber) + prichtung*delta(pnumber,prichtung_index);

    fehler = berechneFehler(param);

    if fehler<=fehler_best then
        fehler_best = fehler;
        param_best  = param;
        delta(pnumber,prichtung_index) = delta(pnumber,prichtung_index)*1.1;
    else
        delta(pnumber,prichtung_index) = delta(pnumber,prichtung_index)*0.9;
    end    
end

disp(fehler_best);

//"Plotte beste Version"
param = param_best
C2 = param(1);
D  = param(2);

t = linspace(0,30,3000);
y0 = [1,0,0,0]';
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);

plot(t,y(1,:)','blk');

Code 5-2: Musterlösung zu: Optimierung bei Tilger.

clear();

m = 1.0;
r = 0.01;
l = 1.0;
J = 0.25*m*r*r + (1/12)*m*l*l;
pp = J+m*r*r;
g = 9.81;
qq = m*r*g;

P = 5*qq;
I = 0.0*P;
D = 0.2*P;

phisoll=0.0;

function f=modell(t,y)
       phi=y(1,1);
       omega=y(2,1);
       eInteg=y(3,1);

       e      =  phisoll - phi;       
       eDiff  = -omega; // == de/dt == dxsoll/dt - dx/dt == 0 - v

       M=P*e+I*eInteg+D*eDiff;

       f(1,1)=omega;
       f(2,1)=(qq/pp)*sin(phi)+M/pp;  //NICHT linearisiert!
//       f(2,1)=(qq/pp)*phi+M/pp;
       f(3,1)=e;
endfunction

t = linspace(0,9,900);
y0 = [0.2,0,0]';
t0 = 0;
y  = ode(y0,t0,t,modell);

plot(t,y(1,:)');

//Optimierung

function err=berechneFehler(x)
    P=x(1);
    I=x(2);
    D=x(3);

    t = linspace(0,9,900);
    y0 = [0.2,0,0]';
    t0 = 0;
    y  = ode(y0,t0,t,modell);

    err = sum(y(1,:).*y(1,:));
endfunction


P = 5*qq;
I = 0.0*P;
D = 0.2*P;

x0=[P;I;D];

[fopt, xopt, gopt] = optim(list(NDcost,berechneFehler), "b", x0.*0.001, x0.*1000.0, x0);

P=xopt(1);
I=xopt(2);
D=xopt(3);

t = linspace(0,9,900);
y0 = [0.2,0,0]';
t0 = 0;
y  = ode(y0,t0,t,modell);

plot(t,y(1,:)');

Code 5-3: Musterlösung zu: Optimierung bei Tilger mit optim().