Skip to content
Snippets Groups Projects
Select Git revision
  • d48edcd327479e7a230e1a34684f251a5cd47337
  • master default protected
  • 2018ws
  • 2017ws
  • 2016ws
5 results

aufgabe-3.c

Blame
  • Forked from Peter Gerwinski / hp
    Source project has a limited visibility.
    1_Einleitung.tex 10.59 KiB
    \section{Einleitung%
             \label{sec:Einleitung}}
    
    Diskrete Systeme werden im Rahmen der digitalen Signalverarbeitung und der Regelungstechnik entworfen, in letzterer zumeist mit Bezug zu kontiuierlichen, physikalischen Modellen. Zwei wesentliche Motive können hier vorliegen, um kontinuierliche System zu diskretisieren, also sie durch ein mit fester Abtastzeit arbeitendes, diskretes System zu approximieren.
    
    \begin{enumerate}
    \item Hat man mit klassischen Methoden einen kontinuierlichen Regler entworfen, z. B. anhand eines Streckenmodells, dann erfordert die Realisierung auf einem Rechner (einer echtzeitfähigen Hardware beliebiger Art) eine diskrete Approximation, also ein unter Beachtung der Abtastzeit \textbf{den kontinuierlichen Regler} möglichst gut nachbildendes diskretes Modell. Dies ist immer erforderlich, wenn nicht Bibliotheken für die automatisierte Übersetzung kontinuierlicher Parameter, z. B. für PID-Regler, oder andere Software zur Verfügung steht, welche eine numerische Lösung bieten (wie z. B. MATLAB Coder).  
    \item Eine etwas andere Vorgehensweise des Reglerentwurfs besteht darin, den diskreten Regler direkt anhand eines diskreten Streckenmodells zu entwerfen. Dafür ist jetzt also die \textbf{Strecke bzw. das kontinuierliche Streckenmodell} zu diskretisieren. Anschließend steht eine eigene Welt von Methoden für den diskreten Reglerentwurf zur Verfügung, welche oft Ähnlichkeiten mit klassischen kontinuierlichen Methoden aufweisen, aber letztlich eigenständige Methoden darstellen.
    \end{enumerate}
    
    Der Verdacht liegt nahe, dass man in beiden Fällen anstrebt, das kontinuierliche System möglichst gut zu approximieren. Allerdings gilt für den zweiten Fall der Streckendiskretisierung, dass man aus Sicht des zu entwerfenden Reglers tatsächlich das Verhalten des kontinuierliche Modells in Reihe geschaltet mit zwei Haltegliedern erster Ordnung nachbilden will. Dies erzwingt die Eigenschaft des diskreten Systems, pro Abtastzeit nur einen Wert zu verarbeiten und am Ausgang einen Wert für eine Abtastzeit zu halten.
    
    Einige wichtige Begriffe der Systemtheorie werden im Grundlagenkapitel eingeführt. Dann wird die Euler-Approximation behandelt (Kap \ref{sec:Euler-Diskretisierung}), bei der Ableitungen durch einen simplen Differenzenquotienten ersetzt werden.
    
     Mit MATLAB\texttrademark (R2021a) lassen sich Systeme erzeugen, Darstellungen ineinander überführen und auch diskrete Systeme ableiten, wie das  folgende Skript zeigt:\\
    
    \href{https://gitlab.cvh-server.de/jfalkenhain/diskretisierung-linearer-systeme/-/blob/master/Matlab/Diskretisierung_mit_MATLAB.m}{Matlab\texttrademark(R2021a) file on Git: Diskretisierung\_mit\_MATLAB.m}
    
    %\url{ https://gitlab.cvh-server.de/jfalkenhain/diskretisierung-linearer-systeme/-/blob/master/Matlab/Diskretisierung_mit_MATLAB.m}
    
    Hier wird ein System zweiter Ordnung (ohne Durchgriff, mit komplexen Eigenwerten) diskretisiert nach den Methoden ZOH (Zero-Order Hold), FOH (First-Order Hold), Impulse und Tustin, welche in den folgenden Kapiteln behandelt werden. Bild \ref{fig:Sprungantwort} vergleicht die Sprungantworten der diskreten Systeme mit der des Originalsystems.
    
    \begin{figure}[H]
      \begin{center}
        \includegraphics[width=0.8\textwidth]{bilder/Sprungantwort_Vergleich}
          \caption{Sprungantwort eines Systems 2. Ordnung und daraus abgeleiteter diskreter Systeme %\citep{yawpitchroll2013}%
                 \label{fig:Sprungantwort}}
      \end{center}
    \end{figure}
    
    Der Verlauf für das ZOH-approximierte System liegt zu den Zeitpunkten $kT$ exakt auf der kontinuierlichen Sprungantwort, da dieses Verfahren gerade so konzipert ist. Tustin- und FOH-approximiertes System liefern eine ähnliche Sprungantwort, ohne exakt die kontinuierliche Kurve zu treffen. Da sie die gleiche statische Verstärkung (hier $k_{DC}=1$) wie das Originalsystem haben, verschwinden die Abweichungen nach Abklingen des Übergang. Das dies für die Impulse-approximierte Sprungantwort nicht gilt, kann zu dem Schluss führen, dass Impulse-Approximation wenig geeignet ist, das kontinuierliche System zu approximieren. 
    
    \begin{figure}[H]
      \begin{center}
        \includegraphics[width=0.8\textwidth]{bilder/Impulsantwort_Vergleich}
          \caption{Impulsantwort des Systems 2. Ordnung und daraus abgeleiteter diskreter Systeme %\citep{yawpitchroll2013}%
                 \label{fig:Impulseantwort}}
      \end{center}
    \end{figure}
    
    Aus einer anderen Perspektive wird aber lediglich ein anderer Aspekt, nämlich die Impulsantwort möglichst gut approximiert, was dazu führt, dass die Sprungantwort weniger gut getroffen wird. 
    
    
    
    
    \begin{landscape}
    
    
    \begin{table}[H]
      \caption{Diskretisierungsansätz und deren Eigenschaften%
               \label{table:massen}}
      \medskip
      \begin{center}
        \begin{tabular}{l|c|c|c|c}
          Verfahren                 & $s\mapsto z$ ? & Integrator& Differenziator& Zeitfunktion\\
          \hline
          Forward-Euler             & Ja 		&  & &\\
          Backward-Euler            & Ja  	&  & &\\
          ZOH   										& Nein	&  & &    5 \\
          FOH       								&	Nein			&	 & &20 \\
          Impuls                  	& Nein      &50	& &\\
          Tustin                    & Ja      10 &&&\\
          Mathched Filter 					& Nein   & -&-&   80 \\
          %Holzplatte               &       14 \\
          %Drehzahlsensoren         &        5 \\
          \hline
          %Gesamtmasse              &      226 \\
        \end{tabular}
      \end{center}
    \end{table}
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \end{landscape}
    %% Quertabelle Ende
    
    
    %\input{prefix}
    \begin{tikzpicture}[auto, node distance=2cm]
         
        \draw [dashed] (.5,-1.6) rectangle (3.5,0.5);
    
    \end{tikzpicture}
    
    \tikzstyle{int}=[draw, fill=white!20, minimum size=3em]
    %\tikzstyle{init} = [pin edge={to-,thin,black}]
    
    \begin{tikzpicture}[node distance=2.5cm,auto,>=latex', scale=3]
        \node [int] (a) {$\int$};   %\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] {$y(t)=\int u(t)dt;~~G_I(s)=\frac{Y(s)}{U(s)} = \frac{1}{s}$};
    
    
        \node [coordinate] (end) [right of=c, node distance=2cm]{};
        \path[->] (b) edge node {$u(t)$} (a);
        \path[->] (a) edge node {$y(t)$} (c);
        %\draw[->] (c) edge node {$p$} (end) ;
    \end{tikzpicture}
    
    Wir labern 
    \begin{figure}[H]
    \begin{tikzpicture}[node distance=2.5cm,auto,>=latex']
    \draw (0,0) -- (1.5, 0); \draw (0,0) -- ( 0,1.5);
    %    \node [int] (a) {$\int$};   %\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] {$y(t)=\int u(t)dt;~~G_I(s)=\frac{Y(s)}{U(s)} = \frac{1}{s}$};
    %
    %
    %    \node [coordinate] (end) [right of=c, node distance=2cm]{};
    %    \path[->] (b) edge node {$u(t)$} (a);
    %    \path[->] (a) edge node {$y(t)$} (c);
    %    %\draw[->] (c) edge node {$p$} (end) ;
    \end{tikzpicture}
    \end{figure}
    was
    
    
    
    
    \begin{filecontents}{data.dat}
     n   xn  
    -2   0  
    -1   0  
     0   1.0  
     1   1.0  
     2   1.0  
     3   1.0  
     4   1.0 
    \end{filecontents}
    
    %\begin{tikzpicture}[scale=0.8]
    %\begin{axis}
    %[%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %    %axis x line=middle,
    %    %axis y line=middle,
    %    %every axis x label={at={(current axis.right of origin)},anchor=north west},
    %    %every axis y label={at={(current axis.above origin)},anchor= north west},
    %    %every axis plot post/.style={mark options={fill=black}},
    %    xlabel={$k$},
    %    ylabel={$\sigma(k)$},
    %    xtick={-7, -6,-5,-4,-3, -2, -1, 0, 1, 2, 3, 4},
    %    ymin=0,
    %    ymax=1.5,
    %	xmin=-2,
    %	xmax=4.5,
    %]%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %\addplot+[ycomb,black,thick] table [x={n}, y={xn}] {data.dat};
    %\end{axis}
    %\end{tikzpicture}
    %
    %
    %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %% Original Signal
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %
    %\begin{filecontents}{data.dat}
    % n   xn 
    %-5   0.0
    %-4   0.0
    %-3   3.0 
    %-2   2.0  
    %-1   1.0  
    % 0   0.0  
    % 1   1.0  
    % 2   2.0  
    % 3   3.0  
    % 4   0.0 
    % 5   0.0
    %\end{filecontents}
    
    %\begin{tikzpicture}
    %\begin{axis}
    %[%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %    axis x line=middle,
    %    axis y line=middle,
    %    every axis x label={at={(current axis.right of origin)},anchor=north west},
    %    every axis y label={at={(current axis.above origin)},anchor= north west},
    %    every axis plot post/.style={mark options={fill=black}},
    %    xlabel={$n$},
    %    ylabel={$\boldsymbol{x[n]}$},
    %    xtick={-7, -6,-5,-4,-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8},
    %    ymin=0,
    %    ymax=5.5,
    %]%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %\addplot+[ycomb,black,thick] table [x={n}, y={xn}] {data.dat};
    %\end{axis}
    %\end{tikzpicture}
    %
    %
    %\clearpage
    %\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[-] (-0.1, -1) node[left] {-1} -- (0.1,-1);
    %
    %\draw[-] (-2, -0.1) node[below] {-2} -- (-2,0.1);
    %\draw[-] (-1, -0.1) node[below] {-1} -- (-1,0.1);
    %\draw[-] (1, -0.1) node[below ] {1} -- (1,0.1);
    %\draw[-] (2, -0.1) node[below] {2} -- (2,0.1);
    %\draw[-] (3, -0.1) node[below] {3} -- (3,0.1);
    %
    %
    %
    %\draw[->] (-2,0) -- (3.5,0) node[below] {$t$}; \draw[->] (0,-1.2) -- (0,1.2) node[above] {%$f_1 : 
    %Sprungfunktion
    %};
    % \draw[color=blue, domain=0:3, samples=50]   plot (\x,{1})   %node[right] {$f(x) = \sin (2\pi x)$} ;
    %
    %\end{tikzpicture}
    
    
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
    
    \begin{tikzpicture}
    %%%\draw[very thin,color=gray] (-0.1,-1.1) grid (6,1.0);
    %%\draw[-] (-0.1, 1) node[left] {1} -- (0.1,1);
    %%%\draw[-] (-0.1, -1) node[left] {-1} -- (0.1,-1);
    %%
    %%\draw[-] (-2, -0.1) node[below] {-2} -- (-2,0.1);
    %%\draw[-] (-1, -0.1) node[below] {-1} -- (-1,0.1);
    %%\draw[-] (1, -0.1) node[below ] {1} -- (1,0.1);
    %%\draw[-] (2, -0.1) node[below] {2} -- (2,0.1);
    %%\draw[-] (3, -0.1) node[below] {3} -- (3,0.1);
    %
    %
    %
    %
    \draw[->] (0,0) -- (5,0) node[below] {$Re$}; \draw[->] (2.5,-2.5) -- (2.5,2.5) node[above] {s-Ebene}; \draw[->] (2.5,-2.5) -- (2.5,2.5) node[right] {$Im$};
    \draw[->] (6,0) -- (11,0) node[below] {$Re$}; \draw[->] (8.5,-2.5) -- (8.5,2.5) node[above] {z-Ebene}; \draw[->] (8.5,-2.5) -- (8.5,2.5) node[right] {$Im$};
    %\draw[fill=red!20] (-2.5,0)--(2.5,5);
    \fill [fill=red!20, fill opacity=0.2] (0,-2.5)  rectangle  (2.5,2.5);
    \fill [fill=red!20, fill opacity=0.2] (8.5,0) circle[radius=1];
    \draw (9.5,-0.1) -- (9.5,0.1) node[below]{1};
    
    %[draw, fill=white!20, minimum size=3em]
    %% \draw[color=blue, domain=0:3, samples=50]   plot (\x,{1})   %node[right] {$f(x) = \sin (2\pi x)$} ;
    %
    \end{tikzpicture}