(57)【特許請求の範囲】
【請求項１】
制御周期ごとに処理演算を実行するひとつまたは複数の制御装置とネットワークを介して接続され、前記ひとつまたは複数の制御装置と通信する通信制御装置において、
前記制御装置への制御指令を演算する制御指令演算部と、前記通信制御装置と前記制御装置の時刻を同期し、前記通信制御装置と前記制御装置間の通信遅延を計測する時刻同期部と、前記時刻同期部が計測した通信遅延を記憶する通信遅延記憶部と、前記制御装置の制御処理起動時間を収集する制御処理起動時間収集部と、前記制御処理起動時間収集部が収集した制御処理起動時間を記憶する制御処理起動時間記憶部と、前記制御装置ごとに、前記制御周期で定まる所定の時刻から、前記制御処理起動時間記憶部に記憶された制御処理起動時間を差し引いた時刻を、前記制御装置の起動時刻として決定する周期処理起動時刻管理部と、前記周期処理起動時刻管理部が決定した起動時刻を記憶する周期処理起動時刻記憶部と、前記制御指令演算部の制御指令を前記ネットワークと通信する通信部と、前記制御装置ごとに、前記周期処理起動時刻記憶部に記憶された起動時刻から、前記通信遅延記憶部に記憶された通信遅延の時間を差し引いた時刻を算出し、算出した時刻のなかで最も早い時刻より前に、前記制御指令演算部の制御指令を、前記通信部を用いて前記ネットワークに通信する送信時刻制御部とを有することを特徴とする通信制御装置。
【請求項２】
請求項１記載の通信制御装置において、
前記制御指令演算部は、前記制御装置への制御指令を周期的に演算し、前記周期処理起動時刻管理部は、所定の周期で、前記所定の時刻から、前記制御処理起動時間記憶部に記憶された制御処理起動時間を差し引いた時刻を、前記制御装置の周期起動時刻として決定し、前記送信時刻制御部は、前記制御装置ごとに、前記周期処理起動時刻記憶部に記憶された起動時刻から、前記通信遅延記憶部に記憶された通信遅延の時間を差し引いた時刻を周期的に算出し、算出した時刻のなかで最も早い時刻より前に、前記制御指令演算部の制御指令を前記通信部を用いて前記ネットワークに周期的に通信することを特徴とする通信制御装置。
【請求項３】
請求項１乃至請求項２のいずれかに記載の通信制御装置において、
前記通信部から通信される通信フレームは、ひとつまたは複数の前記制御装置への制御指令を含むことを特徴とする通信制御装置。
【請求項４】
請求項１乃至請求項３のいずれかに記載の通信制御装置において、
前記通信制御装置から前記制御装置ごとに制御指令を異なる通信フレームで順番に送信し、前記通信遅延記憶部は、前記制御装置への通信フレーム送信時刻までの待機時間を通信遅延に加えた時間を記憶することを特徴とする通信制御装置。
【請求項５】
請求項１乃至請求項４のいずれかに記載の通信制御装置において、
前記制御装置の計測情報設定処理時間を収集する計測情報設定処理時間管理部と、前記計測情報設定処理時間管理部が収集した計測情報設定処理時間記憶部と、前記制御装置ごとに、前記所定の時刻に、前記計測情報設定処理時間記憶部に記憶された計測情報設定処理時間を加え、前記通信遅延記憶部に記憶された通信遅延の時間を差し引いた時刻を算出し、算出した時刻のなかで最も遅い時刻以降に、前記制御指令演算部の計測情報の取得要求を前記通信部を用いて前記ネットワークと通信する送信時刻制御部とを有することを特徴とする通信制御装置。
【請求項６】
請求項１乃至請求項５のいずれかに記載の通信制御装置において、
前記時刻同期部は、前記ネットワークの接続情報を保持し、前記時刻同期部が保持する前記ネットワークの接続情報と、前記通信記憶部が記憶する通信遅延と、前記制御処理起動時間記憶部が記憶する制御処理起動時間から、推奨する前記ネットワークの接続構成を提示する推奨接続構成提示部とを有することを特徴とする通信制御装置。
【請求項７】
請求項６記載の通信制御装置において、
前記推奨接続構成提示部は、前記制御処理起動時間の長い順番に前記通信制御装置に隣接して接続する構成を提示することを特徴とする通信制御装置。
【請求項８】
ネットワークを介して、請求項１乃至請求項７のいずれかに記載の通信制御装置と通信する制御装置において、
前記通信制御装置と前記制御装置の時刻を同期する時刻同期部と、前記通信制御装置の制御指令によって制御処理を実行する制御処理実行部と、制御処理起動時間を取得して、外部に提示する制御処理起動時間管理部と、周期的に前記制御処理実行部を起動する周期処理起動部と、前記制御指令演算部の制御指令を前記ネットワークと通信する通信部と、を特徴とする制御装置。
【請求項９】
請求項８記載の制御装置において、
前記制御処理実行部は、制御処理起動時間が一定となるように待機処理を実行することを特徴とする制御装置。
【請求項１０】
請求項８乃至請求項９のいずれかに記載の制御装置において、
前記制御処理起動時間管理部は、制御処理起動時間が所定の制御周期を超過する場合に外部に提示することを特徴とする制御装置。
【請求項１１】
請求項８乃至請求項１０のいずれかに記載の制御装置において、
前記制御装置の計測情報を公開する計測情報公開部と、計測情報設定処理時間を計測し、公開する計測情報設定処理時間計測部と、を有することを特徴とする制御装置。
【請求項１２】
通信制御装置と、制御周期ごとに処理演算を実行するひとつまたは複数の制御装置とがネットワークを介して接続された通信・制御システムにおいて、
前記通信制御装置は、前記制御装置へ制御指令を与え、
前記通信制御装置と前記制御装置の時刻を同期し、
前記制御装置との間の通信遅延時間を求め、
前記制御装置の制御処理起動時間を収集し、
前記制御周期で定まる所定の時刻から、前記制御処理起動時間を差し引いた時刻を、前記制御装置の起動時刻とし、
前記制御装置ごとに、前記起動時刻から、前記通信遅延時間を差し引いた時刻を算出し、算出した時刻のなかで最も早い時刻より前に、前記制御指令を前記制御装置に送出することを特徴とする通信・制御システム。
【請求項１３】
請求項１２記載の通信・制御システムにおいて、
前記通信制御装置は、前記制御指令を周期的に演算し、
前記所定の周期で、前記所定の時刻から、制御処理起動時間を差し引いた時刻を、前記制御装置の周期起動時刻として決定し、
前記制御装置ごとに、前記周期起動時刻から、前記通信遅延の時間を差し引いた時刻を周期的に算出し、
算出した時刻のなかで最も早い時刻より前に、前記制御指令を周期的に送出することを特徴とする通信・制御システム。
【請求項１４】
請求項１２乃至請求項１３のいずれかに記載の通信・制御システムにおいて、
前記通信制御装置は、前記制御装置の計測情報設定処理時間を収集し、
前記制御装置ごとに、前記所定の時刻に、前記計測情報設定処理時間を加え、前記通信遅延時間を差し引いた時刻を算出し、
算出した時刻のなかで最も遅い時刻以降に、前記計測情報の取得要求を送出することを特徴とする通信・制御システム。
【請求項１５】
請求項１２乃至請求項１４のいずれかに記載の通信・制御システムにおいて、
前記通信制御装置は、前記ネットワークの接続情報を保持し、
前記ネットワークの接続情報と、前記通信遅延時間と、前記制御処理起動時間から、推奨する前記ネットワークの接続構成を提示することを特徴とする通信・制御システム。
【請求項１６】
請求項１５記載の通信・制御システムにおいて、
前記通信制御装置は、前記制御処理起動時間の長い順番に前記通信制御装置に隣接して接続する構成を提示することを特徴とする通信・制御システム。
【請求項１７】
請求項１２乃至請求項１６のいずれかに記載の通信・制御システムにおいて、
前記制御装置は、通信制御装置と前記制御装置の時刻を同期し、
前記通信制御装置からの制御指令によって制御処理を実行し、
制御処理起動時間を取得して外部に提示とすることを特徴とする通信・制御システム。
【請求項１８】
請求項１７記載の通信・制御システムにおいて、
前記制御装置は、前記制御処理起動時間が一定となるように待機処理を実行することを特徴とする通信・制御システム。
【請求項１９】
請求項１８記載の通信・制御システムにおいて、
前記制御装置は、制御処理起動時間が所定の制御周期を超過する場合に外部に提示することを特徴とする通信・制御システム。
【請求項２０】
請求項１８乃至請求項１９のいずれかに記載の通信・制御システムにおいて、
前記制御装置は、前記制御装置の計測情報を公開し、
計測情報設定処理時間を計測して公開することを特徴とする通信・制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置がネットワークを介して接続され、制御対象を制御する通信・制御システム及びここで使用される通信制御装置に関する。
【背景技術】
【０００２】
通信・制御システムとして、単一、または複数の制御用計算機（制御装置）が、ネットワークを介して接続され、制御用計算機がネットワークを介して制御指令等を制御対象へ送信することで、単一または複数の制御対象を制御する構成がある。このような通信・制御システムに用いられるネットワークには、Ｅｔｈｅｒｎｅｔ（登録商標）、ＲＳ−２３２Ｃ、ＲＳ−４２２、ＲＳ−４８５、ＣＡＮ（登録商標）、ＤｅｖｉｃｅＮｅｔ、ＭＥＣＨＡＴＲＯＬＩＮＫ（登録商標）、ＣＣ−Ｌｉｎｋ（登録商標）、ＥｔｈｅｒＣＡＴ（登録商標）等がある。
【０００３】
ネットワークで複数の制御装置が接続されて構成される通信・制御システムでは、場合によって各制御装置が同期して動作することが求められる。ここで、「同期して動作する」とは、各制御装置が、通信・制御システムに共通の制御則にのっとり、かつ、制御則の演算に用いられる各制御装置のセンサ入力のタイミング、制御則から導出されたアクチュエータ出力のタイミングが制御装置によって、ずれが生じないことである。
【０００４】
例えば、複数の関節で構成される産業用ロボットアームにおいて、各関節がサーボモータで構成される場合、各サーボモータの動作が同期していなければ、所望のロボットアームの軌跡を得ることはできない。通信・制御システムに求められる制御性能が高くなるほど、通信・制御システムに求められる同期精度は高い必要がある。
【０００５】
したがって、通信・制御システムを構成する各制御装置を同期して動作させるために、リアルタイム通信プロトコルや時刻同期プロトコルの技術発展があった。
【０００６】
特許文献１、非特許文献１は、係る通信技術の一例であり、例えば特許文献１では、時分割方式のネットワークにおいて、通信制御装置が各制御装置に対して動作開始時刻を通知することで、各制御装置の動作時刻を同期させる方式である。また、非特許文献１は、時刻同期プロトコルの実行手順を示す標準規格である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−１８７２３５号  「ネットワークシステムおよびスレーブ同期方法」
【非特許文献】
【０００８】
【非特許文献１】ＩＥＥＥ  １５８８−２００８  「ＩＥＥＥ  Ｓｔａｎｄａｒｄ  ｆｏｒ  ａ  Ｐｒｅｃｉｓｉｏｎ  Ｃｌｏｃｋ  Ｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ  ｆｏｒ  Ｎｅｔｗｏｒｋｅｄ  Ｍｅａｓｕｒｅｍｅｎｔ  ａｎｄ  Ｃｏｎｔｒｏｌ  Ｓｙｓｔｅｍｓ」
【発明の概要】
【発明が解決しようとする課題】
【０００９】
先にも述べたように、「同期して動作する」ためには、各制御装置が、通信・制御システムに共通の制御則にのっとり、かつ、制御則の演算に用いられる各制御装置のセンサ入力のタイミング、制御則から導出されたアクチュエータ出力のタイミングが制御装置によって、ずれが生じないようにする必要がある。
【００１０】
このことは、通信側の課題と、制御側の課題をともに解決する必要があることを意味する。はじめに、制御側の課題について検討する。この前提としては、後述する通信側の課題が解決しており、制御側の課題のみが残されているものとする。
【００１１】
しかしながら、各制御装置を時刻同期させ、通信側の問題が解決していたとしても、各制御装置における制御システム上の有意な動作を同期させることができないという課題があった。これは、各制御装置が、同期させた時刻系の所定時刻から動作を開始することができても、実際に通信・制御システム上の有意な動作までは制御装置ごとに異なる遅延が存在するためである。例えば、モータへの出力を例にとり、モータ出力を「有意な動作」とすると、各制御装置は、各制御装置に接続するモータに操作出力を与えるものであり、制御装置が操作指令を受信してからモータ出力までの時間が、各制御装置によって異なる場合がある。これは制御装置の構成の違いや、モータに操作出力を与えてから実際にその出力でモータが動作するまでに要する時間が相違することに起因する。
【００１２】
他方、通信側の問題について検討すると、通信制御装置と各制御装置間をリアルタイム通信プロトコルで接続することが有効であるが、係る対応を施したとしても、各制御装置が通信制御装置からの制御指令を受け取る周期にずれが生じるという課題があった。この課題を、図１７を用いて説明する。
【００１３】
図１７は、通信制御装置２０から３つの制御装置２１に対して制御指令Ｄを送信する様子を示す。Ｔａｉは、周期ｉにおける制御装置が動作を開始する時刻である。ここでは、通信制御装置２０は、時刻ｔ０、ｔ４に制御指令Ｄ０、Ｄ１をそれぞれ送信し、制御装置２１側ではこの制御指令Ｄ０、Ｄ１をそれぞれ異なる周期に受信している。
【００１４】
このため、図１７の例では、時刻Ｔａ１から始まる制御周期１において、各制御装置が処理を実行するに際し、各制御装置が通信制御装置２０から受けている制御指令が相違する。このとき、制御装置２１ａのみが制御指令Ｄ０を受信しているのに対して、制御装置２１ｂと制御装置２１ｃは制御指令Ｄ０を受信できていない。また、時刻Ｔａ２から始まる制御周期２において、各制御装置が処理を実行するに際し、制御装置２１ａと制御装置２１ｂが制御指令Ｄ１を受信できているが、制御装置２１ｃは制御指令Ｄ１を受信できていない。このため、時刻Ｔａ２から始まる制御周期２において、制御装置２１ａと制御装置２１ｂは制御指令Ｄ１の処理を実行できるが、制御装置２１ｃは制御指令Ｄ０の処理を実行することになる。
【００１５】
これは、通信制御装置２０からの制御指令Ｄの送信時刻が制御されていないためである。また、一般に制御指令Ｄの演算をＣＰＵ、組込みプロセッサ上で動作するソフトウェアで実行するため、送信指令要求の実行精度が制御周期に対して大きい場合がありうる。あるいはソフトウェア実行による精度低下だけでなく、ＣＰＵや組込みプロセッサから通信用ハードウェアまでの指令が伝達するタイミングにも、ＣＰＵや組込みプロセッサと通信用ハードウェア間のバスプロトコルによって精度低下する場合がありうる。
【００１６】
この点について特許文献１の方式では、通信制御装置２０が各制御装置２１の制御処理起動時間を収集し、制御装置２１ごとに、制御指令Ｄを受信してから動作を開始するまでの待機時間を通知している。そのため、通信・制御システムで有意な動作時刻を同期させることができる。
【００１７】
ただし、この方式は制御装置ごとにネットワーク利用の通信時間を割り当てている。そのため、制御周期は各制御装置への通信遅延の積算値となる。したがって、制御装置の数が増加するほど、制御周期が長くなるという課題がある。
【００１８】
以上のことから、本発明においては通信側の課題と、制御側の課題をともに解決し、各制御装置が同期して動作することのできる通信制御装置及び通信・制御システムを提供することを目的とする。
【課題を解決するための手段】
【００１９】
本発明は、上記課題を解決するために、アクチュエータを有して制御対象を操作する複数の制御装置とネットワークを介して接続され、複数の制御装置と通信する通信制御装置において、制御装置への制御指令を演算する制御指令演算部と、通信制御装置、制御装置の時刻を同期し、通信制御装置と制御装置間の通信遅延を計測する時刻同期部と、時刻同期部が計測した通信遅延を記憶する通信遅延記憶部と、制御装置の制御処理起動時間を収集する制御処理起動時間収集部と、制御処理起動時間収集部が収集した制御処理起動時間を記憶する制御処理起動時間記憶部と、所定の時刻から、制御処理起動時間記憶部に記憶された制御処理起動時間を差し引いた時刻を、制御装置の起動時刻として決定する周期処理起動時刻管理部と、周期処理起動時刻管理部が決定した起動時刻を記憶する周期処理起動時刻記憶部と、制御指令演算部の制御指令をネットワークと通信する通信部と、制御装置ごとに、周期処理起動時刻記憶部に記憶された起動時刻から、通信遅延記憶部に記憶された通信遅延の時間を差し引いた時刻を算出し、算出した時刻のなかで最も早い時刻より前に、制御指令演算部の制御指令を通信部に通知する送信時刻制御部とを有する。
【発明の効果】
【００２０】
制御性能を向上した通信制御装置及び通信・制御システムを提供することができる。
【図面の簡単な説明】
【００２１】
【図１】通信制御装置２０の機能構成の一実施形態を示す図。
【図２】制御装置２１の機能構成の一実施形態を示す図。
【図３】通信・制御システムの概略構成の一例を示す図。
【図４】通信・制御システムの概略構成の一例を示す図。
【図５】時刻同期部１３の処理フローを示す図。
【図６】各スレーブ間の通信遅延の計測方法を示す図。
【図７】時刻同期部の具体的な動作を示すフロー図。
【図８】制御処理起動時間収集部の具体的な動作を示すフロー図。
【図９】周期処理起動時刻管理部の具体的な動作を示すフロー図。
【図１０】送信時刻制御部と制御指令演算部の間の動作を示すフロー図。
【図１１】通信制御装置のハードウェア構成の一例を示す図。
【図１２】ＣＰＵ上で動作するソフトウェア構成の一例を示す図。
【図１３】ＩＥＥＥ  １５８８で実施するシステム例を示す図。
【図１４】ＩＥＥＥ  １５８８により時刻同期するときの実行手順を示す図。
【図１５】ＩＥＥＥ  １５８８の時刻同期メッセージを示した図。
【図１６】送信最終許可時刻、動作開始時刻、通信遅延ｄｎの関係を示す図。
【図１７】通信制御装置から制御装置に制御指令Ｄを送信する様子を示す図。
【図１８】制御装置の各機能部の動作を示す図。
【図１９】制御処理起動時間を固定にする処理を示す図。
【図２０】ＥｔｈｅｒＣＡＴフレームを示した図。
【図２１】制御指令識別のための通信フレームのフォーマットを示す図。
【図２２】時間的制約がないときの制御装置の計測情報取得事例を示す図。
【図２３】送信開始許可時刻、計測情報設定時刻、通信遅延関係を示す図。
【図２４】同一周期内で計測、制御を行う通信制御装置の機能構成を示す図。
【図２５】各制御装置の計測情報設定処理時間を収集する手順を示す図。
【図２６】同一周期内で計測、制御を行う制御装置の機能構成を示す図。
【図２７】同一周期内で計測、制御を行うときの時間関係を示す図。
【図２８】推奨接続構成提示部を追加した通信制御装置を示す図。
【発明を実施するための形態】
【００２２】
以下、本発明の通信・制御システムについて図面を用いて詳細に説明する。
【実施例１】
【００２３】
図３、図４は、通信制御装置２０と各制御装置２１をネットワーク接続した通信・制御システムの概略構成例である。図３は、制御装置２１がネットワーク２２に直列に接続され、図４はネットワーク２２途中に分岐箇所がある例を示している。
【００２４】
この図において、通信制御装置２０は、ネットワーク２２を構成する通信制御装置２０ならびに制御装置２１の時刻を同期させ、各制御装置２１に対して、制御指令の送受信、管理情報の送受信を実行する。
【００２５】
制御装置２１は、通信制御装置２０からの制御指令を受信して制御処理を実行する。また、必要に応じて、通信制御装置に対して管理情報を通信する。制御装置２１のアクチュエータとして、サーボアンプとサーボモータによる構成が例示される。
【００２６】
ネットワーク２２は、通信制御装置２０ならびに制御装置２１を接続する。ネットワーク２２の具体例として、Ｅｔｈｅｒｎｅｔ（登録商標）、ＩＥＣ６１７８４で定義される産業用Ｅｔｈｅｒｎｅｔ（登録商標）、ＣＡＮ（（登録商標）Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、  ＤｅｖｉｃｅＮｅｔ、ＲＳ−２３２Ｃ、ＲＳ−４２２、ＲＳ−４８５、ＭＥＣＨＡＴＲＯＬＩＮＫ（登録商標）、ＣＣ−Ｌｉｎｋ（登録商標）等が挙げられる。本実施例では、ネットワーク２２として、ＥｔｈｅｒＣＡＴ（（登録商標）ＩＥＣ６１７８４パート２のＣｏｍｍｕｎｉｃａｔｉｏｎ  Ｐｒｏｆｉｌｅ  Ｆａｍｉｌｙ  １２）を例に説明する。
【００２７】
ＥｔｈｅｒＣＡＴ（登録商標）には、通信制御装置２０から送信された通信フレームは、各制御装置２１を順番に経由し、全ての制御装置２１を経由後、通信制御装置２０に戻るという特徴がある。このため、制御装置２１が直列に接続された図３の構成例では、２１ａ→２１ｂ→２１ｃ→２１ｄ→２１ｅ→２１ｄ→２１ｃ→２１ｂ→２１ａの順に経由して通信制御装置２０へ通信フレームが戻る。また、途中で分岐する図４における通信フレームの経由する制御装置２１の順番の一例としては、２１ａ→２１ｂ→２１ｃ→２１ｂ→２１ａ→２１ｄ→２１ｅ→２１ｄ→２１ａの順に経由して通信制御装置２０へ通信フレームが戻る。
【００２８】
次にネットワーク２２に接続される通信制御装置２０と、制御装置２１の構成事例について、図１、図２を用いて順次説明する。
【００２９】
まず、図１は、通信制御装置２０の機能構成の一実施形態を示している。この図１は、機能的に通信部２４と、制御指令演算部１２と、同期管理部１００に大別することができる。
【００３０】
このうち、第１番目の機能である通信部２４は、ネットワーク２２に接続し、ネットワーク２２の通信プロトコルにしたがって通信をするための機能部であり、送信部１０と受信部１１から構成される。送信部１０は、通信部２４における送信機能部であり、通信制御装置２０からネットワーク２２に対してパケットを送信する。受信部１１は、通信部２４における受信機能部であり、ネットワーク２２から送信されたパケットを受信する。
【００３１】
第２番目の機能である制御指令演算部１２は、通信制御装置２０から制御装置２１に対して送信する制御指令Ｄを演算する。制御指令演算部１２は、その演算結果を送信部１０に対して送信する。また、受信部１１から制御装置２１のセンサ値を受信する。制御指令演算部１２は、フィードバック制御等を実行する場合、その受信した値をもとに制御指令を演算する。ただし、送信部１０に対して送信する時刻は、同期管理部１００内の送信時刻制御部１３が制御する。
【００３２】
３番目の機能である同期管理部１００は、本発明の中核をなすものであり、本発明では、送信時刻制御部１３が送信時刻を適切に制御することにより、各制御装置２１が同期して動作することを可能とする。この実現のために、本発明においては、通信制御装置２０から各制御装置２１までの通信遅延と、制御装置２１の周期処理起動時刻と、制御装置２１の制御処理起動時間を管理する。これら管理項目の詳細については、別途説明するが、これらの管理、調整は同期管理部１００の送信時刻制御部１３が主体となって実行する。
【００３３】
以下、同期管理部１００の概略機能構成について先に述べる。まず、送信時刻制御部１３は、制御指令演算部１２が演算した制御指令Ｄを送信部１０に送信する時刻を決定する。送信時刻は、通信制御装置２０から各制御装置２１までの通信遅延、制御装置２１ごとに設定している周期処理起動時刻を参照して決定する。通信遅延は通信遅延記憶部１９が記憶し、周期処理起動時刻は周期処理起動時刻記憶部１８が記憶する。また、送信時刻制御部１３は、時刻同期部１４、周期処理起動時刻管理部１５、制御処理起動時間収集部１６の動作を管理する。
【００３４】
なお、送信時刻制御部１３が、同期管理部１００内を管理、調整する為の具体的な動作は、図５のフローチャートを用いて別途説明する。また、この管理、調整の結果を、制御指令演算部１２に伝え、制御装置２１側に反映させるための処理フローを、図１０のフローチャートを用いて別途説明する。
【００３５】
本発明における３つの管理項目（通信遅延、周期処理起動時刻、制御処理起動時間）のうち、通信遅延は、通信遅延記憶部１９と時刻同期部１４により管理される。通信遅延記憶部１９は、通信制御装置２０から各制御装置２１までの通信遅延を記憶する。この通信遅延は、時刻同期部１４が計測、算出し、通信遅延記憶部１９に記録する。送信時刻制御部１３からの指示を受けて起動される時刻同期部１４の具体的な動作は、図７のフローチャートを用いて別途説明する。
【００３６】
２つめの管理項目である周期処理起動時刻は、周期処理起動時刻管理部１５と周期処理起動時刻記憶部１８により管理される。周期処理起動時刻管理部１５は、通信制御装置２０から各制御装置２１までの通信遅延と、各制御装置２１の制御処理起動時間から、各制御処理装置の周期処理起動時刻を決定し、各制御装置２１に、それぞれの周期処理起動時刻を設定する。周期処理起動時刻記憶部１８は、周期処理起動時刻管理部１５が決定した周期処理起動時刻を記憶する。送信時刻制御部１３からの指示を受けて起動される周期処理起動時刻管理部１５の具体的な動作は、図９のフローチャートを用いて別途説明する。
【００３７】
３つめの管理項目である制御処理起動時間は、制御処理起動時間収集部１６と制御処理起動時間記憶部１７により管理される。制御処理起動時間収集部１６は、各制御装置２１の制御処理起動時間を収集し、収集した制御処理起動時間を制御処理起動時間記憶部１７に登録する。制御処理起動時間記憶部１７は、制御処理起動時間収集部１６が収集した制御処理起動時間を記憶する。送信時刻制御部１３からの指示を受けて起動される制御処理起動時間収集部１６の具体的な動作は、図８のフローチャートを用いて別途説明する。
【００３８】
これに対し、図２に制御装置２１の機能構成の一例を示す。まず、時刻同期部１４は、通信制御装置２０の時刻同期部１４と同様に、ネットワーク２２上での時刻同期を実現する。ただし、マスタ−スレーブ構成をとる時刻同期プロトコルの場合、マスタ、スレーブのいずれにもなりうる。一例として、通信制御装置２０の時刻同期部１４がマスタとなり、制御装置２１の時刻同期部１４はスレーブとなる。時刻同期プロトコルにおけるスレーブの役割は、マスタからの要求にこたえて必要な情報を返信することや、マスタから受信した時間情報を設定することなどである。
【００３９】
制御処理実行部３１の実行内容としては、アクチュエータとして、通信制御装置２０からの制御指令Ｄを受けて所定の動作を実行することや、センサとして、外部の所定の情報を取得して通信制御装置２０へ送信すること、コントローラとして、通信制御装置２０から送信された目標値をもとに制御演算を実行して所定の動作を実行することなどがある。その処理の動作開始時刻は、周期処理起動部３３によって制御される。
【００４０】
ここで、制御装置２１の各機能部の動作を、図１８を用いて説明する。この図で横軸は時間であり、周期処理起動部３３は、通信制御装置２０から設定された周期動作の規則によって、周期的に制御処理実行部３１を起動する。なお、制御処理実行部３１の起動は、周期的ではなく、所定回数だけ起動してもよい。
【００４１】
制御装置２１内では一定時間ごとに制御周期を形成するが、このうちＴｓｔａは、制御処理実行部３１が周期処理起動部３３により起動されて、動作を開始する時刻である。Ｔａｃｔは、制御装置２１としての動作が実行された時刻である。ここで、ＴｓｔａからＴａｃｔまでの時間Ｐが、本発明の管理項目の一つである制御処理起動時間である。なお、制御処理実行部３１は、Ｔｓｔａ前に受信した最新の制御指令Ｄをもとに動作を実行する。この動作は、制御指令の受信時刻や、制御処理実行部３１の状態によって、処理方法を変更しても構わない。例えば、受信時刻から所定の時間が経過していれば、制御指令Ｄを古いと考え、処理に反映しないことが挙げられる。
【００４２】
制御処理起動時間管理部３２は、制御処理実行部３１の動作開始時刻Ｔｓｔａから、実際にシステムとして有意な動作がなされる時刻Ｔａｃｔまでの時間（制御処理起動時間（図１８のＰ））を取得し、通信制御装置２０に送信する。これにより、図１の通信制御装置２０内の制御処理起動時間記憶部１７には、各制御装置の制御処理起動時間が把握され、記憶されることになる。
【００４３】
通信制御装置２０は、図１のような機能を備え、かつ制御装置２１側は図２のような機能を備えて、図１８の応答をすることを前提として、以下各部の動作を詳細に説明する。
【００４４】
図５は、図１の送信時刻制御部１３が、同期管理部１００内を管理、調整する為の具体的な動作を示している。このフロー図によれば、はじめに、ステップＳ０１において送信時刻制御部１３は、時刻同期部１４に対して時刻同期機能の開始を要求する。またステップＳ０２において、制御処理起動時間収集部１６に対して各制御装置２１の制御処理起動時間の収集の開始を要求する。なお、時刻同期部１４に対する開始要求、制御処理起動時間収集部１６に対する開始要求の順序は、どちらが先でも構わず、あるいは同時に実行しても構わない。
【００４５】
時刻同期部１４の時刻同期処理の終了、ならびに制御処理起動時間収集部１６の制御処理起動時間の収集処理の終了をそれぞれステップＳ０３、ステップＳ０４で確認後、送信時刻制御部１３はステップＳ０５において、周期処理起動時刻管理部１５に周期処理起動時刻の決定を要求する。
【００４６】
ステップＳ０６において、周期処理起動時刻管理部１５は、時刻同期部１４が同期させた時刻系において、制御処理起動時間収集部１６が収集した各制御装置２１の制御処理起動時間Ｐをもとに、各制御装置２１の周期処理起動時刻を決定する。
【００４７】
ステップＳ０７において、送信時刻制御部１３は、周期処理起動時刻管理部１５の周期処理起動時刻の決定後、制御指令演算部１２に制御処理の開始を要求する。
【００４８】
そして、ステップＳ０８において、送信時刻制御部１３は、制御処理起動時刻管理部１５の決定した周期処理起動時刻と、時刻同期部１４が計測した通信遅延をもとに、制御指令演算部１２の制御指令の送信時刻を制御する。
【００４９】
以上述べたように、同期管理部１００内の各部機能は、送信時刻制御部１３の指示に基づいて動作している。次に、各機能部が、基本的に備えている機能、並びに送信時刻制御部１３からの指示に基づいて実行する処理手順の詳細について説明する。
【００５０】
まず、時刻同期部１４の動作について説明する。時刻同期部１４は、所定の時刻同期プロトコルにしたがって、ネットワーク２２を構成する通信制御装置２０、制御装置２１の時刻を同期する。また、時刻同期部１４は、時刻同期のため、通信制御装置２０から各制御装置２１までの通信遅延を計測する。
【００５１】
このうち、時刻同期部１４の基本的な機能は、ネットワーク２２に接続する通信制御装置２０、制御装置２１の時刻を同期することであるが、この場合に、時刻同期プロトコル自体は標準的な規格を用いてもよいし、独自の仕組みを用いてもよい。また、同期する時刻は、協定世界時のように世界共通の時刻であっても構わないし、通信・制御システム内で共通の時刻であれば世界共通の時刻でなくても構わない。
【００５２】
但し、通信・制御システムに要求される精度の時刻同期プロトコルを選択する必要がある。例えば、ミリ秒単位の精度あるいは、それより低い精度で構わなければＮＴＰ（Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）を選択し、より高精度に時刻を同期する必要があればＩＥＥＥ  １５８８を選択するのがよい。
【００５３】
いずれの場合においても、本発明を適用する場合は、時刻を同期する手順のなかで通信制御装置２０と各制御装置２１間の通信遅延を計測することが求められる。
【００５４】
もし、時刻同期部１４に通信遅延を計測する仕組みがなければ、別途通信遅延を計測する仕組みが必要となる。時刻同期がされた状態で通信遅延を計測する方法の一例を示せば、通信制御装置２０側から送信時刻の情報をのせたパケットを制御装置２１に送信し、制御装置２１がそのパケットを受信した時刻と、パケットに格納された送信時刻の差分を通信遅延とする方法がある。
【００５５】
ここでは、通信遅延計測手法として、ＥｔｈｅｒＣＡＴ（登録商標）の時刻同期プロトコルの実行手順を説明する。ＥｔｈｅｒＣＡＴ（登録商標）の時刻同期機能は、スレーブ間の通信遅延計測、各スレーブの時計のオフセット補償、各スレーブが有する時計の進み具合のドリフト補償という３段階で構成されている。
【００５６】
各スレーブ間の通信遅延の計測方法について、図６を用いて説明する。図６は、ＥｔｈｅｒＣＡＴ（登録商標）スレーブの各スレーブＩＣ１４１におけるパケットの通信経路と通信ポートでの受信時刻を示している。但し、図６のＴａ、Ｔｂ、Ｔｃ、Ｔｄ、Ｔｅは、各ポートにおけるパケットの受信時刻で、ｔｄｉｆｆはスレーブ間の通信遅延である。ｔｐは、ＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ１４０の処理時間である。
【００５７】
ここで、スレーブＩＣ１４１ａに着目すれば、Ｔａ、Ｔｅは同じスレーブＩＣ１４１ａ上のクロックで計測しているが、スレーブＩＣ１４１ｂとは、クロックのオフセットやドリフトが異なるため、Ｔｂ、Ｔｄとそのまま比較することはできない。ここで、図６のＴａ〜Ｔｅが計測可能で、ｔｐが既知であるとする。スレーブＩＣ１４１ｂとスレーブＩＣ１４１ｃ間の通信遅延ｔｄｉｆｆＢＣは、（１）式で表すことができる。
［数１］
ｔｄｉｆｆＢＣ＝（Ｔｄ−Ｔｂ）÷２    （１）
ただし、（Ｔｃ−Ｔｂ）と（Ｔｄ−Ｔｃ）は等しいことを前提としている。なお、ＥｔｈｅｒＣＡＴスレーブのプロセッサユニットは同種のものを利用していると仮定している。もし、プロセッサユニットが異なる場合は、ｔｐの違いを考慮する必要がある。
【００５８】
また、スレーブＩＣ１４１ｂとスレーブＩＣ１４１ａ間の通信遅延ｔｄｉｆｆＡＢは、次の（２）式で求められる。
［数２］
ｔｄｉｆｆＡＢ＝（（Ｔｅ−Ｔａ）−（Ｔｄ−Ｔｂ）−ｔｐ）÷２＋ｔｐ  （２）
また、スレーブＩＣ１４１ｂとスレーブＩＣ１４１ａ間の通信遅延ｔｄｉｆｆＢＡは、（２）式と、ＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ１４０の処理時間ｔｐを用いて（３）式から求められる。
［数３］
ｔｄｉｆｆＢＡ＝ｔｄｉｆｆＡＢ−ｔｐ    （３）
なお、時刻同期機能に対応していないＥｔｈｅｒＣＡＴスレーブは単なる通信経路と見なされる。言い換えれば、時刻同期機能に対応していないＥｔｈｅｒＣＡＴスレーブは一定の通信遅延でパケットを転送する必要がある。
【００５９】
以上のような前提の下で、時刻同期部１４においては、時刻同期、並びに通信遅延計測を図７のフローに従い実行する。この処理は、送信時刻制御部１３における図５のステップＳ０１による時刻同期開始指示を受けて行われるものである。
【００６０】
図７のステップＳ０１０では、はじめに、時刻同期部１４がネットワーク２２に時刻同期用のパケットを送信する。これを受けて、ステップＳ０１１では各制御装置２１は、各通信ポートでのパケットの受信時刻を記録する。そして、時刻同期部１４は、各制御装置２１が記録した受信時刻を収集する（ステップＳ０１２）。
【００６１】
次に、時刻同期部１４はステップＳ０１３において、制御装置２１の接続情報を取得する。接続情報の取得には、あらかじめネットワーク２２の情報が記載された設定ファイルを読み込む方法か、各制御装置２１のポート情報を通信して読みとり、接続情報を構築する方法がある。なお、接続情報は、ステップＳ０１０の時刻同期用パケットの送信前に取得しても構わない。
【００６２】
次に、時刻同期部１４は、ステップＳ０１４において、収集した各制御装置２１の受信時刻と、取得した接続情報から、各制御装置２１間の通信遅延を算出する。図６のスレーブＩＣ１４１ｂ、スレーブＩＣ１４１ｃの接続関係に相当する制御装置２１間の通信遅延は（１）式より算出する。また、図６のスレーブＩＣ１４１ａ、スレーブＩＣ１４１ｂの接続関係に相当する制御装置２１間の通信遅延は（２）式あるいは、（３）式より計算する。
【００６３】
隣接する制御装置２１間の通信遅延を計算後、ステップＳ０１５にて、基準となる時刻を有する制御装置２１と、各制御装置２１間の通信遅延を計算する。
この計算は、接続情報に基づいて、基準となる時刻を有する制御装置２１と、対象とする制御装置２１までの通信遅延を、パケットを経由する順に加算していけばよい。例えば、図６のスレーブＩＣ１４１ａとスレーブＩＣ１４１ｃ間の通信遅延は、ｔｄｉｆｆＡＢとｔｄｉｆｆＢＣの和となる。なお、制御装置２１ではなく、通信制御装置２０の時刻を基準としてもよい。この場合は、通信制御装置２０と、各制御装置２１間の通信遅延を算出する必要がある。
【００６４】
その後、ステップＳ０１６において時刻同期部１４は、各制御装置２１に、ステップＳ０１５で算出した通信遅延を通知する。以上により通信遅延を確認し、次に時刻同期を行う。
【００６５】
次に、ステップＳ０１７において時刻同期部１４は、各制御装置２１からＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｉｎｇ  Ｕｎｉｔ１４０が時刻同期用パケットを受信した時刻を収集する。
【００６６】
次いで、ステップＳ０１８において各制御装置２１から収集した時刻同期用パケットの受信時刻Ｔｒと、基準となる時刻を有する制御装置２１での受信時刻Ｔｒｅｆの差分を計算する。差分Ｄは（４）式で計算される。ここで、Ｐｄは、基準となる時刻を有する制御装置２１と、差分Ｄｅを求める制御装置２１間の通信遅延である。
【００６７】
［数４］
Ｄｅ＝Ｔｒ−Ｔｒｅｆ−Ｐｄ        （４）
次に、ステップＳ０１９において、計算した時刻の差分Ｄｅを各制御装置２１に通知する。各制御装置２１は、この差分を利用して、制御装置２１自身の時刻を修正する。具体的には、制御装置２１の時刻に差分を加えることで、制御装置２１の時刻を基準時刻にあわせることができる。
【００６８】
以降は、ステップＳ０２０において、定期的に時刻同期用のパケットをネットワーク２２に対して送信する。基準となる時刻を持つ制御装置２１は、この時刻同期用パケットを受信すると、自分自身の時刻をパケットに載せる。各制御装置２１は、その基準時刻を参照して、時計の進み具合のずれを補正する。
【００６９】
なお、図７に示す時刻同期、通信遅延の計測は、システムの初期動作時に１回だけ実行してもよいし、初期動作時に実行後、システムの動作中に任意のタイミングで実行してもよい。
【００７０】
時刻同期処理の終了後、時刻同期部１４は、通信遅延記憶部１９に、制御装置２１ごとの通信遅延を記録する。
【００７１】
制御処理起動時間収集部１６においては、制御処理起動時間収集処理を図８のフローに従い実行する。この処理は、送信時刻制御部１３における図５のステップＳ０２による制御処理起動時間収集開始指示を受けて行われるものである。
【００７２】
図１８で説明したように、制御処理起動時間Ｐは、時刻同期部１４によって同期された時刻系において、制御処理の動作開始時刻Ｔｓｔａから、実際に通信・制御システム上の有意な動作がなされる時刻Ｔａｃｔまでの時間である。制御処理起動時間収集部１６が、各制御装置２１の制御処理起動時間Ｐを収集する手順を、図８を用いて説明する。
【００７３】
ここでは、制御処理起動時間収集部１６の機能開始前の事前準備段階（通信・制御システムの設置段階）において、ステップＳ０２０では、各制御装置２１の制御処理起動時間管理部３２（図２）に、制御処理起動時間を取得しておく。これは、制御装置２１の開発者が設計した値としてもよいし、制御処理起動時間を計測する手段を制御装置２１に設けて計測してもよい。このような計測手段には、ＣＰＵ、あるいはマイコンのタイマを用いる方法や、割り込みの入出力が可能な時刻同期部１４を用いる方法が考えられる。
【００７４】
例えば、図２の時刻同期部１４が制御処理の動作開始時刻を割り込み出力し、この瞬間にタイマの動作を開始させ、制御装置２１が有意な動作をした瞬間にタイマを止めれば、制御処理起動時間を取得することができる。通信・制御システムを稼働させる前の初期段階で、所定の回数繰り返し、その平均値を制御処理起動時間とすることでもよい。
【００７５】
また、本発明では制御処理起動時間Ｐが一定であることが望ましい。したがって、制御処理起動時間Ｐに変動がある場合は、それを固定にする処理が必要である。制御処理起動時間Ｐを固定にする処理として、タイマ等の機能を用いて、制御処理実行部３１が待機することが考えられる。これを図１９に示す。
【００７６】
図１９では、所定の回数、制御処理時間Ｐを計測（ＴｓｔａからＴａｃｔまでの時間）した時に、計測値にばらつきが観測される場合、その最大値に安全係数を加算した値を目標制御処理起動時刻Ｔｔａｒｇｅｔとし、その時刻まで待機時間Ｗだけ待機する方法である。この場合、制御処理起動時間管理部３２が公開する制御処理起動時間は、ＴｓｔａからＴｔａｒｇｅｔまでの固定制御処理起動時間Ｐｗである。
【００７７】
なお、この固定制御処理起動時間Ｐｗが制御周期を超過する場合は、制御処理起動時間管理部３２が通信制御装置２０へ通知する。この通知を受けた通信制御装置２０は、通信・制御システムの開発者、利用者へＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）やファイルを用いて、この情報を提示する。こうすることによって、通信・制御システムの開発者、利用者は制御周期の変更、制御装置の置換等の対策を実施することができる。
【００７８】
以上の処理が、始動以前に行われているという前提において、実運用段階では、ステップＳ０２１において、各制御装置２１の制御処理起動時間管理部３２は、取得した制御処理起動時間Ｐを通信制御装置２０に対して公開する。この公開方法として、事前に制御装置２１の開発者が各制御装置２１用の設定ファイルを定義し、そのなかで通信制御装置２０がアクセス可能な領域を定義し、各制御装置２１の制御処理時間管理部３２が制御処理起動時間をその領域に公開することが例示される。
【００７９】
例えば、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）通信による所定のポート番号への接続に対して、制御処理起動時間を返信する方法が考えられる。通信制御装置２０は、各制御装置２１の設定ファイルを事前に読み込むことで、制御処理起動時間管理部３２が公開する制御処理起動時間の領域を知ることができる。あるいは、所定のプロトコルにしたがって各制御装置２１が通信制御装置２０に対して制御処理起動時間を通知してもよい。
【００８０】
そして、ステップＳ０２２において、制御処理起動時間収集部１６は、各制御装置２１の制御処理起動時間管理部３２と通信し、制御処理起動時間Ｐを取得する。なお、各制御装置２１の制御処理起動時間を通信制御装置２０に収集する方法は、通信・制御システムの非可動時に通信・制御システムの利用者が通信制御装置２０に入力してもよい。
【００８１】
ステップＳ０２３において、各制御装置２１の制御処理起動時間を取得した制御処理起動時間収集部１６は、制御処理起動時間記憶部１７に制御装置２１ごとの制御処理起動時間を記録する。
【００８２】
次に周期処理起動時刻管理部１５の動作について図９のフローチャートを参照して説明する。なお、この処理は、送信時刻制御部１３における図５のステップＳ０５による周期処理起動時刻の決定要求を受けて、ステップＳ０６として行われる処理の詳細を示すものである。
【００８３】
はじめに、ステップＳ０３０において、制御指令演算部１２は、周期処理起動時刻管理部１５に対して制御周期を通知する。
【００８４】
ステップＳ０３１では、周期処理起動時刻管理部１５は、制御指令演算部１２から通知された制御周期をもとに、時刻同期部１４によって同期された時刻系において、通信・制御システム上の有意な動作の時刻を決定する。この動作時刻の決定方法は、現在時刻から任意の時間を経過した時刻とする方法が挙げられる。周期処理起動時刻管理部１５は、ステップＳ０３１で決定した最初の動作時刻以後は、制御指令演算部１２が通知した周期が経過した時刻を後続の動作時刻とする。
【００８５】
次に、ステップＳ０３２において、周期処理起動時刻管理部１５は、制御装置２１ごとに、制御処理起動時間記憶部１７に記憶した各制御装置２１の制御処理起動時間を、ステップＳ０３１で決定した動作時刻から引いた時刻を算出する。これは、ｎを制御装置２１の識別子として、求める動作開始時刻である周期処理起動時刻をＴｎとしたときに、（５）式で計算される。
【００８６】
［数５］
Ｔｎ＝Ｔａ−Ｐｎ      （５）
ここで、Ｔａは通信・制御システム上の有意な動作をする時刻、Ｐｎは制御装置２１ごとの制御処理起動時間である。
【００８７】
次に、ステップＳ０３３において、周期処理起動時刻管理部１５は、算出した周期処理起動時刻Ｔｎを各制御装置２１の周期処理起動部３３に設定する。設定方法は、最初の動作時間Ｔｎと周期を通知する方法や、毎回の動作開始時刻を通知する方法が例示される。
【００８８】
また、ステップＳ０３４において、周期処理起動時刻管理部１５は、算出したＴｎを周期処理起動時刻記憶部１８に記録する。
【００８９】
送信時刻制御部１３は、周期処理起動時刻管理部１５の処理後、図１０に示す処理手順をとる。つまり、図５のフローにおいて、ステップＳ０１から、ステップＳ０６までの処理（同期管理部１００内の管理、調整処理）の終了をもって、この管理、調整の結果を、制御指令演算部１２に伝え、制御装置２１側に反映させるための処理を、図５のフローのステップＳ０７とステップＳ０８で実施するが、この詳細を示したのが図１０のフローチャートである。
【００９０】
図１０においては、まずステップＳ０７０において、通信遅延記憶部１９に記録された通信遅延、周期処理起動時刻記憶部１８に記録された各制御装置２１の動作開始時刻をもとに送信最終許可時刻を求める。ｎを制御装置２１の識別子として、求める送信最終許可時刻をＴｐとすると、Ｔｐを（６）式で計算する。
【００９１】
［数６］
Ｔｐ＝ｍｉｎ（Ｔｎ−ｄｎ）        （６）
ここで、Ｔｎは各制御装置２１の動作開始時刻、ｄｎは通信制御装置２０と各制御装置２１間の通信遅延、ｍｉｎ演算は、各制御装置２１に対する計算結果のなかで最も早い時刻を得る式とする。（６）式は、制御装置２１ごとの、動作開始時刻から通信遅延を引いた時刻が最も早い時刻を求めている。
【００９２】
ここで、送信最終許可時刻Ｔｐ、動作開始時刻Ｔｎ、通信遅延ｄｎの具体例を図１６に示し、本発明により最適の結果が得られることについて説明する。まず、ここで使用する記号の意味について説明する。Ｔａｉは、周期ｉにおいて通信・制御システムとしての有意な動作時刻を示しており、サフィックスｉは、１と２の例を示している。Ｔｎｊｉは、周期ｉにおけるｊ番目の制御装置２１の動作開始時刻を示しており、サフィックスｊは、ａ、ｂ、ｃの３台の例を示している。ｄｎｊは、ｊ番目の制御装置２１の通信遅延、Ｔｍｊは、ｊ番目の制御装置２１の動作開始時刻Ｔｎｊ１から通信遅延ｄｎｊを引いた時刻を示す。
【００９３】
図１６の例の場合には、制御装置２１ａ、２１ｂ、２１ｃのそれぞれの動作開始時刻が、Ｔｎａ１、Ｔｎｂ１、Ｔｎｃ１であったとする。また、制御装置２１ａ、２１ｂ、２１ｃのそれぞれの通信遅延ｄｎは、ｄｎａ、ｄｎｂ、ｄｎｃであったとする。このことから、動作開始時刻Ｔｎから通信遅延ｄｎを引いた時刻を求めると、制御装置２１ａでは動作開始時刻Ｔｎａ１から通信遅延ｄｎａを引いた（前の時刻）Ｔｍａであり、制御装置２１ｂでは動作開始時刻Ｔｎｂ１から通信遅延ｄｎｂを引いた（前の時刻）Ｔｍｂであり、制御装置２１ｃでは動作開始時刻Ｔｎｃ１から通信遅延ｄｎｃを引いた（前の時刻）Ｔｍｃである。この結果、この図１６の例では、動作開始時刻Ｔｎから通信遅延ｄｎを引いた時刻が最も早いのはＴｍｃであり、送信最終許可時刻ＴｐはＴｍｃとなる。
【００９４】
なお、送信最終許可時刻Ｔｐを経過した後は、送信最終許可時刻Ｔｐに、制御指令演算部１２の制御周期を足した値を新たに送信最終許可時刻Ｔｐとするか、あるいは、周期処理起動時刻管理部１５が更新している周期処理起動時刻に対して（６）式の計算を再度実行して送信最終許可時刻Ｔｐを更新してもよい。
【００９５】
次に、ステップＳ０７１において、送信時刻制御部１３は、制御指令演算部１２に対して制御指令送信時刻の制御が可能となったことを通知する。これを受けて、ステップＳ０７２では、制御指令演算部１２は、制御指令の送信を送信時刻制御部１３に要求する。
【００９６】
送信時刻制御部１３は、ステップＳ０７３において、通信・制御システム上の有意な動作の時刻から送信最終許可時刻の間で、制御指令演算部１２の制御指令送信要求を許可する。ステップＳ０７４では、許可されたタイミングで、制御指令演算部１２は、制御指令を送信部１０に送信する。
【００９７】
上記一連の処理を実行するに当り、ＥｔｈｅｒＣＡＴ（登録商標）で構成する場合のＥｔｈｅｒＣＡＴフレームの構造を図２０に示す。
【００９８】
一般的なＥｔｈｅｒｎｅｔ（登録商標）フレーム２１０は、Ｅｔｈｅｒｎｅｔ（登録商標）ヘッダ２１１、データ領域２１２、データチェック領域ＦＣＳ２１３から構成され、ＥｔｈｅｒＣＡＴの通信内容は、Ｅｔｈｅｒｎｅｔ（登録商標）フレーム２１０のデータ領域２１２に格納される。ＥｔｈｅｒＣＡＴにおける、Ｅｔｈｅｒｎｅｔ（登録商標）ヘッダ２１１のＴｙｐｅフィールドは０ｘ８８Ａ４である。データが正しいかどうかをＦＣＳ（Ｆｒａｍｅ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ）２１３を用いて検査する。
【００９９】
ＥｔｈｅｒＣＡＴ（登録商標）のデータ構造は、ＥｔｈｅｒＣＡＴヘッダ２１４と、ひとつ、または複数のＥｔｈｅｒＣＡＴテレグラム２１５で構成され、ＥｔｈｅｒＣＡＴテレグラム２１５は、テレグラムヘッダ２１６、テレグラムデータ２１７、ワーキングカウンタ２１８（ＷＫＣ）から構成される。ワーキングカウンタ２１８は、そのテレグラムを処理すべきスレーブで正しく処理されるたびに、スレーブによって所定の数だけカウントアップされるフィールドである。
【０１００】
ここで、Ｅｔｈｅｒｎｅｔ（登録商標）ヘッダ２１１、データ領域２１２、ＦＣＳ２１３の合計サイズがＥｔｈｅｒｎｅｔ（登録商標）フレームの最大サイズを越えない限り、各制御装置２１への制御指令は単独あるいは複数のテレグラム２１５として構成される。したがって、ある制御周期内において、制御装置２１の数だけＥｔｈｅｒｎｅｔ（登録商標）フレームが通信制御装置２０から送信されるのではない。可能な限り、複数の制御装置２１への各制御指令は一つのＥｔｈｅｒｎｅｔ（登録商標）フレームに集約される。
【０１０１】
したがって、制御周期は、最も通信遅延が長い制御装置２１までの通信遅延に準じて決定される。具体的には、制御装置２１ごとに制御処理起動時間と通信遅延の和を計算し、その和が最も大きい値が最短制御周期となる。
【０１０２】
次に、本発明を適用した通信制御装置２０のハードウェア構成の一実施形態を図１１に示す。
【０１０３】
ＣＰＵ５０は、不揮発性記憶媒体５４からプログラムをメモリ５３に転送して実行する。実行処理プログラムとしては、ＯＳや、ＯＳ上で動作するアプリケーションプログラムが例示される。
【０１０４】
通信用ＬＳＩ５１は、図１の送信時刻制御部１３、時刻同期部１４、周期処理起動時刻管理部１５、制御処理起動時間収集部１６、通信遅延記憶部１９、周期処理起動時刻記憶部１８、制御処理起動時間記憶部１７に相当する。このうち、通信遅延記憶部１９、周期処理起動時刻記憶部１８、制御処理起動時間記憶部１７は、メモリ５３、あるいは不揮発性媒体５４で実現してもよい。また、時刻同期部１４、周期処理起動時刻管理部１５、制御処理起動時間収集部１６は、ＣＰＵ５０上で動作するソフトウェアとして構成してもよいし、あるいは通信用ＬＳＩ５１、ＣＰＵ５０上で動作するソフトウェアに役割をわけて構成してもよい。例えば、図７に示す時刻同期部１４の動作では、ステップＳ０１０からステップＳ０１９に示す手順はソフトウェアとして実行し、ステップＳ０２０は通信用ＬＳＩ５１が実行することが例示される。
【０１０５】
通信用ＬＳＩ５１は、ＣＰＵ５０上で動作するプログラムから通信要求を受け取り、物理層（ＰＨＹ）５２を用いてネットワーク２２に対して通信する。通信用ＬＳＩ５１の実装例としては、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）、ＣＰＬＤ（Ｃｏｍｐｌｅｘ  Ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ゲートアレイ等のＩＣが例示される。
【０１０６】
物理層（ＰＨＹ）５２は、制御用ネットワーク２２との通信機能を実装した送受信機ＩＣである。物理層（ＰＨＹ）５２の提供する通信規格としてＥｔｈｅｒｎｅｔ（登録商標）のＰＨＹ（物理層）チップが例示される。なお、図１１の構成では、物理層（ＰＨＹ）５２と通信用ＬＳＩ５１が接続しているので、Ｅｔｈｅｒｎｅｔ（登録商標）のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）層の処理は通信用ＬＳＩ５１に含まれる。ただし、ＭＡＣ機能を提供するＩＣを通信用ＬＳＩ５１と物理層（ＰＨＹ）５２間に配置する構成や、ＭＡＣ機能を提供するＩＣと物理層（ＰＨＹ）５２を組み合わせた通信用ＩＣと通信用ＬＳＩ５１を接続する構成においても、本発明の効果は失われるものではない。
【０１０７】
図１１の構成では、物理層（ＰＨＹ）５２が通信用ＬＳＩ５１外にあるため、ＭＡＣ層の該当する通信用ＬＳＩ５１の処理部には、図１の通信部２４に相当する。ただし、通信用ＬＳＩ５１をＭＡＣ層、ＰＨＹ層を含めたＥｔｈｅｒｎｅｔ（登録商標）通信デバイスとしてもよいし、また、ＰＨＹ機能まで含めて通信用ＬＳＩ５１に包含してもよい。
【０１０８】
メモリ５３は、ＣＰＵ５０が動作するための一時的な記憶領域であり、不揮発性記憶媒体５４から転送したＯＳ、アプリケーションプログラム等が格納される。また、構成によって、通信遅延記憶部１９、周期処理起動時刻記憶部１８、制御処理起動時間記憶部１７の機能を備える。
【０１０９】
不揮発性記憶媒体５４は、情報の記憶媒体で、ＣＰＵ５０を動作させるためのプログラムの保存、プログラムの実行結果の保存に利用される。また、構成によって、通信遅延記憶部１９、周期処理起動時刻記憶部１８、制御処理起動時間記憶部１７の機能を備える。
【０１１０】
バス５５は、ＣＰＵ５０、メモリ５３、不揮発性記憶媒体５４、通信用ＬＳＩ５１をそれぞれ接続する。バス５５としては、ＰＣＩ（登録商標）バス、ＩＳＡバス、ＰＣＩ  Ｅｘｐｒｅｓｓ（登録商標）バス、システムバス、メモリバス等が例示される。
【０１１１】
次に、ＣＰＵ５０上で動作するソフトウェア構成を含む本発明のソフトウェア構成を図１２に示す。
【０１１２】
ＯＳ６０は、プログラム管理やハードウェアへのアクセス等の基本機能を提供する。ＯＳ６０は、必ずしも必要ではないが、汎用的なアプリケーションや既存のソフトウェア資産の利用、タスク管理等の基本機能を提供することから、利用されるのが望ましい。また、時間的制約にしたがってタスクスケジューリングを実行可能なリアルタイムＯＳが望ましい。
【０１１３】
デバイスドライバ６１は、ＯＳ６０の提供するハードウェアへのアクセス手段を用いて、バス５５を介して通信用ＬＳＩ５１の公開するデータ領域や動作管理情報、状態情報にアクセスするための機能を提供する。デバイスドライバ６１は、ＯＳ６０の一部であっても構わない。
【０１１４】
ライブラリ６２は、利用頻度の多い関数をまとめたものであり、ＯＳ６０の機能を利用してメモリ管理、タスク管理、入出力、ファイル操作等の基本機能を提供する。具体例として、Ｌｉｎｕｘ（登録商標）で利用されるｇｌｉｂｃが挙げられる。
【０１１５】
ＡＰＩ６３は、ライブラリ６２を介して、デバイスドライバ６１やＯＳ６０の提供する機能を利用するためのソフトウェアインターフェースである。
【０１１６】
アプリケーション６４は、制御対象２１を制御するための制御指令値を演算し、通信用ＬＳＩ５１を用いて通信パケットの送受信を実行するソフトウェアである。
【０１１７】
アプリケーション６４は、図１の制御指令演算部１２に相当する。図１０のステップＳ０７１において、送信時刻制御部１３が制御指令演算部１２に、送信時刻の制御が可能となったことを通知する方法は、割込みを用いてもよいし、通信用ＬＳＩ５１の所定のレジスタに提示してもよい。また、送信時刻制御部１３への動作開始をアプリケーション６４から所定のＡＰＩ６３を用いて指示してもよい。また、ステップＳ０７２で、制御指令演算部１２から送信時刻制御部１３に制御指令の送信を要求する方法は、アプリケーション６４から通信制御用ＬＳＩ５１へ制御指令を転送する方法が例示される。また、時刻同期部１４、周期処理起動時刻管理部１５、制御処理起動時間収集部１６は、アプリケーション６４として構成してもよい。
【０１１８】
以上の発明による効果について説明する。制御処理起動時間管理部３２が、各制御装置２１の制御処理起動時間を収集する。そして、周期処理起動時刻管理部１５が、目標とする通信・制御システムの動作時刻から、その制御処理起動時間を引いた時刻を各制御装置２１に設定する。こうすることで、各制御装置２１は、通信・制御システムの動作時刻を同期させることができる。
【０１１９】
また、通信制御装置２０が、周期処理起動時刻管理部１５の決定した周期処理起動時刻と、時刻同期部１４が計測した通信遅延を考慮して、送信最終許可時刻を決定する。こうすることで、全ての制御装置２１は、同一周期内に、制御指令演算部１２の制御指令を受信することができる。
【０１２０】
また、本発明は、通信制御装置２０が制御装置２１ごとに通信時間を分割する時分割方式とは異なり、時刻同期がなされたネットワーク２２上で制御指令を通信制御装置２０から各制御装置２１に送信するため、制御周期を短くすることができる。制御周期を短くすることによって、通信・制御システムの制御性能を向上させることができる。
【実施例２】
【０１２１】
以上の実施例１の説明においては、ＥｔｈｅｒＣＡＴ（登録商標）を用いて実現する事例について説明したが、同様のことはＩＥＥＥ  １５８８で実施することも可能である。この場合には、図１の時刻同期部１４の時刻同期方式にＩＥＥＥ１５８８を用いて構成することになる。なお、以下の説明に使用する符号は、上記で説明した機能や要素等と同一である場合には特に断りのない限り、同じ符号を付している。
【０１２２】
この場合の制御用計算機２０を用いて構成するシステム例を図１３に示す。バウンダリクロック１２３は、ＩＥＥＥ１５８８で定義される時刻同期機能を備えたネットワークデバイスである。バウンダリクロック１２３は、複数のポートを備え、複数の通信相手と時刻同期をすることができる。
【０１２３】
なお、本発明を適用した通信制御装置２０の機能構成は図１と同様である。また、通信制御装置２０のハードウェア構成は図１１と同様である。また、ＣＰＵ５０上で動作するソフトウェア構成は図１２と同様である。
【０１２４】
図１の時刻同期部１４を、ＩＥＥＥ  １５８８の時刻同期プロトコルにより実現するときの実行手順を図１４に示す。また、図１５にＩＥＥＥ１５８８におけるメッセージのやりとりを示す。
【０１２５】
ＩＥＥＥ  １５８８は、マスタ−スレーブ構成をとるので、図１５では左側にマスタ、右側にスレーブの動きを示し、かつ縦軸方向に時間軸をとって図示している。
【０１２６】
この時刻同期プロトコルは、はじめにマスタから始動し、ステップＳ６０においてスレーブにＳｙｎｃメッセージを送信する。このとき、マスタはＳｙｎｃメッセージの送信時刻ｔ１を記録する（ステップＳ６１）。
【０１２７】
スレーブは、ステップＳ６２でＳｙｎｃメッセージを受信すると、その受信時刻ｔ２を記録する。
【０１２８】
ステップＳ６３において、マスタは次のいずれかの手段でＳｙｎｃメッセージの送信時刻ｔ１をスレーブに通知する。ひとつは、Ｓｙｎｃメッセージにｔ１の情報をのせる方法である。残る手段は、Ｓｙｎｃメッセージに続くＦｏｌｌｏｗ  Ｕｐメッセージにｔ１の情報をのせる方法である。
【０１２９】
スレーブは、Ｓｙｎｃメッセージに続くＦｏｌｌｏｗ  Ｕｐメッセージ受信後に、ステップＳ６４において、マスタに向けてＤｅｌａｙ  Ｒｅｑメッセージを送信する。このとき、スレーブはＤｅｌａｙ  Ｒｅｑメッセージの送信時刻ｔ３を記録する（ステップＳ６５）。
【０１３０】
ステップＳ６６においてマスタは、Ｄｅｌａｙ  Ｒｅｑメッセージを受信すると、その受信時刻ｔ４を記録する。そして、マスタはＤｅｌａｙ  Ｒｅｓｐメッセージにｔ４の情報をのせ、ｔ４をスレーブに通知する（ステップＳ６７）。
【０１３１】
ステップＳ６８において、Ｄｅｌａｙ  Ｒｅｓｐメッセージを受信したスレーブは、それぞれの時刻ｔ１、ｔ２、ｔ３、ｔ４から、マスタ、スレーブ間の通信遅延、時刻の差分を計算する。
【０１３２】
通信遅延の計算には、マスタ、スレーブ間の通信遅延が往復路で等しいという前提がある。したがって、片道の通信遅延ｔｄの計算は、（７）式で表わされる。
【０１３３】
［数７］
ｔｄ＝（（ｔ４−ｔ３）＋（ｔ２−ｔ１））／２  （７）
また、マスタとスレーブの時刻の差分ｔｄｉｆｆは（８）式で表わされる。このｔｄｉｆｆをもって、マスタとスレーブは時刻を同期する。
【０１３４】
［数８］
ｔｄｉｆｆ＝｛（ｔ４−ｔ３）−（ｔ２−ｔ１）｝／２  （８）
図１３の構成では、通信制御装置２０とバウンダリクロック１２３間で図１４の手順を実行し、時刻同期する。バウンダリクロック１２３は、通信ポートによってマスタ、スレーブのいずれにもなりうる。
【０１３５】
図１３の構成で、通信制御装置２０がグランドマスタとする場合について説明する。ＩＥＥＥ  １５８８におけるグランドマスタとは、最終的な時刻同期の基準となる時計をもつデバイスである。通信制御装置２０がマスタとなり、バウンダリクロック１２３ａがスレーブとなって時刻同期する。その後、バウンダリクロック１２３ａがマスタとなって、制御装置２１ａ、バウンダリクロック１２３ｂがそれぞれスレーブとなる。そして、バウンダリクロック１２３ｂがマスタとなって、制御装置２１ｂ、制御装置２１ｃがスレーブとなって、システム全体で時刻同期がなされる。
【０１３６】
時刻同期部１４は、通信・制御システム全体が時刻を同期させた後、各制御装置２１から通信遅延を取得する。この取得方法として、事前に制御装置２１ごとに設定ファイルを定義し、そのなかで通信制御装置２０がアクセス可能な領域を定義し、各制御装置２１の時刻同期部１４が通信遅延をその領域に公開することが例示される。例えば、ＵＤＰ通信による所定のポート番号への接続に対しては通信遅延を返信する方法が考えられる。通信制御装置２０は、制御装置２１ごとの設定ファイルを事前に読み込むことで、時刻同期部１４が公開する通信遅延を知ることができる。あるいは、所定のプロトコルにしたがって各制御装置２１が通信制御装置２０に対して通信遅延を通知してもよい。
【０１３７】
ただし、図１３に示す構成のように、バウンダリクロック１２３やスイッチを利用するネットワークトポロジでは、そのトポロジに応じて通信遅延を計算する必要がある。バウンダリクロックでは一つのリンクでのみ通信遅延を計測する。そのため、通信制御装置２０からバウンダリクロック１２３を経由して、別の制御装置２１に接続する場合は、リンクごとの通信遅延を加算する必要がある。例えば、図１３の場合、通信制御装置２０から制御装置２１ａまでの通信遅延は、通信制御装置２０からバウンダリクロック２３ａまでの遅延と、バウンダリクロック２３ａから制御装置２１ａまでの和を計算する必要がある。
【０１３８】
ただし、この場合、バウンダリクロック内での通信遅延が考慮されない。そのため、より高精度に通信遅延を求める場合は、ＩＥＥＥ  １５８８で定義されるｅｎｄ−ｔｏ−ｅｎｄ  ＴＣ（Ｔｒａｎｓｐａｒｅｎｔ  Ｃｌｏｃｋ）、あるいはｐｅｅｒ−ｔｏ−ｐｅｅｒ  ＴＣ（Ｔｒａｎｓｐａｒｅｎｔ  Ｃｌｏｃｋ）を用いることが望ましい。これらの時計は、デバイス内でのパケットの転送遅延を計測する仕組みが備わっている。
【０１３９】
時刻同期部１４は、通信遅延を取得すると、通信遅延記憶部１９に制御装置２１ごとの通信遅延を記録する。
【０１４０】
図１３に示す構成において制御指令演算部１２は、制御指令をブロードキャスト通信、あるいはマルチキャスト通信で送信する。このとき、各制御装置２１が、自身への制御指令を識別できるように、通信・制御システム内で通信フレームのフォーマットを定義する必要がある。その一例を図２１に示す。
【０１４１】
図２１において、共通ヘッダ２２０は、フレーム全体に関する管理情報を含む。例えば、サブフレーム数やデータ長の合計等である。また、制御装置２１ごとの制御指令をサブフレーム２２１として構成する。サブフレーム２２１は、ヘッダ２２２、データ２２３から構成される。サブフレーム２２１による構成例としては、所定の規則で順序づけられた制御装置２１ごとにサブフレーム２２１を並べる方式や、任意の順番でサブフレーム２２１を並べ、制御装置２１の識別子をヘッダ２２２に含める方式等があげられる。また、データ２２３のデータ長を固定とする構成や可変とする構成が例示される。データ長を可変とする場合は、ヘッダ２２２にデータ長の情報が含まれる。
【０１４２】
あるいは、制御指令演算部１２がブロードキャスト通信やマルチキャスト通信ではなく、個別の制御装置２１ごとに単一の通信フレームを送信するユニキャスト通信で制御指令を通知する方式も考えられる。この場合、通信遅延記憶部１９に記憶される各制御装置２１との通信遅延には、各制御装置２１への制御指令送信を始めるまでの待機時間を含める。また、この待機時間は固定となるように送信時刻制御部１３が調整する。
【０１４３】
以上の発明による効果について説明する。制御処理起動時間管理部３２が、各制御装置２１の制御処理起動時間を収集する。そして、周期処理起動時刻管理部１５が、目標とする通信・制御システムの動作時刻から、その制御処理起動時間を引いた時刻を各制御装置２１に設定する。こうすることで、各制御装置２１は、通信・制御システムの動作時刻を同期させることができる。
【０１４４】
また、通信制御装置２０が、周期処理起動時刻管理部１５の決定した周期処理起動時刻と、時刻同期部１４が計測した通信遅延を考慮して、送信最終許可時刻を決定する。こうすることで、全ての制御装置２１は、同一周期内に、制御指令演算部１２の制御指令を受信することができる。
【０１４５】
また、本発明は、通信制御装置２０が制御装置２１ごとに通信時間を分割する時分割方式とは異なり、時刻同期がなされたネットワーク２２上で制御指令を通信制御装置２０から各制御装置２１に送信するため、制御周期を短くすることができる。制御周期を短くすることができれば、通信・制御システムの制御性能を向上させることができる。
【実施例３】
【０１４６】
次に、制御装置２１側におけるセンサ値受信処理での工夫について説明する。なお、説明に使用する符号は、特に断りのない限り、上記と同一機能のものについて同じ記号を付している。
【０１４７】
この場合のシステム構成例は図３、図４と同様である。また、通信制御装置２０のハードウェア構成は図１１と同様である。また、ＣＰＵ５０上で動作するソフトウェア構成は図１２と同様である。
【０１４８】
制御装置２１の計測情報を取得する場合、図２２に示すように、制御指令Ｄに対する送信メッセージＦに計測情報を載せる方法が考えられる。ここで、Ｔａｎは周期ｎにおける計測情報が更新される時刻である。この場合、通信・制御システムの動作時刻Ｔａ２への制御指令の演算で用いられる計測情報は、動作時刻Ｔａ１以後の情報ではなく、ひとつ前の周期の動作時刻Ｔａ０における計測情報である。したがって、Ｔａ２への制御指令は、１周期古い計測情報による演算値となる。
【０１４９】
ここでは、同一制御周期内での計測情報をもとに制御指令を演算するための本発明の動作について説明する。同一制御周期内での計測情報をもとに制御指令を演算するためには、通信制御装置２０と制御装置２１がともに、工夫改善される必要がある。
【０１５０】
係る観点での改良された通信制御装置２０の機能構成を図２４に示す。図２４の機能構成では、図１の機能構成に対して、新たに計測情報設定処理時間管理部７０、計測情報設定処理時間記憶部７１を含む。なお、図２４に図示していないが、周期処理起動時刻管理部１５、周期処理起動時刻記憶部１８、制御処理起動時間収集部１６、制御処理起動時間記憶部１７が含まれていてもよい。
【０１５１】
ここで、計測情報設定処理時間管理部７０は、各制御装置２１の計測情報設定処理時間を収集し、収集した計測情報設定処理時間を計測情報設定処理時間記憶部７１に登録する。
【０１５２】
計測情報設定処理時間記憶部７１は、計測情報設定処理時間管理部７０が収集した計測情報設定処理時間を記憶する。
【０１５３】
送信時刻制御部７２は、計測情報設定処理時間を考慮して制御指令演算部１２の計測情報取得メッセージの送信時刻を制御する。
【０１５４】
また、通信制御装置２０側での改善に対応して工夫された制御装置２１の機能構成の一実施形態を図２６に示す。図２６の制御装置２１は、計測情報公開部８１を備えており、制御装置２１のセンサ（図示なし）等の計測情報を外部に対して公開する。
【０１５５】
計測情報設定処理時間計測部８０は、通信・制御システム上の有意な動作がなされてから、制御装置２１の計測情報公開部８１に計測情報が設定されるまでの計測情報設定処理時間を取得し、通信制御装置２０に対して公開する。なお、計測情報設定処理時間は、時刻同期部１４によって同期された時刻系において、通信・制御システム上の有意な動作がなされてから、制御装置２１の計測情報公開部８１に計測情報が設定されるまでの時間である。ここでいう「有意な動作」とは制御装置２１に備えられたセンサでの計測像法取得等である。
【０１５６】
計測情報設定処理時間管理部７０が、各制御装置２１の計測情報設定処理時間を収集する手順について図２５により説明する。
【０１５７】
図２５のステップＳ７０では、装置稼動前に、各制御装置２１の計測情報設定処理時間計測部８０に、計測情報設定処理時間を取得しておく。これは、制御装置２１の開発者が設計した値としてもよいし、計測情報設定処理時間を計測する手段を制御装置２１に設けて計測してもよい。このような計測手段には、ＣＰＵ、あるいはマイコンのタイマを用いる方法や、割り込みの入出力が可能な時刻同期部１４を用いる方法が考えられる。
【０１５８】
例えば、制御装置２１が有意な動作をした瞬間に、時刻同期部１４が割り込み出力し、この瞬間にタイマの動作を開始させ、計測情報公開部８１に計測情報が設定された瞬間にタイマを止めれば、計測情報設定処理時間を取得することができる。通信・制御システムを稼働させる前の初期段階で、所定の回数繰り返し、その平均値を計測情報設定処理時間とすることもできる。
【０１５９】
また、本発明では計測情報設定処理時間が一定であることが望ましい。したがって、計測情報設定処理時間に変動がある場合は、それを固定にする処理が必要である。計測情報設定処理時間を固定にする処理として、タイマ等の機能を用いて、計測情報公開部８１が待機することが例示される。
【０１６０】
図２５のステップＳ７０における以上の対応は、装置稼動前の事前準備段階で行われるものである。あるいは、装置稼働時に任意のタイミングで計測情報設定処理時間計測部８０に計測情報設定処理時間を取得させてもよい。
【０１６１】
次に、各制御装置２１の計測情報設定処理時間計測部８０は、ステップＳ７１において、取得した計測情報設定処理時間を通信装置２０に対して公開する。この公開方法として、事前に制御装置２１の開発者が各制御装置２１用の設定ファイルを定義し、そのなかで通信制御装置２０がアクセス可能な領域を定義し、各制御装置２１の計測情報設定処理時間計測部８０が制御処理起動時間をその領域に公開することが例示される。例えば、ＵＤＰ通信による所定のポート番号への接続に対しては計測情報設定処理時間を返信する方法が考えられる。通信制御装置２０は、各制御装置２１の設定ファイルを事前に読み込むことで、計測情報設定処理時間計測部８０が公開する計測情報設定処理時間の領域を知ることができる。あるいは、所定のプロトコルにしたがって各制御装置２１が通信制御装置２０に対して計測情報設定処理時間を通知してもよい。
【０１６２】
そして、ステップＳ７２において、計測情報設定処理時間管理部７０は、各制御装置２１の計測情報設定処理時間計測部８０と通信し、計測情報設定処理時間を取得する。なお、各制御装置２１の計測情報設定処理時間を通信制御装置２０に収集する方法は、通信・制御システムの非可動時に通信・制御システムの利用者が通信制御装置２０に入力してもよい。
【０１６３】
ステップＳ７３において、各制御装置２１の計測情報設定処理時間を取得した計測情報設定処理時間管理部７０は、計測情報設定処理時間記憶部７１に制御装置２１ごとの計測情報設定処理時間を記録する。
【０１６４】
送信時刻制御部７２においては、以上の情報に基づいて、送信開始許可時刻を求める。ここで、ｎを制御装置２１の識別子として、求める送信開始許可時刻をＴｐｓとすると、Ｔｐｓを（９）式で計算する。
【０１６５】
［数９］
Ｔｐｓ＝ｍａｘ（Ｔｓ−ｄｎ）        （９）
ここで、Ｔｓは通信・制御システムにおける有意な動作時刻から各制御装置２１の計測情報設定処理時間が経過した時刻、ｄｎは通信制御装置２０と各制御装置２１間の通信遅延、ｍａｘ演算は、各制御装置２１に対する計算結果のなかで最も遅い時刻を得る式とする。（９）式は、制御装置２１ごとの、計測情報公開部８１が計測情報を更新した時刻から通信遅延を引いた時刻が最も遅い時刻を求めている。
【０１６６】
送信開始許可時刻、計測情報が計測情報公開部８１に設定された時刻、通信遅延の具体例を図２３に示す。ここで用いる記号について説明すると、まず
Ｔａｓｉは、周期ｉにおいて通信・制御システムとしての有意な動作時刻を示しており、サフィックスｉは、１と２の例を示している。Ｔｓｊｉは、周期ｉにおけるｊ番目の制御装置２１の計測情報が計測情報公開部８１に設定された時刻を示しており、サフィックスｊは、ａ、ｂ、ｃの３台の例を示している。ｄｎｊは、ｊ番目の制御装置２１の通信遅延、Ｔｒｊは、ｊ番目の制御装置２１のＴｓｊ１からｄｎｊを引いた時刻を示す。
【０１６７】
図２３の例の場合には、制御装置２１ａ、２１ｂ、２１ｃのそれぞれの計測情報が計測情報公開部８１に設定された時刻が、Ｔｓａ１、Ｔｓｂ１、Ｔｓｃ１であったとする。また、制御装置２１ａ、２１ｂ、２１ｃのそれぞれの通信遅延ｄｎは、ｄｎａ、ｄｎｂ、ｄｎｃであったとする。このことから、計測情報が計測情報公開部８１に設定された時刻Ｔｓｊ１から通信遅延ｄｎを引いた時刻を求めると、制御装置２１ａでは動作開始時刻Ｔｓａ１から通信遅延ｄｎａを引いた（前の時刻）Ｔｒａであり、制御装置２１ｂでは動作開始時刻Ｔｓｂ１から通信遅延ｄｎｂを引いた（前の時刻）Ｔｒｂであり、制御装置２１ｃでは動作開始時刻Ｔｓｃ１から通信遅延ｄｎｃを引いた（前の時刻）Ｔｒｃである。この結果、この図２３の例では、計測情報が計測情報公開部８１に設定された時刻Ｔｎから通信遅延ｄｎを引いた時刻が最も遅いのはＴｒａであり、送信開始許可時刻ＴｐｓはＴｒａとなる。
【０１６８】
なお、Ｔｐｓを経過した後は、Ｔｐｓに、制御指令演算部１２の制御周期を足した値を新たにＴｐｓとするか、あるいは、（９）式の計算を再度実行してＴｐｓを更新してもよい。
【０１６９】
送信時刻制御部７２は、Ｔｐｓ以降に、制御指令演算部１２の計測情報取得メッセージの送信を許可する。なお、同一制御周期内での送信終了時刻を検討する。送信終了時刻の制限は、計測情報が最も早く更新される時刻より前に計測情報取得メッセージを通知することである。送信終了時刻をＴｐｌとすると、Ｔｐｌは次式で求められる。
【０１７０】
［数１０］
Ｔｐｌ＝ｍｉｎ（Ｔｓ−ｄｎ）        （１０）
したがって、送信時刻制御部７２は、Ｔｐｓ以降、Ｔｐｌ以前に計測情報取得メッセージを送信する必要がある。
【０１７１】
本発明を用いた制御指令演算部１２の計測情報取得メッセージの送信時刻と、制御指令メッセージの送信時刻の関係を図２７に示す。Ｔｐｒは、通信制御装置２０における計測情報取得メッセージの受信時刻である。制御指令演算部１２はＴｐｓ以降に計測情報取得メッセージを送信し、その受信データをもとに制御演算を実行し、ＴｐあるいはＴｐｌのうち、早い方の時間までに制御指令メッセージを送信することで、同一制御周期内での計測情報から指令値を演算することができる（図２７では、Ｔｐの方がＴｐｌより早いとする）。こうすることで通信・制御システムの制御性能を向上させることができる。なお、Ｔｐｓ、Ｔｐ、制御周期は、制御演算時間Ｃが通信・制御システムに課せられた最低時間を満足するように設計される必要がある。
【実施例４】
【０１７２】
図２８は、図１と比較して、通信制御装置２０の機能構成に推奨接続構成提示部９０を追加したものである。ここで使用する符号は、特に断りのない限り、上記説明で説明した機能や要素等と同一である。
【０１７３】
本発明を適用した制御用計算機２０を用いて構成するシステム例は図３、図４と同様である。また、通信制御装置２０のハードウェア構成は図１１と同様である。また、ＣＰＵ５０上で動作するソフトウェア構成は図１２と同様である。
【０１７４】
図２８の機能構成では、図１の機能構成に対して、推奨接続構成提示部９０を含む構成が異なるが、この機能を備える理由を下記する。
【０１７５】
全ての制御装置２１が同一制御周期内に通信制御装置２０からの制御指令を受信するという目的のもとでは、本発明を適用する通信・制御システムの最短制御周期は、通信制御装置ごとの通信遅延と、制御処理起動時間の合計が最大である時間に制約される。このうち、通信遅延は、通信制御装置２０からのリンク数に比例する。
【０１７６】
したがって、通信・制御システムがネットワーク２２の接続構成の変更を許可するのであれば、推奨接続を変更することで通信・制御システムの最短制御周期を短くできる可能性がある。推奨構成提示部９０は、制御処理起動時間記憶部１７に記録された制御処理時間、通信遅延記憶部１９に記録された通信遅延、時刻同期部１４が管理するネットワーク２２の接続構成情報をもとに、ネットワーク２２の接続構成を変更することによって最短制御周期を短くできる場合は、それを提示する。
【０１７７】
提示する手段は、モニタへのＧＵＩ表示やファイルへの提示情報の書込み等が挙げられる。
【０１７８】
推奨構成提示部９０が提示する接続構成を決定するアルゴリズムにはいくつかの方法が考えられる。例えば、単純に制御処理起動時間が長い制御装置２１から順番に、通信制御装置２０に隣接するように接続する構成である。あるいは、現在の接続構成の各位置に各制御装置２１を配置する全組み合わせの通信遅延と制御処理起動時間の和の最大値を計算し、その最大値が最も小さくなる接続構成を求める方法が例示される。
【０１７９】
また、通信経路が分岐している制御装置２１の配置によっても通信遅延は異なる。例えば、図４の接続構成では、制御装置２１ｄに通信フレームが達する前に制御装置２１ａから制御装置２１ｃ間を往復している。この場合は、制御装置２１ａ〜ｅをライントポロジで構成した方が通信遅延は短くなる。よって、通信経路が分岐する制御装置２１が存在する場合にライントポロジでの接続構成を提示することも例示される。
【産業上の利用可能性】
【０１８０】
本発明は、同期作業を必要とする分野として、製造装置などに広く適用可能である。
【符号の説明】
【０１８１】
１０：送信部
１１：受信部
１２：制御指令演算部
１３：送信時刻制御部
１４：時刻同期部
１５：周期処理起動時刻管理部
１６：制御処理起動時間収集部
１７：制御処理起動時間記憶部
１８：周期処理起動時刻記憶部
１９：通信遅延記憶部
２０：通信制御装置
２１：制御装置
２２：ネットワーク
２３：バウンダリクロック
２４：通信部
３１：制御処理実行部
３２：制御処理起動時間管理部
３３：周期処理起動部
４０：ＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ
４１：スレーブＩＣ
５０：ＣＰＵ
５１：通信用ＬＳＩ
５２：ＰＨＹ
５３：メモリ
５４：不揮発性記憶媒体
５５：バス
６０：ＯＳ
６１：デバイスドライバ
６２：ライブラリ
６３：ＡＰＩ
６４：アプリケーション
７０：計測情報設定処理時間管理部
７１：計測情報設定処理時間記憶部
８０：計測情報設定処理時間計測部
８１：計測情報公開部
９０：推奨接続構成提示部
２１０：Ｅｔｈｅｒｎｅｔ（登録商標）フレーム
２１：Ｅｔｈｅｒｎｅｔ（登録商標）ヘッダ
２２：データ領域
２１３：Ｆｒａｍｅ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ
２１４：ＥｔｈｅｒＣＡＴヘッダ
２１５：テレグラム
２１６：テレグラムヘッダ
２１７：テレグラムデータ
２１８：ワーキングカウンタ
２２０：共通ヘッダ
２２１：サブフレーム
２２２：ヘッダ
２２３：データ
【図１】
0005184597.tif 000002
【図２】
0005184597.tif 000003
【図３】
0005184597.tif 000004
【図４】
0005184597.tif 000005
【図５】
0005184597.tif 000006
【図６】
0005184597.tif 000007
【図７】
0005184597.tif 000008
【図８】
0005184597.tif 000009
【図９】
0005184597.tif 000010
【図１０】
0005184597.tif 000011
【図１１】
0005184597.tif 000012
【図１２】
0005184597.tif 000013
【図１３】
0005184597.tif 000014
【図１４】
0005184597.tif 000015
【図１５】
0005184597.tif 000016
【図１６】
0005184597.tif 000017
【図１７】
0005184597.tif 000018
【図１８】
0005184597.tif 000019
【図１９】
0005184597.tif 000020
【図２０】
0005184597.tif 000021
【図２１】
0005184597.tif 000022
【図２２】
0005184597.tif 000023
【図２３】
0005184597.tif 000024
【図２４】
0005184597.tif 000025
【図２５】
0005184597.tif 000026
【図２６】
0005184597.tif 000027
【図２７】
0005184597.tif 000028
【図２８】
0005184597.tif 000029