自動車のソフトウェア開発者になることはどうですか。 パート2/2

シリーズの最初の部分では 、少なくとも精神的にサーボ駆動システムの開発を開始しました。 すべての要素とそれらの間の接続が完全に見えるシステムのモデルを示しました。



画像



それでは、システムの各部はどのように接続するのでしょうか? 電子制御ユニット(ECU)を備えたFlexRayプロトコルにより、ステアリングホイールは位置センサーに接続されます。 温度に応じて電圧を調整する従来のセンサーとは異なり、スマートセンサーはFlexRayと直接相互作用します。



現代の自動車では、原則として、CANとFlexRayの2種類のネットワークテクノロジーが使用されています。 FlexRayはCANの後継です。 FlexRayの主な利点は、特定の信号の送信の瞬間を正確に決定できることです。つまり、プロトコルは決定論的です。 このネットワークの助けを借りて、個々の自動車システムは、ブレーキ、ステアリング、またはその他のスマートセンサーブロックであるかどうかにかかわらず、継続的に必要な情報を交換し、自動車の中断のない動作を保証します。



おなじみのFlexRayプロトコル起動スキームは、スロット間で時間を分配するプロセスであり、各スロットは特定の信号またはインジケーターを送信します。 このプロトコルは、物理パラメータの測定、情報の送信と処理、およびセンサーの動作の調整の過程でそのリズムを設定します。 図では、バスを介して送信されるデータのおかげで、繰り返しFlexRayスロットを見ることができます。



画像



したがって、ステアリングアングルセンサーは、対応するスロットが一列に並んだときに、遅かれ早かれではなく、現在のインジケーターを送信する必要があります。 データ送信の標準時間は10ミリ秒であるため、上の図では、ステアリングホイールの位置の変化を大幅に誇張する必要がありました。 そして、ドライバーは、ステアリングホイールを5°ほど速く回転させることはできません。 ただし、わかりやすくするために、この例を順守します。



当社のマイクロコントローラーには、ラダーセンサーから定期的に取得される値を受け入れるFlexRayコントローラーがあります。 おそらく既に推測したように、プロセッサが担当するプログラムは、FlexRayデータを時々読み込んで処理します。 この場合、処理とは、ステアリングホイールの回転角度に応じてラックの位置を決定することです(上の図を参照)。 数式を使用すると、レールのこの位置に基づいて適切なエンジン操作を計算できます。 さらに、ここでもギアシフトが考慮されます。



画像

位置センサー-FlexRay-FlexRay Controller-プロセッサー-PWM-トランスミッション-ステアリングラック



なじみのないPWMブロックに気づいたかもしれません。 これはパルス幅変調(PWM)であり、これによりパワーアンプへの電流供給を調整できます。これはモーターへの電力供給も担当します。 しかし、PWMとは何ですか?



PWM-パルス幅変調、さまざまな電気機器の電力を制御する優れた方法。 つまり、最大電力に対する電気の比率を調整します。0%は電力不足、100%は電力増幅器がエンジンに供給する総電力です。 そして、いつものように、 ウィキペディアでより詳細な情報見つけることができます:



画像



パルス幅変調(PWM)は、一定の周波数でパルスのデューティサイクルを変更することにより、負荷に供給される電力を制御するプロセスです。 アナログPWMとデジタルPWM、バイナリ(2レベル)PWM、およびターナリ(3レベル)PWMがあります。



ドライバーがハンドルを回すとどうなりますか? ある時点で、プロセッサで実行されているソフトウェアは、ステアリングホイールの新しい位置に関する情報を受け取り、エンジンを始動するために必要なPWM値を生成します。 次に、彼はステアリングラックを動かします。 以下の例では、ドライバーはステアリングホイールを5°(1)回します。 センサーは位置を分析し、FlexRayチャンネルを介して対応する値を送信します(2)。 FlexRayコントローラーはデータを受信し(3)、それに基づいてプログラムは適切なPWMインジケーターを計算し(4)、それらをマイクロコントローラーのPWMモジュールに設定します(5)。 PWMモジュールは、電気の流れを調整します。これにより、電力増幅器によって決定されたモーターの電力が設定されます(6)。 電流はエンジン(7)を駆動し、ステアリングラック(8)を動かします。



画像

位置センサー-FlexRay-コントローラーFlexRay-プロセッサー-PWM-トランスミッション-ステアリングラック



これで、前の例では、さまざまな物理計算と要素が関係していることがわかりました。 たとえば、どういうわけか、ハンドルの回転角度から%PWMを導き出す必要があります。 エンジンの現在の位置を考慮することは重要です。エンジンを始動しなければならない方向と速度を明確にするだけだからです。 しかし、残念ながら、これはすでに制御技術のトピックであり、この記事のフレームワークではカバーするつもりはありませんでした。



私は専門職のアーキテクトですが、ソフトウェア開発は大きな喜びをもたらしますが、当然ながら、システム全体の機能をサポートするプログラムのアーキテクチャを研究することが最も好きです。 徐々に、ソフトウェアアーキテクチャはシステムのリズムに適応する必要があることを理解します。おそらく、すべてが単一のリズムになった方が簡単でしょう。 しかし、いいえ、それらのいくつかがあり、それらは密接に相互接続されています。 そのため、たとえば、エンジンの動作に対応するリズムは通信チャネルのリズムよりもはるかに速いため、ステアリングホイールを回すと、動きがスムーズで、けいれんが発生しません。

リズミカルなソフトウェアアーキテクチャ



したがって、ソフトウェア環境ではリズミカルな信号処理が必要です。 リズムは、プログラム内の特定のサイクルの存在を意味します。 組み込みアプリケーションのアーキテクチャを検討したことがありますか? そうでなくても、心配しないでください。 ダイビングを始めています。



プロセッサで実行されているプログラムを上の画像からどのように分離できるかを分析してみましょう(ハンドルの回転の図を参照)。 アプリケーションコンポーネントのタスクについて考えると、明らかに3つのブロックを処理していることに気付くでしょう:FlexRay信号を受信するブロック、FlexRayデータに基づいてPWM値を決定するブロック、および合計PWM電力を調整するブロック。 次の図では、これらのコンポーネントがマイクロコントローラーと出来上がりに重ねられており、マルチレベルソフトウェアアーキテクチャの準備ができています。



画像



「Com」は通信回線を示すために使用されます。この要素は、マイクロコントローラーの一部であるFlexRayコントローラーから信号を読み取ります。 また、信号伝送の正確性をチェックし(たとえば、データを自動合計することにより)、それをプログラムの他のコンポーネントにステアリング位置のインジケータの形で転送します。 スマートアルゴリズムのおかげで、その作成には1年以上の作業が必要でした。「ステアリング」要素はこの値を取得し、必要なPWMパラメーターを計算します。 私は冗談ではありません。車の制御がかかっているため、このようなアルゴリズムの開発には多くの時間がかかる可能性があります。 そのため、特定の運転条件に関連する変数の質量を考慮する必要があります。 しかし、マルチレベルアーキテクチャに戻ると、PWMは残ります。 このPWMコンポーネントは、受信した情報を読み取り、マイクロコントローラーの最終的なPWM電力を設定します。



そして、同期の概念についてのいくつかの言葉。 FlexRayが対応する信号を受信するたびに新しいデータが到着します。10ミリ秒ごとの場合、画像は次のようになります。



画像



FlexRay信号を受信すると、相互に依存する3つの機能またはコンポーネントがトリガーされます。 次に、最終的なPWM電力が決定されます。 そして、これはすべて10ミリ秒ごとに繰り返されます。 ソフトウェアのリズムについてはこれで終わりです。



プログラムのソースデータから計算された最終値を受け取ると、次の図が得られます。



画像



PWMは10ミリ秒ごとに計算および調整されます。これは、最初のステップが完了したことを意味します。 これで車を展開できます!



ご想像のとおり、このような結果では、エンジンは明らかにスムーズに動作しません。 より良いです:



画像



それまでの間、運転者は明らかに、ステアリングホイールを回す際の前輪の震えが嫌いです。 プログラムのアーキテクチャを変更する必要があります。 これは、シリーズの新しいセクションに専念するものです。 このコンテンツを楽しんで、引き続きニュースをフォローしてください。 さらに、今では、さらに多くのことで、自動車用のソフトウェアアーキテクチャを構築する原理を理解したと確信しています。 前述したように、それはシステムの環境またはコンテキストによって決まります。




翻訳者から:



これまでのところ、これはオリジナルテキストの著者による自動車ソフトウェアに関する2番目と最後の投稿ですが、Mediumの彼のブログで更新を注意深く監視します。



ご清聴ありがとうございました。



All Articles