|
floyd |
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 10.12.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.06.2009, 00:27
Titel: Problem mit If Blöcken
|
|
Hallo,
ich benutze einen If Block in Kombination mit mehreren If Action Blöcken zum Hin- und Herschalten zwischen mehreren Reglern. Das Problem ist, dass ein Regler (also ein If Action Block) der einmal aktiv ist, anscheinend seinen letzen Ausgangswert weiter liefert, auch wenn die else-Bedingung erfüllt ist und eigentlich ein anderer Regler aktiv wird.
Sollte nicht eigentlich nur aktive If Action Blöcke Ausgangswerte besitzen? Wie könnte ich dies erreichen?
Für eine schnelle Antwort wäre ich sehr dankbar!
Grüße
floyd
|
|
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.06.2009, 08:28
Titel:
|
|
Wenn Deine Regler Integratoren beinhalten, dann behalten die ihren Wert natürlich weiterhin, auch wenn das Eingangssignal 0 wird.
Du kannst den Regler auch am Ausgang abschalten, wobei er seinen Wert dann trotzdem behält. Wenn der Eingang nicht zusätzlich abgeschaltet wird, läuft er wahrscheinlich in irgendeine Grenze oder integriert ins Unendliche.
Wenn Du den I-Anteil bei jedem Einschalten des Reglers auf 0 haben willst, könntest Du dir auch den Reset-Eingang anzeigen lassen und den Integrator dort zurücksetzen.
|
|
|
floyd |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 10.12.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.06.2009, 10:22
Titel:
|
|
Stimmt, die Regler haben Integratoren drin.
Wie könnte ich die Regler am Ausgang ausschalten? Dazu bräuchte ich dann jeweils einen weiteren If Action Block, oder geht das auch anders?
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.06.2009, 12:19
Titel:
|
|
Genau. Statt den Reglereingängen schaltest Du einfach die Reglerausgänge. Die Integratoren halten ihren Wert dann aber trotzdem und laufen eventuell sogar weg. Dann knallt es beim nächsten Umschalten. Darum vor dem Umschalten Integratoren erstmal zurücksetzen.
Am einfachsten ist es wohl die Eingänge umzuschalten und die Integratoren beim Umschalten zurückzusetzen. Da der Eingang dann null ist, bleibt der Integrator auch brav bei Null stehen und kann ruhig auf das Stellglied wirken - tut ja sowieso nichts.
|
|
|
floyd |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 10.12.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.06.2009, 13:28
Titel:
|
|
Habe etwas rumprobiert, bekomme es aber noch nicht hin.
Wie soll es funktionieren, am Reglerausgang zu schalten? Wie schon beschrieben, brauche ich die Umschaltung am Eingang auf jeden Fall, es geht nur darum, zu verhindern, dass ein Regler, der nicht mehr aktiv sein soll, weiterhin eine (kleine) Stellgröße ausgibt. Bitte einen möglichst konkreten Tipp. Danke!
|
|
|
floyd |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 10.12.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.06.2009, 19:18
Titel:
|
|
Verzeiht den Doppelpost, ich bin am verzweifeln:
Selbst wenn ich in einen If Action Block nur eine konstante Packe, die auf den Ausgang wirkt, bleibt ein einmal aktivierter If Action Block immer aktiv, auch wenn schon der nächste If Action Block geschaltet ist. Das kann doch nicht sein! Damit lassen sich doch keine brauchbaren if, if else, else Bedingungen aufbauen. Das muss man doch irgendwie umstellen oder elegant umgehen können, oder?
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.06.2009, 19:40
Titel:
|
|
Bei den If-Action-Blöcken kannst Du ja mal die Eigenschaften des Actionports öffnen, das könnte hilfreich sein.
|
|
|
floyd |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 10.12.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.06.2009, 19:51
Titel:
|
|
Als einziger Parameter ist dort festzulegen:
States when execution is resumed: held/reset
Das hilft leider nicht weiter.
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.06.2009, 20:03
Titel:
|
|
Reset ändert das Verhalten nicht so, dass es passt?
Persönlich neige ich sowieso eher zu Multiportswitches mit Switch-Kaskaden zur Auswahl des richtigen Eingangs davor. Sieht erstens hübsch aus und funktioniert zweitens zuverlässig.
|
|
|
floyd |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 10.12.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.06.2009, 20:10
Titel:
|
|
Reset ändert nur das Verhalten am Anfang, nicht das Verhalten nach dem "Wegschalten".
Multiport Switches sind aber weniger flexibel. Dort kann ich doch nur mit ganzzahligen Zahlen (bzw. andere werden abgeschnitten) zwischen den Eingängen schalten, oder? Das macht die Sache in meinem Fall auch nicht besonders leicht.
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.06.2009, 20:13
Titel:
|
|
Ja, am Steuereingang des Multiport-Switches gibst Du vor, welcher der Eingänge durchgeschaltet werden soll.
Den Steuereingang steuerst Du wiederum über normale Switches, die beliebige Vergleiche durchführen können. Das meinte ich mit Switch-Kaskaden. Geht aber sicher auch toller.
|
|
|
floyd |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 10.12.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.06.2009, 10:27
Titel:
|
|
Danke Epfi, ich hab es jetzt mit einer Kombination aus beidem gemacht. Ich habe einfach nochmal einen Switch nachgeschaltet, um das Signal Nullzusetzen.
Würde mich aber immer noch interessieren, ob es eleganter geht.
|
|
|
floyd |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 10.12.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.06.2009, 11:23
Titel:
|
|
Leider ist immer noch ein Fehler enthalten. Ich glaube, die Integratorblöcke werden nicht zurückgesetzt. Stehe irgendwie grad auf dem Schlauch. Kann mir jemand sagen, wie das zu erreichen ist? Geht doch wahrscheinlich über external reset oder initial condition in den Block Eigenschaften, oder?
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.06.2009, 11:25
Titel:
|
|
Rechtsklick auf Integratorblock -> ganz unten Help drücken, nach 'Reset' suchen?
|
|
|
floyd |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 10.12.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.06.2009, 11:28
Titel:
|
|
so, wie es dort beschrieben ist, hab ich es gemacht. Initial Condition steht auf internal, der Wert ist 0.
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
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 - 2025
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.
|
|