Simulink loops

  • Hey @ all,


    vielleicht kann mir gerade einer helfen... Ich versuche in Simulink einen Prozess zu modellieren, welcher durch ein Steuergerät geregelt wird. Das impliziert ja, dass ich den Output nehme, modifiziere (nach meinen gegebenen Maßstäben) und mit diesem Wert den Input anpasse.


    Wenn ich dies jedoch versuche, kommt immer wieder die Fehlermeldung, dass loops nicht gestattet sind. Okay... Aber wie soll man denn dann zB ein Steuergerät modellieren? Brauche ja den Output vom System, sonst weiß das Subsystem ja gar nicht, was es zu tun hat?


    Wäre über Hilfe dankbar :)


    Gruß,
    nessor

  • Hi,


    meinst du den Fehler "Found algebraic Loop containing..." ?


    Dann kannst Du einfach in den Loop einen Unit-Delay-Block setzen. Das Problem ist, dass Simulink sonst auf einen Wert zugreifen muss, den es erst noch berechnen muss... So wird der Wert des vorherigen Zeitschritts betrachtet.

  • Das einfachste ist einen Memory-Block zu verwenden. Das sieht dann so aus dass du ein Subsystem hast, wo hinten ein Output rauskommt, in den Memory-Block geht (also für die nächste Iteration zur Verfügung steht) und der dann wieder als Eingang in das Subsystem geht. So kannst du dann im Code einfach drauf zugreifen.


    Den Block bitte um 180° drehen, sonst sieht das uncool aus.


    Also dann Strecke - Sensorblock (falls nötig) - Regler - Memoryblock - Strecke

  • Also verstehe ich das richtig, dass der Unit-Delay Block einfach den Wert vor dem aktuellen Schritt nimmt und der Memory-Block Werte "speichert", welche ich dann im Code verwenden kann?


    Ja. Ganz trivial nutzt man das meist für eine Laufvariable innerhalb Simulink. "i" oder was auch immer geht dann in den Memoryblock und bei der nächsten Iteration steht das aktuelle "i" zur Verfügung und er rechnet nicht immer wieder den nullten Zeitschritt aus.