Main Content

チャートのアクション言語の変更

Simulink® モデルの Stateflow® チャートには、ステート アクションと遷移アクションの構文を定義するアクション言語プロパティがあります。チャート キャンバスの左下隅にあるアイコンが、チャートのアクション言語を示します。

  • アクション言語は MATLAB®

  • アクション言語は C。

チャートのアクション言語は、[チャート] プロパティ ダイアログ ボックスの [アクション言語] ボックスで変更できます。詳細については、アクション言語構文としての MATLAB と C の相違点を参照してください。

既定のアクション言語の変更

MATLAB は、新しい Stateflow チャートの既定のアクション言語構文です。C をアクション言語として使用するチャートを作成するには、次のように入力します。

sfnew -C

新しいチャートの既定のアクション言語を変更するには、関数 sfpref を使用します。たとえば、C を新しいチャートのアクション言語として設定するには次のように入力します。

sfpref(ActionLanguage="C");

MATLAB をアクション言語として使用する場合の自動修正

MATLAB をアクション言語として使用する Stateflow チャートでは、以下の一般的な C 構造が MATLAB 構文に自動修正されます。

  • a++a-- などのインクリメント演算およびデクリメント演算。たとえば、a++a = a+1 に変更されます。

  • a += ba –= ba *= ba /= b などの代入演算。たとえば、a += ba = a+b に変更されます。

  • a != b!a などの評価演算。たとえば、a != ba ~= b に変更されます。

  • コメント マーカー // および /* */% に変更されます。

この基本設定を無効にするには、関数 sfpref を使用します。

sfpref(EnableLabelAutoCorrectionForMAL=false);

C から MATLAB への構文変換

空でないチャートの場合は、アクション言語プロパティを C から MATLAB に変更すると、チャートの上部に通知が表示されます。この通知では、C 構文を MATLAB 構文に変換するオプションが提供されます。通知内でリンクをクリックすると、Stateflow でチャート内の構文が変換されます。次のような C 構文構造が変換されます。

  • 0 ベースのインデックス。

  • a++a-- などのインクリメント演算およびデクリメント演算。たとえば、a++a = a+1 に変更されます。

  • a += ba –= ba *= ba /= b などの代入演算。たとえば、a += ba = a+b に変更されます。

  • a %% ba >> ba << b などの二項演算。たとえば、a %% brem(a,b) に変更されます。

  • a ^ ba & ba | b などのビット演算。たとえば、チャート プロパティ [C 言語のビット演算が可能] が選択されている場合、a ^ bbitxor(a,b) に変更されます。

  • C スタイルのコメント マーカー。たとえば、// および /* */% に変更されます。

MATLAB に変換できない C 構造体がチャートに含まれている場合、Stateflow はダイアログ ボックスにメッセージを表示します。警告リンクをクリックすると、診断ビューアーに警告が表示されます。サポートされる構文で変換を続行するかどうか選択してください。MATLAB に変換されない C 構造には以下が含まれます。

  • cast および type を使用する明示的な型キャスト

  • &*:= のような演算子

  • カスタム データ

  • ml 演算子を使用したワークスペース変数へのアクセス

  • コード生成でサポートされていない関数

  • 16 進数および単精度の表記

  • 状況依存の定数

参考

関連するトピック