2017-11-04 2 views
2

Ich möchte ein kontinuierliches Zeitsystem modellieren, das sein Verhalten zu einem bestimmten Zeitpunkt ändert, der im Voraus bekannt ist. Ein kleines Beispiel ist wie folgt.Wie modelliere ich ein einzelnes Ereignis in Modelica zu einer vorgegebenen Zeit?

model time_event 
    Real x(start = 0) "state variable for this example"; 
    parameter T_ch = 5 "time at which the system dynamics undergoes a change"; 
equation 
    if time <= T_ch then 
    der(x) = x + 1; 
    end if; 
    if time > T_ch then 
    der(x) = -x; 
    end if; 

end time_event; 

Antwort

4

Ihre Lösung ist fast in Ordnung. Unten ist Ihr Code mit ein paar Modifikationen.

  • Gebrauchte if then else auch tun können, if then elseif then elseif then ... else
  • Added Balance variable xb gemeinsame Ableitung Gleichung (nicht notwendig nur eine Art der Programmierung).

Code:

model time_event  
    Real x(start = 0) "state variable for this example"; 
    parameter Real T_ch = 5 "time at which the system dynamics undergoes a change"; 
    Real xb "Balance variable for derivative"; 
equation 
    der(x) = xb; 
    if time <= T_ch then 
     xb = x + 1; 
    else 
     xb = -x; 
    end if; 
end time_event; 

Grundstück Ergebnisse:

Rot = x

Blau = der (x)

Plot of x and der(x)

+1

Vielen Dank. Könnten Sie bitte erklären, warum der Compiler einen Fehler in meinem Code gibt? Soweit ich sehen kann, sind die beiden Codes programmatisch gleich. – user13052

+3

Eine if-Gleichung muss in jedem Zweig die gleiche Anzahl von Gleichungen haben. Hier, weil es wissen muss, in welcher Gleichung der (x) gelöst ist. Sie hatten 2 verschiedene Gleichungen für der (x), was zu einem Fehler führen sollte. Diese Antwort hat nur das Zwischenprodukt xb aus der Gleichung verschoben, was nicht notwendig ist, es sei denn, Sie möchten diese Variable plotten. Beachten Sie, dass der Compiler möglicherweise in der Lage war, die Zweige zu bewerten, wenn Ihre Bedingung nur Parameter (nicht die Zeit) enthielt. In diesen Fällen muss die if-Gleichung nicht ausgeglichen werden, da einige von ihnen entfernt werden. –

Verwandte Themen