You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

链葫芦多边形效应机械建模:Modelica仿真异常求助

链轮毂多边形效应的旋转-平动转换Modelica建模问题

我需要将轴的旋转运动转换为链条的平动,以此模拟链轮毂多边形效应引发的链条振动。目前已实现链条运动激励公式与链轮毂变半径计算,并编写了最小示例代码(MWE)测试功能,但未达到预期效果。

主模型代码

Real psi;
  parameter Real t_k(start=0.012, unit = "m");
  parameter Real d(start=0.0037, unit = "m");
  parameter Integer e(start=5);
  parameter Real pi = Modelica.Constants.pi;

  Real alpha, beta, gamma;
  Real r_2;
  Real dummy1, dummy3;
  Modelica.Units.SI.Position x_k;
  Modelica.Units.SI.Position y_k;
  Integer j(start=1);
  Real psi_k;

  
  rotational rotational1;
  translational translational1;

equation

  rotational1.phi = psi;

  alpha = 2*pi/e;
  beta = atan((sin(alpha/2))/(((t_k - d)/(t_k + d)) + cos(alpha/2)));
  gamma = (alpha/2) - beta;
  
  r_2 = (t_k + d)/(2*sin(beta));

  j = floor(psi/alpha);
  
  psi_k = psi - j*alpha;


  if (0 <= psi_k) and (psi_k < alpha/2) then
    dummy1 = ((t_k + d)/2) + (r_2*sin(psi_k - beta)) + 2*j*t_k;
    dummy3 = r_2*cos(psi_k - beta);

  elseif (alpha/2 <= psi_k) and (psi_k < alpha) then
    dummy1 = (((3*t_k) - d)/2) + (r_2*sin(psi_k + beta - alpha)) + 2*j*t_k;
    dummy3 = r_2*cos(psi_k + beta - alpha);
   
  else
    dummy1 = 0;
    dummy3 = 0;

  end if;

  y_k = dummy1;
  x_k = dummy3;

  
  translational1.f*x_k = rotational1.tau;
  y_k = translational1.s;

end rotational_to_translational;

连接器定义

Modelica.Units.SI.Position s;
  flow Modelica.Units.SI.Force f;
end translational;
Modelica.Units.SI.Angle phi;
  flow Modelica.Units.SI.MomentOfForce tau;
end rotational;

模型中,t_k、d、e等参数用于描述链轮毂尺寸,psi为输入轴旋转角,x_k和y_k为链条的最终位置。我通过自定义的rotational和translational连接器分离领域并传递信息,期望结合轴的力矩与多边形变半径建模链条受力,同时通过轴的旋转角建模链条位置,但在使用x_k和y_k时出现问题,推测是if语句引发了计算错误。

仿真报错信息

仿真时出现以下内部错误:

[4] 15:00:32 翻译错误
[C:/OM124/OM64bit/OMCompiler/Compiler/BackEnd/ResolveLoops.mo: 293:9-293:86]: Internal error function resolveLoops_cutNodes failed

[5] 15:00:32 翻译错误
Internal error IndexReduction.pantelidesIndexReduction failed! Found empty set of continuous equations. Use -d=bltdump to get more information.

[6] 15:00:32 翻译错误
Internal error Transformation Module PFPlusExt index Reduction Method Pantelides failed!

同时存在参数初始化警告(暂不关注)。

已尝试的排查

  • 参考Modelica.Mechanical库的IdealRollingWheel模型,发现Modelica处理不连续变量存在问题
  • 模型检查显示15个方程对应15个变量,但测试时提示方程数与变量数不平衡

作为Modelica新手,急需解决该问题,恳请相关建议与提示。

内容的提问来源于stack exchange,提问作者Waldo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 03:05:57