3 Scilab | |
→ | 3.17 Xcos |
Um das Konzept vorzustellen, wird hier ein Signalgenerator simuliert, der mit einem Oszilloskop verbunden ist.
In der Palette "Quellen" wählen wir das Element "GENSIN_f", dieses Element ist ein Generator für eine Sinusfunktion, siehe Abbildung oben.
Dieses Element ziehen wird in den Arbeitsbereich für unser zu modellierendes System.
In analoger Weise fügen wir aus der Palette "Senke" ein Element "CSCOPE" und aus der Palette "Ereignisbehandlung" ein Element "CLOCK_c" hinzu.
Wir wollen nun den Ausgang des Signalgenerators mit dem Eingang des Oszilloskopes verbinden. Der Signalgenerator-Ausgang wird durch die aus dem Block herauszeigende Pfeilspitze am rechten Rand symbolisiert, der Dateneingang des Oszilloskopes durch die in den Block hineinzeigende Pfeilspitze am linken Rand.
Bewegen wir den Mauszeiger über den Ausgang, wird der Ausgang grün umrandet.
Dies zeigt an, dass wir von diesem Anschluss ausgehend eine Verbindung herstellen können.
Wir klicken mit der Maus und ziehen die Maus etwas nach rechts. Durch das Ziehen mit der Maus wird eine Verbindungslinie erzeugt.
Die Maustaste kann nun losgelassen werden, das Ziehen der Verbindungslinie wird fortgesetzt. Bewegen wir die Maus nun über einen möglichen Anschlusspunkt, so wird wiederum durch eine Umrandung angezeigt, dass hier das Ziehen der Verbindung beendet werden kann.
Mit einem Mausklick wird die Verbindung fertiggestellt.
Mausklicks auf Punkte, die keine möglichen Endpunkte sind, erzeugen Knickpunkte.
Auf die gleiche Weise verbinden wir den unteren Aktivierungsausgang des CLOCK_c mit dem oberen Aktivierungseingang des CSCOPE.
Im Bild sehen wir zwei verschiedene Typen von Verbindungen:
Wir müssen nun noch Konfigurationseinstellungen an den
Block-Symbolen vornehmen. Ein Doppelklick auf ein Block-Symbol
öffnet die Dialogbox für die Einstellungen.
Für unser Beispiel nehmen wir folgende Einstellungen vor:
Mit dem Menüpunkt
Simulation | |
→ | Einstellungen |
werden Einstellungen für die Simulation vorgenommen:
Mit dem Menüeintrag
Simulation | |
→ | Starten |
oder dem Toolbar-Button "Start" wird die Simulation gestartet.
Die Simulation endet automatisch, wenn die finale Integrationszeit erreicht wurde. Für einen vorzeitigen Abbruch kann der "Stopp"-Button aus der Toolbar verwendet werden.
Im Ergebnis der Simulation wird die auf dem Oszilloskop erzeugte Kurve angezeigt.
Im Scilab-Hauptfenster führen wir die Anweisung
ampl = 0.8;
aus, um die Variable ampl anzulegen.
Mit einem Doppelklick auf das Sinusgenerator-Symbol öffnen wir
die Dialogbox zur Rekonfiguration.
Als "Magnitude:" tragen wir "ampl" ein.
Eine erneute Simulation zeigt, dass der jeweilige Wert von ampl als Amplitude verwendet wird. Bei jedem Start einer neuen Simulation wird der jeweilige Wert von ampl erneut abgefragt.
Mit dem Menüpunkt
Simulation | |
→ | Kontext setzen |
wird eine Dialogbox geöffnet, um den Simulationskontext zu
beeinflussen.
Wir tragen hier
ampl = 0.6;
ein.
Eine Simulation zeigt, dass jetzt dieser Wert für ampl verwendet wird. Änderungen an der Variable ampl im Scilab-Hauptfenster bleiben wirkungslos.
Werden in den Konfigurationseinstellungen Variablen verwendet,
sucht Xcos nach diesen Variablen zunächst im Simulationskontext des
aktuellen Arbeitsbereiches.
Wird die Variable hier nicht gefunden, wird die Suche in den
Kontexten der übergeordneten Arbeitsbereiche fortgesetzt, falls
vorhanden.
Zuletzt wird im globalen Kontext von Scilab gesucht.
Mit
Simulation | |
→ | Kontext setzen |
wird der bestehende Kontext modifiziert, nicht komplett neu aufgebaut. Alle von den Anweisungen in der Kontext-Setzen-Dialogbox nicht betroffenen Variablen behalten ihre Werte, sie werden nicht gelöscht.
Systeme können hierarchisch aufgebaut sein. Dabei werden im Gesamtsystem bzw. in hierarchisch "oben" angesiedelten Teilsystemen Hierarchie-Block-Symbole eingesetzt, jedem dieser Block-Symbole ist dann wieder ein Blockdiagramm hinterlegt, das in einem eigenen Arbeitsbereich geöffnet werden kann.
Im Beispiel wollen wir einen Hierarchie-Block verwenden, der für ein gegebenes Eingangssignal x(t) zwei Ausgangssignale liefert:
Der Hierarchieblock erhält sein Eingangssignal wiederum vom Signalgenerator, die Ausgangssignale werden wieder auf dem Oszilloskop dargestellt.
Wir platzieren zunächst den Signalgenerator GENSIN_f, ein Zweikanaloszilloskop CMSCOPE und einen Taktgenerator CLOCK_c für die Aktivierung des Oszilloskopes. Die Verbindung vom CLOCK_c zum Aktivierungseingang des CMSCOPE wird hergestellt.
Aus der Palette "Port & Subsystem" wird ein Block-Symbol SUPER_f in den Arbeitsbereich gezogen. Dieses Symbol besitzt zunächst einen Dateneingang und einen Datenausgang.
Mit einem Doppelklick auf das SUPER_f-Symbol öffnen wir einen
weiteren Arbeitsbereich, in dem wir dem SUPER_f-Symbol ein
Blockdiagramm hinterlegen können.
Hier sehen wir zunächst zwei Symbole, einen Eingangsport vom Typ
IN_f und einen Ausgangsport vom Typ OUT_f.
Beide haben den Zahlenwert 1 eingetragen.
Da unser hierarchischer Block zwei Ausgänge haben soll, ziehen
wir ein weiteres OUT_f-Symbol in den Arbeitsbereich.
Am Symbol blinkt ein Ausrufezeichen. Dies weist darauf hin, dass
die Ausgangs-Portnummer beider OUT_f-Symbole gleich ist, was nicht
sein darf. Wir doppelklicken das untere OUT_f-Symbol und
konfigurieren den Eintrag "Port number" zu "2".
Die Eigenschaft "Port number" gibt die Positionsnummer des
Ports am SUPER_f-Symbol an, gezählt von oben nach unten.
Aus der Palette "Zeitkontinuierliche Systeme" fügen wir ein Symbol DERIV für die Ableitung und aus der Palette "Mathematische Operationen" ein Symbol PROF_f für die Multiplikation hinzu. Anschließend werden die Verbindungen hergestellt.
Wird der Arbeitsbereich für das Teilsystem geschlossen, wird im
Hauptarbeitsbereich das Block-Symbol SUPER_f aktualisiert, es hat
jetzt zwei Ausgangspins.
Wir können nun auch in diesem Arbeitsbereich die Verbindungen
vervollständigen.
Für das CMSCOPE stellen wir als "Ymin vector" die Werte
"-8000 -8000" und als "Ymax vector" die Werte "8000 8000"
ein. Die Vektoren enthalten jeweils an erster Stelle den
entsprechenden Wert für Eingangsport 1, danach folgt der Wert für
Eingangsport 2.
Die "Refresh period" wird auf "5e-3 5e-3" gesetzt.
Für eine Simulation über 5 ms erhalten wir
Simulationsergebnisse wie in der Abbildung.
Signale können zu Vektoren zusammengefasst werden, dies
entspricht dem Zusammenfassen von Leitungen zu Bussen in
Elektronik-CAD-Programmen.
Zur Demonstration erweitern wir das vorangegangene Beispiel um je
ein MUX- und ein DEMUX-Symbol aus der Palette "Signal-Routing".
Die beiden Ausgänge des hierarchischen Blockes werden durch den MUX zu einem Vektor zusammengefasst. Durch den DEMUX wird der Vektor wieder in zwei einzelne Signale aufgesplittet, diese werden an das CMSCOPE-Symbol angeschlossen.
MUX und DEMUX entsprechen in ihrer Funktion nicht den aus der digitalen Schaltungstechnik bekannten Multiplexer und Demultiplexer (deutlich sichtbar an den nicht vorhandenen Adresseingängen) sonder eher den aus Elektronik-CAD-Programmen bekannten Bus-Rippern zum Anschließen einzelner Signale an einen Bus.
Die Anzahl an MUX-Eingängen bzw. DEMUX-Ausgängen ist konfigurierbar.
Wir entfernen nun den DEMUX und ersetzen das CMSCOPE durch ein CSCOPE. Der MUX-Ausgang wird direkt mit dem CSCOPE-Eingang verbunden.
Nachdem am CSCOPE eine Refreshzeit von 5 ms und ein Wertebereich -8000...8000 eingestellt wurde, erhalten wir Simulationsergebnisse wie in der Abbildung.
Wird ein Vektor an einen Oszilloskop-Eingang angeschlossen, werden alle Signale des Vektors im gleichen Diagramm gezeichnet.
In den bisherigen Beispielen dieses Abschnittes waren alle Blockschaltbilder Strukturbilder im Sinne der Systemtheorie. Die Blöcke sind dabei rückwirkungsfrei, d.h. Vorgänge innerhalb eines Blockes ändern das Eingangssignal nicht.
Xcos kann nicht nur mit Signalen umgehen, sondern auch mit
physikalischen (z.B. elektrischen) Größen und Bauelementen. Bei
diesen ist die Rückwirkungsfreiheit nicht gegeben.
Beinhaltet z.B. eine Teilschaltung eine Spannungsquelle mit
Innenwiderstand, so ist die Ausgangsschaltung der Teilschaltung von
den angeschlossenen Blöcken abhängig.
Zur Abgrenzung von "normalen" Signalen werden physikalische Größen, die als Signal interpretierbar sind, als implizite Signale bezeichnet.
In Blockschaltbildern muss genauu abgegrenzt werden, wo mit
physikalischen Größen gearbeitet wird und wo Signale entsprechend
der Systemtheorie verwendet werden.
Aus diesem Grund sind die impliziten Ein- und Ausgänge von
Block-Symbolen anders (quadratisch) gestaltet als die Ein- und
Ausgänge für normale Signale.
Zur Umwandlung impliziter Signale in normale Signale und umgekehrt
sind spezielle Block-Symbole vorgesehen (Sensoren und gesteuerte
Quellen).
Für die Schaltung in der obigen Abbildung wurden folgende Block-Symbole aus der Palette "Elektrisch" verwendet:
Beim Start der Simulation erscheinen zunächst Informationsfenster, die darauf hinweisen, dass implizite Signale verwendet werden und deshalb das Blockschaltbild für Lösung mit impliziten Signalen compiliert wird.
Hinzufügen eines weiteren Widerstandes
führt wie erwartet zu einem Absinken der gemessenen Spannung.