Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

ハイブリッド クラッチ システム

この例では、Stateflow® チャート内で Simulink ベースのステートを使用して、クラッチ システムをモデル化する方法を説明します。物理システムの詳細については、クラッチ ロックアップ モデルの作成 (Simulink)を参照してください。

推奨ワークフロー

このモデルは、Simulink と Stateflow を使用してハイブリッド システムをモデル化する際に推奨する方法を示しています。また、このモデルでは、モード変更と関連付けられた連続ダイナミクスが複雑な場合に Simulink または物理モデリング ツールを使用するタイミングについても説明します。

ハイブリッド システムのモデル化は、次の関心事を含みます。

  • 連続ダイナミクスのモデル化

  • モード ロジックのモデル化

  • モードを切り替える際のステートの初期化

連続ダイナミクス

ハイブリッド システムには、連続ダイナミクスで各モードが定義される動作モードが複数あります。連続ダイナミクスが複雑な場合、Simulink ベースのステートを使用してモデル化します。このモデルでは、Locked ステートと Slipping ステートはクラッチの 2 つの動作モードを表します。Simulink ベースのステート内の Simulink ブロックは、そのステートのロジックを表します。これらのブロックには、積分器などの連続時間ブロックがあります。それぞれの Simulink ベースのステート内で、同じ名前の入力端子と出力端子を作成することにより、チャートの入力と出力にアクセスできます。Simulink ベースの各ステートは、チャートの入力のサブセットから読み取り、チャートのすべての出力に書き込みます。

モード ロジック

モード ロジックとは、モデルが特定の動作モードから別の動作モードに切り替える条件を指します。この例では、モード ロジックは 2 つの Simulink ベースのステート間の遷移ロジックによって説明されています。Simulink ベースの特定のステートから別のステートへ切り替える条件は、現在アクティブなモード内の積分器の内部状態によって異なります。たとえば、Slipping から Locked へ切り替える場合、Stateflow は Slipping モードの積分器の内部状態を読み取らなければなりません。

これは、以下の 2 つのメカニズムを使用することで可能になります。

1. Simulink 関数内での State Reader ブロックと State Writer ブロックの使用: Stateflow は、2 つのモード間の遷移ロジックで Simulink 関数を呼び出すことができます。Simulink 関数内で State Reader ブロックを使用して積分器の内部状態を参照します。たとえば、Simulink 関数 detectLockup は State Reader ブロック EngineSpeed を使用して Integrator ブロックの状態 sf_clutch/Clutch/Slipping/xe を読み取ります。

2.遷移条件での修飾ドット表記の使用: 遷移ロジックが簡潔、かつテキストで表現できる場合、Slipping.we == ... のような構文を使用して積分器 sf_clutch/Clutch/Slipping/xe の状態を参照できます。この構文が機能するためには、積分器の State Name パラメーターを "we" に設定する必要があります。

状態ハンドオフ

特定の動作モードから別の動作モードに切り替える場合、滑らかな出力を得るために、新たにアクティブ化したサブシステムの積分器を適切に初期化する必要があります。これは、Simulink 関数内で Simulink の State Reader ブロックと State Writer ブロックを使用するか、修飾ドット表記をテキストとして使用することで実行できます。たとえば、Slipping から Locked への遷移では、Slipping 内のいずれかの積分器の状態を使用して Locked 内の単一の積分器の状態を初期化します。状態は、次の構文を使用して初期化します。

Locked.w = Slipping.we;

シミュレーション結果

システムをシミュレートすると、エンジンと自動車の速度が次のようにグラフに示されます。プレートは約 4 秒でロック状態になり、約 6.25 秒で再度スリップ状態になります。

関連するトピック