主要内容

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

MATLABオブジェクトとして実行するStateflowチャートの作成

ステート マシンのプログラミングの利点を MATLAB®のすべての機能と組み合わせるために,スタンドアロンのStateflow®チャートを仿金宝app真软件®モデル外で作成します。スタンドアロンのチャートは拡張子.sfxを付けて保存し,MATLABオブジェクトとして実行します。チャートアニメーションおよびグラフィカルデバッグのツールを使用して設計を調整します。

スタンドアロンのチャートでは,次のようなMATLABアプリケーションを作成できます。

これらのアプリケーションは,Stateflowライセンスなしで共有および実行できます。詳細については,スタンドアロンのチャートの共有を参照してください。

スタンドアロンのチャートの作成

スタンドアロンの 状态流チャートを作成するには、関数编辑を使用してStateflowエディターを開きます。たとえば,MATLABコマンドウィンドウで,次のように入力します。

编辑chart.sfx
ファイルchart.sfxが存在しない場合、状态流エディターでは空のチャートが图表という名前で開きます。それ以外の場合、エディターでは自解压ファイルによって定義されているチャートが開きます。

スタンドアロンのチャートを保存した後,関数帮助は,MATLABでのチャートの実行に関する情報を表示します。

帮助chart.sfx

MATLABコマンドウィンドウからスタンドアロンのチャートを閉じるには,関数sfcloseを使用します。

sfclose图表

Stateflowチャート オブジェクトの作成

MATLABでスタンドアロンのチャートを実行するには,まずStateflowチャートオブジェクトを作成します。スタンドアロンのチャートの自解压ファイルの名前を関数として使用します。データの初期値は,名前と値のペアとして指定します。たとえば,次のコマンドは,チャートオブジェクト图表对象を作成し、data1data2を初期化して、デフォルト遷移を実行します。

chartObject =图(“data1”value1,“data2”value2)

実行の構文、チャート データの値、アクティブ ステートのリストなどのチャート情報を表示するには、関数dispを使用します。

disp (chartObject)

スタンドアロンのチャートの実行

状态流チャート オブジェクトを定義した後、関数(必要に応じてデータ値を含める)を呼び出すことにより,スタンドアロンのチャートを実行できます。

步骤(chartObject,“data1”value1,“data2”value2)

あるいは、次のいずれかの入力イベント関数を呼び出すこともできます。

事件名称(chartObject,“data1”value1,“data2”value2)

いずれの場合でも,値はチャートの実行前にローカルデータに割り当てられます。

チャートにグラフィカル関数または MATLAB関数が含まれている場合は、それらを MATLABコマンド ウィンドウで直接呼び出すことができます。チャート関数を呼び出しても、スタンドアロンのチャートは実行されません。

function_name (chartObject, u1, u2)

メモ

函数输入变量数をチャート内のグラフィカル関数またはMATLAB関数で使用する場合,函数输入变量数は,チャートオブジェクトを入力引数の1つとしてカウントします。函数输入变量数の値は,関数をチャートとMATLABコマンドウィンドウのどちらから呼び出す場合でも同じです。

スタンドアロンのチャートは、状态流エディターを開かずに実行できます。チャートが開いている場合、状态流エディターでは、チャート アニメーションによってアクティブ ステートと遷移が強調表示されます。

デバッグや単体テストの目的で,Stateflowエディターから直接スタンドアロンのチャートを実行することができます。実行中に,ユーザーインターフェイスからデータ値を入力し,イベントをブロードキャストします。詳細については,状态流チャート オブジェクトの実行と単位テストを参照してください。

スタンドアロンのチャートは、MATLABスクリプト、模金宝app拟モデル、または 应用程序设计师のユーザー インターフェイスから実行できます。詳細については、以下を参照してください。

チャートの実行の停止

チャートの実行を停止するには、関数删除を呼び出してチャートオブジェクトを破棄します。

删除(图表对象)

チャート オブジェクトが削除された後、そのチャート オブジェクトへのハンドルはすべてワークスペースに残りますが、無効になります。ワークスペースから無効なハンドルを削除するには、コマンド清楚的を使用します。

清楚的图表对象

有効なチャート オブジェクト ハンドルをクリアしても、同じチャート オブジェクトへの他のハンドルが存在する場合は、チャート オブジェクトは破棄されません。たとえば、チャートを実行する際、状态流エディターにはチャート オブジェクトへの内部ハンドルが含まれています。ワークスペースからチャート オブジェクト ハンドルをクリアしても、チャート オブジェクトは破棄されず、エディターからチャート アニメーションの強調表示は削除されません。アニメーションの強調表示をリセットするには、チャート キャンバスを右クリックして[強調表示の削除)を選択します。

スタンドアロンのチャートの共有

状态流のライセンスを持っていない共同作業の相手とスタンドアロンのチャートを共有できます。

共同作業の相手が自分と同じバージョン,またはそれより新しいバージョンのMATLABを持っている場合,相手はStateflowエディターを開かずに,MATLABオブジェクトとしてスタンドアロンのチャートを実行できます。チャートのアニメーションとデバッグはサポートされません。実行時エラーメッセージは,チャート内のエラーが発生したステートや遷移にリンクしません。

メモ

R2019aまたはR2019bで保存したスタンドアロンチャートを実行するには,共同作業の相手は同じバージョンのMATLABを使用していなければなりません。

共同作業の相手がMATLABの以前のバージョンを使用している場合は,スタンドアロンチャートを相手が使用できる形式にエクスポートします。R2019a以降のリリースにのみエクスポートできます。エクスポート処理を完了するには,エクスポート元とエクスポート先のStateflowのバージョンにアクセスする必要があります。

  1. 状态流の新しいバージョンを使用して、スタンドアロン チャートを開きます。

  2. [ステートチャート]タブで,[保存][以前のバージョン]を選択します。

  3. [前バージョンにエクスポート] ダイアログ ボックスで、エクスポートするチャートのファイル名を指定します。

  4. [ファイルの種類]リストで,チャートのエクスポート先となる,以前のバージョンを選択します。

  5. [保存]をクリックします。

  6. 古い方のStateflowバージョンを使用して,エクスポートしたチャートを開き,再保存します。

チャートを MATLABコマンド ウィンドウからエクスポートするには、状态流関数导出版本を呼び出します。詳細については,チャートをMATLABの以前のバージョンにエクスポートを参照してください。

メモ

エクスポートされたチャートを、再保存する前に実行しようとすると、エラーが発生します。

Stateflowチャートオブジェクトのプロパティと関数

Stateflowチャートオブジェクトは,以下を提供することにより,単一の構造体でデータと演算をカプセル化します。

  • スタンドアロンのチャートの内部状態変数を含むプライベートプロパティ

  • チャートのセマンティクスを実装するさまざまな演算を呼び出す関数

チャートオブジェクトには,チャート内に存在するさまざまな要素に対応するその他のプロパティや関数も含まれる場合があります。

スタンドアロンのチャートの要素 チャートオブジェクトの要素
ローカルデータと定数データ パブリックプロパティ
入力イベント チャートを実行する関数
グラフィカル関数とMATLAB関数 MATLABコマンド ウィンドウから呼び出すことのできる関数

チャート オブジェクトの構成オプション

チャートオブジェクトを作成するときに,以下の構成オプションを名前と値のペアとして含めることでチャートの動作を指定できます。

構成オプション 説明
-animationDelay 各遷移セグメントを強調表示するためにチャートアニメーションが使用する遅延を指定します。既定値は0.01秒です。アニメーションの遅延がないチャートを生成するには,0に設定します。

1.秒の遅延を指定することで、低速のアニメーションがあるチャート オブジェクトを作成します。

chartObject =图(“-animationDelay”,1)

-enableAnimation チャート アニメーションとデバッグのインストルメント化を有効にします。既定値は真正的です。

アニメーションとデバッグのインストルメント化が無効にされているチャートオブジェクトを作成します。

chartObject =图(“-使能化”假)

-eventQueueSize イベントと時相論理演算に使用するキューのサイズを指定します。既定値は20.です。イベントのキューを無効にするには、0に設定します。詳細については、スタンドアロンチャートのイベントを参照してください。

チャートが他の演算を処理中に発生するすべてのイベントを警告なしで無視するチャート オブジェクトを作成します。

chartObject =图(“-eventQueueSize”,0)

-executeInitStep デフォルト遷移の内部実行を有効にします。既定値は真正的です。

チャート オブジェクトを作成しますが、デフォルト遷移は実行しません。

chartObject =图(“-executeInitStep”假)

-warningOnUninitializedData チャートオブジェクトの初期化後に,空のチャートデータに関する警告を有効にします。既定値は真正的です。

チャートオブジェクト作成時に警告を回避します。

chartObject =图(“-警告未初始化数据”假)

チャート データの初期化

Stateflowエディターで[シンボル]ペインを使用してチャートデータの初期値を指定できます。チャートオブジェクトを作成すると,チャートデータはそのスコープに従ってアルファベット順に初期化されます。定数データが最初に初期化されます。ローカルデータは最後に初期化されます。

初期値を指定する式を使用する場合,チャートは以下の方法で式の解決を試みます。

  • チャート内の他のデータの値を使用

  • 検索パス上での関数の呼び出し

たとえば式yを使用して,ローカルデータxの初期値を指定するとします。その場合,次のようになります。

  • yという定数がチャートに含まれている場合は,yxより前に初期化されます。ローカルデータxには、yと同じ初期値が代入されます。

  • yというローカルデータがチャートに含まれている場合は,xyより前に初期化されます。ローカルデータxは空の配列に代入されます。構成オプション-warningOnUninitializedData真正的に設定されている場合は,警告が発生します。

  • yという名前のデータがチャートに含まれていない場合、xは関数yを呼び出すことによって初期化されます。ファイルy.mが検索パスにない場合は,次のエラーが発生します。

    未定义的函数或变量“y”。

Stateflowでは,MATLABワークスペースを検索して初期値を解決することはないため,このエラーは,yという変数が MATLABワークスペース内にある場合であっても発生します。

機能および制限事項

サポートされている機能

  • MATLABをアクション言語とする 经典チャートのセマンティクス。模拟でのコード金宝app生成が制限されている関数を含めて、MATLABのすべての機能を使用できます。スクリプトとモデルを使用したStateflowチャートオブジェクトの実行を参照してください。

    メモ

    スタンドアロンの 状态流チャートでは、オペレーティング システムのコマンド記号はサポートされません。オペレーティングシステムのコマンドを実行するには,関数系统を使用します。

  • 階層をもつ排他的 (或)およびパラレル (及)ステート構造。ステート構造ステートの階層を参照してください。

  • フロー チャート、グラフィカル関数および MATLAB関数。チャート内の再利用可能なコンポーネントを参照してください。

  • パターン ウィザードを使用して MATLABコードをグラフィカル関数に変換。MATLABコードの 状态流フロー チャートへの変換を参照してください。

  • チャートのローカル データと定数データ (型の制限なし)。状态流チャート オブジェクトの実行と単位テストを参照してください。

  • 入力イベント。Stateflowチャートを使用したヒューマンマシンインターフェイスのロジックの設計を参照してください。

  • ローカルデータの値の変化を検出する演算子变了hasChangedFrom,およびhasChangedTo

    メモ

    スタンドアロンの 状态流チャートは、行列の要素または構造体内のフィールドでの変化検出をサポートしません。

  • 次の時相論理演算子。

    • 每一个は入力イベント数,チャートの呼び出し回数(蜱虫)、絶対時間 (证券交易委员会) に対して演算を行います。これらの演算子はステートアクションで遷移トリガーとして使用します。

    • は,チャートの呼び出し回数(蜱虫)に対して演算を行います。

    • 临时帐户は、絶対時間 (证券交易委员会msecusec)に対して演算を行います。

    • 运行は、絶対時間 (证券交易委员会)に対して演算を行います。

    スタンドアロン チャートは、絶対時間時相論理を時計時間で定義します。この時間の精度は 1.ミリ秒に制限されています。

  • チャートの実行時にアクティブなステートにアクセスする関数GetActiveState。アクティブ ステートを 单间牢房配列として保存するには、次のように入力します。

    状态=GetActiveState(chartObject)

  • スタンドアロン チャートを等価の MATLABクラスとしてエクスポートする 状态流関数exportAsClass。この関数は、診断の難しい実行時エラーをデバッグするために使用します。たとえば、MATLABアプリケーションを制御する 状态流チャートの実行中にエラーが発生したとします。チャートを MATLABクラス ファイルとしてエクスポートした場合、アプリケーション内のチャートをクラスに置き換えて、MATLABデバッガーを使用してエラーを診断することができます。チャートchart.sfxをクラスファイル图表.mとしてエクスポートするには、次のように入力します。

    Stateflow.exportAsClass(“chart.sfx”
    MATLABクラスを実行する際,Stateflowエディターは元のチャートをアニメーション化しません。

制限

金宝app仿真软件に固有の内容:

  • サンプル時間と連続時間のセマンティクス

  • Cアクション言語

  • ステートとしての仿金宝app真软件関数および仿真软件サブシステム

  • 入力,出力およびパラメーターのデータ

  • データストアメモリのデータ

  • 出力イベントとローカルイベント

  • 入力,出力およびローカルのメッセージ

その他の制限は次のとおりです。

  • 米利や 摩尔のセマンティクスなし

  • 状態遷移表なし

  • 真理値表関数なし

  • ステートを親とするローカルデータや関数なし

  • 遷移アクション(遷移元ステートからの出力後,遷移先ステートへの入力前に実行されるアクション)なし

参考

|||||

関連するトピック