Main Content

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

Memory

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

  • Memory block

ライブラリ:
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 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus

出力

すべて展開する

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

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | 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 の信号オブジェクトに関連付ける] が有効になります。

詳細については、C Data Code Interface Configuration for Model Interface Elements (Simulink Coder)を参照してください。

プログラムでの使用

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

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

依存関係

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

プログラムでの使用

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

ブロックの特性

データ型

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

直達

はい

多次元信号

はい

可変サイズの信号

いいえ

ゼロクロッシング検出

いいえ

拡張機能

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

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

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

バージョン履歴

R2006a より前に導入