(57)【要約】【課題】    受信側での特別な処理やネットワークアナライザを必要としない、制御機器のみでデータ送信の遅延時間を算出する方法を提供する。【解決手段】  制御機器がデータ送信処理開始時刻Ａと送信準備完了時刻Ｂから所要時間Ｔ１（＝Ｂ−Ａ）を算出する処理１のステップＳＴ１と、前記制御機器が、送信時刻が指定されたパケットを送信した送信準備完了時刻Ｂ’と、前記パケットが伝送路に送出された時刻Ｃとから、その間の所要時間Ｔ２（＝Ｃ−Ｂ’）を算出する処理２のステップＳＴ２と、前記送信時刻の指定を変化させながら前記処理２を複数回実行し、その結果得られた前記所要時間Ｔ２の最小となるものからデータ送信遅延時間Ｔ（＝Ｔ１＋Ｔ２）を算出する処理３のステップ（ＳＴ３１〜ＳＴ３３）とを備える。【選択図】    図１
2005094204.tif 000002
【特許請求の範囲】
【請求項１】
複数の被制御機器とこれらを制御する制御機器がネットワークで接続されたネットワーク型制御システムのデータ送信遅延時間算出方法において、
制御機器がデータ送信処理開始時刻Ａと送信準備完了時刻Ｂとから所要時間Ｔ１（＝Ｂ−Ａ）を算出する処理１のステップと、
前記制御機器が、送信時刻が指定されたパケットを送信した送信準備完了時刻Ｂ’と、前記パケットが伝送路に送出された時刻Ｃとから、その間の所要時間Ｔ２（＝Ｃ−Ｂ’）を算出する処理２のステップと、
前記送信時刻の指定を変化させながら前記処理２を複数回実行し、その結果得られた前記所要時間Ｔ２の最小となるものからデータ送信遅延時間Ｔ（＝Ｔ１＋Ｔ２）を算出する処理３のステップとを備えることを特徴とするネットワーク型制御システムのデータ送信遅延時間算出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の被制御機器とそれを制御する制御機器がネットワークで接続されたネットワーク型制御システムのデータ送信遅延時間の算出方法に関する。
【背景技術】
【０００２】
複数のサーボアンプなどの被制御機器とそれを制御するコントローラなどの制御機器がネットワークで接続されたネットワーク型制御システムにおいて、高精度な制御を行う場合、制御機器から被制御機器に対して、制御周期と呼ばれるあらかじめ決められた微小時間間隔毎に、動作制御指令を送信している。ここで制御機器と被制御機器の間には通信処理の時間が必要であり、通信によるデータ送信の遅れによる制御周期のずれが発生する。制御機器と被制御機器の間で制御周期を同期させるには、制御機器が制御周期のずれをあらかじめ検出しておき、その時間分だけ前もって送信処理を行わなければならない。このためには、制御機器からの通信パケット送信時刻と、被制御機器への通信パケット到達時刻との差であるネットワークのデータ送信遅延時間を取得する手段が必要となる。
【０００３】
一般のネットワーク型のシステムでは、分散した計算機ネットワーク環境下などの高精度が要求される遅延時間の測定方法として、パケットに埋め込んだタイムスタンプを送信側と受信側とで比較する方法や、同期用の時刻サーバから異なるノードに送られた時間を比較して測定する方法が知られている（例えば、特許文献１参照）。
【０００４】
この方法は、時刻サーバから時刻ソースを獲得するとともに、同期メディアからフレーム同期信号を検出し、これらを用いて時刻を管理し、管理されている時刻にもとづいて生成されるタイムスタンプを非同期伝送網の送信側および受信側に分配し、送信側に分配されたタイムスタンプを含むパケットを該非同期伝送網を介して受信側に転送し、そのパケットからタイムスタンプを抽出し、抽出されたタイムスタンプと、受信側に分配されたタイムスタンプとの差分を計算し、そこからネットワークの伝送遅延時間を測定するものである。
【０００５】
このように、従来、ネットワーク型のシステムでは、送信側がパケットにタイムスタンプを埋め込んで送信し、受信側でタイムスタンプを比較して差分から遅延時間を測定するという手順がとられている。
【特許文献１】特開２００１−２４４９３２号公報（第７−７頁、第１図）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の方法では測定用のタイムスタンプを含むパケットを作成・送出し、受信側で計算することが必要で、送信側・受信側の双方の機器に処理の負荷が増え、特に受信側にハードウェアやソフトウェアの制約が大きく、測定用のソフトウェアを余分に搭載する余裕がない場合には問題となる。測定用の受信側の機器として、ネットワークアナライザを用いれば測定は可能であるが、一般にネットワークアナライザは高価であり、コスト面で問題がある。また、制御機器および被制御機器を自社で製造している場合には、ハードウェアの詳細な設計書などから制御機器のデータ送信遅延時間を算出することもできるが、制御機器のインターフェース機器部分に市販製品を用いている場合には、詳細なハードウェアの設計データを得られず、データ送信遅延時間を算出することはできない。
【０００７】
本発明はこのような様々な問題点に鑑みてなされたものであり、受信側の機器での特別な処理やネットワークアナライザを必要としない、制御機器のみでデータ送信の遅延時間を算出する方法を提供するものである。
【課題を解決するための手段】
【０００８】
上記問題を解決するため、本発明は、複数の被制御機器とこれらを制御する制御機器がネットワークで接続されたネットワーク型制御システムのデータ送信遅延時間算出方法において、制御機器がデータ送信処理開始時刻Ａと送信準備完了時刻Ｂとから所要時間Ｔ１（＝Ｂ−Ａ）を算出する処理１のステップと、前記制御機器が、送信時刻が指定されたパケットを送信した送信準備完了時刻Ｂ’と、前記パケットが伝送路に送出された時刻Ｃとから、その間の所要時間Ｔ２（＝Ｃ−Ｂ’）を算出する処理２のステップと、前記送信時刻の指定を変化させながら前記処理２を複数回実行し、その結果得られた前記所要時間Ｔ２の最小となるものからデータ送信遅延時間Ｔ（＝Ｔ１＋Ｔ２）を算出する処理３のステップとを備えることを特徴としている。このようになっているため、受信側の機器やネットワークアナライザを必要とせず、制御機器のみでデータ送信の遅延時間を算出することができるのである。
【発明の効果】
【０００９】
本発明の方法によれば、制御機器のみでデータ送信の遅延時間を算出することができるので、受信側の機器での特別な処理やネットワークアナライザのような測定機器が不要であり、ネットワーク型制御システムの構築作業が簡素化されて、構築期間の短縮や作業コストおよび機材などの製造コストを減らすという効果がある。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の方法の具体的実施例について、図に基づいて説明する。
【実施例１】
【００１１】
図７は、本発明の方法を実施するネットワーク型制御システムの構成を示す図である。図において７０１は制御機器（例えばコントローラ）、７０２は制御機器に内蔵するネットワークインターフェースボード、７０３は通信ポートとなっている。また７０５は、被制御機器（例えばサーボアンプ）であり、通信ポート７０３を備え、通信ケーブル７０４によって制御機器７０１とネットワーク接続されている。
【００１２】
図１は、ネットワーク型制御システムにおけるデータ送信の遅延時間を求める処理の概略フローチャートである。ステップＳＴ１の処理１は、データ送信処理開始時刻から送信準備完了までの時間Ｔ１を算出する。ステップＳＴ２の処理２は、送信時刻を指定したパケットを送信した時の送信準備から送出までの時間Ｔ２を算出するサブルーチンであり、処理３の中で使用される。ステップＳＴ３１からＳＴ３３までの処理３は、処理２のサブルーチンを使用し最短のＴ２を算出し、最短の遅延時間Ｔを算出する。
【００１３】
なお、以下の説明では、ネットワークシステムとして、ＩＥＥＥ１３９４シリアルバスネットワークを具体例としており、ＯＨＣＩ（Ｏｐｅｎ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）仕様に基づいているので、まずはこの仕様について説明する。
【００１４】
ＩＥＥＥ１３９４ネットワークに接続する機器はＩＥＥＥ１３９４ネットワークに対応したインターフェースを必要とする。ＯＨＣＩ仕様は、ＩＥＥＥ１３９４のインターフェースＬＳＩのハードウェアと、それを利用するソフトウェア間のインターフェースを規定したものであり、ＰＣＩバスのインターフェースを内蔵するなど、パーソナルコンピューター（以下ＰＣという）の拡張インターフェースとしての使用が容易になっている。この仕様に基づいて種々のハードウェアメーカーがＩＥＥＥ１３９４向けのＬＳＩおよびＰＣＩバス対応の拡張インターフェースボード等を製造している。これらＯＨＣＩ仕様に準拠したＬＳＩチップ（以下ＯＨＣＩチップという）およびインターフェースボードであれば、ハードウェア実装が異なっていても、単一のソフトウェアで制御することが可能となっている。
【００１５】
ＯＨＣＩ仕様準拠のＰＣ用インターフェースボードでは、ホストとなるＰＣとＯＨＣＩチップ間はＰＣＩバスで接続されている。ＰＣとＯＨＣＩチップとの間の送信および受信データの受け渡しはＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送によって行われる。ＯＨＣＩチップはＤＭＡコントローラおよびＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）バッファを内蔵しており、例えば、アイソクロナス送信では、ホストＰＣのＲＡＭからＤＭＡコントローラにより読み出された送信データが、一旦ＦＩＦＯバッファに溜められ、アイソクロナスサイクルのタイミングにあわせて伝送路上に送出される。
【００１６】
図６は、通信周期と制御周期と制御周期のずれを説明する図であり、横軸は時間で縦軸はパケットの存在する場所を示している。図６に示すように、ＩＥＥＥ１３９４ネットワークを制御機器および被制御機器に用いて構成したネットワーク型制御システムでは、アイソクロナスサイクルと呼ばれる通信周期６０１で通信を行っている。このシステムでは、データ送信の遅れにより６０３に示すような制御周期のずれが発生する。ＩＥＥＥ１３９４では、ネットワークにつながった各機器の時刻を同期させるために、バス上の時刻を管理する仕組みが存在する。サイクルマスタと呼ばれる機器が、サイクルスタートパケットをバスに流すことで、バス上の各機器の時刻を同期させることができる。ネットワーク上の各機器はサイクル時刻発生源を持ち、サイクルマスタからのサイクルスタートパケットによりネットワーク上の時刻で補正しながら同期する機構を備えている。しかしながら、ネットワークを用いて構成された制御システムにおける制御周期６０２は、ＩＥＥＥ１３９４通信の周期とは異なる周期を持っており、ＩＥＥＥ１３９４ネットワークの同期機能のみで制御システムの制御周期を同期させることはできない。ただ、制御システムの制御周期を、ＩＥＥＥ１３９４通信におけるアイソクロナスサイクルの定数倍に合わせることで、時刻同期の機構がより簡単になるというメリットはある。以下では、ＩＥＥＥ１３９４通信におけるアイソクロナスサイクル６０１をネットワーク型制御システムにおける時間の最小単位としている。
【００１７】
ネットワーク型制御システムでのデータ送信時の遅延時間は、制御機器内部でのソフトウェアのデータ送信開始処理時刻と、実際に伝送路上にパケットが送出された時刻との差により発生する。図４に示すように、制御機器内部でのＣＰＵ４０２からのデータ送信開始処理における通信パケット４０１の送信処理時刻Ａと、ＤＭＡコントローラ処理により通信パケット４０１がＦＩＦＯバッファ４０３へ転送された送信準備完了時刻Ｂと、伝送路４０４上に通信パケット４０１が実際に送出された時刻Ｃとのそれぞれの時刻が存在し、送信時の遅延時間Ｔは、時刻Ａと時刻Ｂの差である遅延時間Ｔ１と、時刻Ｂと時刻Ｃの差である遅延時間Ｔ２の和として求められる。ＯＨＣＩ仕様には、前述のＤＭＡ転送のタイミングやＦＩＦＯの段数の明確な規定はなく、ＯＨＣＩチップの実装メーカーによって実際に遅延時間が異なることが判明しており、ＯＨＣＩ仕様からは遅延時間Ｔを導き出すことはできない。
【００１８】
次に、本発明の方法を図に基づいて説明する。図２と図３は図１の中の処理１、処理２、処理３の詳細なフローチャートである。まず、制御機器のデータ送信処理開始時刻から送信準備完了になるまでの所要時間を算出する処理１について詳細に記述された図２のフローチャートに沿って順を追って説明する。ステップＳＴ１０１で制御ソフトウェアがデータ送信用のパケットデータを作成する。次に、ステップＳＴ１０２でＤＭＡコントローラへデータ送信の指令を出す直前に、現在のサイクル時刻をＯＨＣＩレジスタより取得して変数Ａに保存する。ステップＳＴ１０３でＯＨＣＩチップのＤＭＡコントローラに対してデータ送信開始要求を指令するとＤＭＡ転送が開始する。このとき、ＯＨＣＩレジスタの割り込みマスクビットのうち、アイソクロナス送信完了割り込みビットを有効にしておくと、実際にＤＭＡコントローラがＦＩＦＯバッファへのデータ転送を完了した直後に、制御ソフトウェアがハードウェア割り込みを受け取ることができる。これをステップＳＴ１０４とする。ステップＳＴ１０５ではハードウェア割り込みを受けた直後にサイクル時刻を取得し、変数Ｂに保存しておく。ステップＳＴ１０６で時刻Ａと時刻Ｂの差分をとることで、コントローラ内部でのデータ送信処理開始時刻と、送信準備が完了する時刻との差である遅延時間Ｔ１を算出することができる。
【００１９】
図３（ａ）に、送信時刻を指定したパケットを送信してその送信準備完了時刻を取得し、送信準備から伝送路に送出されるまでの所要時間を算出する処理２のサブルーチンのフローチャートを示す。ＯＨＣＩ仕様では、図５に示すアイソクロナス送信コンテキストコントロールレジスタ５０１のうち、サイクルマッチイネーブルビット５０２を有効にすると、サイクルマッチフィールド５０３に指定された時刻（サイクル）で伝送路への送出が行われるように規定されている。これを利用して、ステップＳＴ２０１で時刻Ｃをサイクルマッチフィールド５０３に指定し、サイクルマッチイネーブルビット５０２を有効にし、ステップＳＴ２０２でＤＭＡ転送を開始する。このように送信時刻を指定したパケットが実際に伝送路に送出された場合、ステップＳＴ２０３に示すようにアイソクロナス送信完了割り込みが発生し、送信準備完了時刻が更新される。この時刻をステップＳＴ２０４にて変数Ｂ’に保存する。サイクルマッチフィールド５０３に指定した時刻Ｃと、送信準備完了時刻Ｂ’との差分をとることで、制御機器の送信準備完了時刻と、伝送路上にパケットが送出された時刻の差分である遅延時間Ｔ２を検出することができる。なお、ここでサイクルマッチフィールド５０３は１５ビットのカウンタで、上位２ビットが秒の単位で０〜３秒まで指定でき、下位１３ビットは１秒間のカウンタで０〜７９９９までカウントする構成となっていて、最大４秒までの時刻が指定できる。
【００２０】
この処理２のようにサイクルマッチフィールドに送信時刻を指定してデータ送信開始処理を行う場合、条件に合致する時刻になるまで実際に送信が行われないので、すぐには送信準備完了にならず、処理１における遅延時間Ｔ１は伸びることになる。また、指定した時刻がデータ送信開始処理を行った時刻と非常に近い場合、ハードウェアが時間内に処理を開始できずに時刻条件に合致する次回の時刻まで最長で約４秒間先送りされてしまい、遅延時間Ｔ１が伸び、その結果遅延時間Ｔも伸びてしまうので、任意の時刻に最短の遅延時間で送信を開始したい場合には問題となる。そこで、送信時刻を指定した上で最短の遅延時間で送信するために、図３（ｂ）に示すような処理３を加える。
【００２１】
図３（ｂ）の処理３では、送信処準備完了時刻をＢ’とし、このＢ’から数サイクル後の、伝送路に送出されるサイクル時刻Ｃを予測するものとする。このＣとＢ’との時刻の差であるサイクル差分の予測値をｄｉｆｆとし、ステップＳＴ３０１に示すように、このｄｉｆｆを初期値０とし、インクリメントしながら処理２を繰り返して実行する。指定する送信時刻Ｃは次のようにして求める。まず、ステップＳＴ３０２でサイクル時刻を取得し、変数Ａ’に保存する。ステップＳＴ３０３で時刻Ａ’を基に処理１で求めた遅延時間Ｔ１にしたがって送信処準備完了時刻Ｂ’を求め、ｄｉｆｆを加算して予想時刻Ｃを算出する。このＣを送信時刻に指定して処理２を呼び出し、算出された遅延時間が予め定めた規定遅延時間Ｔｌｉｍｉｔ（２秒）より大きければステップＳＴ３０６に飛んでｄｉｆｆをインクリメントし、ステップＳＴ３０２に戻って処理を繰り返す。ここで、規定遅延時間Ｔｌｉｍｉｔは、指定した送信時刻がデータ送信開始処理を行った時刻と非常に近い場合、遅延時間の最長が約４秒なので、それ以下であれば良いが、０と４秒の平均で２秒としている。このステップＳＴ３０２からＳＴ３０６の繰り返しで、ステップＳＴ３０５の条件が成立すれば処理を終了し、その結果最短の遅延時間でデータ送信できるｄｉｆｆが求まる。このようにして最短のｄｉｆｆが得られた時の遅延時間Ｔ１およびＴ２を合算すれば（ステップＳＴ３０７）、データ送信の遅延時間Ｔを算出することができる。このように、制御機器のみでデータ送信の遅延時間を算出することができるので、受信側の機器での特別な処理やネットワークアナライザのような測定機器が不要であり、ネットワーク型制御システムの構築作業が簡素化されて、構築期間の短縮や作業コストおよび機材などの製造コストを減らすことができる。
【図面の簡単な説明】
【００２２】
【図１】本発明のデータ送信遅延時間を求める処理の概略フローチャート
【図２】本発明の処理１の詳細フローチャート
【図３】本発明の処理２および処理３の詳細フローチャート
【図４】データ送信遅延時間を示す図
【図５】コンテキストコントロールレジスタを示す図
【図６】通信周期、制御周期、制御周期のずれを示す図
【図７】本発明の方法を適用するネットワーク型制御システムの構成を示す図
【符号の説明】
【００２３】
４０１  通信パケット
４０２  ＣＰＵ
４０３  ＦＩＦＯバッファ
４０４  伝送路
５０１  コンテキストコントロールレジスタ
５０２  サイクルマッチイネーブルビット
５０３  サイクルマッチフィールド
６０１  通信周期
６０２  制御周期
６０３  制御周期のずれ
７０１  制御機器（コントローラ）
７０２  ＩＥＥＥ１３９４インターフェースボード
７０３  通信ポート
７０４  通信ケーブル
７０５  被制御機器（サーボアンプ）
【図１】
2005094204.tif 000003
【図２】
2005094204.tif 000004
【図３】
2005094204.tif 000005
【図４】
2005094204.tif 000006
【図５】
2005094204.tif 000007
【図６】
2005094204.tif 000008
【図７】
2005094204.tif 000009