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





エンジニアリング業界の現実に直面して、ほとんどのソフトウェア開発者は対応できません-一緒に仕事をしなければならない製品は非常に専門的です。 これは、インターネットユーザー、コンピューター、またはモバイル以外のアプリケーション向けのプログラムを作成するためのものではないため、初心者は映画「The Maze Runner」のトーマスのように感じます。 トレーラーの約50秒を見てください。初めて自動車用ソフトウェアの開発に携わった人々にどれほど衝撃を与えたかを理解できます。



あなたが持っているのは、あなたが知らない多くの用語とツールだけです。 自動車会社でのインタビュー中に、彼らがどのIDEを使用しているかを尋ねたとき、インタビュアーは私の質問を好まなかったため、控えめに言った。 私はVisual Studioに慣れているので、ファームウェアを開発するためにここで似たようなものが必要になることを単純に望みました。 何が私を待っているのかさえ想像もしていませんでした! 別の犠牲者を必要とする小さく複雑な(複雑な)ツールの海。



さらに、自動車用ソフトウェアの開発に関しては、ツールだけが問題ではありません。 初心者向けの文献や、図書館や対応するプログラムのアーキテクチャに関する教育資料を見つけることは実際上不可能です。 自動車業界は非常に閉鎖的なコミュニティであるため、「スタディガイド」という用語はまったく聞こえません。 そして、あなたはそれをコミュニティと呼ぶことはできそうにありません。なぜなら、そのような競争では誰もあなたがこのプログラムやそのプログラムをどのように作成しているのか推測する必要がないからです。 このプログラミングセグメントの個々のツールとメカニズムについて少なくとも何かを学ぶには、法外に高価なコースに登録できますが、あなたの会社はかなりの金額を支払う準備ができている必要があり、今必要な経験を得るには少なくとも数週間かかります。 自動車業界向けのプログラミングの詳細を理解することは非常に困難ですが、このトピックに私の記事を捧げることに決めたためです。



インターネットユーザー/コンピューター用のアプリケーションの作成から組み込みプログラムの開発へ、またはその逆に繰り返し切り替えなければならなかったため、主に製品の最初のブロックを扱う新規参入者が遭遇する問題について直接知っています。 自動車産業の特性に出会ったことがないプログラマにも同様の困難が生じます。



この記事と次の記事では、自動車用の組み込みプログラムの動作原理についてお話しするとともに、組み込みアプリケーションのエキゾチックなアーキテクチャの腸を調べたいと思います。



どのトピックを検討しますか?





特定の例を見てこれらの質問に答えると同時に、組み込みソフトウェアのアーキテクチャの開発をレビューします。 例として、完全に電子的なステアリングシステムを取り上げます。 これは実際のモデルではありませんが、構造上、原則として、車で見た可能性が最も高いモデルに似ています。 アーキテクチャについて詳しく説明した後、システムの機能の本質を明らかにする簡略化されたスキームに進みます。



電子ステアリングシステムの開発に関するビデオを見ることができます。 ところで、私もこのチームで働いていました。







このモデルは、ソフトウェアによって部分的に制御されます。 部分的には、専用ソフトウェアはドライバーを支援するだけですが、彼はシステムを完全に制御できます。



ステアリングホイールがホイールに直接接続されていない完全に電子的なステアリングシステムを作成する必要があるとします。 代わりに、センサーがステアリング角度を測定し、データをプログラムに送信します。 自動車用語では、それはサーボです。 信じられないかもしれませんが、日産のおかげで、 サーボ駆動モデルがすでに市場に登場しています。



ソフトウェアは、小さなプロセッサー、より正確には、ネットワークを介してセンサーに接続されたマイクロコントローラーによって提供されます。



画像



ドライバーが現在の回転角度に関する情報を絶えず送信するセンサーのおかげで、ハンドルを回すと、ソフトウェアは適切な信号を受信します。 たとえば、ドライバーがステアリングホイールを右に90度回すと、1秒以内にセンサー信号が次の原理に従って処理されます。



画像



さらに、ソフトウェアは電動モーターの動作も制御します。これにより、ギアラックが左から右へ、反対方向に移動します。つまり、車の前輪の回転角度が変化します。 したがって、ソフトウェアは車を左右に操縦できます。 ソフトウェアを起動するマイクロコントローラーと電気モーター間の接続は、マイクロコントローラー自体とモーター電源システムを調整するパワーアンプを含む電子制御ユニット(ECU)のおかげで保証されます。 したがって、私たちのプログラムはモーターへの電流供給を変化させ、ギアラックの位置は正しい方向に変化します。



画像

電子制御ユニット(ECU)



ファームウェアが正常に機能している場合、ステアリングホイールを回すと、ラックの位置がほぼ瞬時に変わります。



画像

ステアリングホイール-青、ステアリングラック-ピンク(約)



ここでの情報の処理でさえ、グラフィカルユーザーインターフェイスの通常のアプリケーションや、バッチファイルの法則のように、イベント指向プログラミングのロジックに従わないことが明らかになります。 代わりに、着信データの継続的なタイムリーな処理が必要です。 プログラムがセンサーの分析に時間がかかりすぎると、車のステアリングラックと前輪が遅れて移動し、ドライバーはこれに気付くでしょう。 ほとんどの場合、極端な状況では、 これは車の制御の喪失につながります。たとえば、障害物を避けるためにハンドルを回すと、車はすぐに操縦に反応しません。 この特異性により、特に標準的な電子制御ユニットの限られたプロセッサー性能を考慮する場合、自動車の一時的な性能プログラムの要件が高まります。



シリーズの続きでは、指摘された問題を排除できるソフトウェアアーキテクチャを検討します。これらの資料を活用して、自動車用組み込みアプリケーションの初心者開発者がこの分野の基本原則をはるかに早くマスターできることを願っています。



パート2/2




All Articles