ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Sine Wave

時間のソースとしてシミュレーション時間を使用し、正弦波を生成

ライブラリ

Sources

説明

Sine Wave ブロックは正弦波を出力します。このブロックは、時間ベース モードまたはサンプルベース モードで動作します。

    メモ:   このブロックは、Math Operations ライブラリに表示される Sine Wave Function ブロックと同じです。このブロックのダイアログ ボックスで [時間] パラメーターとして [外部信号を使用] を選択すると、Sine Wave Function ブロックが得られます。

時間ベースモード

Sine Wave ブロックの出力は次の式により判定されます。

y=amplitude×sin(frequency×time+phase)+bias.

時間ベース モードには 2 つのサブモードがあります。これらは連続モードと離散モードです。[サンプル時間] パラメーターの値により、ブロックが連続モードで動作するか、離散モードで動作するかが決まります。

  • 0 (既定の設定) では、ブロックは連続モードで動作します。

  • >0 では、ブロックは離散モードで動作します。

詳細は、オンライン ドキュメンテーションの「 サンプル時間の指定」を参照してください。

連続モードでのブロックの動作

[サンプル時間] パラメーターの値を 0 に設定すると、ブロックは連続モードで動作します。Sine Wave ブロックは、連続モードで動作すると、時間が極めて大きくなるため、精度の損失により不正確になる可能性があります。

離散モードでのブロックの動作

[サンプル時間] パラメーターの値をゼロよりも大きく設定すると、ブロックはサンプル時間をその値に設定した Zero-Order Hold ブロックを駆動している場合と同様に動作します。

この方法で Sine Wave ブロックを使用すると、連続/離散システムのハイブリッドであるモデルではなく、純粋に離散的な正弦波を使ってモデルをビルドできます。ハイブリッド システムは本質的により複雑であり、その結果、シミュレーションにかかる時間が長くなります。

このモードでは、絶対時間に基づくアルゴリズムではなく、インクリメンタル アルゴリズムを使用します。結果として、このブロックは、振動解析や疲労解析のような、不定長時間の実行を目的としたモデルで有効になります。

この異なるインクリメンタル アルゴリズムでは、前のサンプル時間のときに計算された値に基づいて正弦値を計算します。この方法は、次の三角恒等式を使用します。

sin(t+Δt)=sin(t)cos(Δt)+sin(Δt)cos(t)cos(t+Δt)=cos(t)cos(Δt)sin(t)sin(Δt)

これらの恒等式は、次の行列形式で記述できます。

[sin(t+Δt)cos(t+Δt)]=[cos(Δt)sin(Δt)sin(Δt)cos(Δt)][sin(t)cos(t)]

Δt は定数であるため、次の式は定数になります。

[cos(Δt)sin(Δt)sin(Δt)cos(Δt)]

したがって、問題は sin(t+Δt) を取得するために、sin(t) の値と定数行列による行列乗算の 1 つで発生します。

離散モードは丸めの誤差の累積を減らしますが、たとえば (4*eps) のように、ゼロとなることはありません。誤差の累積は、各タイム ステップのブロックの出力計算が前のタイム ステップの出力の値に基づくからです。

離散モードにおける丸め誤差の取り扱い

Sine Wave ブロックが時間ベースの離散モードで動作している場合の丸め誤差は、次のいずれかの方法で対処します。

メソッド理由

Sine Wave ブロックの直下となる位置に Saturation ブロックを挿入します。

Sine Wave ブロックの出力に飽和の制限を設定することで、丸めの誤差の累積に基づいたオーバーシュートを削除できます。

Sine Wave ブロックを、ブロック出力の計算用に数学ライブラリ関数 sin() を使うように設定します。

  1. Sine Wave ブロックのダイアログ ボックスで、[時間][外部信号を使用] に設定し、ブロック アイコンに入力端子が現れるようにします。

  2. Digital Clock ブロックを使用してこの入力端子にクロック信号を接続します。

  3. クロック信号のサンプル時間を、Sine Wave ブロックのサンプル時間に設定します。

ブロック アルゴリズムとは異なり、数学ライブラリの関数 sin() は、他のタイム ステップの出力値とは "無関係に" 各タイム ステップでブロック出力を計算し、丸め誤差の累積を防止します。

サンプルベース モード

サンプルベース モードは、次の式を使って Sine Wave ブロックの出力を計算します。

y=Asin(2π(k+o)/p)+b

ここで、

  • A は、正弦波の振幅です。

  • p は、正弦波の周期です。

  • k は、0 から p-1 の範囲の繰り返し整数値です。

  • o は、信号のオフセット (位相ずれ) です。

  • b は、信号バイアスです。

このモードで、Simulink® は前述の式を使って最初のタイム ステップで k を 0 に設定し、ブロックの出力を計算します。次のタイム ステップでは、Simulink は k を増分してブロックの出力を再計算します。k が p に達すると、Simulink は k を 0 にリセットしてからブロックの出力を計算します。このプロセスは、シミュレーションの終わりまで続行されます。

ブロックの出力を計算するサンプルベース法は、現在のタイム ステップの結果の計算が、前のタイム ステップの結果に依存しません。このようにしてこのモードでは、丸め誤差の累積が回避されます。ただし、このモードには潜在的な 1 つの欠点があります。Sine Wave ブロックが中断後に実行を再開する条件付き実行サブシステムにある場合、ブロックの出力は残りのシミュレーションと同期しなくなる可能性があります。したがって、条件付きで実行される Sine Wave ブロックと残りのモデルとの同期を維持することがモデルの精密性で要求される場合、条件付きで実行されるブロックの出力の計算に時間ベース モードを使う必要があります。

パラメーターの次元

スカラー拡張後、このブロックの数値パラメーターは同じ次元のパラメーターでなければなりません。

  • [ベクトル パラメーターを 1 次元として解釈] オプションをオフに設定すると、ブロックはパラメーターと同じ次元と次元数の信号を出力します。

  • [ベクトル パラメーターを 1 次元として解釈] チェック ボックスがオンで、数値パラメーターが行ベクトルまたは列ベクトルの場合、このブロックはベクトル信号を出力します。そうでない場合、ブロックはパラメーターと同じ次元数と次元の信号を出力します。

サポートするデータ型

Sine Wave ブロックは、double タイプの実数値信号を受け入れ、出力します。

詳細は、Simulink ドキュメンテーションの「 Simulink でサポートされているデータ型」を参照してください。

パラメーターとダイアログ ボックス

正弦波タイプ

このブロックが発生する正弦波のタイプを指定します。時間ベースまたはサンプルベースを指定できます。時間ベースを選択したかサンプルベースを選択したかによって、ダイアログ ボックスの一部のパラメーターが表示されます。

時間

時間変数の値のソースとしてシミュレーション時間を使用するか、外部信号を使用するかを指定します。外部時間ソースを指定した場合、ブロックは時間ソースの入力端子を表示します。

振幅

信号の振幅を指定します。既定値は 1 です。

バイアス

このブロックの出力を生成するための正弦波に追加される定数値を指定します。

周波数

周波数を秒あたりのラジアン単位で指定します。既定の設定は 1 です。このパラメーターは、[正弦波タイプ] を時間ベースに設定している場合にのみ表示されます。

1 周期のサンプル数

区間ごとのサンプル数を指定します。このパラメーターは、[正弦波タイプ] をサンプルベースに設定している場合にのみ表示されます。

位相

位相シフトをラジアン単位で指定します。既定値は 0 です。このパラメーターは、[正弦波タイプ] を時間ベースに設定している場合にのみ表示されます。

オフセット サンプル数

サンプル時間数のオフセット (離散位相シフト) を指定します。このパラメーターは、[正弦波タイプ] をサンプルベースに設定している場合にのみ表示されます。

サンプル時間

サンプリング周期を指定します。既定の設定は 0 です。正弦波のタイプがサンプルベースの場合、サンプル時間は 0 よりも大きくなければなりません。詳細は、オンライン ドキュメンテーションの「 サンプル時間の指定」を参照してください。

ベクトル パラメーターを 1 次元として解釈

このオプションを選択すると、数値パラメーターの列または行列値は、ベクトル出力信号を発生します。そうでない場合、ブロックはパラメーターと同じ次元の信号を出力します。このチェック ボックスをオンにしなかった場合、ブロックはブロックの数値パラメーターと同じ次元数の信号を常に出力します。Simulink ドキュメンテーションの「ソース ブロックの出力の次元の決定」を参照してください。このパラメーターは、外部信号が時間を指定する場合は使用できません。その場合、数値パラメーターが行列の列または行の値である場合は、出力は 1 次元ベクトルです。

特性

サンプル時間

[サンプル時間] パラメーターで指定

スカラー拡張

あり、パラメーターによる

離散化

あり

ゼロクロッシング検出

なし

この情報は役に立ちましたか?