(57)【特許請求の範囲】
【請求項１】
他装置との間でパケットを送受信する通信処理部と、
前記通信処理部が送受信するパケットのデータを処理するＣＰＵと、
前記通信処理部が他装置から受信したパケットを対象として前記ＣＰＵがデータ処理を開始するための割込信号を前記ＣＰＵに通知する割込制御部とを備えており、
前記ＣＰＵがパケットを作成し、前記通信処理部が作成されたパケットを他装置に送信する工程を第１工程とし、
前記通信処理部が、前記第１工程で送信してから他装置を経由したパケットを受信する工程を第２工程とし、
前記通信処理部が、前記第２工程で受信したパケットのデータを前記ＣＰＵに転送する工程を第３工程とし、
前記割込制御部は、前記第１工程から前記第３工程までのうちの任意の時点を割込待ち時間の開始時刻となる起算契機として定義し、その定義した前記起算契機から前記割込待ち時間だけ経過した時点で前記割込信号を生成することとし、
前記割込待ち時間は、前記起算契機の時点以降の前記第１工程から前記第３工程までの各工程に要する時間の総和である起算後工程時間から、生成された前記割込信号が前記割込制御部から前記ＣＰＵに通知され、そのＣＰＵがパケットのデータ処理を起動するまでの割込遅延時間だけ引いた時間とすることを特徴とする
通信制御装置。
【請求項２】
前記割込制御部は、前記任意の時点から選択された前記他装置と同期した時刻に基づいた任意の時刻を、割込待ち時間の開始時刻となる起算契機として定義することを特徴とする
請求項１に記載の通信制御装置。
【請求項３】
前記割込制御部は、前記任意の時点から選択された前記第１工程の開始時点を、割込待ち時間の開始時刻となる起算契機として定義することを特徴とする
請求項１に記載の通信制御装置。
【請求項４】
前記割込制御部は、前記第１工程の開始時点を前記起算契機としたときの前記起算後工程時間の計算に用いたパケットサイズがパケットを受信するまでに変更されたときには、前記起算契機を前記第２工程の開始時点に変更するとともに、その変更後の前記起算契機をもとに前記割込待ち時間を再計算することを特徴とする
請求項３に記載の通信制御装置。
【請求項５】
他装置との間でパケットを送受信する通信処理部と、
前記通信処理部が送受信するパケットのデータを処理するＣＰＵと、
前記通信処理部が他装置から受信したパケットを対象として前記ＣＰＵがデータ処理を開始するための割込信号を前記ＣＰＵに通知する割込制御部とを備えており、
前記ＣＰＵがパケットを作成し、前記通信処理部が作成されたパケットを他装置に送信する工程を第１工程とし、
前記通信処理部が、前記第１工程で送信してから他装置を経由したパケットを受信する工程を第２工程とし、
前記通信処理部が、前記第２工程で受信したパケットのデータを前記ＣＰＵに転送する工程を第３工程とし、
前記割込制御部は、前記第１工程から前記第３工程までのうちの前記第２工程の開始時点を割込待ち時間の開始時刻となる起算契機として定義し、その定義した前記起算契機から前記割込待ち時間だけ経過した時点で前記割込信号を生成することとし、
前記割込待ち時間は、前記起算契機の時点以降の前記第１工程から前記第３工程までの各工程に要する時間の総和である起算後工程時間から、生成された前記割込信号が前記割込制御部から前記ＣＰＵに通知され、そのＣＰＵがパケットのデータ処理を起動するまでの割込遅延時間だけ引いた時間とすることを特徴とする
通信制御装置。
【請求項６】
前記割込制御部は、前記第２工程の開始時点を前記起算契機としたときの前記起算後工程時間が前記割込遅延時間よりも短い場合には、前記起算契機をパケットを前記第１工程の開始時点に変更するとともに、その変更後の前記起算契機をもとに前記割込待ち時間を再計算することを特徴とする
請求項５に記載の通信制御装置。
【請求項７】
他装置との間でパケットを送受信する通信処理部と、
前記通信処理部が送受信するパケットのデータを処理するＣＰＵと、
前記通信処理部が他装置から受信したパケットを対象として前記ＣＰＵがデータ処理を開始するための割込信号を前記ＣＰＵに通知する割込制御部とを備えており、
前記ＣＰＵがパケットを作成し、前記通信処理部が作成されたパケットを他装置に送信する工程を第１工程とし、
前記通信処理部が、前記第１工程で送信してから他装置を経由したパケットを受信する工程を第２工程とし、
前記通信処理部が、前記第２工程で受信したパケットのデータを前記ＣＰＵに転送する工程を第３工程とし、
前記割込制御部は、前記第１工程から前記第３工程までのうちのパケットの処理状況とは関係なくあらかじめ登録されている所定時刻を割込待ち時間の開始時刻となる起算契機として定義し、その定義した前記起算契機から前記割込待ち時間だけ経過した時点で前記割込信号を生成することとし、
前記割込待ち時間は、前記起算契機の時点以降の前記第１工程から前記第３工程までの各工程に要する時間の総和である起算後工程時間から、生成された前記割込信号が前記割込制御部から前記ＣＰＵに通知され、そのＣＰＵがパケットのデータ処理を起動するまでの割込遅延時間だけ引いた時間とすることを特徴とする
通信制御装置。
【請求項８】
他装置との間でパケットを送受信する通信処理部と、
前記通信処理部が送受信するパケットのデータを処理するＣＰＵと、
前記通信処理部が他装置から受信したパケットを対象として前記ＣＰＵがデータ処理を開始するための割込信号を前記ＣＰＵに通知する割込制御部とを備えており、
前記ＣＰＵがパケットを作成し、前記通信処理部が作成されたパケットを他装置に送信する工程を第１工程とし、
前記通信処理部が、前記第１工程で送信してから他装置を経由したパケットを受信する工程を第２工程とし、
前記通信処理部が、前記第２工程で受信したパケットのデータを前記ＣＰＵに転送する工程を第３工程とし、
前記割込制御部は、前記第１工程から前記第３工程までのうちの前記パケットに関する異常が発生した時刻を割込待ち時間の開始時刻となる起算契機として定義し、その定義した前記起算契機から前記割込待ち時間だけ経過した時点で前記割込信号を生成することとし、
前記割込待ち時間は、前記起算契機の時点以降の前記第１工程から前記第３工程までの各工程に要する時間の総和である起算後工程時間から、生成された前記割込信号が前記割込制御部から前記ＣＰＵに通知され、そのＣＰＵがパケットのデータ処理を起動するまでの割込遅延時間だけ引いた時間とすることを特徴とする
通信制御装置。
【請求項９】
他装置との間でパケットを送受信する通信処理部と、
前記通信処理部が送受信するパケットのデータを処理するＣＰＵと、
前記通信処理部が他装置から受信したパケットを対象として前記ＣＰＵがデータ処理を開始するための割込信号を前記ＣＰＵに通知する割込制御部とを備えており、
前記ＣＰＵがパケットを作成し、前記通信処理部が作成されたパケットを他装置に送信する工程を第１工程とし、
前記通信処理部が、前記第１工程で送信してから他装置を経由したパケットを受信する工程を第２工程とし、
前記通信処理部が、前記第２工程で受信したパケットのデータを前記ＣＰＵに転送する工程を第３工程とし、
前記割込制御部は、前記第１工程から前記第３工程までのうちの任意の時点を割込待ち時間の開始時刻となる起算契機として定義し、その定義した前記起算契機から前記割込待ち時間だけ経過した時点で前記割込信号を生成することとし、
前記割込待ち時間は、前記起算契機の時点以降の前記第１工程から前記第３工程までの各工程に要する時間の総和である起算後工程時間から、生成された前記割込信号が前記割込制御部から前記ＣＰＵに通知され、そのＣＰＵがパケットのデータ処理を起動するまでの割込遅延時間だけ引いた時間とすることとし、
前記通信処理部は、前記第２工程が終了したことを示すフラグデータをメモリに書き出し、
前記ＣＰＵは、前記割込制御部から前記割込信号が通知されたことに加えて、前記フラグデータを読み込んだときに受信したパケットのデータ処理を開始することを特徴とする
通信制御装置。
【請求項１０】
前記ＣＰＵは、前記割込制御部から前記割込信号が通知されたものの、前記フラグデータを読み込めないときには、ポーリングにより前記フラグデータの有無を監視することを特徴とする
請求項９に記載の通信制御装置。
【請求項１１】
他装置との間でパケットを送受信する通信処理部と、
前記通信処理部が送受信するパケットのデータを処理するＣＰＵと、
前記通信処理部が他装置から受信したパケットを対象として前記ＣＰＵがデータ処理を開始するための割込信号を前記ＣＰＵに通知する割込制御部とを備えており、
前記ＣＰＵがパケットを作成し、前記通信処理部が作成されたパケットを他装置に送信する工程を第１工程とし、
前記通信処理部が、前記第１工程で送信してから他装置を経由したパケットを受信する工程を第２工程とし、
前記通信処理部が、前記第２工程で受信したパケットのデータを前記ＣＰＵに転送する工程を第３工程とし、
前記割込制御部は、前記第１工程から前記第３工程までのうちの任意の時点を割込待ち時間の開始時刻となる起算契機として定義し、その定義した前記起算契機から前記割込待ち時間だけ経過した時点で前記割込信号を生成することとし、
前記割込制御部は、複数のパケットを連続して送信するときには、それらのパケットのうちの所定数のパケットごとに前記起算契機を定義し、
前記割込待ち時間は、前記起算契機の時点以降の前記第１工程から前記第３工程までの各工程に要する時間の総和である起算後工程時間から、生成された前記割込信号が前記割込制御部から前記ＣＰＵに通知され、そのＣＰＵがパケットのデータ処理を起動するまでの割込遅延時間だけ引いた時間とすることを特徴とする
通信制御装置。
【請求項１２】
前記割込制御部は、前記割込待ち時間を設定可能であること、または前記ＣＰＵがパケットのデータ処理を起動した際に受信データの転送が完了しているかどうかを画面表示することを特徴とする
請求項１に記載の通信制御装置。
【請求項１３】
他装置との間でパケットを送受信する通信処理部と、
前記通信処理部が送受信するパケットのデータを処理するＣＰＵと、
前記通信処理部が他装置から受信したパケットを対象として前記ＣＰＵがデータ処理を開始するための割込信号を前記ＣＰＵに通知する割込制御部とを備える通信制御装置により実行され、
前記ＣＰＵがパケットを作成し、前記通信処理部が作成されたパケットを他装置に送信する工程を第１工程とし、
前記通信処理部が、前記第１工程で送信してから他装置を経由したパケットを受信する工程を第２工程とし、
前記通信処理部が、前記第２工程で受信したパケットのデータを前記ＣＰＵに転送する工程を第３工程とし、
前記割込制御部は、前記第１工程から前記第３工程までのうちの任意の時点を割込待ち時間の開始時刻となる起算契機として定義し、その定義した前記起算契機から前記割込待ち時間だけ経過した時点で前記割込信号を生成することとし、
前記割込待ち時間は、前記起算契機の時点以降の前記第１工程から前記第３工程までの各工程に要する時間の総和である起算後工程時間から、生成された前記割込信号が前記割込制御部から前記ＣＰＵに通知され、そのＣＰＵがパケットのデータ処理を起動するまでの割込遅延時間だけ引いた時間とすることを特徴とする
通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信制御装置、および、通信制御方法に関する。
【背景技術】
【０００２】
複数のノード間で共有するデータをメモリに転写し、ＣＰＵ（Central Processing Unit）がその転写されたデータを処理するような制御システムが存在する。しかし、ＣＰＵの処理周期とメモリ転写周期とは性能が異なっているため、メモリ上へのデータ転写の完了を待ってから、ＣＰＵが処理を開始するような無駄な待ち時間が発生してしまう。
【０００３】
そこで、特許文献１には、メモリ転写処理の完了をＣＰＵに割り込みにより通知し、ＣＰＵはその割り込みを契機に次の制御プログラムや次の処理を実行するシステムが記載されている。これにより、メモリ転写後に起動するプログラムを高速に実行することができる。また、ＣＰＵは割り込みが発生するまでは、他の演算処理を実行することで、処理効率を高めることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−３４１０３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１のような割り込みを前提としたＣＰＵの起動システムを高速化するために、ＣＰＵなどの計算機資源やネットワークデバイスを高性能化するなどのコストをかける方法が考えられる。しかし、高性能なデバイスであっても、割り込み処理に関するオーバーヘッド（無駄な時間）が発生してしまう。例えば、割込信号を生成する通信ＬＳＩ（Large-Scale Integration）からＣＰＵまでの割込信号の転送時間が、オーバーヘッドの一例である。
【０００６】
よって、特許文献１のようにメモリ上へのデータ転写の完了を待ってから、ＣＰＵに対して割り込みを開始すると、オーバーヘッド時間がそのまま余分な待ち時間となってしまう。換言すると、特許文献１の手法では、制御装置内のオーバーヘッド時間が考慮されていない。
【０００７】
そこで、本発明は、処理可能なデータの用意ができてからＣＰＵが処理を開始するまでのタイムラグを短縮化することを、主な課題とする。
【課題を解決するための手段】
【０００８】
前記課題を解決するために、本発明の通信制御装置は、
他装置との間でパケットを送受信する通信処理部と、
前記通信処理部が送受信するパケットのデータを処理するＣＰＵと、
前記通信処理部が他装置から受信したパケットを対象として前記ＣＰＵがデータ処理を開始するための割込信号を前記ＣＰＵに通知する割込制御部とを備えており、
前記ＣＰＵがパケットを作成し、前記通信処理部が作成されたパケットを他装置に送信する工程を第１工程とし、
前記通信処理部が、前記第１工程で送信してから他装置を経由したパケットを受信する工程を第２工程とし、
前記通信処理部が、前記第２工程で受信したパケットのデータを前記ＣＰＵに転送する工程を第３工程とし、
前記割込制御部が、前記第１工程から前記第３工程までのうちの任意の時点を割込待ち時間の開始時刻となる起算契機として定義し、その定義した前記起算契機から前記割込待ち時間だけ経過した時点で前記割込信号を生成することとし、
前記割込待ち時間が、前記起算契機の時点以降の前記第１工程から前記第３工程までの各工程に要する時間の総和である起算後工程時間から、生成された前記割込信号が前記割込制御部から前記ＣＰＵに通知され、そのＣＰＵがパケットのデータ処理を起動するまでの割込遅延時間だけ引いた時間とすることを特徴とする。
その他の手段は、後記する。
【発明の効果】
【０００９】
本発明によれば、処理可能なデータの用意ができてからＣＰＵが処理を開始するまでのタイムラグを短縮化することができる。
【図面の簡単な説明】
【００１０】
【図１】図１（ａ）は、リングネットワークの通信システムの構成図である。図１（ｂ）は、ツリーネットワークの通信システムの構成図である。
【図２】本発明の一実施形態に関する図１の通信システムで転送されるパケットのフォーマットを示す図である。
【図３】図３（ａ）は、通信システムのマスタ装置の構成図である。図３（ｂ）は、マスタ装置の通信制御部の構成図である。
【図４】本発明の一実施形態に関する通信制御部のパケット処理を示すフローチャートである。
【図５】図５（ａ）は、送信データのバス転送を割込待ち時間Ｔｓの起算契機としたときのタイムチャートである。図５（ｂ）は、同期時刻を割込待ち時間Ｔｓの起算契機としたときのタイムチャートである。
【図６】本発明の一実施形態に関する抽出データのバス転送処理を割込待ち時間Ｔｓの起算契機としたときのタイムチャートである。
【図７】図７（ａ）は、ストア＆フォワード方式でパケット転送をするときのタイムチャートである。図７（ｂ）は、カットスルー方式でパケット転送をするときのタイムチャートである。
【図８】本発明の一実施形態に関する通信制御部の割込制御処理を示すフローチャートである。
【図９】本発明の一実施形態に関する図８の割込制御処理に対して異常割込処理を追加したフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明の一実施形態を、図面を参照して詳細に説明する。
【００１２】
図１（ａ）は、リングネットワークの通信システムの構成図である。
通信システムは、マスタ装置（通信制御装置）１とスレーブ装置２とが制御ネットワーク９で接続されて構成される。
マスタ装置１が送信するパケットは、各スレーブ装置２に対して右回りで順番に到達し、前のスレーブ装置２は後のスレーブ装置２へとパケットを転送する。スレーブ装置２は、転送されてくるパケットに対して、必要に応じてデータアクセスしてもよいし、自身と関係ないパケットであれば、データアクセスをせずに転送してもよい。そして、パケットが一巡することで、マスタ装置１へとパケットが戻ってくる。
【００１３】
このパケットには、マスタ装置１が生成した情報（制御指令、管理情報など）だけでなく、途中のスレーブ装置２が追記した情報（計測情報、管理情報など）も含まれる。このスレーブ装置２の追記処理により、パケットのデータサイズが途中で増えることもある。マスタ装置１は、自身が送信したパケットが一巡して戻ってきたとき、その受信パケットに再度アクセスすることで、途中のスレーブ装置２が追記した計測情報などを読み取る。そのため、マスタ装置１はパケットの送信時だけでなく、パケットの受信時にもパケット処理を起動する。
【００１４】
ここで、マスタ装置１はパケットの到着を常時監視すると、その監視の負荷によりＣＰＵの処理能力が他の処理に使えなくなってしまう。よって、マスタ装置１はパケットの到着時に自装置内で発行される「割込信号」をもとに、パケット処理を起動する。本実施形態の主な特徴は、マスタ装置１のＣＰＵの待ち時間がなるべく少なくなるように、割込信号の発行時期を最適化したところである。
【００１５】
マスタ装置１は、産業分野、ＦＡ（Factory automation）、半導体製造装置、制御用装置、コントローラ、ＰＬＣ（Programmable Logic Controller）、電力系統におけるＩＥＤ（Intelligent Electronic Device）、保護制御装置、車載システムのＥＣＵなどに適用可能である。
スレーブ装置２として、産業制御機器、車載ＥＣＵ（Engine Control Unit）、変電所監視制御システムを構成する保護制御装置、ＩＥＤ（Intelligent Electronic Device）、ＭＵ（Merging Unit）、サーボコントローラ、サーボアンプ、サーボモータなどが例示される。サーボモータは、産業用製造装置（ロボットアーム、チップマウンタ、工作機械テーブルなど）を動作させる。
【００１６】
図１（ｂ）は、ツリーネットワークの通信システムの構成図である。図１（ａ）との違いとして、ネットワークトポロジをツリー状にし、かつ、装置間を接続する中継装置３を追加している。
中継装置３は、制御ネットワーク９を構成し、マスタ装置１、スレーブ装置２、中継装置３から通信されるパケットを他の装置に対して転送する機能を有する。中継装置３として、ネットワークスイッチ、ルータ、ハブ、リピータ、ゲートウェイ、ＳＤＮ（Software Defined Network）におけるパケット・経路制御を書き換え可能なスイッチなどが挙げられる。
【００１７】
さらに、図１（ｂ）では、マスタ装置１の各種処理に必要なパラメータを送信する管理装置８も追加している。管理装置８は、マスタ装置１などから通信システムの最新のシステム構成（例えば、特定装置に障害が発生していないか）の通知を受け、前記の必要なパラメータを作成する。
なお、管理装置８は、単独の機器、装置とは限らず、複数の機器、装置で構成してもよい。管理装置８の実装として、ＰＣ、サーバ、ワークステーション、クラウド、ＳＡＡＳ（Software as a Service）、ＳＣＡＤＡなどによる構成が例示される。
また、管理装置８は、他装置（マスタ装置１、スレーブ装置２、中継装置３）と通信し、その通信相手の設定や状態を監視するためのＨＭＩ（Human Machine Interface）機能、ＳＣＡＤＡ（Supervisory Control and Data Acquisition）の機能、ＤＣＳ（Distributed Control System）の機能、ストレージサーバの機能を有していてもよい。
【００１８】
制御ネットワーク９は、ＩＥＥＥ  ８０２．３、各種産業用ネットワーク、ＩＥＣ  ６１７８４、ＩＥＣ  ６１１５８、電力分野における監視制御通信プロトコルＩＥＣ  ６１８５０、ＩＥＣ  ６２４３９、車載ネットワークにおけるＩＥＥＥ  ８０２．１  ＡＶＢ（Audio Video Bridging）、ＣＡＮ（Controller Area Network：登録商標)、ＤｅｖｉｃｅＮｅｔ、ＲＳ−２３２Ｃ、ＲＳ−４２２、ＲＳ−４８５などが例示される。また、制御ネットワーク９において、通信パケットの優先度を高くしてもよいし、所定時間帯、または通信帯域を確保、予約してもよい。
【００１９】
また、制御ネットワーク９は、高信頼化のため、冗長化されることがある。冗長化の方式は通信経路を冗長に構成し、障害時の冗長化した経路の利用方法は、ＩＥＥＥ８０２．１７のＲＰＲ（Resilient Packet Ring）などの障害発生時に冗長経路を利用する方式と、ＩＥＣ６２４３９−３におけるＨＳＲ（High availability Seamless Redundancy）、ＰＲＰ（Parallel Redundancy Protocol）などの冗長経路を常時用いる方式がある。
ＩＥＥＥ８０２．１７は、障害復帰時間が０ではないが、効率よくネットワーク回線の帯域を利用できる。一方、ＰＲＰとＨＳＲは、常時、冗長経路を利用するため、通信帯域の利用効率は下がるが、障害復帰時間が０である。障害復帰時間が０であるため、ＰＲＰ、ＨＳＲは制御システムに適している。ＲＰＲ、ＨＳＲは、ネットワークを構成するノードがリングトポロジを構成するリングネットワークである。
【００２０】
そこで、図１（ａ）では、制御ネットワーク９として、ＩＥＣ  ６２４３９−３のＨＳＲに定義される冗長化のリングネットワークを例示している。このネットワークでは、マスタ装置１から同じパケットが複製され、右回りと左回りとで別々に送信される。パケットの宛先となるスレーブ装置２において、片方の複製パケットが処理されると、そのパケットは転送されず、マスタ装置１にパケットが戻ってくることはない。そのため、何らかの異常がスレーブ装置２に発生した場合には、複製パケットはマスタ装置１へ周回して戻ってくる。これにより、マスタ装置１はスレーブ装置２に異常が発生したと判定できる。
【００２１】
以上、図１で説明した各装置の台数は図示した台数に限定されず、０台も含めて任意の台数でもよい（例えば、中継装置３を用いないで制御ネットワーク９を構成する場合）。また、マスタ装置１とスレーブ装置２を区別して説明するが、あるパケットについてのマスタ装置１が別のパケットについてのスレーブ装置２として機能してもよい。つまり、１台の装置が、マスタ装置１とスレーブ装置２との両方の機能を有していてもよい。
【００２２】
図２は、図１の通信システムで転送されるパケットのフォーマットを示す図である。
１つのパケットは、先頭から順に、イーサヘッダ、データ領域、トレイラが含まれる。
１つのデータ領域には、１つの共通ヘッダと、１つ以上のデータグラムとが含まれる。
１つのデータグラムには、ヘッダ、データ、トレイラが含まれる。
【００２３】
図３（ａ）は、通信システムのマスタ装置１の構成図である。マスタ装置１は、ＣＰＵ１１と、通信制御部１２と、メモリ１４と、不揮発性記憶媒体１５とがバス１６で接続される。また、通信制御部１２の先にはＰＨＹ１３が接続されており、そのＰＨＹ１３を介して他装置（スレーブ装置２）と通信が行われる。
ＣＰＵ１１は、不揮発性記憶媒体１５からプログラムをメモリ１４に転送して実行する。実行処理プログラムとしては、オペレーティングシステム（以下、ＯＳと称す）やＯＳ上で動作するアプリケーションプログラムが例示される。ＣＰＵ１１は、マルチコアＣＰＵ、メニーコアＣＰＵを用いてもよい。
【００２４】
通信制御部１２は、ＣＰＵ１１上で動作するソフトウェアから送信要求、送信データを受け取り、ＰＨＹ１３を用いて制御ネットワーク９に対して送信する。また、制御ネットワーク９から受信したデータを、バス１６を介してＣＰＵ１１、メモリ１４、不揮発性記憶媒体１５へ転送する。通信制御部１２の実装例としては、ＦＰＧＡ、ＣＰＬＤ、ＡＳＩＣ、ゲートアレイなどのＩＣが例示される。あるいは、ＣＰＵ１１と一体化して構成されてもよい。通信制御部１２をＭＡＣ層、ＰＨＹ層を含めたＩＥＥＥ  ８０２．３通信デバイスとしてもよいし、また、ＰＨＹ機能まで含めて通信制御部１２に包含してもよい。この場合、通信制御部１２の実装例としては、ＩＥＥＥ  ８０２．３規格のＭＡＣ（Media Access Control）チップ、ＰＨＹ（物理層）チップ、ＭＡＣとＰＨＹの複合チップを含む。なお、通信制御部１２は、ＣＰＵ１１や、コンピュータ内部の情報経路を制御するチップセットに含まれていてもよい。
【００２５】
ＰＨＹ１３は、制御ネットワーク９との通信機能を実装した送受信機ＩＣである。ＰＨＹ１３の提供する通信規格としてＩＥＥＥ  ８０２．３のＰＨＹ（物理層）チップが例示される。なお、図示した構成では、ＰＨＹ１３と通信制御部１２が接続されているので、ＩＥＥＥ  ８０２．３のＭＡＣ（Media Access Control）層の処理は通信制御部１２に含まれる。ただし、ＭＡＣ機能を提供するＩＣを通信制御部１２とＰＨＹ１３間に配置する構成や、ＭＡＣ機能を提供するＩＣとＰＨＹ１３を組み合わせた通信用ＩＣと通信制御部１２を接続する構成にしてもよい。
【００２６】
メモリ１４は、ＣＰＵ１１が動作するための一時的な記憶領域であり、不揮発性記憶媒体１５から転送したＯＳ、アプリケーションプログラムなどが格納される。メモリ１４として、スタティックＲＡＭ、ＤＲＡＭ、ＮＶＲＡＭなどが挙げられる。
不揮発性記憶媒体１５は、情報の記憶媒体で、ＯＳ、アプリケーション、デバイスドライバなどや、ＣＰＵ１１を動作させるためのプログラムの保存、プログラムの実行結果の保存に利用される。不揮発性記憶媒体１５として、ハードディスクドライブ（ＨＤＤ）やソリッドステートドライブ（ＳＳＤ）、フラッシュメモリが例示される。また、取り外しが容易な外部記憶媒体として、フロッピー（登録商標）ディスク（ＦＤ）、ＣＤ、ＤＶＤ、ブルーレイ（登録商標）、ＵＳＢメモリ、コンパクトフラッシュ（登録商標）などの利用が例示される。
【００２７】
バス１６は、ＣＰＵ１１、通信制御部１２、メモリ１４、不揮発性記憶媒体１５をそれぞれ接続する。バス１６を流れるバス信号は、通信制御部１２と、バス１６に接続する他のデバイス（ＣＰＵ１１、メモリ１４、不揮発性記憶媒体１５など）との通信を可能とする。通信するデータは、制御指令や計測データ、あるいは通信制御部１２の設定や状態情報が例示される。バス１６としては、ＰＣＩバス、ＩＳＡバス、ＰＣＩ  Ｅｘｐｒｅｓｓバス、システムバス、メモリバス、オンチップバスなどが例示される。
なお、マスタ装置１のハードウェア構成は、ＣＰＵ１１、通信制御部１２、ＰＨＹ１３、メモリ１４、不揮発性記憶媒体１５のいずれか、または複数を一体化したＩＣ、ＣＰＵ、ＳｏＣ（System on Chip）  ＦＰＧＡを用いてもよい。
【００２８】
なお、マスタ装置１の各処理時間、通信遅延は確定的でジッタが少ないことが望ましい。例えば、ＣＰＵ１１上で動作するソフトウェアにおいて、割込信号の優先度を高く設定し、他の割込と割込処理の影響を受けないように構成することが例示される。バス１６上の転送においても、送信データ、受信データの転送時はバスを最優先に利用できるように設定することや、所定のバス帯域、時間帯を確保、予約する構成が例示される。
また、通信制御部１２の各機能部（図３（ｂ）で後記）においても、確定的に処理する構成（例えば、データサイズにより、処理時間が一意に決定される）が望ましい。スレーブ装置２、中継装置３においても、通信処理時間、転送時間が確定的（データサイズにより、一意に決定される）であることが望ましい。
【００２９】
図３（ｂ）は、マスタ装置１の通信制御部１２の構成図である。
通信制御部１２は、パケット通信に関する処理部（バス接続部３０と、通信処理部３１と、送信部３２と、受信部３３と、時刻同期制御部３８）と、割込信号に関する処理部（起算契機検知部３４と、割込制御部３５と、計時部４１）と、記憶部（処理時間情報記憶部３６と、ネットワーク情報記憶部３７）とを含めて構成される。
【００３０】
バス接続部３０は、マスタ装置１のハードウェア構成において、バス１６と接続する。バス接続部３０は、バス１６の通信仕様に応じて、ＣＰＵ１１やメモリ１４と通信する。通信制御部１２内においては、バス１６から転送された通信データを通信処理部３１と送受信する。通信制御部１２に関する制御情報、状態情報を保持し、バス１６を通じてＣＰＵ１１から設定され、またはＣＰＵ１１へ提示する。
【００３１】
通信処理部３１は、通信データの生成、抽出や通信データの転送または転送タイミングの制御などの通信処理を実行する。バス接続部３０と通信するデータの形式は、アプリケーションデータのみの形式でもよい。この場合、通信処理部３１において、送信時は制御ネットワーク９の通信プロトコルにしたがうようにヘッダなどを付与してもよいし、受信時は受信パケットから通信プロトコルのヘッダなどを取り除いてもよい。あるいは制御ネットワーク９のプロトコルにしたがったパケット形式でバス接続部３０と通信してもよい。
【００３２】
通信データの転送タイミングは、バス接続部３０からデータを転送されて、所定の処理（ヘッダ付与など）実行後に送信部３２へ転送してもよいし、時刻同期制御部３８が通知する所定のタイミングまで待機してから、送信部３２へデータを転送してもよい。この場合、ヘッダ付与などの処理は、バス接続部３０からデータ転送後に実行してもよいし、時刻同期制御部３８からのタイミング通知後に実行してもよい。なお、時刻同期制御部３８からの所定タイミングの通知は、制御システム内で同期した時刻に基づくが、そのような同期した時刻ではなく、通信制御部１２内の時刻に基づいて、データ転送を開始してもよい。
【００３３】
上記の説明は、主に送信処理を対象としたが、受信処理でも同様である。すなわち、受信部３３から転送されたデータをバス接続部３０へ転送する場合である。
また、ＰＨＹ１３が複数ある場合やバス１６に接続するデバイス（ＣＰＵ１１やメモリ１４、その他ＩＣ）に転送する場合の宛先を制御してもよい。例えば、通信データに宛先を示す情報（バス１６上のアドレス、ＰＨＹ１３の指定）を付加し、その情報に基づいて制御してもよい。
【００３４】
送信部３２は、通信制御部１２における送信機能部であり、マスタ装置１から制御ネットワーク９に対してパケットを送信する。なお、通信制御部１２、ＰＨＹ１３のいずれか、または複数で構成してもよい。
受信部３３は、通信制御部１２における受信機能部であり、制御ネットワーク９から送信されたパケットを受信する。なお、通信制御部１２、ＰＨＹ１３のいずれか、または複数で構成してもよい。
【００３５】
起算契機検知部３４は、通信制御部１２内の「起算契機」の発生を検知して、割込制御部３５へ通知する（起算契機の発生を検知するための他の機能部との論理的接続関係は図示なし）。
起算契機とは、割込制御部３５からＣＰＵ１１に通知される割込信号の割込発生時刻t_s2（図５）までの割込待ち時間Ｔｓの開始時刻（起算時刻t_s1）となる事象（イベント）である。以下、起算契機を例示する。
起算契機（１）パケットの送信開始
起算契機（２）パケットの受信開始
起算契機（３）パケットの送受信とは関係ない所定時刻。例えば、他装置との間で同期処理が発生した時刻や、他装置とは関係なく１時間ごとなどの予め設定した時刻など。
起算契機（４）パケットに関する処理で異常が発生したとき
【００３６】
ここで、起算契機（１）または（２）は、各機能部（通信処理部３１、送信部３２、受信部３３）ごとの起算契機を識別可能としてもよい。例えば、通信処理部３１が送信パケットの生成を開始した時刻と、送信部３２が通信処理部３１から通知された送信パケットの送信を開始した時刻とを、別々の起算契機としてもよい。
【００３７】
そして、起算契機（１）として、１つの通信パケットを対象としてもよいし、連続して送る複数のパケットを対象としてもよい。例えば、複数のパケットのうちの最後のパケットに係る処理（送信、受信）を起算契機としてもよいし、所定個数ごと（例えば５個のパケットごと）のパケットに係る処理を起算契機としてもよい。
このとき、計時部４１には複数の割込待ち時間Ｔｓを設定され、それぞれの時間経過毎に割込制御部３５へ時間経過を通知する。また、ＣＰＵ１１上で動作するソフトウェアから通信制御部１２への送信設定方法において、起算契機とするかどうかで異なる設定方法（送信開始要求、受信要求）を有することで、通信処理部３１はソフトウェアが指定したパケットに対して起算契機を選択することができる。
【００３８】
あるいは、起算契機＝（１）において、周期通信がなされる制御システムで複数回の周期通信後にまとめて受信データを用いたい場合は、起算後工程時間Ｔｃに複数周期分を加算してもよい。
（起算後工程時間Ｔｃ）＝（１周期目での起算契機から演算処理開始までの時間）＋（周期数−１）×（一つの周期の長さ）
【００３９】
また、起算契機（３）の同期時刻について、例えば、スレーブ装置２が同期時刻に通信パケットをマスタ装置１に送信する場合や、スレーブ装置２において何らかのセンサ情報を計測してマスタ装置１に送信する場合を想定している。さらに、割込発生時刻t_s2を同期時刻として指定し、その同期時刻経過後すぐに割込信号を生成してもよい。あるいは、以下の各時刻を同期時刻としてもよい。
・送信データのバス転送処理（図４のＳ１０１）の開始時刻
・パケット生成処理（図４のＳ１０２）の開始時刻
・パケット送信処理（図４のＳ１０３）の開始時刻
また、マスタ装置１内の処理に基づいてタイミングを制御する場合を想定し、同期時刻ではなくマスタ装置１自身の時刻の所定時刻経過を起算契機としてもよい。
【００４０】
割込制御部３５は、処理時間情報記憶部３６、ネットワーク情報記憶部３７からの情報に基づいて、起算契機検知部３４が起算契機を検知した後に割込信号を生成する。割込信号は、割込制御部３５から起算契機の発生を通知する信号である。割込信号は、バス１６の規格に含まれていてもよい。割込信号は、特に制御通信ソフトウェアを実行するＣＰＵ１１に対して割込を通知する。
なお、処理時間情報記憶部３６、ネットワーク情報記憶部３７、割込制御部３５による通信処理時間、通信遅延、経過時間の算出はマスタ装置１の通信制御部１２で実現する構成を説明したが、別の装置で実現してもよい。
【００４１】
処理時間情報記憶部３６は、割込制御部３５の割込生成に必要なマスタ装置１内の処理時間を保持する。そのような処理時間として、ＣＰＵ１１の処理性能（ＯＳ、アプリケーション含む）や処理時間、バス１６、メモリ１４のデータ転送性能、転送データのサイズと関連する情報（プロトコルに関連する情報）、通信制御部１２内の各機能の通信処理性能が例示される。例示のとおり、処理時間情報記憶部３６は所定の通信処理時間だけでなく、通信処理時間の算出に必要な情報（処理性能、転送性能、データサイズなど）でもよい。
【００４２】
ネットワーク情報記憶部３７は、割込制御部３５の割込生成に必要な制御ネットワーク９、スレーブ装置２、中継装置３の処理時間、転送遅延を保持する。そのような処理時間、転送遅延として、制御ネットワーク９の転送遅延、通信スループット、トポロジ情報、スレーブ装置２の接続台数、スレーブ装置２に関する情報（処理時間、処理性能など）、制御ネットワーク９に中継装置３があればその情報（転送遅延、処理性能など）が例示される。例示のとおり、ネットワーク情報記憶部３７は所定の通信処理時間だけでなく、通信処理時間の算出に必要な情報（装置台数、トポロジなど）でもよい。
以上の算出または計測した通信処理時間、あるいは途中の計算結果、算出、計測に用いる情報は処理時間情報記憶部３６、ネットワーク情報記憶部３７のいずれか、または両方に保持、記憶することが例示される。
【００４３】
時刻同期制御部３８は、所定の時刻同期プロトコルにしたがって、制御ネットワーク９を構成するマスタ装置１、スレーブ装置２の時刻を同期する。時刻同期プロトコルとしては、ＩＥＥＥ  １５８８やＮＴＰ（Network Time Protocol）、ＳＮＴＰ（Simple Network Time Protocol）が挙げられる。同期する時刻は、協定世界時のように世界共通の絶対時刻でも構わないし、制御システム内で共通の時刻でもよい。
【００４４】
時刻同期制御部３８は、ＣＰＵ１１上のソフトウェアで実現してもよいし（この場合、時刻誤差情報、通信遅延を時刻同期制御部３８で保持してもよい）、通信制御部１２をＬＳＩ（ＦＰＧＡ、ＣＰＬＤ含む）で構成した場合のハードウェア論理として実現してもよい。あるいはＣＰＵ１１上のソフトウェアと通信制御部１２の両方で構成してもよい。この場合は、時刻同期用パケットの送信タイミング、受信タイミングの計測機能、あるいは時刻同期用パケットの生成を通信制御部１２で処理することが例示される。
【００４５】
計時部４１は、所定時間の経過を計測して、割込制御部３５に通知するタイマである。時間経過を計測できれば、絶対時刻や相対時刻を示す時計でもよいし、単位時間毎にカウントアップまたはカウントダウンするカウンタでもよい。また、時刻そのものや時間の進み方を時刻同期制御部３８によって制御されてもよい。他の実装として専用のタイマデバイスや、ハードウェアクロック、あるいはＣＰＵ１１上で動作するソフトウェアによるソフトウェアクロックが例示される。
【００４６】
図４は、通信制御部１２のパケット処理を示すフローチャートである。このフローチャートでは、各処理ステップにおいて、その処理内容（例えばＳ１０１の「送信データのバス転送」）に加え、その処理に要する時間（例えばＳ１０１の「時間＝Ｔｂｓ」）を併記している。なお、各処理に要する時間は、条件（データサイズなど）と、マスタ装置１の各構成要素の性能や仕様（例えば制御ネットワーク９の通信スループット、通信制御部１２内のオンチップバスの転送スループットなど）から、パケットの送信前に事前計算される。
【００４７】
Ｓ１０１は、ＣＰＵ１１が送信データを作成し、その送信データをバス１６を介して通信処理部３１に転送する処理である。この処理時間（送信データバス転送時間Ｔｂｓ）は、以下の式で計算される。
（送信データバス転送時間Ｔｂｓ）＝（送信データのサイズ）／（バス１６の転送スループット）＋（オーバーヘッド時間）
なお、オーバーヘッド時間は、バス通信プロトコルに基づく処理時間であり、例えば、バス調停によるバスの利用権を獲得するまでの時間や、データサイズに依存しないオーバーヘッドである。オーバーヘッド時間を０としてもよい。
【００４８】
Ｓ１０２は、図２のパケットフォーマットに従って、通信処理部３１がＳ１０１の送信データ（１つ以上のサブデータ）を含む送信パケットを生成する処理である。この処理時間（パケット生成時間Ｔｄｓ）は、以下の式で計算される。
（パケット生成時間Ｔｄｓ）＝（各サブデータの生成時間）の総和＋（オーバーヘッド時間）
（各サブデータの生成時間）＝（各サブデータのサイズ）／（通信処理部３１の処理スループット）＋（各サブデータのオーバーヘッド）
Ｓ１０３は、通信処理部３１（送信部３２）がＳ１０２の送信パケットを制御ネットワーク９を介してスレーブ装置２に送信する処理である。この処理時間（パケット送信時間Ｔｐｓ）は、後記の図７で示すように、ストア＆フォワード方式やカットスルー方式などの転送方式によって異なり、またパケットサイズにも依存する。
【００４９】
Ｓ１１０は、通信処理部３１（受信部３３）がＳ１０３の送信パケットが一巡して受信パケットとして戻ってくるのを待つ処理である。この待ち時間（ネットワーク転送時間Ｔｎ）は、パケットの経路上の各デバイスが要する時間の総和であり、以下の式で計算される。
（ネットワーク転送時間Ｔｎ）＝（通信ケーブルの通過時間）の総和＋（通過する各中継装置３内の転送遅延）の総和＋（通過する各スレーブ装置２内の転送遅延）の総和＋（オーバーヘッド時間）
【００５０】
Ｓ１１１は、通信処理部３１（受信部３３）が（Ｓ１１０，Ｙｅｓ）で到着した受信パケットをメモリ１４内に受信する処理である。この処理時間（パケット受信時間Ｔｐｒ）もＳ１０３のパケット送信時間Ｔｐｓと同様に、後記の図７で示すように、ストア＆フォワード方式やカットスルー方式などの転送方式によって異なる。
Ｓ１１２は、図２のパケットフォーマットに従って、通信処理部３１がＳ１１１の受信パケットから受信データを抽出する時間である。この待ち時間（受信データ抽出時間Ｔｄｒ）もＳ１０２のパケット生成時間Ｔｄｓと同様に、パケットを構成する複数のサブデータから計算できる。なお、ＣＰＵ１１がＳ１０２およびＳ１１２の少なくとも１つの処理を実行してもよい。
Ｓ１１３は、通信処理部３１がＳ１１２で抽出した受信データをバス１６を介してＣＰＵ１１に転送する処理である。この処理時間（受信データバス転送時間Ｔｂｒ）もＳ１０１の送信データバス転送時間Ｔｂｓと同様に、データサイズとバス転送スループットとから算出することができる。
【００５１】
Ｓ１１４は、ＣＰＵ１１がＳ１１３の受信データを対象とした演算処理であり、演算時間Ｔｐで実行される。この演算処理は、受信データに基づく制御指令値の演算や、操作者のＨＭＩによる指令値入力の取得などの時間であるが、例えば、スレーブ装置２がパケットに計測データを追記したときには、その計測データが異常値か否かを判定し、異常値の計測データが発生したときには、その旨をアラート出力する処理を含む。
【００５２】
以上、各処理ステップとその所要時間について説明した。一方、マスタ装置１を実際に動作させて（試験用パケットまたは実データパケットをもとにしたベンチマーク処理）、各所要時間の実測値を取得してもよい。このような場合、通信制御部１２とＣＰＵ１１上で動作するソフトウェアを含む、マスタ装置１のハードウェア、ソフトウェアあるいは制御ネットワーク９に接続するスレーブ装置２、中継装置３のいずれか、または複数に計時機構をもうけて計測してもよい。
ＣＰＵ１１上で動作するソフトウェアと、通信制御部１２の計時機構が同期していない場合は、該ソフトウェアで起算契機が発生した場合に、通信制御部１２に計時指令を出し、通信制御部１２内で計時してもよい。
これらの計測は、制御システム稼働前の事前に試験計測してもよいし、制御システム稼働中に計測した時間を利用してもよい。計測を複数回繰り返して、計測値が複数の場合は、最悪値を利用してもよいし、平均値や所定の統計処理を適用した値を用いてもよい。また、計測値にばらつきがある場合は、所定のはずれ値を除いた値を対象に最悪値や統計処理した値を用いてもよい。
【００５３】
図５（ａ）は、送信データのバス転送を割込待ち時間Ｔｓの起算契機としたときのタイムチャートである。パケットに関する各工程に要する時間（先頭から順にＴｂｓ、Ｔｄｓ、Ｔｐｓ、Ｔｎ、Ｔｐｒ、Ｔｄｒ、Ｔｂｒ）は、図４のフローチャートで説明した通りである。ここで、送信データバス転送時間Ｔｂｓの開始時刻をパケット発生時刻t_p1とし、受信データバス転送時間Ｔｂｒの終了時刻（≒演算時間Ｔｐの開始時刻）をパケット演算時刻t_p2とする。
【００５４】
さらに、図５（ａ）では、起算後工程時間Ｔｃ、割込待ち時間Ｔｓ、割込遅延時間Ｔｉを定義する。
割込遅延時間Ｔｉは、割込制御部３５が割り込みを生成してから、ＣＰＵ１１上で動作する演算時間Ｔｐの演算処理が起動するまでの遅延時間である。
（割込遅延時間Ｔｉ）＝（通信制御部１２からＣＰＵ１１へ割込を通知するためにかかる時間）＋（ＣＰＵ１１が割込を受けてから、割込に対応するソフトウェアを起動するまでの時間）＋（一連の割込処理にかかるオーバーヘッド）
なお、第１項〜第３項のうちの第１項または第２項を省略してもよく、第３項を省略してもよい。
【００５５】
起算後工程時間Ｔｃは、起算契機の発生時刻（＝起算時刻t_s1）以後、パケット演算時刻t_p2までのパケット処理の各工程時間の総和である。
図５（ａ）では、起算契機として、（１）送信開始（送信データバス転送時間Ｔｂｓの開始時刻）の場合を例示しており、起算後工程時間Ｔｃは以下の式で計算される。
（起算後工程時間Ｔｃ）＝（Ｔｂｓ＋Ｔｄｓ＋Ｔｐｓ＋Ｔｎ＋Ｔｐｒ＋Ｔｄｒ＋Ｔｂｒ）
図５（ｂ）では、起算契機として、（３）同期時刻の場合を例示しており、起算後工程時間Ｔｃは以下の式で計算される。
（起算後工程時間Ｔｃ）＝（Ｔｎｂ＋Ｔｐｒ＋Ｔｄｒ＋Ｔｂｒ）
なお、Ｔｎｂとはネットワーク転送時間Ｔｎのうちの起算契機の発生後の残り時間である。
【００５６】
割込待ち時間Ｔｓは、起算時刻t_s1から割込信号を発生させる時刻（＝割込発生時刻t_s2）までの時間である。
（割込待ち時間Ｔｓ）＝（起算後工程時間Ｔｃ）−（割込遅延時間Ｔｉ）＋（マージン）
マージンは、０でも正の値でも負の値でもよい。ここで、割込待ち時間Ｔｓを起算後工程時間Ｔｃよりも割込遅延時間Ｔｉの分だけ前倒しにすることで、割込発生時刻t_s2に発生させた割込信号がＣＰＵ１１に届いて演算処理を起動させるタイミングを、受信データバス転送時間Ｔｂｒの終了時刻（受信データの処理準備が整う時刻）に近づけることができ、無駄な待ち時間を最小化できる。
【００５７】
さらに、図５以外の起算契機でも同様に起算後工程時間Ｔｃを計算できる。例えば、起算契機＝（２）受信開始の場合、起算時刻t_s1＝パケット受信時間Ｔｐｒの開始時刻なので、起算後工程時間Ｔｃ＝（Ｔｐｒ＋Ｔｄｒ＋Ｔｂｒ）である。
【００５８】
図６は、抽出データのバス転送処理を割込待ち時間Ｔｓの起算契機としたときのタイムチャートである。起算時刻t_s1＝受信データバス転送時間Ｔｂｒの開始時刻とする。
なお、図５では「起算後工程時間Ｔｃ＞割込遅延時間Ｔｉ」であったが、図６では「起算後工程時間Ｔｃ＜割込遅延時間Ｔｉ」である。よって、図５と同じ計算式を用いたときには、図６では、割込待ち時間Ｔｓが負の値となってしまう。
そこで、割込待ち時間Ｔｓ＝０とし、起算契機が発生した瞬間に割込信号を生成することとする。このとき、受信データバス転送時間Ｔｂｒの終了時刻t_p2よりも、割込遅延時間Ｔｉを経て割込信号がＣＰＵ１１で受け付けるパケット演算時刻t_p3が遅いため、その待ち時間Ｔｗが発生してしまう。
【００５９】
以上、図５，図６のタイムチャートを参照して、起算契機のちがいによる割込待ち時間Ｔｓのちがいについて説明した。
図５（ａ）のように割込待ち時間Ｔｓを長くしすぎると、その待ち時間に発生した予期せぬ変化（パケットサイズの変更）などにより、割込発生時刻t_s2の精度が落ちてしまうこともある。
図６のように割込待ち時間Ｔｓを短くしすぎると、割込遅延時間Ｔｉによる無駄な待ち時間が発生してしまう。
よって、割込待ち時間Ｔｓの長さを割込遅延時間Ｔｉよりも長くしつつ、あまり長すぎないように起算契機を選択することが望ましい。例えば、図５（ａ）の例では、割込遅延時間Ｔｉよりも長い工程の時間は「Ｔｄｒ＋Ｔｂｒ」なので、受信データ抽出時間Ｔｄｒの開始時刻を起算契機とすればよい。
【００６０】
さらに、設定画面において管理者に設定させた「割込遅延時間Ｔｉ’」を、実際の「割込遅延時間Ｔｉ」の代わりに用いてもよい。
・（割込遅延時間Ｔｉ’）＞（割込遅延時間Ｔｉ）の場合は、割込待ち時間Ｔｓが実際より短くなることで割込発生時刻t_s2が早めになる。よって、受信データの転送完了後からＣＰＵ１１が起動するまでの空白時間を減らすことができる。
・（割込遅延時間Ｔｉ’）＜（割込遅延時間Ｔｉ）の場合は、割込待ち時間Ｔｓが実際より長くなることで割込発生時刻t_s2が遅めになる。よって、ＣＰＵ１１がソフトウェアを起動した際には、受信データ転送完了の情報が示されているなど、受信データの転送が完了されていることが期待され、すぐに受信データの処理を開始できる。
【００６１】
以上説明したように、ソフトウェアが起動した際に受信データの転送が完了しているかどうかを設定画面のＧＵＩなどで確認できるようにすることで、管理者は起算契機の変更や設定の変更といった対応をとることができる。
対応の一例として、管理者は、設定画面の中継装置３やスレーブ装置２の台数を入力する手段を介して、各装置の台数を実際よりも多く設定したり、少なく設定したりすることで、それらの各装置の転送に要するネットワーク転送時間Ｔｎを柔軟に変更できる。
【００６２】
図７（ａ）は、ストア＆フォワード方式でパケット転送をするときのタイムチャートである。
マスタ装置１の通信処理部３１からスレーブ装置２に向けて送信されるパケットのデータは、各スレーブ装置２内で一度全てバッファリングしてから（パケット全体を受信し終えてから）、次のスレーブ装置２へと送信（転送）される。そのため、ネットワーク転送時間Ｔｎとして、パケットのデータサイズに依存する処理時間がかかる。
【００６３】
図７（ｂ）は、カットスルー方式でパケット転送をするときのタイムチャートである。
スレーブ装置２は、前の装置から受信したパケットについて、データの宛先が判明した時点で次の装置へとデータ転送を開始する。そのため、以下に示すように、パケットサイズに依存する処理時間は、パケット送信時間Ｔｐｓとパケット受信時間Ｔｐｒのどちらか一方のみに含まれ、他方は固定オーバーヘッドとなる。
（パケット送信時間Ｔｐｓ）＝（通信処理部３１の通信処理における固定オーバーヘッド）
（パケット受信時間Ｔｐｒ）＝（パケットサイズ）／（制御ネットワーク９の転送スループット）＋（オーバーヘッド時間）
なお、送信部３２や受信部３３の処理時間は、Ｔｐｓの固定オーバーヘッドと、Ｔｐｒのオーバーヘッド時間に含まれている。
（ネットワーク転送時間Ｔｎ）＝（通過する各スレーブ装置２の固定オーバーヘッド）の総和
【００６４】
図８は、通信制御部１２の割込制御処理を示すフローチャートである。この割込制御処理は、図４の転送処理と並列に実行される。
Ｓ２０１として、割込制御部３５は、図３（ｂ）の起算契機検知部３４で説明したように、割込信号の割込待ち時間Ｔｓの開始時刻となる起算契機を決定する。
【００６５】
Ｓ２０２として、割込制御部３５は、図５で説明したように、Ｓ２０１で決定した起算契機をもとに、その起算後工程時間Ｔｃと割込遅延時間Ｔｉとから割込待ち時間Ｔｓを決定する。
なお、Ｓ２０１，Ｓ２０２の計算を行う回数は１回でもよいし、２回以上（再計算）としてもよい。再計算された場合は、前回の計算結果を破棄して、今回の再計算された結果をもとに再度図８の処理を最初から実行すればよい。
【００６６】
再計算する契機としては、例えば、図６のように「起算後工程時間Ｔｃ＜割込遅延時間Ｔｉ」となるとき、毎回の演算処理（Ｓ１１４）の後、データサイズの変化などによりネットワーク転送時間Ｔｎが当初の見積もりから変化したとき（変化の度合いが所定のしきい値を超えた場合）などが挙げられる。
例えば、割込制御部３５は、送信サイズが小さいものとしてパケット送信時（Ｓ１０３）を起算契機とした後、スレーブ装置２がデータを付加することでパケットサイズが増加したときには、そのパケットのパケット受信時（Ｓ１１１）を新たな起算契機として、割込待ち時間Ｔｓを再計算すればよい。
または、起算契機をパケット受信（Ｓ１１１）の開始としていたが、ＣＰＵ１１上で動作するソフトウェアの負荷が高まる場合や、優先度の高い割込が追加されるなどして、割込遅延時間Ｔｉが長くなり、「起算後工程時間Ｔｃ＜割込遅延時間Ｔｉ」となった場合は、起算契機をパケット送信（Ｓ１０３）の開始に変更してもよい。
【００６７】
このように起算契機を動的に変更してもよい。起算契機を変更する場合は、割込待ち時間Ｔｓを起算契機ごとに処理時間情報記憶部３６、割込制御部３５のいずれか、または複数に保持し、ＣＰＵ１１上で動作するソフトウェアに通知する。また、起算契機の設定手段をＣＰＵ１１上で動作するソフトウェアが用意してもよい。これにより、状況にあわせてソフトウェアは任意の起算契機を選択することができる。
【００６８】
Ｓ２０３として、割込制御部３５は、起算契機検知部３４にＳ２０１の起算契機を設定し、計時部４１にＳ２０２の割込待ち時間Ｔｓを設定する。
Ｓ２１０として、割込制御部３５は、起算契機検知部３４に設定された起算契機が発生するまで待機する。
Ｓ２１１として、割込制御部３５は、起算契機が発生した後に、計時部４１に対してＳ２０３で設定した割込待ち時間Ｔｓ分のタイマ（計時）を開始する。なお、Ｓ２０３の計時部４１に対する割込待ち時間Ｔｓの設定処理は、Ｓ２１０の処理の後でもよい。このようにすれば、起算契機発生後に、処理時間に影響する状況が確定する場合に対応することができる。
Ｓ２１２として、割込制御部３５は、計時部４１に設定された割込待ち時間Ｔｓが経過するまで待機する。
Ｓ２１３として、割込制御部３５は、割込信号を生成し、割込信号の伝送路を活性化し、その伝送路を介して割込信号をＣＰＵ１１に通知する。
【００６９】
図９は、図８の割込制御処理に対して異常割込処理（Ｓ２１０ｂ，Ｓ２１０ｃ，Ｓ２１３ｂ）を追加したフローチャートである。これにより、起算契機＝（４）処理異常にも対処できる。
Ｓ２１０ｂとして、起算契機の発生後（Ｓ２１０，Ｙｅｓ）の異常を起算契機検知部３４または割込制御部３５が検出すると（Ｓ２１０ｂ，Ｙｅｓ）、その異常を割込制御部３５に通知して、処理をＳ２１３ｂへと進める。なお、受信データ抽出（Ｓ１１２）または抽出データのバス転送（Ｓ１１３）以降を起算契機とすれば、パケット全体を受信し終えているため、例えば、ＩＥＥＥ  ８０２．３のＣＲＣ（Cyclic Redundancy Check）の確認によって、パケットの異常（データ化け、データの欠損など）を判定することができる。
【００７０】
なお、前記のＣＲＣ異常の他に、検出対象の異常を以下に例示する。
・図２に例示したような制御ネットワーク９のプロトコルに、パケットのデータフォーマットがしたがっていないこと
・所定の時間経過してもマスタ装置１がパケットを受信しないタイムアウト異常
・スレーブ装置２、中継装置３が異常を検出してマスタ装置１へ通知した異常
【００７１】
Ｓ２１０ｃも、Ｓ２１０ｂと同様に異常を検出する処理であるが、割込待ち時間Ｔｓのタイマ開始（Ｓ２１１）の後でも異常を検出する。
そして、Ｓ２１３ｂとして、Ｓ２１０ｂまたはＳ２１０ｃで検出された異常を通知された割込制御部３５は、Ｓ２１３の通常の割込信号を割込発生時刻t_s2に生成する代わりに、割込待ち時間Ｔｓを待たずに直ちに異常が発生したことを示す割込信号を生成する。この割込信号を受けたＣＰＵ１１は、パケット演算時刻t_p2にパケット処理を起動する必要がなくなる。なお、正常な受信データのみを必要とし、特に異常発生時に対応する必要がない場合は、Ｓ２１３ｂの割込信号を発生させなくともよい。
【００７２】
あるいは、Ｓ２１０ｂまたはＳ２１０ｃの異常発生時点を起算契機（４）としてもよい。この場合、異常パケット（パケットを受信している異常の場合）をＣＰＵ１１（実行されるソフトウェア）に転送して異常要因を解析することができる。あわせて、起算契機検知部３４が異常と判定した結果や関連情報をパケットデータに付加してもよいし、あるいは起算契機検知部３４自身が、その情報を保持してＣＰＵ１１上で動作するソフトウェアに開示してもよい。
【００７３】
以上説明した本実施形態によれば、割込待ち時間Ｔｓを計算するときに、あらかじめ割込遅延時間Ｔｉの分だけ引き算して割込発生時刻t_s2を前倒しにすることで、パケット演算時刻t_p2を受信データバス転送時間Ｔｂｒの終了時刻に近づけることができる。よって、パケットが処理可能な状態になっても割込信号の発生前でＣＰＵ１１が起動していない状態（割込信号の発生遅れ）や、パケットが処理可能な状態にならないうちにＣＰＵ１１が割込信号で起動してしまった状態（割込信号の早すぎる発生）を減らすことができる。
【００７４】
これにより、高速周期通信、演算処理時間の増加、高速な応答処理が可能である。また、異常発生時は余計な割込みを発生させることなく、計算機資源を有効に活用できる。
さらに、管理装置８は、割込み生成タイミングに必要な情報の保持や情報の算出を実行することで、柔軟なシステム構成や、システム構成の変更に応じて、本発明を最適に継続して実現、提供させることができる。
【００７５】
なお、前記の説明ではＣＰＵ１１が起動する条件として、割込信号を受信したことだけを記載したが、割込信号を受信したことに加えて、さらに別の条件を満たすときとしてもよい。以下、別の条件の一例として、パケットの受信を示すメモリフラグがメモリ１４上に書き込まれたこととする場合を説明する。
【００７６】
まず、割込信号を生成し、ＣＰＵ１１上で動作するソフトウェアが起動した場合、バス転送や受信処理時間のジッタにより、メモリ１４への受信データ転送が完了していない場合があり得る。そこで、受信データ転送の完了を判断するため、通信制御部１２が、受信データに関連するメモリ１４の所定領域を更新（メモリフラグを書き込む）し、データ転送完了を示してもよい。
そのため、例えば、パケットデータの管理情報をメモリ１４上にもうけ、受信データ転送後に、受信完了かどうかを示す領域を通信制御部１２がメモリフラグ「１」にする。加えて、ソフトウェアが該受信データを利用後に、該領域をメモリフラグ「０」とする。あるいはメモリ１４上の領域ではなく、転送完了したかどうかを通信制御部１２が保持し、ＣＰＵ１１に通知してもよい。
【００７７】
ソフトウェアは割込信号によって起動後、メモリフラグの領域を確認する。もし、メモリフラグ「０」なら、ポーリング処理により、当該領域を継続的に監視してもよい。ポーリング処理は、計算機資源（プロセッサなど）を占有するために、ＣＰＵ１１上で動作するソフトウェアの処理スループットが低下し得るが、上記構成を用いれば割込信号による起動後にポーリングするため、ポーリングによる占有時間は受信データ転送処理のジッタ程度に制限することができる。これにより、ポーリング処理によるスループット低下を最小限にすることができる。
これは、例えば、低頻度で受信データ転送時間が長くなる場合にも有効である。ほとんどの場合では割込信号起動後に演算処理を即座に実行でき、受信データ転送時間が長くなった場合のみ、ポーリングすることで、割込信号による待ち時間を最小化しながら、ＣＰＵ１１上で動作するソフトウェアの処理スループットを向上させることができる。
【００７８】
なお、本発明は前記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、前記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。
また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段などは、それらの一部または全部を、例えば集積回路で設計するなどによりハードウェアで実現してもよい。
また、前記の各構成、機能などは、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。
【００７９】
各機能を実現するプログラム、テーブル、ファイルなどの情報は、メモリや、ハードディスク、ＳＳＤ（Solid State Drive）などの記録装置、または、ＩＣ（Integrated Circuit）カード、ＳＤカード、ＤＶＤ（Digital Versatile Disc）などの記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
さらに、各装置を繋ぐ通信手段は、無線ＬＡＮに限定せず、有線ＬＡＮやその他の通信手段に変更してもよい。
【符号の説明】
【００８０】
１      マスタ装置（通信制御装置）
２      スレーブ装置
３      中継装置
８      管理装置
９      制御ネットワーク
１１    ＣＰＵ
１２    通信制御部
１３    ＰＨＹ
１４    メモリ
１５    不揮発性記憶媒体
１６    バス
３０    バス接続部
３１    通信処理部
３２    送信部
３３    受信部
３４    起算契機検知部
３５    割込制御部
３６    処理時間情報記憶部
３７    ネットワーク情報記憶部
３８    時刻同期制御部
４１    計時部
【図１】
0006709086.tif 000002
【図２】
0006709086.tif 000003
【図３】
0006709086.tif 000004
【図４】
0006709086.tif 000005
【図５】
0006709086.tif 000006
【図６】
0006709086.tif 000007
【図７】
0006709086.tif 000008
【図８】
0006709086.tif 000009
【図９】
0006709086.tif 000010