Main Content

緩いバリアント選択肢での未使用の変数の作成を防止

この例では、伝播元ブロックのバリアント条件の方が、伝播先ブロック間のバリアント条件より緩い場合に、Simulink® モデルによって生成コード内に未使用の変数が作成されるのを防止する方法を説明します。生成コード内の未使用の変数の作成を防止することで、MISRA C:2012 ガイドラインのルール 2.2 に準拠した C コードが生成される可能性が高まります。

モデルの説明

このモデルでは、強調表示された信号の伝播元は EvlnB ブロックです。信号の伝播先は VariantSource3 です。EvlnB のバリアント条件は A > 0 で、VariantSource3 のバリアント条件 A > 0 && B == 1 よりも緩くなっています。

Embedded Coder を使用した C コードの生成

A の値は 1 で、B の値は 0 であると仮定します。

Embedded Coder™ を使用してコードを生成するとき、EvlnB のバリアント条件 A > 0 は、true として評価され、VariantSource3 の条件 A > 0 && B == 1false として評価されます。しかし、バリアントのすべての選択肢についてコードが生成されます。生成コード内で、変数 rtb_Switch が作成されます。この変数は、EvlnB ブロック内部にある Switch ブロックに対応します。rtb_Switch は、A > 0 && B == 1true として評価される場合にのみ使用されます。この例では、A > 0 && B == 1false として評価されるため、rtb_Switch は未使用になります。

生成コード内で未使用の変数が作成される原因となるモデル化の問題を防止するには、[モデル設定][診断] を選択します。[詳細設定] パラメーター セクションを展開し、ダイアログ ボックスの一番下までスクロールします。[バリアントに関するモデル化の問題] セクションで、[信号のソースと接続先におけるバリアント条件の不一致] パラメーターを warning または error に設定します。このパラメーターを設定すると、コード生成中に未使用に関する変数の警告が表示されるようになります。

参考