QT GUI Time Sink
Signale in Echtzeit im Zeitbereich darstellen — Number of Points, Autoscale und Multi-Signal-Konfiguration.
1. Beschreibung des Blocks
Der QT GUI Time Sink-Block (qtgui.time_sink_x) ist ein Ausgabe-Block, der ein oder mehrere Signale in Echtzeit im Zeitbereich anzeigt. Die Darstellung wird aus den gesampelten Werten zusammengesetzt — je mehr Samplepunkte je Bildschirmaktualisierung angezeigt werden, desto genauer (aber auch rechenintensiver) ist die Signaldarstellung.
In diesem Beispiel wurde ein 10-kHz-Signal (Periodendauer 0,1 ms) mit 10-facher Samplefrequenz abgetastet — im Signal sind daher 10 Punkte pro Periode enthalten:

2. Technischer Einsatz
Time Sink ist der Standardblock für die visuelle Kontrolle eines Signalverlaufs während der Entwicklung und Fehlersuche in einem Flowgraph — z. B. um zu prüfen, ob eine Filterstufe die erwartete Signalform liefert, oder um mehrere Signale (Original vs. verarbeitet) direkt übereinander zu vergleichen.
Number of Points = 22 zeigt die Darstellung daher etwas mehr als 2 Perioden — bei Number of Points = 20 (ein Vielfaches der Periodenlänge) erscheint dagegen ein optisch stehendes Signal. Eine zu hohe Anzahl an Points führt zu extrem hoher CPU-Belastung, da entsprechend viele Perioden gezeichnet werden müssen — vorab immer grob abschätzen, wie viele Perioden tatsächlich dargestellt werden sollen.
Mehrere Signale gleichzeitig darstellen (Number of Inputs): Möchte man mehrere Signale in einem Zeitfenster darstellen, kann man mehrere Eingänge auswählen. Im folgenden Beispiel werden ein 10-kHz- und ein 50-kHz-Signal gemeinsam dargestellt (Type = Float, um nur den reellen Signalanteil zu zeigen):

Number of Points wirkt dabei auf alle dargestellten Signale gleichermaßen — sollen z. B. 10 Perioden des 50-kHz-Signals sichtbar sein, ergeben sich für das 10-kHz-Signal gleichzeitig nur 2 Perioden (Number of Points = 20). Das 50-kHz-Signal besitzt bei einer Samplerate von 100 kHz dabei nur 2 Datenpunkte pro Periode — genau die Nyquist-Mindestzahl:

Verdoppelt man Abtastrate und Number of Points, ergibt sich eine deutlich bessere Darstellung, wenngleich noch kein „glattes" Rechtecksignal für die 50-kHz-Frequenz gezeigt wird. Das Signal enthält aber dennoch alle Informationen, die für die Weiterverarbeitung notwendig sind — die Darstellungsqualität ist unabhängig von der tatsächlich verfügbaren Signalinformation:

3. Parameter und Dimensionierung
| Parameter | Typ/Einheit | Bedeutung | Dimensionierungshinweis |
|---|---|---|---|
type (Type) |
Enum | Complex, Float, Complex Message, Float Message | Complex zeigt zwei Kurven (Re/Im) je Eingang, Float nur eine |
size (Number of Points) |
Integer | Anzahl der pro Bildschirmaktualisierung dargestellten Samples | Vielfaches der Periodenlänge für ein stehendes Bild wählen; zu groß → hohe CPU-Last |
srate (Sample Rate) |
Hz | Abtastrate des Eingangssignals, für die Zeitachsen-Skalierung | muss der tatsächlichen Flowgraph-Abtastrate entsprechen |
nconnections (Number of Inputs) |
Integer | Anzahl gleichzeitig darstellbarer Signale | max. 5 bei Complex, max. 10 bei Float (Block-Assert) |
autoscale (Autoscale) |
Bool | automatische Skalierung der Y-Achse | praktisch für unbekannte Signalpegel; für reproduzierbare Vergleiche besser feste ymin/ymax |
ymin / ymax (Y min/max) |
Float | feste Grenzen der Y-Achse | an den erwarteten Amplitudenbereich anpassen, wenn autoscale = No |
update_time (Update Period) |
Sekunden | Zeit zwischen zwei Bildschirmaktualisierungen | kleiner = flüssigere Darstellung, aber höhere GUI-Last |
grid (Grid) |
Bool | Gitternetzlinien | erleichtert das Ablesen konkreter Signalwerte |
CONFIG-Optionen je Eingang: Für jedes angeschlossene Signal lassen sich Bezeichnung (Label), Liniendicke, -farbe und -stil (durchgezogen, gepunktet, …) sowie ein optionaler Marker je Samplepunkt einzeln festlegen:

4. Ein- und Ausgänge
| Ein-/Ausgang | Typ | Anzahl |
|---|---|---|
| Eingang | Complex oder Float (je nach type) |
nconnections (1–5 bzw. 1–10) |
| Ausgang | keiner (reine Senke, GUI-Widget) | — |
5. Weitere wichtige Aspekte
Live-Parameteränderung: set_update_time(...), set_y_axis(...) und set_samp_rate(...) erlauben eine Anpassung zur Laufzeit; Trigger-Einstellungen (Modus, Flanke, Pegel) ermöglichen ein stabiles, nicht driftendes Bild ähnlich einem klassischen Oszilloskop.
Nur zur Anzeige, nicht zur Auswertung: Time Sink liefert keine auswertbaren Daten an nachfolgende Blöcke — für automatisierte, assert-basierte Prüfungen von Signalverläufen ist stattdessen die in Testen mit GRC beschriebene headless-Methodik (Vector Sink + Python-Auswertung) der richtige Ansatz.
