首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >同步电机状态空间方程的局部化

同步电机状态空间方程的局部化
EN

Stack Overflow用户
提问于 2020-04-03 22:00:41
回答 2查看 84关注 0票数 0

在modelica中,为了求解描述同步电机状态空间方程的der(X)=AX+Bu,我在技术上被迫给出向量u的初值(这个值是由机器的稳态方程得到的)。初始化后,向量u将发生变化。u是电压矢量,X矢量是磁通,A是电感矢量。

EN

回答 2

Stack Overflow用户

发布于 2020-04-06 09:23:22

这些方程在Modelica模型中通常是不明显的.

我建议只对模型线性化,这将给你A,B(如果你也有输出C,D)-matrices。

请注意,与您所写的内容相比,线性化在一般情况下略有不同。

代码语言:javascript
运行
复制
 der(X)=A*(X-X0)+B*(U-U0);

当线性化在X0,U0,假设X0时,U0是稳态的.如果X0不是一个稳定状态点,您将得到:

代码语言:javascript
运行
复制
 der(X)-X0_der=A*(X-X0)+B*(U-U0);

其中X0_der是X0的导数。加上明确的时间依赖性会使它变得更加混乱。

票数 1
EN

Stack Overflow用户

发布于 2020-04-06 11:58:37

您确定要在初始化后更改u吗?如果在模拟开始之前输入值在0时发生变化,那么这对模型有什么影响?通常您初始化状态,而不是输入。

但是,为状态空间模型(Modelica.Blocks.Continuous.StateSpace)提供了一个块。您可以直接使用它,也可以使用它作为灵感来构建您自己的模型(由于您正在处理的更复杂的初始化)。

您的模型可以如下所示:

代码语言:javascript
运行
复制
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如何在一段时间后改变其值,我提供了一个示例性的公式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61021049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档