SIMULINK Q&A

  • hier mal ein topic für alle fragen rund um simulink :


    ich starte mal:


    wir müssen in unser BSB eine drehfrequenz einbauen, dafür brauchen wir einen cosinus-block cos(omega*t).


    weiß jemand wie man einstellt, dass die zeit (ist ja quasi eine art laufvariable) automatisch von simulink mit
    in die berechnung von cos(omega*t) mit einbezogen wird ?


    danke schonmal...

  • falls du noch andere größen wie nur die zeit ändern möchtest geht das mit dem sin-source block nicht. dann müsstest du bei sources den clock oder digital clock block nehmen. der gibt dir einfach die akutelle siumulationszeit raus. ist u.U. allerdings recht rechenaufwendig, damit da ne schöne funktion rauskommt.
    oder ein ramp block mit steigung 1, das müsste eigentlich auch gehen.

  • Hi,


    ich habe eine Frage zum Plotten: Ich habe die Daten aus dem Scope über die Funktion "Save Data to Workspace" im Format "Array" in den workspace geladen. Bei diesen Einstellungen gibt es noch einen Punkt "Limit Data Points to last: 5000" dort ist ein Häckchen, den ich (wie in einem Tutorial gesehen) gelassen habe. Nun habe ich allerdings das problem, dass beim Plotten diese 5000 auf der x-Achse auftauchen und nicht die Zeit wie es beim Scope der Fall war. Habe dann versucht einen Zeitvektor zu erstellen und meine Daten "gegen diesen" zu plotten, aber kriege immer die Fehlermeldung, dass sie unterschiedlicher Länge seien.
    Weiß jemand Rat?

  • du hast im Array warscheinleich jetzt nur die letzten 5000 Zeitschritte stehen. Ich denke mal, Matlab indiziert die mit ihrer jeweiligen Nummer. weswegen du die auf der x-Achse stehen hast. Den Zeitvektor musst du direkt aus der Rechnung exportieren, da Matlab (zumindest bei Standardeinstellungen) in den ODE Solvern eine variable Zeitschrittweite verwendet. Du weißt also nicht, wann der jeweilige Datenpunkt stattgefunden hat.
    Der Zeitvektor wird normalerweise auch vom Solver ausgegeben.

  • Ok, das mit den 5000 habe ich jetzt glaub ich verstanden, habe das Häkchen deshalb mal entfernt und nun zeigt er mir wieder die ganze Simulationsdauer an und nicht nur die letzten 5000 "Punkte".


    Kannst du mir zufällig sagen wo dieser Zeitvektor landen könnte? Im Workspace ist er jedenfalls nicht. In den Tutorial Videos, die ich mir bisher angeschaut haben, haben die immer direkt schon die Zeit auf der x-Achse gehabt..


    Edit: Ok, habe es jetzt als "Structure with time" in den workspace geladen und dann mit dem Befehl simplot() geplottet. Hat sich also geklärt.

  • zur Anmerkung das ganze geht auch einfacher.
    Wenn man Signale in Matlab figures ausgeben lassen will, muss man das entsprechende Signal nur mit einem "Out"-Block (findet sich in "Sinks") ausgeben. Das ganze Signal wird dann inklusive Zeitvektor im Workspace gespeichert. Die Vektoren heißen tout und yout. Hat man mehrere, wird der Vektor yout zu einer Matrix. Zum plotten dann nur noch die Befehle


    plot(tout,yout(:,1))
    plot(tout,yout(:,2)) (wenn zwei Out Blöcke verwendet werden)