高い信頼性を実現し、統合的な協調制御に高レベルで適応するため、FlexRayはグローバルタイムの導入や幾つかの補正方法を装備し、優れた通信同期機能を実現しています。その具体的な方法を紹介します。
FlexRayでは冗長による保全性を確保するため、同期タイミングについて1つのノードに依存せず、「同期ノード」と呼ばれる複数のノードのタイミングに、同期ノードではない他ノードが同期します。このタイミングがクラスタにおける「グローバルタイム」となるのです。また、ここでの“タイミングを合わせる”とは、具体的には各ノードで「共通のサイクル開始時間」「共通のサイクル長さ」を持つことになります。
各ノードがサイクル開始時間とサイクル長さを合わせるために使うのが「同期フレーム」であり、この同期フレームを送信するノードが「同期ノード」です。
まず、各ノードではローカルクロックとマイクロティックカウンター、マクロティックカウンター、サイクルカウンター、スロットカウンターといった各カウンター値により、自身のタイミング=ローカルタイムを知ることができます。また、同期フレームは送信タイミングが決まっているスタティックセグメントにて送信されるフレームであるため、その送信タイミングは予測することができ、これらを使ってローカルタイムにおけるサイクル開始時間やサイクル長を認識できます。
それに対して、同期ノードが実際に送信する全ての同期フレームのサイクル開始時間とサイクル長を測定し、これとローカルタイムを比べることにより自身の「ずれ」が分かります。そして、これから補正すべき値を計算し、補正を実施します。
補正の方法は以下の2通りがあります。
レート補正は他ノードとサイクルの長さを合わせる補正です。各ノードは、予測される同期フレームの送信間隔やマクロティックカウンターから自身のサイクル長を把握します。一方、同期フレームは、各サイクルの同じスロットで送信されるため、各同期フレーム到着時間の間隔を測定することで、同期ノードのサイクル長を取得できます。
例えば、図8にて、2n+1サイクルにおけるスタティックスロットdで送信される同期フレームdと、次のサイクル(2n+2サイクル)におけるスタティックスロットdで送信される同期フレームdの到着時間の間隔を測定することによって、同期フレームdを送信する同期ノードについてのサイクル長が測定できます。同様な測定を同期フレームhやその他の全ての同期フレームに対して、スロットごとに行います。同期フレームの数、つまり同期ノードの数が多ければ多いほど、測定するサイクル長も多くなり、精度が向上します。
これら測定値との差分を基に、ノード自身がサイクル長に関する補正値を計算します。その計算はNITセグメントにて、2サイクルに1回行われます。これは先の同期フレームdの例の通り、同期フレームの間隔を測定するには2サイクルが必要だからです。その後、計算した補正値に基づいて補正を実施します。これはサイクルを通じて行います。具体的には、1マクロティック当たりのマイクロティック数を調整することでサイクル長を調整します。
オフセット補正は、他ノードとサイクルの開始時間を合わせる補正です。予測した同期フレームの到着時間と実際の同期フレームの到着時間の差=“オフセット”を測定し、ノードが自身のサイクル開始時間の偏差を把握します。
例えば図10にて、スタティックスロットdで送信される同期フレームdの実際の到着時間と予測した到着時間の差が、つまり同期フレームdを送信するノードとのサイクル開始時間差になります。レート補正と同様、他の全ての同期フレームについてもスロットごとにオフセット値を測定するため、同期フレームの数が多いほど精度が安定します。
測定したオフセットに基づいてその補正値を計算しますが、これをサイクルごとのNITセグメントにて行います。補正の実施は2サイクルに1回、奇数サイクルのときにNITセグメントを短縮または延長することによって行います。
では具体的に、測定結果からどのように補正値を決めるのでしょうか? レート補正とオフセット補正、それぞれに対して同期ノードの数だけ測定結果が得られた後、各補正値はFTM(Fault Tolerant Midpoint)アルゴリズムという方法を使用して決定されます。
表1の例を基に説明します。
例えば、8つの同期ノードが存在するクラスタ内の非同期ノードXにおけるレート補正値が表1の通りだとします。各同期ノードが同期フレームを送信するスタティックスロットはそれぞれd、h、m、o、r、u、y、zです。
スロット | レート補正 測定値 (単位:マイクロティック) |
|
---|---|---|
d | −9 | |
h | 1 | |
m | −8 | |
o | 2 | |
r | 12 | |
u | 6 | |
y | −9 | |
z | −2 | |
表1 ノードXにおけるレート補正値 |
またFlexRayプロトコルでは、“パラメータk”という値がクラスタ内の同期ノードの数によって、表2のように規定されています。このパラメータは、補正値を計算する際、全ての測定値のうちの最大値と最小値からこの値の数だけ除外することを意味します。つまり、補正値の算出に極端に大きい/小さい値は使わないことで、より安定した補正値が得られます。
同期ノード数 | パラメータk | |
---|---|---|
1〜2 | 0 | |
3〜7 | 1 | |
7以上 | 2 | |
表2 同期ノードの数とパラメータk |
上記の例の場合、同期ノード数は「8」であるため、パラメータk=2となります。
これらの測定値の例からFTMアルゴリズムを使って、以下のように実際の補正値を決めます。
レート/オフセット補正の測定、計算、実施タイミングをまとめると以下のようになります。
Copyright © ITmedia, Inc. All Rights Reserved.