(57)【特許請求の範囲】
【請求項１】
第１通信装置と第２通信装置とを備える通信システムであって、
前記第１通信装置は、
第１周期毎に第１アプリケーションデータを生成する第１アプリ部と、
前記第１周期毎に当該第１周期内のランダムなタイミングで前記第１アプリケーションデータをネットワークに送信する第１送信部と、
第２周期毎に前記ネットワークを介して前記第２通信装置と通信する第１通信部と、
前記第２周期毎に前記第１通信装置及び前記第２通信装置間の通信の往路通信時間及び復路通信時間を算出し、算出した前記複数の往路通信時間及び前記複数の復路通信時間に基づいて、前記第１通信装置及び前記第２通信装置間の通信遅延時間を推定する推定部と、
を備え、
前記第２通信装置は、
前記第２周期毎に前記ネットワークを介して前記第１通信装置と通信する第２通信部と、
第３周期毎に第２アプリケーションデータを生成する第２アプリ部と、
前記第３周期毎に当該第３周期内のランダムなタイミングで前記第２アプリケーションデータを前記ネットワークに送信する第２送信部と、
を備える通信システム。
【請求項２】
第３通信装置を更に備え、
前記第３通信装置は、
第４周期毎に第３アプリケーションデータを生成する第３アプリ部と、
前記第４周期毎に当該第４周期内のランダムなタイミングで前記第３アプリケーションデータを前記ネットワークに送信する第３送信部と、
を備える請求項１に記載の通信システム。
【請求項３】
第３通信装置と転送装置とを更に備え、
前記第３通信装置は、
第４周期毎に第３アプリケーションデータを生成する第３アプリ部と、
前記第３アプリケーションデータを前記転送装置に送信する第３送信部と、
を備え、
前記転送装置は、
前記第３通信装置から前記第３アプリケーションデータを受信する受信部と、
前記第４周期毎に当該第４周期内かつ前記第３アプリケーションデータ受信後のランダムなタイミングで前記第３アプリケーションデータを前記ネットワークに送信する第４送信部と、
を備える請求項１に記載の通信システム。
【請求項４】
前記第３周期は、前記第１周期と異なる、
請求項１に記載の通信システム。
【請求項５】
第１通信装置と第２通信装置とを備える通信システムで実行される推定方法であって、
前記第１通信装置が、第１周期毎にアプリケーションデータを生成する第１生成ステップと、
前記第１通信装置が、前記第１周期毎に当該第１周期内のランダムなタイミングで前記アプリケーションデータをネットワークに送信する第１送信ステップと、
前記第１通信装置が、第２周期毎に前記ネットワークを介して他の通信装置と通信する第１通信ステップと、
前記第１通信装置が、前記第２周期毎に前記通信装置及び前記他の通信装置間の通信の往路通信時間及び復路通信時間を算出し、算出した前記複数の往路通信時間及び前記複数の復路通信時間に基づいて、前記通信装置及び前記他の通信装置間の通信遅延時間を推定する推定ステップと、
前記第２通信装置が、前記第２周期毎に前記ネットワークを介して前記第１通信装置と通信する第２通信ステップと、
前記第２通信装置が、第３周期毎に第２アプリケーションデータを生成する第２生成ステップと、
前記第２通信装置が、前記第３周期毎に当該第３周期内のランダムなタイミングで前記第２アプリケーションデータを前記ネットワークに送信する第２送信ステップと、
を含む推定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、通信装置、通信システム、推定方法及びプログラムに関する。
【背景技術】
【０００２】
従来から、ネットワーク内で第１種類のデータの通信と当該第１種類以外のデータの通信とが競合してしまうことを回避するため、当該第１種類のデータの通信に先立ち当該第１種類以外のデータの通信を禁止させる技術が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０９−９３２７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述したような従来技術では、第１種類以外のデータの通信が禁止されるため、通信が禁止されるデータが周期的な通信が必要となるデータである場合、周期的な通信が保障されなくなってしまう。
【０００５】
本発明が解決しようとする課題は、ネットワーク内での通信の競合の影響を回避しつつ、データの周期的な通信を保障することができる通信装置、通信システム、推定方法及びプログラムを提供することである。
【課題を解決するための手段】
【０００６】
実施形態の通信装置は、アプリ部と、送信部と、通信部と、推定部と、を備える。アプリ部は、第１周期毎にアプリケーションデータを生成する。送信部は、前記第１周期毎に当該第１周期内のランダムなタイミングで前記アプリケーションデータをネットワークに送信する。通信部は、第２周期毎に前記ネットワークを介して他の通信装置と通信する。推定部は、前記第２周期毎に前記通信装置及び前記他の通信装置間の通信の往路通信時間及び復路通信時間を算出し、算出した前記複数の往路通信時間及び前記複数の復路通信時間に基づいて、前記通信装置及び前記他の通信装置間の通信遅延時間を推定する。
【図面の簡単な説明】
【０００７】
【図１】第１実施形態の通信システムの構成例を示す図。
【図２】第１実施形態のスレーブ装置の構成例を示す図。
【図３】第１実施形態のマスター装置の構成例を示す図。
【図４】第１実施形態のアプリデータ生成処理例を示すフローチャート。
【図５】第１実施形態のアプリデータ送信処理例を示すフローチャート。
【図６】第１実施形態の同期処理例を示すシーケンス図。
【図７】第２実施形態の通信システムの構成例を示す図。
【図８】第２実施形態の通信装置の構成例を示す図。
【図９】第３実施形態の通信システムの構成例を示す図。
【図１０】第３実施形態の通信装置の構成例を示す図。
【図１１】第３実施形態の転送装置の構成例を示す図。
【図１２】第３実施形態の通信装置の処理例を示すフローチャート。
【図１３】第３実施形態の転送装置の処理例を示すフローチャート。
【図１４】各実施形態の各装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【０００８】
以下、添付図面を参照しながら、実施形態を詳細に説明する。
【０００９】
（第１実施形態）
図１は、第１実施形態の通信システム１０１の構成の一例を示す図である。図１に示すように、通信システム１０１は、スレーブ装置１１０（通信装置及び第１通信装置の一例）と、マスター装置１２０（他の通信装置及び第２通信装置の一例）と、を備える。
【００１０】
スレーブ装置１１０とマスター装置１２０とは、ネットワーク１０２を介して接続されている。ネットワーク１０２は、例えば、スイッチ装置などの通信を中継する１以上のネットワーク装置により実現できる。
【００１１】
マスター装置１２０は、時刻同期用の基準時刻を計時するものであり、時刻同期元となるサーバ装置などのコンピュータである。スレーブ装置１１０は、ネットワーク１０２を介してマスター装置１２０との間で時刻同期用の同期データを通信（送受信）することで、マスター装置１２０により計時された基準時刻を取得し、取得した基準時刻を用いて、自身のローカル時刻を同期する。スレーブ装置１２０は、例えば、産業用機器などが挙げられるが、これに限定されるものではない。
【００１２】
なお、通信システム１０１は、スレーブ装置１１０及びマスター装置１２０以外のネットワーク１０２に接続される通信装置を含んでいてもよい。
【００１３】
図２は、第１実施形態のスレーブ装置１１０の構成の一例を示す図である。図２に示すように、スレーブ装置１１０は、クロック部１１１と、アプリ部１１２（第１アプリ部の一例）と、送信部１１３（第１送信部の一例）と、通信部１１４（第１通信部の一例）と、記憶部１１５と、推定部１１６と、同期部１１７と、を備える。
【００１４】
クロック部１１１、アプリ部１１２、送信部１１３、通信部１１４、記憶部１１５、推定部１１６、及び同期部１１７は、例えば、ＣＰＵ（Central  Processing  Unit）などの処理装置にプログラムを実行させること、即ち、ソフトウェアにより実現してもよいし、ＩＣ（Integrated  Circuit）などのハードウェアにより実現してもよいし、ソフトウェア及びハードウェアを併用して実現してもよい。記憶部１１５は、例えば、ＨＤＤ（Hard  Disk  Drive）、ＳＳＤ（Solid  State  Drive）、メモリカード、光ディスク、ＲＡＭ（Random  Access  Memory）、及びＲＯＭ（Read  Only  Memory）などの磁気的、光学的、又は電気的に記憶可能な記憶装置により実現できる。
【００１５】
クロック部１１１は、スレーブ装置１１０内の時刻であるローカル時刻を計時する。ここで、クロック部１１１は、自身が計時するローカル時刻を用いて、第１周期を計時する第１周期タイマー、第１周期内でランダム時間を計時するランダムタイマー、及び第２周期を計時する第２タイマーとしても機能する。
【００１６】
第１周期は、アプリ部１１２が生成するアプリケーションデータ（第１アプリケーションデータの一例、以下、「アプリデータ」と称する）の送信周期であり、第２周期は、スレーブ装置１１０がマスター装置１２０との間で行う時刻同期の同期周期である。第１周期と第２周期とは、異なる周期であっても同一周期であってもよい。
【００１７】
ランダム時間は、第１周期未満の時間であり、例えば、クロック部１１１が、乱数値などで決定する。このため、ランダム時間は、第１周期毎に異なる時間となることが期待される。ランダムタイマーは、第１周期タイマーにより第１周期が計時されると、ランダム時間の計時を開始し、第１周期内でランダム時間を計時する。
【００１８】
アプリ部１１２は、第１周期タイマーにより第１周期が計時される毎に、アプリデータを生成する。
【００１９】
第１実施形態では、アプリ部１１２が電気量を計測するアプリケーションである場合を例に取り説明するが、これに限定されるものではない。この場合、アプリ部１１２は、第１周期毎に、電気量を計測し、計測した電気量に、クロック部１１１により計時されたローカル時刻（第１周期が計時された時点でのローカル時刻であり、アプリデータ生成時のローカル時刻）を示すタイムスタンプｔα（第２タイムスタンプの一例）を付加（打刻）し、アプリデータとする。
【００２０】
送信部１１３は、第１周期毎に当該第１周期内のランダムなタイミングで、アプリ部１１２により生成されたアプリデータをネットワーク１０２に送信する。具体的には、送信部１１３は、ランダムタイマーによりランダム時間が計時されると、アプリ部１１２により生成されたアプリデータのアプリフレームをネットワーク１０２に送信する。
【００２１】
通信部１１４は、第２周期タイマーにより第２周期が計時される毎に、ネットワーク１０２を介してマスター装置１２０と通信する。具体的には、通信部１１４は、第２周期毎に、ネットワーク１０２を介してマスター装置１２０との間で時刻同期用の同期データの同期フレームを通信する。
【００２２】
例えば、通信部１１４は、第２周期毎に、クロック部１１１により計時されたローカル時刻（第２周期が計時された時点でのローカル時刻）を示すタイムスタンプｔ１を含む第１同期フレームを、ネットワーク１０２を介してマスター装置１２０に送信する。
【００２３】
その後、通信部１１４は、ネットワーク１０２を介してマスター装置１２０から第２同期フレームを受信し、第２同期フレームを受信した際にクロック部１１１により計時されたローカル時刻を示すタイムスタンプをタイムスタンプｔ４とする。
【００２４】
第２同期フレームは、マスター装置１２０により第１同期フレームが受信された基準時刻を示すタイムスタンプｔ２及びマスター装置１２０が第２同期フレームを送信した基準時刻を示すタイムスタンプｔ３（第１タイムスタンプの一例）を含む。なお、基準時刻は、マスター装置１２０により計時される時刻である。
【００２５】
推定部１１６は、第２周期毎にスレーブ装置１１０及びマスター装置１２０間の通信の往路通信時間及び復路通信時間を算出し、算出した複数の往路通信時間及び複数の復路通信時間に基づいて、スレーブ装置１１０及びマスター装置１２０間の通信遅延時間を推定する。
【００２６】
ここで、通信遅延時間とは、スレーブ装置１１０がマスター装置１２０により計時された基準時刻で自身のローカル時刻を同期する際に、マスター装置１２０がスレーブ装置１１０へ基準時刻を送信することに伴い、基準時刻が遅延する分の時間である。通信遅延時間は、例えば、マスター装置１２０が第２同期フレームを送信してからスレーブ装置１１０が受信するまでの復路通信時間が該当する。
【００２７】
但し、マスター装置１２０が第２同期フレームを送信する時刻は、マスター装置１２０の基準時刻で計時され、スレーブ装置１１０が第２同期フレームを受信する時刻は、スレーブ装置１１０のローカル時刻で計時され、この時点では、基準時刻とローカル時刻との誤差が分からないため、通信遅延時間を直接計測することはできない。
【００２８】
このため第１実施形態では、スレーブ装置１１０が第１同期フレームを送信してからマスター装置１２０が受信するまでの往路通信時間、及びマスター装置１２０が第２同期フレームを送信してからスレーブ装置１１０が受信するまでの合計である往復通信時間の１／２を通信遅延時間に推定する推定手法を採用する。
【００２９】
このように、往路通信時間と往復通信時間とを合算すれば、基準時刻とローカル時刻との誤差が相殺されるため、基準時刻とローカル時刻との誤差の影響を受けずに通信遅延時間を推定できる。
【００３０】
但し、通信遅延時間をこのように推定する場合、往路通信時間と復路通信時間とが一致しなければ、通信遅延時間を正しく推定することができない。
【００３１】
しかしながら、同期フレームを中継するネットワーク１０２（詳細には、１以上のネットワーク装置）では、同期フレームがアプリフレームなどの同期フレーム以外の通信フレームと競合すると、同期フレームをキューイングする時間に揺らぎが生じるため、同期フレームの往路通信時間と復路通信時間とが一致しない事態が生じ得る。
【００３２】
つまり、往路通信時間及び復路通信時間とも時間が短いほどキューイング時間に揺らぎが生じていないことになり、往路通信時間と復路通信時間との差も小さくなるため、通信遅延時間を正しく推定するためには、いずれも時間が短い往路通信時間及び復路通信時間を用いることが好ましい。
【００３３】
このため第１実施形態では、推定部１１６は、複数の往路通信時間及び複数の復路通信時間から最小の往路通信時間及び最小の復路通信時間を抽出し、抽出した最小の往路通信時間及び最小の復路通信時間の合計である往復通信時間の１／２を通信遅延時間に推定する。
【００３４】
以下、通信遅延時間の推定について詳細に説明する。
【００３５】
まず、推定部１１６は、通信部１１４からタイムスタンプｔ１〜タイムスタンプｔ４の組を取得する。また、記憶部１１５には、推定部１１６が過去に通信部１１４から取得したタイムスタンプｔ１〜タイムスタンプｔ４の組が複数記憶されており、推定部１１６は、記憶部１１５から複数のタイムスタンプｔ１〜タイムスタンプｔ４の組を取得する。
【００３６】
なお、記憶部１１５から取得される複数のタイムスタンプｔ１〜タイムスタンプｔ４の組は、過去Ｍ（Ｍは自然数）回分のタイムスタンプｔ１〜タイムスタンプｔ４の組であってもよいし、記憶部１１５に記憶されている全てのタイムスタンプｔ１〜タイムスタンプｔ４の組であってもよい。
【００３７】
ここで、通信部１１４及び記憶部１１５から取得されたタイムスタンプｔ１〜タイムスタンプｔ４の組の数をＮ（Ｎは２以上の整数）とすると、推定部１１６は、数式（１）を用いて、通信遅延時間を推定する。
【００３８】
通信遅延時間＝｛ｍｉｎ（ｔ４ｉ‐ｔ３ｉ）＋ｍｉｎ（ｔ２ｊ‐ｔ１ｊ）｝／２      …（１）
【００３９】
ｉ及びｊは、変数であり、１〜Ｎの間の自然数を取り得る。ｍｉｎ（ｔ４ｉ‐ｔ３ｉ）は、最小の復路通信時間を返す関数であり、ｍｉｎ（ｔ２ｊ‐ｔ１ｊ）は、最小の往路通信時間を返す関数である。
【００４０】
なお、推定部１１６は、通信遅延時間を推定すると、通信部１１４から取得したタイムスタンプｔ１〜タイムスタンプｔ４の組を記憶部１１５に記憶する。
【００４１】
同期部１１７は、推定部１１６により推定された通信遅延時間と、最小の復路通信時間となる第２同期フレームに含まれるタイムスタンプｔ３と、に基づいて、時刻同期を行う。
【００４２】
具体的には、同期部１１７は、推定部１１６により推定された通信遅延時間、最小の往路通信時間となる第２同期フレームに含まれるタイムスタンプｔ３、及び当該第２同期フレーム受信時のタイムスタンプｔ４を用いて、マスター装置１２０により計時される基準時刻とクロック部１１１により計時されるローカル時刻とのオフセット（時刻差）を算出し、算出したオフセットを用いて、クロック部１１１に、計時するローカル時刻を補正させる。
【００４３】
例えば、同期部１１７は、数式（２）を用いて、オフセットを算出し、算出したオフセットをクロック部１１１に設定させることで、計時するローカル時刻を補正させる。これにより、クロック部１１１が計時するローカル時刻がオフセット分ずれ、マスター装置１２０により計時される基準時刻と同期される。
【００４４】
オフセット＝ｔ４ａｒｇｍｉｎ（ｔ４ｉ‐ｔ３ｉ）−｛ｔ３ａｒｇｍｉｎ（ｔ４ｉ‐ｔ３ｉ）＋通信遅延時間｝      …（２）
【００４５】
ａｒｇｍｉｎ（ｔ４ｉ‐ｔ３ｉ）は、ｔ４ｉ‐ｔ３ｉが最小となる場合の変数ｉを返す関数である。つまり、数式（２）では、推定部１１６により推定された通信遅延時間、並びに最小の復路通信時間となる場合のタイムスタンプｔ３及びタイムスタンプｔ４を用いて、マスター装置１２０により計時される基準時刻とクロック部１１１により計時されるローカル時刻とのオフセットを算出する。
【００４６】
図３は、第１実施形態のマスター装置１２０の構成の一例を示す図である。図３に示すように、マスター装置１２０は、クロック部１２１と、アプリ部１２２（第２アプリ部の一例）と、送信部１２３（第２送信部の一例）と、通信部１２４（第２通信部の一例）と、を備える。
【００４７】
クロック部１２１、アプリ部１２２、送信部１２３、及び通信部１２４は、例えば、ＣＰＵなどの処理装置にプログラムを実行させること、即ち、ソフトウェアにより実現してもよいし、ＩＣなどのハードウェアにより実現してもよいし、ソフトウェア及びハードウェアを併用して実現してもよい。
【００４８】
クロック部１２１は、マスター装置１２０内の時刻である基準時刻を計時する。ここで、クロック部１２１は、自身が計時する基準時刻を用いて、第３周期を計時する第３周期タイマー、及び第３周期内でランダム時間を計時するランダムタイマーとしても機能する。
【００４９】
第３周期は、アプリ部１２２が生成するアプリデータ（第２アプリケーションデータの一例）の送信周期である。第１実施形態では、第３周期は、第１周期と同一周期であるものとするが、異なる周期であってもよい。
【００５０】
ランダム時間は、第３周期未満の時間であり、例えば、クロック部１２１が、乱数値などで決定する。このため、ランダム時間は、第３周期毎に異なる時間となることが期待される。ランダムタイマーは、第３周期タイマーにより第３周期が計時されると、ランダム時間の計時を開始し、第３周期内でランダム時間を計時する。
【００５１】
アプリ部１２２は、第３周期タイマーにより第３周期が計時される毎に、アプリデータを生成する。
【００５２】
第１実施形態では、アプリ部１２２が電気量を計測するアプリケーションである場合を例に取り説明するが、これに限定されるものではない。この場合、アプリ部１２２は、第３周期毎に、電気量を計測し、計測した電気量に、クロック部１２１により計時され基準時刻（第３周期が計時された時点での基準時刻であり、アプリデータ生成時の基準時刻）を示すタイムスタンプｔβを付加（打刻）し、アプリデータとする。
【００５３】
送信部１２３は、第３周期毎に当該第３周期内のランダムなタイミングで、アプリ部１２２により生成されたアプリデータをネットワーク１０２に送信する。具体的には、送信部１２３は、ランダムタイマーによりランダム時間が計時されると、アプリ部１２２により生成されたアプリデータのアプリフレームをネットワーク１０２に送信する。
【００５４】
通信部１２４は、第２周期毎に、ネットワーク１０２を介してスレーブ装置１１０と通信する。具体的には、通信部１２４は、第２周期毎に、ネットワーク１０２を介してスレーブ装置１１０との間で時刻同期用の同期データの同期フレームを通信する。
【００５５】
例えば、通信部１２４は、第２周期毎に、スレーブ装置１１０から、ネットワーク１０２を介して、タイムスタンプｔ１を含む第１同期フレームを受信し、第１同期フレームを受信した際にクロック部１２１により計時された基準時刻を示すタイムスタンプをタイムスタンプｔ２とする。
【００５６】
そして通信部１２４は、第２同期フレームを送信する際にクロック部１２１により計時された基準時刻を示すタイムスタンプをタイムスタンプｔ３とし、タイムスタンプｔ２及びタイムスタンプｔ３を含む第２同期フレームを、ネットワーク１０２を介してスレーブ装置１１０に送信する。
【００５７】
図４は、第１実施形態のスレーブ装置１１０で行われるアプリデータ生成処理の手順の流れの一例を示すフローチャートである。
【００５８】
アプリ部１１２は、第１周期タイマーにより第１周期が計時（計測）されるまで待機する（ステップＳ１０１でＮｏ）。
【００５９】
そしてアプリ部１１２は、第１周期タイマーにより第１周期が計時されると（ステップＳ１０１でＹｅｓ）、電気量を計測し、計測した電気量に、クロック部１１１により計時されたローカル時刻を示すタイムスタンプｔαを付加（打刻）し、アプリデータを生成する（ステップＳ１０３）。そして、ステップＳ１０１へ戻る。
【００６０】
なお、マスター装置１２０で行われるアプリデータ生成処理も図４と同様の手順で行われる。この場合、アプリ部１１２をアプリ部１２２、第１周期を第３周期、クロック部１１１をクロック部１２１、ローカル時刻を基準時刻、タイムスタンプｔαをタイムスタンプｔβと読み替えればよい。
【００６１】
図５は、第１実施形態のスレーブ装置１１０で行われるアプリデータ送信処理の手順の流れの一例を示すフローチャートである。
【００６２】
ランダムタイマーは、第１周期タイマーにより第１周期が計時（計測）されるまで待機し（ステップＳ２０１でＮｏ）、第１周期タイマーにより第１周期が計時されると（ステップＳ２０１でＹｅｓ）、ランダム時間の計時を開始する（ステップＳ２０３）。
【００６３】
そして送信部１１３は、ランダムタイマーによりランダム時間が計時されるまで待機し（ステップＳ２０５でＮｏ）、ランダムタイマーによりランダム時間が計時されると（ステップＳ２０５でＹｅｓ）、アプリ部１１２により生成されたアプリデータのアプリフレームをネットワーク１０２に送信する（ステップＳ２０７）。
【００６４】
なお、マスター装置１２０で行われるアプリデータ送信処理も図５と同様の手順で行われる。この場合、第１周期を第３周期、送信部１１３を送信部１２３、アプリ部１１２をアプリ部１２２と読み替えればよい。
【００６５】
図６は、第１実施形態の通信システム１で行われる同期処理の手順の流れの一例を示すシーケンス図である。
【００６６】
まず、スレーブ装置１１０の通信部１１４は、第２周期タイマーにより第２周期が計時されると、クロック部１１１により計時されたローカル時刻を示すタイムスタンプｔ１を含む第１同期フレームを、ネットワーク１０２を介してマスター装置１２０に送信する（ステップＳ３０１）。
【００６７】
続いて、マスター装置１２０の通信部１２４は、スレーブ装置１１０からネットワーク１０２を介して第１同期フレームを受信し、第１同期フレームを受信した際にクロック部１２１により計時された基準時刻を示すタイムスタンプｔ２を第２同期フレームに打刻する（ステップＳ３０３）。
【００６８】
続いて、通信部１２４は、第２同期フレームを送信する際にクロック部１２１により計時された基準時刻を示すタイムスタンプｔ３を第２同期フレームに打刻し（ステップＳ３０５）、タイムスタンプｔ２及びタイムスタンプｔ３を含む第２同期フレームを、ネットワーク１０２を介してスレーブ装置１１０に送信する（ステップＳ３０７）。
【００６９】
続いて、通信部１１４は、マスター装置１２０からネットワーク１０２を介して第２同期フレームを受信し、スレーブ装置１１０の推定部１１６は、通信部１１４から、最新の往復通信時間として、最新のタイムスタンプｔ１〜タイムスタンプｔ４の組を取得する（ステップＳ３０９）。
【００７０】
続いて、推定部１１６は、過去の往復通信時間として、記憶部１１５から過去のタイムスタンプｔ１〜タイムスタンプｔ４の組を１以上取得する（ステップＳ３１１）。
【００７１】
続いて、推定部１１６は、数式（１）を用いて、最小となる通信遅延時間を算出（推定）する（ステップＳ３１３）。
【００７２】
続いて、同期部１１７は、数式（２）を用いて、マスター装置１２０により計時される基準時刻とクロック部１１１により計時されるローカル時刻とのオフセットを算出し（ステップＳ３１５）、算出したオフセットを用いて、クロック部１１１に、計時するローカル時刻を補正させる（ステップＳ３１７）。
【００７３】
以上のように第１実施形態によれば、アプリフレームの送信タイミングが第１周期及び第３周期内でランダム化されるため、ネットワーク１０２上でのトラヒック（詳細には、同期フレームを除くアプリフレームなどのトラヒック）のバースト性及び定期性が軽減されるタイミングが得られることが期待できる。
【００７４】
そして、このようなタイミングでスレーブ装置１１０とマスター装置１２０とが同期フレームを通信して時刻同期を行えば、ネットワーク１０２上でアプリフレームと同期フレームとの定期的な競合が発生しにくく、同期フレーム通信時のキューイング時間に定期的な揺らぎが生じにくいため、複数回の同期フレームの通信で、時間が短い往路通信時間及び復路通信時間が得られることが期待できる。
【００７５】
更に第１実施形態によれば、最新の往路通信時間及び復路通信時間だけでなく過去の往路通信時間及び復路通信時間も用いて通信遅延時間を推定するため、通信遅延時間を正しく推定するために最適な、時間が短い往路通信時間及び復路通信時間が一度でも得られれば、以後、この時間が短い往路通信時間及び復路通信時間を用いて通信遅延時間が推定される。
【００７６】
従って第１実施形態によれば、時間が経過するほど通信遅延時間の推定精度が高くなることが期待でき、このような推定精度の高い通信遅延時間を用いて時刻同期を行うため、時刻同期精度の向上も期待できる。
【００７７】
つまり、第１実施形態によれば、ネットワーク１０２内での通信の競合の影響（バースト性及び定期性の影響）を回避して時刻同期を行うことができるため、時刻同期精度の向上が期待できるとともに、アプリデータの周期的な通信も保障することができる。
【００７８】
（第２実施形態）
第２実施形態では、通信システムがスレーブ装置及びマスター装置以外の通信装置を含み、当該通信装置もアプリデータを周期内でランダムなタイミングで送信する例について説明する。以下では、第１実施形態との相違点の説明を主に行い、第１実施形態と同様の機能を有する構成要素については、第１実施形態と同様の名称・符号を付し、その説明を省略する。
【００７９】
図７は、第２実施形態の通信システム２０１の構成の一例を示す図であり、通信装置２３０（第３通信装置の一例）がネットワーク１０２に接続されている点で第１実施形態と相違する。
【００８０】
図８は、第２実施形態の通信装置２３０の構成の一例を示す図である。図８に示すように、通信装置２３０は、クロック部２３１と、アプリ部２３２（第３アプリ部の一例）と、送信部２３３（第３送信部の一例）と、を備える。
【００８１】
クロック部２３１、アプリ部２３２、及び送信部２３３は、例えば、ＣＰＵなどの処理装置にプログラムを実行させること、即ち、ソフトウェアにより実現してもよいし、ＩＣなどのハードウェアにより実現してもよいし、ソフトウェア及びハードウェアを併用して実現してもよい。
【００８２】
クロック部２３１は、通信装置２３０内の時刻であるローカル時刻を計時する。ここで、クロック部２３１は、自身が計時するローカル時刻を用いて、第４周期を計時する第４周期タイマー、及び第４周期内でランダム時間を計時するランダムタイマーとしても機能する。
【００８３】
第４周期は、アプリ部２３２が生成するアプリデータ（第３アプリケーションデータの一例）の送信周期である。第２実施形態では、第４周期は、第１周期及び第３周期と同一周期であるものとするが、異なる周期であってもよい。
【００８４】
ランダム時間は、第４周期未満の時間であり、例えば、クロック部２３１が、乱数値などで決定する。このため、ランダム時間は、第４周期毎に異なる時間となることが期待される。ランダムタイマーは、第４周期タイマーにより第４周期が計時されると、ランダム時間の計時を開始し、第４周期内でランダム時間を計時する。
【００８５】
アプリ部２３２は、第４周期タイマーにより第４周期が計時される毎に、アプリデータを生成する。
【００８６】
第２実施形態では、アプリ部２３２が電気量を計測するアプリケーションである場合を例に取り説明するが、これに限定されるものではない。この場合、アプリ部２３２は、第４周期毎に、電気量を計測し、計測した電気量に、クロック部２３１により計時されローカル時刻（第４周期が計時された時点でのローカル時刻であり、アプリデータ生成時のローカル時刻）を示すタイムスタンプｔγを付加（打刻）し、アプリデータとする。
【００８７】
送信部２３３は、第４周期毎に当該第４周期内のランダムなタイミングで、アプリ部２３２により生成されたアプリデータをネットワーク１０２に送信する。具体的には、送信部２３３は、ランダムタイマーによりランダム時間が計時されると、アプリ部２３２により生成されたアプリデータのアプリフレームをネットワーク１０２に送信する。
【００８８】
なお、通信装置２３０で行われるアプリデータ生成処理も図４と同様の手順で行われる。この場合、アプリ部１１２をアプリ部２３２、第１周期を第４周期、クロック部１１１をクロック部２３１、タイムスタンプｔαをタイムスタンプｔγと読み替えればよい。
【００８９】
同様に、通信装置２３０で行われるアプリデータ送信処理も図５と同様の手順で行われる。この場合、第１周期を第４周期、送信部１１３を送信部２３３、アプリ部１１２をアプリ部２３２と読み替えればよい。
【００９０】
以上のように第２実施形態によれば、アプリフレームの送信タイミングが第１周期、第３周期、及び第４周期内でランダム化されるため、ネットワーク１０２上でのトラヒック（詳細には、同期フレームを除くアプリフレームなどのトラヒック）のバースト性及び定期性が軽減されるタイミングがより得られることが期待できる。
【００９１】
（第３実施形態）
第３実施形態では、通信システムがスレーブ装置及びマスター装置以外の通信装置を含み、当該通信装置が転送装置を利用してアプリデータを周期内でランダムなタイミングで送信する例について説明する。以下では、第２実施形態との相違点の説明を主に行い、第２実施形態と同様の機能を有する構成要素については、第１実施形態と同様の名称・符号を付し、その説明を省略する。
【００９２】
図９は、第３実施形態の通信システム３０１の構成の一例を示す図であり、転送装置３４０がネットワーク１０２に接続され、通信装置３３０が転送装置３４０に接続されている点で第２実施形態と相違する。転送装置３４０としては、例えば、通信装置３３０のネットワークカードやＵＳＢ（Universal  Serial  Bus）型のコンバータなど通信装置３３０に直接接続される装置が挙げられるが、これに限定されず、ネットワーク１０２を介して通信装置３３０に接続されるものであってもよい。
【００９３】
図１０は、第３実施形態の通信装置３３０の構成の一例を示す図である。図１０に示すように、通信装置３３０は、クロック部３３１及び送信部３３３が第２実施形態と相違する。
【００９４】
第３実施形態では、クロック部３３１は、ランダムタイマーとしては機能しない。
【００９５】
送信部３３３は、アプリ部２３２によりアプリデータが生成されると、当該アプリデータを転送装置３４０に送信する。
【００９６】
図１１は、第３実施形態の転送装置３４０の構成の一例を示す図である。図１１に示すように、転送装置３４０は、受信部３４１と、クロック部３４２と、送信部３４３（第４送信部の一例）と、を備える。
【００９７】
受信部３４１、クロック部３４２、及び送信部３４３は、例えば、ＣＰＵなどの処理装置にプログラムを実行させること、即ち、ソフトウェアにより実現してもよいし、ＩＣなどのハードウェアにより実現してもよいし、ソフトウェア及びハードウェアを併用して実現してもよい。
【００９８】
受信部３４１は、通信装置３３０からアプリデータを受信する。
【００９９】
クロック部３４２は、転送装置３４０内の時刻であるローカル時刻を計時する。ここで、クロック部３４２は、自身が計時するローカル時刻を用いて、第４周期を計時する第４周期タイマー、及び第４周期内でランダム時間を計時するランダムタイマーとしても機能する。
【０１００】
なお、第４周期タイマーは、通信装置３３０のクロック部３３１の第４周期タイマーと同期しているものとする。つまり、クロック部３３１の第４周期タイマーとクロック部３４２の第４周期タイマーとは、同一のタイミングで第４周期を計時する。
【０１０１】
ランダム時間は、第４周期未満の時間であり、詳細には、受信部３４１によりアプリデータが受信されてから第４周期となるまでよりも短い時間であり、例えば、クロック部３４２が、乱数値などで決定する。このため、ランダム時間は、第４周期毎に異なる時間となることが期待される。ランダムタイマーは、受信部３４１によりアプリデータが受信されると、ランダム時間の計時を開始し、第４周期内でランダム時間を計時する。
【０１０２】
送信部３４３は、第４周期毎に当該第４周期内かつ受信部３４１によるアプリデータ受信後のランダムなタイミングで、受信部３４１により受信されたアプリデータをネットワーク１０２に送信する。具体的には、送信部３４３は、ランダムタイマーによりランダム時間が計時されると、受信部３４１により受信されたアプリデータのアプリフレームをネットワーク１０２に送信する。
【０１０３】
図１２は、第３実施形態の通信装置３３０で行われる処理の手順の流れの一例を示すフローチャートである。
【０１０４】
アプリ部２３２は、第４周期タイマーにより第４周期が計時（計測）されるまで待機する（ステップＳ６０１でＮｏ）。
【０１０５】
そしてアプリ部２３２は、第４周期タイマーにより第４周期が計時されると（ステップＳ６０１でＹｅｓ）、電気量を計測し、計測した電気量に、クロック部３３１により計時されたローカル時刻を示すタイムスタンプｔγを付加（打刻）し、アプリデータを生成する（ステップＳ６０３）。
【０１０６】
続いて、送信部３３３は、アプリ部２３２により生成されたアプリデータのアプリフレームを転送装置３４０に送信する（ステップＳ６０５）。
【０１０７】
図１３は、第３実施形態の転送装置３４０で行われる処理の手順の流れの一例を示すフローチャートである。
【０１０８】
受信部３４１は、通信装置３３０からアプリフレームを受信するまで待機し（ステップＳ７０１でＮｏ）、アプリフレームを受信すると（ステップＳ７０１でＹｅｓ）、ランダムタイマーがランダム時間の計時を開始する（ステップＳ７０３）。
【０１０９】
そして送信部３４３は、ランダムタイマーによりランダム時間が計時されるまで待機し（ステップＳ７０５でＮｏ）、ランダムタイマーによりランダム時間が計時されると（ステップＳ７０５でＹｅｓ）、受信部３４１により受信されたアプリフレームをネットワーク１０２に送信する（ステップＳ７０７）。
【０１１０】
以上のように第３実施形態によれば、アプリフレームの送信タイミングをランダム化できない通信装置であっても、転送装置によりアプリフレームの送信タイミングをランダム化できるため、ネットワーク１０２上でのトラヒック（詳細には、同期フレームを除くアプリフレームなどのトラヒック）のバースト性及び定期性が軽減されるタイミングがより得られることが期待できる。
【０１１１】
（ハードウェア構成）
図１４は、各実施形態のスレーブ装置、マスター装置、通信装置、及び転送装置（以下、各実施形態の各装置と称する）のハードウェア構成の一例を示す図である。図１４に示すように、各実施形態の各装置は、ＣＰＵなどの制御装置９０１と、ＲＯＭやＲＡＭなどの主記憶装置９０２と、ＨＤＤやＳＳＤなどの補助記憶装置９０３と、ディスプレイなどの表示装置９０４と、キーボードやマウスなどの入力装置９０５と、通信インタフェースなどの通信装置９０６と、を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【０１１２】
各実施形態の各装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、ＣＤ−Ｒ、メモリカード、ＤＶＤ（Digital  Versatile  Disk）、フレキシブルディスク（ＦＤ）等のコンピュータで読み取り可能な記憶媒体に記憶されて提供される。
【０１１３】
また、各実施形態の各装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するようにしてもよい。また、各実施形態の各装置で実行されるプログラムを、インターネット等のネットワーク経由で提供または配布するようにしてもよい。また、各実施形態の各装置で実行されるプログラムを、ＲＯＭ等に予め組み込んで提供するようにしてもよい。
【０１１４】
各実施形態の各装置で実行されるプログラムは、上述した各部をコンピュータ上で実現させるためのモジュール構成となっている。実際のハードウェアとしては、ＣＰＵがＲＯＭやＨＤＤなどからプログラムをＲＡＭ上に読み出して実行することにより、上記各部がコンピュータ上で実現されるようになっている。なお、上記各部の少なくとも一部をＩＣなどのハードウェアで実現する場合、各実施形態の各装置は、当該ＩＣなどを更に備えればよい。
【０１１５】
本発明は、上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
【０１１６】
例えば、各実施形態のフローチャートにおける各ステップを、その性質に反しない限り、実行順序を変更し、複数同時に実施し、あるいは実施毎に異なった順序で実施してもよい。
【０１１７】
以上のように、各実施形態によれば、ネットワーク内での通信の競合の影響を回避しつつ、データの周期的な通信を保障することができる。
【符号の説明】
【０１１８】
１０１、２０１、３０１  通信システム
１０２  ネットワーク
１１０  スレーブ装置
１１１  クロック部
１１２  アプリ部
１１３  送信部
１１４  通信部
１１５  記憶部
１１６  推定部
１１７  同期部
１２０  マスター装置
１２１  クロック部
１２２  アプリ部
１２３  送信部
１２４  通信部
２３０、３３０  通信装置
２３１、３３１  クロック部
２３２  アプリ部
２３３、３３３  送信部
３４０  転送装置
３４１  受信部
３４２  クロック部
３４３  送信部
【図１】
0006523058.tif 000002
【図２】
0006523058.tif 000003
【図３】
0006523058.tif 000004
【図４】
0006523058.tif 000005
【図５】
0006523058.tif 000006
【図６】
0006523058.tif 000007
【図７】
0006523058.tif 000008
【図８】
0006523058.tif 000009
【図９】
0006523058.tif 000010
【図１０】
0006523058.tif 000011
【図１１】
0006523058.tif 000012
【図１２】
0006523058.tif 000013
【図１３】
0006523058.tif 000014
【図１４】
0006523058.tif 000015