技術士(総合技術監理・機械部門)のブログ

技術士がお届けする,技術,工学,技術者倫理などの話題

運動のシミュレーション3

2007-10-09 20:46:39 | 工学
なんとか,MATLABでのSimlinkの機能がscicos()←関数としてScilabのウインドで走る
前回の運動方程式を変形してみて

d2/dt2 X= -K/M*X-C/M*dX/dt

となるから
加速度は積分して速度
速度は積分して位置へ
それらに係数を掛けて
足したのが加速度

という関係を表せばシミュレションは簡単にできる

図で 時計のマークはMATLABにはない
時間のシミュレションをするためのカウンタの役割と考えて良い

ともかく,グラフィカルにシミュレーションできる
目出たい

シミュレーションが合っているかどうかためしてみよう

三角印のゲインはそれぞれ K/M, C/Mを示すから
前回の値としては
k/M=2000000/1000000=2
C=0なので 0

として,初期値
つまりばねを引っ張って放すというシミュレーションができる



パラメータとして 初期値X=10として,10秒間の現象がシミュレートできた
C=0だから減衰はしない

この系の固有振動数は前回0.225Hzであった
10秒間には2.25回の波となるはずであり,グラフもそうなった

工学では,このようなチェックが重要である 大まかに現象がこうなるという見込みをつける
そうしないと,とんでもない間違いがあっても計算機が計算したから間違いない
などという思い込みをしてしまう
必ず,結果は疑ってみて,結果が妥当かどうか確認する癖をつけたいものだ


今回はここまで
でも,scicosがあれば有料のmatlab,simlinkも必要なくなるのか?

運動のシミュレーション2

2007-10-08 17:35:56 | 工学
モデルの作成についてから続きである

シミュレーションの実行にあたって,モデリングがうまく行けば,80%から90%はその仕事が終わったと言って良い.非線形である場合には,解析手法の調整が大変であったりするが,モデルが出来ればそこからは早いのが一般的である.まあ,報告書などをまとめるというのに時間がかかるが,それは別としてである.

簡単な例題からScilabに試させてみよう

図のような一自由度系の簡単な振動系を考える.
数学モデルであるから
上下方向の自由度を表す変数をxとして

Md2x/dt2+Kx+Cdx/dt=0 ....(1)

となる d2x/dt2はxの2回微分 dx/dtは一回微分で,それぞれ加速度,速度を表すことは言うまでもない

モデルとしてxの運動を記述できたわけである.MATLABであればsimlinkを使って積分していけばxの値を計算してグラフに表すのは簡単である.さて,scilabにはどんかToolBoxがあるのか
まずここらへんを調べておかなければならない.
であるが今回は
その前に,基本的な特性がわかるかどうかやってみる

(1)式は,線形の振動方程式であり,その解x=...というのが
解析的に求まる.振動であるから固有振動数があり
それは ω=√K/M (rad/s)であることはわかっている

例えば M=1,000,000kg(=1000ton)とし,k=2000000(N/m)とすると


というようにscilabで計算できる(あたりまえ)

sqrtが√計算で%piがπを表す
ラジアン/sからHzに直しているわけである

私の扱っている機械が1000tくらいあり,それの固有振動数が,0.22Hzくらいであれば逆にこの程度のばね(剛性)をもっているということがわかる

方程式の解がわかっていたのでこんな計算で対象の振動系の特性=固有振動数を調べることができるのであるが,もうすこしシステムとして考えるとどうすれば良いのであろうか

先ほどのToolBoxを使うというのも手であるが(ToolBoxがあるかどうか,これから調べる),数値シミュレーションであれば,方程式が書ければ,それを一次方程式にしてみるということにより一般的になる場合がある.

そこで X=[x,dx/dt]Tというようにベクトルとして位置x,速度dx/dtを並べる
そうしてこれを行列式で表すと

dX/dt=AX

A=[0,1:-K/M,-c/M]というようになることがわかる
これをscilabで表現してみる
とういうか 行列Aを与えて,それの固有値を見てみる



となる(途中間違えている)

MATLABであれば固有値はeignであったがscilabの場合はspecであるそうな

今回はここまで

運動のシミュレーション1

2007-10-07 17:04:21 | 工学
Scilabの準備も整い,動的解析について学習していく
タイトルは 運動のシミュレーションであるが特に意図はしていない

1 序章
工学において,特にエンジニアにおいて通常重要なのは材料力学である
材料の種類の知識も必要であるが,材料の強度がわからなけらば設計の仕事はできない
ところが大学から来た新人は,得てして材力を忘れている
材力はそんなに難しくないし,逆に複雑な構造計算は手計算ではできないので有限要素法などに頼る事に成る
しかし,大まかな強度チェックなど材力なしには設計は進まない
機械の設計となると,次には機械要素の知識が必要である
ベアリング,軸,はめあい,キーなどの知識であるが,これも材力の基礎がわかれば問題ない
そして,最後に出てくるのは機械力学の知識である
モータにより機械は動く,動力と運動の関係,力,トルクなどの関係がわからなければならない.通常の動力設計もエクセルシートなどで簡単に設計できる
必要に応じ,振動力学の出番となり,さらに制御系の設計問題となる.

これから扱うのは,運動から振動,制御への展開をScilabを使って学習してみるという試みである.前回にお断りしているように,自分のおさらいも含めたものであるため,内容について上記振動力学等の体系を網羅するものではない.ご質問などがあれば,コメントいただければ回答はさせていただくが,適切な対応が出来るかどうかわからないので予めご了解いただきたい.

2 モデル
 シミュレーションするためには,対象がなくてはならない.ここで言うモデルとは数学モデルのことであり,模型や実物のことではない.実物の動きを動力学的に表現したものである.制御のためには,少々古いが「計測と制御」Vol.37 No.4 木村英紀先生による「制御とモデル」pp228-234(1998)の考え方で,実体駆動形モデリングとデータ駆動形モデリングというモデルが考えられるが,ここでは前者の考え方をモデルとして扱う事にする.後者の例は,データ列が出てくる対象があり,その入出力関係がデータとして与えられる場合に,それをモデルとして扱うことが可能であるため,モデルと呼ぶが,内部状態がわかるようなモデル=前者のモデルをここでは扱う.
 また,実体駆動形でもモデルということは,不確かさ,複雑さ,非線形などの制約により,モデルを近似することがある.実体がある機械であっても,摩擦などによる不確かさや,構造の複雑さ,重力による非線形などがどうしても入り込む.しかし,それらの要素が支配的になる場合は,それの解析を部分的に行うことで設計は出来る場合がほとんどであり,現象のシミュレーションとしては線形で,まず確認することは常識であり,それで設計はほとんど完了し,実際の現象もそれで説明できることが多い.という考え方から,モデルとしては まず,線形であるものを扱う.
 一方,解析する領域としては,周波数領域と実時間領域とで解析する.制御系,振動系の場合,どちらの解析も重要であるが,シミュレーションとしては時間領域ということになるので,解析とシミュレーションの意味はそんなところで解釈したい.

1回目はここまで