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

Memory

前のタイム ステップでの入力を出力

  • ライブラリ:
  • Simulink / Discrete

    HDL Coder / Discrete

説明

Memory ブロックは、1 メジャー積分タイム ステップで入力を保持し、遅延します。反復サブシステム内に置いた場合は、1 回の反復ごとに入力を保持して遅延します。このブロックは連続信号と離散信号を受け入れます。ブロックは 1 つの入力を受け入れ、1 つの出力を生成します。各信号は、スカラー、ベクトル、行列、または N 次元配列にすることができます。入力が非スカラーの場合、入力のすべての要素が同じタイム ステップで保持され、遅延します。

最初のタイム ステップのブロック出力は、[初期条件] パラメーターを使って指定します。十分注意してこのパラメーターを選択すると、不要な出力の動作を最小限度に抑えることができます。ただし、サンプル時間を指定することはできません。このブロックのサンプル時間は使用するソルバーのタイプによって異なり、継承するように指定することもできます。サンプル時間を継承するかソルバーに基づくかは [サンプル時間を継承] パラメーターで決まります。

ヒント

以下の条件がどちらもあてはまる場合は、Memory ブロックを使用しないでください。

  • モデルで可変ステップ ソルバー ode15s または ode113 を使用する場合。

  • シミュレーション中にブロックへの入力が変化する場合。

Memory ブロックが離散サンプル時間を継承する場合、このブロックは Unit Delay ブロックと似た働きをします。ただし、Memory ブロックは状態のログ作成をサポートしません。最終状態のログを作成する必要がある場合は、Unit Delay ブロックを使用するようにしてください。

同様のブロックとの比較

Memory ブロック、Unit Delay ブロック、および Zero-Order Hold ブロックは、類似の機能を提供しますが、異なる機能をもっています。また、使用目的も異なります。

この表は各ブロックに推奨される使用方法を示しています。

ブロックブロックの使用目的リファレンスの例
Unit Delay指定された離散サンプル時間を使用して遅延を実装します。ブロックは離散サンプル時間の信号を受け入れ、出力します。
メモリ1 メジャー積分タイム ステップで遅延を実装します。理想的には、ブロックで連続信号 (マイナー タイム ステップで固定された信号) を受け入れ、マイナー タイム ステップで固定された信号を出力します。
Zero-Order Hold連続サンプル時間の入力信号を離散サンプル時間の出力信号に変換します。

各ブロックには次の機能があります。

機能MemoryUnit DelayZero-Order Hold
初期条件の指定ありありいいえ、t = 0 の際のブロック出力が入力値と一致しなければならないため
サンプル時間の指定いいえ、ブロックはサンプル時間のみを継承できるため (モデル全体に使用される駆動ブロックまたはソルバーから)ありあり
フレームベースの信号のサポートなし ありあり
状態のログ作成のサポートなしありなし

バス サポート

Memory ブロックはバス対応ブロックです。入力は、次の制限を満たすバーチャルまたは非バーチャル バス信号です。

  • [初期条件] は、ゼロ、非ゼロのスカラー、または有限数値構造体でなければなりません。

  • [初期条件] がゼロまたは構造体で [状態名] が指定されると、入力はバーチャル バスになることができません。

  • [初期条件] が非ゼロのスカラーの場合、[状態名] は指定できません。

初期条件構造体の指定方法の詳細は、バス信号の初期条件の指定を参照してください。

Memory ブロックへの非バーチャル バス入力のすべての信号は、関連するバス オブジェクトの要素が継承されたサンプル時間を指定する場合でも、同じサンプル時間をもたなければなりません。Rate Transition ブロックを使って個々の信号のサンプル時間、またはバス内のすべての信号のサンプル時間を変更することができます。詳細については、バス信号サンプル時間の指定およびバス対応ブロックを参照してください。

バス配列を Memory ブロックの入力信号として使用できます。[初期条件] パラメーターには次の値を指定できます。

  • 0。この場合、バス配列内にある個々の信号はすべて初期値 0 を使用します。

  • バス配列内にある個々の信号に対して初期条件を指定する構造体の配列。

  • バス型で定義される各要素の初期条件を指定する単精度スカラー構造体。この手法を使用して配列の各バスに同じ初期条件を指定します。

バス配列の定義と使用方法の詳細は、バス配列へのバスの統合を参照してください。

端子

入力

すべて展開する

入力信号。スカラー、ベクトル、行列または N 次元配列として指定します。入力は連続または離散で、Simulink® がサポートする任意のデータ型の実数値または複素数値を含むことができます。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated | bus

出力

すべて展開する

出力は前のタイム ステップからの入力です。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated | bus

パラメーター

すべて展開する

メイン

初期積分ステップでの出力を指定します。組み込み入力データ型を使用しない場合は、この値は 0 でなければなりません。

プログラムでの使用

ブロック パラメーター: InitialCondition
型: 文字ベクトル
値: スカラー | ベクトル
既定の設定: '0'

サンプル時間を駆動ブロックから継承します。

  • 駆動ブロックが離散サンプル時間の場合、そのサンプル時間を継承します。

  • 駆動ブロックが連続サンプル時間の場合は、このチェック ボックスをオンにしても効果はありません。サンプル時間はモデルのシミュレーションに使用されるソルバーのタイプで決まります。

このチェック ボックスをオフにした場合、サンプル時間はモデルのシミュレーションに使用されるソルバーのタイプで決まります。

  • ソルバーが可変ステップ ソルバーの場合、ブロックのサンプル時間は連続ですが、次のマイナー タイム ステップに固定されます。[0, 1]

  • ソルバーが固定ステップ ソルバーの場合、[0, 1] サンプル時間は、サンプル時間伝播後、ソルバーのステップ サイズに変換されます。

プログラムでの使用

ブロック パラメーター: InheritSampleTime
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

線形化と平衡化を行うときに入力を出力するのに選択します。この選択により、ブロックのモードは直達に設定されます。

このチェック ボックスを選択すると、関数 linmod、関数 dlinmod、または関数 trim の使用時にモデルの状態配列が変わります。この新しい状態配列を抽出するには、次のコマンドを使用します。

まず、次のコマンドを使ってモデルをコンパイルします。ここで model は Simulink モデルの名前です。

    [sizes, x0, x_str] = model([],[],[],'lincompile'); 

次に、このコマンドでコンパイルを終了させます。

  model([],[],[],'term'); 

Simulink モデルの状態の cell 配列である出力引数 x_str には、新しい状態配列が含まれます。状態のベクトルを関数 linmod、関数 dlinmod、または関数 trim に入力として渡すと、状態ベクトルはこの新しい状態配列を使用しなければなりません。

プログラムでの使用

ブロック パラメーター: LinearizeMemory
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

Memory ブロックが別々のサンプル時間をもつ信号により駆動する場合、選択すると Memory ブロックを単位遅れに線形化します。

プログラムでの使用

ブロック パラメーター: LinearizeAsDelay
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

状態属性

ブロックの状態に固有名を割り当てるにはこのパラメーターを使用します。既定の設定は ' ' です。このフィールドが空白のままの場合、名前は割り当てられません。このパラメーターを使用する場合、以下のことを考慮してください。

  • 有効な識別子は英字またはアンダースコア文字で始まり、英数字またはアンダースコア文字が続きます。

  • 状態名は選択されたブロックに対してのみ適用されます。

このパラメーターを設定し、[適用] ボタンをクリックすると、[状態名を Simulink の信号オブジェクトに関連付ける] が有効になります。

詳細については、個別の信号、状態、およびパラメーター データ要素へのストレージ クラスの適用 (Simulink Coder)を参照してください。

プログラムでの使用

ブロック パラメーター: StateName
型: 文字ベクトル
値: 一意の名前
既定の設定: ''

状態名が Simulink 信号オブジェクトに関連付けられるようにするには、このチェック ボックスをオンにします。

依存関係

このパラメーターを有効にするには、[状態名] の値を指定します。このパラメーターは、モデル コンフィギュレーション パラメーター [信号の関連付け][なし] 以外の値に設定している場合にのみ表示されます。

このチェック ボックスをオンにすると、[コード生成ストレージ クラス] が無効になります。

プログラムでの使用

ブロック パラメーター: StateMustResolveToSignalObject
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

ターゲット パッケージが定義する信号オブジェクト クラスを選択してカスタム ストレージ クラスのパッケージを選択します。たとえば、組み込みパッケージ mpt からカスタム ストレージ クラスを適用するには [mpt.Signal] を選択します。Embedded Coder® で ERT ベースのコード生成ターゲットを使用している場合を除き、カスタム ストレージ クラスは生成されたコードに影響しません。

目的のクラスがリストに表示されない場合は、[クラス リストのカスタマイズ] を選択します。詳細については、Target Class Does Not Appear in List of Signal Object Classes (Embedded Coder)を参照してください。

ストレージ クラスの詳細については、個別の信号、状態、およびパラメーター データ要素へのストレージ クラスの適用 (Simulink Coder)を参照してください。カスタム ストレージ クラスの詳細については、Apply Built-In and Customized Storage Classes to Data Elements (Embedded Coder)を参照してください。

プログラムでの使用

ブロック パラメーター: StateSignalObject
型: 文字ベクトル
値: 'Simulink.Signal' | '<StorageClass.PackageName>'
既定の設定: 'Simulink.Signal'

コード生成の状態ストレージ クラスを選択します。

[信号オブジェクト クラス] を使用して、Simulink 以外のパッケージからカスタム ストレージ クラスを選択します。

依存関係

このパラメーターを有効にするには、[状態名] の値を指定します。

プログラムでの使用

ブロック パラメーター: StateStorageClass
型: 文字ベクトル
値: 'Auto' | 'Model default' | 'ExportedGlobal' | 'ImportedExtern' | 'ImportedExternPointer' | 'Custom' | ...
既定の設定: 'Auto'

const または volatile などのストレージ型修飾子を指定します。

メモ

TypeQualifier は将来のリリースで削除されます。ストレージ型修飾子をデータに適用するには、カスタム ストレージ クラスとメモリ セクションを使用します。Embedded Coder で ERT ベースのコード生成ターゲットを使用している場合を除き、カスタム ストレージ クラスとメモリ セクションは生成されたコードに影響しません。

シミュレーション時、このブロックは次の値を使用します。

  • 状態名が関係付けられる信号オブジェクトの初期値

  • 信号オブジェクトの最小値と最大値

詳細については、データ オブジェクトを参照してください。

依存関係

このパラメーターを有効にするには、[コード生成ストレージ クラス][ExportedGlobal][ImportedExtern][ImportedExternPointer] または [Model default] に設定します。このパラメーターは以前にこの値を設定している場合を除き、非表示です。

プログラムでの使用

ブロック パラメーター: RTWStateStorageTypeQualifier
型: 文字ベクトル
値: '' | 'const' | 'volatile' | ...
既定の設定: ''

ブロックの特性

データ型

Boolean | bus | double | enumerated | fixed point | integer | single

直接フィードスルー

はい

多次元信号

はい

可変サイズの信号

いいえ

ゼロクロッシング検出

いいえ

拡張機能

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

PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。

固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。

R2006a より前に導入