Was ist ein Timing-Diagramm?
Ein Timing-Diagramm ist ein spezialisiertes Verhaltens-UML-Diagramm , das die genaue Dauer von Zuständen und die präzisen Bedingungen, unter denen diese Zustände entlang einer linearen Zeitleiste wechseln, visualisieren soll. Als wesentlicher Bestandteil der Unified Modeling Language (UML)-Spezifikation konzentriert sich dieses spezifische UML-Diagramm-Typ legt großen Wert auf starre Zeitbeschränkungen, Taktrunden und Wellensignale. Es verfolgt Wellenformen oder Stufenlinien, um genau darzustellen, wie lange ein Objekt in einem bestimmten Zustand verbleibt, bevor ein externer Auslöser seinen Zustand ändert.
Timing-Karten werden weithin von eingebetteten Systemingenieuren, Netzwerkprotokollentwicklern und Hardwarearchitekten verwendet, um Rennbedingungen zu modellieren, Änderungen im Lebenszyklus von Threads zu verfolgen oder Übergänge in Hardware-Register abzubilden. Mit VPasCode, müssen Sie keine Pixelbreiten manuell berechnen oder Zeitleitkoordinaten abbilden. Unser Rendering-Engine verarbeitet das gesamte zeitliche Raster automatisch basierend auf Ihren Text-Skripten.
Grundlagen-Syntax-Leitfaden: Elemente und Konstrukte
Um ein genaues, standardskonformes UML-Timing-Diagramm in PlantUML zu erstellen, müssen Sie die Teilnehmerarten, Zustandsdefinitionen, Zeitintervalle und Synchronisationsbeschränkungen beherrschen.
1. Deklaration von Teilnehmern (Robust vs. Kompakt)
Sie können Zeitleisten mit zwei unterschiedlichen visuellen Stilen modellieren, abhängig davon, wie viel Detail Ihr System erfordert. Sie müssen sie mit expliziten Schlüsselwörtern deklarieren:
- Robuste Zeitleisten: Zeigt Zustände als unterschiedliche, übereinander gestapelte Zeilen an. Ideal für hochlevelige Softwareprozesse.
robust "Anwendungs-Thread" als Thread - Kompakte Zeitleisten: Zeigt Zustände entlang einer einzigen flachen Linie an und verwendet schraffierte Blöcke, um Änderungen anzuzeigen. Perfekt für kompakte Hardware-Signalkarten.
kompakt "CPU-Register" als Reg
2. Definition von Zustandsübergängen und Zeitintervallen
Im Gegensatz zu anderen Diagrammen ändern Sie Zustände, indem Sie einen Zeitpunkt mithilfe des @ Symbols deklarieren, auf Ihren Teilnehmer verweisen und das is Schlüsselwort verwenden. Zustandsnamen, die Leerzeichen oder Sonderzeichen enthalten, müssen in Anführungszeichen gesetzt werden:
@0
Thread ist Leerlauf
@10
Thread ist "Daten verarbeiten"
3. Generierung von Taktsignalen
Um binäre Hardware-Uhren zu simulieren, verwenden Sie das clockSchlüsselwort. Sie müssen eine Zyklusperiode, einen optionalen Tastverhältnis und einen internen Namen angeben:
clock "System Clock" als CLK mit Periode 2
4. Hinzufügen von Präzisionsbeschränkungen und Zeitplänen
Um strenge Ausführungsfristen zu dokumentieren (z. B. sicherzustellen, dass ein Systemübergang innerhalb eines bestimmten Zeitfensters erfolgt), verwenden Sie die <->Syntax, um zwei Zeitkoordinaten mit einer beschreibenden Bezeichnung zu verbinden:
@10 <-> @40 : {Weniger als 30ms}
Best Practices für saubere Zeitverläufe
- Halten Sie Zeiteinheiten einheitlich:PlantUML behandelt Zeitstrahl-Integers als generische sequenzielle Schritte. Wählen Sie eine einheitliche Zeiteinheit für Ihr Projekt (z. B. Takte, Mikrosekunden oder Sekunden) und halten Sie sie konsistent ein.
- Verwenden Sie Bezeichnungen für komplexe Übergänge: Sie können Textnachrichten direkt an Zustandsänderungen anhängen, indem Sie sofort nach der Zustandszuweisung einen Doppelpunkt hinzufügen (z. B.
@10nReg ist Lesen : "Interrupt auslösen"). - Deklarationen strategisch anordnen:PlantUML stapelt Lebenslinien vertikal in genau der Reihenfolge, in der sie in Ihrem Skript deklariert sind. Stellen Sie immer Ihre Master-Uhren ganz nach oben, um eine einfachere Ausrichtung zu ermöglichen.
Realitätsnahe PlantUML-Zeitdiagramm-Beispiele
Beispiel 1: Mikrocontroller-Cache und Registerzustände (Kompakt und Taktsignale)
Dieser ausführbare Bauplan zeigt einen klassischen Zeitverlauf der eingebetteten Hardware-Entwicklung, bei dem eine Standard-Systemuhr neben einem kompakten Datenspeicher-Register läuft, das Hardware-Zustände verfolgt.
@startuml
clock "System Clock (CLK)" als clk mit Periode 2
concise "Datenbus-Register" als Reg
@0
Reg ist leer
@2
Reg ist Lesen : "Holen"
@6
Reg ist Schreiben
@10
Reg ist Gesperrt
@14
Reg ist leer
@enduml 
Syntax-Aufschlüsselung: Die clockAnweisung erzeugt automatisch eine rhythmische Hoch-/Niedrig-Rechteckwelle. Das RegZeile verarbeitet mehrere Zustandszuweisungen sequenziell über das absolute Zeitachsenraster. Textzeichenfolgen, die mit einem Doppelpunkt versehen sind (wie : "Holen") werden als saubere Hervorhebungen direkt über der Übergangsgrenzlinie dargestellt.
Beispiel 2: Asynchrone Aktualisierung des Web-Consumer-Tokens (robuste Mehrfach-Thread-Beschränkungen)
Dieses erweiterte, voll funktionsfähiges Software-Architektur-Blueprint nutzt das robuste Layoutformat, um einen mehrfach-threadbasierten Webanwendungsablauf nachzuverfolgen und präzise Zeitfenster zwischen einem Web-Client und einem Autorisierungsarbeiter festzulegen.
@startuml
robust "Web-Browser-Client" als Web
robust "Auth-Token-Arbeiter" als Auth
@0
Web ist inaktiv
Auth ist schlafend
@5
Web wartet auf Token
Auth überprüft
@15
Auth generiert
@15 <-> @25 : {Generierungszeitfenster}
@25
Auth ist schlafend
Web rendert Seite
@40
Web ist inaktiv
@enduml 
Syntax-Aufschlüsselung: Durch die Verwendung der robustDeklaration werden die Zustände sauber auf der Y-Achse für jede einzelne Lebenslinie aufgelistet. Die Zeitbewertungsbeschränkung (@15 <-> @25 : {Generierungszeitfenster}) zeichnet einen standardmäßigen doppelseitigen Maßpfeil über der oberen Kante des Zeitachsenrasters, was eine strenge operativen Beschränkung anzeigt.