diff --git a/2_Grundlagen.tex b/2_Grundlagen.tex index 415d692b4af5e7e75f66ce5b63ee4f0fd425a55c..36c807442c1ca5eeba268ac210cb0541f74c2e68 100644 --- a/2_Grundlagen.tex +++ b/2_Grundlagen.tex @@ -10,7 +10,7 @@ \[g(t)~~\laplace~~ %G(s) %=\frac{Y(s)}{U(s)} = \frac{\Pi_{i=1}^q (s-s_{0i})}{\Pi_{i=1}^n (s-s_i)} -G(s) = \int_0^\infty g(t)e^{-st} dt =L\{g(t)\} +G(s) = \int_0^\infty g(t)e^{-st} dt =\mathscr{L}\{g(t)\} \] Mit der Impulsantwort reagiert das System auf Anregung mit dem Dirac-Impulse \begin{align} @@ -63,7 +63,7 @@ Abtastung wird mathematisch zunächst im Rahmen kontinuierlicher Signale als Gew \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] {$y^*(t)=u(t) \cdot \sum_{-\infty}^\infty \rho(t-kT)$}; + \node (e) [right of=d] {$y^*(t)=u(t) \cdot \sum_{k=-\infty}^\infty \rho(t-kT)$}; \node [coordinate] (end) [right of=c, node distance=2cm]{}; \path[->] (b) edge node {$u(t)$} (a); \path[->] (a) edge node {$y^*(t)$} (c); @@ -81,14 +81,14 @@ Beispielsweise resultiert die diskrete Sprungfolge $\sigma(k)$ für $k\in \mathd wobei die Indizes $d, k$ für diskretes und kontinuierliches System nur bei Verwechselungsgefahr gesetzt werden. Die Laplace-Transformation des abgetasteten pseudo-kontinuierlichen Signals \begin{align} -L\{y^*(t)\}&= +\mathscr{L}\{y^*(t)\}&= \int_0^\infty \sum_{-\infty}^\infty \rho(t-kT) u(kT)e^{-st} dt\\ =&\sum_{k=0}^\infty u(kT) \int_0^\infty \rho(t-kT) e^{-st} dt\\ =&\sum_{k=0}^\infty u(kT) e^{-skT} \end{align} -motiviert den Übergang zur z-Transformation durch Ersetzen von $z=e^{sT}$ für diskrete Folgen $u_d(k)$ +motiviert den Übergang zur $\mathscr{Z}$-Transformation durch Ersetzen von $z=e^{sT}$ für diskrete Folgen $u_d(k)$ \begin{align} -Z\{u(k)\}=\sum_{k=0}^\infty u(k) z^{-k} = U(z) +\mathscr{Z}\{u(k)\}=\sum_{k=0}^\infty u(k) z^{-k} = U(z) \end{align} Zu beachten ist, dass der Einheitsimpuls @@ -104,11 +104,11 @@ Zu beachten ist, dass der Einheitsimpuls nicht aus der Abtastung des Dirac-Impulses hervorgeht, da dieser bei null nicht beschränkt ist. Die Bedeutung des diskreten Impulses ist also eine etwas andere, nämlich dass alle diskreten Folgen eine Summe von gewichteten Impulsen darstellen, verschoben um den Zeitindex $k$. %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 +Die diskrete Impulsantwort als Reaktion auf den diskreten Impuls $\rho(k)$ und die diskrete Übertragungsfunktion bilden ein $\mathscr{Z}$-Transformationspaar \begin{align}\label{eq:diskPN} 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)}~~, \end{align} -womit sich ähnliche Darstellungen und Zusammenhänge wie im Kontinuierlichen ergeben (siehe auch Seite 8). +womit sich ähnliche Darstellungen und Zusammenhänge wie im Kontinuierlichen ergeben (siehe auch Seite 9). %\pageref{ref:pdfuebersicht} funktionieren nicht %\ref{ref:pdfuebersicht} Über die diskrete Faltung @@ -309,17 +309,19 @@ g_{FOH}(t) = \frac{t}{T}\sigma(t) - 2 \frac{t-T}{T}\sigma(t-T) +\frac{t-2T}{T}\s \textbf{FOH (First-Order-Hold).} Dieses Halteglied entspringt der Idee, zwischen zwei Impulsen rampenförmig zu interpolieren. Das kausale Haltglied erster Ordnung kann die Rampe allerdings erst ermitteln, wenn deren Endwert ebenso bekannt ist wie ihr Startwert. Also ergibt sich das dargestellte Dreieck mit der Spitze bei $t=T$ \begin{align*} g_{FOH}(t) &= \frac{1}{T}(t\sigma(t) - 2(t-T)\sigma(t-T) +(t-2T)\sigma(t-2T))\\ - &\laplace\\ + &\vLaplace\\ G_{FOH}(s) &= \frac{1}{Ts^2} (1-2e^{-sT}+e^{-2sT} ) \end{align*} Wer Übung im Auswerten von Faltungsintegralen hat erkennt, dass die Impulsantwort $g_{FOH}(t)$ aus der Faltung des Impulses $g_{ZOH}(t)$ entsteht. \begin{align*} -g_{FOH}(t) =\frac{1}{T} g_{ZOH}(t) * g_{ZOH}(t)~~ \laplace~~ G_{ZOH}^2(s) =\frac{1}{T}\cdot G_{FOH}(s) +g_{FOH}(t) =\frac{1}{T} g_{ZOH}(t) * g_{ZOH}(t)~~ \laplace~~ \frac{1}{T} \cdot G_{ZOH}^2(s) = G_{FOH}(s) \end{align*} Mögliche Realisierungen in MATLAB/Simulink\texttrademark~zeigt die folgende Datei: \href{https://gitlab.cvh-server.de/jfalkenhain/diskretisierung-linearer-systeme/-/blob/master/Matlab/ZOHundFOHblocks.slx}{File on Git: ZOHundFOHblocks.slx} +Simulink\texttrademark~ kann mit dem Dirac-Impulse nicht arbeiten. Stattdessen wird ZOH numerisch ausgewertet, indem das Gewicht des Impulses die Zeit $T$ konstant gehalten wird. FOH benötigt ebenfalls einen diskreten Eingang und interpoliert linear zwischen den letzten zwei Impulsen. + \textbf{Nicht-kausale Halteglieder.} In theoretischen Überlegungen spielen nicht-kausale, und damit ja nicht realisierbare, Systeme manchmal eine Rolle. Für das symmetrische Halteglied erster Ordnung \begin{align*} diff --git a/3_Euler-Diskretisierung.tex b/3_Euler-Diskretisierung.tex index 08799223e275563b9717451b43a5c3f1b9eec9a9..3630871b320c598c89b99b597379774b392fb791 100644 --- a/3_Euler-Diskretisierung.tex +++ b/3_Euler-Diskretisierung.tex @@ -17,7 +17,7 @@ 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 Differenziator als nicht-kausal. Die Übertragungsfunktion 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 Übertragungsfunktion ergibt sich durch $\mathscr{Z}$-Transformation zu \begin{align*} Y(z) = \frac{zU(z)- U(z)}{T} ~~\Leftrightarrow~~ \frac{Y(z)}{U(z)}=\frac{z-1}{T}~\leftrightarrow G(s)=s \end{align*} @@ -50,7 +50,7 @@ eignet sich aber wenig zur Implementierung und entspricht nur für den Anfangswe \end{tikzpicture} -Unter Anwendung der z-Transformation erhält man +Unter Anwendung der $\mathscr{Z}$-Transformation erhält man \begin{align*} Y(z) (1- z^{-1}) &= T z^{-1} U(z)\\ \Leftrightarrow G(z)=\frac{Y(z)}{U(z)}&=T\frac{1}{z-1} diff --git a/4_ZOH-Diskretisierung.tex b/4_ZOH-Diskretisierung.tex index a252506db2af975b1a2ff0c4f272af7022ece699..1476c6b9a052f792a9d8695ae97c6341a2eb01f9 100644 --- a/4_ZOH-Diskretisierung.tex +++ b/4_ZOH-Diskretisierung.tex @@ -72,13 +72,13 @@ Dort wurde jede Integration, z. B. in einer Blockschaltbild-Darstellung der Diff \end{figure} Die Integration wird in Bild \ref{fig:IntZOH} veranschaulicht. Die Verzögerung legt nahe, dass es bessere Ansätze gibt, ein kontinuierliches dynamische System zu approximieren, konkret eine Integration mit Trapez-Regel (siehe Abschn. \ref{sec:Tustin-Approximation}). -\textbf{Diskretisierung der Übertragungsfunktion.} Erinnern wir uns an Korrespondenztabellen mit Laplace- und Z-Transformation, so konnten wir die Übertragungsfunktion $G(s)$ als Transformierte der Impulsantwort $g(t)$ dort finden. Die abgetastete Folge $g(k)=g(kT)$ war dort meist nicht zu finden, dafür direkt deren Z-Transformierte $G(z)$. So konnte die entsprechende Korrespondenz der Impuls-Diskretisierung aus der betreffenden Zeile abgelesen werden.\\ +\textbf{Diskretisierung der Übertragungsfunktion.} Erinnern wir uns an Korrespondenztabellen mit Laplace- und $\mathscr{Z}$-Transformation, so konnten wir die Übertragungsfunktion $G(s)$ als Transformierte der Impulsantwort $g(t)$ dort finden. Die abgetastete Folge $g(k)=g(kT)$ war dort meist nicht zu finden, dafür direkt deren $\mathscr{Z}$-Transformierte $G(z)$. So konnte die entsprechende Korrespondenz der Impuls-Diskretisierung aus der betreffenden Zeile abgelesen werden.\\ Für ein System $G(s)$ lautet die Laplace-Transformierte der Sprungantwort \begin{align}\label{eq:Hvons} H(s) = \frac{1}{s} G(s) ~\Laplace~ h(t) \end{align} -Die Abtastfolge $h(k)$ findet man zumeist nicht, wenn man in der Korrespondenztabelle nach den Termen entsprechend Gl. \eqref{eq:Hvons} sucht, aber die Z-Transformierte $H(z)$. Über den Zusammenhang zwischen $G(z)$ und $H(z)$ erhalten wir +Die Abtastfolge $h(k)$ findet man zumeist nicht, wenn man in der Korrespondenztabelle nach den Termen entsprechend Gl. \eqref{eq:Hvons} sucht, aber die $\mathscr{Z}$-Transformierte $H(z)$. Über den Zusammenhang zwischen $G(z)$ und $H(z)$ erhalten wir \[ H(z) = \frac{z}{z-1}G(z) \] @@ -88,10 +88,10 @@ G_{d,ZOH}(z) = H(z) \frac{z-1}{z}~~. \] Zusammenfassend kann die (implizite) Vorgehensweise kompakt ausgedrückt werden: \begin{align*} -G_{d,ZOH}(z)= \frac{z-1}{z}\cdot Z\{ L^{-1}\left\{ \frac{1}{s} \cdot G(s)\right\}|_{t=kT} \}~~. +G_{d,ZOH}(z)= \frac{z-1}{z}\cdot \mathscr{Z}\{\mathscr{L}^{-1}\left\{ \frac{1}{s} \cdot G(s)\right\}|_{t=kT} \}~~. \end{align*} -\textit{\textbf{Beispiel: Die Übertragungsfunktion des Integrators lautet $G(s)=1/s$. Wir suchen nach der Z-Transformierten der Abtastung von $H(s)=1/s^2$. +\textit{\textbf{Beispiel: Die Übertragungsfunktion des Integrators lautet $G(s)=1/s$. Wir suchen nach der $\mathscr{Z}$-Transformierten der Abtastung von $H(s)=1/s^2$. Tabelle \ref{table:impuls} liefert uns \[H(z)=\frac{Tz}{(z-1)^2} \] @@ -160,10 +160,10 @@ Eine aufwendigere Notation erklärt sich schrittweise von Innen nach Außen \item Multiplikation der Übertragungsfunktionen von System und ZOH-Glied \item Ermittlung der Zeitfunktion durch inverse Laplace-Transformation \item Erzeugung einer Folge durch Abtastung bei $t=kT$ -\item Z-Transformation der Folge ergibt die Übertragungsfunktion $G_{d,ZOH}(z)$ +\item $\mathscr{Z}$-Transformation der Folge ergibt die Übertragungsfunktion $G_{d,ZOH}(z)$ \end{enumerate} \begin{align*} -G_{d,ZOH}(z)= Z\{ L^{-1}\left\{ \frac{1-e^{-sT}}{s} \cdot G(s)\right\}|_{t=kT} \}~~. +G_{d,ZOH}(z)= \mathscr{Z}\{ \mathscr{L}^{-1}\left\{ \frac{1-e^{-sT}}{s} \cdot G(s)\right\}|_{t=kT} \}~~. \end{align*} \textit{\textbf{Beispiel: Für den Integrator erhalten wir @@ -188,7 +188,7 @@ bzw. abgetastet \[ h(t) = d \sigma(kT) + \sum_{i=0}^n -\frac{b_i}{s_i}(1- e^{s_i kT}) \sigma(kT)~~. \] -Z-Transformation liefert +$\mathscr{Z}$-Transformation liefert \[ H(z) = d\frac{z}{z-1} - \sum_{i=0}^n\frac{b_i}{s_i} \frac{ (1-e^{s_i T})z}{(z-1)(z-\underbrace{e^{s_i T}}_{z_i})} \] diff --git a/5_Impulse-Diskretisierung.tex b/5_Impulse-Diskretisierung.tex index fcf7973db28825efef3234465d20dca67d239a2f..afd58a22b8105ee296bd4446c9450abb19ce0960 100644 --- a/5_Impulse-Diskretisierung.tex +++ b/5_Impulse-Diskretisierung.tex @@ -7,7 +7,7 @@ g_k(kT) =g_d (k)~~\laplace ~~G_{Impuls}(z)~~. \end{align} Als Entwurfsmethode für digitale Filter resultiert die Bezeichnung \textit{Impuls-invariante Methode}. -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 aus der 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 aus der Anzahl der verwendeten Abtastzeitpunkte. Die Übertragungsfunktion entsteht aus der $\mathscr{Z}$-Transformation der abgetasteten Impulsfolge. In \cite{bild_quad} @@ -26,7 +26,7 @@ Die theoretische Ermittlung korrespondierender diskreter Systeme aus der kontinu \begin{table}[H] - \caption{Laplace- und Z-transformierte Signalpaare% + \caption{Laplace- und $\mathscr{Z}$-transformierte Signalpaare% \label{table:impuls}} \medskip \begin{center} @@ -44,7 +44,7 @@ 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 (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 Impuls-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 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. $\mathscr{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 Impuls-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 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. Einige Beispiele sind hier in MATLAB\texttrademark~ gezeigt: @@ -72,7 +72,7 @@ bzw. abgetastet, wenn man den Durchgriff übernimmt, um den diskreten Impuls zu \[ g(kT) = d \rho(k) + \sum_{i=0}^n b_i e^{s_i kT} \sigma(kT)~~. \] -Z-Transformation liefert +$\mathscr{Z}$-Transformation liefert \[ G(z) = d + \sum_{i=0}^n b_i \frac{z}{z-e^{s_i T}}~~, \] diff --git a/6_FOH-Diskretisierung.tex b/6_FOH-Diskretisierung.tex index 7e93329385733083989e2c5407fe541bed6ce425..335fc09e7c0e12667a1bf6b9cce6b0e535a4a989 100644 --- a/6_FOH-Diskretisierung.tex +++ b/6_FOH-Diskretisierung.tex @@ -32,7 +32,7 @@ so antwortet, dass die $y(k)=r_d(k)$ auf der kontinuierlichen Rampenantwort lieg r_k(kT) =r_d (k)~~\laplace ~~R(z)~~ \end{align} -\textbf{Ermittlung der Übertragungsfunktion.} Um aus der z-Transformierten der diskreten Rampenantwort $R(z)$ auf die Übertragungsfunktion zu schließen, erinnern wir uns zunächst an den folgenden Zusammenhang +\textbf{Ermittlung der Übertragungsfunktion.} Um aus der $\mathscr{Z}$-Transformierten der diskreten Rampenantwort $R(z)$ auf die Übertragungsfunktion zu schließen, erinnern wir uns zunächst an den folgenden Zusammenhang \begin{align*}%\label{Ramp:bed} h(k) = \sum_{k=0}^\infty g(k) \end{align*} @@ -92,7 +92,7 @@ r(k) = T\sum_{j=1}^\infty h(j) = T(- h(k) + \sum_{j=0}^\infty h(j) ) \end{minipage} - Dementsprechend gilt für die z-transformierte Antwort + Dementsprechend gilt für die $\mathscr{Z}$-transformierte Antwort \begin{align} R(z) &= T\sum_{k=1}^\infty H(z) z^{-k} = TH(z) z^{-1}\sum_{k=0}^\infty z^{-k}\\ &= Tz^{-1} \frac{z}{z-1} H(z)= \frac{T}{z-1} H(z) @@ -113,7 +113,7 @@ G_{FOH}(z) = \underbrace{\frac{z-1}{T}}_{\Laplace~ \gamma(k) \text{aus \eqref{eq \] -\textit{\textbf{Beispiel: Die Übertragungsfunktion des Integrators lautet $G(s)=1/s$. Wir suchen nach der Z-Transformierten der Abtastung von $R(s)=1/s^3$. +\textit{\textbf{Beispiel: Die Übertragungsfunktion des Integrators lautet $G(s)=1/s$. Wir suchen nach der $\mathscr{Z}$-Transformierten der Abtastung von $R(s)=1/s^3$. Tabelle \ref{table:impuls} liefert uns \[R(z)=\frac{T^2}{2}\frac{z(z+1)}{(z-1)^3} \] @@ -136,10 +136,10 @@ Eine andere Notation erklärt sich schrittweise von Innen nach Außen \item Multiplikation der Übertragungsfunktionen von System und nicht kausalem FOH-Glied \item Ermittlung der Zeitfunktion durch inverse Laplace-Transformation \item Erzeugung einer Folge durch Abtastung bei $t=kT$ -\item Z-Transformation der Folge ergibt die Übertragungsfunktion $G_{d,FOH}(z)$ +\item $\mathscr{Z}$-Transformation der Folge ergibt die Übertragungsfunktion $G_{d,FOH}(z)$ \end{enumerate} \begin{align*} -G_{d,ZOH}(z)= Z\{ L^{-1}\{ \frac{1}{Ts^2} (e^{sT} + 2 + e^{-sT})\cdot G(s)\}|_{t=kT} \}~~. +G_{d,ZOH}(z)= \mathscr{Z}\{ \mathscr{L}^{-1}\{ \frac{1}{Ts^2} (e^{sT} + 2 + e^{-sT})\cdot G(s)\}|_{t=kT} \}~~. \end{align*} diff --git a/7_Tustin-Diskretisierung.tex b/7_Tustin-Diskretisierung.tex index 2ce65fe054e154897df770465db09dfb5c298e2c..0952db5424a5fa9b2cf752910d84de5a10a34eec 100644 --- a/7_Tustin-Diskretisierung.tex +++ b/7_Tustin-Diskretisierung.tex @@ -68,7 +68,7 @@ s\equiv \frac{2}{T} \frac{z-1}{z+1}~~~\text{bzw.}~~~z\equiv \frac{2/T +s}{2/T- \begin{align*} z = e^{sT} \Leftrightarrow s=\frac{1}{T} \ln(z)~~, \end{align*} -wie bei der Einführung der z-Transformation festgelegt. +wie bei der Einführung der $\mathscr{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) \\ diff --git a/FB_Diskretisierung.pdf b/FB_Diskretisierung.pdf index 539a1443b21877f7def943d1b5cfb8cc3105eb63..8a723553a0b2527fb8db432561194b8c16ac6e78 100644 Binary files a/FB_Diskretisierung.pdf and b/FB_Diskretisierung.pdf differ diff --git a/Matlab/ZOHundFOHblocks.slx b/Matlab/ZOHundFOHblocks.slx index 5785a759eb8f00743910de78b4a2effdc85cf5a7..8f84119d6df423fcce372284ac2ba4764d9afaaf 100644 Binary files a/Matlab/ZOHundFOHblocks.slx and b/Matlab/ZOHundFOHblocks.slx differ diff --git a/Matlab/ZOHundFOHblocks2014a.mdl b/Matlab/ZOHundFOHblocks2014a.mdl new file mode 100644 index 0000000000000000000000000000000000000000..23a25fbc7c3b8da9ac38a00736cab2ea6ea3b530 --- /dev/null +++ b/Matlab/ZOHundFOHblocks2014a.mdl @@ -0,0 +1,1417 @@ +Model { + Name "ZOHundFOHblocks2014a" + Version 8.3 + SavedCharacterEncoding "windows-1252" + GraphicalInterface { + NumRootInports 0 + NumRootOutports 0 + ParameterArgumentNames "" + ComputedModelVersion "4.3" + NumModelReferences 0 + NumTestPointedSignals 0 + } + slprops.hdlmdlprops { + $PropName "HDLParams" + $ObjectID 1 + Array { + Type "Cell" + Dimension 2 + Cell "HDLSubsystem" + Cell "ZOHundFOHblocks2014a" + PropName "mdlProps" + } + } + ScopeRefreshTime 0.035000 + OverrideScopeRefreshTime on + DisableAllScopes off + DataTypeOverride "UseLocalSettings" + DataTypeOverrideAppliesTo "AllNumericTypes" + MinMaxOverflowLogging "UseLocalSettings" + MinMaxOverflowArchiveMode "Overwrite" + FPTRunName "Run 1" + MaxMDLFileLineLength 120 + Object { + $PropName "BdWindowsInfo" + $ObjectID 2 + $ClassName "Simulink.BDWindowsInfo" + Object { + $PropName "WindowsInfo" + $ObjectID 3 + $ClassName "Simulink.WindowInfo" + IsActive [1] + Location [8.0, 8.0, 1298.0, 738.0] + Object { + $PropName "ModelBrowserInfo" + $ObjectID 4 + $ClassName "Simulink.ModelBrowserInfo" + Visible [1] + DockPosition "Left" + Width [50] + Height [50] + Filter [9] + } + Object { + $PropName "ExplorerBarInfo" + $ObjectID 5 + $ClassName "Simulink.ExplorerBarInfo" + Visible [1] + } + Object { + $PropName "EditorsInfo" + $ObjectID 6 + $ClassName "Simulink.EditorInfo" + IsActive [1] + ViewObjType "SimulinkTopLevel" + LoadSaveID "0" + Extents [1491.0, 628.0] + ZoomFactor [0.60970873786407764] + Offset [-217.199318272293, 12.163316582914604] + } + } + } + Created "Tue Mar 10 17:24:02 2020" + Creator "Falkenhain" + ModifiedByFormat "%<Auto>" + LastModifiedBy "Falkenhain" + ModifiedDateFormat "%<Auto>" + LastModifiedDate "Wed Jun 16 20:41:05 2021" + RTWModifiedTimeStamp 545776865 + ModelVersionFormat "1.%<AutoIncrement:0>" + SampleTimeColors off + SampleTimeAnnotations off + LibraryLinkDisplay "disabled" + WideLines off + ShowLineDimensions off + ShowPortDataTypes off + ShowDesignRanges off + ShowLoopsOnError on + IgnoreBidirectionalLines off + ShowStorageClass off + ShowTestPointIcons on + ShowSignalResolutionIcons on + ShowViewerIcons on + ShowLinearizationAnnotations on + BlockNameDataTip off + BlockParametersDataTip off + BlockDescriptionStringDataTip off + ToolBar on + StatusBar on + BrowserShowLibraryLinks off + BrowserLookUnderMasks off + SimulationMode "normal" + PauseTimes "5" + NumberOfSteps 1 + SnapshotBufferSize 10 + SnapshotInterval 10 + NumberOfLastSnapshots 0 + LinearizationMsg "none" + Profile off + ParamWorkspaceSource "MATLABWorkspace" + AccelSystemTargetFile "accel.tlc" + AccelTemplateMakefile "accel_default_tmf" + AccelMakeCommand "make_rtw" + TryForcingSFcnDF off + Object { + $PropName "DataLoggingOverride" + $ObjectID 9 + $ClassName "Simulink.SimulationData.ModelLoggingInfo" + model_ "ZOHundFOHblocks2014a" + overrideMode_ [0.0] + Array { + Type "Cell" + Dimension 1 + Cell "ZOHundFOHblocks2014a" + PropName "logAsSpecifiedByModels_" + } + Array { + Type "Cell" + Dimension 1 + Cell [] + PropName "logAsSpecifiedByModelsSSIDs_" + } + } + RecordCoverage off + CovPath "/" + CovSaveName "covdata" + CovMetricSettings "dwe" + CovNameIncrementing off + CovHtmlReporting off + CovForceBlockReductionOff on + CovEnableCumulative on + covSaveCumulativeToWorkspaceVar off + CovSaveSingleToWorkspaceVar off + CovCumulativeVarName "covCumulativeData" + CovCumulativeReport off + CovReportOnPause on + CovModelRefEnable "Off" + CovExternalEMLEnable on + CovSFcnEnable on + CovBoundaryAbsTol 0.000010 + CovBoundaryRelTol 0.010000 + ExtModeBatchMode off + ExtModeEnableFloating on + ExtModeTrigType "manual" + ExtModeTrigMode "normal" + ExtModeTrigPort "1" + ExtModeTrigElement "any" + ExtModeTrigDuration 1000 + ExtModeTrigDurationFloating "auto" + ExtModeTrigHoldOff 0 + ExtModeTrigDelay 0 + ExtModeTrigDirection "rising" + ExtModeTrigLevel 0 + ExtModeArchiveMode "off" + ExtModeAutoIncOneShot off + ExtModeIncDirWhenArm off + ExtModeAddSuffixToVar off + ExtModeWriteAllDataToWs off + ExtModeArmWhenConnect on + ExtModeSkipDownloadWhenConnect off + ExtModeLogAll on + ExtModeAutoUpdateStatusClock on + ShowModelReferenceBlockVersion off + ShowModelReferenceBlockIO off + Array { + Type "Handle" + Dimension 1 + Simulink.ConfigSet { + $ObjectID 10 + Version "1.14.2" + Array { + Type "Handle" + Dimension 9 + Simulink.SolverCC { + $ObjectID 11 + Version "1.14.2" + Components [] + StartTime "0.0" + StopTime "10.0" + AbsTol "auto" + FixedStep "0.01" + InitialStep "auto" + MaxOrder 5 + ZcThreshold "auto" + ConsecutiveZCsStepRelTol "10*128*eps" + MaxConsecutiveZCs "1000" + ExtrapolationOrder 4 + NumberNewtonIterations 1 + MaxStep "auto" + MinStep "auto" + MaxConsecutiveMinStep "1" + RelTol "1e-3" + SolverMode "SingleTasking" + EnableConcurrentExecution off + ConcurrentTasks off + SolverName ode3 + SolverJacobianMethodControl "auto" + ShapePreserveControl "DisableAll" + ZeroCrossControl "UseLocalSettings" + ZeroCrossAlgorithm "Nonadaptive" + AlgebraicLoopSolver "TrustRegion" + SolverResetMethod "Fast" + PositivePriorityOrder off + AutoInsertRateTranBlk off + SampleTimeConstraint "Unconstrained" + InsertRTBMode "Whenever possible" + Solver ode3 + } + Simulink.DataIOCC { + $ObjectID 12 + Version "1.14.2" + Components [] + Decimation "1" + ExternalInput "[t, u]" + FinalStateName "xFinal" + InitialState "xInitial" + LimitDataPoints off + MaxDataPoints "1000" + LoadExternalInput off + LoadInitialState off + SaveFinalState off + SaveCompleteFinalSimState off + SaveFormat "StructureWithTime" + SignalLoggingSaveFormat "Dataset" + SaveOutput on + SaveState off + SignalLogging on + DSMLogging on + InspectSignalLogs off + VisualizeSimOutput on + SaveTime on + ReturnWorkspaceOutputs on + StateSaveName "xout" + TimeSaveName "tout" + OutputSaveName "yout" + SignalLoggingName "logsout" + DSMLoggingName "dsmout" + OutputOption "RefineOutputTimes" + OutputTimes "[]" + ReturnWorkspaceOutputsName "out" + Refine "1" + } + Simulink.OptimizationCC { + $ObjectID 13 + Version "1.14.2" + Array { + Type "Cell" + Dimension 9 + Cell "BooleansAsBitfields" + Cell "PassReuseOutputArgsAs" + Cell "PassReuseOutputArgsThreshold" + Cell "ZeroExternalMemoryAtStartup" + Cell "ZeroInternalMemoryAtStartup" + Cell "OptimizeModelRefInitCode" + Cell "NoFixptDivByZeroProtection" + Cell "UseSpecifiedMinMax" + Cell "EfficientTunableParamExpr" + PropName "DisabledProps" + } + Components [] + BlockReduction on + BooleanDataType on + ConditionallyExecuteInputs on + InlineParams off + UseIntDivNetSlope off + UseFloatMulNetSlope off + DefaultUnderspecifiedDataType "double" + UseSpecifiedMinMax off + InlineInvariantSignals off + OptimizeBlockIOStorage on + BufferReuse on + EnhancedBackFolding off + CachingGlobalReferences off + GlobalBufferReuse on + StrengthReduction off + ExpressionFolding on + BooleansAsBitfields off + BitfieldContainerType "uint_T" + EnableMemcpy on + MemcpyThreshold 64 + PassReuseOutputArgsAs "Structure reference" + ExpressionDepthLimit 128 + LocalBlockOutputs on + RollThreshold 5 + StateBitsets off + DataBitsets off + ActiveStateOutputEnumStorageType "Native Integer" + ZeroExternalMemoryAtStartup on + ZeroInternalMemoryAtStartup on + InitFltsAndDblsToZero off + NoFixptDivByZeroProtection off + EfficientFloat2IntCast off + EfficientMapNaN2IntZero on + OptimizeModelRefInitCode off + LifeSpan "inf" + MaxStackSize "Inherit from target" + BufferReusableBoundary on + SimCompilerOptimization "Off" + AccelVerboseBuild off + } + Simulink.DebuggingCC { + $ObjectID 14 + Version "1.14.2" + Components [] + RTPrefix "error" + ConsistencyChecking "none" + ArrayBoundsChecking "none" + SignalInfNanChecking "none" + SignalRangeChecking "none" + ReadBeforeWriteMsg "UseLocalSettings" + WriteAfterWriteMsg "UseLocalSettings" + WriteAfterReadMsg "UseLocalSettings" + AlgebraicLoopMsg "warning" + ArtificialAlgebraicLoopMsg "warning" + SaveWithDisabledLinksMsg "warning" + SaveWithParameterizedLinksMsg "warning" + CheckSSInitialOutputMsg on + UnderspecifiedInitializationDetection "Simplified" + MergeDetectMultiDrivingBlocksExec "error" + CheckExecutionContextPreStartOutputMsg off + SignalResolutionControl "UseLocalSettings" + BlockPriorityViolationMsg "warning" + MinStepSizeMsg "warning" + TimeAdjustmentMsg "none" + MaxConsecutiveZCsMsg "error" + MaskedZcDiagnostic "warning" + IgnoredZcDiagnostic "warning" + SolverPrmCheckMsg "none" + InheritedTsInSrcMsg "warning" + MultiTaskDSMMsg "error" + MultiTaskCondExecSysMsg "error" + MultiTaskRateTransMsg "error" + SingleTaskRateTransMsg "none" + TasksWithSamePriorityMsg "warning" + SigSpecEnsureSampleTimeMsg "warning" + CheckMatrixSingularityMsg "none" + IntegerOverflowMsg "warning" + Int32ToFloatConvMsg "warning" + ParameterDowncastMsg "error" + ParameterOverflowMsg "error" + ParameterUnderflowMsg "none" + ParameterPrecisionLossMsg "warning" + ParameterTunabilityLossMsg "warning" + FixptConstUnderflowMsg "none" + FixptConstOverflowMsg "none" + FixptConstPrecisionLossMsg "none" + UnderSpecifiedDataTypeMsg "none" + UnnecessaryDatatypeConvMsg "none" + VectorMatrixConversionMsg "none" + FcnCallInpInsideContextMsg "EnableAllAsError" + SignalLabelMismatchMsg "none" + UnconnectedInputMsg "warning" + UnconnectedOutputMsg "warning" + UnconnectedLineMsg "warning" + SFcnCompatibilityMsg "none" + FrameProcessingCompatibilityMsg "error" + UniqueDataStoreMsg "none" + BusObjectLabelMismatch "warning" + RootOutportRequireBusObject "warning" + AssertControl "UseLocalSettings" + ModelReferenceIOMsg "none" + ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" + ModelReferenceVersionMismatchMessage "none" + ModelReferenceIOMismatchMessage "none" + UnknownTsInhSupMsg "warning" + ModelReferenceDataLoggingMessage "warning" + ModelReferenceSymbolNameMessage "warning" + ModelReferenceExtraNoncontSigs "error" + StateNameClashWarn "none" + SimStateInterfaceChecksumMismatchMsg "warning" + SimStateOlderReleaseMsg "error" + InitInArrayFormatMsg "warning" + StrictBusMsg "ErrorLevel1" + BusNameAdapt "WarnAndRepair" + NonBusSignalsTreatedAsBus "none" + BlockIODiagnostic "none" + SFUnusedDataAndEventsDiag "warning" + SFUnexpectedBacktrackingDiag "error" + SFInvalidInputDataAccessInChartInitDiag "warning" + SFNoUnconditionalDefaultTransitionDiag "error" + SFTransitionOutsideNaturalParentDiag "warning" + SFUnconditionalTransitionShadowingDiag "warning" + SFUndirectedBroadcastEventsDiag "warning" + SFTransitionActionBeforeConditionDiag "warning" + ModelReferenceCSMismatchMessage "none" + } + Simulink.HardwareCC { + $ObjectID 15 + Version "1.14.2" + Components [] + ProdBitPerChar 8 + ProdBitPerShort 16 + ProdBitPerInt 32 + ProdBitPerLong 32 + ProdBitPerLongLong 64 + ProdBitPerFloat 32 + ProdBitPerDouble 64 + ProdBitPerPointer 64 + ProdLargestAtomicInteger "Char" + ProdLargestAtomicFloat "Float" + ProdIntDivRoundTo "Zero" + ProdEndianess "LittleEndian" + ProdWordSize 32 + ProdShiftRightIntArith on + ProdLongLongMode off + ProdHWDeviceType "Specified" + TargetBitPerChar 8 + TargetBitPerShort 16 + TargetBitPerInt 32 + TargetBitPerLong 32 + TargetBitPerLongLong 64 + TargetBitPerFloat 32 + TargetBitPerDouble 64 + TargetBitPerPointer 32 + TargetLargestAtomicInteger "Char" + TargetLargestAtomicFloat "None" + TargetShiftRightIntArith on + TargetLongLongMode off + TargetIntDivRoundTo "Undefined" + TargetEndianess "Unspecified" + TargetWordSize 32 + TargetPreprocMaxBitsSint 32 + TargetPreprocMaxBitsUint 32 + TargetHWDeviceType "Specified" + TargetUnknown off + ProdEqTarget on + } + Simulink.ModelReferenceCC { + $ObjectID 16 + Version "1.14.2" + Components [] + UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" + CheckModelReferenceTargetMessage "error" + EnableParallelModelReferenceBuilds off + ParallelModelReferenceErrorOnInvalidPool on + ParallelModelReferenceMATLABWorkerInit "None" + ModelReferenceNumInstancesAllowed "Multi" + PropagateVarSize "Infer from blocks in model" + ModelReferencePassRootInputsByReference on + ModelReferenceMinAlgLoopOccurrences off + PropagateSignalLabelsOutOfModel on + SupportModelReferenceSimTargetCustomCode off + } + Simulink.SFSimCC { + $ObjectID 17 + Version "1.14.2" + Components [] + SFSimEcho on + SimCtrlC on + SimIntegrity on + SimUseLocalCustomCode on + SimParseCustomCode on + SimGenImportedTypeDefs off + } + Simulink.RTWCC { + $BackupClass "Simulink.RTWCC" + $ObjectID 18 + Version "1.14.2" + Array { + Type "Cell" + Dimension 16 + Cell "IncludeHyperlinkInReport" + Cell "GenerateTraceInfo" + Cell "GenerateTraceReport" + Cell "GenerateTraceReportSl" + Cell "GenerateTraceReportSf" + Cell "GenerateTraceReportEml" + Cell "PortableWordSizes" + Cell "GenerateWebview" + Cell "GenerateCodeMetricsReport" + Cell "GenerateCodeReplacementReport" + Cell "GenerateMissedCodeReplacementReport" + Cell "GenerateErtSFunction" + Cell "CreateSILPILBlock" + Cell "CodeExecutionProfiling" + Cell "CodeProfilingSaveOptions" + Cell "CodeProfilingInstrumentation" + PropName "DisabledProps" + } + SystemTargetFile "grt.tlc" + TLCOptions "" + GenCodeOnly off + MakeCommand "make_rtw" + GenerateMakefile on + PackageGeneratedCodeAndArtifacts off + TemplateMakefile "grt_default_tmf" + PostCodeGenCommand "" + GenerateReport off + RTWVerbose on + RetainRTWFile off + ProfileTLC off + TLCDebug off + TLCCoverage off + TLCAssert off + RTWUseLocalCustomCode on + RTWUseSimCustomCode off + Toolchain "Automatically locate an installed toolchain" + BuildConfiguration "Faster Builds" + IncludeHyperlinkInReport off + LaunchReport off + PortableWordSizes off + CreateSILPILBlock "None" + CodeExecutionProfiling off + CodeExecutionProfileVariable "executionProfile" + CodeProfilingSaveOptions "SummaryOnly" + CodeProfilingInstrumentation off + SILDebugging off + TargetLang "C" + IncludeBusHierarchyInRTWFileBlockHierarchyMap off + GenerateTraceInfo off + GenerateTraceReport off + GenerateTraceReportSl off + GenerateTraceReportSf off + GenerateTraceReportEml off + GenerateWebview off + GenerateCodeMetricsReport off + GenerateCodeReplacementReport off + RTWCompilerOptimization "Off" + RTWCustomCompilerOptimizations "" + CheckMdlBeforeBuild "Off" + SharedConstantsCachingThreshold 1024 + Array { + Type "Handle" + Dimension 2 + Simulink.CodeAppCC { + $ObjectID 19 + Version "1.14.2" + Array { + Type "Cell" + Dimension 28 + Cell "IgnoreCustomStorageClasses" + Cell "IgnoreTestpoints" + Cell "BlockCommentType" + Cell "InsertBlockDesc" + Cell "InsertPolySpaceComments" + Cell "SFDataObjDesc" + Cell "MATLABFcnDesc" + Cell "SimulinkDataObjDesc" + Cell "DefineNamingRule" + Cell "SignalNamingRule" + Cell "ParamNamingRule" + Cell "InternalIdentifier" + Cell "InlinedPrmAccess" + Cell "CustomSymbolStr" + Cell "CustomSymbolStrGlobalVar" + Cell "CustomSymbolStrType" + Cell "CustomSymbolStrField" + Cell "CustomSymbolStrFcn" + Cell "CustomSymbolStrModelFcn" + Cell "CustomSymbolStrFcnArg" + Cell "CustomSymbolStrBlkIO" + Cell "CustomSymbolStrTmpVar" + Cell "CustomSymbolStrMacro" + Cell "CustomSymbolStrUtil" + Cell "CustomSymbolStrEmxType" + Cell "CustomSymbolStrEmxFcn" + Cell "CustomUserTokenString" + Cell "ReqsInCode" + PropName "DisabledProps" + } + Components [] + ForceParamTrailComments off + GenerateComments on + CommentStyle "Auto" + IgnoreCustomStorageClasses on + IgnoreTestpoints off + MaxIdLength 31 + PreserveName off + PreserveNameWithParent off + ShowEliminatedStatement off + OperatorAnnotations off + SimulinkDataObjDesc off + SFDataObjDesc off + MATLABFcnDesc off + MangleLength 1 + CustomSymbolStrGlobalVar "$R$N$M" + CustomSymbolStrType "$N$R$M_T" + CustomSymbolStrField "$N$M" + CustomSymbolStrFcn "$R$N$M$F" + CustomSymbolStrFcnArg "rt$I$N$M" + CustomSymbolStrBlkIO "rtb_$N$M" + CustomSymbolStrTmpVar "$N$M" + CustomSymbolStrMacro "$R$N$M" + CustomSymbolStrUtil "$N$C" + DefineNamingRule "None" + ParamNamingRule "None" + SignalNamingRule "None" + InsertBlockDesc off + InsertPolySpaceComments off + SimulinkBlockComments on + MATLABSourceComments off + EnableCustomComments off + InternalIdentifier "Shortened" + InlinedPrmAccess "Literals" + ReqsInCode off + UseSimReservedNames off + } + Simulink.GRTTargetCC { + $BackupClass "Simulink.TargetCC" + $ObjectID 20 + Version "1.14.2" + Array { + Type "Cell" + Dimension 17 + Cell "IncludeMdlTerminateFcn" + Cell "SuppressErrorStatus" + Cell "GenerateAllocFcn" + Cell "ERTCustomFileBanners" + Cell "GenerateSampleERTMain" + Cell "ExistingSharedCode" + Cell "GenerateTestInterfaces" + Cell "ModelStepFunctionPrototypeControlCompliant" + Cell "PurelyIntegerCode" + Cell "SupportComplex" + Cell "SupportAbsoluteTime" + Cell "SupportContinuousTime" + Cell "SupportNonInlinedSFcns" + Cell "RemoveDisableFunc" + Cell "RemoveResetFunc" + Cell "PreserveStateflowLocalDataDimensions" + Cell "CombineOutputUpdateFcns" + PropName "DisabledProps" + } + Components [] + TargetFcnLib "ansi_tfl_table_tmw.mat" + TargetLibSuffix "" + TargetPreCompLibLocation "" + GenFloatMathFcnCalls "NOT IN USE" + TargetLangStandard "C99 (ISO)" + CodeReplacementLibrary "None" + UtilityFuncGeneration "Auto" + ERTMultiwordTypeDef "System defined" + MultiwordLength 2048 + GenerateFullHeader on + GenerateSampleERTMain off + GenerateTestInterfaces off + ModelReferenceCompliant on + ParMdlRefBuildCompliant on + CompOptLevelCompliant on + ConcurrentExecutionCompliant on + IncludeMdlTerminateFcn on + CombineOutputUpdateFcns on + CombineSignalStateStructs off + SuppressErrorStatus off + IncludeFileDelimiter "Auto" + ERTCustomFileBanners off + SupportAbsoluteTime on + LogVarNameModifier "rt_" + MatFileLogging on + CodeInterfacePackaging "Nonreusable function" + SupportNonFinite on + SupportComplex on + PurelyIntegerCode off + SupportContinuousTime on + SupportNonInlinedSFcns on + SupportVariableSizeSignals off + ParenthesesLevel "Nominal" + MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" + ModelStepFunctionPrototypeControlCompliant off + CPPClassGenCompliant on + AutosarCompliant off + GRTInterface off + GenerateAllocFcn off + UseMalloc off + ExtMode off + ExtModeStaticAlloc off + ExtModeTesting off + ExtModeStaticAllocSize 1000000 + ExtModeTransport 0 + ExtModeMexFile "ext_comm" + ExtModeIntrfLevel "Level1" + RTWCAPISignals off + RTWCAPIParams off + RTWCAPIStates off + RTWCAPIRootIO off + GenerateASAP2 off + MultiInstanceErrorCode "Error" + } + PropName "Components" + } + } + hdlcoderui.hdlcc { + $ObjectID 22 + Version "1.14.2" + Description "HDL Coder custom configuration component" + Components [] + Name "HDL Coder" + Array { + Type "Cell" + Dimension 1 + Cell " " + PropName "HDLConfigFile" + } + HDLCActiveTab "0" + } + PropName "Components" + } + Name "Configuration" + CurrentDlgPage "Solver" + ConfigPrmDlgPosition [ 2243, 225, 3233, 891 ] + } + PropName "ConfigurationSets" + } + Simulink.ConfigSet { + $PropName "ActiveConfigurationSet" + $ObjectID 10 + } + Object { + $PropName "DataTransfer" + $ObjectID 23 + $ClassName "Simulink.GlobalDataTransfer" + DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" + DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" + DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" + DefaultExtrapolationMethodBetweenContTasks "None" + } + ExplicitPartitioning off + BlockDefaults { + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + NamePlacement "normal" + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + ShowName on + BlockRotation 0 + BlockMirror off + } + AnnotationDefaults { + HorizontalAlignment "left" + VerticalAlignment "top" + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + UseDisplayTextAsClickCallback off + } + LineDefaults { + FontName "Helvetica" + FontSize 9 + FontWeight "normal" + FontAngle "normal" + } + MaskDefaults { + SelfModifiable "off" + IconFrame "on" + IconOpaque "on" + RunInitForIconRedraw "off" + IconRotate "none" + PortRotate "default" + IconUnits "autoscale" + } + MaskParameterDefaults { + Evaluate "on" + Tunable "on" + NeverSave "off" + Internal "off" + ReadOnly "off" + Enabled "on" + Visible "on" + ToolTip "on" + } + BlockParameterDefaults { + Block { + BlockType Gain + Gain "1" + Multiplication "Element-wise(K.*u)" + ParamMin "[]" + ParamMax "[]" + ParamDataTypeStr "Inherit: Inherit via internal rule" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Inherit via internal rule" + LockScale off + RndMeth "Floor" + SaturateOnIntegerOverflow off + SampleTime "-1" + } + Block { + BlockType Ground + } + Block { + BlockType Inport + Port "1" + IconDisplay "Port number" + OutputFunctionCall off + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + SignalType "auto" + SamplingMode "auto" + LatchByDelayingOutsideSignal off + LatchInputForFeedbackSignals off + Interpolate on + } + Block { + BlockType Integrator + ExternalReset "none" + InitialConditionSource "internal" + InitialCondition "0" + LimitOutput off + UpperSaturationLimit "inf" + LowerSaturationLimit "-inf" + ShowSaturationPort off + ShowStatePort off + AbsoluteTolerance "auto" + IgnoreLimit off + ZeroCross on + ContinuousStateAttributes "''" + } + Block { + BlockType ManualSwitch + CurrentSetting "1" + varsize off + SampleTime "-1" + } + Block { + BlockType Outport + Port "1" + IconDisplay "Port number" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + BusOutputAsStruct off + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + SignalType "auto" + SamplingMode "auto" + SourceOfInitialOutputValue "Dialog" + OutputWhenDisabled "held" + InitialOutput "[]" + OutputWhenUnConnected off + } + Block { + BlockType RateTransition + Integrity on + Deterministic on + X0 "0" + OutPortSampleTimeOpt "Specify" + OutPortSampleTimeMultiple "1" + OutPortSampleTime "-1" + } + Block { + BlockType Scope + } + Block { + BlockType Sin + SineType "Time based" + TimeSource "Use simulation time" + Amplitude "1" + Bias "0" + Frequency "1" + Phase "0" + Samples "10" + Offset "0" + SampleTime "-1" + VectorParams1D on + } + Block { + BlockType SubSystem + ShowPortLabels "FromPortIcon" + Permissions "ReadWrite" + PermitHierarchicalResolution "All" + TreatAsAtomicUnit off + MinAlgLoopOccurrences off + SystemSampleTime "-1" + RTWSystemCode "Auto" + RTWFcnNameOpts "Auto" + RTWFileNameOpts "Auto" + FunctionInterfaceSpec "void_void" + FunctionWithSeparateData off + RTWMemSecFuncInitTerm "Inherit from model" + RTWMemSecFuncExecute "Inherit from model" + RTWMemSecDataConstants "Inherit from model" + RTWMemSecDataInternal "Inherit from model" + RTWMemSecDataParameters "Inherit from model" + SimViewingDevice off + DataTypeOverride "UseLocalSettings" + DataTypeOverrideAppliesTo "AllNumericTypes" + MinMaxOverflowLogging "UseLocalSettings" + Opaque off + MaskHideContents off + SFBlockType "NONE" + Variant off + GeneratePreprocessorConditionals off + ContentPreviewEnabled off + } + Block { + BlockType Sum + IconShape "round" + Inputs "++" + CollapseMode "All dimensions" + CollapseDim "1" + InputSameDT off + AccumDataTypeStr "Inherit: Inherit via internal rule" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Inherit via internal rule" + LockScale off + RndMeth "Floor" + SaturateOnIntegerOverflow off + SampleTime "-1" + } + Block { + BlockType Terminator + } + Block { + BlockType TransportDelay + DelayTime "1" + InitialOutput "0" + BufferSize "1024" + FixedBuffer off + TransDelayFeedthrough off + PadeOrder "0" + } + Block { + BlockType ZeroOrderHold + SampleTime "1" + } + } + System { + Name "ZOHundFOHblocks2014a" + Location [8, 8, 1306, 746] + Open off + ModelBrowserVisibility on + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "61" + ReportName "simulink-default.rpt" + SIDHighWatermark "49" + Block { + BlockType SubSystem + Name "First Order Hold" + SID "45" + Description "Replaced Block" + Ports [1, 1] + Position [790, 635, 820, 665] + ZOrder 339 + BackgroundColor "yellow" + RequestExecContextInheritance off + Object { + $PropName "MaskObject" + $ObjectID 24 + $ClassName "Simulink.Mask" + Type "Replaced Block" + Description "This block has been replaced with an empty subsystem because it used functionality that is unavailable " + "in Simulink R2014a." + Display "fprintf('Replaced: %s\\n','FirstOrderHold')" + } + System { + Name "First Order Hold" + Location [30, 30, 1010, 750] + Open off + ModelBrowserVisibility on + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Inport + Name "In1" + SID "46" + Position [35, 43, 65, 57] + ZOrder 1 + } + Block { + BlockType Ground + Name "Ground1" + SID "47" + Position [185, 100, 215, 120] + ZOrder 4 + } + Block { + BlockType Terminator + Name "Terminator1" + SID "48" + Position [100, 40, 120, 60] + ZOrder 2 + } + Block { + BlockType Outport + Name "Out1" + SID "49" + Position [250, 103, 280, 117] + ZOrder 3 + } + Line { + ZOrder 1 + SrcBlock "Ground1" + SrcPort 1 + DstBlock "Out1" + DstPort 1 + } + Line { + ZOrder 2 + SrcBlock "In1" + SrcPort 1 + DstBlock "Terminator1" + DstPort 1 + } + } + } + Block { + BlockType Gain + Name "Gain" + SID "28" + Position [605, 390, 635, 420] + ZOrder 331 + Gain "1/T" + } + Block { + BlockType Integrator + Name "Integrator" + SID "25" + Ports [1, 1] + Position [930, 435, 960, 465] + ZOrder 328 + } + Block { + BlockType ManualSwitch + Name "Manual Switch" + SID "33" + Position [930, 172, 960, 208] + ZOrder 333 + CurrentSetting "0" + } + Block { + BlockType ManualSwitch + Name "Manual Switch1" + SID "44" + Position [1145, 607, 1175, 643] + ZOrder 338 + } + Block { + BlockType RateTransition + Name "Rate Transition2" + SID "13" + Position [490, 39, 530, 81] + ZOrder 317 + OutPortSampleTime "T" + } + Block { + BlockType Sin + Name "Sine Wave" + SID "1" + Ports [0, 1] + Position [280, 200, 310, 230] + ZOrder 1 + SampleTime "0" + } + Block { + BlockType Sum + Name "Sum" + SID "26" + Ports [2, 1] + Position [890, 440, 910, 460] + ZOrder 329 + ShowName off + Inputs "-|+" + } + Block { + BlockType TransportDelay + Name "Transport\nDelay" + SID "20" + Ports [1, 1] + Position [785, 755, 825, 795] + ZOrder 323 + DelayTime "T" + } + Block { + BlockType TransportDelay + Name "Transport\nDelay1" + SID "24" + Ports [1, 1] + Position [785, 385, 825, 425] + ZOrder 327 + DelayTime "T" + } + Block { + BlockType ZeroOrderHold + Name "Zero-Order\nHold" + SID "12" + Position [490, 120, 525, 150] + ZOrder 316 + SampleTime "T" + } + Block { + BlockType ZeroOrderHold + Name "Zero-Order\nHold1" + SID "27" + Position [450, 390, 485, 420] + ZOrder 330 + SampleTime "T" + } + Block { + BlockType Scope + Name "continuous vs ZOH signal" + SID "34" + Ports [2] + Position [1035, 181, 1065, 214] + ZOrder 334 + NumInputPorts "2" + Floating off + Open off + TimeRange auto + TickLabels OneTimeTick + ShowLegends off + LimitDataPoints off + MaxDataPoints 5000 + SaveToWorkspace off + SaveName ScopeData1 + YMin "-1.25~-5" + YMax "1.25~5" + SampleInput off + SampleTime -1 + ZoomMode on + Grid on + DataFormat StructureWithTime + Decimation 1 + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + axes2 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + LineColors "[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.39" + "2156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1]" + LineStyles "-|-|-|-|-|-" + LineWidths "[0.75 0.75 0.75 0.75 0.75 0.75]" + MarkerStyles "none|none|none|none|none|none" + } + Location [-160 107.8 1123.4 756] + } + Block { + BlockType Scope + Name "delayed continous vs.FOH signal" + SID "43" + Ports [2] + Position [1255, 616, 1285, 649] + ZOrder 337 + NumInputPorts "2" + Floating off + Open off + TimeRange auto + TickLabels OneTimeTick + ShowLegends off + LimitDataPoints off + MaxDataPoints 5000 + SaveToWorkspace off + SaveName ScopeData2 + YMin "-1.25~-5" + YMax "1.25~5" + SampleInput off + SampleTime -1 + ZoomMode on + Grid on + DataFormat StructureWithTime + Decimation 1 + List { + ListType AxesTitles + axes1 "%<SignalLabel>" + axes2 "%<SignalLabel>" + } + List { + ListType ScopeGraphics + FigureColor "[0.156862745098039 0.156862745098039 0.156862745098039]" + AxesColor "[0 0 0]" + AxesTickColor "[0.686274509803922 0.686274509803922 0.686274509803922]" + LineColors "[1 1 0;1 0 1;0 1 1;1 0 0;0 1 0;0 0 1]" + LineStyles "-|-|-|-|-|-" + LineWidths "[0.5 0.5 0.5 0.5 0.5 0.5]" + MarkerStyles "none|none|none|none|none|none" + } + Location [1921 -284 3521 509] + } + Line { + ZOrder 13 + SrcBlock "Sine Wave" + SrcPort 1 + Points [82, 0] + Branch { + ZOrder 124 + Points [601, 0; 0, -10] + DstBlock "continuous vs ZOH signal" + DstPort 2 + } + Branch { + ZOrder 17 + Points [0, 190] + Branch { + ZOrder 89 + DstBlock "Zero-Order\nHold1" + DstPort 1 + } + Branch { + ZOrder 88 + Points [0, 370] + DstBlock "Transport\nDelay" + DstPort 1 + } + } + Branch { + ZOrder 38 + Points [0, -80] + Branch { + ZOrder 107 + DstBlock "Zero-Order\nHold" + DstPort 1 + } + Branch { + ZOrder 56 + Points [0, -75] + DstBlock "Rate Transition2" + DstPort 1 + } + } + } + Line { + ZOrder 125 + SrcBlock "Rate Transition2" + SrcPort 1 + Points [195, 0; 0, 120] + DstBlock "Manual Switch" + DstPort 1 + } + Line { + ZOrder 126 + SrcBlock "Zero-Order\nHold" + SrcPort 1 + Points [98, 0; 0, 65] + DstBlock "Manual Switch" + DstPort 2 + } + Line { + ZOrder 131 + SrcBlock "Transport\nDelay" + SrcPort 1 + Points [385, 0; 0, -135] + DstBlock "delayed continous vs.FOH signal" + DstPort 2 + } + Line { + ZOrder 76 + SrcBlock "Sum" + SrcPort 1 + DstBlock "Integrator" + DstPort 1 + } + Line { + ZOrder 77 + SrcBlock "Transport\nDelay1" + SrcPort 1 + Points [23, 0; 0, 20] + DstBlock "Sum" + DstPort 1 + } + Line { + ZOrder 128 + SrcBlock "Integrator" + SrcPort 1 + Points [104, 0; 0, 165] + DstBlock "Manual Switch1" + DstPort 1 + } + Line { + ZOrder 129 + SrcBlock "First Order Hold" + SrcPort 1 + Points [0, -15] + DstBlock "Manual Switch1" + DstPort 2 + } + Line { + ZOrder 95 + SrcBlock "Zero-Order\nHold1" + SrcPort 1 + Points [31, 0] + Branch { + ZOrder 100 + Points [0, 245] + DstBlock "First Order Hold" + DstPort 1 + } + Branch { + ZOrder 99 + DstBlock "Gain" + DstPort 1 + } + } + Line { + ZOrder 96 + SrcBlock "Gain" + SrcPort 1 + Points [16, 0] + Branch { + ZOrder 98 + Points [0, 79; 244, 0] + DstBlock "Sum" + DstPort 2 + } + Branch { + ZOrder 97 + DstBlock "Transport\nDelay1" + DstPort 1 + } + } + Line { + ZOrder 123 + SrcBlock "Manual Switch" + SrcPort 1 + DstBlock "continuous vs ZOH signal" + DstPort 1 + } + Line { + ZOrder 130 + SrcBlock "Manual Switch1" + SrcPort 1 + DstBlock "delayed continous vs.FOH signal" + DstPort 1 + } + Annotation { + SID "42" + Name "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" + "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\np, li { white-space: pre-wrap; }" + "\n</style></head><body align=\"left\" style=\" font-family:'Helvetica'; font-size:10px; font-weight:400; font-st" + "yle:normal;\">\n<p align=\"left\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;" + " -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:12px;\">Siehe output algorithm option:</span></" + "p>\n<p align=\"left\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-i" + "ndent:0; text-indent:0px;\"><span style=\" font-size:12px;\">slow (avoid overshoot)</span></p></body></html>" + Position [716, 599, 877, 629] + InternalMargins [0, 0, 0, 0] + Interpreter "rich" + ZOrder -1 + } + Annotation { + SID "41" + Name "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" + "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\np, li { white-space: pre-wrap; }" + "\n</style></head><body align=\"left\" style=\" font-family:'Helvetica'; font-size:10px; font-weight:400; font-st" + "yle:normal;\">\n<p align=\"left\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;" + " -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:12px;\">Sample & G_ZOH(s</span>)</p></body>" + "</html>" + Position [412, 355, 523, 371] + InternalMargins [0, 0, 0, 0] + Interpreter "rich" + ZOrder -2 + } + Annotation { + SID "40" + Name "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" + "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\np, li { white-space: pre-wrap; }" + "\n</style></head><body align=\"left\" style=\" font-family:'Helvetica'; font-size:10px; font-weight:400; font-st" + "yle:normal;\">\n<p align=\"left\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;" + " -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:12px;\">1/T G_ZOH(s)</span></p></body></html>" + Position [581, 334, 994, 518] + InternalMargins [0, 0, 0, 0] + FixedHeight on + FixedWidth on + DropShadow on + Interpreter "rich" + ZOrder -3 + } + Annotation { + SID "39" + Name "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" + "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\np, li { white-space: pre-wrap; }" + "\n</style></head><body align=\"left\" style=\" font-family:'Helvetica'; font-size:10px; font-weight:400; font-st" + "yle:normal;\">\n<p align=\"left\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;" + " -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:16px;\">Sample Time T must be specified (z.B. i" + "m workspace T=0.5)</span></p></body></html>" + Position [178, 47, 337, 106] + InternalMargins [0, 0, 0, 0] + FixedHeight on + FixedWidth on + Interpreter "rich" + ZOrder -4 + } + } +} diff --git a/Regelungstechnik.tex b/Regelungstechnik.tex index e9a584b39c41b31a073230226381cc00482ea397..d023d154a32fc324544daa2448f51e6a7d8cfce1 100644 --- a/Regelungstechnik.tex +++ b/Regelungstechnik.tex @@ -77,7 +77,7 @@ zu diskretisieren: \end{align} Für $T_V\rightarrow 0$ geht der Regler in die PID-Variante Gl. \eqref{eq:PIDLunze} über. -In \cite{Isermann} wird beispielsweise zunächst der PID-Regler vom Typ I Gl. \eqref{eq:TypI} angegeben mit der als Rechteckintegration bezeichneten verzögerten Integration (S. 108). Anschließend wird die Trapezintegration vorgeschlagen und Regler Typ III angegeben (S. 110). Unter dem Title "`PID-Regelalgorithmus durch Z-Transformation"' (S. 122) wird der ZOH-diskretisierte PI-DT1-Regler (Typ 2) angegeben mit dem Hinweis auf "`gültige Parameter"' bei großen Abtastzeiten. Welche besondere Eignung der Regler haben könnte, auch wenn er bei einem vorgeschalteten ZOH-Glied vor die kontinuierliche Version dessen kontinuierlichen Ausgang exakt trifft, bleibt unklar. Im Folgenden (S. 126) wird der PI-DT1-Regler (Typ 3) entsprechend Tustin-Diskretisierung approximiert und die Koeffizienten der rekursiven Differenzengleichung angegeben. Tabelle \ref{table:PIDs} zeigt hier die Übertragungsfunktion. +In \cite{Isermann} wird beispielsweise zunächst der PID-Regler vom Typ I Gl. \eqref{eq:TypI} angegeben mit der als Rechteckintegration bezeichneten verzögerten Integration (S. 108). Anschließend wird die Trapezintegration vorgeschlagen und Regler Typ III angegeben (S. 110). Unter dem Title "`PID-Regelalgorithmus durch $\mathscr{Z}$-Transformation"' (S. 122) wird der ZOH-diskretisierte PI-DT1-Regler (Typ 2) angegeben mit dem Hinweis auf "`gültige Parameter"' bei großen Abtastzeiten. Welche besondere Eignung der Regler haben könnte, auch wenn er bei einem vorgeschalteten ZOH-Glied vor die kontinuierliche Version dessen kontinuierlichen Ausgang exakt trifft, bleibt unklar. Im Folgenden (S. 126) wird der PI-DT1-Regler (Typ 3) entsprechend Tustin-Diskretisierung approximiert und die Koeffizienten der rekursiven Differenzengleichung angegeben. Tabelle \ref{table:PIDs} zeigt hier die Übertragungsfunktion. \begin{table}[H] @@ -101,7 +101,7 @@ In \cite{Isermann} wird beispielsweise zunächst der PID-Regler vom Typ I Gl. \e \hline Typ 3 & \cite{Isermann} & $kp\left(1 + \frac{T}{T_I} \frac{z+1}{2(z-1)} +\frac{2 T_D(z-1)}{(T+2T_V)z + (T-2T_V)} \right) $ \\ \hline - Typ 4 & \cite{documentationsimulation} & $kp\left(1 +\frac{T}{T_I}\frac{1}{z-1} + \frac{T_D}{T} \frac{z-1}{1+{-T/T_V}(z-1)} \right) $ \\ + Typ 4 & \cite{documentationsimulation} & $kp\left(1 +\frac{T}{T_I}\frac{1}{z-1} + \frac{T_D}{T} \frac{z-1}{z-1+{T/T_V}} \right) $ \\ \hline \end{tabular} diff --git a/bilder/Abtastsystem.PNG b/bilder/Abtastsystem.PNG new file mode 100644 index 0000000000000000000000000000000000000000..cfec001b5e57c12c36227bef2e21a2f9e8a0f448 Binary files /dev/null and b/bilder/Abtastsystem.PNG differ diff --git a/bilder/AllgemReglerdigital.PNG b/bilder/AllgemReglerdigital.PNG new file mode 100644 index 0000000000000000000000000000000000000000..63ae136025ae746f3f64b35badeee852c7a32017 Binary files /dev/null and b/bilder/AllgemReglerdigital.PNG differ diff --git a/bilder/PReglerdigital.PNG b/bilder/PReglerdigital.PNG new file mode 100644 index 0000000000000000000000000000000000000000..5041147ad031633ca8b4399d7c801d73614ff09b Binary files /dev/null and b/bilder/PReglerdigital.PNG differ diff --git "a/bilder/ZOH-Identit\303\244t.PNG" "b/bilder/ZOH-Identit\303\244t.PNG" new file mode 100644 index 0000000000000000000000000000000000000000..17a3465c41134cdb35b48acd5e7ea1e33cf749c6 Binary files /dev/null and "b/bilder/ZOH-Identit\303\244t.PNG" differ diff --git a/hauptdatei.bib b/hauptdatei.bib index f47342be9de4784a90c0ae0535a0fa24988e3983..30ae8137386c041f707c7db963f0219e3dfe62f5 100644 --- a/hauptdatei.bib +++ b/hauptdatei.bib @@ -101,7 +101,7 @@ volume = {50}, number = {7}, pages = {346}, year = {2002}, -author = {A. Wolfram und M. Vogt}, +author = {A. Wolfram and M. Vogt}, } @MISC{wiki1, diff --git a/hauptdatei.tex b/hauptdatei.tex index 27da1c67de1fb6807a8387f39378bc361bab5b58..33a5564ed987b8de01858bac3b3cf8c6e6270e11 100644 --- a/hauptdatei.tex +++ b/hauptdatei.tex @@ -81,6 +81,7 @@ \usepackage{amssymb} \usepackage{dsfont} \usepackage{empheq} +\usepackage{mathrsfs} % erzeugt Inhaltsverzeichnis mit Querverweisen zu den Kapiteln (PDF Version) \usepackage[bookmarksnumbered,hyperfootnotes=false]{hyperref}