Modalanalyse mit Open-Source-Tools – Easymod

Hallo zusammen!

Mit reichlich Verspätung melde ich mich mal wieder zum Thema „Modalanalyse mit Open-Source-Tools“. Im vorherigen Post habe ich erklärt, was eine Modalanalyse überhaupt ist und schon mal vorausgenommen, dass eine beispielhafte Modalanalyse am Lego Breadboard durchgeführt wird. Heute machen wir nochmal einen kleinen Schritt zurück und überprüfen, ob die Open-Source-Tools in der Lage sind einfache analytische Systeme zu identifizieren. Dazu habe ich zunächst einen Zweimassenschwinger definiert (Abbildung 1). Das Verhalten des Zweimassenschwingers lässt sich sehr leicht über Differentialgleichungen beschreiben. Mit Hilfe der in Easymod implementierten Funktion gen_frf kann aus der Massen-,Dämpfungs- und Steifigkeitsmatrix direkt die Übertragungsfunktionen berechnet werden. Daher gebe ich euch die Matrizen vor und ihr könnt es dann selbst ausprobieren.

Zweimassenschwinger
Abbildung 1: Schematische Darstellung eines Zweimassenschwingers

Bevor ihr Easymod in Scilab nutzen könnt, müsst ihr natürlich erst die Toolbox runterladen und in Scilab einbinden. Das Einbinden erfolgt über eine loader.sce Datei, die ihr vor jeder Verwendung von Easymod ausführen müsst.

genlib("EasyMod",'C:\Pfad\zu\EasyMod') ;
genlib("EasyMod_G",'C:\Pfad\zu\EasyMod\General') ;
genlib("EasyMod_L",'C:\Pfad\zu\EasyMod\Local') ;
genlib("EasyMod_CF",'C:\Pfad\zu\EasyMod\CircleFit') ;
genlib("EasyMod_LF",'C:\Pfad\zu\EasyMod\LineFit') ;
genlib("EasyMod_LSCE", 'C:\Pfad\zu\EasyMod\LeastSquareComplexExponential') ;

Hier ist der Scilab-Code zum Erstellen der für Easymod und Openmodal notwendigen .uff-Dateien.

M = [1 0; 0 1];                  // Massenmatrix
K = [250 -150; -150 250];       // Steifigkeitsmatrix
C = [0.3 -0.1; -0.1 0.3];       // Dämpfungsmatrix

// FRF storage
freqlo = 0;                     // Start Frequenz
freqhi = 5;                     // Endfrequenz
steps = 1000;                   // Schritte

freq = linspace(freqlo, freqhi, steps);     //Frequenzvektor
Df = freq(2)-freq(1);
//Übertragungsfunktion berechnen
[receptance,mobilite,inertance] = gen_frf(M,C,K,1,1,freq) ;
// receptance – Weg
// mobilite – Geschwindigkeit
// inertance – Beschleunigung

unv58write(receptance,1,1,1,1,0,Df,'H11_re.unv') ;

Zum Auswerten einer experimentellen Modalanalyse gibt es unterschiedliche Verfahren. Diese lassen sich grob in SISO (Single Input Single Output) Verfahren und MIMO (Multi Input Multi Output) Verfahren einteilen. Bei den SISO Verfahren muss man selbst bestimmen, wo eine Eigenfrequenz liegen könnte. Beim Messen von Übertragungsfunktionen kann es je nach untersuchter Struktur jedoch dazu kommen, dass die Eigenfrequenzen nicht mehr eindeutig im Verlauf der Übertragungsfunktion zu erkennen sind. Für diesen Fall sind SISO Verfahren dann nur noch bedingt einsatzfähig. Die MIMO Verfahren berechnen mögliche Eigenfrequenzen bzw. Polstellen von alleine. Als Nutzer muss man dann lediglich die notwendigen Polstellen auswählen. Aber dazu kommen wir später.

In Easymod sind zwei SISO Verfahren (Circlefit und Linefit) und ein MIMO Verfahren (Least-Squares-Complex-Exponential) implementiert.  Für das Beispiel des Zweimassenschwingers wird das Linefit und das LSCE Verfahren vorgestellt. Beim Linefit Verfahren muss ein Bereich vorgegeben werden, in dem die Eigenfrequenzen vermutet werden. Da es sich hierbei um ein analytisches Modell handelt, können die Eigenfrequenzen zunächst berechnet und damit der Bereich genau abgeschätz werden. Die berechneten Eigenfrequenzen liegen bei f_1 = 1,59 Hz und f_2 = 3,18 Hz.  Der Scilab Code zur Identifikation der modalen Parameter über das Linefit Verfahren und das LSCE Verfahren ist unten dargestellt.

[H11,freq,infoFRF(1)] = unv58read('H11_re.unv') ;
infoFRF2 = infoFRF;
// Line Fit
N=size(H11,2);
bornes_min = [1.45 3];
bornes_max = [1.70 3.3];
Nbr_mode = length(bornes_min);

for jj=1:Nbr_mode
    [freq_local,H_local,H_gen_local,infoMODE,circ_prop] =line_fit(H11,freq,bornes_min(jj),bornes_max(jj));
    plot_line_fit(freq_local,H_local,H_gen_local,infoMODE,circ_prop);
    infoFRF2 = add_data(1,infoMODE.frequencyk,infoMODE.etak,infoMODE.Bijk,infoFRF2,jj);
end

// Results saving
infoMODE2 = save_result_modal(infoFRF2);

//LSCE
//Default, Default, Default, 4 – Eingaben zur Berechnung der modalen Parameter
[RES,infoFRF,infoMODE]=lsce(H11,freq(:),infoFRF);

Die modalen Parameter sind in infoMODE und infoMODE2 abgespeichert. Am Beispiel des LSCE Verfahren wird nun noch gezeigt, wie aus den modalen Parametern die Übertragungsfunktion berechnet werden kann.


Omega = 2*%pi*freq;        //Umrechung Frequenzvektor in rad/s
eigfreq = 2*%pi*infoMODE.frequencyk;     //Umrechnung identifizierter Eigenfrequenzen in rad/s
loss = infoMODE.etak;   // Dämpfungsfaktor
Aij = [infoMODE.Bijk(1,1),infoMODE.Bijk(1,2)];  // Residuenmatrix

// Berechnung der Übertragungsfunktion
for jj = 1:size(freq,1)
    h1 = Aij(1,1)/(eigfreq(1)^2-Omega(jj)^2+%i*2*loss(1)*eigfreq(1)*Omega);
    h2 = Aij(1,2)/(eigfreq(2)^2-Omega(jj)^2+%i*2*loss(2)*eigfreq(2)*Omega);
end
H11_fit = h1+h2;

In der Abbildung 2 seht ihr den berechneten und identifizierten Übertragungsfunktion und der dazugehörige Phasenverlauf. Es fällt auf, dass das Line fit Verfahren den Verlauf eins zu eins abbildet. Das Line fit Verfahren identifiziert also alle modalen Parameter (Eigenfrequenz, Dämpfung und Eigenmoden) korrekt. Das LSCE Verfahren zeigt lediglich bei der Bestimmung der Eigenmoden Schwächen und weicht dort ein wenig von der berechneten Übertragungsfunktion ab. Das heißt beide Verfahren, die in Easymod implementiert sind, können die modalen Parameter korrekt bzw. mit geringen Abstrichen identifizieren.

Zweimassenschwinger_Easymod
Abbildung 2: Identifikation Zweimassenschwinger mit Easymod

 

 

Im nächsten Post schauen wir uns die Analyse des Zweimassenschwingers mit Openmodal an. Viel Spaß beim Ausprobieren von Easymod!


        

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.