|
|
Signalschleifen mit Anfangswert und Zähler |
|
Pat87 |
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 01.09.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2016b
|
|
|
|
|
|
Verfasst am: 01.09.2015, 10:21
Titel: Signalschleifen mit Anfangswert und Zähler
|
|
|
|
|
Hallo,
nachdem mich dieses Forum unzählige Male bei meiner Schwerpunktarbeit geholfen hat, will ich die letzten Probleme beseitigen und hab mich deshalb angemeldet, denn ich betrachte mich noch als Anfänger ^^
Meine Schwerpunktarbeit handelt über eine Simulation eines Verbrennungsmotors.
Ich versuche mal die Probleme so gut es geht allgemein zu schildern.
Aus einem festen Parameter (Drehzahl/Winkelgeschwindigkeit) soll ein Signal (Kurbelwinkel) mit einem Anfangswert (180°) generiert werden.
Funktionierte erstmal mit dem Integrator super, allerdings soll das Signal nur bis 720° gehen und dann von vorne beginnen (ähnlich Sägezahn) ohne den Anfangswert (also bei 0°).
Ich habe es schon mit Signal Builder und Repeating Sequence probiert ohne Erfolg.
Ich habe das Signal aus mehreren Blöcken mal zusammen gebastelt, sieht aber nicht schön aus und man muss feature('ModeIterationsInAlgLoops',0) aktivieren.
Gibt es nicht eine schöne elegante Lösung?
Vielen Dank schon mal!
Beschreibung: |
|
Download |
Dateiname: |
Motor31.slx |
Dateigröße: |
14.87 KB |
Heruntergeladen: |
487 mal |
|
|
|
|
|
Pat87 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 01.09.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2016b
|
|
|
|
|
|
Verfasst am: 01.09.2015, 10:34
Titel:
|
|
Ach ja, ich hatte noch vergessen zu erwähnen,
dass die Durchläufe (immer wenn 720° erreicht ist) gezählt werden sollen.
Ich würde nämlich die Werte von Simulink nach z.b. 5. Durchgang plotten,
wäre das vielleicht mit einem Switch oder so machbar?
|
|
|
Winkow |
Moderator
|
|
Beiträge: 3.842
|
|
|
|
Anmeldedatum: 04.11.11
|
|
|
|
Wohnort: Dresden
|
|
|
|
Version: R2014a 2015a
|
|
|
|
|
|
Verfasst am: 01.09.2015, 11:34
Titel:
|
|
hmm kenn mich in simulink nicht so gut aus aber ich muss da irgendwie an
mod
denken. vielleicht kann man das als matlabfct einbaun
grüße
_________________
richtig Fragen
|
|
|
Pat87 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 01.09.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2016b
|
|
|
|
|
|
Verfasst am: 01.09.2015, 12:03
Titel:
|
|
Mit mod kann man doch sowohl ganzzahlig durch die Zahl teilen
als auch den Rest ausgeben lassen (z.b 13 / 3 = 4 Rest 1) ??
Hab den Befehl nicht mehr so in Erinnerung, aber wenn das stimmt,
könnte ich die Durchgänge zählen und sogar die Restwerte zur Steuerung verwenden,
z.b. Zündung bei 380° mit mod durch 360 teilen (=1 -> erste Umdrehung) und Rest
(20 -> bei 20° zünden).
Das könnte die elegante Lösung sein, die ich gesucht habe, Danke für Tipp^^
probiere ich mal heut Abend aus
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.09.2015, 13:35
Titel:
|
|
Guck Dir doch mal
wrapTo360
an.
Ein klassischer Fehler, den Du vermeiden solltest: Du willst nicht von 720° auf 0° zurücksetzen, sondern auf "aktueller Winkel - 720°". Sonst machst Du bei jedem Umbruch einen kleinen Fehler, weil der exakte Vergleich Winkel == 720° in der Regel fehlschlägt und der Winkel tatsächlich schon etwas größer als 720° ist. Setzt man dann auf 0° zurück, macht man einen kleinen Hüpfer zurück.
Nachtrag: so, wie Du es im Modell hast, macht man es eigentlich auch. Nur dass man nicht den Ausgang zurück führt, sondern im Integrator-Block den State-Port aktiviert und den auf den Reset zurückkoppelt. Steht auch in der Hilfe und sieht bei Dir dann so aus:
Die 180° Anfangsverdrehung stehen in dem IC-Block drin, den findest Du in der Signal Attributes-Bibliothek.
Beschreibung: |
|
Download |
Dateiname: |
integrator.PNG |
Dateigröße: |
51.3 KB |
Heruntergeladen: |
498 mal |
|
|
|
Pat87 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 01.09.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2016b
|
|
|
|
|
|
Verfasst am: 01.09.2015, 18:45
Titel:
|
|
Vielen Dank,
hat wunderbar geklappt und sieht auch besser aus und ohne den feature Kram. ^^
Mit Signal Attributes hatte ich bisher noch nie zu tun, wieder eine Ecke zum beschäftigen
Stimmt das ==720 hat auch nie wirklich geklappt
Meintest du mit wrapto360 eine matlab fcn zu bauen, um so das Signal bis 360° zu begrenzen?
Auch ne nette Idee, allerdings muss mein Signal bis 720° gehen und
ich versuche Matlab fcn allgemein zu umgehen, da schon eine handvoll viel Zeit kosten.
Ich muss später viele Simulationen hintereinander durchspielen (Anpassung an einem realen Motor).
Hättest du noch ein Tipp, wie ich die Peaks möglichst ohne fcn zählen könnte?
Glaube, bei fcn hieß der Befehl findpeaks, wenn ich mich nicht irre.
Will die Daten, wie zb Druck, erst nach dem 3. Durchgang oder so plotten, wenn das System eingependelt ist, hoffe das ist möglich, aber dazu später ^^
Aber nochmals Danke!!
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.09.2015, 19:44
Titel:
|
|
Ja, Matlab-Functions sind leider langsam. Das wrapTo360 wäre die Alternative zum rückgekoppelten Integrator gewesen und dann auch in einer Matlab-Function gestanden.
Durchgänge Zählen ohne Matlab-Function ist schwer. Es gibt glaube ich in der DSP-Toolbox einen Counter-Block, keine Ahnung, wie schnell der so ist.
Alternativ musst Du ja nicht unbedingt die Umbrüche zählen sondern kannst ja einfach mit einem zweiten Integrator die Drehzahl integrieren, ohne irgendein Zurücksetzen und wenn der Integrator dann bei (5*720-180)° steht, hast Du die 5 Umdrehungen. Das kostet kaum Rechenzeit und funktioniert auch...
EDIT: Im Integrator musst Du noch den Haken bei "Limit output" wegmachen. Die Begrenzung passiert ja automatisch durch die äußere Beschaltung.
|
|
|
Pat87 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 01.09.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2016b
|
|
|
|
|
|
Verfasst am: 02.09.2015, 21:50
Titel:
|
|
In der DSP Box den Counter-, Peakfinder- und Maximum-Block haben leider nicht funktioniert, aber ich hab das mit einem 2. Integrator erledigt.
Wenn du mir jetzt noch verraten könntest, wie ich ab der n-Wiederholung die Daten mit to workspace oder im xy-Plot bekomme, ohne das er vorherige Werte mit einbezieht,
hättest du erstmal wieder Ruhe vor mir
Hab das erstmal mit einem Switch probiert, sieht im Diagramm auch gut aus, da ich ja beide Werte (phi und zb Druck) darüber steuer,
nur zieht er noch am Anfang und am Ende irgendwelche Linien, die nicht so schön auf dem Diagramm sind.
Wenn ich nur den Druck über Switch steuer, kommt nichts vernünftiges.
Also irgendwie die vorherigen Werte überschreiben, diesmal akzeptiere ich auch ne fcn, weil ich da echt keine Idee habe,
hätte das bei einem anderen Model auch gebraucht, also ich probiere das schön länger...
Beschreibung: |
|
Download |
Dateiname: |
Druckverlauf.png |
Dateigröße: |
17.14 KB |
Heruntergeladen: |
470 mal |
|
|
|
Pat87 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 01.09.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2016b
|
|
|
|
|
|
Verfasst am: 06.09.2015, 12:39
Titel:
|
|
Ich vermute, das das ganze mit Simulink Blöcken gar nicht geht, sondern eher in Richtung Programmierung geht.
Ich werde das als neue Frage formulieren, da das ein anderes Problem ist als im Titel.
Vielen Dank nochmal für die schnelle Hilfe !!
|
|
|
|
|
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.
|
|