(57)【特許請求の範囲】
【請求項１】
マスタ機器から送信される制御フレームに従って動作するスレーブ機器であって、
クロックデバイスであるスレーブクロックと、
前記マスタ機器から送信された１つ以上の制御フレームの統計量である制御フレーム統計量を算出する統計量算出部と、
算出された制御フレーム統計量に基づいて、前記マスタ機器の動作環境を表すマスタ環境値を推定するマスタ環境値推定部と、
前記スレーブ機器の動作環境を表すスレーブ環境値を計測するスレーブ環境値計測部と、
推定されたマスタ環境値に基づいて、前記マスタ機器に備わるマスタクロックの周波数偏差を推定し、計測されたスレーブ環境値に基づいて、前記スレーブクロックの周波数偏差を推定する周波数偏差推定部と、
前記マスタクロックの周波数偏差と前記スレーブクロックの周波数偏差との差分に基づいて、前記スレーブクロックのクロック値を修正するクロック補正部と、
を備えるスレーブ機器。
【請求項２】
前記マスタ環境値推定部は、制御フレーム統計量とマスタ環境値との関係を示すマスタ環境値テーブルを用いて、前記マスタ環境値を推定する
請求項１に記載のスレーブ機器。
【請求項３】
前記マスタ機器は、前記スレーブ機器が制御フレームに従って動作する運用フェーズの前のチューニングフェーズにおいて、１つ以上の制御フレームと、１つ以上のマスタ環境値を示す１つ以上の環境値フレームとを送信し、
前記スレーブ機器は、前記マスタ環境値テーブルを生成するテーブル生成部を備え、
前記統計量算出部は、前記チューニングフェーズにおいて前記マスタ機器から送信された１つ以上の制御フレームに基づいて、前記チューニングフェーズにおける１つ以上の制御フレーム統計量を算出し、
前記テーブル生成部は、前記チューニングフェーズにおける１つ以上の制御フレーム統計量と、前記チューニングフェーズにおいて前記マスタ機器から送信された１つ以上の環境値フレームが示す１つ以上のマスタ環境値とを用いて、前記マスタ環境値テーブルを生成する
請求項２に記載のスレーブ機器。
【請求項４】
前記周波数偏差推定部は、マスタ環境値と周波数偏差との関係を示すマスタ周波数偏差テーブルを用いて前記マスタクロックの周波数偏差を推定する
請求項３に記載のスレーブ機器。
【請求項５】
前記マスタ周波数偏差テーブルは、前記チューニングフェーズにおいて前記マスタ機器から取得される
請求項４に記載のスレーブ機器。
【請求項６】
前記マスタ環境値推定部は、前記マスタクロックの温度を前記マスタ環境値として推定し、
前記スレーブ環境値計測部は、前記スレーブクロックの温度を前記スレーブ環境値として計測する
請求項１から請求項５のいずれか１項に記載のスレーブ機器。
【請求項７】
マスタ機器から送信される制御フレームに従って動作するスレーブ機器のための時刻同期プログラムであって、
前記マスタ機器から送信された１つ以上の制御フレームの統計量である制御フレーム統計量を算出する統計量算出処理と、
算出された制御フレーム統計量に基づいて、前記マスタ機器の動作環境を表すマスタ環境値を推定するマスタ環境値推定処理と、
前記スレーブ機器の動作環境を表すスレーブ環境値を計測するスレーブ環境値計測処理と、
推定されたマスタ環境値に基づいて、前記マスタ機器に備わるマスタクロックの周波数偏差を推定し、計測されたスレーブ環境値に基づいて、前記スレーブ機器に備わるスレーブクロックの周波数偏差を推定する周波数偏差推定処理と、
前記マスタクロックの周波数偏差と前記スレーブクロックの周波数偏差との差分に基づいて、前記スレーブクロックのクロック値を修正するクロック補正処理と、
をコンピュータに実行させるための時刻同期プログラム。
【請求項８】
１つ以上の制御フレームを送信するマスタ機器と、
前記マスタ機器から送信される１つ以上の制御フレームに従って動作するスレーブ機器とを備え、
前記スレーブ機器は、
クロックデバイスであるスレーブクロックと、
前記マスタ機器から送信された１つ以上の制御フレームの統計量である制御フレーム統計量を算出する統計量算出部と、
算出された制御フレーム統計量に基づいて、前記マスタ機器の動作環境を表すマスタ環境値を推定するマスタ環境値推定部と、
前記スレーブ機器の動作環境を表すスレーブ環境値を計測するスレーブ環境値計測部と、
推定されたマスタ環境値に基づいて、前記マスタ機器に備わるマスタクロックの周波数偏差を推定し、計測されたスレーブ環境値に基づいて、前記スレーブクロックの周波数偏差を推定する周波数偏差推定部と、
前記マスタクロックの周波数偏差と前記スレーブクロックの周波数偏差との差分に基づいて、前記スレーブクロックのクロック値を修正するクロック補正部とを備える
組み込みシステム。
【請求項９】
制御フレームを送信するマスタ機器と、前記マスタ機器から送信された制御フレームに従って動作するスレーブ機器と、を備える組み込みシステムの時刻同期方法であって、
前記マスタ機器は、１つ以上の制御フレームを送信し、
前記スレーブ機器は、
前記マスタ機器から送信された１つ以上の制御フレームの統計量である制御フレーム統計量を算出し、
算出された制御フレーム統計量に基づいて、前記マスタ機器の動作環境を表すマスタ環境値を推定し、
前記スレーブ機器の動作環境を表すスレーブ環境値を計測し、
推定されたマスタ環境値に基づいて、前記マスタ機器に備わるマスタクロックの周波数偏差を推定し、計測されたスレーブ環境値に基づいて、前記スレーブ機器に備わるスレーブクロックの周波数偏差を推定し、
前記マスタクロックの周波数偏差と前記スレーブクロックの周波数偏差との差分に基づいて、前記スレーブクロックのクロック値を修正する
時刻同期方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マスタノードとスレーブノードとの時刻同期に関するものである。
【背景技術】
【０００２】
マスタノードの時刻とスレーブノードの時刻とを同期させるために、マスタノードとスレーブノードとの間で定期的に同期フレームが通信される。【０００３】
特許文献１には、単一の組み込み装置において時刻誤差を補正するための方法が開示されている。
単一の組み込み装置はＲＴＣとシステム時計とを有する。特許文献１に開示された方法により、ＲＴＣが示す時刻とシステム時計が示す時刻との誤差を補正することが可能となる。ＲＴＣはリアルタイムクロックの略称である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−０２０８５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
マスタノードとスレーブノードとの間で時刻同期の状態を維持するためには、同期フレームの通信頻度を上げる必要がある。しかし、同期フレームの通信頻度が上がると、同期フレームの通信量、および、同期フレームの通信のための処理負荷が増加する。その場合、マスタノードからスレーブノードへ制御フレームの通信が同期フレームの通信による影響を受けてしまい、スレーブノードが正しく動作しない可能性がある。
特許文献１に開示された方法は、単一の組み込み装置のための方法であり、各種フレームが通信されるノード間の時刻同期のためにそのまま適用することはできない。【０００６】
本発明は、同期フレームの通信量を削減しつつ、ノード間の時刻同期を可能にすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明のスレーブ機器は、マスタ機器から送信される制御フレームに従って動作する。
前記スレーブ機器は、
クロックデバイスであるスレーブクロックと、
前記マスタ機器から送信された１つ以上の制御フレームの統計量である制御フレーム統計量を算出する統計量算出部と、
算出された制御フレーム統計量に基づいて、前記マスタ機器の動作環境を表すマスタ環境値を推定するマスタ環境値推定部と、
前記スレーブ機器の動作環境を表すスレーブ環境値を計測するスレーブ環境値計測部と、
推定されたマスタ環境値に基づいて、前記マスタ機器に備わるマスタクロックの周波数偏差を推定し、計測されたスレーブ環境値に基づいて、前記スレーブクロックの周波数偏差を推定する周波数偏差推定部と、
前記マスタクロックの周波数偏差と前記スレーブクロックの周波数偏差との差分に基づいて、前記スレーブクロックのクロック値を修正するクロック補正部とを備える。
【発明の効果】
【０００８】
本発明によれば、マスタ機器からスレーブ機器へ送信される１つ以上の制御フレームの統計量に基づいて、マスタ機器とスレーブ機器との時刻同期を実現することができる。つまり、同期フレームの通信量を削減しつつ、ノード間の時刻同期を行うことが可能となる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１における組み込みシステム１００の構成図。
【図２】実施の形態１におけるマスタノード２００の構成図。
【図３】実施の形態１における運用部２１０および時刻同期部２２０の構成図。
【図４】実施の形態１におけるスレーブノード３００の構成図。
【図５】実施の形態１における運用部３１０および時刻同期部３２０の構成図。
【図６】実施の形態１におけるチューニングフェーズ（マスタノード）のフローチャート。
【図７】実施の形態１におけるマスタ周波数偏差テーブル１０１を示す図。
【図８】実施の形態１におけるチューニングフェーズ（スレーブノード）のフローチャート。
【図９】実施の形態１におけるマスタ環境値テーブル１０２を示す図。
【図１０】実施の形態１における運用フェーズ（時刻同期）のフローチャート。
【図１１】実施の形態１におけるクロック補正処理（Ｓ１３０）のフローチャート。
【図１２】実施の形態１における課題の説明図。
【図１３】実施の形態１における課題の説明図。
【図１４】実施の形態１における課題の説明図。
【図１５】実施の形態１におけるマスタノード２００のハードウェア構成図。
【図１６】実施の形態１におけるスレーブノード３００のハードウェア構成図。
【発明を実施するための形態】
【００１０】
実施の形態および図面において、同じ要素または対応する要素には同じ符号を付している。説明した要素と同じ符号が付された要素の説明は適宜に省略または簡略化する。図中の矢印はデータの流れ又は処理の流れを主に示している。
【００１１】
実施の形態１．
マスタノードとスレーブノードとの間の時刻同期について、図１から図１６に基づいて説明する。
【００１２】
＊＊＊構成の説明＊＊＊
図１に基づいて、組み込みシステム１００の構成を説明する。
組み込みシステム１００は、マスタノード２００とスレーブノード３００とを備える。
マスタノード２００は、組み込みシステム１００に備わる組み込み機器であり、「マスタ機器」ともいう。
スレーブノード３００は、組み込みシステム１００に備わる組み込み機器であり、「スレーブ機器」ともいう。
【００１３】
マスタノード２００とスレーブノード３００とは、制御ネットワーク１０９を介して通信を行う。
制御ネットワーク１０９は、組み込みシステム１００における通信ネットワークである。
【００１４】
マスタノード２００は制御フレームをスレーブノード３００に送信し、スレーブノード３００は制御フレームに従って動作する。これにより、マスタノード２００とスレーブノード３００は同期処理を行う。
例えば、マスタノード２００はベルトコンベアの一端のモータを制御する機器であり、スレーブノード３００はベルトコンベアの他端のモータを制御する機器である。マスタノード２００とスレーブノード３００は、ベルトコンベアの両端のモータを同期して動作させる必要がある。
【００１５】
図２に基づいて、マスタノード２００の構成を説明する。
マスタノード２００は、プロセッサ２０１とメモリ２０２と補助記憶装置２０３とクロックデバイス２０４と通信デバイス２０５と入出力デバイス２０６といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
【００１６】
プロセッサ２０１は、演算処理を行うＩＣであり、他のハードウェアを制御する。例えば、プロセッサ２０１は、ＣＰＵ、ＤＳＰまたはＧＰＵである。
ＩＣは、Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略称である。
ＣＰＵは、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略称である。
ＤＳＰは、Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒの略称である。
ＧＰＵは、Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略称である。
【００１７】
メモリ２０２は揮発性の記憶装置である。メモリ２０２は、主記憶装置またはメインメモリとも呼ばれる。例えば、メモリ２０２はＲＡＭである。メモリ２０２に記憶されたデータは必要に応じて補助記憶装置２０３に保存される。
ＲＡＭは、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略称である。
【００１８】
補助記憶装置２０３は不揮発性の記憶装置である。例えば、補助記憶装置２０３は、ＲＯＭ、ＨＤＤまたはフラッシュメモリである。補助記憶装置２０３に記憶されたデータは必要に応じてメモリ２０２にロードされる。
ＲＯＭは、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙの略称である。
ＨＤＤは、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略称である。
【００１９】
クロックデバイス２０４は、時刻を表すクロック信号を出力するデバイスである。例えば、クロックデバイス２０４は、水晶発振器であり、水晶振動子を有する。
クロックデバイス２０４は、「マスタクロック」ともいう。
【００２０】
通信デバイス２０５は、レシーバおよびトランスミッタである。例えば、通信デバイス２０５は通信チップまたはＮＩＣである。マスタノード２００の通信は、通信デバイス２０５を用いて行われる。
ＮＩＣは、Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄの略称である。
【００２１】
入出力デバイス２０６は、入力デバイスおよび出力デバイスである。例えば、入出力デバイス２０６は、センサ、ＬＥＤおよびモータなどである。
ＬＥＤは、Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅの略称である。
【００２２】
環境センサ２０７は、マスタノード２００の動作環境を計測するためのセンサである。例えば、環境センサ２０７は、温度計、ジャイロまたは電圧計などである。
【００２３】
マスタノード２００は、運用部２１０と時刻同期部２２０といった要素を備える。これらの要素はソフトウェアで実現される。
【００２４】
補助記憶装置２０３には、運用部２１０と時刻同期部２２０としてコンピュータを機能させるためのマスタプログラム（運用プログラムおよび時刻同期プログラム）が記憶されている。マスタプログラムは、メモリ２０２にロードされて、プロセッサ２０１によって実行される。
補助記憶装置２０３には、さらに、ＯＳが記憶されている。ＯＳの少なくとも一部は、メモリ２０２にロードされて、プロセッサ２０１によって実行される。
プロセッサ２０１は、ＯＳを実行しながら、マスタプログラムを実行する。
ＯＳは、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍの略称である。
【００２５】
マスタプログラムの入出力データは記憶部２９０に記憶される。
メモリ２０２は記憶部２９０として機能する。但し、補助記憶装置２０３、プロセッサ２０１内のレジスタおよびプロセッサ２０１内のキャッシュメモリなどの記憶装置が、メモリ２０２の代わりに、又は、メモリ２０２と共に、記憶部２９０として機能してもよい。
【００２６】
マスタノード２００は、プロセッサ２０１を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ２０１の役割を分担する。
【００２７】
マスタプログラムは、光ディスクまたはフラッシュメモリ等の不揮発性の記録媒体にコンピュータ読み取り可能に記録（格納）することができる。
【００２８】
図３に基づいて、運用部２１０と時刻同期部２２０とのそれぞれの構成を説明する。
運用部２１０は、フレーム通信部２１１とデバイス制御部２１２とを備える。
時刻同期部２２０は、テーブル提供部２２１と擬似通信部２２２とマスタ環境値計測部２２３と同期フレーム通信部２２４とを備える。
各要素の機能については後述する。
【００２９】
図４に基づいて、スレーブノード３００の構成を説明する。
スレーブノード３００は、プロセッサ３０１とメモリ３０２と補助記憶装置３０３とクロックデバイス３０４と通信デバイス３０５と入出力デバイス３０６といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
【００３０】
プロセッサ３０１は、演算処理を行うＩＣであり、他のハードウェアを制御する。例えば、プロセッサ３０１はＣＰＵ、ＤＳＰまたはＧＰＵである。
メモリ３０２は揮発性の記憶装置である。メモリ３０２は、主記憶装置またはメインメモリとも呼ばれる。例えば、メモリ３０２はＲＡＭである。メモリ３０２に記憶されたデータは必要に応じて補助記憶装置３０３に保存される。
補助記憶装置３０３は不揮発性の記憶装置である。例えば、補助記憶装置３０３は、ＲＯＭ、ＨＤＤまたはフラッシュメモリである。補助記憶装置３０３に記憶されたデータは必要に応じてメモリ３０２にロードされる。
【００３１】
クロックデバイス３０４は、時刻を表すクロック信号を出力するデバイスである。例えば、クロックデバイス３０４は、水晶発振器であり、水晶振動子を有する。
クロックデバイス３０４は、「スレーブクロック」ともいう。
【００３２】
通信デバイス３０５は、レシーバおよびトランスミッタである。例えば、通信デバイス３０５は通信チップまたはＮＩＣである。スレーブノード３００の通信は、通信デバイス３０５を用いて行われる。
【００３３】
入出力デバイス３０６は、入力デバイスおよび出力デバイスである。例えば、入出力デバイス３０６は、センサ、ＬＥＤおよびモータなどである。
【００３４】
環境センサ３０７は、スレーブノード３００の動作環境を計測するためのセンサである。例えば、環境センサ３０７は、温度計、ジャイロまたは電圧計などである。
【００３５】
スレーブノード３００は、運用部３１０と時刻同期部３２０といった要素を備える。これらの要素はソフトウェアで実現される。
【００３６】
補助記憶装置３０３には、運用部３１０と時刻同期部３２０としてコンピュータを機能させるためのスレーブプログラム（運用プログラムおよび時刻同期プログラム）が記憶されている。スレーブプログラムは、メモリ３０２にロードされて、プロセッサ３０１によって実行される。
補助記憶装置３０３には、さらに、ＯＳが記憶されている。ＯＳの少なくとも一部は、メモリ３０２にロードされて、プロセッサ３０１によって実行される。
プロセッサ３０１は、ＯＳを実行しながら、スレーブプログラムを実行する。
【００３７】
スレーブプログラムの入出力データは記憶部３９０に記憶される。
メモリ３０２は記憶部３９０として機能する。但し、補助記憶装置３０３、プロセッサ３０１内のレジスタおよびプロセッサ３０１内のキャッシュメモリなどの記憶装置が、メモリ３０２の代わりに、又は、メモリ３０２と共に、記憶部３９０として機能してもよい。
【００３８】
スレーブノード３００は、プロセッサ３０１を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ３０１の役割を分担する。
【００３９】
スレーブプログラムは、光ディスクまたはフラッシュメモリ等の不揮発性の記録媒体にコンピュータ読み取り可能に記録（格納）することができる。
【００４０】
図５に基づいて、運用部３１０と時刻同期部３２０とのそれぞれの構成を説明する。
運用部３１０は、フレーム通信部３１１とデバイス制御部３１２とを備える。
時刻同期部３２０は、テーブル取得部３２１と擬似通信部３２２と統計量算出部３２３とテーブル生成部３２４とマスタ環境値推定部３２５とスレーブ環境値計測部３２６と周波数偏差推定部３２７とクロック補正部３２８と同期フレーム通信部３２９とを備える。
各要素の機能については後述する。
【００４１】
＊＊＊動作の説明＊＊＊
マスタノード２００の時刻同期部２２０とスレーブノード３００の時刻同期部３２０との動作は時刻同期方法に相当する。また、時刻同期方法の手順は時刻同期プログラムの手順に相当する。
【００４２】
時刻同期方法は、チューニングフェーズと運用フェーズとを有する。
チューニングフェーズは、運用フェーズの前に実施される。チューニングフェーズでは、運用フェーズにおける時刻同期のための準備が行われる。例えば、チューニングフェーズは、季節の変わり目、および、組み込みシステム１００におけるラインの組み換え時などに実施される。チューニングフェーズの実施時期は、利用者によって適宜に決められる。
運用フェーズは、チューニングフェーズの後に実施される。運用フェーズでは、スレーブノード３００が、マスタノード２００と時刻の同期を取りながら、制御フレームに従って動作する。
【００４３】
図６に基づいて、チューニングフェーズにおけるマスタノード２００の動作を説明する。
ステップＳ１０１において、テーブル提供部２２１は、マスタ周波数偏差テーブル１０１をスレーブノード３００に提供する。
マスタ周波数偏差テーブル１０１は、マスタ環境値とマスタ周波数偏差との関係を示すデータである。マスタ周波数偏差テーブル１０１には、１つ以上のマスタ環境値と１つ以上のマスタ周波数偏差とが互いに対応付けられている。
マスタ環境値は、マスタノード２００の動作環境を表す値である。例えば、マスタ環境値は、温度、加速度または電圧などである。具体的には、マスタ環境値は、マスタクロックの温度である。
マスタ周波数偏差は、マスタクロックの周波数偏差である。
【００４４】
テーブル提供部２２１は、マスタ周波数偏差テーブル１０１を以下のように提供する。
マスタ周波数偏差テーブル１０１は、記憶部３９０に予め記憶されている。
テーブル提供部２２１は、マスタ周波数偏差テーブルをスレーブノード３００へ送信する。
【００４５】
図７に、マスタ周波数偏差テーブル１０１の具体例を示す。
マスタ周波数偏差テーブル１０１は、１つ以上のレコードを有する。それぞれのレコードは、「温度」欄と「周波数」欄とを有し、「温度」欄と「周波数偏差」欄とを互いに対応付けている。
「温度」欄は、マスタクロックの相対温度を示している。マスタクロックの相対温度はマスタ環境値の一例である。
「周波数偏差」欄は、マスタクロックの周波数偏差の相対値を示している。
例えば、マスタクロックの温度が１０度上がった場合、マスタクロックの周波数偏差が１０上がる。
【００４６】
図６に戻り、ステップＳ１０２から説明を続ける。
ステップＳ１０２において、擬似通信部２２２は、１つ以上の制御フレームを生成し、生成した１つ以上の制御フレームをスレーブノード３００へ送信する。
また、擬似通信部２２２は、１つ以上の環境値フレームを生成し、生成した１つ以上の環境値フレームをスレーブノード３００へ送信する。
制御フレームは、スレーブノード３００に指示する制御の内容を示すフレームである。
環境値フレームは、マスタ環境値を示すフレームである。
【００４７】
具体的には、擬似通信部２２２は、マスタ環境値が飽和するまで継続して、制御フレームと環境値フレームとをスレーブノード３００へ送信する。制御フレームの送信間隔と環境値フレームの送信間隔は、同じでもよいし、異なってもよい。
【００４８】
制御フレームの内容は、運用フェーズにおける内容と同様である。
擬似通信部２２２は、運用フェーズにおけるフレーム通信部２１１の動作をシミュレーションすることによって、制御フレームを生成する。
【００４９】
環境値フレームは、以下のように生成される。
マスタ環境値計測部２２３は、環境センサ２０７を用いてマスタ環境値を計測する。
擬似通信部２２２は、計測されたマスタ環境値を含むフレームを生成する。生成されるフレームが環境値フレームである。
【００５０】
図８に基づいて、チューニングフェーズにおけるスレーブノード３００の動作を説明する。
ステップＳ１１１において、テーブル取得部３２１は、マスタ周波数偏差テーブルをマスタノード２００から取得する。
具体的には、テーブル取得部３２１は、マスタノード２００から送信されるマスタ周波数偏差テーブルを受信する。そして、テーブル取得部３２１は、受信したマスタ周波数偏差テーブルを記憶部２９０に保存する。
【００５１】
ステップＳ１１２において、擬似通信部３２２は、１つ以上の制御フレームと１つ以上の環境値フレームとをスレーブノード３００から受信する。
具体的には、擬似通信部３２２は、スレーブノード３００から定期的に送信される制御フレームを受信する。また、擬似通信部３２２は、スレーブノード３００から定期的に送信される環境値フレームを受信する。
【００５２】
ステップＳ１１３において、統計量算出部３２３は、受信された１つ以上の制御フレームに基づいて、１つ以上の制御フレーム統計量を算出する。
制御フレーム統計量は、通信された制御フレームの統計量である。例えば、制御フレーム統計量は、制御フレームの通信回数、制御フレームの合計サイズ、または、制御内容の統計量である。例えば、制御内容の統計量は、モータの回転数の合計である。
【００５３】
具体的には、統計量算出部３２３は、規定数の制御フレームが受信される毎に、制御フレーム統計量を算出する。
【００５４】
ステップＳ１１４において、テーブル生成部３２４は、１つ以上の制御フレーム統計量と、１つ以上の環境値フレームが示す１つ以上のマスタ環境値とを用いて、マスタ環境値テーブル１０２を生成する。
そして、テーブル生成部３２４は、マスタ環境値テーブル１０２を記憶部３９０に保存する。
マスタ環境値テーブル１０２は、制御フレーム統計量とマスタ環境値との関係を示すデータである。
【００５５】
テーブル生成部３２４は、マスタ環境値テーブル１０２を以下のように生成する。
テーブル生成部３２４は、規定数の制御フレームが受信される毎に、統計量算出部３２３から制御フレーム統計量を取得する。
テーブル生成部３２４は、規定数番目の制御フレームの後の（または前の）環境値フレームが受信される毎に、受信された環境値フレームからマスタ環境値を取得する。
そして、テーブル生成部３２４は、制御フレーム統計量とマスタ環境値とを含んだレコードを生成し、生成したレコードをマスタ環境値テーブル１０２に登録する。
【００５６】
図９に、マスタ環境値テーブル１０２の具体例を示す。
マスタ環境値テーブル１０２は、１つ以上のレコードを有する。それぞれのレコードは、「通信回数」欄と「温度」欄と「備考」欄とを有し、「通信回数」欄と「温度」欄と「備考」欄とを互いに対応付けている。
「通信回数」欄は、制御フレームが通信された回数（通信回数）を示す。通信回数は制御フレーム統計量の一例である。
「温度」欄は、マスタクロックの絶対温度を示す。マスタクロックの絶対温度はマスタ環境値の一例である。
「備考」欄は、マスタクロックの絶対温度が飽和したか否かを示す。制御フレームが１００回通信されたときのマスタクロックの絶対温度は５０度である。制御フレームが１０５回通信されたときのマスタクロックの絶対温度は５０度である。このとき、マスタクロックの絶対温度が変わっていないため、マスタクロックの絶対温度は飽和している。
【００５７】
次に、運用フェーズについて説明する。
マスタノード２００において、フレーム通信部２１１は、運用アルゴリズムに従って、制御フレーム生成してスレーブノード３００へ送信する。また、デバイス制御部２１２は、運用アルゴリズムに従って、入出力デバイス２０６を制御する。運用アルゴリズムは、運用プログラムに記述されたアルゴリズムである。
スレーブノード３００において、フレーム通信部３１１は、スレーブノード３００から制御フレームを受信し、受信した制御フレームから制御内容を取得する。そして、デバイス制御部３１２は、取得された制御内容に従って、入出力デバイス３０６を制御する。
スレーブノード３００の同期フレーム通信部３２９は、定期的にマスタノード２００の同期フレーム通信部２２４と同期フレームを通信し、通信した同期フレームに基づいてスレーブクロックのクロック値をマスタクロックのクロック値に合わせる。同期フレームは、時刻同期のために通信されるフレームである。同期フレームに基づく時刻同期は従来技術である。
スレーブノード３００は、同期フレームの通信量を削減するため、つまり、同期フレームの通信間隔を延ばすため、制御フレームに基づく時刻同期を行う。
【００５８】
図１０に基づいて、スレーブノード３００による制御フレームに基づく時刻同期を説明する。
制御フレームに基づく時刻同期は、定期的に行われる。例えば、時刻同期部３２０は、規定数の制御フレームが受信される毎に、または、規定時間が経過する毎に、制御フレームに基づく時刻同期を行う。
【００５９】
ステップＳ１２１において、統計量算出部３２３は、制御フレーム統計量を算出する。
算出方法は、ステップＳ１１３における方法と同じである。例えば、統計量算出部３２３は、運用フェーズにおける制御フレームの通信回数を算出する。
【００６０】
ステップＳ１２２において、マスタ環境値推定部３２５は、制御フレーム統計量に基づいて、マスタ環境値を推定する。
具体的には、マスタ環境値推定部３２５は、マスタ環境値テーブル１０２を用いて、マスタ環境値を推定する。
【００６１】
図９に基づいて、推定されるマスタ環境値の具体例を説明する。
制御フレームの通信回数（制御フレーム統計量）が「１５回」であると仮定する。
この場合、マスタ環境値推定部３２５は、通信回数「１５回」に対応付けられた温度「３３度」をマスタ環境値テーブル１０２から取得する。取得された温度「３３度」が推定されたマスタ環境値である。
【００６２】
図１０に戻り、ステップＳ１２３から説明を続ける。
ステップＳ１２３において、周波数偏差推定部３２７は、推定されたマスタ環境値に基づいて、マスタクロックの周波数偏差を推定する。マスタクロックの周波数偏差を「マスタ周波数偏差」と称する。
具体的には、周波数偏差推定部３２７は、マスタ周波数偏差テーブル１０１を用いて、マスタ周波数偏差を推定する。
【００６３】
図７に基づいて、推定されるマスタ周波数偏差の具体例を説明する。
前回のマスタ環境値が「３０度」であり、今回のマスタ環境値が「３３度」であると仮定する。マスタ環境値の変化量は「３度」である。
この場合、周波数偏差推定部３２７は、マスタ環境値の変化量「３度」に対応する周波数偏差「−１０」をマスタ周波数偏差テーブル１０１から取得する。取得された周波数偏差「−１０」が推定されたマスタ周波数偏差である。
【００６４】
図１０に戻り、ステップＳ１２４から説明を続ける。
ステップＳ１２４において、スレーブ環境値計測部３２６は、環境センサ３０７を用いて、スレーブ環境値を計測する。
【００６５】
ステップＳ１２５において、周波数偏差推定部３２７は、計測されたスレーブ環境値に基づいて、スレーブクロックの周波数偏差を推定する。スレーブクロックの周波数偏差を「スレーブ周波数偏差」と称する。
【００６６】
周波数偏差推定部３２７は、スレーブ周波数偏差を以下のように推定する。
マスタ周波数偏差テーブル１０１に相当するスレーブ周波数偏差テーブルが、記憶部３９０に予め記憶されている。
スレーブ周波数偏差テーブルは、スレーブ環境値とスレーブ周波数偏差との関係を示すデータである。スレーブ周波数偏差テーブルには、１つ以上のスレーブ環境値と１つ以上のスレーブ周波数偏差とが互いに対応付けられている。
周波数偏差推定部３２７は、スレーブ周波数偏差テーブルを用いて、スレーブ周波数偏差を推定する。推定方法は、ステップＳ１２３における方法と同様である。
【００６７】
ステップＳ１３０において、クロック補正部３２８は、推定されたマスタ周波数偏差と推定されたスレーブ周波数偏差との差分に基づいて、スレーブクロックのクロック値を修正する。
【００６８】
図１１に基づいて、クロック補正処理（Ｓ１３０）の手順を説明する。
ステップＳ１３１において、クロック補正部３２８は、マスタ周波数偏差とスレーブ周波数偏差との差分を算出する。算出される差分を「周波数差分」と称する。
周波数差分は、マスタクロックの周波数とスレーブクロックの周波数との差分に相当する。
【００６９】
ステップＳ１３２において、クロック補正部３２８は、周波数差分に基づいて、クロック値差分を算出する。
クロック値差分は、マスタクロックのクロック値とスレーブクロックのクロック値との差分である。
【００７０】
クロック補正部３２８は、クロック値差分を以下のように算出する。
クロック補正処理（Ｓ１３０）の実行毎に、クロック補正部３２８は、前回の実行時刻からの経過時間を計測する。
そして、クロック補正部３２８は、周波数差分に経過時間を乗算する。得られる値がクロック値差分である。
【００７１】
ステップＳ１３３において、クロック補正部３２８は、クロック値差分に基づいて、スレーブクロックのクロック値を修正する。
つまり、クロック補正部３２８は、スレーブクロックのクロック値を、クロック値差分だけ変化させた値に補正する。
例えば、クロック補正部３２８は、次回のクロック補正処理（Ｓ１３０）までの間に、スレーブクロックのクロック値を複数回に分けて修正する。但し、クロック補正部３２８は、スレーブクロックのクロック値を一度に修正してもよい。
【００７２】
＊＊＊実施の形態１の効果＊＊＊
図１２から図１４に基づいて、実施の形態１によって解決される課題について説明する。
マスタクロック値は、マスタクロックのクロック値である。
スレーブクロック値は、スレーブクロックのクロック値である。
【００７３】
図１２に示すように、マスタクロックの周波数とスレーブクロックの周波数との両方が一定であるならば、同期周期Ｔにおけるクロック値差分Ｄは一定である。この場合、同期周期Ｔが経過する毎に、スレーブクロック値をクロック値差分Ｄだけ変化させれば、マスタクロックとスレーブクロックとを同期させることができる。
しかし、一般的に、水晶発振子を有するクロックデバイスがスレーブクロックとして使用される。そのため、スレーブクロックの周波数は、外部環境（主に温度）の変化に応じて変化する。
【００７４】
図１３に示すように、マスタクロックの周波数が一定であってもスレーブクロックの周波数が一定でなければ、同期周期Ｔにおけるクロック値差分（Ｄ１、Ｄ２）は変化する。一方、水晶発振子の特性として周波数温度特性が一般的に知られている。そのため、スレーブノードは、スレーブクロックの水晶発振子の温度を計測すれば、計測した温度とスレーブクロックの水晶発振子の周波数温度特性とに基づいて、スレーブクロックの周波数偏差を推定することが可能である。
そこで、スレーブノードは、同期周期Ｔが経過する毎に、スレーブクロックの周波数偏差を推定し、推定した周波数偏差に基づいてクロック値差分（Ｄ１、Ｄ２）を推定し、推定したクロック値差分（Ｄ１、Ｄ２）だけスレーブクロック値を変化させる。これにより、スレーブクロックをマスタクロックに同期させることが可能となる。
しかし、人工衛星では原子時計がクロックデバイスとして使用されるが、一般的には、水晶発振子を有するクロックデバイスがマスタクロックとして使用される。そのため、マスタクロックの周波数は、外部環境（主に温度）の変化に応じて変化する。
【００７５】
図１４に示すように、マスタクロックの周波数はマスタノードの外部環境に応じて変化し、スレーブクロックの周波数はスレーブノードの外部環境（温度）に応じて変化する。そのため、同期周期Ｔにおけるクロック値差分（Ｄ１、Ｄ２）は変化する。
スレーブノードは、スレーブクロックの水晶発振子の温度に基づいて、スレーブクロックの周波数を推定することが可能である。
しかし、スレーブノードは、マスタクロックの水晶発振子の温度を知らないため、マスタクロックの周波数を推定することができない。運用フェーズにおいて、制御フレームの通信に影響を与えないようにするため、マスタクロックの水晶発振子の温度を通知するための環境値フレームは通信しない方がよい。
【００７６】
実施の形態１により、以下のような効果を奏することができる。
チューニングフェーズにおいて、スレーブノード３００は、１つ以上の制御フレームと１つ以上の環境値フレームとをマスタノード２００から受信する。そして、スレーブノード３００は、制御フレーム統計量とマスタ環境値との関係を示すマスタ環境値テーブル１０２を生成する。
運用フェーズにおいて、スレーブノード３００は、マスタノード２００から受信した１つ以上の制御フレームに基づいて、制御フレーム統計量を算出する。そして、スレーブノード３００は、算出した制御フレーム統計量とマスタ環境値テーブル１０２とに基づいて、マスタ環境値を推定する。
つまり、スレーブノード３００は、制御フレームの通信によって、マスタ環境値を推定することができる。さらに、スレーブノード３００は、推定されたマスタ環境値に基づいて、マスタクロックの周波数偏差を推定することができる。そして、スレーブノード３００は、スレーブクロックの周波数偏差とマスタクロックの周波数偏差との差分に基づいてスレーブクロックのクロック値を修正することによって、スレーブクロックをマスタクロックと同期させることができる。
その結果、同期フレームの通信量を削減すること、つまり、同期フレームの通信間隔を延ばすことが可能となる。
【００７７】
＊＊＊実施の形態の補足＊＊＊
図１５に基づいて、マスタノード２００のハードウェア構成を説明する。
マスタノード２００は処理回路２０９を備える。
処理回路２０９は、運用部２１０と時刻同期部２２０とを実現するハードウェアである。
処理回路２０９は、専用のハードウェアであってもよいし、メモリ２０２に格納されるプログラムを実行するプロセッサ２０１であってもよい。
【００７８】
処理回路２０９が専用のハードウェアである場合、処理回路２０９は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ＡＳＩＣ、ＦＰＧＡまたはこれらの組み合わせである。
ＡＳＩＣは、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略称である。
ＦＰＧＡは、Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略称である。
【００７９】
マスタノード２００は、処理回路２０９を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路２０９の役割を分担する。
【００８０】
マスタノード２００において、一部の機能が専用のハードウェアで実現されて、残りの機能がソフトウェアまたはファームウェアで実現されてもよい。
【００８１】
このように、処理回路２０９はハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせで実現することができる。
【００８２】
図１６に基づいて、スレーブノード３００のハードウェア構成を説明する。
スレーブノード３００は処理回路３０９を備える。
処理回路３０９は、運用部３１０と時刻同期部３２０とを実現するハードウェアである。
処理回路３０９は、専用のハードウェアであってもよいし、メモリ３０２に格納されるプログラムを実行するプロセッサ３０１であってもよい。
【００８３】
処理回路３０９が専用のハードウェアである場合、処理回路３０９は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ＡＳＩＣ、ＦＰＧＡまたはこれらの組み合わせである。
【００８４】
スレーブノード３００は、処理回路３０９を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路３０９の役割を分担する。
【００８５】
スレーブノード３００において、一部の機能が専用のハードウェアで実現されて、残りの機能がソフトウェアまたはファームウェアで実現されてもよい。
【００８６】
このように、処理回路３０９はハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせで実現することができる。
【００８７】
実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。
マスタノード２００とスレーブノード３００とのそれぞれの要素である「部」は、「処理」または「工程」と読み替えてもよい。
【符号の説明】
【００８８】
１００  組み込みシステム、１０１  マスタ周波数偏差テーブル、１０２  マスタ環境値テーブル、１０９  制御ネットワーク、２００  マスタノード、２０１  プロセッサ、２０２  メモリ、２０３  補助記憶装置、２０４  クロックデバイス、２０５  通信デバイス、２０６  入出力デバイス、２０７  環境センサ、２０９  処理回路、２１０  運用部、２１１  フレーム通信部、２１２  デバイス制御部、２２０  時刻同期部、２２１  テーブル提供部、２２２  擬似通信部、２２３  マスタ環境値計測部、２２４  同期フレーム通信部、２９０  記憶部、３００  スレーブノード、３０１  プロセッサ、３０２  メモリ、３０３  補助記憶装置、３０４  クロックデバイス、３０５  通信デバイス、３０６  入出力デバイス、３０７  環境センサ、３０９  処理回路、３１０  運用部、３１１  フレーム通信部、３１２  デバイス制御部、３２０  時刻同期部、３２１  テーブル取得部、３２２  擬似通信部、３２３  統計量算出部、３２４  テーブル生成部、３２５  マスタ環境値推定部、３２６  スレーブ環境値計測部、３２７  周波数偏差推定部、３２８  クロック補正部、３２９  同期フレーム通信部、３９０  記憶部。
【図１】
0006918268.tif 000002
【図２】
0006918268.tif 000003
【図３】
0006918268.tif 000004
【図４】
0006918268.tif 000005
【図５】
0006918268.tif 000006
【図６】
0006918268.tif 000007
【図７】
0006918268.tif 000008
【図８】
0006918268.tif 000009
【図９】
0006918268.tif 000010
【図１０】
0006918268.tif 000011
【図１１】
0006918268.tif 000012
【図１２】
0006918268.tif 000013
【図１３】
0006918268.tif 000014
【図１４】
0006918268.tif 000015
【図１５】
0006918268.tif 000016
【図１６】
0006918268.tif 000017