Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

tachorpm

タコメーター パルスからの RPM 信号の抽出

説明

rpm = tachorpm(x,fs) では回転速度信号 rpmfs Hz のレートでサンプリングされたタコメーター パルス信号ベクトル x から抽出されます。

タコメーター パルス信号がない場合、rpmtrack を使用して振動信号から rpm を抽出します。

[rpm,t,tp] = tachorpm(x,fs) では、時間ベクトル t と検出されたパルスの場所 tp も返さます。

[___] = tachorpm(x,fs,Name,Value) では、Name,Value のペアと前述のいずれかの構文を使用してオプションを指定します。

出力引数のない tachorpm(___) では、生成された RPM 信号およびタコメーター信号と検出されたパルスがプロットされます。

すべて折りたたむ

300 Hz でサンプリングされたタコメーターをシミュレートした信号を読み込みます。

load tacho

tachorpm を既定の値で使用して、RPM 信号を計算および可視化します。

tachorpm(Yn,fs)

RPM のピークを取得するため、当てはめる点を増やします。点が多すぎると、過適合になります。この結果は、ピーク周囲の領域にズーム インすることによって確認します。

tachorpm(Yn,fs,'FitPoints',600)

axis([0.47 0.65 1320 1570])

より良い結果を得るために適度な点の数を選択します。

tachorpm(Yn,fs,'FitPoints',100)

ホワイト ガウス ノイズをタコメーター信号に付加します。既定のパルス検出のメカニズムは、パルスを捉えずに、ギザギザになった信号のプロファイルを返します。この結果を 2 秒の時間間隔にズーム インすることによって確認します。

rng default
wgn = randn(size(Yn))/10;
Yn = Yn+wgn;

[rpm,t,tp] = tachorpm(Yn,fs,'FitPoints',100);

figure
plot(t,Yn,tp,mean(interp1(t,Yn,tp))*ones(size(tp)),'+')
hold on
sl = statelevels(Yn);
plot(t,sl(1)*ones(size(t)),t,sl(2)*ones(size(t)))
hold off
xlim([9 10])

パルスの検出を向上するために、状態レベルを調整します。

sl = [0 0.75];

[rpm,t,tp] = tachorpm(Yn,fs,'FitPoints',100,'StateLevels',sl);

plot(t,Yn,tp,mean(interp1(t,Yn,tp))*ones(size(tp)),'+')
hold on
plot(t,sl(1)*ones(size(t)),t,sl(2)*ones(size(t)))
hold off
xlim([9 10])

入力引数

すべて折りたたむ

タコメーター パルス信号。行ベクトルまたは列ベクトルとして指定します。

例: double(chirp((-1.5:1/2e2:1.5),14,1.1,8,'quadratic')>0.98) は、200 Hz で 3 秒間サンプリングされ、2 次のランナップまたはコーストダウンのテスト時に取得されたタコメーター信号に類似します。

サンプル レート。正のスカラーとして Hz 単位で指定します。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: 'PulsesPerRev',3,'OutputFs',1e3 は、1 回転あたり 3 つのタコメーター パルスがあり、返される RPM 信号が 1 kHz でサンプリングされることを指定します。

1 回転あたりのタコメーター パルス数。'PulsesPerRev' と実数スカラーとで構成されるコンマ区切りのペアとして指定します。

パルスを識別するために使用される状態レベル。'StateLevels' と、2 要素実数ベクトルとで構成されるコンマ区切りのペアとして指定します。ベクトルの最初の要素は Low 状態レベルに対応し、2 番目の要素は High 状態レベルに対応します。すべてのパルスのエッジが状態レベルの 10% 以内で交差するように両方の状態レベルを選択します。このオプションを指定しない場合、tachorpm は、ヒストグラム法を使用して、関数 statelevels と同様に自動的にレベルを計算します。

出力のサンプル レート。'OutputFs' および実数スカラーで構成されるコンマ区切りペアとして指定します。

当てはめ手法。'FitType' と、'smooth' または 'linear' のいずれかで構成されたコンマ区切りのペアとして指定します。

  • 'smooth' — 最小二乗 B スプラインをパルス RPM 値に当てはめます。

  • 'linear' — パルス RPM 値の間で線形に内挿します。

B スプライン ブレークポイント。'FitPoints' および実数スカラーで構成されるコンマ区切りペアとして指定します。ブレークポイントの数は、曲線の滑らかさと基になるデータへの近接性のトレードオフに影響します。ブレークポイントの選択が多すぎると、過適合になる場合があります。'FitType''linear' に設定されている場合、この引数は無視されます。

出力引数

すべて折りたたむ

回転速度。1 分あたりの回転数で表されるベクトルとして返されます。rpm は、x と同じ長さです。

時間ベクトル。秒単位表記の正の値のベクトルとして返されます。

パルスの位置。秒単位表記の正の値のベクトルとして返されます。

アルゴリズム

関数 tachorpm は以下のステップを実行します。

  1. statelevels を使用して、タコメーター信号の Low および High の状態を決定します。

  2. risetimefalltime を使用して、各パルスの開始および終了時間を検出します。次に、各パルスの時間を見つけるために、これらの測定値を平均します。

  3. diff を使用してパルスの中心間の時間間隔を求めます。さらに、RPM = 60 / Δt を使用してパルス間の中点で RPM 値を計算します。

  4. 'FitType''smooth' に指定した場合、関数はスプラインを使用して最小二乗近似を実行します。'FitType''linear' に指定した場合、関数は interp1 を使用して線形内挿を実行します。

参照

[1] Brandt, Anders. Noise and Vibration Analysis: Signal Analysis and Experimental Procedures. Chichester, UK: John Wiley & Sons, 2011.

[2] Vold, Håvard, and Jan Leuridan. “High Resolution Order Tracking at Extreme Slew Rates Using Kalman Tracking Filters.” Shock and Vibration. Vol. 2, 1995, pp. 507–515.

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2016b で導入