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

Problem mit If Blöcken

 

floyd
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 11.12.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2009, 01:27     Titel: Problem mit If Blöcken
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2009, 09:28     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
floyd
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 11.12.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2009, 11:22     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2009, 13:19     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
floyd
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 11.12.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2009, 14:28     Titel:
  Antworten mit Zitat      
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!
Private Nachricht senden Benutzer-Profile anzeigen
 
floyd
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 11.12.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2009, 20:18     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2009, 20:40     Titel:
  Antworten mit Zitat      
Bei den If-Action-Blöcken kannst Du ja mal die Eigenschaften des Actionports öffnen, das könnte hilfreich sein.
Private Nachricht senden Benutzer-Profile anzeigen
 
floyd
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 11.12.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2009, 20:51     Titel:
  Antworten mit Zitat      
Als einziger Parameter ist dort festzulegen:

States when execution is resumed: held/reset

Das hilft leider nicht weiter.
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2009, 21:03     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
floyd
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 11.12.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2009, 21:10     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2009, 21:13     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
floyd
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 11.12.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2009, 11:27     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
floyd
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 11.12.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2009, 12:23     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2009, 12:25     Titel:
  Antworten mit Zitat      
Rechtsklick auf Integratorblock -> ganz unten Help drücken, nach 'Reset' suchen?
Private Nachricht senden Benutzer-Profile anzeigen
 
floyd
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 11.12.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2009, 12:28     Titel:
  Antworten mit Zitat      
so, wie es dort beschrieben ist, hab ich es gemacht. Initial Condition steht auf internal, der Wert ist 0.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.