Simulation
Signal-Generatoren
Periodisch
Eine einfache periodische Funktion ist das Sinus-Signal, dass mit einem Rauschanteil überlagert wird.
\[
x(t) = sin( \omega \cdot t) + w(t) \\
w(t) = N(\sigma)
\]
Das Skript zeigt einen "statischen" Aufbau:
sinusSignal.py
# =============================================================================
# Sinus-Signal mit Rauschüberlagerung
# =============================================================================
import numpy as np
import matplotlib.pyplot as plt
# -----------------------------------------------------------------------------
# Parameter
n = 200
T1 = 1
T = 0.1
# Rauschsignal anlegen (Normalverteilung, n-Elemente, Amplitude=0.5)
w = np.random.randn(n)*0.5
# Speicher für Vektoren
t = np.linspace(0,100,n)
u1 = np.zeros(n)
u2 = np.zeros(n)
u = np.ones(n)
x = np.zeros(n)
# Signalerzeugung
for i in range(0,n):
u[i] = np.cos(4*t[i]/100*np.pi)
x[i] = w[i] + u[i]
# Plot-Ausgabe ----------------------------------------------
plt.close('all')
fig = plt.figure(figsize=(5, 4))
ax1 = plt.subplot2grid((3, 4), (0, 0), colspan=2)
ax2 = plt.subplot2grid((3, 4), (0, 2), colspan=2)
ax3 = plt.subplot2grid((3, 4), (1, 1), colspan=2, rowspan=2)
ax1.plot(t,u, linewidth=3, color='#cc5200')
ax1.grid()
ax1.set_xlabel('$t/s$')
ax1.set_ylabel('$u(t)$')
ax2.plot(t,w)
ax2.grid()
ax2.set_xlabel('$t/s$')
ax2.set_ylabel('$w(t)$')
ax3.plot(t,x, linewidth=1)
ax3.plot(t,u, linewidth=2, color='#cc5200')
ax3.grid()
ax3.set_xlabel('$t/s$')
ax3.set_ylabel('$x(t)=u(t)+w(t)$')
plt.tight_layout()
plt.show()
Stochastisch
Rauschen
Random Walk
Prozessmodelle
Musterprozess
Der periodische Musterprozess soll eine die Signalkette mit Hilfe verschiedener standardisierter Einzelübertragungsblöcke demonstrieren. Mit diesem Konzept lassen sich sehr schnell individuelle signalbasierte dynamische Prozessmodelle entwickeln.
sequentielles Signalmodell
Die Signal-Pipeline besteht aus folgenden Blöcken:
- Taktgeber (erzeugt den Timestamp)
- Funktionsgenerator (hier: Amplitudenbegrenzte Sinus-Funktion)
- Drift-Generator, der überlagert wird (Multiplikation == Skalierung der Signal-Amplitude)
- Doppelte Verzögerung durch PT1-Glied
- Rauschanteil mit normalverteiltem Signal
sim__prozSig_plt_01.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
|
Simulationsergebnis als Plot-Ausgabe (tSim = 2m)
Simulationsergebnis als Plot-Ausgabe (tSim = 1h)
Info
Dieses Modell wird im Kapitel "Beispiel-Prozesse" eingesetzt.
Echtzeit-Simulation
APScheduler
"P:\docs_DNL\PY-simProz_mDB_NR\sim__prozSig_plt_01.py"