このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
パワー ウィンドウ コントロール プロジェクト
この例では、プロジェクトを使用して自動車のパワー ウィンドウ システムをモデル化する方法を示します。このプロジェクトでは、モデルベース デザインと次のような大規模モデリングの手法を使用します。
Model ブロックにより、階層を別々のモデルに分離します。
Variant Subsystem ブロックにより、さまざまな設計の選択肢をモデル化して切り替えます。
ライブラリにより、Variant Subsystem で再利用するためのアルゴリズムを取得します。
プロジェクトにより、システム開発に必要なファイルを管理します。
設計要件
この例では、自動車の助手席のパワー ウィンドウ システムについて考えます。このシステムでは、ウィンドウを閉めるときに物体に対して 100 N を超える力を及ぼすことができません。
このような物体が検出されると、モデルによってウィンドウは約 10 cm 下げられなければなりません。
設計要件の詳細については、パワー ウィンドウを参照してください。
プロジェクトの確認
プロジェクトを目視すると、この例の整理に使用されている機能を確認できます。以下の機能はプロジェクトの整理に使用されます。
フォルダー
ファイルの分類
ショートカット
フォルダー
プロジェクトは以下のフォルダーに整理されています。
configureModel
- メイン システム モデルのバリアント コンフィギュレーションを制御する MATLAB® ファイルdata
- プロジェクトに必要なイメージhmi
- パワー ウィンドウの応答をアニメーション化するファイルmodel
- メイン システム モデル、コントローラー モデル、コントローラーをテストするためのモデル、これらのモデルをサポートするライブラリtask
- さまざまなモデル コンフィギュレーションでのモデルのシミュレーションや、コントローラーのカバレッジ レポートの生成を行う MATLAB ファイルutilities
- モデルの初期化、スプレッドシート入力の生成、生成されたスプレッドシートへのデータの追加、起動時と終了時のプロジェクト環境の管理を行うための MATLAB ファイル
ファイルの分類
[ラベル] ペインに、プロジェクトのファイルのさまざまな分類が表示されています。各ラベルは、ファイルがプロジェクトの本体に対して果たす具体的な役割を示しています。
Configuration
- プロジェクトまたはモデルを設定するファイル。PrjConfig
- ファイルを起動時にパスに追加して終了時に削除することでプロジェクトを設定するファイルDesignConfig
- 特定の時点でどのモデル コンフィギュレーションをアクティブにするかを決定するファイルDesign
- メイン システム モデルとその参照先の制御モデルDesignSupport
- ライブラリ、データ、モデル シミュレーションなどのファイルSimulation
- 特定のコンフィギュレーションでモデルのシミュレーションを実行するファイルTest
- コントロール カバレッジ、コントロール相互作用、テスト ハーネスのモデルVisualization
- パワー ウィンドウの動きをアニメーション化するファイル
ショートカット
プロジェクトのショートカットにより、最もよく使用するプロジェクト ファイルに簡単にアクセスできます。ショートカットの中には、プロジェクトを起動時にパスに追加して終了時に削除するなどの一般的なタスクが含まれるものもあります。また、プロジェクトのショートカット グループを使用するとショートカットの整理に役立ちます。
Interactive Testing - コントローラーの対話型テストに使用するファイル
Main Model - 最上位レベルの Simulink モデルのファイル
Model Coverage - コントローラーのモデル カバレッジに使用するファイル
Simulation - モデルのバリアント コンフィギュレーションのシミュレーションに使用するファイル
プロジェクト内の Simulink モデルの調査
このプロジェクトの Simulink モデルは model
フォルダーにあります。
メイン システム モデル
テスト用モデル
メイン システム モデル
メイン システム モデルは slexPowerWindowExample
です。このモデルは、power_window_control_system
ブロックへの入力を生成する driver_switch
サブシステム ブロックと passenger_switch
サブシステム ブロックで構成されています。power_window_control_system
ブロックは、助手席と運転席の入力の状態を検証します。このブロックは、障害物がウィンドウのパスを遮っているかどうかも判別します。参照先のコントローラーは、ウィンドウ システムのアクティブなバリアントに送信されるウィンドウの動きのコマンド信号を生成します。window_system
ブロックの出力は、Control System ブロックへのフィードバックです。
シミュレーションの結果を可視化するために、シミュレーション データ インスペクターが出力データをログに記録し、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
と評価された場合にアクティブになります。
DesignConfig
分類下のファイルを使用して、バリアントの選択の組み合わせを制御してモデルのバリアント コンフィギュレーションを作成できます。モデルのバリアント コンフィギュレーションには以下のものがあります。
パワー ウィンドウ コントローラー ハイブリッド システム モデル
パワー ウィンドウ コントローラーおよび詳細なプラント モデル
データ収集効果を使用するパワー ウィンドウ コントローラー
コントローラー エリア ネットワーク (CAN) 通信を使用するパワー ウィンドウ コントローラー
パワー ウィンドウ コントローラー ハイブリッド システム モデル
このモデル バリアントでは、Stateflow® および Simulink を使用して、離散イベントのリアクティブ動作と連続時間の動作の両方をモデル化します。モデルは、低次のプラント モデルを使用して上昇動作と下降動作を検証します。このバリアント コンフィギュレーションは、SimHybridPlantLowOrder
ショートカットを使用してシミュレートできます。このショートカットを使用すると、このモデル コンフィギュレーションに対応する Variant Subsystem のみがアクティブになります。このモデルではパワー効果は考慮されないため、ログに記録された出力のみが位置になります。シミュレーション データ インスペクターには、ログに記録された位置データが表示されます。
パワー ウィンドウ コントローラーおよび詳細なプラント モデル
このモデル バリアントでは、電気ドメインと機械ドメインのパワー効果を含む詳細なプラント モデルを使用して、挟まれた物体に対してウィンドウの与える力が 100 N を超えないことを検証していることが示されています。このモデル バリアントでは、Simscape™ Multibody™ および Simscape™ Electrical™ のライセンスが必要です。このバリアント コンフィギュレーションは、SimHybridPlantPowerEffects
ショートカットを使用してシミュレートできます。パワー ウィンドウ コントローラー ハイブリッド システム モデルとは異なり、このバリアント コンフィギュレーションではパワー効果が考慮されます。シミュレーション データ インスペクターには、電機子電流、位置、パワー ウィンドウが及ぼす力のログ データが表示されます。
データ収集効果を使用するパワー ウィンドウ コントローラー
このモデル バリアントは、制御に影響する実装による追加効果を示します。含まれる現象には、電機子電流を測定するための信号調整、測定値の量子化があります。このモデル バリアントでは、Simscape Multibody、Simscape Electrical、DSP System Toolbox™、Fixed-Point Designer™ のライセンスが必要です。このバリアント コンフィギュレーションは、SimHybridPlantPowerEffects+ControlDAQEffects
ショートカットを使用してシミュレートできます。パワー ウィンドウ コントローラーおよび詳細なプラント モデルと同様に、シミュレーション データ インスペクターには、電機子電流、位置、パワー ウィンドウが及ぼす力のログ データが表示されます。
CAN 通信を使用するパワー ウィンドウ コントローラー
このモデル バリアントは、CAN を使用したウィンドウの動きを制御するコマンドのやり取りを示します。このモデル バリアントには、車両の中央コンソールに配置されている可能性があるコマンド生成スイッチが含まれています。このモデル バリアントでは、Simscape Multibody、Simscape Electrical、DSP System Toolbox、Fixed-Point Designer のライセンスが必要です。このバリアント コンフィギュレーションは、Windows OS を実行しているマシンで SimCANCommunication
ショートカットを使用してシミュレートできます。
テスト用モデル
パワー ウィンドウを制御するステート マシンをテストするには、テスト用のプロジェクトのショートカットを実行できます。コントローラーをテストするためのモデルのショートカットには以下のものがあります。
InteractiveExample
CoverageExample
IncreaseCoverageExample
InteractiveExample
このモデルのショートカットを使用すると、モデル slexPowerWindowCntlInteract
が開きます。このモデルには、ステート マシンであるパワー ウィンドウ コントローラーが含まれています。このモデルには Manual Switch ブロックで選択されるコントローラーへの入力も含まれています。
パワー ウィンドウ コントローラーには次の 4 つの外部入力があります。
Passenger Input
の入力は、次の 3 つの要素をもつベクトルで構成されています。
neutral
:助手席の制御スイッチは押されていません。up
:助手席の制御スイッチが up 信号を生成しています。down
:助手席の制御スイッチが down 信号を生成しています。
Driver Input
は、次の 3 つの要素をもつベクトルで構成されています。
neutral
:運転席の制御スイッチは押されていません。up
:運転席の制御スイッチが up 信号を生成しています。down
:運転席の制御スイッチが down 信号を生成しています。
Window Frame Endstops
の入力は、次の 2 つの要素をもつベクトルで構成されています。
0
:ウィンドウは上部と下部との間で自由に動いています。1
:物理的制約のためにウィンドウは上部または下部で動きが取れない状態です。
Obstacle Present
の入力は、次の 2 つの要素をもつベクトルで構成されています。
0
: ウィンドウは上部または下部との間で自由に動いています。1
: ウィンドウの枠には障害物があります。
コントローラーを対話形式でテストするには、モデルのシミュレーションを実行して、Manual Switch ブロックによって目的の入力の組み合わせを選択します。入力の選択が完了したら、内部のコントローラーの状態とコントローラー出力を、特定の入力セットの目的の結果に照らして検証できます。
CoverageExample
このモデルのショートカットを使用すると、モデル slexPowerWindowCntlCoverage
が開きます。このモデルには、ステート マシンであるパワー ウィンドウ コントローラーが含まれています。このモデルには、Repeating Sequence ブロックであるコントローラーへの入力も含まれています。
Simulink Coverage のモデル カバレッジ ツールを使用すると、ウィンドウの離散イベント制御を検証できます。モデル カバレッジ ツールは、モデル テスト ケースがコントローラーの条件付き分岐を実行する範囲を決定します。このツールは、テスト ケースが与えられた場合に、離散イベント制御のすべての遷移が行われるかどうかを評価します。また、このツールは、特定の遷移を有効にする条件のすべての節が真になるかどうかも評価します。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 のモデル カバレッジ ツールで複数の入力セットを使用することで、ウィンドウの離散イベント制御を検証したり、複数の入力セットのカバレッジ レポートを生成したりします。