|
|
Triggered Subsystems in loop/Schleife |
|
Rev |
Forum-Anfänger
|
|
Beiträge: 31
|
|
|
|
Anmeldedatum: 02.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: MATLAB R2010b
|
|
|
|
|
|
Verfasst am: 14.02.2013, 15:26
Titel: Triggered Subsystems in loop/Schleife
|
|
|
|
|
Hallo alle zusammen,
leider bin ich in Simulink noch nicht sonderlich erfahren und stolper deshalb von einem Problemchen in das nächste. Bisher konnte ich die meisten Sachen selber klären, aber nun gehen mir solangsam die Ideen aus. Ich habe folgendes Problem:
Zur Zeit habe ich ein System von 2 Uhren die unterschiedlich schnell auf unterschiedlich schnellen Prozessoren laufen. Diese Prozessoren werden durch ein "Triggered Subsystem" dargestellt, die den Output der anderen Uhr als Input verwenden. Als 2. Input habe ich dann noch eine Zählung, die allerdings kein Problem darstellen sollte. Problem ist nun, dass ich wie schon gesagt 2 Triggered Subsystems in einem Kreis zusammengeschaltet habe. Das ist allerdings notwendig, weil das Subsystem 1 Informationen von 2 benötigt und anders rum.
Nun meldet sich Simulink und meint, dass diese Schleife nicht lösbar ist bzw. nicht so sein darf.
Hat einer von euch vllt. etwas Erfahrung mit den "Triggered Subsystems" und dem Thema Schleifen und weis, was für Alternativen es gibt bzw. wie ich das Problem zumindest entschärfen kann?
Wäre super, wenn mir jemand nen Tipp geben könnte, weil ich das für meine Studienarbeit benötige und gerade ziemlich auf dem Trockenen sitze.
Gruß Chris
|
|
|
|
|
Tobias.S |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.02.2013, 16:25
Titel: Antwort Loop
|
|
Hallo Chris,
sofern ich das richtig verstanden habe, bildest du eine algebraische Schleife. Da durch den Trigger ein Block nicht mehr als ein mal ausgeführt werden kann, kann die Schleife nicht gelöst werden. Ein Delay sollte helfen, um die Schleife zu unterbrechen.
Gruß Tobias
|
|
|
Rev |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 31
|
|
|
|
Anmeldedatum: 02.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: MATLAB R2010b
|
|
|
|
|
|
Verfasst am: 15.02.2013, 18:34
Titel:
|
|
Hi Tobi,
danke für deine Antwort . Das hatte ich mir auch überlegt, allerdings versetze ich dann doch meine Signale um einen Zeitschritt oder?
|
|
|
Tobias.S |
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 15.02.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.02.2013, 19:51
Titel:
|
|
Das ist richtig, der Delay Block speichert den Wert des letzten Zeitschritts.
Ich kenn dein System nicht, aber ich vermute du willst die Prozesse synchronisieren. Ich fürchte in einer technischen Umsetzung wärst du ebenfalls darauf angewiesen, im aktuellen Berechnungsschritt den letzten Zeitwert des jeweils anderen Prozessors einzulesen.
Sofern du dein dt kennst, könntest du das auch korrigieren.
Gruß Tobias
|
|
|
Rev |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 31
|
|
|
|
Anmeldedatum: 02.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: MATLAB R2010b
|
|
|
|
|
|
Verfasst am: 16.02.2013, 10:17
Titel:
|
|
Ja, das stimmt sogar.. Ich möchte um genau zu sein eine Anzahl von Clocks (also Uhren) synchronisieren. Diese Uhren sollen auf unterschiedlich schnellen Prozessoren laufen, die einen update-Schritt ausführen sobald in diesem Netzwerk an Uhren alle Uhren j aus der Nachbarschaft einer Uhr i ihren aktuellen Status gesendet haben.
Der letzte Teil ist allerdings nicht relevant für mein Problem, deshalb:
Inwiefern meinst du könnte ich das mit dem Zeitschritt korrigieren. Matlab kann ich ja nicht austricksen, indem ich sage, es soll die Werte des vergangenen Zeitschritts verwenden und dann versuchen doch wieder die aktuellen Werte zu nehmen.... Also zumindest fehlen mir da gerade doch etwas die Ideen, wie ich das korrigieren könnte.
Gruß Chris
|
|
|
Tobias.S |
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 15.02.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.02.2013, 12:20
Titel:
|
|
Ich erklärs mal so...
Du hast zwei Uhren. Eine Uhr wird aktualisiert, wenn die andere als Update auf ein gesetzt ist. Uhr eins aktualisiert im Zeitschritt k. Dies führt dazu, dass Uhr 2 im Zeitschritt k aktualisert. Nun wiederum würdest du im selben Zeitschritt wieder Uhr 1 synchronisieren wollen? Quasi zu sich selbst? Ich fürchte, das wird schwer. Wie gesagt, in der Technik hättest du auch einen Versatz (schon allein durch die Kommunikation). Sofern du die Simlationsschrittweite niedrig einstellst dürfte das doch aber kein großes Problem sein oder?
Die Korrekktur wäre über Extrapolation der Zeitschritte möglich, aber wahrscheinlich nicht sehr elegant.
Gruß Tobias
|
|
|
Rev |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 31
|
|
|
|
Anmeldedatum: 02.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: MATLAB R2010b
|
|
|
|
|
|
Verfasst am: 18.02.2013, 09:49
Titel:
|
|
Hallo Tobi,
ok, dann habe ich dich doch richtig verstanden . Ja Extrapolation ist denke ich nicht unbedingt notwendig. Ich werde das mal mit meinem Betreuer besprechen, insofern der in Australien überhaupt zu erreichen ist -.-.
Vielen Dank auf jeden Fall für deine Antworten.
Gruß Chris
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|