From 47d6cc207aa510b10a42b9212d6c1bc87465d0c1 Mon Sep 17 00:00:00 2001 From: Jan Falkenhain <jan.falkenhain@hs-bochum.de> Date: Fri, 16 Apr 2021 10:42:10 +0200 Subject: [PATCH] 9erd commit --- 2_Grundlagen.tex | 40 ++++++++++++------- 3_Euler-Diskretisierung.tex | 66 ++++++++++++++++++++------------ 5_Impulse-Diskretisierung.tex | 14 +++---- 7_Tustin-Diskretisierung.tex | 43 +++++++++++++-------- Matlab/Diskretisierung_Euler.m | 29 +++++++------- Matlab/Diskretisierung_Impulse.m | 42 ++++++++++++++++++++ Matlab/Diskretisierung_Tustin.m | 10 ++--- anhang.tex | 57 ++++++++++++++------------- hauptdatei.tex | 24 +++++++++++- 9 files changed, 215 insertions(+), 110 deletions(-) create mode 100644 Matlab/Diskretisierung_Impulse.m diff --git a/2_Grundlagen.tex b/2_Grundlagen.tex index c7c85be..9721b82 100644 --- a/2_Grundlagen.tex +++ b/2_Grundlagen.tex @@ -51,7 +51,7 @@ y(t) = u(t)\ast g(t) = \int_{-\infty}^t u(\tau) g(t-\tau) d\tau~~. \] Die Übertragungsfuktion als Bruch zweier Polynome in $s$ \[ -G(s) = \frac{Y(s)}{U(s)} = \frac{\Pi_{i=1}^q (s-s_{0i})}{\Pi_{i=1}^n (s-s_i)} +G(s) = \frac{Y(s)}{U(s)} = K_k\frac{\Pi_{i=1}^q (s-s_{0i})}{\Pi_{i=1}^n (s-s_i)} \] kann u. a. in Pol-/Nullstellenform oder durch Partialbruchzerlegung in Summanden zerlegt werden.\\ @@ -105,7 +105,7 @@ nicht aus der Abtastung des Dirac-Impulses hervorgeht, da dieser bei null nicht %Ersetz man in der Laplace-Transformation , so entsteht die z-Transformation, über welche Die diskrete Impulsantwort als Reaktion auf den diskreten Impuls $\rho(k)$ und die diskrete Übertragungsfunktion bilden ein z-Transformationspaar -\[g(k)~~\laplace~~ G(z) = \frac{Y(z)}{U(z)} = \frac{\Pi_{i=1}^q (z-z_{0i})}{\Pi_{i=1}^n (z-z_i)}~~,\] +\[g(k)~~\laplace~~ G(z) = \frac{Y(z)}{U(z)} = K_d\frac{\Pi_{i=1}^q (z-z_{0i})}{\Pi_{i=1}^n (z-z_i)}~~,\] womit sich ähnliche Darstellungen und Zusammenhänge wie im Kontinuierlichen ergeben (siehe auch Seite 8). %\pageref{ref:pdfuebersicht} funktionieren nicht %\ref{ref:pdfuebersicht} @@ -187,7 +187,7 @@ Damit kann die entsprechende Transformation der Zustandsgleichung des diskreten nach $\jv X(z)$ aufgelöst und in die Ausgabegleichung eingesetzt werden, um die Übertragungsfunktion und die statische Verstärkung \begin{align*} - {\jv G}(z) &= \jv C(z\jv I - \jv A)^{-1} \jv B +\jv D;~~~~\jv K_s=\jv G(1) = -\jv C \jv (\jv I - \jv A)^{-1} \jv B +\jv D + {\jv G}(z) &= \jv C(z\jv I - \jv A)^{-1} \jv B +\jv D;~~~~\jv K_s=\jv G(1) = \jv C \jv (\jv I - \jv A)^{-1} \jv B +\jv D \end{align*} zu ermitteln. Letztere unterscheidet sich formal, da im diskreten Fall der statische Zustand für $z=e^{0\cdot T}=1$ oder im Zeitbereich mit dem Ansatz $\jv x(k+1) = \jv x(k)$ ermittelt wird. @@ -211,15 +211,27 @@ Auch wenn Systemen Einagangs- und Ausgangsverzögerungen (Totzeiten) hinzugefüg \textbf{ZOH (Zero-Order-Hold).} Um mit einer praktischen, algorithmischen Beschreibung zu beginnen, sei das Verhalten des ZOH-Block aus MATLAB/Simulink\texttrademark~ dargestellt: Der ZOH-Block nimmt zu Beginn der Abtastperiode den Eingangswert und hält ihn konstant für eine Periodendauer $T$. Bezogen auf ein kontinuierliches Eingangssignal $u(t)$ wird damit ein Abtast-Halteglied (sample-and-hold) realisiert. Ein kontinuierliches Eingangssignal $u(t)$ wird in ein stufenförmiges, aber kontinuierliches Signal $y(t)$ in transformiert. Die Höhe der Stufen ist durch die Werte von $u(t)$ zu den Abtastzeitpunkten $kT$ gegeben und wird für eine Periode $T$ gehalten. Das stufenförmige Signal $y(t)$ stimmt \textit{links} mit $u(t)$ überein. Die Hintereinander-Schaltung zweier (oder mehrerer) ZOH-Blöcke mit identischer Abtastperiode ist dementsprechend völlig wirkungslos. Zum Abtastzeitpunkt propagiert der Eingangssignalwert durch alle Blöcke und wird am Ausgang für eine Periode gehalten. -\begin{tikzpicture}[node distance=2.5cm,auto,>=latex', scale=3] - \node [int] (a) {$z^{-1}$}; %\node [int, pin={[init]above:$v_0$}] (a) {$\int$}; - \node (b) [left of=a,node distance=2cm, coordinate] {a}; - \node (c) [right of=a] {$$}; %\node [int, pin={[init]above:$p_0$}] (c) [right of=a] {$\int$}; - \node (d) [right of=c] {$$}; - \node (e) [right of=d] {$$}; - \node [coordinate] (end) [right of=c, node distance=2cm]{}; - \path[->] (b) edge node {$u(k)$} (a); - \path[->] (a) edge node {$u(k-1)$} (c); +\begin{tikzpicture}%[node distance=2.5cm,auto,>=latex', scale=3] + %\node [int] (a) {$z^{-1}$}; %\node [int, pin={[init]above:$v_0$}] (a) {$\int$}; + %\node (a) {$$}; %\node [int, pin={[init]above:$v_0$}] (a) {$\int$}; + %\node (b) [left of=a,node distance=2cm, coordinate] {a}; + %\node (c) [right of=a] {$$}; %\node [int, pin={[init]above:$p_0$}] (c) [right of=a] {$\int$}; + %\node (d) [right of=c] {$$}; + %\node (e) [right of=d] {$$}; + %\node [coordinate] (end) [right of=c, node distance=2cm]{}; + %\path[->] (b) edge node {$u(t)$} (a); + %\path[->] (a) edge node {$u(k-1)$} (c); +\draw[->] (1, 0) -- (2,0); +\draw (2, 0) -- (3,0); +\draw (2, -1) rectangle (8,1); +\draw[-*] (2, 0) -- (3,0); +\draw (3, 0) -- (3.75 , 0.55) node[left]{$T$}; +\draw[*->] (3.75, 0) -- (4.75 , 0); +\draw (3.75, 0) arc (0:17:2); +\draw (4.75 , -0.4) rectangle (6.75,0.6) node[below left]{$G_{ZOH}(s)$}; +\draw (6.75, 0) -- (8,0); +\draw[->] (8, 0) -- (9,0); +\node (a) at (3.8, -0.75) {Abtast-Halteglied}; \end{tikzpicture} Der Abtastvorgang wurde bereits mathematisch als Umwandlung in eine gewichtete Impulsfolge beschrieben. Das Halteglied nullter Ordnung (Zero-Order-Hold) kann eigentlich nur sinnvoll mit einer solchen Impulsfolge gespeist werden, um den Wichtungsfaktor am Ausgang über eine Periode zu halten. Das Halteglied ohne den Abtaster überträgt also ein (quasi-) kontinuierliches Signal, sinnvollerweise eine Impulsfolge, in ein kontinuierliches, stufenförmiges Signal. Die Impulsantwort @@ -257,13 +269,13 @@ g_{ZOH}(t)& = \sigma(t) - \sigma(t-T) \begin{minipage}[c]{0.49\linewidth} \begin{align*} -g_{FOH}(t) = \frac{1}{T}(t\sigma(t) - 2(t-T)\sigma(t-T) +(t-2T)\sigma(t-2T)) +g_{FOH}(t) = \frac{t}{T}\sigma(t) - 2 \frac{t-T}{T}\sigma(t-T) +\frac{t-2T}{T}\sigma(t-2T) \end{align*} \end{minipage} \begin{minipage}[c]{0.49\linewidth} \begin{center} -\begin{tikzpicture}%[domain=0:4] +\hspace{-2cm}\begin{tikzpicture}%[domain=0:4] %\draw[very thin,color=gray] (-0.1,-1.1) grid (6,1.0); \draw[-] (-0.1, 1) node[left] {1} -- (0.1,1); %\draw[color=blue] (0.02, 0) -- (0.02,1); diff --git a/3_Euler-Diskretisierung.tex b/3_Euler-Diskretisierung.tex index c74eb08..eb355a4 100644 --- a/3_Euler-Diskretisierung.tex +++ b/3_Euler-Diskretisierung.tex @@ -1,7 +1,7 @@ \subsection{Euler-Diskretisierung \label{sec:Euler-Diskretisierung}} -Der Euler-Ansatz besteht darin, die kontinuierliche Ableitung durch den Differenzenquozienten zu ersetzen, im ersten Fall (nicht-kausal) mit dem zukünftigen Wert des abzuleitenden Signals, im zweiten Fall mit dem vergangenen Wert (kausal). In beiden Fällen erhält man kausale, diskrete Systeme, allerdings mit ungünstigen Eigenschaften bezüglich Transformation der Eigenwerte/Pole. Im MIT-Video \citep{yawpitchroll2013} sind diese Eigenschaften dargestellt. Von Vorteil ist, dass auch nichtlineare Differenzialgleichungen auf diese Art diskretisiert werden können. Für lineare Systeme könnte der Ansatz als naiv betrachtet, weshalb in der Quelle \citep{yawpitchroll2013} gegen Ende zur Tustin-Approximation Kap. \ref{sec:Tustin-Approximation} übergegangen wird. +Der Euler-Ansatz besteht darin, die kontinuierliche Zeitableitung durch den Differenzenquotienten zu ersetzen, im ersten Fall (nicht-kausal) mit dem zukünftigen Wert des abzuleitenden Signals, im zweiten Fall mit dem vergangenen Wert (kausal). In beiden Fällen erhält man kausale, diskrete Systeme, allerdings mit ungünstigen Eigenschaften bezüglich Transformation der Eigenwerte/Pole. Im MIT-Video \citep{yawpitchroll2013} sind diese Eigenschaften dargestellt. Von Vorteil ist, dass auch nichtlineare Differenzialgleichungen auf diese Art leicht diskretisiert werden können. Für lineare Systeme könnte der Ansatz als naiv betrachtet, weshalb in der Quelle \citep{yawpitchroll2013} gegen Ende zur Tustin-Approximation (Kap. \ref{sec:Tustin-Approximation}) übergegangen wird. \subsubsection{Euler-Forward-Diskretisierung (explizit) @@ -17,9 +17,9 @@ Die Differenzengleichung des diskreten Differenziators mit Eingang $u(k)$ lautet \begin{align*} y(k)&= \frac{u(k+1)-u(k)}{T}~~. \end{align*} -Sie ist nicht realisierbar, weil nicht kausal. Allerdings gilt ja auch der ideale kontinuierliche Differeziator als nicht-kausal. Die Übertragunsfunktion ergibt sich durch z-Transformation zu +Sie ist nicht realisierbar, weil nicht kausal. Allerdings gilt ja auch der ideale kontinuierliche Differenziator als nicht-kausal. Die Übertragunsfunktion ergibt sich durch z-Transformation zu \begin{align*} -Y(z) = \frac{zU(z)- U(z)}{T} ~~\Leftrightarrow~~ \frac{Y(z)}{U(z)}=\frac{z-1}{T} +Y(z) = \frac{zU(z)- U(z)}{T} ~~\Leftrightarrow~~ \frac{Y(z)}{U(z)}=\frac{z-1}{T}~\leftrightarrow G(s)=s \end{align*} und führt auf den Zusammenhang $sT+1 \equiv z$. @@ -59,7 +59,7 @@ durch den Akkumulator ersetzt bzw. jede Zeitableitung $s$ durch den Kehrwert. s\equiv (z-1)\cdot 1/T~~~\text{bzw.}~~~z\equiv sT+1 \end{align*} gegeben und die Überführung erfolgt durch Ersetzen komplexen Variablen $s\mapsto (z-1)/T$. -Eine Eigenschaft des Ansatzes ist damit, dass eine eindeutige $s-z$-Transfornation stattfindet, insbesondere auch der Pol- und Nullstellen. +Eine Eigenschaft des Ansatzes ist damit, dass eine eindeutige $s-z$-Transformation stattfindet, insbesondere auch der Pol- und Nullstellen. \begin{figure}[H] \begin{center} @@ -92,12 +92,12 @@ Eine Eigenschaft des Ansatzes ist damit, dass eine eindeutige $s-z$-Transfornati \node[diamond, fill = red, inner sep=2pt, minimum size=0.1pt] at (9.5,-1) (name) {}; \end{tikzpicture} -\caption{Transformation der Polstellen bei Euler-Forward-Diskretisierung \label{fig:s-zEuler}} +\caption{Transformation der Pol- und Nullstellen bei Euler-Forward-Diskretisierung \label{fig:s-zEuler}} \end{center} \end{figure} Betrachtet man die Verschiebung der Pole der linken s-Halbebene, so können stabile Systeme in instabile diskrete Systeme transformiert werden. -Man kann sich vorstellen, dass nur in Ausnahmefällen stabile Pole des kontinuierlichen Systems im Einheitskreis der z-Ebene landen und somit auch stabile Pole des diskreten Systems darstellen. Das dargestellte, grenzstabile Polpaar wird auf instabile Pole des diskreten Systes führen, aber auch zu weit rechts in der s-Ebene liegende Pole transformieren trotz hoher Abtastrate möglicherweise nicht auf stabile Pole. +Man kann sich vorstellen, dass nur in Ausnahmefällen stabile Pole des kontinuierlichen Systems im Einheitskreis der z-Ebene landen und somit auch stabile Pole des diskreten Systems darstellen. Das dargestellte, grenzstabile Polpaar wird auf instabile Pole des diskreten Systes führen, aber auch zu weit links in der s-Ebene liegende Pole transformieren bei zu geringer Abtastrate möglicherweise nicht auf stabile Pole. \textbf{Zustandsraummodell.} Die Art der Polverschiebung zeigt sich auch bei Diskretisierung der Zustandsgleichung des ZRM \eqref{ZRM_kont}, wo mit dem Differenzenquotienten \eqref{Forward_diffq} folgt @@ -128,7 +128,7 @@ ZRM-EF: \textbf{Beispiel.} Die Sprunganwort (Bild \ref{fig:step-ForwardEuler}) für das EF-diskretisierte Originalsystem \[G(s)=\frac{s+1}{s^2+s+1}\] -liegt für $T=0.5$ im Vergleich zu anderen Verfahren (Bild \ref{fig:Sprungantwort}) weiter von der kontinuierlichen Sprungantwort weg. Wie Bild \ref{fig:step-ForwardEuler} zeigt, nähert sich die diskreten Werte dem kontinuierlichen Original bei Reduktion der Abtastzeit. In der Simulationstechnik wird genau die notwendige, sehr geringe Schrittweite als Ausschlusskriterium für das Verfahren genannt. Für größere $T$ wird das diskrete System instabil. Die statische Verstärkung des Originalsystems $h(t\rightarrow\infty)$ entspricht unabbhängig von $T$ der, des diskreten Systems. Das dies im Allgemeinen der Fall ist, kann anhand der Darstellungen in ZRM-Form gezeigt werden: +liegt für $T=0.5$ im Vergleich zu anderen Verfahren (Bild \ref{fig:Sprungantwort}) weiter von der kontinuierlichen Sprungantwort weg. Wie Bild \ref{fig:step-ForwardEuler} zeigt, nähern sich die diskreten Werte dem kontinuierlichen Original bei Reduktion der Abtastzeit. In der Simulationstechnik wird genau die notwendige, sehr geringe Schrittweite als Ausschlusskriterium für das Verfahren genannt. Für größere $T$ wird das diskrete System instabil. Die statische Verstärkung des Originalsystems $h(t\rightarrow\infty)$ entspricht unabbhängig von $T$ der, des diskreten Systems. Das dies im Allgemeinen der Fall ist, kann anhand der Darstellungen in ZRM-Form gezeigt werden: \begin{align*} G_k(s=0) = \jv D- \jv C\jv A_k^{-1} \jv B_k &\stackrel{?}{=} \jv D+ \jv C(\jv I-\jv A_d)^{-1} \jv B_d =G_d(z=1)\\ \Leftrightarrow~~ - \jv A_k^{-1} \jv B_k &{=} \jv (\jv I-\jv A_d)^{-1} \jv B_d\\ @@ -141,7 +141,7 @@ G_k(s=0) = \jv D- \jv C\jv A_k^{-1} \jv B_k &\stackrel{?}{=} \jv D+ \jv C(\jv I \subsubsection{Euler-Backward-Diskretisierung (implizit) \label{sec:Euler-Forward-Diskretisierung}} -\textbf{Differenzialquotient.} Der Ansatz Euler-Backward (EB) bedeutet, einen kausalen diskreten Differenziator zu bilden, bei dem die Zeitableitung durch den Differenzenquozienten aus dem aktuellen und dem \textbf{vergangenen} Vorgängerwert des Signals ersetzt wird: +\textbf{Differenzenquotient.} Der Ansatz Euler-Backward (EB) bedeutet, einen kausalen diskreten Differenziator zu bilden, bei dem die Zeitableitung durch den Differenzenquozienten aus dem aktuellen und dem \textbf{vergangenen} Vorgängerwert des Signals ersetzt wird: \begin{align}\label{eq:firstOrderDiff} \dot{x}\approx \frac{x(k)-x(k-1)}{T} \end{align} @@ -155,23 +155,23 @@ Wie später durchgeführt, kann das ZRM mit dieser Approximation diskretisiert w \begin{pmatrix} 0\\1 \end{pmatrix} u \end{align*} -Mit Gl. \ref{eq:firstOrderDiff} ergeben die zwei Zeilen des ZRM +Mit Gl. \eqref{eq:firstOrderDiff} ergeben die zwei Zeilen des ZRM EB-diskretisiert \begin{align*} x^1_k-x^1_{k-1} &= T x^2_k\\ x^2_k-x^2_{k-1} &= T u_k \end{align*} und das Ersetzen von $x^2$ in Zeile zwei führt auf \begin{align*} -x^1_k- 2 x^1_{k-1} + x^1_{k-2} &= T^2 u +x^1_k- 2 x^1_{k-1} + x^1_{k-2} &= T^2 u_k \end{align*} In \cite{unbehauen2000RT2} ist noch für Ableitungen dritter Ordnung der Differenzenquotient im Sinne der EB-Approximation angegeben, welcher hier für lineare System auf die Approximationen \begin{align*}%\label{eq:firstOrderDiff} -\ddot{x}\approx \frac{x(k)-2x(k-1) + x(k-2)}{T^2}\\ -\dddot{x}\approx \frac{x(k)-3x(k-1) + 3x(k-2)-x(k-3)}{T^3} +\ddot{x}&\approx \frac{x(k)-2x(k-1) + x(k-2)}{T^2}\\ +\dddot{x}&\approx \frac{x(k)-3x(k-1) + 3x(k-2)-x(k-3)}{T^3} \end{align*} führt. -\textbf{Integration.} Leiten wir diesmal direkt ab, dass der Differnziation im Frequenzbereich auf der linken Seite ($s$) der Differenz von verzögerten Eingängen ($z^{-1}$) entspricht, also +\textbf{Integration.} Leiten wir diesmal direkt aus Gl. \eqref{eq:firstOrderDiff} ab, dass der Differenziation im Frequenzbereich auf der linken Seite ($s$) der Differenz von verzögerten Eingängen ($z^{-1}$) entspricht, also \begin{align} s \equiv \frac{1-z^{-1}}{T}~~~\text{bzw.}~~~z\equiv\frac{1}{1-sT} \end{align} @@ -179,7 +179,7 @@ dann erhalten wir durch Umstellen auch die Übertragungsfunktion des Integrators \begin{align}\label{EB:Integrator} \frac{1}{s}\equiv \frac{Tz}{z-1} = \frac{Y(z)}{U(z)}~~. \end{align} -Durch Umkehrung der E/A-Signale des Differenziator oder durch Transformation der Übertragungsfuktion \eqref{EB:Integrator} kann man die Differenzengleichung des Akkumulator ermitteln: +Durch Umkehrung der E/A-Signale des Differenziators oder durch Transformation der Übertragungsfuktion \eqref{EB:Integrator} kann man die Differenzengleichung des Akkumulators ermitteln: \begin{tikzpicture}[node distance=2.5cm,auto,>=latex', scale=3] \node [int] (a) {$\text{A}_{EB}$}; %\node [int, pin={[init]above:$v_0$}] (a) {$\int$}; @@ -193,7 +193,7 @@ Durch Umkehrung der E/A-Signale des Differenziator oder durch Transformation der \end{tikzpicture} -\textbf{Pol-/Nullstellentransformation.} Auch dieser Ansatzes stellt eine eindeutige Pol-Transformation dar. Die Transformation stabiler Pole aus der linken s-Halbebene führt in einen Kreis um $0,5$ im Einheitskreis, siehe Bild \ref{fig:s-zEuler2}. Das ist bezüglich der dynamischen Eigenschaften des Systems konservativ, soll heißen bestimmt dynamische Eigenschaften stabiler diskreter System können nicht aus stabilen kontinuierlichen Systemen abgeleitet werden. +\textbf{Pol-/Nullstellentransformation.} Auch dieser Ansatzes stellt eine eindeutige Pol-Transformation dar. Die Transformation stabiler Pole aus der linken s-Halbebene führt in einen Kreis um $0.5$ im Einheitskreis, siehe Bild \ref{fig:s-zEuler2}. Das ist bezüglich der dynamischen Eigenschaften des Systems konservativ, soll heißen bestimmt dynamische Eigenschaften stabiler diskreter System können nicht aus stabilen kontinuierlichen Systemen abgeleitet werden. \begin{figure}[H] \begin{center} @@ -229,27 +229,45 @@ Durch Umkehrung der E/A-Signale des Differenziator oder durch Transformation der Etwas genauer anhand der Pol-/Nullstellenform betrachtet, wird deutlich, dass die Nullstellen genauso abgebildet werden, wie die Pole. \[ -G(s) =\frac{\Pi_{i=1}^q (s-s_{0i})}{\Pi_{i=1}^n (s-s_i)}\leftrightarrow -\frac{\Pi_{i=1}^q (\frac{z-1}{zT}-s_{0i})}{\Pi_{i=1}^n (\frac{z-1}{zT}-s_i)} -=\frac{\Pi_{i=1}^q (z-1-s_{0i}zT)}{\Pi_{i=1}^n (z-1-s_izT)}\cdot (zT)^{n-q} +G(s) =K\frac{\Pi_{i=1}^q (s-s_{0i})}{\Pi_{i=1}^n (s-s_i)}\leftrightarrow +K\frac{\Pi_{i=1}^q (\frac{z-1}{zT}-s_{0i})}{\Pi_{i=1}^n (\frac{z-1}{zT}-s_i)} +=K\frac{\Pi_{i=1}^q (z-1-s_{0i}zT)}{\Pi_{i=1}^n (z-1-s_izT)}\cdot (zT)^{n-q} \] Hier wird nach dem Ersetzen mit $zT$ erweitert, wobei man prüfe, dass bei identischer Anzahl von Nullstellen und Polen die Terme zur Erweiterung entsprechend wegfallen. Für kausale Systeme ohne Durchgriff sind mehr Pole vorhanden und man erhält $n-q>0$ zusätzliche Nullstellen bei $z_{i0} = 0$ im diskreten System. +Die Form eignet sich, um die Gleichheit der statischen Verstärkungen zu überprüfen: +\[ +G_k(0) =K\frac{\Pi_{i=1}^q (-s_{0i})}{\Pi_{i=1}^n (-s_i)}\stackrel{?}{=} +K\frac{\Pi_{i=1}^q (-s_{0i}T)}{\Pi_{i=1}^n (-s_iT)}\cdot (T)^{n-q} = G_d(1) \checkmark +\] + -\textbf{Zustandsraumodell.} In Abhängigkeit der Matrizen diskretisiert man die Zustandsgleichung des ZRM +\textbf{Zustandsraummodell.} In Abhängigkeit der Matrizen diskretisiert man die Zustandsgleichung des ZRM \begin{align}\label{ZRM:kompliziert} \jv x_k-\jv x_{k-1}&=T\jv A_k\jv x_k + T\jv B_k\jv u_k\\\nonumber -\Leftrightarrow~\jv x_{k+1}(\jv I-T\jv A_k)&= \jv x_k + T\jv B_k \jv u_{k+1}~~. +\Leftrightarrow~(\jv I-T\jv A_k)\jv x_{k+1}&= \jv x_k + T\jv B_k \jv u_{k+1}\\ +\Leftrightarrow \jv x_{k+1}&= \underbrace{(\jv I-T\jv A_k)^{-1}}_{\overline{\jv A}=\jv A_d} \jv x_k + \underbrace{(\jv I-T\jv A_k)^{-1} T\jv B_k}_{\overline{\jv B}} \jv u_{k+1} \end{align} \begin{itemize} -\item Die Umformung von Gl. \eqref{ZRM:kompliziert} in ein ZRM ist etwas aufwendiger, weil hier die vermeindliche Zustandsgröße $\jv x(k+1)$ vom Eingang $\jv u(k+1)$ zum gleichen Zeitpunkt abhängt. Mit einem modifizierten Zustand sollte die Darstellung gelingen (Anhang A). +\item Die Umformung von Gl. \eqref{ZRM:kompliziert} in ein ZRM ist etwas aufwendiger, weil hier die vermeindliche Zustandsgröße $\jv x(k+1)$ vom Eingang $\jv u(k+1)$ zum gleichen Zeitpunkt abhängt. Mit einem modifizierten Zustand sollte die Darstellung gelingen (siehe Anhang A und Fortsetzung). \item Es lässt sich aber erkennen, dass die Zustandsübergangsmatrix $\jv A_d= (\jv I-T\jv A_k)^{-1}$ lautet. -\item Plausibilisiert man sich die Eigenwerttransformation anhand der stabilen Eigenwerte auf der reellen Achse, so kann das mit der speziellen Form der Diagonalmatrix für $\jv A_k$ gelingen. Die reellen $\hat{\lambda}_i(\jv I-T\jv A_k)>1$ und damit für die inverse Matrix $0<\lambda_i(\jv A_d)<1$, also im angedeuteten Bildbereich auf der positiven reellen Achse im Einheitskreis. +\item Plausibilisiert man sich die Eigenwerttransformation anhand der stabilen Eigenwerte $\lambda_i(jv A_k)<0$ auf der reellen Achse, so kann das mit der speziellen Form der Diagonalmatrix für $\jv A_k$ gelingen. Es gilt dann $\hat{\lambda}_i(\jv I-T\jv A_k)>1$ und damit für die inverse Matrix $0<\lambda_i(\jv A_d)<1$, also im angedeuteten Bildbereich auf der positiven reellen Achse im Einheitskreis. \end{itemize} -\textbf{Beispiel.} Bei beiden Methoden (EF, EB) erhält man das diskrete System durch entsprechendes Ersetzen von $s$ in $G(s)$, wie hier mit Hilfe der Symbolic Toolbox \texttrademark in Matlab\texttrademark durchgeführt. Die statische Verstärkung bleibt erhalten. +ZRM-EB: +\begin{empheq}[box=\fbox]{align*} +%\boxed{ + \jv A_d &= (\jv I-T\jv A_k)^{-1} ~~&~~ \jv B_d &= (\jv I-T\jv A_k)^{-2}T\jv B_k \\ +%&&= (e{\jv A_k T}-\jv I){\jv A_k}^{-1}\jv B_k\\^ + \jv C_d &=\jv C_k ~~&~~ \jv D_d &= \jv C_k(\jv I-T\jv A_k)^{-1}T\jv B_k + \jv D_k +%} +\end{empheq} +%} + + +\textbf{Beispiel.} Bei beiden Methoden (EF, EB) erhält man das diskrete System durch entsprechendes Ersetzen von $s$ in $G(s)$, wie hier mit Hilfe der Symbolic Toolbox \texttrademark~ in Matlab\texttrademark~ durchgeführt. Die statische Verstärkung bleibt erhalten. -\href{https://gitlab.cvh-server.de/jfalkenhain/diskretisierung-linearer-systeme/-/blob/master/Matlab/Diskretisierung_Euler.m}{Matlab\texttrademark(R2021a) file on Git: Diskretisierung\_Euler.m} +\href{https://gitlab.cvh-server.de/jfalkenhain/diskretisierung-linearer-systeme/-/blob/master/Matlab/Diskretisierung_Euler.m}{File on Git: Diskretisierung\_Euler.m} \begin{figure}[H] \begin{center} diff --git a/5_Impulse-Diskretisierung.tex b/5_Impulse-Diskretisierung.tex index fb93f5e..1f0becc 100644 --- a/5_Impulse-Diskretisierung.tex +++ b/5_Impulse-Diskretisierung.tex @@ -5,7 +5,7 @@ \begin{align}\label{Impulse:bed} g_k(kT) =g_d (k)~~\laplace ~~G_{Impulse}(z)~~. \end{align} -In der Praxis lassen sich damit natürlich auch Linearisierungen, Systemvereinfachungen, Arbeitspunktmodelle usw. komplexerer Systeme ermitteln. Die Ordnung des diskreten Systems ergibt sich prinzipiell aus der Anzahl der verwendeten Abtastzeitpunkte. Die Übertragungsfunktion entsteht der aus z-Transformation der abgetasteten Impulsfolge. +In der Praxis lassen sich damit natürlich auch Linearisierungen, Systemvereinfachungen, Arbeitspunktmodelle usw. komplexerer Systeme ermitteln. Die Ordnung des diskreten Systems ergibt sich prinzipiell der aus Anzahl der verwendeten Abtastzeitpunkte. Die Übertragungsfunktion entsteht der aus z-Transformation der abgetasteten Impulsfolge. In \cite{bild_quad} @@ -13,9 +13,9 @@ In %\url{https://www.eit.hs-karlsruhe.de/mesysto/quicklink/startseite.html} wird in der konkreten Beispielaufgabe darauf hingewiesen, dass die statische Verstärkung $K_S=G_{Impulse}(1)$ nicht der des kontinuierlichen Systems entspricht, mit geringerer Abtastzeit aber immer besser approximiert wird. Eine Erklärung dafür wird auch im Frequenzbereich gesucht. -Die Diskretisierung eines Durchgriffs oder statischen Anteils auf diese Weise ist wenig sinnvoll. Die Impulsantwort eines kontinuierlichen Systems erhält durch diesen den Anteil $g(t)=d\cdot \rho(0)+\tilde g(t)$. Bis auf diesen Impuls bei $t=0$ ist sie identisch mit $\tilde g(t)$, der Impulsantwort mit verschwindendem Durchgriff. Der (pseudo-) kontinuierliche Dirac-Impuls lässt sich wie eingangs erwähnt nicht sinnvoll abtasten. Bei Impuls-Diskretisierung könnte man den statischen Anteil einfach vom kontinuierlichen System übernehmen. +Die Diskretisierung eines Durchgriffs oder statischen Anteils auf diese Weise ist wenig sinnvoll. Die Impulsantwort eines kontinuierlichen Systems erhält durch diesen den Anteil $g(t)=d\cdot \rho(0)+\tilde g(t)$. Bis auf diesen Impuls bei $t=0$ ist sie identisch mit $\tilde g(t)$, der Impulsantwort mit verschwindendem Durchgriff. Der (pseudo-) kontinuierliche Dirac-Impuls lässt sich wie eingangs erwähnt nicht sinnvoll abtasten. Bei Impuls-Diskretisierung könnte man den statischen Anteil einfach vom kontinuierlichen System übernehmen ($d_d=d_k$). -Die theoretische Ermittlung korrespondierender diskreter Systeme aus der kontinuierlichen Übertragungsfunktion kann zumeist direkt anhand von Korrespondenztabellen erfolgen, welche in der Regel +Die theoretische Ermittlung korrespondierender diskreter Systeme aus der kontinuierlichen Übertragungsfunktion kann zumeist direkt anhand von Korrespondenztabellen erfolgen: \begin{table}[H] @@ -28,8 +28,8 @@ Die theoretische Ermittlung korrespondierender diskreter Systeme aus der kontinu \hline $\frac{1}{s}$ & $\sigma(t)$ & $\sigma(k)$ & $\frac{z}{z-1}$ \\ $\frac{1}{s^2}$ & $t\cdot \sigma(t)$ & $kT\cdot\sigma(k)$ & $\frac{Tz}{(z-1)^2}$ \\ - $\frac{1}{s^3}$ & $1/2 t^2$ & $1/2\cdot(kT)^2$& $\frac{T^2}{2}\frac{z(z+1)}{(z-1)^3}$ \\ - $\frac{1}{1+s \tau }$ & $1/\tau e^{-t/\tau}$ & $1/\tau e^{-kT/\tau}$& $\frac{1}{\tau}\frac{z}{z-e^{-T/\tau}}$ \\ + $\frac{1}{s^3}$ & $1/2 \cdot t^2$ & $1/2\cdot(kT)^2$& $\frac{T^2}{2}\frac{z(z+1)}{(z-1)^3}$ \\ + $\frac{1}{1+s \tau }$ & $1/\tau \cdot e^{-t/\tau}$ & $1/\tau \cdot e^{-kT/\tau}$& $\frac{1}{\tau}\frac{z}{z-e^{-T/\tau}}$ \\ \hline % @@@ PG: Stimmt nicht: Die Summe der Zahlen ist 194! @@ -37,9 +37,9 @@ Die theoretische Ermittlung korrespondierender diskreter Systeme aus der kontinu \end{center} \end{table} -Die erste Zeile von Tabelle \ref{table:impuls} zeigt, wie der diskrete Integrator aus dem kontinuierlichen hervorgeht. Auf den Impuls antwortet der Integrator mit der Sprungfunktion (ohen Gewichtung durch die Zeitkonstante). Die dritte Spalte verzeichnet die Sprungfolge als deren Abtastung, also die diskretisierte Impulsantwort, welche in den Tabellen oft nicht verzeichnet ist. Z-transformiert ergibt sich $G(z)$, in Zeile eins für den Integrator. Allerdings hat dieser diskrete Integrator nicht die Bedeutung des Akkumulators bei den Verfahren nach Euler und Tustin. So gilt für Impulse-Diskretisierung nicht die allgemeine Korrespondenz aus Spalte eins und vier, auch kann nicht einfach im Blockschaltbild der Differenzialgleichung jeder Integrator durch den Akkumulator ersetzt werden. +Die erste Zeile von Tabelle \ref{table:impuls} zeigt, wie der diskrete Integrator aus dem kontinuierlichen hervorgeht. Auf den Impuls antwortet der Integrator mit der Sprungfunktion (ohne Gewichtung durch die Zeitkonstante). Die dritte Spalte verzeichnet die Sprungfolge als deren Abtastung, also die diskretisierte Impulsantwort, welche in den Tabellen der Literatur oft nicht verzeichnet ist. Z-transformiert ergibt sich $G(z)$, in Zeile eins beispielsweise für den Integrator, auch wenn dieser gar nicht als numerischer Integrator verstanden werden kann (siehe fehlende Zeitkonstante). Außerdem hat dieser diskrete Integrator nicht die Bedeutung des Akkumulators bei den Verfahren nach Euler und Tustin. So gilt für Impulse-Diskretisierung nicht die Korrespondenz aus Spalte eins und vier als allgemeingültiges $s\leftrightarrow z$ Mapping, auch kann nicht einfach im Blockschaltbild der Differenzialgleichung jeder Integrator durch den Akkumulator ersetzt werden. -Die dritte Zeile von \ref{table:impuls} entspricht dem PT$_{1}$-Glied, womit die Einträge etwas abgewandelt sind im Vergleich zu typischen Korrespondenztabellen. $G(z)$ ist also das diskrete PT$_{1}$-Glied im Sinne einer Impuls-Diskretisierung. +Die vierte Zeile von Tabelle \ref{table:impuls} entspricht dem PT$_{1}$-Glied, womit die Einträge etwas abgewandelt sind im Vergleich zu typischen Korrespondenztabellen. $G(z)$ ist also das diskrete PT$_{1}$-Glied im Sinne einer Impuls-Diskretisierung. %\glqq{}{Boris ermöglicht die blockorientierte Simulation % dynamischer Systeme nahezu beliebiger Art}\grqq{} % \citep[S. 25]{boris2009}. diff --git a/7_Tustin-Diskretisierung.tex b/7_Tustin-Diskretisierung.tex index c1d7c67..d664a06 100644 --- a/7_Tustin-Diskretisierung.tex +++ b/7_Tustin-Diskretisierung.tex @@ -1,7 +1,7 @@ \subsection{Tustin-Approximation / Trapez-Regel \label{sec:Tustin-Approximation}} -\textbf{Integrationsmethode.} Die Tustin-Approximation kann mit der Integration nach der Trapez-Regel identifiziert werden. Betrachtet man die bisherigen Integrationsansätze, drängt sich ein verbesserter Ansatz für die Flächenberechnung zwischen zwei Zeitpunkten mit Hilfe der Trapez-Regel auf. Dazu wird aus dem Wert $I(kT)$ rekursiv der nächste Wert wie folgt berechnet: +\textbf{Integrationsmethode.} Die Tustin-Approximation kann mit der Integration nach der Trapez-Regel identifiziert werden, was auf eine bilineare Transformation zwischen den kontinuierlichen und diskreten Frequenzen ($s \leftrightarrow z$) führt. Betrachtet man die bisherigen Integrationsansätze, drängt sich ein verbesserter Ansatz für die Flächenberechnung zwischen zwei Zeitpunkten mit Hilfe der Trapez-Regel auf. Dazu wird aus dem Wert $I(kT)$ rekursiv der nächste Wert wie folgt berechnet: \begin{minipage}[c]{0.49\linewidth} \begin{align*} @@ -40,7 +40,7 @@ I((k+1)T)=T \frac{x((k+1)T)+x(kT)}{2} + I(kT) Gehen wir auf die E/A-Namensgebung zurück und verwenden diskrete Indizes, also für den Integrator \begin{align*} y(k+1)&=T \frac{u(k+1)+u(k)}{2} + y(k)\\ -&\laplace\\ +&~~\vLaplace\\ zY(z)&=Y(z)+ \frac{T}{2} (zU(z)+U(z))\\ \end{align*} dann erhalten wir aus der Differenzengleichung auch die Übertragungsfunktion für den Akkumulator. @@ -64,11 +64,11 @@ Es gilt die Entsprechung s\equiv \frac{2}{T} \frac{z-1}{z+1}~~~\text{bzw.}~~~z\equiv \frac{2/T +s}{2/T-s} = \frac{1+s\cdot T/2}{1-s\cdot T/2} ~~. \end{align} -\textbf{Reihenentwicklung}. Aus einer anderen Perspektive hängen s-Ebene und z-Ebene wie folgt zusammen +\textbf{Reihenentwicklung}. Aus einer anderen Perspektive hängen s-Ebene und z-Ebene idealerweise wie folgt zusammen \begin{align*} z = e^{sT} \Leftrightarrow s=\frac{1}{T} \ln(z)~~, \end{align*} -wie bei der Einführung der z-Transformation erfolgt. +wie bei der Einführung der z-Transformation festgelegt. Setzt man jedoch den Ausdruck für $s$ so in eine Übertragungsfunktion ein, erhält man keinen Term, der eine lineare z-Übertragungsfunktion darstellt. Laut \cite{unbehauen2000RT2} kann der natürliche Logarithmus in eine Reihe entwickelt werden. Die spezielle Darstellung lässt sich aus der bekannten Taylor-Reihe des natürlichen Logarithmus herleiten, was in Anhang \ref{anh:Logarithmus} verschoben wurde. \begin{align*} s &= \frac{2}{T}\left(\frac{z-1}{z+1} + \frac{1}{3} (\frac{z-1}{z+1})^3 + \frac{1}{5}(\frac{z-1}{z+1})^5\hdots \right) \\ @@ -100,40 +100,51 @@ gegeben. \textbf{Pol-/Nullstellenverschiebung} Anhand der Pol-/Nullstellenform betrachtet, wird deutlich, dass die Nullstellen genauso abgebildet werden, wie die Pole. Zusätzlich erhält man $n-q>0$ Nullstellen bei $z_{i0} = -1$ -\[ -G(s) =\frac{\Pi_{i=1}^q (s-s_{0i})}{\Pi_{i=1}^n (s-s_i)}\leftrightarrow -\frac{\Pi_{i=1}^q (\frac{2}{T}\frac{z-1}{z+1}-s_{0i})}{\Pi_{i=1}^n (\frac{2}{T}\frac{z-1}{z+1}-s_i)} -=\frac{\Pi_{i=1}^q (z- \frac{2/T+S_{i0}}{2/T-s_{i0}})\cdot (1-\frac{T}{2}s_{i0})}{\Pi_{i=1}^n (z - \frac{2/T+S_{i}}{2/T-s_{i}})\cdot (1-\frac{T}{2}s_{i})}\cdot (\frac{T}{2} (z+1))^{n-q}~~. +\begin{align*} +G(s) =K\frac{\Pi_{i=1}^q (s-s_{i0})}{\Pi_{i=1}^n (s-s_i)}\leftrightarrow +G(z)&=K\frac{\Pi_{i=1}^q (\frac{2}{T}\frac{z-1}{z+1}-s_{i0})}{\Pi_{i=1}^n (\frac{2}{T}\frac{z-1}{z+1}-s_i)}\\ +&=K\frac{\Pi_{i=1}^q (z- \frac{2/T+s_{i0}}{2/T-s_{i0}})\cdot (\frac{2}{T}-s_{i0})}{\Pi_{i=1}^n (z - \frac{2/T+s_{i}}{2/T-s_{i}})\cdot (\frac{2}{T}-s_{i})}\cdot (z+1)^{n-q}~~. +\end{align*} +Auch hier rechnet man nach, dass +\[G_k(0) K\frac{\Pi_{i=1}^q (-s_{i0})}{\Pi_{i=1}^n (-s_i)} =G_d(1) =K_s \] - \textbf{Zustandsraummodell.} In \cite{WolframVogt} wird das ZRM im z-Bereich aus der kontinuierlichen Zustandsgleichung im Frequenzbereich \begin{align*} - s{\jv X}(s) &= \jv A_k \jv X(s) + \jv B_k \jv U(s) ~~\overbrace{\rightarrow}^{\text{Tustin}}~~ \frac{2}{T} \frac{z-1}{z+1}{\jv X}(z) = \jv A_k \jv X(z) + \jv B_k \jv U(z) + s{\jv X}(s) &= \jv A_k \jv X(s) + \jv B_k \jv U(s) ~~\overbrace{\leftrightarrow}^{\text{Tustin}}~~ \frac{2}{T} \frac{z-1}{z+1}{\jv X}(z) = \jv A_k \jv X(z) + \jv B_k \jv U(z) \end{align*} über den Ansatz \eqref{eq:sTustin} hergeleitet. Da ZRM-Darstellungen nicht eindeutig sind, werden dort mehrere Formen für den Spezialfall $\jv D= \jv 0, \jv C=\jv I$ berechnet. Im allgemeinen Fall gilt \begin{align*} \frac{z-1}{z+1}{\jv X}(z) &= \underbrace{\frac{T}{2}\jv A_k}_{\tilde{\jv A}} \jv X(z) + \underbrace{\frac{T}{2}\jv B_k}_{\tilde{\jv B}} \jv U(z)\\ (\jv I-\tilde{\jv A})z \jv X(z) &= (\jv I+\tilde{\jv A})\jv X(z) + \tilde{\jv B} (z+1) \jv U(z)\\ z \jv X(z) &= \underbrace{(\jv I-\tilde{\jv A})^{-1}(\jv I+\tilde{\jv A})}_{\jv A_d}\jv X(z) + (\jv I-\tilde{\jv A})^{-1}\tilde{\jv B} (z+1) \jv U(z)\\ -\Laplace\\ +\vLaplace\\ \jv x_{k+1} &= \jv A_d \jv x_k + (\jv I-\tilde{\jv A})^{-1}{\tilde{\jv B}} (\jv u_{k+1} + \jv u_k) \end{align*} -Um auf ZRM-Form zu kommen, folgen wir dem Ansatz x.y, welcher hier einer Zustandstransformation -y.z +Um auf ZRM-Form zu kommen, folgen wir dem Ansatz in Anhang A, welcher hier,etwas erweitert, einer Zustandstransformation +auf den neuen Zustand +\[ +\tilde{\jv x} = {\jv x} - (\jv I-\frac{T}{2}\jv A_k)^{-1} \frac{T}{2}\jv B_k \jv u +\] entspricht und erhalten + %\boxed{ +ZRM-Tustin: \begin{empheq}[box=\fbox]{align*} %\boxed{ - \jv A_d &=(\jv I-\tilde{\jv A})^{-1}(\jv I+\tilde{\jv A}) ~~&~~ \jv B_d &= ((\jv I-\tilde{\jv A})^{-1}(\jv I+\tilde{\jv A}) +\jv I)(\jv I-\tilde{\jv A})^{-1} \tilde{\jv B} \\ + \jv A_d &=(\jv I-\frac{T}{2}{\jv A_k})^{-1}(\jv I+\frac{T}{2}{\jv A_k}) ~~&~~ \jv B_d &= (\jv A_d +\jv I)(\jv I-\frac{T}{2}{\jv A_k})^{-1} \frac{T}{2}{\jv B_k} \\ %&&= (e{\jv A_k T}-\jv I){\jv A_k}^{-1}\jv B_k\\^ - \jv C_d &=\jv C_k ~~&~~ \jv D_d &= \jv C_k(I-A)^{-1} \jv B + \jv C_d &=\jv C_k ~~&~~ \jv D_d &= \jv C_k(\jv I-\frac{T}{2}\jv A_k)^{-1} \frac{T}{2}\jv B_k + \jv D_k %} \end{empheq} %} -Diese Darstellung wird scheinbar nicht im MATLAB\texttrademark-Algorithmus verwendet, da sich jenseits der Systemmatrix unterschiedliche Transformationsergebnisse ergeben. Im Skript Link x.y wird aber gezeigt, dass die Systeme identisch sind. +Diese Darstellung wird scheinbar nicht im MATLAB\texttrademark-Algorithmus verwendet, da sich jenseits der Systemmatrix unterschiedliche Transformationsergebnisse ergeben. Im Skript + +\href{https://gitlab.cvh-server.de/jfalkenhain/diskretisierung-linearer-systeme/-/blob/master/Matlab/Diskretisierung_Tustin.m}{File on Git: Diskretisierung\_Tustin.m} + +wird aber gezeigt, dass die Systeme identisch sind. diff --git a/Matlab/Diskretisierung_Euler.m b/Matlab/Diskretisierung_Euler.m index 19661b6..b385f2e 100644 --- a/Matlab/Diskretisierung_Euler.m +++ b/Matlab/Diskretisierung_Euler.m @@ -2,7 +2,7 @@ clear all; close all % System zweiter Ordnung ohne Durchgriff, stabil, komplexe Eigenwerte -> überschwingend -sys = tf([1,1],[1 1 1]); +sys = tf([1],[1 1 1]); figure(3);pzmap(sys) % Pole auslesen, statische Verstärkung auslesen [p_sys, z_sys]=pzmap(sys); gain_sys = dcgain(sys); @@ -26,36 +26,33 @@ for T = Tvec sym_syms = poly2sym(cell2mat(num),s) / poly2sym(cell2mat(den),s) sym_symz = subs(sym_syms, (z-1)/T) [num_d, den_d]=numden(sym_symz) - sys_EF2 = tf(flip(double(coeffs(num_d))),double(flip(coeffs(den_d))),T) + sys_EF2 = tf(sym2poly(num_d),sym2poly(den_d),T) % sys_EF2 identisch zu sys_EF, %% Euler Backward aus ZRM bilden -% % A_d = inv(eye(size(stsp_sys.A,1)) - T * stsp_sys.A) -% % B_d = A_d^2 * T * stsp_sys.B -% % C_d = stsp_sys.C -% % D_d = T * stsp_sys.C * stsp_sys.A * stsp_sys.B + stsp_sys.D -% % -% % sys_EB = ss(A_d, B_d, C_d, D_d, T); + A_d = inv(eye(size(stsp_sys.A,1)) - T * stsp_sys.A) + B_d = A_d^2 * T * stsp_sys.B + C_d = stsp_sys.C + D_d = T * stsp_sys.C * A_d * stsp_sys.B + stsp_sys.D + + sys_EB = ss(A_d, B_d, C_d, D_d, T); -% % Im Beispiel tritt eine zweite Nullstelle bei z=0 auf, obwohl die -% anderen Pole und Nullstellen dem der symbolischen Methode entsprechen. - %% Euler Backward aus Übertragungsfunktion symbolich bilden syms s z; sym_syms = poly2sym(cell2mat(num),s) / poly2sym(cell2mat(den),s) sym_symz = subs(sym_syms, (z-1)/(T*z)) [num_d, den_d]=numden(sym_symz) - sys_EB2 = tf(flip(double(coeffs(num_d))),double(flip(coeffs(den_d))),T) + sys_EB2 = tf(sym2poly(num_d),sym2poly(den_d),T) - [y,t]=step(sys_EF); plot(t, y ,'*','color', 'magenta') + [y,t]=step(sys_EF2); plot(t, y ,'*','color', 'red') [y,t]=step(sys_EF); plot(t, y ,'--','color', 'magenta') %pause %[y,t]=step(sys_EF2); plot(t, y ,'*','color', 'red') - [y,t]=step(sys_EB2); plot(t, y ,'*','color', 'cyan') - [y,t]=step(sys_EB2); plot(t, y ,'--','color', 'cyan') + [y,t]=step(sys_EB); plot(t, y ,'*','color', 'cyan') + [y,t]=step(sys_EB2); plot(t, y ,'--','color', 'blue') % % [y,t]=step(sys_EB2); plot(t, y ,'*','color', 'magenta') -% % pause + pause end % Bild speichern diff --git a/Matlab/Diskretisierung_Impulse.m b/Matlab/Diskretisierung_Impulse.m new file mode 100644 index 0000000..591b611 --- /dev/null +++ b/Matlab/Diskretisierung_Impulse.m @@ -0,0 +1,42 @@ +% Diskretisierung linearer Systeme nach Impulse +clear all; close all + +% Integrator +sys_I = tf([1],[1,1]) + +% aus System eine Funktion mit Variable s +syms s z t +[num, den]=tfdata(sys_I); +fun_I = poly2sym(cell2mat(num),s) / poly2sym(cell2mat(den),s) + +% inverse Laplace-Transformation +Tfun_I = ilaplace(fun_I) +%Abtastzeit +T=0.1 +Tfun_I = subs(Tfun_I, t*T) + +%z_transformation +Zfun_I = ztrans(Tfun_I) + +[num, den] = numden(Zfun_I) +sys_d = T*tf(sym2poly(num),sym2poly(den),T) +sys_d2 = c2d(sys_I, T, 'impulse') + +%Impulsantwort +figure(1), impulse(sys_I), hold on +[y,tt]=impulse(sys_d); plot(tt, y ,'*','color', 'magenta') +[y,tt]=impulse(sys_d2); plot(tt, y ,'*','color', 'green') + +% Verstärkung +dcgain(sys_d) +dcgain(sys_d2) +[num,den]=tfdata(sys_d2) +zfun = poly2sym(cell2mat(num),z) / poly2sym(cell2mat(den),z) +double(subs(zfun,1)) + + +% Sprungantwort +figure(2), step(sys_I), hold on +[y,tt]=step(sys_d); plot(tt, y ,'*','color', 'magenta') +[y,tt]=step(sys_d); plot(tt, y ,'*','color', 'green') + diff --git a/Matlab/Diskretisierung_Tustin.m b/Matlab/Diskretisierung_Tustin.m index 52e48b4..9f2959b 100644 --- a/Matlab/Diskretisierung_Tustin.m +++ b/Matlab/Diskretisierung_Tustin.m @@ -6,7 +6,7 @@ sys = tf([1],[1 1 1]); figure(3);pzmap(sys) [p_sys, z_sys]=pzmap(sys); -% State space Modell, State Space ohne Durhcgriff +% State space Modell stsp_sys = ss(sys) %stsp_sys2 = ss(stsp_sys.A,stsp_sys.B,stsp_sys.C,0) @@ -16,10 +16,10 @@ sys_TTmatlab = c2d(stsp_sys,T,'Tustin') % eigene Berechnung via Matrizen A_c =stsp_sys.A; B_c =stsp_sys.B; C_d =stsp_sys.C; D_c =stsp_sys.D; % aus Modell -I=eye(size(A_c,1)) % Einheitsmatrix in reichtiger Dimension +I=eye(size(A_c,1)) % Einheitsmatrix in richtiger Dimension A_cT=T/2 *A_c; B_cT=T/2 *B_c; -% Systemmatrix (exakt wie bei ZOH) +% Systemmatrix A_d = inv(I-A_cT) * (I+A_cT) ; B_d = (A_d + I) * inv(I-A_cT) * B_cT D_d = C_d *inv(I-A_cT) * B_cT +D_c @@ -35,10 +35,10 @@ sys_TTmatrix = ss(A_d, B_d, C_d, D_d, T) %% Pol/Nullstellenvergleich, Systemantwort figure(4);pzmap(sys_TTmatlab);hold on; pzmap(sys_TTmatrix); % -figure(1) +figure(1); title('Impulsantwort') [y,t]=impulse(sys_TTmatlab); plot(t, y ,'*','color', 'magenta') hold on [y,t]=impulse(sys_TTmatrix); plot(t, y ,'*','color', 'blue') % Bild speichern -%saveas(gcf,'../bilder/?.png') +% saveas(gcf,'../bilder/?.png') diff --git a/anhang.tex b/anhang.tex index 9c2e22d..065de6a 100644 --- a/anhang.tex +++ b/anhang.tex @@ -1,44 +1,47 @@ % Anhang A -\section{Euler-Backward in ZRM-Darstellung} +\section{Umforung in Standard ZRM-Darstellung} \label{anh:ZRM_Euler-Backward} -\textit{Die folgenden Schritte sollen zeigen, wie man ein diskretes Zustandsraummodell direkt numerisch aus dem kontiuierlichen System ableitet. Im Beispiel liefert die Implementierung auch die korrekten Polstellen, allerdings eine weitere Nullstelle, was die Dynamik verändert. Fehler in der Darstellugn oder Implementierung?} +%\textit{Die folgenden Schritte sollen zeigen, wie man ein diskretes Zustandsraummodell direkt numerisch aus dem kontiuierlichen System ableitet. Im Beispiel liefert die Implementierung auch die korrekten Polstellen, allerdings eine weitere Nullstelle, was die Dynamik verändert. Fehler in der Darstellugn oder Implementierung?} -Der Ansatz des Euler-Backward besteht in der Beschreibung der Signale an den Abtastzeitpunkten, z. B. $x(k)$, und Approximation des Differenzenquotienten wie folgt: -\begin{align*}%\label{Forward_diffq} -\dot{x}\approx \frac{x(k)-x(k-1)}{T}~~. -\end{align*} -Die Zustandsgleichung des des kontinuierlichen Modells \eqref{ZRM_kont} wird dann ersetzt durch -\begin{align*} -\jv x(k)-\jv x(k-1)&=T \jv A_k \jv x(k) + T \jv B_k \jv u(k)\\ -\Leftrightarrow (\jv I-T\jv A_k)\jv x(k)&= \jv x(k-1) + T\jv B_k \jv u(k)\\ -\Leftrightarrow \jv x(k+1)&= \underbrace{(\jv I-T\jv A_k)^{-1}}_{\jv A_d} \jv x(k) + (\jv I-T\jv A_k)^{-1} T\jv B_k \jv u(k+1) -\end{align*} -wobei eine Indexverschiebung dazu führt, dass der Eingang zum Zeitpunkt $k+1$ in der Zustandsgleichung auftritt. Es gilt also -\begin{align*}\label{ZRM_diskEB} -\jv x(k+1)&=\jv A_d \jv x(k)+\jv A_d T \jv B_k\jv u(k+1),~~\jv x(0)=\jv x_0\\ -\jv y(k) &= \jv C_k \jv x(k) + \jv D_k \jv u(k)\nonumber -\end{align*} -in die Form \eqref{ZRM_disk} zu überführen. Dazu teilen wir den Zustandsvektor +%Der Ansatz des Euler-Backward besteht in der Beschreibung der Signale an den Abtastzeitpunkten, z. B. $x(k)$, und Approximation des Differenzenquotienten wie folgt: +%\begin{align*}%\label{Forward_diffq} +%\dot{x}\approx \frac{x(k)-x(k-1)}{T}~~. +%\end{align*} + +%Die Zustandsgleichung des des kontinuierlichen Modells \eqref{ZRM_kont} wird dann ersetzt durch +%\begin{align*} +%\jv x(k)-\jv x(k-1)&=T \jv A_k \jv x(k) + T \jv B_k \jv u(k)\\ +%\Leftrightarrow (\jv I-T\jv A_k)\jv x(k)&= \jv x(k-1) + T\jv B_k \jv u(k)\\ +%\Leftrightarrow \jv x(k+1)&= \underbrace{(\jv I-T\jv A_k)^{-1}}_{\jv A_d} \jv x(k) + (\jv I-T\jv A_k)^{-1} T\jv B_k \jv u(k+1) +%\end{align*} +%wobei eine Indexverschiebung dazu führt, dass der Eingang zum Zeitpunkt $k+1$ in der Zustandsgleichung auftritt. Es gilt also +Ausgangspunkt ist das System +\begin{align}\label{ZRM_diskEB} +\jv x(k+1)&=\overline{\jv A} \jv x(k)+\overline{\jv B} u(k+1),~~\jv x(0)=\jv x_0\\ +\jv y(k) &= \overline{\jv C} \jv x(k) + \overline{\jv D} \jv u(k)\nonumber +\end{align} +in der der Eingang zum Zeitpunkt $k+1$ in der Zustandsgleichung auftritt. Ziel ist die Überführung +in die Form \eqref{ZRM_disk}. Dazu teilen wir den Zustandsvektor \begin{align*} \jv x(k)=\jv x_1(k) + \jv x_2(k) \end{align*} so auf, dass $\jv x_1$ nicht direkt vom Eingang abhängt und $\jv x_2$ nicht aus dem Zustand ermittelt wird: \begin{align*}%\label{ZRM_disk} -\jv x_1(k+1) &=\jv A_d \jv x(k)\\ -\jv x_2(k+1) &= \jv A_d T \jv B_k\jv u(k+1) \Leftrightarrow \jv x_2(k) = \jv A_d T \jv B_k\jv u(k) +\jv x_1(k+1) &=\overline{\jv A} \jv x(k)\\ +\jv x_2(k+1) &= \overline{\jv B}\jv u(k+1) \Leftrightarrow \jv x_2(k) = \overline{ \jv B}\jv u(k)~~, \end{align*} -und Gl. \eqref{ZRM_diskEB} erfüllt ist. Für $\jv x_2$ liegt eine Indexverschiebung nahe. Das Ergebnis kann in die Zustandsgleichung für den neuen Zustand $\jv x_1$ und in die Ausgabegleichung eingesetzt werden: +womit Gl. \eqref{ZRM_diskEB} erfüllt ist. Für $\jv x_2$ liegt die gemachte Indexverschiebung nahe. Das Ergebnis kann in die Zustandsgleichung für den neuen Zustand $\jv x_1$ und in die Ausgabegleichung eingesetzt werden: \begin{align*}%\label{ZRM_disk} -\jv x_1(k+1) &=\jv A_d \jv (x_1(k) + \jv A_d T \jv B_k\jv u(k))\\ -\jv y(k) &= \jv C_d (\jv x_1(k) + \jv A_d T \jv B_k\jv u(k)) + \jv D_k \jv u(k)\\ +\jv x_1(k+1) &=\overline{\jv A} \jv (\jv x_1(k) + \overline{\jv B}\jv u(k))\\ +\jv y(k) &= \overline{\jv C} (\jv x_1(k) + \overline{\jv B}\jv u(k)) + \overline{\jv D} \jv u(k)\\ &\Leftrightarrow\\ -\jv x_1(k+1) &=\jv A_d \jv x_1(k) + \jv A_d^2 T \jv B_k\jv u(k))\\ -\jv y(k) &= \jv C_k \jv x_1(k) + \jv C_k\jv A_d T \jv B_k\jv u(k)) + \jv D_k \jv u(k)\\ +\jv x_1(k+1) &=\overline{\jv A} \jv x_1(k) + \overline{\jv A}\overline{\jv B}\jv u(k)\\ +\jv y(k) &= \overline{\jv C} \jv x_1(k) + \overline{\jv C}\overline{\jv B}\jv u(k) + \overline{\jv D} \jv u(k)\\ \end{align*} Benennt man jetzt den Zustand $\jv x_1 = \tilde{\jv x}$ um, kann man die Matrizen des diskreten ZRM identifizieren: \begin{align*}%\label{ZRM_disk} -\tilde{\jv x}(k+1) &=\jv A_d \tilde{\jv x}(k) + \underbrace{\jv A_d^2 T \jv B_k}_{=\jv B_d}\jv u(k))\\ -\jv y(k) &= \underbrace{\jv C_k}_{=\jv C_d} \jv x_1(k) + \underbrace{\jv C_k\jv A_d T \jv B_k + \jv D_k}_{=\jv D_d} \jv u(k) +\tilde{\jv x}(k+1) &=\overline{\jv A} \tilde{\jv x}(k) + \underbrace{\overline{\jv A} \overline{\jv B}}_{=\jv B_d}\jv u(k)\\ +\jv y(k) &= \overline{\jv C} \tilde{\jv x}(k) + \underbrace{(\overline{\jv C}\overline{\jv B} + \overline{\jv D})}_{=\jv D_d} \jv u(k) \end{align*} diff --git a/hauptdatei.tex b/hauptdatei.tex index 49bb527..27da1c6 100644 --- a/hauptdatei.tex +++ b/hauptdatei.tex @@ -33,8 +33,30 @@ % \usepackage{float} \usepackage{pdflscape} -%\usepackage{dspTricks, dspFunctions, dspBlocks} + +% Laplace-Transformationssymbol \usepackage{trfsigns} +% vertikale Varianten +\newcommand{\vlaplace}[1][]{\mbox{\setlength{\unitlength}{0.1em}% + \begin{picture}(10,20)% + \put(3,2){\circle{4}}% + \put(3,4){\line(0,1){12}}% + \put(3,18){\circle*{4}}% + \put(10,7){#1} + \end{picture}% + }% + }% + +\newcommand{\vLaplace}[1][]{\mbox{\setlength{\unitlength}{0.1em}% + \begin{picture}(10,20)% + \put(3,2){\circle*{4}}% + \put(3,4){\line(0,1){12}}% + \put(3,18){\circle{4}}% + \put(10,7){#1} + \end{picture}% + }% + }% + \usepackage{pdfpages} % Bilder mit „Bild“ anstatt mit „Abbildung“ bezeichnen -- GitLab