2

ここで説明したように、3 つのスライド ボディの 1D システムをシミュレートしようとしています。

ここに画像の説明を入力

ここに私が実装したコードがあります:

model friction
  //constants
  parameter Real muk = 0.2;
  parameter Real mus = 0.3;
  parameter Real m1 = 1.0;
  parameter Real m2 = 2.0;
  parameter Real m3 = 3.0;
  parameter Real Fn12 = 3.0;
  parameter Real Fn23 = 2.0;
  parameter Real absTol = 0.1;
  //variables
  Real X1, X2, X3, V1, V2, V3, A1, A2, A3, F1, F2, F3, Ff12, Ff23, Fs12, Fs23;

initial equation
  X1 = 0;
  X2 = 0;
  X3 = 0;
  V1 = 0;
  V2 = 0;
  V3 = 0;
equation
  F1 = 2 * sin(5 * time);
  F2 = 2 * sin(7 * time);
  F3 = 3 * sin(11 * time);
  V1 = der(X1);
  V2 = der(X2);
  V3 = der(X3);
  A1 = der(V1);
  A2 = der(V2);
  A3 = der(V3);
  m1 * A1 = F1 - Ff12;
  m2 * A2 = F2 + Ff12 - Ff23;
  m3 * A3 = F3 + Ff23;
  Fs12 = (m2 * F1 - m1 * (F2-Ff23)) / (m1 + m2);
  Fs23 = (m3 * (F2 + Ff12) - m2 * F3) / (m2 + m3);

  if abs(V1 - V2) < absTol and abs(Fs12) < mus * Fn12 then
    Ff12 = Fs12;
  else
    Ff12 = muk * Fn12 * sign(V1 - V2);
  end if;

  if abs(V3 - V2) < absTol and abs(Fs23) < mus * Fn23 then
    Ff23 = Fs23;
  else
    Ff23 = muk * Fn23 * sign(V2 - V3);
  end if;


end friction;

Wolfram SystemModeler は t=6 秒までシミュレーションを実行できますが、ここで説明したように、結果は期待したものではありません。そして、OpenModelica を使用してシミュレーションを解決すると、以下のエラーが発生します。

C:/Users/foo/AppData/Local/Temp/OpenModelica/OMEdit/friction.exe -port=64457 -logFormat=xmltcp -override=startTime=0,stopTime=10,stepSize=0.02,tolerance=1e-6,solver =dassl,outputFormat=mat,variableFilter=.* -r=friction_res.mat -jacobian=coloredNumerical -w -lv=LOG_STATS 警告: 反復の最大数に達しましたが、根が見つかりません 警告: 反復の最大数に達しましたが、根が見つかりません エラー時間 0.2 で非線形システム 42 を解くエラー 時間 0.2 で非線形システム 42 を解く 非線形システム 42 は失敗します。詳細については、-lv LOG_NLS を使用してください。シミュレーション プロセスに失敗しました。コード -1 で終了しました。

ここに画像の説明を入力

何が問題なのか、どうすれば解決できるのかを教えていただければ幸いです。

4

2 に答える 2

2

乾式摩擦モデリングについては、 https://github.com/dzimmer/ZimmersModelicaTutorial/blob/master/Tutorial2015/BaseComponents/Friction/IdealDryFriction.moをお勧めします。これは、Modelica.Mechanics.Translational.Interfaces.PartialFriction をシンプルかつクリーンな方法で再利用します。

于 2017-11-14T07:07:36.050 に答える