(57)【要約】【課題】複数のコントローラから構成されるネットワーク型の分散システムにおいて、データ更新の際に、通信量を減らす方法を提供する。【解決手段】コントローラ１２ａのデータを他のコントローラやエンジニアリングツール１１などネットワーク上の外部機器から取得する処理で、データ取得先である前記コントローラ１２ａのデータの変化傾向に応じて、最小時間間隔と最大時間間隔の間で更新周期を変化させて、コントローラ１２ａからデータ取得元である前記外部機器の該当データを更新する。【選択図】図１
2006276951.tif 000002
【特許請求の範囲】
【請求項１】
複数のコントローラを備えたネットワーク型の分散システムに接続され、前記コントローラのデータを取得するためのデータ取得装置において、
前記コントローラのデータの変化傾向に基づいてデータ更新周期を変化させることにより、
取得する前記コントローラのデータが更新されることを特徴とするデータ取得装置。
【請求項２】
複数のコントローラと、前記コントローラのデータを取得するためのデータ取得装置と、が接続されるネットワーク型の分散システムにおいて、
前記データ取得装置は、前記コントローラのデータの変化傾向に基づいてデータ更新周期を変化させることにより、
取得する前記コントローラのデータが更新されることを特徴とする分散システム。
【請求項３】
複数のコントローラと、前記コントローラのデータを取得するためのデータ取得装置と、が接続されるネットワーク型の分散システムにおいて、
前記コントローラのデータの変化傾向に基づいてデータ更新周期を変化させることにより、
前記外部機器が取得する前記コントローラのデータが更新されることを特徴とする分散システムのデータ更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコントローラなどの機器から構成されるネットワーク型の分散システムに関し、特にデータ更新方法に関する。
【背景技術】
【０００２】
コントローラとそのエンジニアリングを行うためのエンジニアリングツールとの間では、コントローラに指令を送ったり、コントローラの状態を取得したりといったデータの授受処理を行っている。同様に、コントローラ同士で一方のコントローラが他方のコントローラの機能を呼び出す機能呼び出し処理もしている。機能呼び出し処理には、機能を呼び出す電文の書式を規定し、通信により電文を伝達することで実現する手段や、ＲＰＣ（リモートプロシージャコール）を用いた遠隔関数呼び出しにより実現する手段や、ＣＯＲＢＡ（Ｃｏｍｍｏｎ  Ｏｂｊｅｃｔ  Ｒｅｑｕｅｓｔ  Ｂｒｏｋｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ）などの分散オブジェクト技術を用いてリモート関数呼び出しによって実現する手段などがある。いずれの実現手段においても、エンジニアリングツールやコントローラが別のコントローラのデータを取得する場合には、取得元のコントローラから取得先のコンローラが持つデータ取得機能を周期的に呼び出すことで処理を行っている。データ取得機能を周期的に呼び出すことにより、演算処理や通信処理などに一定の処理負荷がかかることは明らかであり、取得先のコントローラの状態が変化していない場合にも電文による通信やＲＰＣまたはリモート関数呼び出しによる処理が行われていることは、コントローラやエンジニアリングツールの演算処理や通信処理などに無駄が生じているといえる。
【０００３】
このような無駄を減らす対策として、従来は、監視する対象のデータを減らすことで通信量を削減している（例えば、特許文献１参照）。ここで、従来の方法を適用する分散システムを図６に示す。図６において、監視装置６１から、コントローラ６２ａの監視を行う場合、監視部６１２が周期的にコントローラ６２ａ通信部に指令を出し、制御部６２１が記憶手段６２３に記録したレジスタデータを読み出して、監視を行っている。定期的に監視したいレジスタデータ数が多い場合は通信処理量が多くなり、コントローラや監視装置の負荷が高くなる。これに対する対策として、特許文献１記載のの技術では、監視装置が監視すべきプログラマブル・コントローラが持つデータ領域を複数レジスタ毎に区切り、その領域内でデータが変化したレジスタのうち、最も小さいレジスタ番号と最も大きいレジスタ番号を格納するエリアであるアドレス格納レジスタのみを監視させ、アドレス格納レジスタのデータ変化が発生した場合のみ、そのデータ値に従ったレジスタを監視するという手段をとっていた。
【特許文献１】特開２００１−１９５１１８号公報（第３−４頁、図３）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来の方法では、取得したいデータそのものではなく変化した範囲を監視対象のデータとし、実際に値を取得するデータの個数を減らすことで通信量を削減するという手順をとっているため、取得元が一定周期で監視対象データを取得しており、監視の為の工程数や通信処理回数は削減されていない。また、データ領域内で値が変化した最も小さいレジスタ番号と最も大きいレジスタ番号を用いて実際にデータを取得する範囲を制限しているが、レジスタの割付はアプリケーションやシステムの設計に依存するものであり、監視装置のデータ量を削減するのに都合よく配置されているとは限らず、レジスタの割り付け方によっては必ずしもデータ量が減るとはいえず、取得するデータ量が減らない場合には、データ監視処理とデータ取得処理とに分離したことで、全体としての処理量が増えることが予測される。
本発明はこのような問題点に鑑みてなされたものであり、データ更新処理で通信処理量を減らすことのできる分散システムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記問題を解決するため、本発明は、次のようにしたのである。
請求項１に記載の発明は、複数のコントローラを備えたネットワーク型の分散システムに接続され、前記コントローラのデータを取得するためのデータ取得装置において、前記コントローラのデータの変化傾向に基づいてデータ更新周期を最小時間間隔と最大時間間隔の間で変化させることにより、取得する前記コントローラのデータが更新されることを特徴とするものである。
請求項２に記載の発明は、複数のコントローラと、前記コントローラのデータを取得するためのデータ取得装置と、が接続されるネットワーク型の分散システムにおいて、前記データ取得装置は、前記コントローラのデータの変化傾向に基づいてデータ更新周期を最小時間間隔と最大時間間隔の間で変化させることにより、取得する前記コントローラのデータが更新されることを特徴とするものである。
請求項３に記載の発明は、複数のコントローラと、前記コントローラのデータを取得するためのデータ取得装置と、が接続されるネットワーク型の分散システムにおいて、前記コントローラのデータの変化傾向に基づいてデータ更新周期を最小時間間隔と最大時間間隔の間で変化させることにより、前記外部機器が取得する前記コントローラのデータが更新されることを特徴とするものである。
【発明の効果】
【０００６】
請求項１〜３に記載の発明によると、複数のコントローラから構成されるネットワーク型の分散システムにおいて、コントローラのデータを他のコントローラやエンジニアリングツールなどネットワーク上のデータ取得装置が取得する場合に、データ取得のために行う通信量を減らすことができる。
【発明を実施するための最良の形態】
【０００７】
以下、本発明の方法の具体的実施例について、図に基づいて説明する。
【実施例１】
【０００８】
図１は、本発明の方法を実施する分散システムの構成を示す概略図である。図１において、コントローラ１２ａは、制御部１２１と監視部１２２と記憶手段１２３を備えている。他のコントローラ１２ｂおよび１２ｃとの間やエンジニアリングツール１１との間は通信伝送路１３によって接続され、お互いに通信を行うことが出来る。コントローラ１２ａは被制御機器１４と信号伝送路１５によって接続されている。被制御機器とは例えばサーボドライバであり、コントローラがサーボドライバに信号伝送路１５を通じて位置指令を与えてサーボモーターの制御を行っている。コントローラは、サーボモーターよりエンコーダーパルスの値や状態値を取得することができる。エンジニアリングツール１１は、表示部１１１を備えており、コントローラと通信伝送路１３により接続されており、コントローラのデータを取得して表示する機能を持っている。
【０００９】
図２は、本発明の方法を実施する分散システムのソフトウェア構成例を示す概略図である。図２において、コントローラＡ・２２とコントローラＢ・２３とコントローラＣ・２４は通信伝送路１３で相互に接続されている。コントローラＡは分散ミドルウェア２２２を搭載し、分散協調タスク２２１が実行されている。分散協調タスク２２１は、分散して動作する他のコントローラＢ・２３およびＣ・２４が備える関数に対して、分散ミドルウェアを用いてダイレクトに呼び出し要求を出して協調作業の指令を行うことができる。コントローラＢ・２３およびコントローラＣ・２４は分散ミドルウェア２３１、２４１を搭載し、機器制御タスク２３２、２４２が実行されている。分散ミドルウェアにより、他のコントローラＡ・２２からの関数呼び出し要求に応えて実際の機器制御タスク２３２、２４２内の関数処理を実行することができる。
【００１０】
他のコントローラやエンジニアリングツールからコントローラが持つ機能を呼び出す場合を、分散オブジェクト実行環境のミドルウェアであるＣＯＲＢＡを例に説明する。機能を提供する側をサーバー、機能を利用する側をクライアントとする。本実施例においては、サーバーはコントローラであり、クライアントは、エンジニアリングツールである。サーバーとクライアント間のインターフェースは、実装するプログラミング言語に依存しないインターフェース定義言語（ＩＤＬ）で記述される。分散オブジェクトミドルウェアに付属のＩＤＬコンパイラにより、ユーザーがＩＤＬで定義したインターフェースから、サーバー機能を実装する抽象クラスとなるスケルトンクラス、クライアントよりサーバー機能を呼び出す抽象クラスとなるスタブクラスが、プログラミング言語用の言語バインディングとしてそれぞれ生成される。クライアントはスタブクラスを使用してサーバーの関数をローカル関数の呼び出しとして呼び出すことができる。リモート関数呼び出しは、関数の実装をサーバー側に持たせ、データを取得する関数を呼び出す処理をクライアントで実行する。クライアントで実行された関数呼び出しは、分散オブジェクトミドルウェアを通じてコントローラ内部で動作するサーバーの関数呼び出しに変換され、サーバーでの関数の実行結果がクライアントでの関数呼び出しの実行結果へと伝達される。
【００１１】
図３は、本発明の方法を実施する分散システムのソフトウェア構成例のうち、コントローラとエンジニアリングツールのみを抜き出して表した、コントローラ３２およびエンジニアリングツール３１内部のタスクを表す概略図である。エンジニアリングツール３１は、コントローラと通信伝送路３３によって接続されている。コントローラ内部３２では、サーボモーターなどの被制御機器３４を制御する機器制御タスク３２１が実行される。機器制御タスク３２１は被制御機器３４に対する指令をデータ格納部３２４に書き込み、また、被制御機器３４から受け取った応答をデータ格納部３２４に書き込む。エンジニアリングツール３１の内部では、コントローラ３２のデータを内部のデータ格納部３１４に格納するためのデータ保存関数を備えたデータ更新タスク３１１と表示更新タスク３１２が実行される。分散ミドルウェアを組み込んだエンジニアリングツール３１およびコントローラ３２間で、一方が提供する分散オブジェクトのリモート関数を他方から直接呼び出すことができる。
【００１２】
本発明におけるデータ更新は、以下の手順で行う。図４はＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ Ｌａｎｇｕａｇｅ）記法により本発明の方法のインターフェースを表す図である。サーバーは、図４に示すようなデータを監視するタスク起動のためのデータ監視インターフェース４１を提供する。インターフェース４１は、監視開始関数４１１（ｓｔａｒｔ）、監視停止関数４１２（ｓｔｏｐ）、監視対象データ設定関数４１３（ａｄｄＶａｒｉａｂｌｅ）、最大更新間隔設定関数４１４（ｓｅｔＩｎｔｅｒｖａｌＭａｘ）、最小更新間隔設定関数４１５（ｓｅｔＩｎｔｅｒｖａｌＭｉｎ）を持つ。クライアントは、図４に示すような、データ更新インターフェース４２を提供する。データ更新インターフェース４２は、各データ型の引数に対して内部データを書き換えるための公開関数４２１〜４２５（ｕｐｄａｔｅＤａｔａ）を持つ。データ監視インターフェース４１はまた、クライアントが実装するデータ更新インターフェース４２を実体化したオブジェクトのリモート参照を、サーバーが実装するデータ監視インターフェース４１に設定する関数４１７（ｓｅｔＣａｌｌｂａｃｋＯｂｊｅｃｔ）を持つ。クライアントは、サーバーのデータ監視インターフェース４１を実体化したオブジェクトのリモート参照をミドルウェアの機能を使って取得し、クライアント自身が持つデータ更新オブジェクトの参照を関数４１７によってサーバーに渡し、監視対象データ設定関数４１３により取得したいデータを設定し、最大更新間隔設定関数４１４および最小更新間隔設定関数４１５を用いて更新間隔を設定し、監視開始関数４１２によりデータ監視タスクを起動する。
【００１３】
図５は本発明の方法の処理手順を表すフローチャートである。図５のフローチャートに示すように、データ監視タスクは、クライアントにより設定された監視対象データをクライアントにより設定された最小更新間隔で周期的にデータ格納部から読み出し（ステップ５１）、監視の初回であれば比較なしで、初回以降であればデータ格納用変数には前回の値が格納されており、今回読み出した値と比較して異なれば、クライアントのデータを前記データ更新インターフェース４２が備える、各データ型の引数に対して内部データを書き換えるための前記公開関数４２１〜４２５（ｕｐｄａｔｅＤａｔａ）を呼び出して更新し（ステップ５５）た後で、今回読み出した値をデータ格納用変数に格納する（ステップ５５）。このようにして、クライアントのデータは、サーバーからのリモート関数呼び出しによって更新される。
【００１４】
データ変化の傾向に応じて更新周期を一定間隔で変化させて、コントローラ内でのデータ変化がない場合にも更新する手順は以下のようにする。
図５のフローチャートにおいて、監視対象のデータをｉ回読み出したときの値をＸ＝｛ｘ１，ｘ２，・・・，ｘｉ｜ｉは正の整数｝とする。また、ｘｉが繰り返された回数をａｎ（ｎは正の整数）とする。
ある時点で新たに得られたｘｉに対し、前回読み出した値ｘｉ−１と今回読み出した値ｘｉを比較して（ステップ５４）、ｘｉ−１と異なる値であれば、ｎに１を加算（ステップ５１１）して新たなａｎを作成し、ｘｉが、ｘｉ−１と同じ値であれば、ａｎに１を加算する（ステップ５５）。このとき、Ａ＝｛ａ１，ａ２，・・・，ａｎ｝は格納域に記憶しておく。
データの変化傾向を調べるため、定数ｃｏｕｎｔ回データを読み出すこととし、この回数になるまで一連の監視処理を繰り返した回数を、変数ｉに記憶する。変数ｉが所定の回数ｃｏｕｎｔよりも大きくなれば（ステップ５６）、ｉに０を格納し（ステップ５７）、休眠時間を決定するための係数ｂを次のようにして求める（ステップ５８）。
変数ｉが定数ｃｏｕｎｔに達したとき、監視対象データが変化した回数がｎに格納され、変数｛ａ１〜ａｎ｝には監視対象データが変化するまで同じ値を繰り返した回数が格納されているので、ｎに関するａｎの平均値（Σａｎ  ／  ｎ）の整数部分（ｆｌｏｏｒ関数により求める）と、最大更新時間間隔Ｔｍａｘのうち小さいほうの値（ｍｉｎ関数により求める）により係数ｂを求め（ステップ５８）、係数ｂを最小更新時間間隔Ｔｍｉｎに乗じてタスクを休眠させる時間を伸ばすことで監視周期を変化させる（ステップ５１３）。なお、最大更新時間間隔Ｔｍａｘおよび最小更新時間間隔Ｔｍｉｎは、事前にクライアントから、最大更新間隔設定関数４１４（ｓｅｔＩｎｔｅｒｖａｌＭａｘ）、最小更新間隔設定関数４１５（ｓｅｔＩｎｔｅｒｖａｌＭｉｎ）を使ってそれぞれ設定しておくものである。
【００１５】
このように、データ取得先であるコントローラのデータが変化する傾向に応じて更新周期を変化させて、データ取得先のコントローラからデータ取得元である外部機器の該当データを更新しているので、分散システムにおけるデータ更新処理で通信処理を減らすことができるのである。
【産業上の利用可能性】
【００１６】
コントローラ以外の一般機器での通信を伴うデータ更新にも適用することが出来る。
【図面の簡単な説明】
【００１７】
【図１】本発明の方法を実施する分散システムの構成を示す概略図
【図２】本発明の方法を実施する分散システムのソフトウェア構成例を示す概略図
【図３】本発明の方法のコントローラおよびエンジニアリングツール内部のタスクを表す概略図
【図４】本発明の方法のインターフェースを表す図
【図５】本発明の方法の処理手順を表すフローチャート
【図６】従来の方法を適用する分散システムの構成を示す概略図
【符号の説明】
【００１８】
１１  エンジニアリングツール
１２ａ、１２ｂ、１２ｃ  コントローラ
１３  通信伝送路
１４ａ、１４ｂ、１４ｃ  被制御機器
１５ａ、１５ｂ、１５ｃ  信号伝送路
１１１ 表示部
１２１ 制御部
１２２ 監視部
１２３ 記憶手段      
２２、２３，２４     コントローラ
２２１、２３１、２４１  分散協調タスク
２２２ 分散ミドルウェア
２３２、２４２  機器制御タスク
３１  エンジニアリングツール
３２  コントローラ
３３  通信伝送路
３４  被制御機器
３１１  データ更新タスク
３１２  表示更新タスク
３１３、３２３  分散ミドルウェア
３１４、３２４  データ格納部
３２１ 機器制御タスク
３２５ 監視タスク
４１  データ監視制御インターフェース
４２  データ更新インターフェース
６１  監視装置
６２ａ、６２ｂ、６２ｃ  コントローラ
６３  通信伝送路
６４ａ、６４ｂ、６４ｃ  被制御機器
６５ａ、６５ｂ、６５ｃ  信号伝送路
６１１  表示部
６２１  制御部
６２２  監視部
６２３  記憶手段     
【図１】
2006276951.tif 000003
【図２】
2006276951.tif 000004
【図３】
2006276951.tif 000005
【図４】
2006276951.tif 000006
【図５】
2006276951.tif 000007
【図６】
2006276951.tif 000008