Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

Requirements Table ブロックのトラブルシューティング

Requirements Table ブロックの使用時に、構文エラーを解決し、矛盾する要件セットや不完全な要件セットを特定し、書き込み前の読み取りのエラーを見つけることができます。これらの問題は、個々の要件のセマンティック エラーに起因している場合もあれば、要件セットの問題が原因になっている場合もあります。

セルのエラーの解決

テーブル セルのエラーは、構文エラーや [シンボル] ペインで定義されていないデータがブロックで特定されると表示されます。セルの横の警告アイコン をポイントするかクリックして、警告メッセージを確認します。これらの問題に対処せずにシミュレーションを実行すると、診断ウィンドウに詳細が読み込まれます。

テーブル セルの編集時にすべての問題がブロックで検出されるわけではありません。たとえば、要件の持続時間がベクトルまたは行列として評価される場合、コンパイル エラーが発生します。それらの警告やエラーは診断ウィンドウに表示されます。

ブロックの要件セットの問題についての解析

Requirements Table ブロックの要件では、前提条件、事後条件、およびアクションで使用されるデータがシミュレーションのタイム ステップごとに一意に定義されている必要があります。この原則に違反している場合、違反の原因はブロックで自動的には検出されません。Simulink® Design Verifier™ がある場合は、Requirements Table ブロックを解析して原因を見つけることができます。ブロックで原因が見つかると、その原因がテーブルで強調表示され、各違反の発生状況が [解析結果] ペインで "問題" として報告されます。要件を解析するには、Requirements Table ブロックを開きます。[テーブル] タブの [解析] セクションで [テーブルの解析] をクリックします。

既定では、Requirements Table ブロックの入力データは独立して生成されるものと仮定されます。入力データが独立していない場合、問題を防ぐために要件を過剰に指定しなければならないことがあります。この問題は次のようにして回避できます。

  • 原因のデータをモデル全体のコンテキストで特定するようにブロックを構成します。[テーブル] タブの [解析] セクションで、[テーブルの解析] メニューを展開し、[モデル全体を含む] を有効にします。

  • 物理的または数学的な制限によってデータが特定の値にならない状況に基づいて仮定を指定します。要件への仮定の追加を参照してください。

解析では、不整合、不完全性、および書き込み前の読み取りの 3 種類の問題が検出されます。

不整合の問題

不整合の問題は、入力値の単一の組み合わせに対してブロックで複数の動作が実行される可能性がある場合に発生します。たとえば、次のテーブルは矛盾する要件を示しています。解析すると、不整合の問題が 2 つ検出されます。赤で強調表示され、警告アイコン が表示されています。

This table illustrates the results of analysis that shows the inconsistent requirements and how the table highlights them.

[解析結果] ペインに、不整合の問題に関する追加の詳細が表示されます。

This shows an example of incompatibilities results that occurs when you analyze the requirements shown above.

不完全性の問題

要件に不完全性の問題があると見なされるのは、可能性があるすべての入力値に対する出力がブロックで指定されていない場合です。たとえば、モデルの動作の生成の例で使用しているモデルでは、テーブルに不完全性の問題が 2 つ含まれています。

This shows an example of incompleteness results that occurs when you analyze the requirements in the generator_mode_example model.

これらの問題を解決するには、u1u20 以下になる状況を定義する要件を導入するか、u1u20 以上に制約する仮定を作成します。仮定を記述する方法の詳細については、要件への仮定の追加を参照してください。

書き込み前の読み取りの問題

書き込み前の読み取りの問題は、まだ定義されていないデータを要件で読み取ろうとすると発生します。ほとんどの場合、書き込み前の読み取りの問題については、前提条件と事後条件で出力データを呼び出さないようにするか、要件を順番に指定することで、発生する可能性を最小限に抑えることができます。詳細については、Requirements Table ブロックの階層の確立を参照してください。たとえば、次のテーブルでは、出力データ y2 に値が代入される前に最初の要件で y2 を読み取っています。

This image shows an example table that produces a read-before-write issue. The action for the first requirement reads y2 before it is written.

要件を解析すると、書き込み前の読み取りの問題がブロックで検出されます。

This image shows the analysis results from the table shown previously.

要件を順番にリストし、ブロックで [前提条件で出力を有効にする] プロパティを有効にすると、出力データに依存する要件の前提条件を作成できます。前提条件で出力を有効にするを参照してください。たとえば、要件の順序の使用例で使用しているモデルでは、他の要件で必要になる前にローカル データを指定しているため、この要件の順序では要件の問題は発生しません。要件の順序を変更して要件 3 と 4 を先にリストすると、要件の解析時に書き込み前の読み取りの問題が 2 つ検出されます。

メモ

記述された要件に書き込み前の同じデータを読み取る要件が 2 つよりも多く含まれている場合、解析では問題がある要件のうちの最初にリストされている要件についてしか問題が検出されません。その問題を解決した後、解析を再度実行して、次の書き込み前の読み取りの問題を検出してください。

厳格な要件と柔軟な要件の解析

データ間の関係の定義方法に応じて、"厳格""柔軟" の 2 種類の要件を確立できます。個々の要件に加え、ブロック内の要件のセットも厳格または柔軟にすることができます。

厳格な要件

要件の事後条件で正確な値を指定する場合、または要件でアクションのみを指定する場合、その要件は "厳格" になります。このような要件の事後条件は 2 つの等号 == で表現します。たとえば、事後条件が y == 0 である要件は厳格です。要件セットの各要件が厳格であれば、その要件セットは厳格になります。

柔軟な要件

要件の事後条件で値の範囲を満たすことができる場合、その要件は "柔軟" になります。たとえば、事後条件が y >= 0y >= 0 && y < -2 である要件は柔軟です。さらに、複数の値を指定する事後条件の場合も柔軟な要件が作成されます。たとえば、事後条件が u == 3 || u == 4 である要件は柔軟です。要件セットの少なくとも 1 つの要件が柔軟であれば、その要件セット全体が柔軟になります。

解析の制限

Requirements Table ブロックの一部の機能については、要件セットが厳格である場合しか解析できません。これらの機能には以下が含まれます。

  • getPrevious 演算子。

  • 永続変数。

  • Requirements Table ブロックの出力または入力 ([解析用の設計モデル出力として扱う] プロパティが有効な場合) としての配列の使用。

  • 一部の関数。互換性のない関数が含まれていると、テーブルの解析時にエラーが発生します。原因となっている関数がエラー メッセージで示されます。

参考

関連するトピック