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

固定小数点モデルの再スケーリング

フィードバック コントローラーのモデル例について

このチュートリアルの Simulink® フィードバック設計モデルを開くには、MATLAB® コマンド ラインで「fxpdemo_feedback」と入力します。

フィードバック設計の Simulink モデルは次のブロックとサブシステムで構成されています。

  • 参照

    この Signal Generator ブロックは連続時間参照信号を生成します。これは矩形波を出力するように設定されています。

  • Sum

    この Sum ブロックはプラント出力を参照信号から抽出します。

  • ZOH

    Zero-Order Hold ブロックは連続信号をサンプリングして保持します。このブロックは 0.01 秒ごとに信号を量子化するように設定されています。

  • Analog to Digital Interface

    アナログからデジタル (A/D) インターフェイスは double を固定小数点データ型に変換する Data Type Conversion ブロックで構成されています。これはアナログ入力信号の振幅をデジタル化するハードウェアを表します。実際には、その特性は修正されます。

  • Controller

    デジタル コントローラーはハードウェア ターゲットで実行されているソフトウェアを表すサブシステムです。デジタル コントローラーの実現を参照してください。

  • Digital to Analog Interface

    デジタルからアナログ (D/A) インターフェイスは固定小数点データ型を double に変換する Data Type Conversion ブロックで構成されています。これはデジタル化された信号をアナログ信号に変換するハードウェアを表します。実際には、その特性は修正されます。

  • Analog Plant

    アナログ プラントは伝達関数によって設定され、デジタル コントローラーによって制御されます。実際には、その特性は修正されます。

  • Scope

    モデルにはプラント出力信号を表示する Scope ブロックが含まれています。

シミュレーションの設定

この種類の固定小数点フィードバック コントローラー シミュレーションを設定するには、以下の手順に従います。

  1. すべての設計コンポーネントを識別します。

    実際には、修正された特性を備えた設計コンポーネント (ハードウェア) と変更可能な特性を備えた設計コンポーネント (ソフトウェア) があります。このフィードバック設計では、主なハードウェア コンポーネントは A/D ハードウェア、D/A ハードウェア、およびアナログ プラントです。主なソフトウェア コンポーネントはデジタル コントローラーです。

  2. プラントとコントローラーの理論モデルを開発します。

    このチュートリアルのフィードバック設計では、プラントは伝達関数によって特徴付けられます。

    このチュートリアルのデジタル コントローラー モデルは "z" 領域伝達関数によって記述され、直接型の実現によって実装されます。

  3. プラントとコントローラーの動作を評価します。

    ボード線図を使用してプラントとコントローラーの動作を評価します。これは、すべての数値、演算、および状態が倍精度であるため、理想的な評価です。

  4. システムのシミュレーションを実行します。

    Simulink ソフトウェアと Fixed-Point Designer™ ソフトウェアを使用してフィードバック コントローラー設計のシミュレーションを実行します。シミュレーション環境ではすべてのコンポーネント (ソフトウェア "および" ハードウェア) を、特性が固定されていないものとして処理することができます。

理想的なフィードバック設計

「固定小数点の制御設計スケーリング」モデルの開ループ (コントローラーとプラント) およびプラント専用ボード線図を、以下の図に示します。開ループのボード線図は連続時間、倍精度係数、ストレージの状態、および数学演算の理想的な世界で説明したデジタル コントローラーから得られます。

ボード線図は preload_feedback.m という名前のスクリプトによって生成されるワークスペース変数を使用して作成されました。

デジタル コントローラーの実現

このシミュレーションでは、以下の図に示した固定小数点の直接型の実現を使用してデジタル コントローラーを実装します。このハードウェアでは、16 ビット プロセッサをターゲットにします。変数と係数は、特に数量が ROM またはグローバル RAM に格納されている場合は、一般に 16 ビットで表します。32 ビット数を使用できるのは、CPU レジスタまたはスタック内に一時的に存在する一時変数に限られます。

この実現は次のブロックで構成されます。

  • Up Cast

    Up Cast は A/D ハードウェアをデジタル コントローラーに接続する Data Type Conversion ブロックです。このブロックでは、A/D ハードウェアの出力のワード サイズが 16 ビット数 (基本データ型) の長さになるようにゼロを付加します。

  • Numerator TermsDenominator Terms

    これらの各 Discrete FIR Filter ブロックは CPU ターゲットで実行される重み付き総和を表します。計算のワード サイズと精度には、アキュムレータのワード サイズと精度が反映されます。Numerator Terms は FIR 分子係数を使用して最新の入力を乗算し累積します。Denominator Terms は FIR 分母係数を使用して最新の遅延出力を乗算し累積します。係数は基本データ型を使用して ROM に格納されます。最新の入力は基本データ型を使用してグローバル RAM に格納されます。

  • Combine Terms

    Combine Terms は CPU 内のアキュムレータを表す Sum ブロックです。このワード サイズと精度は RAM の 2 倍 (ダブル ビット) です。

  • Down Cast

    Down Cast は CPU から数字を取り出し RAM に格納する Data Type Conversion ブロックです。ワード サイズと精度は基本データ型に戻される場合にアキュムレータの半分まで削減されます。

  • Prev Out

    Prev Out はメモリ内のフィードバック信号を 1 つのサンプル期間ごとに遅延させる Unit Delay ブロックです。信号は基本データ型を使用してグローバル RAM に格納されます。

直接型の実現-  コントローラーにより次の方程式が直接実装されます。

y(k)=i=0Nbiu(k1)i=1Naiy(k1),

  • u(k – 1) は前のタイム ステップからの "入力" を表します。

  • y(k) は現在の出力を表し、y(k – 1) は前のタイム ステップからの出力を表します。

  • bi は FIR 分子係数を表します。

  • ai は FIR 分母係数を表します。

y(k) 内の最初の加算は、アキュムレータの最新の入力と分子係数の乗算と累積を表します。y(k) 内の 2 番目の加算は、アキュムレータの最新の出力と分母係数の乗算と累積を表します。FIR 係数、入力および出力はすべて 16 ビット数 (基本データ型) で表されるため、これらの数字で乗算を行う場合は 32 ビットの出力 (アキュムレータ データ型) が生成されます。

シミュレーション範囲データを使用した小数部の長さの推奨

以下の例では、固定小数点ツールを使用してフィードバック コントローラー モデルに関連する固定小数点データ型のスケーリングを絞り込む方法を示します。ツールでは複数のワークフローを使用して理想的な倍精度数で記述したデジタル コントローラーを固定小数点数で実現した値に変換できますが、この例では以下の方法を使用します。

  • スケーリングでの初期推奨。固定小数点のワード サイズとスケーリングで妥当な推奨値を使用して初期シミュレーションを実行します。このタスクは、最適スケーリングを推奨することがいかに困難であるかを示します。

  • 範囲の収集。倍精度数を使用して固定小数点データ型をグローバルにオーバーライドします。Simulink ソフトウェアによってシミュレーション結果のログが作成され、固定小数点ツールにこの結果が表示されます。

  • 自動データ型指定。自動データ型指定の手順を実行します。この手順では倍精度数のシミュレーション結果を使用して、適切に設定されたブロックの固定小数点スケーリングを推奨します。固定小数点ツールを使用すると、推奨スケーリングを選択的に適用することができます。この後で、モデルのアナログ プラントの入力と出力を調べることで、結果の品質を特定します。

スケーリングでの初期推奨

各ブロックをスケーリングする場合の初期推奨は、モデルの各ブロック マスクで既に指定されています。このタスクは、最適スケーリングを推奨する場合の難易度を示します。

  1. fxpdemo_feedback モデルを開きます。

  2. 固定小数点ツールを開きます。モデルで、[解析][データ型の設計][固定小数点ツール] を選択します。

  3. 固定小数点ツールで、ツールストリップの [システムの準備] セクションにある [設計対象のシステム] で、固定小数点に変換するサブシステムを選択します。この例では、[Controller] を選択します。

  4. [範囲の収集] セクションで、範囲の収集方法として [シミュレーション範囲] を選択します。

  5. [範囲の収集] ボタンの矢印をクリックして [現在の設定を使用] を選択します。[範囲の収集] ボタンをクリックし、シミュレーションを開始します。固定小数点ツールは現在設定されているデータ型を使用してモデルのシミュレーションを実行し、収集された範囲情報を Run 1 というタイトルの実行に格納します。収集された範囲はスプレッドシートの [SimMin] 列と [SimMax] 列、または [結果の詳細] ペインで確認できます。

    固定小数点ツールで Up Cast ブロックの含まれる行が強調表示され、この結果に問題があることが示されます。[結果の詳細] ペインには、ブロックが 23 回飽和したことが示され、これはスケーリングの推測が不正確であることを示しています)。

  6. モデルの、Analog Plant という名前の Transfer Fcn ブロックの出力にあるアンテナ アイコンをクリックします。

    シミュレーション データ インスペクターはプラント出力に関連する信号をプロットします。

プラント出力信号のプロットはスケーリングでの初期推奨を反映します。ボード線図設計は閉ループ システムに適合する線形応答を生成するように求められます。明らかに、応答は非線形です。重大な量子化の影響により、非線形特性が生じます。固定小数点設計では、量子化の影響を許容レベルにまで下げるスケーリングを見つけることが重要な部分になります。

範囲の収集

データ型オーバーライドでは、倍精度データ型により固定小数点データ型をグローバルにオーバーライドできるため、量子化の影響を受けません。オートスケールを実行して忠実度の高い固定小数点スケーリングを推奨する際に、固定小数点ツールではこれらのシミュレーション結果を使用します。

  1. [範囲の収集] ボタンの矢印をクリックして [倍精度] を選択します。

  2. [範囲の収集] ボタンをクリックします。

    Simulink ソフトウェアはデータ型オーバーライド モードで fxpdemo_feedback モデルのシミュレーションを実行し、結果を Ranges (Double) 実行に格納します。その後、固定小数点ツールのスプレッドシートに、実行結果が表示されます。Ranges (Double) 実行のコンパイルされたデータ型 ([CompiledDT]) 列には、モデルのブロックによってシミュレーション中に double データ型が使用されたことが示されます。

  3. モデルの、Analog Plant という名前の Transfer Fcn ブロックの出力にあるアンテナ アイコンを再度クリックします。

    シミュレーション データ インスペクターはプラント出力 (上側の軸) に関連する信号の Ranges (Double) バージョンおよび Run 1 バージョンの両方をプロットします。[比較] をクリックして、その信号のアクティブ バージョンと参照バージョンの間の差をプロットします。理想的な (double データ型) プラント出力信号と固定小数点バージョンを比較します。

    ヒント

    シミュレーション データ インスペクターのメニュー バーから、ズーム ツールを使用して特定領域をズームします。

自動データ型指定

自動データ型指定の手順を使用すると、シミュレーションの全範囲をスパン中に出力データ型の最高精度を得ることができます。

設計範囲情報が提供されないため、固定小数点ツールは、データ型の推奨のためのシミュレーション実行中に収集されたシミュレーション範囲データを使用します。[シミュレーションの最小値/最大値に対する安全余裕 (%)] パラメーター値はシミュレーションの生データ値を乗算します。このパラメーターを 1 より大きい値に設定すると、固定小数点データ型を使用しているときにオーバーフローが発生する可能性が低くなります。固定小数点ツールによるデータ型推奨の計算方法の詳細については、固定小数点ツールによるデータ型の推奨方法を参照してください。

量子化の非線形効果により、固定小数点シミュレーションでは理想的な double ベースのシミュレーションとは異なる結果が生じます。固定小数点シミュレーションの信号は double シミュレーションの信号よりも大きい範囲または小さい範囲をカバーできます。範囲が大きくなると、オーバーフローや飽和が発生する可能性があります。安全余裕によってこの可能性は低くなりますが、シミュレーション精度の低下を招く可能性もあります。

メモ

シミュレーションの最大値と最小値に設計で意図された全操作範囲が含まれる場合は、固定小数点ツールによって有意な自動データ型指定の結果を得ることができます。

Controller サブシステムの自動データ型指定を実行します。このサブシステムは、ターゲット上で実行されているソフトウェアを表し、最適化を必要とします。

  1. 固定小数点ツールのツールストリップにある [データ型の変換] セクションで、[設定] ボタンをクリックします。[シミュレーションの最小値/最大値に対する安全余裕 (%)] パラメーターを 20 に設定します。その他すべてのパラメーターについては既定の設定を使用します。

  2. [データ型を推奨] をクリックします。

  3. ダイアログ ボックスで [Ranges (Double)] を選択し、次に [OK] をクリックします。

    固定小数点ツールは、[固定小数点ツールによる変更に対して出力データ型の設定をロックする] パラメーターがオフになっているすべての固定小数点ブロックのスケーリングを解析します。

    固定小数点ツールでは、シミュレーション値の全範囲を扱いつつ精度が最大限に高められるように、Ranges (Double) 実行に格納された最小値と最大値を使用して各ブロックのデータ型を推奨します。ツールのスプレッドシートには推奨されたデータ型が表示されます。

  4. 固定小数点ツールが指定するスケーリングを確認します。各ブロックの推奨スケーリングを受け入れることができます。スプレッドシートで、関連する [Accept] チェック ボックスを選択します。既定の設定では、固定小数点ツールは現在のスケーリングとは異なるすべての推奨スケーリングを受け入れます。この例では、実行に関連する [Accept] チェック ボックスが Controller Subsystem の各ブロックに対して選択されていることを確認します。

  5. 固定小数点ツールで、[データ型を適用] ボタンをクリックします。

    固定小数点ツールによって、前の手順で受け入れた推奨スケーリングが Controller Subsystem のブロックに適用されます。

  6. ツールストリップの [検証] セクションで、[組み込み型によるシミュレーション] ボタンをクリックします。

    Simulink では、適用した新しいスケーリングを使用して fxpdemo_feedback モデルをシミュレートします。このシミュレーションについての情報は Embedded という実行名で格納されます。その後、固定小数点ツールには、固定小数点データのログを作成したブロックに関する情報が表示されます。Embedded 実行のコンパイルされたデータ型 ([CompiledDT]) 列には、Controller Subsystem のブロックによって固定小数点データ型が新しいスケーリングと共に使用されたことが示されます。

  7. モデルの、Analog Plant という名前の Transfer Fcn ブロックの出力にあるアンテナ アイコンを再度クリックします。シミュレーション データ インスペクターで、[比較] ボタンをクリックします。

    1. [ベースライン] の横で、[Ranges (Double)] 実行を選択します。[比較対象] の横で、[Embedded] 実行を選択します。

    2. [比較] をクリックします。

      シミュレーション データ インスペクターは、プラント出力信号の固定小数点のバージョンと double オーバーライドのバージョンだけでなく、その差もプロットします。

固定小数点実行によって表現されるプラント出力信号は定常状態に達しますが、A/D 設計が最適でないために小さいリミット サイクルが存在します。

関連する例

詳細