链葫芦多边形效应机械建模: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

