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;
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
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. –