WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Subsystem Parallel laufen lassen

 

SmokingAce
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 13.02.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.03.2015, 16:30     Titel: Subsystem Parallel laufen lassen
  Antworten mit Zitat      
Hallo zusammen,

ist es möglich in Simulink 2 Subsysteme Parallel laufen zu lassen?

Ich möchte die Bewegung eines Körpers darstellen. Die Differentialgleichung und das passende Simulink-Schaltbild sind kein Problem. Allerdings möchte ich das System bzw. Subsystem parallel laufen lassen.

Also während das Subsystem läuft, möchte ich das Subsystem nochmal Starten um die Bewegung erneut darzustellen. Ich möchte die Subsysteme nicht nacheinander Starten sondern zeitlgleich laufen lassen. Die danach startenden Subsysteme sollen die davor laufenden nicht beinflussen.

Als Beispiel: Ein Element wird auf einem Förderband transportiert. Die Anzahl der Elemente gebe ich vorher in einem veränderbaren Array ein. Die Ablaufsteuerung regelt dann wie die Elemente auf das Förderband gelangen. Allerdings müsste ich dafür das Subsystem x-mal kopieren und wenn es zb tausend elemente sind, müsste ich tausend mal vorher das Subsystem implementieren. Daher suche ich einen weg das Subsystem mehrfach laufen zu lassen, da auch mehrere Elemente auf dem Förderband liegen können.

Danke im Vorraus
Private Nachricht senden Benutzer-Profile anzeigen


rien

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2015, 11:05     Titel:
  Antworten mit Zitat      
Mir ist nicht so ganz klar was du willst, wenn dein Problem nur das Erstellen des Modells ist, kannst du ein Skript schreiben welches dir automatisch deine Subsysteme einfügt.
(for Schlaufe zum erzeugen den Subsystems und entsprechender Verbindungen)

Was meinst du mit mehrmals laufen lassen? Du hast auf ein "Objekt" spezifische Werte welche verarbeitet werden und aus irgendeiner Quelle kommen.
Möchtest du jetzt mehrere Quellen parallel in dein Subsystem einspeisen?
---> Mux?
 
SmokingAce
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 13.02.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.03.2015, 11:47     Titel:
  Antworten mit Zitat      
Danke zunächst einmal für deine Antwort.

Es geht um folgendes:

Es können beliebig viele Objekte auf das Förderband gelangen. Die Anzahl wird vor starten der Simulation festgelegt. Das Objekt wird später auch vom Förderband runtergestoßen. Wie das abläuft ist für mein Problem erst einmal egal.

Ich kann jetzt den Ablauf vom Objekt auf dem Förderband bis hin zum hinunterstoßen für ein Objekt darstellen. Es gibt 3 verschiedene Objekte, die zu untertschiedlichen Streckenwerten ausgestoßen werden. Ist auch kein Problem das mit Stateflow zu regeln.

Mein Großes problem ist jetzt, wenn es x Objekte werde, da ich den Weg für jedes Objekt dargestellt haben muss. Das hieße ja das ich x-Subsysteme vorher einfügen muss. Daher meine Frage ob ich ein Subsystem quasi mehrmals starten kann, und es sozusagen im hintergrund läuft.

Beispiel: Subsystem wird gestartet. Während Objekt auf Förderband gelangt ein 2tes Objekt aufs Förderband. Das erste Objekt soll noch laufen bis es runtergestoßen wird. Das 2te Objekt läuft aber währendessen Parallel. Beide Objekte haben dieselben Bewegungsgleichungen.

Mit einem Skript habe ich noch nicht gearbeitet. Meinst du das ich vorher in das Script die Anzahl eingebe und das Script dann so ausgeführt wird, dass die Modelle in das System eingefügt werden?
Private Nachricht senden Benutzer-Profile anzeigen
 
rien

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2015, 17:40     Titel:
  Antworten mit Zitat      
Nunja, du könntest deine Objekte durch einen Impuls "erzeugen", heisst du erzeugst einen Impuls entsprechend deiner Zuführung, machst eine geschlossene Schlaufe über deiner Übertragungsfunktion und resetest diese sobald das Objekt den gewünschten Weg erreicht hat.

Nachteil hierbei ist, dass wenn die Objekte schneller aufs Laufband kommen als du resetest (also sie vom Laufband gehen) du trotzdem mehrere parallele Signale brauchst.
Aber Gegesatz zum automatischen x-fachen erzeugen deines Modells hättest du damit nur noch maximal soviele parallel zu erzeugende Modelle wie du gleichzeitig auf deinem Laufband haben kannst.
Die Auswertung und Unterscheidbarkeit der Objekte, vor allem bei verschiedenen Objekten, ist hierbei aber imho mies. Respektive wäre die einzige Möglichkeit welche mir einfällt eine Unterscheidung der Objekte durch anpassen des Impules (anstatt 1*1s, 2*0.5s z.B), ist aber gelinde gesagt mühsam.

Alternativ könntest du auch eine S-Funktion programmieren welche Arrays erzeugt, in welchen die einzelnen Objekte spezifiziert sind.
Heisst: in welchem deren aktuelle Position, Art und deren Zustand (noch auf Förderband, nicht mehr auf Förderband) erfasst und geändert wird.
Wie du das konkret machen kannst kann ich dir nicht auf die schnelle sagen, das kommt sowohl stark auf deine konkrete Problemstellung, als auch darauf was du auswerten willst an.

Ich an deiner Stelle würde ein Skript schreiben, welches deine Simulink Simulation für jedes der X-Objekte aufruft, und im Model per Simout das Verhalten ausgeben lassen. Da du den zeitlichen Versatz der Objekteingabe kennst, musst du nur aus den Modellergebnissen Matrizen zusammenstellen und diese Matrizen zusammenführen.
Dann kannst du bequem mit Schleifen arbeiten, welche auf deine Individuellen Inputs abgestimmt sind.
Hierbei musst du aber unbedingt deine Step-Size auf fixed setzten, um die Matrizen zusammensetzten zu können, du kannst dies zwar auch lassen, aber dann musst du deine Matrizen vor dem zusammenfügen mit cat, entsprechend erweitern oder kürzen was weit aufwändiger ist als das setzten einer fixen Step-Size.

In Simulink selbst kann man solche Sachen wie schon erwähnt auch direkt machen, aber du musst halt die entsprechenden Grössen aus den Matrizen lesen und wieder einpflegen über selbstgeschriebene Funktionen. Sinnvoll ist dies, wenn es sich den wirklich um ein Förderband handelt, kaum.
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.