|
|
Daten zwischen den Blöcken tauschen |
|
SimRookie |
Forum-Anfänger
|
|
Beiträge: 27
|
|
|
|
Anmeldedatum: 07.01.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2007b
|
|
|
|
|
|
Verfasst am: 15.01.2010, 14:27
Titel: Daten zwischen den Blöcken tauschen
|
|
Hallo Simulink Profis,
ich sitze an einer S-Funktion, die ein Wert in einer globalen Variablen (z.Bspl.: Status) speichern soll. Auf diese globale Variable soll aus einer anderen S-Funktion während der Simulation zugegriefen werden. Kann mir einer sagen ob das überhaupt geht ohne den WorkSpace und ohne .m-files???
Wenn ja könnte mir vielleicht derjenige ein Ansatz erläutern.
Danke im Voraus
SimRookie
PS.: Die beiden S-Funktionen sind zwar im Selben Model haben aber keine direkte Verbindung.
Danke
|
|
|
|
|
Titus |
Forum-Meister
|
|
Beiträge: 871
|
|
|
|
Anmeldedatum: 19.07.07
|
|
|
|
Wohnort: Aachen
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.01.2010, 09:24
Titel:
|
|
Hallo,
wie wäre es mit folgendem workaround: den Ausgang der einen S-function mit einem Goto verbinden, und das Signal mit einem From-Block für die andere S-Function wieder auffangen?
Ciao,
Titus
|
|
|
SimRookie |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 27
|
|
|
|
Anmeldedatum: 07.01.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2007b
|
|
|
|
|
|
Verfasst am: 18.01.2010, 20:40
Titel:
|
|
Hallo Titus,
danke für die Antwort. Das ist eine Möglichkeit, leider ist das Modell ziemlich groß und in viele Subsysteme unterteilt, aus diesem Grund wäre die Lösung mit From Goto ziemlich unübersichtlich da die S-Funktionen im Modell auch verteilt werden. Meine Vorstellung ging in die Richtung persistente globale Variablen, leider sind ssMakeVariablePersistent(), oder so ähnlich, nicht mit dem RTW kompatibel. Es gibt wohl eine Möglichkeit mit mxCalloc() und mxMalloc() aber da mxFunktionen den Speicher nur für diese eine S-Funktion reservieren, muss der Speicher in mdlTerminate() wieder freigeben werden und ist somit doch nicht global.
Worum mir es in erster Linie geht, wie mache ich der S-Funktion klar dass globale Variablen exestieren?
Falls du oder Sie eine Idee hast/haben wäre das sehr hilfreich.
Danke
SimRookie
|
|
|
Titus |
Forum-Meister
|
|
Beiträge: 871
|
|
|
|
Anmeldedatum: 19.07.07
|
|
|
|
Wohnort: Aachen
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.01.2010, 11:28
Titel:
|
|
Hallo,
wenn beide S-Functions die selbe sind (also gleiche .c-Datei), dann könntest Du eine globale Variable anlegen (also auf Dateiebene). Diese ist dann physikalisch für die .mexw32-Datei (die dll) nur einmal vorhanden, d.h., alle S-function-Blöcke, die diese verwenden, verwenden die gleiche globale Variable.
Wenn Du zwei S-Functions hast, kannst Du sie zu einer zusammenpacken, in dem Du einen Parameter übergibst (1/2) z.B. für 1./2. S-Function. An den ensprechenden Stellen kannst Du dann mit
ensprechend verzweigen.
Ciao,
Titus
|
|
|
SimRookie |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 27
|
|
|
|
Anmeldedatum: 07.01.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2007b
|
|
|
|
|
|
Verfasst am: 26.11.2010, 14:27
Titel:
|
|
|
|
|
Hallo Leute,
mus dieses Tread noch mal aufgreifen. Hat jemand eine Idee ob man eine Art Server für Blöcke in Simulink realisieren kann.
Ich prezisiere:
Daten sollen ausserhalb des Systems gespeichert werden. Der Code für das System wird aus Simulink mit RTW erzeugt. Als Ausgang dient ein bideriktionaler Speicher auf den mittels S-Funktionen zugegrifen wird. Die Einschränkung dabei ist, dass der Speicher begrenzt ist und darum lautet das Ziel des Ganzen, über einen festen Bereich in diesem Speicher (was als Tor nach außen dienen soll) Daten rauszubekommen. Zur diesem Zweck soll ein Block benutzt werden, der mehrmals im Modell vorhanden sein kann und an ihn übergebenen Datensatz über das Tor nach Außen schafft.
Ich zerbreche mir schon seit Tagen den Kopf, wie ich es realisieren soll und bin bei Server und Clients stehen geblieben. Ein Block soll quasi als Server dienen und die Daten in den Speicher schreiben. Die Daten sollen mittels einen Client-Blocks von überall aus dem Modell zu dem Server gelangen. Und dazu wird ein verbindungsloser Datentausch zwischen den Blöcken benötigt. Der ist mir überhaupt nicht klar.
Jetzt Frage ich mich ob es gehen würde, falls ja hat jemand ein Rat wie? Grobe Richtung ist völlig ausreichend.
Danke euch.
SimRookie
|
|
|
|
|
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.
|
|