回転機の振動シミュレーションで回転パルスを設定してみた

  • このエントリーをはてなブックマークに追加

先日の記事で回転機のアンバランス振動シミュレーションをPythonで行いました。振れ回り振動と参考書の対応がとれたので、次はより詳細な分析を行うために回転パルス(基準信号)をシミュレーションで設定してみます。ここではPythonのodeintで基準パルスを設定しながらアンバランス振動のシミュレーションを行う方法を紹介します。

こんにちは。wat(@watlablog)です。回転機のシミュレーションを進めていくために、この記事では回転パルスをシミュレーションで表現する方法を紹介します

回転パルスをシミュレーションで再現する理由

回転機シミュレーションのおさらい

以下の記事では回転機のシミュレーションをしてみました。この記事の中ではアンバランス振動の運動方程式を導出し、Pythonodeintを使って振れ回り振動が出ることを確認しています。
回転機のアンバランス振動をシミュレートするPythonコード

このページで扱うPythonコードは上記記事の内容を前提としています。まだ読んでいない方は是非ご覧になってください。

バランス修正には回転パルスの計測が重要

回転機を扱う実際の現場では、アンバランス振動を計測してバランスの悪さを修正する工程が存在します。タイヤ、モータのアーマチュア、換気扇のファン…と世の中には多数のバランス調整を必要とする機械があります。

もしかしてあなたの家のエアコン室外機用ファンも、バランス調整をした後の形跡(ブレードがもっこりしている、クリップがついている…等)があるのでは?

実際はアンバランスを加速度センサーひずみゲージ力センサーで振動を計測します。
しかし、これらのセンサーを単体で使っている場合、振動の大小はわかってもどこに修正錘を取り付ければ良いかがわかりません

回転パルスを振動と同期計測することで、回転機の機械角と振動の位相差\(\phi\)を知ることが可能です。

下図は回転機に反射テープを貼り、レーザーで回転パルス、振動センサーで振動を計測している例です。通常回転パルスは一回転に一回の電圧降下(または電圧上昇)を発生させることで位置検出を行います。

回転パルスと振動の同時計測の例

振動のピークとアンバランスのある場所を知ることでバランスの修正ができるため、回転位置検出が精密な回転を実現させるキーポイントとなります。

共振が発生すると位相がずれる

回転機の位置検出原理は非常に理解しやすいですが、世の中の回転機が弾性体であることがやや検出を難しくします。

参考文献\(^{[1]}\)によると、アンバランス偏心と振動の位相関係は共振に左右されるとあります。一般的な1自由度ばねマス系でも共振で位相が変わるのはよく知られていますが、位置検出が重要な回転機ではその特徴が計測の最大の問題点となる場合があるでしょう。

そのため共振問題に頻繁にさらされる回転機のシミュレーションをできるようにすることは非常に重要です。

この記事ではまず1つだけ共振を持つ回転機のシミュレーションをしてみます。複数の共振を持つ回転機はおそらく以下の記事にあるような多自由度振動系のシミュレーション手法が使えると思うので、このページでは基礎的なことのみ扱います。
Pythonで多自由度振動系の過渡応答計算をする時はSciPyを使おう

SciPyのodeintで回転パルスを追加するPythonコード

動作環境

この記事のコードは以下のPython環境で動作確認をしています。後半に動画を作成するコードを紹介している都合でpillowも使っています。

■Python環境
Python Python 3.9.6
PyCharm (IDE) PyCharm CE 2020.1
Numpy 1.21.1
Scipy 1.4.1
matplotlib 3.4.3
pillow 7.1.2

全コード

以下に「回転機のアンバランス振動をシミュレートするPythonコード」で紹介したシミュレーションへ回転パルス生成処理を追加したコードを示します。

回転パルスは\(\cos \omega t\)を基準として関数fの中で計算しています。odeintに渡す積分するための関数なので式(1)の微分形式にしています。

\[ \left\{\begin{matrix} p &=& \cos \omega t \\ \dot{p} &=& - \omega \sin \omega t \\ \ddot{p} &=& - \omega^{2} \cos \omega t \\ \end{matrix}\right. \tag{1} \]

今回のシミュレーションは偏心位置に反射テープを貼っていることを想定します。力学モデル上で図示すると以下になります。

力学モデルにおける回転パルスの基準位置

こちらが結果です。回転パルスと回転機のアンバランス振動(x変位)は同相であることが確認されました。

回転パルスと振動の同期計測シミュレーション結果

ちなみにmatplotlibの2軸描画や、2軸描画をした場合の凡例設定は以下の外部サイトを参考にしています。
Matplotlib-2軸グラフの書き方

共振影響を確認する

先ほどは回転数100[rpm]程度の計算結果でしたが、今度は300[rpm]と回転数を上げてみましょう。事前に回転数違いの計算結果を確認しておき、この系は300rpm程度で共振するということはわかっているものとします。

下図が結果です。回転パルスと振動の位相差が確認されました。参考書\(^{[1]}\)の通りです。

共振時の回転パルスと振動の同期計測結果

トリガー検出を実装して位相ずれをアニメーションにするPythonコード

トリガー検出

より実験と同じ状況をシミュレーションで再現するため、解析で得られた回転パルスの信号をトリガー検出してみましょう。トリガー検出とは、信号の立ち上がりや立ち下がりをプログラム的に検出することで、意図したタイミングでデータを抽出するために使います。

過去に以下の記事でトリガー検出をPythonで実装してみましたので、それをちょっといじってみます。
Pythonで時間波形のトリガ検出アルゴリズムを作る!

全コード

if np.sign(data[i - 1]) != np.sign(data[i]):」でトリガーを検出していますが、「j = data[i - 1] > data[i]」を使って立ち上がりの時だけに着目しています。このコードはimgフォルダの中に「N_list = np.arange(10, 600, 10)」で作成した回転数条件分の計算結果を保存し、gif画像result.gifを生成します。

こちらが結果の動画例です。最初は変位振幅が小さく、回転パルスと変位振動の位相は同相です。しかし回転数を上げていくと徐々に変位振幅が増大し位相が90度ずれ共振を過ぎると位相が180度になっている結果を確認できました。この一連の流れは参考書\(^{[1]}\)通りであり、シミュレーションは正常に行われたと考えられます。

回転数パルスと振動の位相がずれていくアニメーション

まとめ

この記事はここまでです。前回のアンバランス振動シミュレーションに回転パルスとして余弦波を追加してみました。回転パルスは厳密に模擬しようとすると級数展開したりして矩形波をつくるのが良いのかも知れませんが、実際は余弦波で十分です。

回転パルスをつくるということはその後の信号処理でトリガー検出をすることが一般的です。今回は過去記事を参考にしながらトリガー検出部分も実装してみました。

まだまだ簡単なことしかしていませんが、参考書「回転機の振動」に載っていることがシミュレーションで確認されていくのは面白いと思います。

参考文献

[1]:松下修己, 田中正人, 神吉博, 小林正生, 回転機械の振動 実用的振動解析の基本, コロナ社, 2011, pp27

これで実験のような位置検出シミュレーションもできそうですね!
Twitterでも関連情報をつぶやいているので、wat(@watlablog)のフォローお待ちしています!

SNSでもご購読できます。

コメントを残す

*