ギアボックスの音響解析

Kosuke_IKEDA
Kosuke_IKEDA
Altair Employee

はじめに

機構解析ソフト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成分の荷重履歴を算出します。

image

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

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

image

 

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

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

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

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

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

image

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

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

image

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

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

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

image

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

image

また、本サンプルでは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と同様です。

image

 

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

image

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

image

 

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

image

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

image

 

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

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

image

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

image

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

image

 

あとは、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

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