Вы уверены, что хотите изменить u
после инициализации? Какое влияние это должно оказать на модель, если входное значение изменяется в момент времени 0 до начала симуляции? Обычно вы инициализируете состояния, а не входные данные.
Однако в стандартной библиотеке Modelica имеется блок для моделей пространства состояний (Modelica.Blocks.Continuous.StateSpace
). Вы можете использовать его напрямую или использовать его как источник вдохновения для построения своей собственной модели (из-за более сложной инициализации, с которой вы, очевидно, имеете дело).
Ваша модель может выглядеть следующим образом:
model MyStateSpace
parameter Real A[:, nx]=[1, 0; 0, 1] "System matrix";
parameter Real B[nx, :]=[1; 1] "Input matrix";
parameter Real C[:, nx]=[1, 1] "Output matrix";
parameter Real D[ny, nu]=zeros(size(C, 1), size(B, 2)) "Feedthrough matrix";
Real u[nu] "Input vector";
Real x[size(A, 1)] "State vector";
output Real y[size(C, 1)] "Output vector";
protected
final parameter Integer nx = size(A, 1) "number of states";
final parameter Integer ny = size(C, 1) "number of outputs";
final parameter Integer nu = size(B, 2) "number of inputs";
initial equation
x = {1, 0};
/* put your equations for initialization here */
equation
u = if time > 0.1 then { sin(time) } else { 7 };
der(x) = A*x + B*u;
y = C*x + D*u;
end MyStateSpace;
В разделе initial equation
вы можете поместить свои уравнения для инициализации. В этом примере я инициализировал x
, а не u
. Чтобы показать, как u
может изменить свое значение через определенное время, я включил примерное уравнение.