車両バスシリーズ - FlexRay VII

車両バスシリーズ - FlexRay VII

私はスリッパを履いた男で、上海で長年カーエレクトロニクスエンジニアをしています。

古いルールなので、気に入ったテキストを共有して、高い知識と低い文化を持ったエンジニアになることを避けてください。

誰もあなたをフォローしません。誰もあなたをフォローする必要もありません。自分の価値を認めなければなりません。他人の立場になって自分に逆らうことはできません。人生において最も恐ろしいことは、他人の目を自分の人生の唯一の基準にしてしまうことです。結局、私は他人が好むように生きることも、自分が望むように生きることもできませんでした。
劣等感やプライドを持たず、ありのままの自分を受け入れることによってのみ、私たちはより強い心を持ち、自分自身の核となる価値観を見つけることによってのみ、私たち自身の素晴らしい人生を生きることができます。

1. FlexRay 動的タイムスロット

動的タイムスロットの設計要件は、基本的に静的タイムスロットの設計要件と同じです。動的スロットのレイアウトは、静的スロットのレイアウトと似ています。各動的スロットはアクション ポイント オフセットから始まります。このオフセットの終わりはアクション ポイントであり、動的メッセージ送信の開始点です。このアクションポイントは、ミニスロットのアクションポイントに対応する。

アクション ポイント オフセットの後には、アクション ポイントと動的メッセージが続きます。動的セグメントでは、送信される動的メッセージに異なる長さのペイロード セグメントが含まれる場合があります。チャネルアイドルデリミタは動的メッセージに続き、デリミタは静的タイムスロットと同じであり、11 個のリセシブビットで構成されます。

FlexRay 仕様によれば、動的メッセージは次の可能なアクション ポイントで終了する必要があります。これを確実にするために、電文送信は動的なテール シーケンスで拡張されます。理論的には、このシーケンスはミニスロットと同じくらい長くなる可能性があります。

ハイブリッド バス アクセス方法と対応するデータ送信をさらに詳しく説明するには、「デモ クラスター」図に示すように、5 つの FlexRay ノード (FlexRay ノード A ~ E) で構成される FlexRay クラスターを定義します。すべての FlexRay ノードはバスを介して接続されています。障害のリスクを最小限に抑えるために、通信チャネルは冗長設計されています。したがって、チャネル A とチャネル B の両方をデータの送信に使用できます。

データ送信の基礎として使用される通信スケジュールは、静的セグメントと動的セグメントに分割されます。どちらのセグメントも 5 つのタイムスロットで構成されます。ディスパッチ テーブルには、静的セグメントの静的パケットと動的セグメントの動的パケットがリストされます。

通信中、静的セクションで定義されたすべての静的メッセージは常に通信スケジュールに従って送信され、動的セクションで定義された動的メッセージは、対応するイベントが発生した場合にのみ送信されます。

インタラクティブな図とアニメーションを通じて、FlexRay クラスターでのデータ通信について学ぶことができます。インタラクティブな図は動的セグメントでの通信を詳しく示し、アニメーションは静的セグメントと動的セグメントでの通信を説明します。すべての機能を最大限に活用するには、手順をお読みください。

FlexRay クラスター内のデータは、統合テレグラム構造 (FlexRay テレグラム) を使用して送信されます。FlexRay メッセージは、フレーム ヘッダー、ペイロード、フレーム トレーラーの 3 つの部分で構成されます。フレームヘッダーは 40 ビットで構成され、そのうち 11 ビットが ID (識別子) を表します。ID はメッセージを識別し、タイムスロットに対応します。0x00 を除くすべての ID は自由に使用でき、0x00 は無効なメッセージを意味します。

ID の前には予約ビットと 4 つのインジケータ ビットが続きます。インジケーター ビットは、メッセージをより正確に示すために使用されます。ペイロード インジケータ ビットは、ネットワーク管理ベクトルが静的メッセージのペイロードで送信されているか、メッセージ識別子が動的メッセージのペイロードで送信されているかを示します。

空フレーム インジケータ ビットは、ロードが正常か無効かを示すために使用されます。空のフレームを送信する場合、ペイロードは無効なデータであるため、送信者はペイロード セグメント内のすべてのデータを 0 に設定できます。同期フレーム インジケーター ビットは、静的セグメントで送信されたメッセージが同期フレームであるかどうかを示します。スタートアップフレームインジケータは、静的セグメントで送信されるメッセージがスタートアップフレームであるかどうかを示します。

識別子の後にペイロード長が続きます。ペイロード長は 7 ビットで構成され、ペイロードのサイズ (ワード単位) を示します。メッセージは最大 254 バイト (127 ワード) まで送信できます。ペイロード長に続くのは、識別子、ペイロード長、同期フレーム インジケーターと開始フレーム インジケーター、および FlexRay 仕様で定義された生成多項式に基づいて計算された 11 ビットのヘッダー CRC シーケンスです。

フレーム ヘッダーの最後にはサイクル カウンターがあり、6 ビットで構成され、メッセージ送信のサイクル数を表します。サイクル カウンターの範囲は 0 ~ 63 です。

電文は最大 254 データ バイト (ペイロード) を送信できます。ペイロード長パラメータは、ペイロードのサイズをワードで示します。静的セグメントで送信されるすべての電文のペイロード長は同じ値です。システム設計者は、構成フェーズ中にこの値を定義する必要があります。動的メッセージは固定ペイロード サイズに制限されないため、ペイロード長の値はそのようなメッセージでは異なる場合があります。

静的セグメントで送信されるメッセージでは、フレーム ヘッダーのペイロード インジケータ ビットを設定することにより、ペイロード セグメントの最初の 0 ~ 12 バイトをネットワーク管理ベクトルの送信に使用できます。ネットワーク管理ベクトルを使用して、FlexRay クラスターにネットワーク管理を実装できます。

動的 FlexRay メッセージに対してペイロード インジケータ ビットが設定されている場合、ペイロード セグメントの最初の 2 バイトがメッセージ識別子であることを意味します。システム設計者は、メッセージ識別子を使用してペイロードをより正確に示します。パケット識別子をアクセプタンス フィルターで使用して、より詳細な識別基準を実装できます。

場合によっては、送信者はペイロード内のすべてのデータを 0 に設定できます。これは、FlexRay コントローラが通信スケジュールに従って静的メッセージを送信する必要があり、このメッセージに対応するバッファが一時的にアクセスできない場合に発生します。これは、たとえばホスト自体がこの時点でこのバッファにアクセスした場合に発生する可能性があります。FlexRay コントローラはバッファ内のデータにアクセスできないため、静的テレグラムを空のフレームとして自動的に送信します。この場合、フレーム ヘッダーの空フレーム インジケーターは 0 です。

ペイロードは CRC (巡回冗長検査) を使用して保護されます。CRC は非常に強力なエラー検出方法です。FlexRay 仕様で定義されているフレーム ヘッダー、ペイロード、生成多項式に従って CRC シーケンスを計算し、フレーム ヘッダーとペイロードにフレーム トレーラーとして追加します。

メッセージの CRC シーケンスは、フレーム ヘッダーとペイロードの倍数に対応します。メッセージの受信者は、あらゆる伝送エラーを確実に検出できます。エラーは生成多項式によるモジュロ除算によって検出できます。CRC メソッドは、最大 248 バイトのペイロードに対してハミング距離 6 を保証します。ペイロードが長い場合、ハミング距離は 4 になり、エラー検出能力が低下します。

メッセージの物理的な送信は、フレーム ヘッダーの最初のビットからではなく、送信開始シーケンス (TSS) から始まります。FlexRay クラスターがアクティブ スター トポロジを使用すると、アクティブ スター ノードがメッセージの最初のビットを RX ブランチから TX ブランチに送信できなくなるのを防ぐことができます。

その理由は、アクティブなスター ノードが動作状態に達するまでに一定の時間がかかるためです。アクティブなスター ノードを持つ FlexRay クラスターでは、TSS には下位 3 ~ 15 ビットが含まれている必要があります。

TSS の後にはフレーム開始シーケンス (FSS) が続きます。FSS の後、ヘッダーを送信できます。ここで、送信される各バイトの前にバイト開始シーケンス (BSS) が配置されることに注意してください。受信機は、BSS によって生成されたエッジによって再同期されます。テレグラムの終わりは、フレーム終了シーケンス (FES) によってマークされます。

静的スロットと動的スロットの両方で、11 個のリセッシブ ビット (チャネル アイドル デリミタ) は、通信メディアが利用可能であることを示します。FlexRay 仕様によれば、動的テレグラムは次の可能なアクション ポイントで正確に終了する必要があるため、テレグラム送信はいわゆる動的テール シーケンスによって拡張されます。これにより、各受信者は動的メッセージがどのミニスロットで終了するかを確実に判断できるようになります。

以下に、メッセージのエンコーディングを表す 2 つの図を示します。図「静的メッセージ」は、物理的な送信に必要なエンコード要素を記述する静的メッセージを示しています。図「ダイナミックメッセージ」も同様です。

FlexRay クラスターのスムーズな通信の前提条件は、すべての FlexRay ノードが一貫した時間認識を持っていることです。これは、時系列に従って特定の時点に到達すると、通信システムのすべてのアクティビティがトリガーされるためです。

FlexRay クラスターでは、すべてのノードで、すべての通信サイクルが同じ時点で開始され、長さが等しいことを保証する必要があります。さらに、FlexRay ノードのすべての静的タイムスロットが常にサイクル内の同じ時点で開始することを保証する必要があります。

これらを実現するための前提条件は、世界的な時間の合意です。FlexRay クラスターはマルチマスター ノード アーキテクチャに基づいているため、このグローバルな時間の合意は、FlexRay ノード自体の時間ベースに基づいて協調的にのみ達成できます。水晶発振器回路の周波数偏差やコンポーネント自体の精度により、同じ公称周波数でも異なる周波数や位相が生成される可能性があるため、これは大きな課題です。

また、環境条件の変化や経年劣化(10年間の使用を想定した場合、水晶発振器の周波数偏差は約250ppm)により周波数偏差が発生します。通常、自動車の寿命全体にわたって周波数偏差は最大 1500ppm と考えられます。

明らかに、ローカル タイム ベースが定期的に調整されていない場合、ネットワーク全体のタイム ベースを確立できません。FlexRay ノードは特別なアルゴリズムを使用してローカル クロックを修正し、FlexRay クラスター内のすべてのローカル クロックが指定された偏差までグローバル クロックと同期していることを保証します。位相補正 (オフセット補正とも呼ばれます) と周波数補正 (レート補正とも呼ばれます) の 2 つの方法が使用できます。

位相補正により、FlexRay ノードのローカル クロックが同じ位相になり、通信サイクルが常に同時に開始されるようになります。他の補正メカニズムがなければ、システム レイアウトは常にローカル クロックの最大スキューに基づいていなければなりません。

これは、任意の 2 つのローカル クロックの最大偏差が 3000ppm、サイクル タイムが 10ms の場合、サイクルの終わりに 30 マイクロ秒のドリフトが蓄積され、許容される最大データ転送速度が大幅に低下することを意味します。

周波数補正を位相補正を補完するものとして使用して、タイムトリガー通信システムの帯域幅効率を向上させることができます。位相補正は周波数偏差の発現のみに対処しますが、周波数補正は周波数偏差の原因に対処できます。

しかし、水晶の周波数は直接変更できないため、これは簡単ではありません。これを行うには、分周器を使用して水晶発振器の周波数を FlexRay ノードのローカル タイム ベースに変換します。分周比を変更することにより、ローカル クロックを速くしたり遅くしたりすることができ、最終的にはすべての FlexRay ノードの通信サイクルが同じ長さになるようにします。

複数の通信サイクルにわたる同期に必要な同期メッセージによって引き起こされる一時的な乱れにもかかわらず、周波数補正を使用すると、ほぼすべてのローカル クロックが同じ速度で動作するため、ローカル クロックの偏差は仕様の範囲内になります。周波数補正を使用すると、FlexRay クラスタのクロック同期が一時的な外乱に対して非常に堅牢になり、複数の通信サイクルにわたるクロック同期の失敗に耐えることができます。

FlexRay クラスター内のローカル クロックの同期は、各 FlexRay ノードがすべての静的テレグラムの送受信時点を最初から認識しているという事実に基づいています。これにより、FlexRay クラスターのすべてのノードが位相と周波数を修正できるようになります。数サイクルのキャリブレーションの後、すべての FlexRay ノードは、同じ時点および同じレートですべての通信サイクルを開始します。

FlexRay クラスタでは、2 ~ 15 の FlexRay ノードが同期ノードであることを保証する必要があり、これらのノードは各サイクルで指定された静的タイム スロットで同期メッセージを送信します。これらの同期パケットは追加のパケットではなく、同期フレーム インジケーターが設定された静的パケットです。

すべての FlexRay ノードは、既知の時点と同期メッセージの実際の到着時点を比較し、複数の同期ノードとの時間偏差を測定します。次に、FlexRay ノードは時間差の順序付きリストを作成し、FTM (フォールト トレラント ミッドポイント) アルゴリズムを使用してこのリストからオフセット補正値を計算します。

FTM アルゴリズムはリスト内の極端な値を排除し、大きな偏差を持つローカル クロックによって FlexRay クラスター内の通信が調整外れ状態に陥ることを防ぎます。同期ノードの数が 7 を超えない場合は、最小値と最大値を削除してください。同期ノードが 7 つを超える場合、次に大きい測定値と次に小さい測定値も破棄されます。

残りの測定値を合計して平均し、その結果が位相補正値となります。周波数補正値の計算方法は上記と同じですが、唯一の違いは、FlexRay ノードが同期メッセージの周期長を測定することです。

位相補正、周波数補正はともにマイクロティックを最小単位としたローカルクロックに基づいて行われます。位相補正は、各奇数サイクルの終わりに NIT から特定の数のマイクロティック (オフセットに相当) を追加または削除することによってタイミングを調整します。このようにして、FlexRay ノードは次のサイクルの開始時間を変更して、他の FlexRay ノードとの一貫性を保つことができます。

周波数補正が位相補正と同じにならないようにするために、FlexRay ノードは周波数補正値を次の偶数サイクルと次の奇数サイクルの間で均等に分割します。したがって、すべての FlexRay ノードはサイクルを短縮または延長できます。

書き込みと共有は終わりです!

あなたも私も時間の力を信じられますように

長期主義者になりましょう!

おすすめ

転載: blog.csdn.net/Soly_kun/article/details/131885454