In [1]:
from IPython.display import HTML

HTML('''<script>
code_show=true; 
function code_toggle() {
 if (code_show){
 $('div.input').hide();
 } else {
 $('div.input').show();
 }
 code_show = !code_show
} 
$( document ).ready(code_toggle);
</script>
<form action="javascript:code_toggle()"><input type="submit" value="Click here to toggle on/off the raw code."></form>''')
Out[1]:

Lehrstuhl Technische Dynamik, Juniorprofessur Fluid-Struktur Kopplung

                        

Aufgabe 9

Berechnen Sie die Schwingungen im Antriebsstrang einer elektrischen Lokomotive, die sich mit konstanter Geschwindigkeit $v$ bewegt.

Geben sie die Grenzen für den stabilen Bereich der Fahrgeschwindigkeit an.

Die Schubstangen $I$ und $II$ sind um den Winkel $\beta$ versetzt. Das Trägheitsmoment $J_T$ und das Antriebsmoment $M = konst.$ seien gegeben.

Dieses Bild ist von der 1922 Locomotive Cyclopoedia of American Practice entnommen, die jetzt unter Public Domain steht.

D'Alembert'sches Prinzip am treibenden Rad:

Das Momentengleichgewicht liefert

\begin{align*} 0 = J_T \ddot{\alpha}_T - M + F_{S1}r\cos(\alpha_T) + F_{S2}r\cos(\delta) \end{align*}

mit $\qquad$ $\ddot{\alpha}_T = \ddot{\alpha}_A + \ddot{\varphi} = \ddot{\varphi}$$\qquad$ und $\qquad$$\delta = \pi - \alpha_T - \beta$

Die Schubstangenkräfte ergeben sich zu

\begin{align*} F_{S1}(\alpha_T) &= c_0r\sin(\varphi)\cos(\alpha_T) \\ F_{S2}(\alpha_T) &= -F_{S1}(\alpha_T + \beta) = -c_0 r \sin(\varphi) \cos(\alpha_T + \beta) \end{align*}

Einsetzen und Linearisieren in $\varphi$ liefert

\begin{align*} M &= J_T \ddot{\varphi} + c_0 r^2 \cos^2(\alpha_T)\varphi - c_0 r^2 \cos(\pi - (\alpha_T+\beta))\cos(\alpha_T+\beta)\varphi \\ \leadsto M &= J_T \ddot{\varphi} + c_0 r^2 \left[ \cos^2(\alpha_T) - \cos(\alpha_T+\beta) \cos(\pi-(\alpha_T+\beta)) \right] \varphi \end{align*}

Der Ausdruck in eckigen Klammern lässt sich umschreiben:

\begin{align*} \leadsto M = J_T \ddot{\varphi} + c_0 r^2 \left[ 1 + \cos(\beta)\cos(2\alpha_T+\beta) \right] \varphi \end{align*}

Untersuchung der homogenen DGL (Eigenschwingverhalten):

\begin{align*} \ddot{\varphi} + \frac{c_0 r^2}{J_T} \left[ 1 + \cos(\beta)\cos(2\alpha_T+\beta) \right] \varphi = 0 \end{align*}

mit $\qquad$ $\alpha_T = \Omega t = \tau$, $\qquad$ $\frac{\partial \tau}{\partial t} = \Omega$, $\qquad$ $\ddot{\varphi} = \varphi^{\prime\prime} \Omega^2$ folgt

\begin{align*} {\varphi}^{\prime\prime} + \frac{c_0 r^2}{\Omega^2 J_T} \left[ 1 + \cos(\beta)\cos(2\tau+\beta) \right] \varphi = 0 \end{align*}

Strutt'sche Karte

Mathieu-DGL:

\begin{align*} \varphi^{\prime \prime} + (\lambda - 2\gamma \cos(2\tau))\varphi = 0 \end{align*}

Für das dargestellte Problem ergibt sich:

\begin{align*} \lambda &= \frac{c_0 r^2}{\Omega^2 J_T} \\ \text{und }\; -\gamma &= \frac{c_0 r^2}{2\Omega^2 J_T} \cos(\beta) = \frac{\lambda}{2} \cos(\beta) \end{align*}

Äste der Stabilitätskarte (Mathieu stability chart / Strutt'sche Karte) :

N.W. McLachlan, Theory and Application of Mathieu Functions, Clarendon, Oxford, 1947, U.P., Reprinted by Dover, New York, 1964 or DOI:10.1016/j.ijnonlinmec.2003.08.009

In [2]:
import matplotlib.pyplot as plt
import numpy as np
import ipywidgets as widgets
In [3]:
# plot data
d = np.array([
                [0, 0, 1, 1, 4, 4, 9, 9, 16, 16, 25, 25, 36],
                [1, -0.4551386, -0.1102488, 1.8591081, 3.9170248, 4.371301, 9.0477393, 9.0783688, 16.0329701, 16.0338323, 25.0208408, 25.0208543, 36.0142899],
                [2, -1.5139569, -1.3906765, 2.3791999, 3.6722327, 5.1726651, 9.14062277, 9.3703225, 16.127688, 16.1412038, 25.083349, 25.0837778, 36.057207],
                [3, -2.8343919, -2.7853797, 2.5190391, 3.276922, 6.0451969, 9.2231328, 9.91155063, 16.2727012, 16.3387207, 25.1870798, 25.1902855, 36.1288712],
                [4, -4.2805188, -4.2591829, 2.3180082, 2.746881, 6.8290748, 9.2614461, 10.6710271, 16.4520353, 16.6468189, 25.3305449, 25.3437576, 36.22944114],
                [5, -5.800046, -5.7900806, 1.8581875, 2.0994604, 7.4491097, 9.2363277, 11.548832, 16.6482199, 17.0965817, 25.510816, 25.5499717, 36.3588668],
                [6, -7.3688308, -7.363911, 1.2142782, 1.3513812, 7.8700645, 9.1379058, 12.4656007, 16.8446016, 17.688783, 25.7234107, 25.817272, 36.5170667],
                [7, -8.9737425, -8.9712024, 0.4383491, 0.5175454, 8.0866231, 8.9623855, 13.3584213, 17.0266608, 18.4166087, 25.9624472, 26.1561202, 36.7035027],
                [8, -10.6067292, -10.6053681, -0.4359436, -0.3893618, 8.1152388, 8.7099144, 14.1818804, 17.1825278, 19.2527051, 26.2209995, 26.5777533, 36.9172131],
                [9, -12.2624142, -12.2616617, -1.3867016, -1.3588101, 7.9828432, 8.3831192, 14.9036797, 17.303011, 20.1609264, 26.4915472, 27.0918661, 37.156695],
                [10, -13.93698, -13.9365525, -2.3991424, -2.3821582, 7.7173698, 7.9860691, 15.5027844, 17.3813807, 21.1046337, 26.7664264, 27.7037687, 37.4198588],
                [12, -17.332066, -17.3319184, -4.5701329, -4.5635399, 6.8787369, 7.0005668, 16.3015349, 17.3952497, 22.9721275, 27.3000124, 29.208055, 38.0060087],
                [14, -20.7760553, -20.7760004, -6.8934005, -6.8907007, 5.7363123, 5.7926295, 16.5985405, 17.2071153, 24.6505951, 27.7697667, 31.0000508, 38.6484719],
                [16, -24.2586795, -24.2586578, -9.33523671, -9.3341097, 4.3712326, 4.3978962, 16.4868843, 16.8186837, 26.0086783, 28.136359, 32.9308951, 39.3150108],
                [18, -27.7728422, -27.7728332, -11.8732425, -11.8727265, 2.8330567, 2.8459917, 16.0619754, 16.2420804, 26.9877664, 28.3738582, 34.8530587, 39.9723511],
                [20, -31.3133901, -31.3133862, -14.4913014, -14.4910633, 1.15422829, 1.1607057, 15.3958109, 15.4939776, 27.5945782, 28.4682213, 36.6449897, 40.5896641],
                [24, -38.4589732, -38.4589724, -19.9225956, -19.9225403, -2.5397657, -2.5380779, 13.5228427, 13.5527965, 27.8854408, 28.2153594, 39.5125519, 41.6057099],
                [28, -45.6733696, -45.6733694, -25.5617471, -25.5617329, -6.588063, -6.587585, 11.1110798, 11.1206227, 27.2833082, 27.4057488, 41.2349503, 42.2248415],
                [32, -52.942223, -52.9422229, -31.3651544, -31.3651505, -10.9143534, -10.914209, 8.2914962, 8.2946721, 26.0624482, 26.1083526, 41.9535112, 42.3939428],
                [36, -60.2555679, -60.2555679, -37.3026391, -37.302638, -15.4667703, -15.4667243, 5.1456363, 5.1467375, 24.3785094, 24.3960665, 41.9266646, 42.1183561]
              ])
In [6]:
%matplotlib notebook

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
clr = ("white","grey")
unstable = ax.fill_betweenx(d[:,0], 40, d[:,12], color=clr[1], label="unstable")
stable   = ax.fill_betweenx(d[:,0], 40, 41, color=clr[0], label="stable")

for i in range(d.shape[1]-1, 0, -1):
    ax.fill_betweenx(d[:,0], -10, d[:,i], color=clr[i%2])
    plt.plot(d[:,i], d[:,0], color="black")
    
plt.plot((0, 0), (0, 20), color="black", linestyle='--')

plt.legend(handles=[stable, unstable])
plt.xlabel("λ")
plt.ylabel("-γ")
plt.xlim(-10.0, 36.0)
plt.ylim(0.0, 20.0)
plt.show()

Lösung der Schubstangen einzeichnen:

\begin{align*} -\gamma &= \frac{c_0 r^2}{2\Omega^2 J_T} \cos(\beta) = \frac{\lambda}{2} \cos(\beta) \\ \lambda &= \frac{c_0 r^2 r_a^2}{J_T} \frac{1}{\dot{x}^2} \end{align*}

Wir setzen beispielhaft \begin{align*} \sqrt{\frac{c_0 r^2 r_a^2}{J_T}} = 60 \frac{m}{s} \end{align*}

In [7]:
%matplotlib notebook
w1 = widgets.FloatSlider(
    value=45.0, 
    min=0.0, 
    max=90.0, 
    step=5,
    description='β [°] :', 
    readout_format='.0f',
)
w2 = widgets.FloatSlider(
    value=20, 
    min=1, 
    max=80, 
    step=0.2,
    description='dx/dt [m/s] :', 
    readout_format='.1f',
);

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
clr = ("white","grey")
unstable = ax.fill_betweenx(d[:,0], 40, d[:,12], color=clr[1], label="unstable")
stable   = ax.fill_betweenx(d[:,0], 40, 41, color=clr[0], label="stable")

for i in range(d.shape[1]-1, 0, -1):
    ax.fill_betweenx(d[:,0], -10, d[:,i], color=clr[i%2])
    plt.plot(d[:,i], d[:,0], color="black")
    
plt.plot((0, 0), (0, 20), color="black", linestyle='--')

plt.legend(handles=[stable, unstable])
plt.xlabel("λ")
plt.ylabel("-γ")
plt.xlim(-10.0, 36.0)
plt.ylim(0.0, 20.0)
plt.show()

line, = ax.plot((0, 40), (0, 40/2*np.cos(w1.value*np.pi/180)))
point, = ax.plot((60**2/w2.value**2),(60**2/w2.value**2/2*np.cos(w1.value*np.pi/180)),'bo')

def update(w1, w2):
    line.set_ydata((0, 40/2*np.cos(w1*np.pi/180)))
    point.set_xdata((60**2/w2**2))
    point.set_ydata((60**2/w2**2/2*np.cos(w1*np.pi/180)))
    fig.canvas.draw()
    
widgets.interact(update, w1=w1, w2=w2);
In [ ]: