ギアボックスの音響解析


はじめに

機構解析ソフトAltair MotionSolveと構造解析ソフトAltair OptiStructを用いたギアボックスの音響解析事例を紹介します。

Altair MotionSolveを用いた機構解析により、ギアの接触、シャフトの弾性変形を考慮した軸受けの荷重履歴を算出します。

Pythonスクリプトにより、軸受け荷重履歴をFFT処理し、周波数応答の入力荷重に変換します。

Altair OptiStructを用いた構造解析により、ギアボックスと音場の振動計算を行い、騒音レベルを算出します。

モデルとドキュメントは下記よりダウンロード可能です。

Gearbox Acoustic Analysis using MotionSolve and OptiStruct

本記事では、自動化のPythonスクリプトの使い方を中心に解説します。

 

機構・構造モデルのインターフェース

機構モデルでは、Input Shaft、Main Shaft、Secondary Shaftの3本のシャフトをそれぞれ2つの軸受けで支持しています。

Input Shaftを所定の回転数で回転させた場合の、計6か所の軸受け部XYZ 3成分の荷重履歴を算出します。

上記で算出した荷重履歴をFFT処理し、周波数荷重としたものを、構造モデルの軸受け部6か所に付与します。

これにより、シャフトの軸受け荷重が付与された場合のギアボックスの振動および放射音を計算します。

 

MotionSolveの自動実行Pythonスクリプト

シャフトの回転数に応じた騒音レベルを算出するため、回転数を800RPM~3200RPMまで変化させた場合のMotionSolveの計算を実行しています。

本サンプルでは、PythonスクリプトRun_MS.pyを用いて連続実行を行っています。

本スクリプトでは、800RPMから200RPM刻みで13ケースという指定です。結果、800、1000、・・・、3200RPMの計算が連続で実行されます。

38行目のdtは使用していませんので、指定は不要です。

作業フォルダはサンプルの通り、スクリプトがあるフォルダ03_Scriptsと同じ階層にある04_Resultsで計算が行われるように記述されています。

下記箇所を変更することで、任意のフォルダで実行可能です。

計算条件である回転数は、xmlファイルのMotion_JointとMotion_Markerで定義されています。

Pythonライブラリのxml.etree.ElementTreeを用いて、式を書き換えています。

他のモデルに適用する場合は、xml.etree.ElementTreeの使い方を調べてみてください。

本スクリプトはMotionSolveの環境変数の設定が必要ですので、Altair Compute Consoleから実行いただくのが簡単です。

また、本サンプルではPythonスクリプトを使用していますが、HyperStudyを用いても良いと思います。

 

MotionSolve時刻歴出力 -> OptiStruct周波数入力の変換Pythonスクリプト

MotionSolveで算出した各回転数における軸受け荷重履歴をFFT処理し、OptiStructの入力フォーマットに変換する作業をPythonスクリプトCreate_update_OS.pyで自動化しています。

69行目以降でパラメータを設定してください。

Ns:FFTを行うサンプル数

Fs:MotionSolveの出力サンプリング

t0:FFTを開始する時刻。本サンプルでは初めの0.1secを切り捨てています。

sub、rpm、drpmはRun_MS.pyと同様です。

 

92行目~荷重をマッピングする先の節点IDが記載されていますが、本スクリプトでは使用していません。

OptiStructのモデルにて、6節点×3自由度=18個のForceが定義されているのが前提となります。各ForceはそれぞれCollectorに格納されIDが振られています。

 

102行目~MotionSolveの荷重履歴を指定するリストが定義されています。

HyperGraphでpltファイルを開きIDを確認を確認後、取り出したい順番にIDを記述してください。

 

112行目~OptiStructで周波数荷重(TABLEED1、RLOAD2、DLOAD)を定義するためのIDを指定します。本スクリプトでは6桁のIDで作成されます。

軸受けの部位ごとに6桁目のIDが変わります。

122行目~OptiStructモデルのどの部位に荷重を与えるかを指定します。

手動で定義したForceを格納したCollectorのIDを指定してください。MotionSolveの荷重履歴、周波数荷重用のIDと順番が変わらないよう注意してください。

 

あとは、Pythonスクリプトを実行すると、MS2OS.femが作成され、

SUBCASE / TABLED1 / RLOAD2 / DLOADが自動生成されます。

SUBCASE:回転数のケースに対応した13個のサブケースが作成されます

TABLED1:時刻歴を周波数変換した振幅と位相のカーブが生成されます。13ケース × 6部位 x 3自由度 x 2(振幅・位相)= 468カーブ

RLOAD2:Forceが格納されたCollectorと振幅・位相カーブを関連付けます。13ケース × 6部位 x 3自由度 = 234個

DLOAD:1つのサブケースで与えるRLOAD2を束ねます。13個

これをOptiStructモデルにインポートし、計算を実行すると、各回転数における周波数応答が計算されます。

 

使用製品:Altair MotionSolve/MotionViewAltair OptiStruct

よくあるエンジニアからの質問はこちら