|
|
Komisches Verhalten bei Kombination von Memory+MinMax-Blöck |
|
Patrickk90 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.10.2014, 14:11
Titel: Komisches Verhalten bei Kombination von Memory+MinMax-Blöck
|
|
|
|
|
Hallo zusammen,
meine Kollegen und ich sind am verzweifeln:
Ich habe ein Simulink-Modell (siehe Bilder), welches aus 2 Vektoren aus dem Workspace einen MinMax-Wert bildet. Ein anderer Teil des Modells verzögert eine Konstante 1 um 2 Integrationsschritte.
Leider wird die Konstante nicht immer um 2 Integrationsschritte verzögert.
Durch stundenlanges Rumprobieren konnte ich jetzt folgende Zusammenhänge feststellen, die für mich unerklärbar sind:
- Ist Index 2 von y1 kleiner als y2, dann funktioniert der zweite Memory-Block nicht. (Also meine Konstante wird lediglich um 1 verzögert)
- Ist Index 2 von y1 größer als y2 (z.B 101 ), dann wird meine Konstante korrekt um zwei Zeitschritte verzögert im Scope angezeigt.
- wenn statt des Min-Blocks ein Max-Block verwendet wird, verhält es sich genau umgekehrt
- andere Indizes von y1 bzw y2 sind irrelevant. Die Funktion der Memory Blöcke hängt nur vom Verhältnis der beiden zweiten Indizes ab. (also y1[2] und y2[2])
Die Simulation wird durch folgenden Befehl gestartet:
Als Solvereinstellung verwende ich Discrete/Variable Step
Da ich nicht an Spuk und Geister glaube, muss es wohl eine vernünftige Erklärung für das Verhalten geben
Beschreibung: |
|
Download |
Dateiname: |
workspace.PNG |
Dateigröße: |
7.82 KB |
Heruntergeladen: |
408 mal |
Beschreibung: |
|
Download |
Dateiname: |
scope.PNG |
Dateigröße: |
28.11 KB |
Heruntergeladen: |
454 mal |
Beschreibung: |
|
Download |
Dateiname: |
modell.PNG |
Dateigröße: |
37.09 KB |
Heruntergeladen: |
452 mal |
|
|
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 13.10.2014, 15:12
Titel:
|
|
Meine Theorie ist ein Zusammenhang mit Schrittweiten und, dass beide Memory Blöcke schon tun was sie sollen, aber ein Step unerwarten klein ausfällt. Ich denke ich kann eine konkrete Antwort geben, wenn das Modell mit den Daten hier Attached wird.
Andreas
|
|
|
Patrickk90 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.10.2014, 08:23
Titel:
|
|
Hallo Andreas,
schonmal Danke für die Antwort. Ich habe dir mal die mdl-Datei und den Workspace hochgeladen.
Das mit der Schrittweite könnte sein, aber komisch ist trotzdem, dass nur das zweite Element der beiden Vektoren eine Rolle spielt.
VG Patrick
Beschreibung: |
|
Download |
Dateiname: |
workspace.mat.zip |
Dateigröße: |
330 Bytes |
Heruntergeladen: |
387 mal |
Beschreibung: |
|
Download |
Dateiname: |
fst_test_bad.mdl |
Dateigröße: |
21.89 KB |
Heruntergeladen: |
417 mal |
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 16.10.2014, 11:59
Titel:
|
|
Gut, ich gucke es mir gleich an.
"meine Kollegen und ich sind am verzweifeln"
Kollegen == Industrieunternehmen?
Andreas
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 16.10.2014, 12:07
Titel:
|
|
|
|
|
In R2014b sehe ich den Sprung im Scope bei 1.333 Sekunden. Aber das ist
nicht so wichtig. Wichtig ist, dass das Modell auf variable Schrittweite
eingestellt ist und Simulink das dann auch tut. Ich habe Im Scope mal die
Einstellung vorgenommen, dass die Daten in den Workspace gespeichert werden
und im "format long" ist das Ergebnis
0 0
1.000000000000000 0
1.333333333333333 1.000000000000000
1.333333333333348 1.000000000000000
2.333333333333347 1.000000000000000
2.800000000000000 1.000000000000000
2.800000000000028 1.000000000000000
3.800000000000028 1.000000000000000
4.800000000000028 1.000000000000000
5.000000000000000 1.000000000000000
Die Memorryblöcke tun also was sie sollen - sie Verzögern um jeweils einen
Schritt. Jetzt ergeben sich einige Fragen inwiefern das tatsächliche
Projekt umgesetzt werden soll. Braucht es variable Schrittweite?
Braucht es den Memory Block oder eine andere Verzögerung? Alternativen sind in
der Doku des Memory Blocks beschrieben:
http://www.mathworks.de/help/simulink/slref/memory.html
"Comparision with similar blocks"
Andreas
|
|
|
Patrickk90 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.10.2014, 12:31
Titel:
|
|
Vielen Dank für die Mühe Andreas!
Variable Schrittweite muss ich aufgrund des Gesamtmodells leider verwenden.
Aber ich hab nun bei allen MinMax- und RelationalOperator-Blöcken die Zero-Crossing-Detection ausgeschaltet und nun scheint es wieder korrekt zu funktionieren.
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 16.10.2014, 13:08
Titel:
|
|
Gern geschehen. Würde mich trotzdem interessieren was der Projekthintergrund ist. Anfänger darf jeder sein, auch in der Industrie
Andreas
|
|
|
|
|
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.
|
|