(57)【要約】【課題】リアルタイムネットワークに接続されるノードで送受信されるデータ量が増大している状況下でも、リンクスキャンタイムの周期を増大させず、またＣＰＵにかかるデータ転送の負荷を増大させないデータ転送制御装置を得ること。【解決手段】ＣＰＵ１１と、ＣＰＵ１１によって使用または生成されるデータを記憶するメインメモリ１２と、ネットワーク３０に接続されるノード１０ごとに設けられた格納領域に、ノード１０ごとのデータをリアルタイムに記憶するネットワーク用バッファメモリ１４と、所定の周期ごとに、ＣＰＵ１１を介さずにネットワーク用バッファメモリ１４と他のノードとの間のデータ転送処理を行うバッファメモリ用ＤＭＡコントローラ１５と、ノード１０ごとに設定された転送タイミングに基づいてＣＰＵ１１を介さずにメインメモリ１２とネットワーク用バッファメモリ１４との間でデータの転送を行うＤＭＡコントローラ１６と、を備える。【選択図】        図１
2008299581.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続される他のノードとの間でリンクスキャンの周期でデータを送受信し、前記データを用いて演算処理を行うデータ転送制御装置であって、
前記他のノードからのデータを用いて演算を行うとともに、前記他のノードに送信するデータを生成する中央演算処理手段と、
前記中央演算処理手段によって使用されまたは生成されるデータを記憶する主記憶手段と、
前記ネットワークに接続されるノードごとに設けられた格納領域に、前記ノードからのデータをリンクスキャンの周期ごとに記憶するネットワーク用一時記憶手段と、
リンクスキャンの周期を基にして定められた転送周期で、前記ネットワーク用一時記憶手段から前記主記憶手段へデータの転送を行う転送制御手段と、
を備えることを特徴とするデータ転送制御装置。
【請求項２】
前記転送制御手段は、前記ノードごとに割り当てられた前記ネットワーク用一時記憶手段中のアドレスと前記主記憶手段中のアドレス、データを転送する方向、および前記データを転送する前記リンクスキャンの周期を基にした転送周期を、前記ネットワークに接続されるノードごとに設定した転送設定情報に基づいてデータの転送を行うことを特徴とする請求項１に記載のデータ転送制御装置。
【請求項３】
前記転送制御手段は、格納されるデータの種類ごとに割り当てられた前記ネットワーク用一時記憶手段中のアドレスと前記主記憶手段中のアドレス、データを転送する方向、および前記データを転送する前記リンクスキャンの周期を基にした転送周期を、前記ネットワークに接続されるノードに格納されるデータの種類ごとに設定した転送設定情報に基づいてデータの転送を行うことを特徴とする請求項１に記載のデータ転送制御装置。
【請求項４】
前記転送周期は、前記中央演算処理手段によってデータが使用される頻度または前記データ生成される頻度に応じて、前記ノードごとに設定されることを特徴とする請求項１〜３のいずれか１つに記載のデータ転送制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、リアルタイムでデータの送受信を行うネットワークに接続された情報処理装置のメインメモリへのデータの格納を制御するデータ転送制御装置に関するものである。
【背景技術】
【０００２】
複数の被制御機器を制御するプログラマブルコントローラなどの制御機器が複数接続してなる工業用ネットワークなどの制御システムでは、取り扱うデータがいつ交信されたかが明確であるようなリアルタイム性が要求される。たとえば、モータの回転速度が２３０回／秒というデータが、１秒前の計測値であるのか、１０秒前の計測値であるのか、ということがわからないと、モータを制御することが困難となる。このようなリアルタイム性が必要とされるネットワークにおいて用いられる手法の一つにリンクスキャンという方式がある。リンクスキャンは、ネットワーク上で送受信されるデータを予め決め、それらを所定の周期で更新することで、リアルタイム性を確保する手法である。
【０００３】
リンクスキャンを用いたリアルタイムネットワーク（以下、略してリアルタイムネットワークともいう）を構成するノードは、通常、中央演算処理装置（Central  Processing  Unit、以下、ＣＰＵという）と、メインメモリと、ネットワークインタフェースと、を有する。メインメモリは、リアルタイムネットワークを構成するノードごとに、取り扱うデータにしたがって領域が分割される。そして、このメモリの割り当ての大きさは、全てのリアルタイムネットワークを構成するノードのメインメモリ間で同じ大きさとなっている。
【０００４】
このノードでデータを他のノードに送信する場合には、ＣＰＵは、送信したいデータを、メインメモリの自ノードに割り当てられた領域に格納し、これを、ネットワークインタフェースに渡す。ネットワークインタフェースは、渡されたデータをネットワーク上に流すことができる形式に変換して、ネットワークに接続される他ノードに送信する。一方、このノードで他ノードからデータを受信する場合には、ネットワークインタフェースがそのデータの受信処理を行い、ＣＰＵがそのデータをメインメモリのデータの送信元ノードに割り当てられた領域に書込む処理を行う。
【０００５】
通常、リアルタイム性が要求されるノードのＣＰＵでは、自ノードのデータの他ノードへの送信処理と、他ノードからのデータの受信処理と、リアルタイムネットワークでの作業以外に必要なその他の動作処理と、を行う。
【０００６】
リンクスキャンでは、各ノードがそれぞれ１回ずつ順番にデータを送信するが、初めのノードが送信を開始し、最後のノードが送信を終了するまでの時間をリンクスキャンタイムという。このリンクスキャンタイムの１周期で、各ノードが全く同じデータをメインメモリに有することとなり、その時間でのデータの正しさが保証される。つまり、各ノードにとって必要なデータが必ず所定の周期（＝リンクスキャンタイム）で転送され、いつのデータか（何回目のリンクスキャンのデータか）ということが明確になり、リアルタイム性が確保される。その結果、各ノード間で時間によってデータの値が異なる、送信データが既に受け取られたかどうかわからない、といった問題を回避することができる。
【０００７】
しかし、上述したように、リンクスキャンタイムの１周期の間に、ＣＰＵが、ネットワークに流すデータをメインメモリに書込むとともに、ネットワークを流れるデータをメインメモリへ転送する処理を行う必要があるため、ネットワークにデータが流れている間は、ＣＰＵはデータの転送処理に追われてしまう。そのため、ＣＰＵには過剰の負荷がかかっていた。
【０００８】
ところで、リアルタイム性が要求されないネットワークに接続されたパーソナルコンピュータなどの情報処理端末についてであるが、ＣＰＵに負荷をかけない処理方法として、ＣＰＵを介さずにメインメモリへのデータの書込みを行うＤＭＡ（Direct  Memory  Access）転送制御が知られている。
【０００９】
従来のＤＭＡ転送制御として、たとえば、パーソナルコンピュータや周辺装置から構成される外部装置に複数の論理的に割り当てられた論理チャネルを有する通信ケーブルを介して接続される情報処理装置におけるＤＭＡ転送制御についての技術が提案されている（たとえば、特許文献１参照）。この情報処理装置では、外部装置からのデータを受信するインタフェースコントローラに、通信ケーブルからのデータを、そのデータが送られてきた論理チャネルに対応するチャネルメモリ制御部のバッファメモリに格納する。その後、ＤＭＡ制御部は、所定期間内におけるデータの受信回数が最大となるチャネルをＤＭＡ転送の対象として選択する。そして、この選択に基づいて、バスセレクタとＤＭＡコントローラは、選択されたチャネルメモリ制御部のバッファメモリからメインメモリにデータを転送する。
【００１０】
【特許文献１】特開２００６−１１９８９０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上述したリアルタイムネットワークを有する制御システムでは、制御システムの大規模化や制御の高精度化などの要因によって、近年、送受信されるデータ量が増大してきている。その一方で、ユーザからは、リンクスキャンタイムの短周期化の要求がなされるようになってきている。たとえば、制御システムの大規模化などの影響でデータ量が２倍になると、処理時間も２倍必要になり、それに応じてリンクスキャンタイムもほぼ２倍必要になってしまう。しかし、これではリンクスキャンタイムの短周期化の要求に応えることができない。つまり、上述した従来の方法では、データ量の増大により、ノードのＣＰＵにかかるデータ転送の負荷がさらに大きくなるだけであり、リンクスキャンタイムの短縮化という要求を満たすことができないという問題点があった。
【００１２】
また、特許文献１に記載のＤＭＡ転送制御では、所定期間内の受信回数が最大のチャネルのデータをメインメモリに転送するようにしているが、一度に大量のデータが全てのチャネルに送信されてしまうような環境下においては、ＤＭＡ転送の処理にかかる負荷を低減することができない。また、ＤＭＡ転送中は、アドレス／データバスが占有されてしまい、その間、ＣＰＵはアドレス／データバスを用いた処理を行うことができないという問題点もあった。
【００１３】
さらに、この特許文献１に記載のＤＭＡ転送制御では、情報処理装置が外部装置からのデータを受信できない場合、たとえば上記したように一度に大量のデータが全てのチャネルに送信されてしまうような環境では、１つのチャネルごとにメインメモリへのデータのＤＭＡ転送を行うので、他のチャネルへのデータを情報処理装置で受信することができない。つまり、他のチャネルは、そのチャネルがＤＭＡ転送の処理が許可されるまでは、そのチャネルからのデータを受信することができない。その結果、データ受信のリアルタイム性が損なわれてしまい、リアルタイム性を要求されるような環境下で使用される情報処理装置では、特許文献１に記載のＤＭＡ転送制御を使用することができないという問題点もあった。
【００１４】
この発明は、上記に鑑みてなされたもので、リアルタイムネットワークに接続されるノードにおいて、送受信されるデータ量が増大している状況下でも、リンクスキャンタイムの周期をそのデータ量に比例して増大させることなく、またＣＰＵにかかるデータ転送の負荷を増大させないデータ転送制御装置を得ることを目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するため、この発明にかかるデータ転送制御装置は、ネットワークに接続される他のノードとの間でリンクスキャンの周期でデータを送受信し、前記データを用いて演算処理を行うデータ転送制御装置であって、前記他のノードからのデータを用いて演算を行うとともに、前記他のノードに送信するデータを生成する中央演算処理手段と、前記中央演算処理手段によって使用されまたは生成されるデータを記憶する主記憶手段と、前記ネットワークに接続されるノードごとに設けられた格納領域に、前記ノードからのデータをリンクスキャンの周期ごとに記憶するネットワーク用一時記憶手段と、リンクスキャンの周期を基にして定められた転送周期で、前記ネットワーク用一時記憶手段から前記主記憶手段へデータの転送を行う転送制御手段と、を備えることを特徴とする。
【発明の効果】
【００１６】
この発明によれば、中央演算処理手段がネットワークを流れるデータの送受信処理を行う必要がなく、送受信されるデータ量が増大しても中央演算処理手段にかかる負荷を減らすことができる。その結果、今までネットワークでの転送処理に使用されていた時間を、中央演算処理手段によるネットワークで必要な作業以外の処理時間に割り当てることができるとともに、余った時間を削減することができるので、リンクスキャンタイムを短くすることができるという効果を有する。また、送受信されるデータの中央演算処理手段による使用頻度やその重要度、更新周期などによって、データを主記憶手段に格納するようにしたので、使用されないデータを主記憶手段に転送することがなくなり、処理の無駄を省くこともできる。
【発明を実施するための最良の形態】
【００１７】
以下に添付図面を参照して、この発明にかかるデータ転送制御装置の好適な実施の形態を詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。また、以下の説明では、この発明にかかる実施の形態との比較として、最初に従来のリアルタイムネットワークで構成される制御システムにおける通信方法とＣＰＵの動作の概要について説明し、その後にこの発明による実施の形態について説明する。
【００１８】
（従来の制御システムにおける通信）
図７は、リアルタイムネットワークを有する制御システムの構成の従来例を模式的に示す図である。この例では、制御システムは、パーソナルコンピュータなどの情報処理端末や中継器などの３つのネットワークノード（以下、単にノードという）１００（１００Ａ〜１００Ｃ）がネットワーク１１０を介して接続される。各ノード１００Ａ〜１００Ｃは、ノード全体の処理を行うＣＰＵ１０１と、ネットワーク１１０に接続する全てのノード１００Ａ〜１００Ｃのデータを格納するメインメモリ１０２と、ネットワーク１１０との通信を行うネットワークインタフェース１０３と、がアドレス／データバスを介して相互に接続される。
【００１９】
図８は、ノードのメインメモリ内のデータ構成の一例を示す図である。メインメモリ１０２は、取り扱うデータにしたがってノード１００ごとに領域が分割される。その各ノード１００に対するメインメモリ１０２の割り当ての大きさは、全てのノード１００のメインメモリ１０２間で同じ大きさになっている。図に示されるように、各ノード１００のメインメモリ１０２のアドレス「００００  ００００」〜「００００  ０ＦＦＦ」には、ノード１００Ａのデータを格納するための領域が割り当てられており、アドレス「００００  １０００」〜「００００  ３ＦＦＦ」には、ノード１００Ｂのデータを格納するための領域が割り当てられており、アドレス「００００  ４０００」〜「００００  ５ＦＦＦ」には、ノード１００Ｃのデータを格納するための領域が割り当てられている。これによって、各ノード１００Ａ〜１００Ｃのメインメモリ１０２間ではデータの共有がなされる。
【００２０】
このような構成のノード１００におけるデータの通信処理について説明する。最初に、リンクスキャンタイムについて説明する。図９は、リンクスキャンタイムの概要を示す図である。この図に示されるように、ネットワーク１１０に接続されるノード１００Ａ〜１００Ｃが、ネットワーク１１０上で送受信するデータを予め決めておき、そのデータを所定の周期で交信することで、リアルタイム性を確保している。このデータを交信する所定の周期のことをリンクスキャンタイムという。
【００２１】
つぎに、データの送受信方法について説明する。図１０は、リアルタイムネットワークでの通信時におけるＣＰＵとメインメモリの動作の概略を示す図である。この図において、横軸は時間を表している。また、この図では、ネットワークに３つのノードＳ，Ｔ，Ｕが接続されており、それぞれがリンクスキャンタイム中にデータｓ（ｎ），ｔ（ｎ），ｕ（ｎ）を送信し、相互に同期を取っているものとする。ここで、ｎは自然数を示し、リンクスキャンの回数を示している。さらに、この図１０では、ノードＵでのデータ通信時におけるＣＰＵ１０１とメインメモリ１０２の動作を示している。
【００２２】
まず、リンクスキャンの１周期の間に、ＣＰＵ１０１は、ネットワークインタフェース１０３から他ノードＳからのデータｓ（ｎ）の受信通知を受けると、メインメモリ１０２のノードＳに割り当てられた領域へデータｓ（ｎ）の転送処理を行う。続いて、ネットワークインタフェース１０３から他ノードＴからのデータｔ（ｎ）の受信通知を受けると、メインメモリ１０２のノードＴに割り当てられた領域へデータｔ（ｎ）の転送処理を行う。これにより、他ノードＳ，Ｔのデータがメインメモリ１０２の所定の領域に書込まれる。
【００２３】
その後、ＣＰＵ１０１は、メインメモリ１０２の自ノードＵに割り当てられた領域に格納されている自ノードＵのデータｕ（ｎ）を操作し、ネットワークインタフェース１０３に渡す。ネットワークインタフェース１０３では、渡されたデータｕ（ｎ）をネットワーク１１０で流れる形式のデータに変換して、ネットワークを介して他ノードＳ，Ｔに送信する処理を行う。
【００２４】
そして、最後にネットワークでの作業以外のデータ処理（以下、その他の作業処理という）を行う。このように、ＣＰＵ１０１は、ネットワークを流れるデータとメインメモリ１０２との間の転送処理を行うために、ネットワークにデータが流れている間は、ＣＰＵ１０１はデータの転送処理に追われることになる。そして、このデータ転送処理は、リンクスキャンタイムごとに実行される。これにより、各ノードＳ〜Ｕは、データの転送が完了した時点で、それぞれのメインメモリ１０２が全く同じデータを持つことになり、その時間でのデータの正しさが保証される。また、各ノードＳ〜Ｕ間で時間によってデータの値が異なる、送信したデータが既に受け取られたかどうかわからない、というような問題は発生せず、何回目のリンクスキャンのデータかということが明確になり、リアルタイム性が確保される。
【００２５】
しかし、この図１０で示されるように、従来のリアルネットワークでの通信においては、データ量が２倍になると、処理時間も２倍必要になり、その結果リンクスキャンタイムも２倍必要になってしまう。また、その他の作業処理では、ネットワークでの作業以外のデータ処理を行う必要があり、ある程度の余裕が必要となるので、この時間を削ることはできない。このように、従来のリアルネットワークでの通信では、ＣＰＵ１０１にかかる負荷は、データ量の増大とともに増大していく傾向にあり、それにつれてリンクスキャンタイムも長くなっていた。
【００２６】
また、図１０の１回目のリンクスキャンタイムのその他の作業処理では、ＣＰＵ１０１は受信したデータｓ（１），ｔ（１）を用いた処理は何も行っていない。しかし、２回目のリンクスキャンタイムでは、メインメモリ１０２に受信したデータのうちデータｓ（２）のみを用いて処理を行っている。また、３回目のリンクスキャンタイムでは、受信したデータのうちデータｔ（３）のみを用いて処理を行うとともに、つぎの（４回目の）リンクスキャンタイムで送信するデータｕ（４）の処理を行っている。そして、４回目のリンクスキャンタイムでは再び受信したデータに対して何の処理も行われていない。このように、メインメモリ１０２に転送したデータの全てがＣＰＵ１０１による処理に用いられるわけではなく、一部しか使用されない。そのために、毎回メインメモリ１０２にデータを転送することは無駄が多かった。
【００２７】
実施の形態．
制御対象である被制御機器と接続されるプログラマブルコントローラなどの制御装置がネットワークを介して接続される制御システムにおいて、制御装置の中には、高い精度で制御を行わなければならないものもあれば、低い精度で制御を行えばよいものもある。たとえば、この精度の観点からは、高い精度で制御を行わなければならないものほど、その制御に必要なデータを短い周期で更新する必要があるが、低い精度で制御を行えばよいものでは、その制御に必要なデータの更新周期を長くしても構わない。
【００２８】
また、上述した図１０に示されるように、メインメモリに転送されたデータの全てがＣＰＵによる処理に使用されているわけではない。そのため、ＣＰＵによって使用される頻度に応じて、メインメモリへのデータの転送を行うようにしてもよい。
【００２９】
そこで、この実施の形態では、ネットワークに接続される他ノードとのデータの通信を、ＣＰＵを介さずに行い、リアルタイムでデータを保持するネットワーク用バッファメモリをノードに備える構成とし、また、たとえばＣＰＵによる処理時にデータが必要な周期などの各ノードに応じた所定の周期で、各ノードのデータをネットワーク用バッファメモリとメインメモリとの間で、ＣＰＵを介さずに転送するようにしている。たとえば、高い精度で制御を行う必要があるデータほど、短い周期でメインメモリに格納し、低い精度で制御を行えばよいデータほど長い周期でメインメモリに格納すればよい。この周期的に更新を行うデータとしては、被制御機器の制御を行うための入力データや出力データなどの制御データを例示することができるが、他のデータであってもよい。
【００３０】
図１は、この発明が適用されるリアルタイムネットワークを用いた制御システムの構成を模式的に示す図である。この図１の例では、制御システムは、パーソナルコンピュータなどの情報処理端末や中継器などの３つのノード１０（１０Ａ〜１０Ｃ）がネットワーク３０を介して接続される。この図１では、ノード１０Ａのみに内部構成が示されているが、他のノード１０Ｂ，１０Ｃも同様の構成を有している。また、このノード１０が、この発明によるデータ転送制御装置に該当する。
【００３１】
各ノード１０Ａ〜１０Ｃは、ＣＰＵ１１と、メインメモリ１２と、ネットワークインタフェース１３と、ネットワーク用バッファメモリ１４と、バッファメモリ用ＤＭＡコントローラ１５と、ＤＭＡコントローラ１６と、ＤＭＡ起動タイミングカウンタ１７と、を備える。
【００３２】
ＣＰＵ１１は、自ノード１０全体の処理を行い、メインメモリ１２は、ネットワーク３０に接続する全てのノード１０Ａ〜１０Ｃのデータを格納する。データとしては、たとえば、ノードに接続される被制御機器を制御するためのデータや、被制御機器から出力されるデータなどを例示することができる。ネットワークインタフェース１３は、メインメモリ１２とネットワーク３０との間でデータの送受信を行う。ここで、ＣＰＵ１１は、特許請求の範囲における中央演算処理手段に対応し、メインメモリ１２は、同じく主記憶手段に対応している。
【００３３】
ネットワーク用バッファメモリ１４は、他ノードからのデータをリンクスキャンタイムごとに全て格納し、ＣＰＵ１１によって処理され、他ノードに所定の周期ごとに転送されるデータも格納する。このネットワーク用バッファメモリ１４は、ネットワーク３０に接続されるノード１０Ａ〜１０Ｃのそれぞれに対して、データを格納する領域が設けられている。このネットワーク用バッファメモリ１４は、従来例の図８で示したメインメモリの構成と同様であり、これまではネットワークインタフェースで他ノードからのデータを受信すると、直接にＣＰＵがメインメモリに転送していたものを、後述するバッファメモリ用ＤＭＡコントローラ１５によって、一旦このネットワーク用バッファメモリ１４内に格納するようにしている。なお、バッファメモリ用ＤＭＡコントローラ１５には、内部にレジスタを有し、その中に、他のノード１０から受信したデータを、ネットワーク用バッファメモリ１４内のどのアドレスに転送するか、またはネットワーク用バッファメモリ１４内のどのアドレスのデータをどのノード１０に転送するかを示すネットワークデータ転送設定情報も格納される。なお、このネットワーク用バッファメモリ１４は、特許請求の範囲におけるネットワーク用一時記憶手段に対応する。
【００３４】
図２は、ネットワーク用バッファメモリ内のデータ構成の一例を示す図である。ネットワーク用バッファメモリ１４は、取り扱うデータにしたがってノード１０ごとに領域が分割され、そのメモリの割り当ての大きさは、全てのノード１０Ａ〜１０Ｃのネットワーク用バッファメモリ１４間で同じ大きさになっている。図に示されるように、各ノード１０Ａ〜１０Ｃのネットワーク用バッファメモリ１４のアドレス「００００  ００００」〜「００００  ０ＦＦＦ」には、ノード１０Ａのデータを格納するための領域が割り当てられており、アドレス「００００  １０００」〜「００００  ３ＦＦＦ」には、ノード１０Ｂのデータを格納するための領域が割り当てられており、アドレス「００００  ４０００」〜「００００  ５ＦＦＦ」には、ノード１０Ｃのデータを格納するための領域が割り当てられている。これによって、各ノード１０Ａ〜１０Ｃのネットワーク用バッファメモリ１４間ではデータの共有がなされる。
【００３５】
バッファメモリ用ＤＭＡコントローラ１５は、ネットワークインタフェース１３で受信したデータをネットワーク用バッファメモリ１４に転送する。このとき、バッファメモリ用ＤＭＡコントローラ１５の内部レジスタに格納されたネットワークデータ転送設定情報に基づいて、受信したデータの送信元（ノード１０）に対応したネットワーク用バッファメモリ１４の所定の領域に、データを格納する。このバッファメモリ用ＤＭＡコントローラ１５は、ＣＰＵ１１を介さずにデータをネットワーク用バッファメモリ１４に転送するものであり、ネットワーク用バッファメモリ専用に設けられたデータ転送機能である。このバッファメモリ用ＤＭＡコントローラ１５により、ＣＰＵ１１による毎周期のデータの転送が行われず、ＣＰＵ１１は別の処理を実行できるようになる。なお、このバッファメモリ用ＤＭＡコントローラ１５は、特許請求の範囲における一時記憶手段用転送制御手段に対応している。
【００３６】
ＤＭＡコントローラ１６は、ＤＭＡ起動タイミングカウンタ１７からの制御信号に基づいて、ネットワーク用バッファメモリ１４に格納されるデータをメインメモリ１２に転送する。
【００３７】
ＤＭＡ起動タイミングカウンタ１７は、内部にレジスタを有し、その中に、リンクスキャンの何回目ごとに、ネットワーク用バッファメモリ１４からメインメモリ１２にデータを転送するかを示す転送設定情報を格納し、この転送設定情報に基づいて、ＤＭＡコントローラ１６を起動する。また、ＤＭＡ起動タイミングカウンタ１７は、転送タイミングが発生すると、割り込み信号を使って、データの転送が発生したことと、ＤＭＡコントローラ１６がメインメモリ１２を使用するために、ＣＰＵ１１によるメインメモリ１２の使用を禁じることを示す割り込み信号をＣＰＵ１１に伝える。なお、ＤＭＡコントローラ１６とＤＭＡ起動タイミングカウンタ１７は、特許請求の範囲における転送制御手段に対応し、転送タイミングは、同じく転送周期に対応している。
【００３８】
図３は、転送設定情報の一例を示す図であり、図４は、メインメモリとネットワーク用バッファメモリとのデータの割り当て状態の詳細を示す図である。図３に示されるように、転送設定情報は、ネットワーク用バッファメモリ１４とメインメモリ１２との間でデータを転送する周期を定める「転送タイミング」と、転送タイミングが発生した場合に、データの転送先または転送元のネットワーク用バッファメモリ１４のアドレスを示す「バッファアドレス」と、データの転送元または転送先のメインメモリ１２のアドレスを示す「メインメモリアドレス」と、データの転送方向を示す「転送方向」と、データの転送量を示す「転送データ量」と、を含む。なお、転送タイミングは、リンクスキャンタイムの何周期ごとに転送を行うかを示すものである。
【００３９】
また、図４に示されるように、ネットワーク用バッファメモリ１４には、ノード１０Ａのデータａは、アドレス０ｘ３８５０〜０ｘ３９ＢＦに格納され、ノード１０Ｂのデータｂは、アドレス０ｘ４１００〜０ｘ４１４Ｆに格納され、ノード１０Ｃのデータｃは、アドレス０ｘ４６３０〜０ｘ４６６Ｆに格納される。また、メインメモリ１２には、ノード１０Ａのデータａは、アドレス０ｘ００１０〜０ｘ００７Ｆに格納され、ノード１０Ｂのデータｂは、アドレス０ｘ０１００〜０ｘ０１４Ｆに格納され、ノード１０Ｃのデータｃは、アドレス０ｘ０２００〜０ｘ０２３Ｆに格納される。
【００４０】
この図４に示されるようなメインメモリ１２とネットワーク用バッファメモリ１４とのデータの割り当ての場合の転送設定情報が図３に示されている。すなわち、図３の転送設定情報において、行３０１に格納されるデータは、ノード１０Ａのデータａに対する転送設定情報であり、行３０２に格納されるデータは、ノード１０Ｂのデータｂに対する転送設定情報であり、行３０３に格納されるデータは、ノード１０Ｃのデータｃに対する転送設定情報である。ただし、この図３と図４に示される例はノード１０Ｃの設定であって、ノード１０Ａ，１０Ｂでは、それぞれの設定がなされる。
【００４１】
さらに詳細には、行３０１に示される内容は、ネットワーク用バッファメモリ１４のアドレス０ｘ３８５０から６０ｈの転送データ量のデータを、メインメモリ１２のアドレス０ｘ００１０に転送タイミング１で転送することを示している。また、行３０２に示される内容は、ネットワーク用バッファメモリ１４のアドレス０ｘ４１００から３０ｈの転送データ量のデータを、メインメモリ１２のアドレス０ｘ０１００に転送タイミング３で転送することを示している。さらに、行３０３に示される内容は、メインメモリ１２のアドレス０ｘ０２００から４０ｈの転送データ量のデータを、ネットワーク用バッファメモリ１４のアドレス０ｘ４６３０に転送タイミング２で転送することを示している。この転送設定情報に示されるように、ネットワーク用バッファメモリ１４とメインメモリ１２との間のＣＰＵ１１を介さないデータの転送が行われる。
【００４２】
以上の構成を有するノード１０において、ＣＰＵ１１と、メインメモリ１２と、ネットワーク用バッファメモリ１４と、バッファメモリ用ＤＭＡコントローラ１５と、ＤＭＡコントローラ１６と、ＤＭＡ起動タイミングカウンタ１７と、はそれぞれアドレス／データバスを介して相互に接続される。また、ＤＭＡコントローラ１６とネットワーク用バッファメモリ１４とは、アドレス／データバスを介して接続される。さらに、バッファメモリ用ＤＭＡコントローラ１５は、ネットワークインタフェース１３とネットワーク用バッファメモリ１４と、アドレス／データバスを介して接続される。また、ネットワークインタフェース１３とＤＭＡ起動タイミングカウンタ１７との間と、ＤＭＡ起動タイミングカウンタ１７とＤＭＡコントローラ１６との間で、制御信号がやり取りされ、ＤＭＡ起動タイミングカウンタ１７からＣＰＵ１１へ割り込み信号が出力される。
【００４３】
ここで、ネットワーク用バッファメモリ１４とメインメモリ１２との間でデータ転送の周期をノード１０ごとに変化させることについて説明する。ＣＰＵ１１でネットワークのデータを扱うには、ネットワーク用バッファメモリ１４のデータをメインメモリ１２に転送する必要があるが、全てのデータを転送すると、図１０で示したように従来のリアルネットワークでの通信のように、ＣＰＵの負荷が大きくなってしまう。ところで、図１で、たとえばノード１０Ａ〜１０Ｃがプログラマブルコントローラなどの制御装置や、この制御装置によって制御される被制御機器で構成される場合を考える。また、データは、ノード１０Ａが処理するデータａ、ノード１０Ｂが処理するデータｂ、およびノード１０Ｃが処理するデータｃの３種類であるとする。そして、これらの３種類のデータａ，ｂ，ｃはそれぞれ異なった意味合いのデータであるものとする。たとえば、データａはモータの回転速度を示し、データｂはモータの温度を示し、データｃはモータの消費電流を示すものとする。
【００４４】
このとき、モータの回転速度は、短い時間で変化するため、できる限り早い周期でデータを取得する必要がある。一方、温度は変化が遅く、比較的遅い周期でデータを取得しても問題がない。そこで、それぞれのデータのメインメモリ１２へのデータの取得タイミングまたはメインメモリ１２からネットワーク用バッファメモリ１４へのデータ転送タイミングを、リンクスキャンの毎周期ではなく、２周期に１回、３周期に１回などのように重み付けを行って、重み付けに応じてデータの取得頻度または転送頻度を下げるようにした。たとえば、ここでは、図４に示されるように、データａに対しては転送頻度を「１」に設定し、データｂに対しては転送頻度を「３」に設定し、データｃに対しては転送頻度を「２」に設定したものとする。
【００４５】
図５は、この発明によるデータの転送方法の概念を模式的に示す図である。ここでは、ノード１０Ｃのメインメモリ１２とネットワーク用バッファメモリ１４の様子を示しており、図４の転送設定情報に基づいて転送が行われるものとする。リンクスキャンが開始される前には、メインメモリ１２にはデータは格納されていないものとする。また、ネットワーク用バッファメモリ１４はリンクスキャン開始前なので、ａ（０），ｂ（０），ｃ（０）となっている。
【００４６】
その後、リンクスキャンの１回目が開始されると、ネットワーク３０に接続されるノード１０Ａ，１０Ｂからデータａ（１），ｂ（１）がネットワークインタフェース１３を介して、バッファメモリ用ＤＭＡコントローラ１５によってネットワーク用バッファメモリ１４のそれぞれの領域に格納される。
【００４７】
データａについては、図４の転送設定情報によって１周期ごとに転送が行われるので、ＤＭＡ起動タイミングカウンタ１７がＣＰＵ１１に割り込み信号を出力し、ＣＰＵ１１はメインメモリ１２の使用を中止する。その後、データａ（１）がネットワーク用バッファメモリ１４からメインメモリ１２へとＤＭＡコントローラ１６によって転送される。なお、このとき、データｂ（１），ｃ（１）は、転送設定情報における転送タイミングとなっていないので、ネットワーク用バッファメモリ１４からメインメモリ１２へのデータｂ（１）の転送と、メインメモリ１２からネットワーク用バッファメモリ１４へのデータｃ（１）の転送は行われない。以上により、１回目のリンクスキャンが終了する。
【００４８】
ついで、リンクスキャンの２回目が開始されると、１回目のリンクスキャンと同様に、データａ（２），ｂ（２）がネットワーク用バッファメモリ１４に格納される。また、ＣＰＵ１１からは自ノード１０Ｃに関係するデータｃ（２）が作成され、メインメモリ１２の対応する領域に格納される。
【００４９】
データａについては１周期ごとに転送が行われ、データｃについては２周期ごとに転送が行われるので、ＤＭＡ起動タイミングカウンタ１７がＣＰＵ１１に割り込み信号を出力し、ＣＰＵ１１はメインメモリ１２の使用を中止する。データａ（２）については、１回目のリンクスキャンと同様に、ネットワーク用バッファメモリ１４からメインメモリ１２へと転送される。また、データｃ（２）については、メインメモリ１２からネットワーク用バッファメモリ１４へとＤＭＡコントローラ１６によって転送される。このとき、データｂ（２）は、転送タイミングではないので、ネットワーク用バッファメモリ１４からメインメモリ１２へのデータ転送は行われない。以上により、２回目のリンクスキャンが終了する。
【００５０】
さらに、リンクスキャンの３回目が開始されると、１回目のリンクスキャンと同様に、データａ（３），ｂ（３）がネットワーク用バッファメモリ１４に格納され、データｃ（２）がＣＰＵ１１からメインメモリ１２に格納される。その後、データａ（３）については１周期ごとに転送が行われ、データｂについては３周期ごとに転送が行われるので、ＤＭＡ起動タイミングカウンタ１７がＣＰＵ１１に割り込み信号を出力し、ＣＰＵ１１はメインメモリ１２の使用を中止する。そして、データａ（３），ｂ（３）がネットワーク用バッファメモリ１４からメインメモリ１２へ転送される。このとき、データｃ（３）については、転送タイミングではないので、メインメモリ１２からネットワーク用バッファメモリ１４へのデータ転送は行われない。以上により、３回目のリンクスキャンが終了する。
【００５１】
この後は、以上のように、データａについては、毎周期ごとにネットワーク用バッファメモリ１４からメインメモリ１２へのデータ転送が行われ、データｂについては、ｍを自然数とすると、周期３ｍごとにネットワーク用バッファメモリ１４からメインメモリ１２へのデータ転送が行われ、データｃについては、周期２ｍごとにメインメモリ１２からネットワーク用バッファメモリ１４へのデータ転送が行われる。
【００５２】
つぎに、ノード１０内のＣＰＵ１１、メインメモリ１２およびネットワーク用バッファメモリ１４の処理について説明する。図６は、この発明によるノード内の処理の様子を模式的に示す図である。なお、この説明では、ネットワークに３つのノードＳ，Ｔ，Ｕが接続されており、それぞれがリンクスキャンタイム中にデータｓ（ｎ），ｔ（ｎ），ｕ（ｎ）を送信し、相互に同期を取っているものとする。ここで、ｎは自然数を示し、リンクスキャンの回数を示している。また、図の横軸は時間を示している。
【００５３】
各リンクスキャンタイムにおいて、ノードＳが所定のタイミングで自ノードのメインメモリ１２にあるデータｓ（ｎ）をネットワーク用バッファメモリ１４に転送し、さらにネットワークインタフェース１３がネットワークを介してノードＴ，Ｕに順に送信する。ついで、ノードＴも所定のタイミングで自ノードのメインメモリ１２にあるデータｔ（ｎ）をネットワーク用バッファメモリ１４に転送し、さらにネットワークインタフェース１３を介してノードＵ，Ｓに順に送信する。そして、ノードＵも所定のタイミングで自ノードのメインメモリ１２にあるデータｕ（ｎ）をネットワーク用バッファメモリ１４に転送し、さらにネットワークインタフェース１３を介してノードＳ，Ｔに順に送信する。
【００５４】
これにより、図６に示されるノードＵでは、各リンクスキャンタイムにおいて、バッファメモリ用ＤＭＡコントローラ１５が、ネットワークインタフェース１３に到達したノードＳ，Ｔからのデータｓ（ｎ），ｔ（ｎ）をネットワーク用バッファメモリ１４に転送する。また、バッファメモリ用ＤＭＡコントローラ１５は、自ノードＵのデータｕ（ｎ）を、ネットワークインタフェース１３へ転送し、ネットワークインタフェース１３はデータｕ（ｎ）をネットワークに接続されるノードＳ，Ｔへと送信する。
【００５５】
各リンクスキャンタイム内のネットワーク用バッファメモリに対するデータの送受信処理は、上述したようにバッファメモリ用ＤＭＡコントローラ１５によって行われるので、ＣＰＵ１１がその処理に追われることはない。そのため、データ転送中においても、ＣＰＵ１１はネットワークでの作業以外のその他の動作処理を実行することができる。
【００５６】
１回目のリンクスキャンタイム中では、ノードＵのＣＰＵ１１は、受信したデータの処理を行わないので、ネットワーク用バッファメモリ１４からメインメモリ１２への転送処理が行われない。そのため、１回目のリンクスキャンタイム中では、ＣＰＵ１１は、空き時間が多く、ネットワークでの作業以外のその他の動作処理を実行することができる。
【００５７】
２回目のリンクスキャンタイム中では、ネットワーク用バッファメモリ１４中のノードＳに対応する領域からデータｓ（２）がメインメモリ１２へとＤＭＡコントローラによって転送される。そして、ＣＰＵ１１は、このデータｓ（２）を使用して所定の処理を実行する。なお、ＣＰＵ１１は、このデータｓ（２）を使用した処理以外の時間では、空き時間としてその他の動作処理を実行することが可能である。
【００５８】
３回目のリンクスキャンタイム中では、ネットワーク用バッファメモリ１４中のノードＴに対応する領域からデータｔ（３）がメインメモリ１２へとＤＭＡコントローラ１６によって転送される。そして、ＣＰＵ１１は、このデータｔ（３）を使用して所定の処理を実行する。なお、ＣＰＵ１１は、このデータｔ（３）を使用した処理以外の時間では、あき時間として、その他の動作処理を実行することが可能である。
【００５９】
４回目のリンクスキャンタイム中では、ＣＰＵ１１は、他ノードＳ，Ｔに送信するためのデータｕ（４）を生成する処理を行い、そのデータｕ（４）をメインメモリ１２の自ノードＵに割り当てられた領域に格納する。そして、ＤＭＡコントローラ１６は、メインメモリ１２中のデータｕ（４）をネットワーク用バッファメモリ１４のノードＵに割り当てられた領域に格納する。ここでも、ＣＰＵ１１は、データｕ（４）を生成する処理以外の時間では、空き時間として、その他の動作処理を実行することができる。
【００６０】
上記で示したように、バッファメモリ用ＤＭＡコントローラ１５とＤＭＡコントローラ１６を設けることによって、ネットワークを介したデータの転送処理をＣＰＵ１１が行うことがないので、その分、ＣＰＵ１１は他の処理を実行することができる。その結果、リンクスキャンタイムを短縮化することが可能である。
【００６１】
図１０に示した従来のノード内の処理に比して、図６に示されるこの実施の形態によるノード内の処理では、他ノードからのデータをネットワーク用バッファメモリ１４に格納し、このネットワーク用バッファメモリ１４に格納されたデータごとに所定の周期でメインメモリ１２にＤＭＡによって転送するようにしたので、メインメモリ１２へのデータの転送とメインメモリ１２からネットワーク用バッファメモリ１４へのデータの転送をＣＰＵ１１が処理することがないので、ＣＰＵ１１にかかる負荷を削減することができる。そして、従来、ＣＰＵが実行していたネットワークを用いたデータ転送処理に要した時間を他の処理に振り向けることができ、そのうちの余った時間を短縮化することも可能である。
【００６２】
また、たとえばＣＰＵ１１がメインメモリ１２に転送したデータを用いる頻度に応じて、ネットワーク用バッファメモリ１４からメインメモリ１２へとデータを転送するようにすれば、メインメモリ１２へのデータ転送の無駄を省くこともできる。
【００６３】
なお、上述した説明では、転送設定情報は、ネットワークに接続されるノード１０ごとに設定するようにしていた。しかし、ノード１０で処理されるデータは、１種類ではなく、複数種類ある場合も存在する。そこで、図３に示される転送設定情報において、各ノード１０に対して割り当てられた領域を、そのノード１０が扱うデータ種類の数にさらに分割して、分割した各領域をデータ種類に応じて割り当て、ノード種類とデータ種類に応じて転送タイミングを設定することも可能である。
【００６４】
この実施の形態によれば、ネットワークに接続される他ノードとの通信に使用されるデータを格納するネットワーク用バッファメモリ１４を設け、このネットワーク用バッファメモリ１４へのデータの転送処理を、ＤＭＡを用いて行うようにしたので、他ノードとの間のデータ転送をＣＰＵ１１が処理する必要がなくなり、ＣＰＵ１１にかかる負荷を従来に比して削減することができるという効果を有する。
【００６５】
また、ネットワーク用バッファメモリ１４とメインメモリ１２との間のデータ転送は、データごとに予め設定された周期で、ＤＭＡを用いて行われるようにしたので、ＣＰＵ１１にかかる負荷を削減することができる。以上のように、従来ＣＰＵで実行していたネットワークでのデータ転送処理をＣＰＵ１１で行わないようにしたので、その分、ＣＰＵ１１全体の動作に余裕ができ、その他の動作処理に振り向けることができる。そして、余った時間を短縮化することができるため、リンクスキャンタイムも従来に比して短くすることができる。
【００６６】
さらに、ＣＰＵ１１が処理する際に必要なデータのみをメインメモリ１２に転送することで、全てのデータをメインメモリ１２に転送する場合に比して、無駄を省き、効率のよいデータ転送を実現することができる。
【産業上の利用可能性】
【００６７】
以上のように、この発明にかかるデータ転送制御装置は、リアルタイムでデータの更新が必要なノードがネットワークを介して接続された制御システムに有用である。
【図面の簡単な説明】
【００６８】
【図１】この発明が適用されるリアルタイムネットワークを用いた制御システムの構成を模式的に示す図である。
【図２】ネットワーク用バッファメモリ内のデータ構成の一例を示す図である。
【図３】転送設定情報の一例を示す図である。
【図４】メインメモリとネットワーク用バッファメモリとのデータの割り当て状態の詳細を示す図である。
【図５】この発明によるデータの転送方法の概念を模式的に示す図である。
【図６】この発明によるノード内の処理の様子を模式的に示す図である。
【図７】リアルタイムネットワークを有する制御システムの構成の従来例を模式的に示す図である。
【図８】ノードのメインメモリ内のデータ構成の一例を示す図である。
【図９】リンクスキャンタイムの概要を示す図である。
【図１０】リアルタイムネットワークでの通信時におけるＣＰＵとメインメモリの動作の概略を示す図である。
【符号の説明】
【００６９】
１０，１０Ａ〜１０Ｃ  ノード
１１  ＣＰＵ
１２  メインメモリ
１３  ネットワークインタフェース
１４  ネットワーク用バッファメモリ
１５  バッファメモリ用ＤＭＡコントローラ
１６  ＤＭＡコントローラ
１７  ＤＭＡ起動タイミングカウンタ
３０  ネットワーク
【図１】
2008299581.tif 000003
【図２】
2008299581.tif 000004
【図３】
2008299581.tif 000005
【図４】
2008299581.tif 000006
【図５】
2008299581.tif 000007
【図６】
2008299581.tif 000008
【図７】
2008299581.tif 000009
【図８】
2008299581.tif 000010
【図９】
2008299581.tif 000011
【図１０】
2008299581.tif 000012