前回は公転周期数十年、軌道長半径数十天文単位(au)という長大な回転運動を観察しました。今回はぐっと俗世に近付きます。「RPM」一分間の回転数で測れるような物体の回転を「実時間」に近い感じでアニメーションして~と。「回す」ターゲットの想定現物は、内燃機関、電気モーターなんでもよいので、そういう奴ら向けのモデルのひな型。
※「ブロックを積みながら」投稿順 index はこちら
※動作確認にはWindows 11の パソコン(64bit)上にインストールしたScilabの以下バージョンを使用しています。
Scilab 2024.0.0
BARXYブロック
今回表示に使用するのは、過去回では使ったことがなかった animated viewer、BARXYというお名前のブロックです。解説ページが以下に。
このブロックを使うと「単なる棒」ですが、何かがくるくる回転する様子を画面上でアニメーション表示することが可能です。入力としてX、Yの二要素を入力すればそれに応じて「棒」を表示してくれるハズなのですが、ちょっとクセ強です。X、Yともそれぞれベクトルで入力するようになってます。上記解説ページに例ありです。
RPM
物理であれば、毎秒xx回転(小数点つき)と言って済ませればよいのだと思います。しかし機械工学系では回転を表示するときRPM(rotations per minute)、毎分xxxx回転などと表示することが多いです。その昔、時計で回転数やら速度やら測っていたころには「毎秒」で計測するのが難しかったから?それに、小数点以下コマケー単位でいろいろ言うのもメンドイからか?どうなんだろ。
ま、ともかく今でもタコメーターなどはみなRPM。今回はRPM単位で回転する様子を表示するための「ひな型」を作製してみたいと思います。
Xcosの実時間スケール
Xcosのシミュレーションのパラメータには「実時間スケール」という項目あり、今までの回では全て0設定でした。多分ゼロ設定だと「成り行き」きっとマシンの性能と設定次第に高速にシミュレーションが行われるのだと思います。知らんけど。
しかし、ここに数値を記入すると実時間を基準としたスピードでシミュレーションを試みてくれるみたいです。1と設定すれば実時間通り、2と設定すれば実時間の2倍の時間をかけてという塩梅。もちろん小数も記入可能。0.5とすれば倍速みたい。どの程度の時間精度があるのかは不明ですが、やってみたところでは結構それらしくシミュレーションが進行している感じです。以下は実時間スケール=1の場合の設定。
今回実験のフロー
今回実験のフローは、何か「回りモノ」(モーターとか)がある前提で、その回転数(RPM)を設定したら実時間で回転の様子をシミュレーションし、「棒の回転」としてアニメーション表示するというものです。こんな感じ。
左の方に 1 RPS と書かれているノードがありますが、ここが「毎秒1回転」の基準信号になってます。そこにRPSという定数を掛けてますが、この変数は以下のコンテキストで計算しているもの。
ここでは、1000RPMとして設定しておいて、1分=60秒で割っているので毎秒の回転数の設定です。
それのCOSとればX、SINとればYが求まります。なお、実際の回転数(RPM)を求めるためにYの信号のゼロクロス(+から‐への遷移)を求め、カウンタでその回数をカウントしてます。
カウント値をそのまま数値で表示しているので、1分=60秒のシミュレーションを行えばRPMでの回転数が求まります(上記のフローでは10秒しかシミュレーションしてないので6分の1の値になってます。)
また、念のためYについては単純な時間グラフでも表示してます。
シミュレーション
毎分100回転くらいのゆっくり目の回転では何の問題もなかったのですが、毎分1000回転にしたら、「Yの単純時間グラフ」が変です。こんな感じ。
横軸が秒なので、全然毎分1000回転=約16回転毎秒とは異なる波形です。それによく見るとピークが「唸って」いる感じ。
やっちまったです。サンプリング周波数が遅すぎるのね。グラフのサンプリングクロックが、デフォルト値のまま 0.1 s になってました。これではサンプリング周波数が遅すぎ。以下のように間隔をツメました。
画面上で見ていると、上の「棒」がクルクル回る(反時計回り)がよく分かります。実時間スケール=1だとちょいと速すぎるので、20くらいにしたらゆっくりと回転する様子が良い感じです。
これみるとXcosの結果を動画にしたくなるな、どうすれば良いかな?