Dymola机械臂建模中BearingFriction组件触发奇异不一致标量系统错误
机械臂Dymola建模BearingFriction组件奇异系统错误排查
问题背景
刚接触Dymola,正在搭建机械臂力学模型,使用Source - Position模块约束关节位置。计划通过角速度-扭矩表格建模摩擦,因此选用BearingFriction组件,但在特定输入位置值时出现奇异系统错误。
报错信息
Error: Singular inconsistent scalar system for bearingFriction.sa = ((if bearingFriction.locked then 0 else (if bearingFriction.startForward then -1.34 else (if bearingFriction.startBackward then 1.34 else (if pre(bearingFriction.mode) == 1 then -1.34 else 1.34))))-der)/( -(if bearingFriction.locked then 0 else 1.0)) = 19.8524/-0
Fixed point iterating to handle problem.
已尝试方案
- 更换求解器
- 调整求解容差
- 修改表格插值方法
以上操作均未解决问题。
模型代码
model Test Modelica.Mechanics.Rotational.Components.Inertia inertia(J=2) annotation (Placement(transformation(extent={{-40,14},{-20,34}}))); Modelica.Mechanics.Rotational.Components.BearingFriction bearingFriction(tau_pos=[0,1; 10,1.5; 20, 2.1; 40,2.6; 100,4.8; 150,5.1; 300,5.8; 600,6], peak=1.34) annotation (Placement(transformation(extent={{-4,14},{16,34}}))); Modelica.Mechanics.Rotational.Components.Inertia inertia1(J=3) annotation (Placement(transformation(extent={{74,14},{94,34}}))); Modelica.Mechanics.Rotational.Components.IdealGear idealGear(ratio=20) annotation (Placement(transformation(extent={{36,14},{56,34}}))); Modelica.Mechanics.Rotational.Sources.Position position(exact=true) annotation (Placement(transformation(extent={{-82,14},{-62,34}}))); Modelica.Blocks.Sources.ContinuousClock continuousClock annotation (Placement(transformation(extent={{-160,14},{-140,34}}))); Modelica.Blocks.Tables.CombiTable1Ds combiTable1Ds( table=[0.0,70.2029; 0.00482,70.2029; 0.00964,70.2029; 0.01446,70.2014; 0.01928,70.197; 0.0241,70.1876; 0.02892,70.1663], columns={2}, smoothness=Modelica.Blocks.Types.Smoothness.ModifiedContinuousDerivative) annotation (Placement(transformation(extent={{-122,14},{-102,34}}))); equation connect(inertia.flange_b, bearingFriction.flange_a) annotation (Line(points={{-20,24},{-4,24}}, color={0,0,0})); connect(bearingFriction.flange_b, idealGear.flange_a) annotation (Line(points={{16,24},{36,24}}, color={0,0,0})); connect(idealGear.flange_b, inertia1.flange_a) annotation (Line(points={{56,24},{74,24}}, color={0,0,0})); connect(position.flange, inertia.flange_a) annotation (Line(points={{-62,24},{-40,24}}, color={0,0,0})); connect(continuousClock.y, combiTable1Ds.u) annotation (Line(points={{-139,24},{-124,24}}, color={0,0,127})); connect(combiTable1Ds.y[1], position.phi_ref) annotation (Line(points={{-101,24},{-84,24}}, color={0,0,127})); annotation ( uses(Modelica(version="4.0.0")), Diagram(coordinateSystem(extent={{-160,-100},{100,100}})), Icon(coordinateSystem(extent={{-160,-100},{100,100}}))); end Test;
系统示意图
内容的提问来源于stack exchange,提问作者Simone
相关产品推荐
相关产品推荐

