このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
ステート マシンのプログラミングの利点を MATLAB®のすべての機能と組み合わせるために,スタンドアロンのStateflow®チャートを仿金宝app真软件®モデル外で作成します。スタンドアロンのチャートは拡張子.sfx
を付けて保存し,MATLABオブジェクトとして実行します。チャートアニメーションおよびグラフィカルデバッグのツールを使用して設計を調整します。
スタンドアロンのチャートでは,次のようなMATLABアプリケーションを作成できます。
モードロジックを使用してウィジェットの動作を管理するMATLAB应用程序设计师ユーザーインターフェイス。Stateflowチャートを使用したヒューマンマシンインターフェイスのロジックの設計を参照してください。
順序論理を使用する通信プロトコルおよびデータ ストリーム処理アプリケーション。チャート オブジェクトを使用した通信プロトコルのモデル化を参照してください。
タイマーベースのロジックを使用して外部タスクを監視および制御する数据采集工具箱™アプリケーションまたは仪器控制工具箱™アプリケーション。Stateflowを使用した金融戦略の実装を参照してください。
これらのアプリケーションは,Stateflowライセンスなしで共有および実行できます。詳細については,スタンドアロンのチャートの共有を参照してください。
スタンドアロンの 状态流チャートを作成するには、関数编辑
を使用してStateflowエディターを開きます。たとえば,MATLABコマンドウィンドウで,次のように入力します。
编辑chart.sfx
chart.sfx
が存在しない場合、状态流エディターでは空のチャートが图表
という名前で開きます。それ以外の場合、エディターでは自解压
ファイルによって定義されているチャートが開きます。
スタンドアロンのチャートを保存した後,関数帮助
は,MATLABでのチャートの実行に関する情報を表示します。
帮助chart.sfx
MATLABコマンドウィンドウからスタンドアロンのチャートを閉じるには,関数sfclose
を使用します。
sfclose图表
MATLABでスタンドアロンのチャートを実行するには,まずStateflowチャートオブジェクトを作成します。スタンドアロンのチャートの自解压
ファイルの名前を関数として使用します。データの初期値は,名前と値のペアとして指定します。たとえば,次のコマンドは,チャートオブジェクト图表对象
を作成し、data1
とdata2
を初期化して、デフォルト遷移を実行します。
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のバージョンにアクセスする必要があります。
状态流の新しいバージョンを使用して、スタンドアロン チャートを開きます。
[ステートチャート]タブで,[保存]、[以前のバージョン]を選択します。
[前バージョンにエクスポート] ダイアログ ボックスで、エクスポートするチャートのファイル名を指定します。
[ファイルの種類]リストで,チャートのエクスポート先となる,以前のバージョンを選択します。
[保存]をクリックします。
古い方のStateflowバージョンを使用して,エクスポートしたチャートを開き,再保存します。
チャートを MATLABコマンド ウィンドウからエクスポートするには、状态流関数导出版本
を呼び出します。詳細については,チャートをMATLABの以前のバージョンにエクスポートを参照してください。
メモ
エクスポートされたチャートを、再保存する前に実行しようとすると、エラーが発生します。
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
という定数がチャートに含まれている場合は,y
がx
より前に初期化されます。ローカルデータx
には、y
と同じ初期値が代入されます。
y
というローカルデータがチャートに含まれている場合は,x
がy
より前に初期化されます。ローカルデータx
は空の配列に代入されます。構成オプション-warningOnUninitializedData
が真正的
に設定されている場合は,警告が発生します。
y
という名前のデータがチャートに含まれていない場合、x
は関数y
を呼び出すことによって初期化されます。ファイルy.m
が検索パスにない場合は,次のエラーが発生します。
未定义的函数或变量“y”。
Stateflowでは,MATLABワークスペースを検索して初期値を解決することはないため,このエラーは,y
という変数が MATLABワークスペース内にある場合であっても発生します。
MATLABをアクション言語とする 经典チャートのセマンティクス。模拟でのコード金宝app生成が制限されている関数を含めて、MATLABのすべての機能を使用できます。スクリプトとモデルを使用したStateflowチャートオブジェクトの実行を参照してください。
メモ
スタンドアロンの 状态流チャートでは、オペレーティング システムのコマンド記号!
はサポートされません。オペレーティングシステムのコマンドを実行するには,関数系统
を使用します。
フロー チャート、グラフィカル関数および MATLAB関数。チャート内の再利用可能なコンポーネントを参照してください。
パターン ウィザードを使用して MATLABコードをグラフィカル関数に変換。MATLABコードの 状态流フロー チャートへの変換を参照してください。
チャートのローカル データと定数データ (型の制限なし)。状态流チャート オブジェクトの実行と単位テストを参照してください。
入力イベント。Stateflowチャートを使用したヒューマンマシンインターフェイスのロジックの設計を参照してください。
ローカルデータの値の変化を検出する演算子变了
、hasChangedFrom
,およびhasChangedTo
。
メモ
スタンドアロンの 状态流チャートは、行列の要素または構造体内のフィールドでの変化検出をサポートしません。
次の時相論理演算子。
スタンドアロン チャートは、絶対時間時相論理を時計時間で定義します。この時間の精度は 1.ミリ秒に制限されています。
チャートの実行時にアクティブなステートにアクセスする関数GetActiveState
。アクティブ ステートを 单间牢房配列として保存するには、次のように入力します。
状态=GetActiveState(chartObject)
スタンドアロン チャートを等価の MATLABクラスとしてエクスポートする 状态流関数exportAsClass
。この関数は、診断の難しい実行時エラーをデバッグするために使用します。たとえば、MATLABアプリケーションを制御する 状态流チャートの実行中にエラーが発生したとします。チャートを MATLABクラス ファイルとしてエクスポートした場合、アプリケーション内のチャートをクラスに置き換えて、MATLABデバッガーを使用してエラーを診断することができます。チャートchart.sfx
をクラスファイル图表.m
としてエクスポートするには、次のように入力します。
Stateflow.exportAsClass(“chart.sfx”)
金宝app仿真软件に固有の内容:
サンプル時間と連続時間のセマンティクス
Cアクション言語
ステートとしての仿金宝app真软件関数および仿真软件サブシステム
入力,出力およびパラメーターのデータ
データストアメモリのデータ
出力イベントとローカルイベント
入力,出力およびローカルのメッセージ
その他の制限は次のとおりです。
米利や 摩尔のセマンティクスなし
状態遷移表なし
真理値表関数なし
ステートを親とするローカルデータや関数なし
遷移アクション(遷移元ステートからの出力後,遷移先ステートへの入力前に実行されるアクション)なし
disp
|编辑
|exportAsClass
|导出版本
|帮助
|sfclose