Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

パワー ウィンドウ コントロール プロジェクト

この例では、MathWorks® ソフトウェアとモデルベース開発プロセスを使用して、自動車のパワー ウィンドウ システムの構想から実装に至る方法を示します。

設計要件の概要

この例では、自動車の助手席のパワー ウィンドウ システムについて考えます。このシステムの重要な側面は、ウィンドウを閉めるときに物体に対して 100 N を超える力を及ぼすことができないことです。次に例を示します。

このような物体が検出されると、ウィンドウは約 10 cm 下げられなければなりません。

設計要件の詳細は、パワー ウィンドウ コントローラーのドキュメンテーションを参照してください

モデルベース開発と大規模モデリングの使用

この例では、次のようなモデルベース デザインと大規模モデリングの手法を使用します。

  • Model ブロック - 階層を別々のモデルに分離するためのブロックです。

  • Variant Subsystem ブロック - さまざまな設計の選択肢をモデル化して切り替えるためのブロックです。

  • ライブラリ - Variant Subsystem で再利用するためのアルゴリズムを取得します。

  • Simulink® プロジェクト - システム開発に必要なファイルを管理します。

パワー ウィンドウ コントロール プロジェクトを開く

次のコマンドを実行して、この例のプロジェクト ファイルの作業用コピーを作成して開きます。

slexPowerWindowStart

プロジェクトの調査

プロジェクトを目視すると、この例の整理に使用されている Simulink プロジェクトの機能を確認できます。これらの機能は以下のとおりです。

  • フォルダー

  • ファイルの分類

  • ショートカット

フォルダー

プロジェクトは以下のフォルダーに整理されています。

  • configureModel - メイン システム モデルのバリアント コンフィギュレーションを制御する MATLAB® ファイルが含まれています。

  • data - プロジェクトに必要なイメージが含まれています。

  • hmi - パワー ウィンドウの応答をアニメーション化するためのファイルが含まれています。

  • model - メイン システム モデル、コントローラー モデル、コントローラーをテストするためのモデル、これらのモデルをサポートするライブラリが含まれています。

  • task - さまざまなモデル コンフィギュレーションでのモデルのシミュレーションや、コントローラーのカバレッジ レポートの生成を行う MATLAB ファイルが含まれています。

  • utilities - モデルの初期化、スプレッドシート入力の生成、生成されたスプレッドシートへのデータの追加、プロジェクト起動時と終了時の環境管理を行うための MATLAB ファイルが含まれています。

ファイルの分類

[ラベル] ペインに、Simulink プロジェクトのファイルのさまざまな分類が表示されています。各ラベルは、ファイルがプロジェクトの本体に対して果たす具体的な役割を示しています。このプロジェクトでは、次のような新しい分類が追加されています。

  • Configuration - プロジェクトまたはモデルを設定するファイル。

  • PrjConfig - ファイルを起動時にパスに追加して終了時に削除することでプロジェクトを設定するファイル。

  • DesignConfig - 特定の時点でどのモデル コンフィギュレーションをアクティブにするかを決定するファイル。

  • Design - メイン システム モデルとその参照先の制御モデル。

  • DesignSupport - ライブラリ、データ、モデル シミュレーションなどのファイル。

  • Simulation - 特定のコンフィギュレーションでモデルのシミュレーションを実行するファイル。

  • Test - コントロール カバレッジ、コントロール相互作用、テスト ハーネスのモデル。

  • Visualization - パワー ウィンドウの動きをアニメーション化するファイル。

ショートカット

プロジェクトのショートカットを使用すると、最もよく使用するプロジェクト ファイルに簡単にアクセスできます。ショートカットの中には、プロジェクトを起動時にパスに追加して終了時に削除するなどの一般的なタスクが含まれるものもあります。また、プロジェクトのショートカット グループを使用するとショートカットの整理に役立ちます。新しいショートカット グループは以下のとおりです。

  • Interactive Testing - コントローラーの対話型テストに使用するファイルが含まれています。

  • Main Model - 最上位レベルの Simulink モデルのファイルが含まれています。

  • Model Coverage - コントローラーのモデル カバレッジに使用するファイルが含まれています。

  • Simulation - モデルのバリアント コンフィギュレーションのシミュレーションに使用するファイルが含まれています。

プロジェクト内の Simulink モデルの調査

このプロジェクトの Simulink モデルは model フォルダーにあります。対象のモデルは以下のとおりです。

  • メイン システム モデル

  • テスト用モデル

メイン システム モデル

この例の model フォルダーにあるメイン システム モデルは slexPowerWindowExample です。このモデルは、システムへの入力を生成する Driver Switch ブロックと Passenger Switch ブロックで構成されています。この入力は、助手席と運転席の入力の状態を検証する制御システム モデルを経由します。また、Control System ブロックでは、ウィンドウのパスを遮る障害物があるかどうかも判別されます。参照先のコントローラーは、ウィンドウ システムのアクティブなバリアントに送信されるウィンドウの動きのコマンド信号を生成します。ウィンドウ システムの出力は、Control System ブロックへのフィードバックです。

シミュレーションの結果を可視化するために、シミュレーション データ インスペクター (SDI) が出力データをログに記録し、Simulink 3D Animation™ がウィンドウの動きをアニメーション化します。

モデル バリアント

このプロジェクトのメイン システム モデルは、Variant Subsystem ブロックを使用して、サブシステム内での複数の実装を実現します。アクティブな実装は、シミュレーションの前にプログラムで変更できます。メイン モデルには、プログラムで変更できるバリアントの選択をそれぞれがもつ 4 つの Variant Subsystem ブロックがあります。4 つの Variant Subsystem は以下のとおりです。

  • slexPowerWindowExample/driver_switch

  • slexPowerWindowExample/passenger_switch

  • slexPowerWindowExample/window_system

  • slexPowerWindowExample/power_window_control_system/detect_obstacle_endstop

各バリアントの選択は、バリアント制御に関連付けられます。バリアントの選択は、そのバリアント制御が true と評価された場合にアクティブになります。

メイン モデルにプログラムで変更できる 4 つの Variant Subsystem ブロックがあるため、バリアントの選択の組み合わせを制御してモデルのバリアント コンフィギュレーションを作成するための MATLAB ファイルが DesignConfig 分類にあります。使用可能なモデルのバリアント コンフィギュレーションは以下のとおりです。

  • パワー ウィンドウ コントローラー ハイブリッド システム モデル

  • パワー ウィンドウ コントローラーおよび詳細なプラント モデル

  • データ収集効果を使用するパワー ウィンドウ コントローラー

  • コントローラー エリア ネットワーク (CAN) 通信を使用するパワー ウィンドウ コントローラー

パワー ウィンドウ コントローラー ハイブリッド システム モデル

このモデル バリアントでは、Stateflow® および Simulink を使用して、離散イベントのリアクティブ動作と連続時間の動作の両方をモデル化します。また、低次のプラント モデルを使用して上昇動作と下降動作を検証します。このバリアント コンフィギュレーションは、SimHybridPlantLowOrder ショートカットを使用してシミュレートできます。このショートカットを使用すると、このモデル コンフィギュレーションに対応する Variant Subsystem のみがアクティブになります。このモデルではパワー効果は考慮されないため、ログに記録された出力のみが位置になります。シミュレーション データ インスペクター (SDI) には、ログに記録された位置データが表示されます。

パワー ウィンドウ コントローラーおよび詳細なプラント モデル

このモデル バリアントが示す詳細なプラント モデルは、挟まれた物体に対してウィンドウの与える力が 100 N を超えずに、電気ドメインと機械ドメインのパワー効果を含むことを検証します。このモデル バリアントでは、Simscape™ Multibody™ および Simscape Power Systems™ 製品がインストールされている必要があります。このバリアント コンフィギュレーションは、SimHybridPlantPowerEffects ショートカットを使用してシミュレートできます。上記のバリアント モデルとは異なり、このバリアント コンフィギュレーションではパワー効果が考慮されます。SDI には、電機子電流、位置、パワー ウィンドウが及ぼす力のログ データが表示されます。

データ収集効果を使用するパワー ウィンドウ コントローラー

このモデル バリアントは、制御に影響する実装による追加効果を示します。含まれる現象には、電機子電流を測定するための信号調整、測定値の量子化があります。このモデル バリアントでは、Simscape Multibody、Simscape Power Systems、DSP System Toolbox™、Fixed-Point Designer™ の各製品がインストールされている必要があります。このバリアント コンフィギュレーションは、SimHybridPlantPowerEffects+ControlDAQEffects ショートカットを使用してシミュレートできます。上記のモデルと同様に、SDI には、電機子電流、位置、パワー ウィンドウが及ぼす力のログ データが表示されます。

CAN 通信を使用するパワー ウィンドウ コントローラー

このモデル バリアントは、CAN を使用したウィンドウの動きを制御するコマンドのやり取りを示します。このモデル バリアントには、車両の中央コンソールに配置されている可能性があるコマンド生成スイッチが含まれています。このモデル バリアントでは、Simscape Multibody、Simscape Power Systems、DSP System Toolbox、Fixed-Point Designer の各製品がインストールされている必要があります。このバリアント コンフィギュレーションは、Windows OS を実行しているマシンで |SimCANCommunication| ショートカットを使用してシミュレートできます。

テスト用モデル

パワー ウィンドウを制御するステート マシンをテストするには、テスト用のプロジェクトのショートカットを実行できます。コントローラーをテストするために使用できるモデルのショートカットは以下のとおりです。

  • InteractiveExample

  • CoverageExample

  • IncreaseCoverageExample

InteractiveExample

このモデルのショートカットを使用すると、モデル slexPowerWindowCntlInteract が開きます。このモデルには、ステート マシンであるパワー ウィンドウ コントローラーが含まれています。また、Manual Switch ブロックで選択されるコントローラーへの入力も含まれています。

パワー ウィンドウ コントローラーには次の 4 つの外部入力があります。

  • 助手席の入力

  • 運転席の入力

  • ウィンドウ枠の端部停止

  • 障害物の存在

助手席の入力

この入力は、次の 3 つの要素をもつベクトルで構成されています。

  • neutral: 助手席の制御スイッチは押されていません。

  • up: 助手席の制御スイッチが up 信号を生成しています。

  • down: 助手席の制御スイッチが down 信号を生成しています。

運転席の入力

この入力は、次の 3 つの要素をもつベクトルで構成されています。

  • neutral: 運転席の制御スイッチは押されていません。

  • up: 運転席の制御スイッチが up 信号を生成しています。

  • down: 運転席の制御スイッチが down 信号を生成しています。

ウィンドウ枠の端部停止

この入力は、次の 2 つの要素をもつベクトルで構成されています。

  • 0: ウィンドウは上部または下部との間で自由に動いています。

  • 1: 物理的制約のためにウィンドウは上部または下部で動きが取れない状態です。

障害物の存在

この入力は、次の 2 つの要素をもつベクトルで構成されています。

  • 0: ウィンドウは上部または下部との間で自由に動いています。

  • 1: ウィンドウの枠には障害物があります。

コントローラーを対話形式でテストするには、モデルのシミュレーションを実行して、Manual Switch ブロックによって目的の入力の組み合わせを選択します。入力の選択が完了したら、内部のコントローラーの状態とコントローラー出力を、この特定の入力セットの目的の結果に照らして検証できます。

CoverageExample

このモデルのショートカットを使用すると、モデル slexPowerWindowCntlCoverage が開きます。このモデルには、ステート マシンであるパワー ウィンドウ コントローラーが含まれています。また、Repeating Sequence ブロックであるコントローラーへの入力も含まれています。

Simulink Coverage (TM) のモデル カバレッジ ツールを使用すると、ウィンドウの離散イベント制御を検証できます。モデル カバレッジ ツールは、モデル テスト ケースがコントローラーの条件付き分岐を実行する範囲を決定するのに役立ちます。このツールは、実行するテスト ケースが与えられた場合に、離散イベント制御のすべての遷移が行われるかどうかを評価するのにも役立ちます。また、特定の遷移を有効にする条件のすべての節が真になるかどうかを評価するのにも役立ちます。1 つの遷移が複数の節によって有効になる場合があります。たとえば、emergency から neutral に戻る遷移は、100 チックが発生した場合か、端部停止に到達した場合に発生します。

IncreaseCoverageExample

このモデルのショートカットを使用すると、モデル slexPowerWindowCntlCoverageIncrease が開きます。このモデルには、ステート マシンであるパワー ウィンドウ コントローラーが含まれています。また、複数の入力セットをコントローラーに提供する From Spreadsheet ブロックも含まれています。これらの入力セットは、パワー ウィンドウ コントローラーにおいてより多くのロジックを実行するために、CoverageExample モデルの入力セットと連携します。

入力セットは次のとおりです。

  • Logged:CoverageExample から記録されます。

  • LoggedObstacleOffEndStopOn:端部停止に到達できる CoverageExample から記録されます。

  • LoggedObstacleOnEndStopOff:ウィンドウに障害物がある CoverageExample から記録されます。

  • LoggedObstacleOnEndStopOn:ウィンドウに障害物があり、端部停止に到達できる CoverageExample から記録されます。

  • DriverLoggedPassengerNeutral:運転席のみに関して CoverageExample から記録されます。助手席は何のアクションも実行しません。

  • DriverDownPassengerNeutral:運転席でウィンドウを下げます。助手席は何のアクションも実行しません。

  • DriverUpPassengerNeutral:運転席でウィンドウを上げます。助手席は何のアクションも実行しません。

  • DriverAutoDownPassengerNeutral:運転席でウィンドウを 1 秒間下げます (自動下降)。助手席は何のアクションも実行しません。

  • DriverAutoUpPassengerNeutral:運転席でウィンドウを 1 秒間上げます (自動上昇)。助手席は何のアクションも実行しません。

  • PassengerAutoDownDriverNeutral:助手席でウィンドウを 1 秒間下げます (自動下降)。運転席は何のアクションも実行しません。

  • PassengerAutoUpDriverNeutral:助手席でウィンドウを 1 秒間上げます (自動上昇)。運転席は何のアクションも実行しません。

モデル カバレッジのショートカットである GenerateIncreasedCoverage は、Simulink Coverage のモデル カバレッジ ツールで複数の入力セットを使用することで、ウィンドウの離散イベント制御を検証したり、複数の入力セットのカバレッジ レポートを生成します。モデル カバレッジ ツールは、モデル テスト ケースがコントローラーの条件付き分岐を実行する範囲を決定するのに役立ちます。さらに、実行する入力セットを前提として、離散イベント制御のすべての遷移が考慮されていることを検証するのにも役立ちます。

パワー ウィンドウ コントローラーの詳細

パワー ウィンドウ コントローラーのドキュメンテーションを参照してください。

Simulink® プロジェクトの詳細情報

Simulink プロジェクト ドキュメンテーションを参照してください。