機械コンポーネント — バネ
次のファイル 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