時相論理を使用したチャ,ト実行の制御
時相論理は,時間の観点からチャ,トの実行を制御します。ステトアクションと遷移において、次の 2 つのタイプの時相論理を使用できます。
@ @ @ @ @ @ @ @ @ @ @ @ @ @。ベスベントとしては,どの明示的および暗黙的ベントでも使用できます。
絶対時間の時相論理はステ,トがアクティブになってからの経過時間を追跡します。絶対時間の時相論理演算子のタaapl . aapl .ミングは状态流®チャトのタプによって異なります。
万博1manbetx®モデル内のチャ,トは,絶対時間時相論理をシミュレ,ション時間で定義します。
MATLAB®のスタンドアロンチャ,トは,絶対時間時相論理を時計時間で定義します。この時間の精度は1ミリ秒に制限されています。
時相論理演算子
時相論理に基づいてStateflowチャートの動作を定義するには,次の表にある演算子を使用します。これらの演算子を使用できる場所は次のとおりです。
ステト
在
アクションステ,トを起点とする遷移パス上のアクション
各時相論理演算子にはステ,トが関連付けられています。これは,アクションが実行されるステ,ト,または遷移パスの起点となるステ,トです。Stateflowチャ,トは、関連付けられたステートが再びアクティブになるたびに、各演算子で使用されるカウンターをリセットします。
演算子 | 構文 | 説明 | 例 |
---|---|---|---|
后 |
|
関連付けられたステトがアクティブになってからのベントE の発生回数がn 回以上である場合に真正的 を返します。それ以外の場合,演算子は假 を返します。 |
チャトがベント
|
チャトがベント 后(5 E) |
|||
|
関連付けられたステ,トがアクティブになってからのチャ,トの起動回数が 万博1manbetxSimulinkモデル内のStateflowチャ,トに入力ベントがある場合,暗黙的ベント |
関連付けられたステートがアクティブになってからチャートが7回以上起動すると,このステートから遷移します。ただし,変数 After (7,tick)[temp > 98.6] |
|
|
関連付けられたステ,トがアクティブになってから少なくとも 万博1manbetxSimulinkモデルのチャ,トでは,時間を秒単位( Matlabのスタンドアロンチャ,トでは,時間を秒単位( |
関連付けられたステ,トが12.3秒以上アクティブになった時点から,チャ,トが起動するたびに変数
|
|
在 |
|
関連付けられたステトがアクティブになってからのベントE の発生回数が厳密にn 回である場合に真正的 を返します。それ以外の場合,演算子は假 を返します。 |
ステトがアクティブになってから3番目のベント
|
ステトがアクティブになってから5番目のベント 在(E) |
|||
|
関連付けられたステ,トがアクティブになってからのチャ,トの起動回数が厳密に 万博1manbetxSimulinkモデル内のStateflowチャ,トに入力ベントがある場合,暗黙的ベント |
関連付けられたステートがアクティブになってからチャートが7回起動すると,このステートから遷移します。ただし,変数 At (7,tick)[temp > 98.6] |
|
|
関連付けられたステ,トがアクティブになってからの経過時間が厳密に
|
ステ,トが厳密に12.3秒アクティブだった場合に,変数
|
|
之前 |
|
関連付けられたステトがアクティブになってからのベント 時相論理演算子 |
ステトがアクティブになってから1番目と2番目のベント
|
チャトがベント 前(5 E) |
|||
|
関連付けられたステ,トがアクティブになってからのチャ,トの起動回数が 万博1manbetxSimulinkモデル内のStateflowチャ,トに入力ベントがある場合,暗黙的ベント 時相論理演算子 |
チャ,トが起動すると,関連付けられたステ,トから遷移します。ただし,変数 前(7,勾)[temp > 98.6] |
|
|
関連付けられたステ,トがアクティブになってから 時間は、秒( 時相論理演算子 |
チャ,トが起動するたびに変数
|
|
每一个 |
|
関連付けられたステトがアクティブになってから,ベント |
ステトがアクティブになった後のベント
|
ステトがアクティブになった後のベント 每一个(5 E) |
|||
|
関連付けられたステ,トがアクティブになってからチャ,トが 万博1manbetxSimulinkモデル内のStateflowチャ,トに入力ベントがある場合,暗黙的ベント |
ステ,トがアクティブになった後に 每(7,tick)[temp > 98.6] |
|
|
関連付けられたステ,トがアクティブになってから
|
ステトがアクティブである時間が12.3秒経過するごとに変数
|
|
temporalCount |
|
関連付けられたステトがアクティブになってからのベント
|
ベント
|
temporalCount(勾选) |
関連付けられたステ,トがアクティブになってからチャ,トが起動した回数を返します。 万博1manbetxSimulinkモデル内のStateflowチャ,トに入力ベントがある場合,暗黙的ベント
|
配列 en,du: M(temporalCount(tick)+1) = u; |
|
|
関連付けられたステ,トがアクティブになってから経過した時間を返します。 時間は、秒( |
ステ,トがアクティブになってからの経過時間をミリ秒単位で格納します。 en,du: y = temporalCount(msec); |
|
运行 |
|
関連付けられたステ,トがアクティブになってから経過した時間を返します。
|
ステ,トがアクティブになってからの経過時間を秒単位で格納します。 En,du: y =流逝(秒); |
等 |
运行(sec) の,代替の実行方法です。 |
チャトがベント E {disp (et);} |
|
数 |
|
条件式 状态流チャ,トは,条件式 万博1manbetxSimulinkモデルのチャ,トでは, |
5回を超えるチャトの実行で変数 [count(x>=2) > 5] |
変数 En,du: y = count(x>5); |
|||
持续时间 |
|
条件式 時間は、秒( 状态流チャ,トは,条件式 時相論理演算子 |
変数 [duration(x>=0) > 0.1] |
変数 En,du: y = duration(x>5,msec); |
引用符を使用してキ,ワ,ド“滴答”
、“秒”
、“msec”
および“购买”
を囲むことができます。たとえば,“滴答”后(5)
は蜱虫后(5)
と同じです。
メモ
時相論理演算子后
、在
、之前
,および每一个
は,しきい値n
を整数型の内部カウンタ,と比較します。n
が2の整数乗でない勾配または非ゼロのバイアスにより定義された固定小数点数である場合,丸めにより,比較の結果が予期しないものになる可能性があります。詳細にいては,固定小数点デ,タの関係演算を参照してください。
時相論理の例
時間遅延の定義
次の例では,連続時間チャ,トで2の絶対時間遅延を定義する方法を示します。
チャ,トの実行は次の手順に従って行われます。
チャ,トが起動すると,ステ,ト
输入
が最初にアクティブになります。シミュレ,ション時間5.33ミリ秒の経過後,
输入
から输出
への遷移が発生します。ステト
输入
が非アクティブになり,ステ,ト输出
がアクティブになります。シミュレション時間10.5秒の経過後,
输出
から输入
への遷移が発生します。ステト
输出
が非アクティブになり,ステ,ト输入
がアクティブになります。
シミュレ,ションが終了するまで,手順2 ~ 5が繰り返されます。
チャートに離散サンプル時間が設定されている場合は,チャートのすべてのアクションはこのサンプル時間の整数倍で発生します。たとえば,万博1manbetxSimulink®ソルバでサズ0.1秒の固定ステップを使用する場合,ステト输入
からステ,ト输出
への最初の遷移はt = 0.1秒で発生します。この動作が当てはまる理由は,ソルバーがt = 5.33ミリ秒の時点でチャートを起動しないからです。代わりに,ソルバーは 0.1 秒の整数倍 (t = 0.0 や 0.1 秒など) でチャートを起動します。
経過時間の検出
次の例では,一步(万博1manbetx模型)ブロックにより,Stateflowチャ,トへの単位ステップ入力が提供されています。
チャ,トは入力u
が1に等しくなるときを判断します。
T = 2秒より前に入力が1に等しくなる場合は,
开始
から快
への遷移が発生します。T = 2 ~ 5秒の間に入力が1に等しくなる場合は,
开始
から媒介
への遷移が発生します。T = 5秒より後に入力が1に等しくなる場合は,
开始
から慢
への遷移が発生します。
已启用的子系统における絶対時間の時相論理の使用
条件付きで実行されるサブシステムに存在するチャ,トでは,絶対時間の時相論理を使用できます。サブシステムが無効になると,チャートが非アクティブになり,チャートがスリープ状態である間は時相論理演算子は停止します。サブシステムが再び有効になって,チャートが起動するまで,演算子はシミュレーション時間のカウントを停止します。
このモデルには,[huawei @ huawei @ huawei @ huawei @ huawei @ huawei]パラメ,タ,が举行
に設定されている启用的子系统が含まれています。
このサブシステムには后
演算子を使用して遷移をトリガ,するチャ,トが含まれています。
信号编辑器(万博1manbetx模型)ブロックは,以下の特性をも入力信号を提供します。
この信号はt = 0でサブシステムを有効化します。
この信号はt = 2でサブシステムを無効化します。
この信号はt = 6でサブシステムを再有効化します。
このグラフは,チャ,トで経過した時間の合計を示しています。入力信号によってサブシステムがt = 0の時点で有効になると,ステ,ト一个
がアクティブになります。システムが有効である間は,経過時間は増加します。サブシステムがt = 2で無効になると,チャートはスリープ状態に移行して,経過時間の増加が停止します。2 < t < 6の間は,システムが無効になっているため,経過時間は2秒のまま変わりません。T = 6でチャ,トが起動すると,経過時間は再度増加を始めます。
ステト一个
からステ,トB
への遷移は,シミュレ,ション時間ではなく,ステ,ト一个
がアクティブである間の経過時間に依存します。そのため,遷移はt = 9,まりステト一个
での経過時間が5秒に等しくなった時点で発生します。遷移が発生すると,出力値y
は0から1に変化します。
启用ブロックのパラメタ[huawei @ huawei @ huawei @ huawei @ huawei @ huawei]を举行
に設定したサブシステムでのみ,このモデルの動作が当てはまります。パラメ,タ,を重置
に設定した場合は,チャ,トはサブシステムが再び有効になった時点で完全に再初期化されます。デフォルト遷移が実行されて,時相論理のカウンタ,は0にリセットされます。
遷移での▪▪ベントベ▪▪スの時相論理表記法
万博1manbetxSimulinkモデルのStateflowチャ,トでは,演算子后
、在
、之前
は遷移でベントベスの時相論理を表現するための2種類の異なる表記をサポトしています。
“トリガ,表記法”は,時相論理演算子のベ,ス,ベントのみに依存する遷移を定義します。トリガ,表記法は,以下の構文に従います。
temporalLogicOperator (n, E) [C]
temporalLogicOperator
は布尔值時相論理演算子です。n
は演算子の出現回数です。E
は演算子のベスベントです。C
はオプションの条件式です。
トリガ表記法を使用する場合,遷移が発生する可能性があるのは,チャトがベスベント
E
のブロ,ドキャストを処理する時点のみです。"条件表記法"は,ベスベントと非ベスベントに依存する遷移条件を定義します。条件表記法は,以下の構文に従います。
F[temporalLogicOperator(n,E) && C]
temporalLogicOperator
は布尔值時相論理演算子です。n
は演算子の出現回数です。E
は演算子のベスベントです。F
はオプションの非ベスベントです。C
はオプションの条件式です。
非ベスベント
F
による条件表記法を使用する場合,遷移が発生する可能性があるのは,チャ,トがF
のブロ,ドキャストを処理する時点のみです。非ベスベントを省略した場合、遷移が発生する可能性があるのは、チャートが明示的または暗黙的イベントを処理している時点のみです。時相論理演算子の条件表記法は,matlabのスタンドアロンのチャ,トではサポ,トされていません。
たとえば,次の遷移ラベルはトリガ表記法を使用して,チャトがベスベントE
のブロ,ドキャストを処理した時点で発生する,関連付けられたステ,トからの遷移を示します。ステトがアクティブになってから5番目以降のE
のブロ,ドキャストが対象となります。
后(5 E)
一方で,次の遷移ラベルは条件表記法を使用して,5回以上のベ,ス,ベントE
のブロードキャストでステートがアクティブだった場合に関連付けられたステートから遷移することを示します。この遷移はチャ,トがE
のブロ,ドキャストを処理中でない場合でも実行されます。
((5 E)后)
メモ
演算子每一个
はトリガ,表記法と条件表記法をサポ,トしています。ただし,この演算子にいては,この両方の表記法は等価です。遷移ラベル每一个(5 E)
および(每一个(5 E))
は、ステ、トがアクティブになってからベ、ス、ベントE
のブロ,ドキャストを回処理すると(kは5の倍数),関連付けられたステトから遷移することを示します。
時相論理のベストプラクティス
遷移元ステ,トがない遷移パスで時相論理を使用しない
時相論理演算子の値は,関連付けられたステ,トがアクティブになった時点により異なります。すべての時相論理演算子に一意のステートが関連付けられるようにするには,これらの演算子を次の場所でのみ使用してください。
ステト
在
アクションステ,トを起点とする遷移パス上のアクション
時相論理演算子は,デフォルト遷移や,グラフィカル関数での遷移で使用しないでください。これらの遷移はステ,トから発生していません。
万博1manbetxモデルのチャ,トでは蜱虫
の代わりに絶対時間の時相論理を使用する
万博1manbetx仿真软件モデルのチャートでは,絶対時間の時相論理を使用する延迟式は,モデルのサンプル時間に意味的に依存しません。一方,明示的蜱虫
に基づいて時相論理を使用する延迟式は,仿真软件ソ万博1manbetxルバーで使用されるステップサイズに依存します。
さらに,絶対時間の時相論理は,入力。万博1manbetxSimulinkモデル内のStateflowチャ,トに入力ベントがある場合,暗黙的ベント蜱虫
はサポ,トされません。
万博1manbetxモデルのチャ,トで絶対時間の時相論理に在
を使用しない
万博1manbetxSimulinkモデルのチャ,トでは,在
を絶対時間の時相論理演算子として使用することはサポ,トされていません。代わりに后
演算子を使用します。たとえば,式(5.33秒)
を使用して時間遅延を定義する必要があるとします。
実行時エラ,を回避するには,遷移ラベルを后(5.33秒)
に変更します。
大きいパラメ,タ,値に対する予期しない結果
后(x, sec)
のようなStateflowの絶対時間での時相論理条件は,以下の条件をもつステートに入った後,想定された時間において真正的
に評価されない場合があります。
チャ,トに周期的離散サンプル時間がある。
チャ,トのロジックによって,ステ,トが時間単位
2147418
より長い間アクティブなままとなる。時間単位とは,そのステ,トで使用されるすべての時相論理式において最小の時間単位です。たとえば,ステ:トに2の出力遷移があり,その1が后(x, sec)
を使用し,もう1が(x, msec之后)
を使用する場合,時間単位はmsec(毫秒)
になります。
一般に,ステ,トの時間の長さが2147418
より長い場合に,予期しない結果が発生します。ただし,これは,チャ,トのサンプル時間によって異なる場合があります。
万博1manbetxモデルのチャ,トで絶対時間の時相論理に每一个
を使用しない
万博1manbetxSimulinkモデルのチャ,トでは,每一个
を絶対時間の時相論理演算子として使用することはサポ,トされていません。代わりに,后
演算子を含む外部自己ル,プ遷移を使用してください。たとえば,チャート実行時に 2.5 秒間隔でアクティブ ステートのステータス メッセージを印刷する必要があると仮定します。
実行時エラ,を回避するには,ステ,トアクションを外部の自己ル,プ遷移に置き換えます。
ステートにヒストリジャンクションを追加して,各自己ループ遷移の前にステート設定がチャートで記憶されるようにします。ヒストリジャンクションを使用した前のサブステ,トアクティビティの再開を参照してください。
MATLABのスタンドアロンチャ,ト内において複数の遷移元がある遷移パスで時相論理を使用しない
MATLABのスタンドアロンチャートでは,遷移元ステートが複数ある遷移パスでの時相論理の使用はサポートされません。たとえば,次のスタンドアロンチャ,トでは,時相論理式后(10秒)
が複数の遷移元ステトをも遷移パスをトリガするため,実行時エラが発生します。
この問題を解決するには,それぞれ1つの遷移元ステートをもつ複数の遷移パスに,個別に時相論理式を使用します。
MATLABのスタンドアロンチャ,トの遷移パスで絶対時間の時相論理と条件を併用しない
Matlabのスタンドアロンチャ,トでは,演算子后
、在
,および每一个
は,チャ,トを起動するための暗黙的,ベントを生成するmatlab计时器
オブジェクトを作成します。同じ遷移パスでこれらの演算子を条件と組み合わせて使用すると,予期しない動作が発生する場合があります。
计时器
がチャ,トを起動した時点で遷移パスの条件が偽である場合,チャ,トはアクティブステ,トの在
および在
アクションを実行します。チャ,トは演算子
后
および在
に関連付けられている计时器
オブジェクトをリセットしません。この遷移パスの条件が後で真になった場合,別の明示的または暗黙的イベントがチャートを起動するまで,遷移は発生しません。
たとえば,次のチャ,トでは,ステ,ト一个
からステ,トB
への遷移パスにより,絶対時間の時相論理トリガ后(1秒)
と条件(保安)
が組み合わされます。ステト一个
からステ,トC
への遷移には,絶対時間時相論理トリガ后(5秒)
があります。各遷移は,暗黙的计时器
オブジェクトに関連付けられます。初期状態では,ロ,カル変数警卫
は假
です。
チャ,トを実行すると,ステ,ト一个
がアクティブになります。チャ,トは条目
アクションを実行し,メッセ,ジ你好!
が表示されます。1 秒後、一个
からB
への遷移に関連付けられた计时器
がチャ,トを起動します。遷移が無効なので,チャ,トはステ,ト一个
の在
アクションを実行し,メッセ,ジ你好!
がもう一度表示されます。
2秒後にチャトが入力ベントE
を受け取るものと仮定します。チャ,トはステ,ト一个
で在
を実行し,警卫
の値を真正的
に変更します。チャ,トは演算子后
に関連付けられている计时器
をリセットしないため,一个
からB
への遷移は,別の。
5 秒後、一个
からC
への遷移に関連付けられた计时器
がチャ,トを起動します。一个
からB
への遷移が有効で,実行順序も高いため,チャ,トはステ,トC
への遷移を実行せず,メッセ,ジ告别!
も表示されません。代わりに,ステ,トB
がアクティブになり,チャ,トはメッセ,ジ再见!
を表示します。
より効率的なコ,ド生成のための離散サンプル時間によるチャ,トの使用
触发子系统または启用子系统内にない離散チャート用に生成されたコードでは,仿真软件が提供する時間ではなく,整数カウンターを使用して時万博1manbetx間を追跡します。この動作により,オーバーヘッドおよびメモリの観点からより効率的なコード生成が可能になり,またSIL(ソフトウェアインザループ)および公益诉讼(プロセッサインザループ)のシミュレーションモードでこのコードが使用可能になります。詳細にいては,Silシミュレ,ションおよびpilシミュレ,ション(嵌入式编码)を参照してください。
参考
后
|在
|之前
|每一个
|temporalCount
|运行
|数
|持续时间
|计时器
|信号编辑器(万博1manbetx模型)|一步(万博1manbetx模型)