メインコンテンツ

機械コンポーネント — バネ

次のファイル spring.ssc では、spring という名前のコンポーネントを実装します。

コンポーネントの宣言セクションには、以下が含まれます。

  • 2 つの回転ノード r および c (それぞれロッド用とケース用)

  • バネ定数を指定するパラメーター k (既定値は 10 N*m/rad)

  • ファイル内で後で回転ドメインのスルー変数およびアクロス変数に接続されるスルー変数 (トルク t) およびアクロス変数 (角速度 w)

  • 相対角度 (バネの変形) を指定する内部変数 theta (既定値は 0 rad)

branches セクションでは、コンポーネントのスルー変数とコンポーネントのノード (したがって、ドメインのスルー変数) との間の関係を確立します。t : r.t -> c.t ステートメントは、バネによるトルクがノード r からノード c へ作用することを指定します。

equation セクションは assert 構造で始まり、バネ定数がゼロより大きいことをチェックします。ブロック パラメーターが正しく設定されていない場合、assert はランタイム エラーをトリガーします。

1 つ目の方程式 w == r.w - c.w は、コンポーネントのアクロス変数とコンポーネントのノード (したがって、ドメインのアクロス変数) との間の関係を確立します。バネの角速度をノード角速度間の差として定義します。

次の 2 つの方程式でバネの動作を定義します。

  • t = k * theta (トルクはバネの変形にバネ定数を乗算した値に等しくなる)

  • w = theta.der (角速度はバネの変形の時間微分に等しくなる)

component spring 
  nodes
    r = foundation.mechanical.rotational.rotational; 
    c = foundation.mechanical.rotational.rotational; 
  end 
  parameters
    k = { 10, 'N*m/rad' }; 
  end 
  variables
    theta = { 0, 'rad' };  
    t = { 0, 'N*m' };        % torque through
    w = { 0, 'rad/s' };      % velocity across
  end
  branches
    t : r.t -> c.t; % torque through from node r to node c
  end
  equations
    assert(k>0)     % spring rate must be greater than zero
    w == r.w - c.w; % velocity across between node r and node c
    t == k * theta; 
    w == der(theta); 
  end
end

参考

トピック