model - 同步电机状态空间方程的局部化
问题描述
在 modelica 中,为了求解描述同步电机状态空间方程的 der( X )= AX + Bu,我在技术上被迫给出向量u的初始值(该值由电机的稳态方程获得)。初始化后,向量u会发生变化。如何在 Modelica 中实现它? u是电压矢量,X是磁通矢量,A是电感矢量。
解决方案
您确定要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
在一定时间后如何改变它的值,我包含了一个示例性方程。
推荐阅读
- .net - 具有强名称签名项目的批处理构建中的 dotnet build 命令
- android - StreamBuilder 没有从 FireStore 获取数据 | 扑
- django - 在 Django Rest Framework 上获取国外序列化的 ReadOnlyField
- azure - AD B2C 测试用户流不允许选择应用注册
- mongodb - 允许自定义 CRDT 合并的分布式数据库
- python - 优化计算文档频率
- python - django admin覆盖delete_model不适用于批量删除
- angular - 由于“@angular/material”而无法编译;错误
- python - 通过 NodeJs 在我的 Python 脚本中使用 Pymongo
- vue.js - 错误:在 /Users/name/Desktop/blognewtonmcvue/store 中找不到 ESLint 配置