(57)【要約】      （修正有）【課題】スレーブ装置から制御データを収集する処理負荷を、ユーザが管理できるマスタ装置を提供する。【解決手段】スレーブ装置から周期的に取得した制御データから、外部装置２０に送信すべき複数のデータの各々を、所定の収集規則に従って繰り返し収集する収集部１４０と、単位時間あたりに収集されるデータ量のユーザが指定する最大値を受け付ける受付部１２０と、所定の収集規則に従う収集部によって単位時間あたりに収集されるデータのデータ量が、受付部により受け付けられた最大値以下となるように、所定の収集規則を調整する第１調整部１３０と、を備える。【選択図】図１
2020052441.tif 000002
【特許請求の範囲】
【請求項１】
マスタスレーブ制御システムにおけるマスタ装置であって、
スレーブ装置から周期的に取得した制御データから、外部装置に送信すべき複数のデータの各々を、所定の収集規則に従って、繰り返し収集する収集部と、
前記収集部によって単位時間あたりに収集されるデータのデータ量について、ユーザの指定する最大値を受け付ける受付部と、
前記所定の収集規則に従う前記収集部によって単位時間あたりに収集されるデータのデータ量が、前記受付部により受け付けられた前記最大値以下となるように、前記所定の収集規則を調整する第１調整部と、
を備えるマスタ装置。
【請求項２】
前記所定の収集規則は、前記収集部によって収集される前記複数のデータの各々の収集順序を示す順列を含み、
前記収集部は、前記複数のデータの各々を、前記順列に従って繰り返し収集し、
前記所定の収集規則に従う前記収集部によって単位時間あたりに収集されるデータのデータ量は、前記順列を一巡するまでに前記収集部によって収集されるデータのデータ量を、前記順列を一巡するまでに前記収集部が要する時間で除した値である
請求項１に記載のマスタ装置。
【請求項３】
前記第１調整部は、前記所定の収集規則として、（１）前記複数のデータの各々の、前記順列における出現回数、（２）前記複数のデータの各々の、前記順列における１回の出現ごとに収集されるデータ点数、（３）前記複数のデータの各々の、前記順列における１回の出現ごとに単位時間当たりに収集されるデータ点数である収集周波数、および、（４）前記順列を一巡するまでに前記収集部が要する時間の少なくとも１つを調整する
請求項２に記載のマスタ装置。
【請求項４】
前記収集部によって収集された前記複数のデータの各々に対して付与される評価値が所定の基準を満たすと、当該所定の基準を満たす評価値の付与されたデータについて、（１）前記順列における出現回数、（２）前記順列における１回の出現ごとに収集されるデータ点数、および、（３）前記順列における１回の出現ごとに単位時間当たりに収集されるデータ点数である収集周波数の少なくとも１つを調整する第２調整部をさらに備え、
前記第１調整部は、前記第２調整部により調整された前記出現回数、前記順列における１回の出現ごとに収集されるデータ点数、および、前記収集周波数を含む前記所定の収集規則を、前記最大値を用いてさらに調整する
請求項２または３に記載のマスタ装置。
【請求項５】
前記第１調整部は、（１）前記複数のデータの各々の、前記順列における１回の出現ごとに収集されるデータ点数、および、（２）前記複数のデータの各々の、前記順列における１回の出現ごとに単位時間当たりに収集されるデータ点数である収集周波数の少なくとも一方を、一律の割合で小さくする
請求項２から４のいずれか１項に記載のマスタ装置。
【請求項６】
（１）前記最大値、（２）前記第１調整部によって調整された前記所定の収集規則に従う前記収集部によって単位時間あたりに収集されるデータのデータ量、および、（３）両者の差をユーザに対して表示させる表示制御部をさらに備える
請求項１から５のいずれか１項に記載のマスタ装置。
【請求項７】
前記収集部によって収集される前記複数のデータの各々は、前記スレーブ装置から周期的に取得した制御データのうち、ユーザによって収集対象として選択されたデータである
請求項１から６のいずれか１項に記載のマスタ装置。
【請求項８】
マスタスレーブ制御システムにおけるマスタ装置の制御方法であって、
スレーブ装置から周期的に取得した制御データから、外部装置に送信すべき複数のデータの各々を、所定の収集規則に従って、繰り返し収集する収集ステップと、
前記収集ステップにて単位時間あたりに収集されるデータのデータ量について、ユーザの指定する最大値を受け付ける受付ステップと、
前記所定の収集規則に従って前記収集ステップにて単位時間あたりに収集されるデータのデータ量が、前記受付ステップにて受け付けられた前記最大値以下となるように、前記所定の収集規則を調整する第１調整ステップと、
を含む制御方法。
【請求項９】
請求項１から７のいずれか一項に記載のマスタ装置としてコンピュータを機能させるための情報処理プログラムであって、前記各部としてコンピュータを機能させるための情報処理プログラム。
【請求項１０】
請求項９に記載の情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マスタスレーブ制御システムにおけるマスタ装置等に関する。
【背景技術】
【０００２】
従来から、ＦＡ（Factory Automation）の分野において、工場などに設置される生産設備等に係るデータを、効率的に収集、管理しようとする試みがなされている。例えば、下掲の特許文献１には、上位装置により設定される収集間隔で制御データを収集し、収集した制御データを、収集間隔に等しいか、または大きい転送間隔で、上位装置に転送するＰＬＣ（プログラマブル・ロジック・コントローラ、Programmable Logic Controller）が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】再公表ＷＯ２０１２／１１１６５３
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述のような従来技術は、制御周期ごとに取得したデバイスデータ等の制御データをＰＬＣが上位装置へ転送する場合、転送に関係する処理の処理負荷が大きくなると、制御処理等の転送以外の処理の実行に悪影響を及ぼし得るという問題がある。より具体的には、従来技術には、ＰＬＣ等のマスタスレーブ制御システムにおけるマスタ装置について、外部サーバ等の外部装置に送信すべきデータを制御データから収集する処理の処理負荷が大きくなった場合に、収集処理以外の処理の実行が影響を受け得るとの視点がない。以下に詳細を説明する。
【０００５】
一般に、ＰＬＣが制御周期ごとに取得するデバイスデータ等の制御データは、種類も量も極めて多いため、これらを全て外部サーバ等の外部装置へ転送するのは効率的ではない。そこで、例えばＰＬＣは、制御周期ごとに取得した制御データから所望のデータを収集し、収集した所望のデータを外部装置に送信する。
【０００６】
ただし、例えばマスタスレーブ制御システムとして構築されるＦＡシステムについて、その監視、検証等を精緻に行うためには、監視、検証の対象として外部装置に保存する制御データは、できるだけ多くしたいとの要望がある。そのため、ＰＬＣには、制御周期ごとに取得した制御データから、できるだけ多くのデータを、外部装置に送信すべき所望のデータとして収集することが期待される。
【０００７】
そのため、ＰＬＣ等のマスタスレーブ制御システムにおけるマスタ装置について、外部装置に送信すべきデータを制御データから収集する処理の処理負荷が、収集処理以外の処理の実行に影響を及ぼすほどに大きくなる可能性がある。
【０００８】
本発明の一態様は、前記の問題点に鑑みてなされたものであり、マスタスレーブ制御システムにおけるマスタ装置について、外部装置に送信すべきデータを制御データから収集する処理の処理負荷を、ユーザが管理できるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、本発明の一態様に係るマスタ装置は、マスタスレーブ制御システムにおけるマスタ装置であって、スレーブ装置から周期的に取得した制御データから、外部装置に送信すべき複数のデータの各々を、所定の収集規則に従って、繰り返し収集する収集部と、前記収集部によって単位時間あたりに収集されるデータのデータ量について、ユーザの指定する最大値を受け付ける受付部と、前記所定の収集規則に従う前記収集部によって単位時間あたりに収集されるデータのデータ量が、前記受付部により受け付けられた前記最大値以下となるように、前記所定の収集規則を調整する第１調整部と、を備えている。
【００１０】
前記の構成によれば、前記マスタ装置は、単位時間あたりに収集するデータのデータ量が前記最大値以下となるように前記所定の収集規則を調整し、調整した前記所定の収集規則に従って、前記制御データから、前記複数のデータの各々を繰り返し収集する。
【００１１】
ここで、単位時間あたりに収集するデータのデータ量が大きくなるほど、前記マスタ装置のデータ収集に係る単位時間当たりの処理負荷が大きくなることは明らかである。つまり、前記最大値は、前記マスタ装置のデータ収集に係る単位時間当たりの処理負荷に対応する。
【００１２】
したがって、前記マスタ装置は、データ収集に係る単位時間当たりの処理負荷が、ユーザの指定する前記最大値に対応する処理負荷以下となるように、前記制御データから、前記外部サーバ等の外部装置に送信すべきデータを収集することができるとの効果を奏する。言い換えれば、前記マスタ装置によってユーザは、前記制御データから前記複数のデータの各々を収集する処理に係る処理負荷を管理できるようになるとの効果を奏する。具体的には、ユーザは、前記マスタ装置に、「前記スレーブ対象に対する制御処理などの、データ収集処理以外の処理」の実行に影響のない適切な処理負荷で、前記外部装置に送信すべきデータを、前記制御データから収集させることができる。
【００１３】
また、「前記マスタ装置が単位時間あたりに収集するデータのデータ量」は、ユーザにとって直感的に把握しやすく、かつ、「前記マスタ装置の、データ収集に係る単位時間当たりの処理負荷」を正確に示すことのできる指標である。
【００１４】
したがって、前記マスタ装置は、「データ収集に係る単位時間当たりの処理負荷」の指標として正確で、かつ、ユーザにとって直感的な把握の容易な「単位時間あたりに収集するデータのデータ量」に基づいて、データ収集処理を管理できるとの効果を奏する。
【００１５】
本発明の一態様に係るマスタ装置において、前記所定の収集規則は、前記収集部によって収集される前記複数のデータの各々の収集順序を示す順列を含み、前記収集部は、前記複数のデータの各々を、前記順列に従って繰り返し収集し、前記所定の収集規則に従う前記収集部によって単位時間あたりに収集されるデータのデータ量は、前記順列を一巡するまでに前記収集部によって収集されるデータのデータ量を、前記順列を一巡するまでに前記収集部が要する時間で除した値であってもよい。
【００１６】
前記の構成によれば、前記マスタ装置は、前記制御データから前記順列に従って繰り返し、前記外部装置に送信すべき前記複数のデータの各々を、収集する。
【００１７】
したがって、前記マスタ装置は、例えば前記マスタスレーブ制御システムの監視、検証を行うためのデータを、前記順列に示される収集順序で、前記制御データから繰り返し収集することができるとの効果を奏する。
【００１８】
本発明の一態様に係るマスタ装置において、前記第１調整部は、前記所定の収集規則として、（１）前記複数のデータの各々の、前記順列における出現回数、（２）前記複数のデータの各々の、前記順列における１回の出現ごとに収集されるデータ点数、（３）前記複数のデータの各々の、前記順列における１回の出現ごとに単位時間当たりに収集されるデータ点数である収集周波数、および、（４）前記順列を一巡するまでに前記収集部が要する時間の少なくとも１つを調整してもよい。
【００１９】
前記の構成によれば、前記マスタ装置は、前記所定の収集規則として、前記複数のデータの各々の、前記出現回数、前記順列における１回の出現ごとに収集するデータ点数、前記収集周波数、および、前記順列を一巡するのに要する時間の少なくとも１つを調整する。
【００２０】
ここで、複数の時点の各々における「前記複数のデータの各々」を、前記外部サーバ等の外部装置に蓄積して、一貫性のある解析を実行しようとする場合、前記外部装置に送信する前記複数のデータの各々の前記収集周波数は、複数の時点の各々で不変とするのが望ましい。例えば、或るデータＤａについて、或る時点Ｔ１での前記収集周波数が５００Ｈｚである場合、その或るデータＤａの、別の時点Ｔ２での前記収集周波数は、その或るデータＤａに対して一貫性のある解析を実行しようとする場合には、５００Ｈｚとするのが望ましい。そこで、例えば一貫性のある解析を目的として前記複数のデータの各々を収集する場合、前記マスタ装置は、前記複数のデータの各々の収集に際し、前記複数のデータの各々の前記収集周波数を変更せずに、前記所定の収集規則に含まれる、それ以外の項目を調整する。具体的には、前記マスタ装置は、前記所定の収集規則として、前記複数のデータの各々の、前記出現回数、前記順列における１回の出現ごとに収集するデータ点数、および、前記順列を一巡するのに要する時間の少なくとも１つを調整する。
【００２１】
また、前記複数のデータの各々を、所定の順序で、まんべんなく（つまり、特定のデータに偏ることなく）収集したい場合、前記マスタ装置は、前記複数のデータの各々の、前記出現回数および前記順列における１回の出現ごとに収集するデータ点数を変更しない。前記マスタ装置は、前記所定の収集規則のうち、前記複数のデータの各々の前記収集周波数、および、前記順列を一巡するのに要する時間の少なくとも一方を調整して、前記制御データから、前記複数のデータの各々を繰り返し収集する。
【００２２】
さらに、前記複数のデータの各々を収集する時間（＝収集期間）を連続させる必要がない場合、前記マスタ装置は、前記所定の収集規則のうち、前記順列を一巡するのに要する時間を調整する。前記マスタ装置は、例えば、３種類のデータＤａ、Ｄｂ、Ｄｃをこの順序で繰り返し収集する場合、以下のように空き時間（＝待ち時間）を挿入して、「Ｄａ、Ｄｂ、Ｄｃの各々を、この順序で、１回収集する」のに要する時間を調整する。すなわち、前記マスタ装置は、「Ｄａの収集終了後からＤｂの収集開始までの間」、「Ｄｂの収集終了後からＤｃの収集開始までの間」、および、「Ｄｃの収集終了後からＤａの収集開始までの間」の少なくとも１つに、空き時間を挿入する。
【００２３】
つまり、前記マスタ装置は、前記所定の収集規則のうち、前記複数のデータの各々の、前記出現回数、前記順列における１回の出現ごとに収集するデータ点数、前記収集周波数、および、前記順列を一巡するのに要する時間の少なくとも１つを調整する。したがって、前記マスタ装置は、前記所定の収集規則のうち、前記複数のデータの利用目的等に好適な項目を適宜調整して、データ収集に係る処理負荷が前記最大値に対応する処理負荷以下となるように、前記複数のデータを収集できるとの効果を奏する。
【００２４】
本発明の一態様に係るマスタ装置は、前記収集部によって収集された前記複数のデータの各々に対して付与される評価値が所定の基準を満たすと、当該所定の基準を満たす評価値の付与されたデータについて、（１）前記順列における出現回数、（２）前記順列における１回の出現ごとに収集されるデータ点数、および、（３）前記順列における１回の出現ごとに単位時間当たりに収集されるデータ点数である収集周波数の少なくとも１つを調整する第２調整部をさらに備え、前記第１調整部は、前記第２調整部により調整された前記出現回数、前記順列における１回の出現ごとに収集されるデータ点数、および、前記収集周波数を含む前記所定の収集規則を、前記最大値を用いてさらに調整してもよい。
【００２５】
前記の構成によれば、前記マスタ装置は、前記複数のデータの各々に対して付与される評価値に従って、前記複数のデータの各々の、前記出現回数、前記順列における１回の出現ごとに収集されるデータ点数、および、前記収集周波数の少なくとも１つを調整する。
【００２６】
例えば、前記マスタ装置は、高い評価値の付与されたデータについては、前記出現回数、前記順列における１回の出現ごとに収集されるデータ点数、および、前記収集周波数の少なくとも１つを増やす。また、前記マスタ装置は、低い評価値の付与されたデータについては、前記出現回数、前記順列における１回の出現ごとに収集されるデータ点数、および、前記収集周波数の少なくとも１つを減らす。
【００２７】
したがって、前記マスタ装置は、前記複数のデータの各々を、各々の前記評価値に従った、前記出現回数、前記順列における１回の出現ごとに収集されるデータ点数、および、前記収集周波数で、収集することができるとの効果を奏する。
【００２８】
ここで、前記マスタ装置は、前記評価値に従って調整した、前記複数のデータの各々の、前記出現回数、前記順列における１回の出現ごとに収集されるデータ点数、および、前記収集周波数を含む前記所定の収集規則を、前記最大値を用いてさらに調整する。
【００２９】
したがって、前記マスタ装置は、前記複数のデータの各々を、各々の前記評価値に従った、かつ、前記複数のデータの各々の収集に係る単位時間当たりの処理負荷が前記最大値に対応する処理負荷以下となるように、収集することができるとの効果を奏する。
【００３０】
本発明の一態様に係るマスタ装置において、前記第１調整部は、（１）前記複数のデータの各々の、前記順列における１回の出現ごとに収集されるデータ点数、および、（２）前記複数のデータの各々の、前記順列における１回の出現ごとに単位時間当たりに収集されるデータ点数である収集周波数の少なくとも一方を、一律の割合で小さくしてもよい。
【００３１】
前記の構成によれば、前記マスタ装置は、前記所定の収集規則の調整として、前記複数のデータの各々の、前記順列における１回の出現ごとに収集されるデータ点数、および、前記収集周波数の少なくとも一方を、一律の割合で小さくする。
【００３２】
例えば、前記複数のデータの各々を所定の順序で収集したい場合、前記マスタ装置は、前記所定の収集規則のうち、「前記複数のデータの各々の、前記順列における出現回数」については、変更しない。その代わりに、前記マスタ装置は、前記複数のデータの各々の、前記順列における１回の出現ごとに収集されるデータ点数、および、前記収集周波数の少なくとも一方を、一律の割合で小さくすることで、データ収集に係る処理負荷を減少させる。
【００３３】
したがって、前記マスタ装置は、例えば、前記複数のデータの各々を所定の順序で収集したい場合などに、「前記複数のデータの各々の、前記順列における出現回数」を変更せずに、データ収集に係る処理負荷を減少させることができるとの効果を奏する。
【００３４】
本発明の一態様に係るマスタ装置は、（１）前記最大値、（２）前記第１調整部によって調整された前記所定の収集規則に従う前記収集部によって単位時間あたりに収集されるデータのデータ量、および、（３）両者の差をユーザに対して表示させる表示制御部をさらに備えてもよい。
【００３５】
前記の構成によれば、前記マスタ装置は、前記最大値と、調整済の前記所定の収集規則に従って単位時間あたりに収集しているデータのデータ量との差を、つまり、データ収集に係る処理負荷の許容値を示す値と実際の処理負荷を示す値との差を、表示させる。
【００３６】
したがって、前記マスタ装置は、ユーザが一見して認識できるように、データ収集に要している現在の処理負荷から、データ収集に係る処理負荷の許容値までの余裕度を通知することができるとの効果を奏する。
【００３７】
本発明の一態様に係るマスタ装置において、前記収集部によって収集される前記複数のデータの各々は、前記スレーブ装置から周期的に取得した制御データのうち、ユーザによって収集対象として選択されたデータであってもよい。
【００３８】
前記の構成によれば、前記マスタ装置は、前記スレーブ装置から周期的に取得した前記制御データのうち、ユーザによって収集対象として選択されたデータを、前記所定の収集規則に従って、繰り返し収集する。
【００３９】
したがって、前記マスタ装置は、前記制御データのうち、ユーザによって収集対象として選択されたデータのみを、単位時間あたりに収集するデータのデータ量が前記最大値以下となるように、繰り返し収集することができるとの効果を奏する。
【００４０】
上記の課題を解決するために、本発明の一態様に係る制御方法は、マスタスレーブ制御システムにおけるマスタ装置の制御方法であって、スレーブ装置から周期的に取得した制御データから、外部装置に送信すべき複数のデータの各々を、所定の収集規則に従って、繰り返し収集する収集ステップと、前記収集ステップにて単位時間あたりに収集されるデータのデータ量について、ユーザの指定する最大値を受け付ける受付ステップと、前記所定の収集規則に従って前記収集ステップにて単位時間あたりに収集されるデータのデータ量が、前記受付ステップにて受け付けられた前記最大値以下となるように、前記所定の収集規則を調整する第１調整ステップと、を含んでいる。
【００４１】
前記の方法によれば、前記制御方法は、単位時間あたりに収集するデータのデータ量が前記最大値以下となるように前記所定の収集規則を調整し、調整した前記所定の収集規則に従って、前記制御データから、前記複数のデータの各々を繰り返し収集する。
【００４２】
ここで、単位時間あたりに収集するデータのデータ量が大きくなるほど、前記制御方法のデータ収集に係る単位時間当たりの処理負荷が大きくなることは明らかである。つまり、前記最大値は、前記制御方法のデータ収集に係る単位時間当たりの処理負荷に対応する。
【００４３】
したがって、前記制御方法は、データ収集に係る単位時間当たりの処理負荷が、ユーザの指定する前記最大値に対応する処理負荷以下となるように、前記制御データから、前記外部サーバ等の外部装置に送信すべきデータを収集することができるとの効果を奏する。言い換えれば、前記制御方法によってユーザは、前記制御データから前記複数のデータの各々を収集する処理に係る処理負荷を管理できるようになるとの効果を奏する。具体的には、ユーザは、前記マスタ装置に、「前記スレーブ対象に対する制御処理などの、データ収集処理以外の処理」の実行に影響のない適切な処理負荷で、前記外部装置に送信すべきデータを、前記制御データから収集させることができる。
【００４４】
また、「前記制御方法が単位時間あたりに収集するデータのデータ量」は、ユーザにとって直感的に把握しやすく、かつ、「前記制御方法の、データ収集に係る単位時間当たりの処理負荷」を正確に示すことのできる指標である。
【００４５】
したがって、前記制御方法は、「データ収集に係る単位時間当たりの処理負荷」の指標として正確で、かつ、ユーザにとって直感的な把握の容易な「単位時間あたりに収集するデータのデータ量」に基づいて、データ収集処理を管理できるとの効果を奏する。
【発明の効果】
【００４６】
本発明の一態様によれば、マスタスレーブ制御システムにおけるマスタ装置について、外部装置に送信すべきデータを制御データから収集する処理の処理負荷を、ユーザが管理できるようになるという効果を奏する。
【図面の簡単な説明】
【００４７】
【図１】本発明の実施形態１に係るＰＬＣ等の要部構成を示すブロック図である。
【図２】図１のＰＬＣを含む制御システムの全体概要を示す図である。
【図３】図１のＰＬＣが実行する、制御データから「データベースに送信すべきデータ」を収集する方法のイメージを示す図である。
【図４】収集規則テーブルのデータ構造の一例を示す図である。
【図５】図１のＰＬＣが実行する処理の概要を示すフロー図である。
【図６】重要度に基づいて収集規則を調整する方法の例を示す図である。
【図７】基準収集規則を変更せずに採用できる場合の収集規則テーブルの一例である。
【図８】基準収集規則をそのまま採用できない場合の収集規則テーブルの一例である。
【図９】各Ｉ／Ｏノードの収集規則を増減させた場合の、平均サンプリング速度の変化の傾向を説明する図である。
【図１０】収集規則の調整方法の一例を示す図である。
【図１１】収集規則の調整方法について、図１０の例とは異なる例を示す図である。
【図１２】収集規則の調整方法について、図１０および図１１の例とは異なる例を示す図である。
【図１３】図１のＰＬＣが外部表示装置の表示画面に表示させる情報の一例である。
【図１４】図４に例示したのとは異なる収集規則テーブルのデータ構造の例である。
【発明を実施するための形態】
【００４８】
〔実施形態１〕
以下、本発明の一側面に係る実施の形態（以下、「本実施形態」とも表記する）を、図１から図１４に基づいて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。本実施の形態においては、例えばＰＬＣ（Programmable Logic Controller）１０をマスタ装置の典型例として説明を行う。本発明の一態様に係るＰＬＣ１０についての理解を容易にするため、先ず、ＰＬＣ１０を含む制御システム１の概要を、図２および図３を用いて説明する。
【００４９】
§１．適用例
（制御システムの概要）
図２は、制御システム１の全体概要を示す図である。図２に示すように、制御システム１は、マスタ装置としてのＰＬＣ１０と、マスタ装置にネットワークを介して接続される１つ以上のスレーブ装置としてのサーボドライバ３０Ａ、３０Ｂ、３０Ｃ、３０Ｄ、・・・とを含むマスタスレーブ制御システムである。サーボドライバ３０Ａ、３０Ｂ、３０Ｃ、３０Ｄの各々には、サーボモータ４０Ａ、４０Ｂ、４０Ｃ、４０Ｄが接続している。
【００５０】
なお、以下の説明において、サーボドライバ３０Ａ、３０Ｂ、３０Ｃ、３０Ｄの各々を区別する必要がない場合には、単に「サーボドライバ３０」と表記する。同様に、サーボモータ４０Ａ、４０Ｂ、４０Ｃ、４０Ｄの各々を区別する必要がない場合には、単に「サーボモータ４０」と表記する。
【００５１】
ＰＬＣ１０は、サーボモータ４０などの制御機器を制御するためのユーザプログラムを実行するプログラマブルコントローラであり、下位コントローラとしてのサーボドライバ３０に対する上位コントローラである。ＰＬＣ１０は、制御システム１において、ネットワークを介したデータ伝送を管理しているという意味で「マスタ装置」と呼ばれ、一方、サーボドライバ３０は「スレーブ装置」と呼ばれる。すなわち、制御システム１は、マスタ装置としてのＰＬＣ１０と、マスタ装置にネットワークを介して接続される１つ以上のスレーブ装置としてのサーボドライバ３０とを含むマスタスレーブ制御システムである。ＰＬＣ１０とサーボドライバ３０とをつなぐネットワークとしては、例えば、ＥｔｈｅｒＣＡＴ（登録商標）を使用することができる。
【００５２】
ＰＬＣ１０は、サーボドライバ３０に対して、制御指示を制御周期ごとに出力してサーボドライバ３０に対する制御を実行する。また、ＰＬＣ１０は、サーボドライバ３０から、サーボモータ４０の出力に係るデータ（つまり、トルク、速度、および位置など、サーボモータ４０の状態を示す制御データ）を制御周期ごとに取得する。
【００５３】
サーボドライバ３０は、サーボモータ４０の制御装置であり、ＰＬＣ１０からの制御指示を制御周期ごとに受信し、受信した制御指示に従ってサーボモータ４０を駆動する。また、サーボドライバ３０は、サーボモータ４０の軸に接続されている位置センサおよびトルクセンサなどから、位置、速度、トルクといったサーボモータ４０の出力（状態）に係る実測値を取得し、これら実測値に係るデータを制御周期ごとにＰＬＣ１０に出力する。なお、サーボドライバ３０は、サーボモータアンプと称されることもある。
【００５４】
マスタ装置としてのＰＬＣ１０に接続されるスレーブ装置としては、サーボドライバ３０以外にも、各種のデバイス通信管理ユニットなどが含まれ得る。デバイス通信管理ユニットには、デバイス通信ケーブルを介して、１つ以上のデバイスが接続される。デバイス通信管理ユニットに接続されるデバイスは、例えば、センサなどの入力機器であり、または、アクチュエータ（Actuator）などの出力機器である。ＰＬＣ１０は、ネットワークを介してデバイス通信管理ユニットから、デバイス通信管理ユニットに接続される１つ以上のデバイスの各々からの情報（例えば、センサなどからの検知情報）を取得することができる。これらのデバイスからのデータ（デバイスデータ。例えば、センサなどからの検知情報）も、マスタ装置としてのＰＬＣ１０が、スレーブ装置から制御周期ごとに周期的に取得する制御データである。
【００５５】
なお、「マスタ装置」および「スレーブ装置」は、ネットワーク上のデータ伝送の制御機能に着目して定義されるものであり、各装置間でどのような情報が送受信されるかについては、特に限定されない。ＰＬＣ１０は、マスタ装置として、サーボドライバ３０等のスレーブ装置が出力するデータ（制御データ）を、制御周期ごとに周期的に取得する。そして、ＰＬＣ１０は、サーボドライバ３０等のスレーブ装置から制御周期ごとに取得した制御データの少なくとも一部を、外部のデータベース２０に送信する。
【００５６】
データベース２０は、ＰＬＣ１０から送信されたデータを、つまり、ＰＬＣ１０がスレーブ装置から制御周期ごとに取得した制御データの少なくとも一部を受け付け、受け付けたデータを保存領域に格納する。
【００５７】
ここで一般に、ＰＬＣ１０がサーボドライバ３０等のスレーブ装置から制御周期ごとに周期的に取得する制御データは、データ数が非常に多くなる傾向がある。例えば、各軸について、「トルク」、「速度」、および「位置」の３種類のサーボデータ（制御データ）を２０軸分、サーボドライバ３０から取得するとしたら、ＰＬＣ１０は制御周期ごとに６０点のサーボデータを取得することになる。
【００５８】
そのため、ＰＬＣ１０がスレーブ装置から制御周期ごとに取得する制御データの全てをデータベース２０に格納する場合、データベース２０に格納される制御データのデータ量は膨大になり、データベース２０の保存領域が直ぐに不足してしまう。また、ユーザ（人）が、データベース２０に格納するデータを、ＰＬＣ１０が制御周期ごとに取得する膨大な制御データの中から選択する場合、制御システム１の異常を示す制御データなど、データベース２０に格納したい制御データを見逃してしまう可能性がある。
【００５９】
そこで、ＰＬＣ１０は、スレーブ装置から制御周期ごとに取得する制御データから、データベース２０に送信すべきデータを、所定の収集規則に従って収集し、収集したデータをデータベース２０に送信する（つまり、格納する）。以下の説明では、「スレーブ装置から制御周期ごとに周期的に取得した制御データから、データベース２０に送信すべきデータを収集する」ことを「サンプリング」とも称する。
【００６０】
ただし、単純に「一定のタイミング（時間間隔）、一定のサンプリング周波数で、制御データから、データベース２０に送信すべきデータを収集する」方法を実行した場合、以下の問題が生じ得る。すなわち、ユーザにとって重要性の低い制御データを過剰に収集してしまったり、ユーザにとって重要性の高い制御データを詳細に収集することができなかったりする可能性がある。
【００６１】
また、ＰＬＣ１０の処理能力（システム性能）全体に比して、サンプリングに要する処理負荷が大きすぎると、メモリ枯渇、およびバッファオーバーフロー等により、データベース２０に送信すべきデータが欠落する可能性がある。さらに、サンプリングのためにシステムリソースが消費され、制御プログラムの実行等に支障をきたす可能性もある。
【００６２】
そこで、ＰＬＣ１０は、データベース２０に送信すべき複数のデータの各々について重要度（評価値）を算出し、算出した重要度を用いて、データベース２０に送信すべき複数のデータの各々についての収集規則を調整する。例えば、ＰＬＣ１０は、重要度の高いデータの収集頻度、サンプリング周波数、および、サンプリング点数などを、重要度の低いデータの収集頻度、サンプリング周波数、および、サンプリング点数などに比べて、高くする。ＰＬＣ１０は、複数のデータの各々についての収集規則を、複数のデータの各々の重要度を用いて調整することによって、重要性の高い制御データを詳細に収集し、かつ、重要性の低い制御データについては過剰な収集を回避することができる。
【００６３】
また、ＰＬＣ１０は、サンプリング処理に係る処理負荷が、ユーザの設定する最大値以下となるように、データベース２０に送信すべき複数のデータの各々についての収集規則を調整し、調整した収集規則に従って、サンプリング処理を実行する。したがって、ＰＬＣ１０は、ユーザの管理下、スレーブ装置に対する制御処理など、サンプリング処理以外の処理に影響がでないように、サンプリング処理を実行することができる。
【００６４】
ＰＬＣ１０には、例えばＵＳＢ（Universal Serial Bus）ケーブルである通信ケーブルを介して、不図示のツール等が接続していてもよい。ツールは、制御システム１に対して各種のパラメータを設定するための情報処理装置である。例えば、ＰＬＣ１０の実行するサンプリング処理の収集規則に係る情報（詳細は後述する）は、ツールによって設定されてもよい。ツールは、典型的には、汎用のコンピュータで構成される。ツールの代わりに、通信ケーブルを介して、ＰＬＣ１０にＨＭＩ（Human Machine Interface）が接続されてもよい。ＰＬＣ１０は、例えばツール等から、サンプリング処理に係る収集規則についての情報（例えば、収集規則についての初期値・基準値など）を受け付ける。
【００６５】
図３は、ＰＬＣ１０が実行する、制御データから「データベース２０に送信すべきデータ」を収集する方法の、つまり、ＰＬＣ１０の実行するサンプリング処理の、イメージを示す図である。ＰＬＣ１０は、図２の制御データテーブル１８１に格納されたＩ／Ｏ（制御データ）の各点を、ネットワークのノード（Ｉ／Ｏノード）として扱い、各Ｉ／Ｏノードにおいてデータを収集しながら、Ｉ／Ｏノードを巡回する。
【００６６】
すなわち、ＰＬＣ１０は、サーボドライバ３０から制御周期ごとに取得する種々の制御データの各々を、マスタ装置としてのＰＬＣ１０が伝送を制御するネットワークのノード（Ｉ／Ｏノード）として扱う。ＰＬＣ１０は、例えば、サーボドライバ３０から周期的に取得した「軸１のトルクを示すデータ（ＴｏｒｑｕｅＤａｔａ１）」、「軸１の速度を示すデータ（ＶｅｌｏｃｉｔｙＤａｔａ１）」、および「軸１の位置を示すデータ（ＰｏｓｉｔｉｏｎＤａｔａ１）」の各々を、ノード（Ｉ／Ｏノード）として扱う。
【００６７】
そして、スレーブ装置から取得した複数の制御データの全体（つまり、制御データ群）に対して、ＰＬＣ１０は、データ収集対象とするＩ／Ｏノードを所定の順番で切り替えながら、各Ｉ／Ｏノードのデータを収集する。ＰＬＣ１０は、例えば、先ず「ＴｏｒｑｕｅＤａｔａ１」のデータを収集し、次に「ＶｅｌｏｃｉｔｙＤａｔａ１」のデータを、さらに「ＰｏｓｉｔｉｏｎＤａｔａ１」のデータを、そして、・・・と次々に、各Ｉ／Ｏノードのデータを収集する。
【００６８】
図３には、ＰＬＣ１０が、「Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ」の６個のＩ／Ｏノードを、この順で（つまり、「ＡからＢへ、ＢからＣへ、ＣからＤへ、ＤからＥへ、ＥからＦへ、Ｆから再びＡへ」）巡回しながら、サンプリングを実行するイメージが示されている。すなわち、ＰＬＣ１０は、「Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ」の６個のＩ／Ｏノードの各々について、「Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ａ、・・・」の順で、データを収集する。ＰＬＣ１０は、例えば、「ＴｏｒｑｕｅＤａｔａ１」、「ＶｅｌｏｃｉｔｙＤａｔａ１」、「ＰｏｓｉｔｉｏｎＤａｔａ１」、「ＴｏｒｑｕｅＤａｔａ２」、「ＶｅｌｏｃｉｔｙＤａｔａ２」、「ＰｏｓｉｔｉｏｎＤａｔａ３」の６個のＩ／Ｏノードについて、この順で、各Ｉ／Ｏノードのデータを収集する処理を繰り返す。ＰＬＣ１０は、データ収集対象とするＩ／Ｏノードを所定の順番で切り替えながら、各Ｉ／Ｏノードのデータを次々に収集していく処理を繰り返すことで、制御システム１の異常等を示すデータを見逃してしまう（つまり、収集対象から漏らす）可能性を低減できる。
【００６９】
（用語の整理）
以下の説明において、「データ収集対象のＩ／Ｏノードを一定の順番で切り替えながら、各Ｉ／Ｏノードのデータを収集すること」を、「巡回」と称することがある。例えば、「Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ（つまり、Ａの後にＢ、Ｂの後にＣ、Ｃの後にＤ、Ｄの後にＥ、Ｅの後にＦ、Ｆの後にＡ）」といった一定のパターン（順序）で繰り返し、各Ｉ／Ｏノードのデータを収集することを、「巡回」と称することがある。
【００７０】
Ｉ／Ｏノードの出現順序の重複を含まない、巡回の最小単位であるＩ／Ｏノードの順列を、「巡回単位順列（または、単に「順列」）」と呼ぶことがある。例えば、ＰＬＣ１０が「Ａの後にＢ、Ｂの後にＣ、Ｃの後にＡ、Ａの後にＢ、Ｂの後にＣ、Ｃの後にＡ、Ａの後にＢ、・・・」で巡回を実行する場合、順列は「Ａ、Ｂ、Ｃ」である。同様に、ＰＬＣ１０が「Ａの後にＢ、Ｂの後にＣ、Ｃの後にＤ、Ｄの後にＥ、Ｅの後にＦ、Ｆの後にＡ、Ａの後にＢ、Ｂの後にＣ、Ｃの後にＤ、Ｄの後にＥ、Ｅの後にＦ、Ｆの後にＡ、Ａの後にＢ、・・・」で巡回を実行する場合、順列は「Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ」である。
【００７１】
巡回単位順列に含まれる特定のＩ／Ｏノードの出現回数を「巡回頻度」と称する。例えば、「順列：Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ」における「Ｉ／Ｏノード：Ａ」の巡回頻度は、「１〔回／巡］」である。「順列：Ａ、Ｂ、Ｃ、Ａ、Ｄ、Ｅ、Ｆ」における「Ｉ／Ｏノード：Ａ」の巡回頻度は、「２〔回／巡］」である。「順列：Ａ、Ｂ、Ｃ、Ａ、Ｄ、Ｅ、Ａ、Ｆ」における「Ｉ／Ｏノード：Ａ」の巡回頻度は、「３〔回／巡］」である。
【００７２】
なお、「順列：Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ」における「Ｉ／Ｏノード：Ａ」の相対的な巡回頻度（順列における全要素数に対する、各Ｉ／Ｏノードの個数）を、「１／６〔回／巡］」と表現してもよい。同様に、「順列：Ａ、Ｂ、Ｃ、Ａ、Ｄ、Ｅ、Ｆ」における「Ｉ／Ｏノード：Ａ」の相対的な巡回頻度を、「２／７〔回／巡］」と表現してもよい。「順列：Ａ、Ｂ、Ｃ、Ａ、Ｄ、Ｅ、Ａ、Ｆ」における「Ｉ／Ｏノード：Ａ」の相対的な巡回頻度は、「３／８〔回／巡］」である。
【００７３】
上の例からも明らかな通り、巡回単位順列に含まれるＩ／Ｏノードの個数と、巡回単位順列の全要素の総数とは一致するとは限らず、巡回単位順列の要素の総数は巡回単位順列（巡回パターン）によって変化する。例えば、ＡからＦまでの６個のＩ／Ｏノードを含む「巡回単位順列（順列）」であっても、その巡回単位順列の全要素の総数は様々である。すなわち、「順列：Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ」の全要素の総数は「６」、「順列：Ａ、Ｂ、Ｃ、Ａ、Ｄ、Ｅ、Ｆ」の全要素の総数は「７」、「順列：Ａ、Ｂ、Ｃ、Ａ、Ｄ、Ｅ、Ａ、Ｆ」の全要素の総数は「８」である。
【００７４】
また、巡回単位順列内での巡回順は、実装に即して任意に表現することができる。例えば、ＡからＣまでの３個のＩ／Ｏノードを含む「順列：Ａ、Ｂ、Ｃ」は、「順列：Ｂ、Ｃ、Ａ」と表現してもよいし、「順列：Ｃ、Ａ、Ｂ」と表現してもよい。
【００７５】
さらに、巡回単位順列内での巡回順（各Ｉ／Ｏノードの出現順序）は、実装に即して任意に設定することができる。例えば、ＡからＣまでの３個のＩ／Ｏノードについての、全要素の総数が「３」である順列として、「順列：Ａ、Ｂ、Ｃ」および「順列：Ａ、Ｃ、Ｂ」のいずれを設定してもよい。
【００７６】
（本実施形態に係るＰＬＣの概要）
制御システム１において、ユーザは、「ＰＬＣ１０がサンプリング処理の実行に要する処理負荷の大きさを示す値であって、ユーザが許容する最大の値」を、「最大許容平均サンプリング速度Ｖａｌｌｏｗｅｄ＿ｍｅａｎ＿ｍａｘ（以下、最大値Ｖａｍｍ）」として設定する。ＰＬＣ１０は、最大値Ｖａｍｍに基づいて、サンプリングに係る収集規則を動的に最適化する。
【００７７】
すなわち、ユーザは、ＰＬＣ１０のデータ収集能力について最大値Ｖａｍｍを設定し、また、各Ｉ／Ｏノードに対して、所望の収集規則（収集規則の基準値）を設定する。具体的には、ユーザは、各Ｉ／Ｏノードについて、「名称（識別子）」に加えて、各Ｉ／Ｏノードに対する所望の収集規則として、「サンプリング周波数の基準（基準周波数）」および「サンプリング点数の基準（基準点数）」等を指定する。
【００７８】
「サンプリング点数」とは、各Ｉ／Ｏノードについて、巡回単位順列における１回の出現ごとに収集されるデータ点数であり、「基準サンプリング点数」は、ユーザの初期設定する、つまり、例えばユーザの所望する、「サンプリング点数」である。
【００７９】
「サンプリング周波数」とは、各Ｉ／Ｏノードについて、巡回単位順列における１回の出現ごとに単位時間当たりに収集されるデータ点数である。「基準サンプリング周波数」は、ユーザの初期設定する、つまり、例えばユーザの所望する、「サンプリング周波数」である。
【００８０】
ＰＬＣ１０は、各Ｉ／Ｏノードの「基準周波数」および「基準点数」等を含む「初期設定時の収集規則」に従ってサンプリング処理の実行した場合に要する処理負荷の大きさを示す値（平均サンプリング速度Ｖｍｅａｎ）を算出する。そして、ＰＬＣ１０は、最大値Ｖａｍｍと平均サンプリング速度Ｖｍｅａｎとを比較して、具体的には、「最大値Ｖａｍｍと平均サンプリング速度Ｖｍｅａｎとの差（つまり、最大値Ｖａｍｍ−平均サンプリング速度Ｖｍｅａｎ）」から、「余裕速度Ｖｍａｒｇｉｎ」を算出する。
【００８１】
ＰＬＣ１０は、「余裕速度Ｖｍａｒｇｉｎが『０』以上となる（つまり、余裕速度Ｖｍａｒｇｉｎ≧０）」ように、収集規則を調整する。具体的には、ＰＬＣ１０は、「余裕速度Ｖｍａｒｇｉｎが『０』以上となる」ように、各Ｉ／Ｏノードについて、巡回単位順列における「巡回頻度（出現回数）」、「サンプリング周波数」、および、「サンプリング点数」の少なくとも１つを変更する。また、ＰＬＣ１０は、「余裕速度Ｖｍａｒｇｉｎが『０』以上となる」ように、「巡回単位順列を一巡するまでに要する時間」を調整してもよい。ＰＬＣ１０は、「余裕速度Ｖｍａｒｇｉｎが『０』以上となる」ように調整した収集規則に従って、サンプリング（データ収集）を開始する。
【００８２】
さらに、ＰＬＣ１０は、Ｉ／Ｏノード毎に、収集したデータの重要度の判定を行い、具体的には、各Ｉ／Ｏノードについて（より正確には、各Ｉ／Ｏノードのデータについて）、重要度（評価値）を算出する。
【００８３】
ＰＬＣ１０は、重要度判定の結果に基づき、つまり、各Ｉ／Ｏノードの重要度を用いて、「余裕速度Ｖｍａｒｇｉｎが『０』以上となる」との条件を満たす範囲で、各Ｉ／Ｏノードの収集規則を調整する。具体的には、ＰＬＣ１０は、「余裕速度Ｖｍａｒｇｉｎが『０』以上となる」との条件下で、各Ｉ／Ｏノードについて、重要度に基づいて、巡回単位順列における「巡回頻度」、「サンプリング周波数」、および、「サンプリング点数」の少なくとも１つを調節する。例えば、ＰＬＣ１０は、重要度の高いＩ／Ｏノードについてはデータを詳細に収集し、かつ、重要度の低いＩ／Ｏノードについてはデータの過剰な収集を回避して収集するように、各Ｉ／Ｏノードの収集規則を、各Ｉ／Ｏノードの重要度に従って調整する。したがって、ＰＬＣ１０は、システムリソースを最大限に活かしつつ、重要性が高いデータを詳細かつ大量に収集することができる。
【００８４】
（重要度についての注記）
ＰＬＣ１０がサンプリングする種々のデータに対する重要度（評価値）は、そのデータの利用目的によって異なり、利用目的はユーザにより様々である。例えば、オペレータであれば、「現場異常」の発生有無の判定を、データの主たる利用目的とするかもしれないし、ライン管理者であれば、「生産性および生産物の品質」の判定を、データの主たる利用目的とするかもしれない。また、保全担当者であれば、「異常の兆候、および、バスタブ曲線」の判定を、データの主たる利用目的とするかもしれないし、特に、「保全作業前後」の時期に取得したデータへの関心が高いかもしれない。解析担当者であれば、「良／不良まんべんなく」取得する、定時性の（つまり、所定期間ごとに取得した）データへの関心が高いかもしれず、例えば、四季ごとに取得するデータへの関心が高いかもしれない。
【００８５】
データに対する重要度（評価値）は、利用目的ごとに異なるため、同じデータに対する、或る利用目的からみた重要度と、その或る利用目的とは別の利用目的からみた重要度とは、矛盾したり、衝突したりすることがあり得る。例えば、或る利用目的にとっては重要度が低く、削除しても構わないデータが、その或る利用目的とは別の利用目的にとっては、必須の、極めて重要度の高いデータであるかもしれない。
【００８６】
そこで、ＰＬＣ１０は、サンプリングした種々のデータの各々に対する、これら複数の「利用目的ごとの重要度」を自動調停し、「調停した重要度」を、サンプリングした種々のデータの各々に付与する。具体的には、ＰＬＣ１０は、サンプリングした種々のデータの各々について、複数の利用目的の各々に対応する複数の評価方式の各々を適用して、評価方式ごとの重要度を算出する。そして、ＰＬＣ１０は、サンプリングした種々のデータの各々について、算出した評価方式ごとの重要度を用いて、「複数の評価方式の全体に対応する重要度」である調停済重要度を算出し、算出した調停済重要度をサンプリングした種々のデータの各々に付与する。ＰＬＣ１０は、サンプリングした種々のデータの各々について、例えば、「評価方式ごとの重要度」を示す値に、「評価方式ごとの重み付け係数」を乗じた値の和を用いて、調停済重要度を算出する。また、ＰＬＣ１０は、サンプリングした種々のデータの各々について、例えば、「評価方式ごとの重要度」の中で最も高い重要度を、調停済重要度とする。
【００８７】
（表示処理等について）
ＰＬＣ１０は、ユーザが、データの収集状況をリアルタイムに把握して問題発見に役立てることができるよう、表示画面（例えば、ツールなどの外部表示装置の表示画面）に、実行中のサンプリング処理に係る情報を表示する。具体的には、ＰＬＣ１０は、「ユーザが設定した最大値Ｖａｍｍ」、「実行中のサンプリング処理に係る処理負荷の大きさを示す平均サンプリング速度Ｖｍｅａｎ」、および「最大値Ｖａｍｍと平均サンプリング速度Ｖｍｅａｎとの差である余裕速度Ｖｍａｒｇｉｎ」を表示させる。また、ＰＬＣ１０は、例えば、「巡回単位順列に含まれる複数のＩ／Ｏノードの各々の名称」、「巡回単位順列における、各Ｉ／Ｏノードの出現順序」、および、「現在、データ収集対象となっているＩ／Ｏノード」を表示させる。さらに、ＰＬＣ１０は、例えば、各Ｉ／Ｏノードについて、適用中の収集規則における「サンプリング周波数」、「サンプリング点数」、および、「直近のデータに対する重要度」を表示させる。
【００８８】
これまでに図２および図３を用いて説明してきたように、ＰＬＣ１０は、制御周期毎に繰り返し、スレーブ装置から制御データを取得し（つまり、取り込み）、取得した制御データから、データベース２０に送信すべきデータを、収集規則に従って収集する。ＰＬＣ１０は、収集規則として定義された巡回単位順列に従って、データ収集対象とするＩ／Ｏノードを順次切り替えながら、各Ｉ／Ｏノードのデータを収集する。ＰＬＣ１０は、収集規則として定義された各Ｉ／Ｏノードの「巡回頻度」、「サンプリング周波数」、および「サンプリング点数」等を、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍ以下となるように調整し、調整済の収集規則に従って、サンプリングを実行する。また、ＰＬＣ１０は、各Ｉ／Ｏノードについて（より正確には、各Ｉ／Ｏノードのデータについて）重要度を算出し、算出した重要度に基づいて、各Ｉ／Ｏノードの「巡回頻度」、「サンプリング周波数」、および「サンプリング点数」等を調整する。
【００８９】
（概要の整理）
すなわち、ＰＬＣ１０（マスタ装置）は、マスタスレーブ制御システムである制御システム１におけるマスタ装置であって、収集部１４０と、受付部１２０と、第１調整部１３０と、を備えている。収集部１４０は、サーボドライバ３０等のスレーブ装置から周期的に取得した制御データから、データベース２０等の外部装置に送信すべき複数のデータの各々を、所定の収集規則に従って、繰り返し収集する。受付部１２０は、収集部１４０によって単位時間あたりに収集されるデータのデータ量について、ユーザの指定する最大値Ｖａｍｍを受け付ける。第１調整部１３０は、前記所定の収集規則に従う収集部１４０によって単位時間あたりに収集されるデータのデータ量が、受付部１２０により受け付けられた最大値Ｖａｍｍ以下となるように、前記所定の収集規則を調整する。
【００９０】
前記の構成によれば、ＰＬＣ１０は、単位時間あたりに収集するデータのデータ量が最大値Ｖａｍｍ以下となるように前記所定の収集規則を調整し、調整した前記所定の収集規則に従って、前記制御データから、前記複数のデータの各々を繰り返し収集する。
【００９１】
ここで、単位時間あたりに収集するデータのデータ量が大きくなるほど、ＰＬＣ１０のデータ収集に係る単位時間当たりの処理負荷が大きくなることは明らかである。つまり、最大値Ｖａｍｍは、ＰＬＣ１０のデータ収集に係る単位時間当たりの処理負荷に対応する。
【００９２】
したがって、ＰＬＣ１０は、データ収集に係る単位時間当たりの処理負荷が、ユーザの指定する最大値Ｖａｍｍに対応する処理負荷以下となるように、前記制御データから、データベース２０の外部装置に送信すべきデータを収集することができるとの効果を奏する。言い換えれば、ＰＬＣ１０によってユーザは、前記制御データから前記複数のデータの各々を収集する処理に係る処理負荷を管理できるようになるとの効果を奏する。具体的には、ユーザは、ＰＬＣ１０に、「サーボドライバ３０等のスレーブ対象に対する制御処理などの、データ収集処理以外の処理」の実行に影響のない適切な処理負荷で、データベース２０に送信すべきデータを、前記制御データから収集させることができる。
【００９３】
また、「ＰＬＣ１０が単位時間あたりに収集するデータのデータ量」は、ユーザにとって直感的に把握しやすく、かつ、「ＰＬＣ１０の、データ収集に係る単位時間当たりの処理負荷」を正確に示すことのできる指標である。
【００９４】
したがって、ＰＬＣ１０は、「データ収集に係る単位時間当たりの処理負荷」の指標として正確で、かつ、ユーザにとって直感的な把握の容易な「単位時間あたりに収集するデータのデータ量」に基づいて、データ収集処理を管理できるとの効果を奏する。
【００９５】
ＰＬＣ１０において、前記所定の収集規則は、収集部１４０によって収集される前記複数のデータの各々の収集順序を示す順列（巡回単位順列）を含む。収集部１４０は、前記複数のデータの各々を、前記順列に従って繰り返し収集する。前記所定の収集規則に従う収集部１４０によって単位時間あたりに収集されるデータのデータ量は、例えば、「前記順列を一巡するまでに収集部１４０によって収集されるデータのデータ量を、前記順列を一巡するまでに収集部１４０が要する時間で除した値」である。
【００９６】
前記の構成によれば、ＰＬＣ１０は、前記制御データから前記順列に従って繰り返し、データベース２０等の外部装置に送信すべき前記複数のデータの各々を、収集する。
【００９７】
したがって、ＰＬＣ１０は、例えば、制御システム１の監視および検証等を行うためのデータを、前記順列に示される収集順序で、前記制御データから繰り返し収集することができるとの効果を奏する。
【００９８】
ＰＬＣ１０において、第１調整部１３０は、前記所定の収集規則として、以下の４つの内の少なくとも１つを調整する。すなわち、第１調整部１３０は、（１）前記複数のデータの各々の、前記順列における出現回数である出現頻度、（２）前記複数のデータの各々の、前記順列における１回の出現ごとに収集されるデータ点数であるサンプリング点数、（３）前記複数のデータの各々の、前記順列における１回の出現ごとに単位時間当たりに収集されるデータ点数であるサンプリング周波数（収集周波数）、および、（４）前記順列を一巡するまでに収集部１４０が要する時間の少なくとも１つを調整する。
【００９９】
前記の構成によれば、ＰＬＣ１０は、前記所定の収集規則として、前記複数のデータの各々の、前記出現頻度、前記サンプリング点数、前記サンプリング周波数、および、前記順列を一巡するのに要する時間の少なくとも１つを調整する。
【０１００】
ここで、複数の時点の各々における「前記複数のデータの各々」を、データベース２０等の外部装置に蓄積して、一貫性のある解析を実行しようとする場合、前記外部装置に送信する前記複数のデータの各々のサンプリング周波数は、複数の時点の各々で不変とするのが望ましい。例えば、或るデータＤａについて、或る時点Ｔ１でのサンプリング周波数が５００Ｈｚである場合、その或るデータＤａの、別の時点Ｔ２でのサンプリング周波数は、その或るデータＤａに対して一貫性のある解析を実行しようとする場合には、５００Ｈｚとするのが望ましい。そこで、例えば一貫性のある解析を目的として前記複数のデータの各々を収集する場合、ＰＬＣ１０は、前記複数のデータの各々の収集に際し、前記複数のデータの各々のサンプリング周波数は変更せずに、前記所定の収集規則に含まれる、それ以外の項目を調整する。具体的には、ＰＬＣ１０は、前記所定の収集規則として、前記複数のデータの各々の、出現頻度、前記サンプリング点数、および、前記順列を一巡するのに要する時間の少なくとも１つを調整する。
【０１０１】
また、前記複数のデータの各々を、所定の順序で、まんべんなく（つまり、特定のデータに偏ることなく）収集したい場合、ＰＬＣ１０は、前記複数のデータの各々の、出現頻度および前記サンプリング点数を変更しない。ＰＬＣ１０は、前記所定の収集規則のうち、前記複数のデータの各々のサンプリング周波数、および、前記順列を一巡するのに要する時間の少なくとも一方を調整して、前記制御データから、前記複数のデータの各々を繰り返し収集する。
【０１０２】
さらに、前記複数のデータの各々を収集する時間（＝収集期間）を連続させる必要がない場合、ＰＬＣ１０は、前記所定の収集規則のうち、前記順列を一巡するのに要する時間を調整する。ＰＬＣ１０は、例えば、「Ｉ／Ｏノード：Ａ、Ｂ、Ｃ」の各々のデータを「順列：Ａ、Ｂ、Ｃ」に従って繰り返し収集する場合、以下のように空き時間（＝待ち時間）を挿入して、各Ｉ／Ｏノードのデータを、この順序で、１回収集する」のに要する時間を調整する。すなわち、ＰＬＣ１０は、「『Ｉ／Ｏノード：Ａ』のデータの収集終了後から、『Ｉ／Ｏノード：Ｂ』のデータの収集開始までの間」、「『Ｉ／Ｏノード：Ｂ』のデータの収集終了後から、『Ｉ／Ｏノード：Ｃ』のデータの収集開始までの間」、および、「『Ｉ／Ｏノード：Ｃ』のデータの収集終了後から、『Ｉ／Ｏノード：Ａ』のデータの収集開始までの間」の少なくとも１つに、空き時間を挿入する。
【０１０３】
つまり、ＰＬＣ１０は、前記所定の収集規則のうち、前記複数のデータの各々の、出現頻度、サンプリング点数、サンプリング周波数、および、前記順列を一巡するのに要する時間の少なくとも１つを調整する。したがって、ＰＬＣ１０は、前記所定の収集規則のうち、前記複数のデータの利用目的等に好適な項目を適宜調整して、データ収集に係る処理負荷が最大値Ｖａｍｍに対応する処理負荷以下となるように、前記複数のデータを収集できるとの効果を奏する。
【０１０４】
ＰＬＣ１０は、収集部１４０によって収集された前記複数のデータ（つまり、各Ｉ／Ｏノードのデータ）の各々に対して付与される重要度（評価値）が所定の基準を満たすと、当該所定の基準を満たす重要度の付与されたデータの収集規則を調整する第２調整部１６０をさらに備える。各Ｉ／Ｏノードのデータに対して付与される重要度は、例えば、前述の「調停済重要度」である。
【０１０５】
第２調整部１６０は、所定の基準を満たす重要度が付与されたＩ／Ｏノードの、（１）出現頻度、（２）サンプリング点数、および、（３）サンプリング周波数の少なくとも１つを調整する。第１調整部１３０は、第２調整部１６０により調整された出現頻度、サンプリング点数、および、サンプリング周波数を含む収集規則を、最大値Ｖａｍｍを用いてさらに調整する。
【０１０６】
前記の構成によれば、ＰＬＣ１０は、前記複数のデータの各々に対して付与される重要度に従って、前記複数のデータの各々の、出現頻度、サンプリング点数、および、サンプリング周波数の少なくとも１つを調整する。
【０１０７】
例えば、ＰＬＣ１０は、高い重要度の付与されたデータについては、出現頻度、サンプリング点数、および、サンプリング周波数の少なくとも１つの値を増加させる。また、ＰＬＣ１０は、低い重要度の付与されたデータについては、出現頻度、サンプリング点数、および、サンプリング周波数の少なくとも１つの値を減少させる。
【０１０８】
したがって、ＰＬＣ１０は、前記複数のデータの各々を、各々の前記重要度に従った、出現頻度、サンプリング点数、および、サンプリング周波数で、収集することができるとの効果を奏する。
【０１０９】
ここで、ＰＬＣ１０は、前記重要度に従って調整した、前記複数のデータの各々の、出現頻度、サンプリング点数、および、サンプリング周波数を含む収集規則を、最大値Ｖａｍｍを用いてさらに調整する。
【０１１０】
したがって、ＰＬＣ１０は、前記複数のデータの各々を、各々の前記重要度に従った、かつ、前記複数のデータの各々の収集に係る単位時間当たりの処理負荷が最大値Ｖａｍｍに対応する処理負荷以下となるように、収集することができるとの効果を奏する。
【０１１１】
ＰＬＣ１０において、第１調整部１３０は、前記複数のデータの各々のサンプリング点数およびサンプリング周波数の少なくとも一方を、低減率Ｒを用いて一律の割合で小さくすることによって、収集規則を調整する。
【０１１２】
前記の構成によれば、ＰＬＣ１０は、例えば、前記複数のデータの各々を所定の順序で収集したい場合、前記所定の収集規則のうち、「前記複数のデータの各々の、前記順列における出現回数」については、変更しない。その代わりに、ＰＬＣ１０は、前記複数のデータの各々のサンプリング点数およびサンプリング周波数の少なくとも一方を、低減率Ｒを用いて一律の割合で小さくすることで、データ収集に係る処理負荷を減少させる。
【０１１３】
したがって、ＰＬＣ１０は、例えば、前記複数のデータの各々を所定の順序で収集したい場合などに、「前記複数のデータの各々の、前記順列における出現回数」を変更せずに、データ収集に係る処理負荷を減少させることができるとの効果を奏する。
【０１１４】
ＰＬＣ１０は、（１）最大値Ｖａｍｍ、（２）第１調整部１３０によって調整された収集規則に従う収集部１４０によって単位時間あたりに収集されるデータのデータ量、および、（３）両者の差である余裕速度Ｖｍａｒｇｉｎをユーザに対して表示させる表示制御部１７０をさらに備えている。
【０１１５】
前記の構成によれば、ＰＬＣ１０は、ユーザが一見して認識できるように、データ収集に要している現在の処理負荷から、データ収集に係る処理負荷の許容値（つまり、最大値Ｖａｍｍ）までの余裕度を通知することができるとの効果を奏する。
【０１１６】
ＰＬＣ１０において、収集部１４０によって収集される前記複数のデータの各々は、サーボドライバ３０等のスレーブ装置から周期的に取得した制御データのうち、ユーザによって収集対象として選択されたデータである。
【０１１７】
前記の構成によれば、ＰＬＣ１０は、サーボドライバ３０等のスレーブ装置から周期的に取得した前記制御データのうち、ユーザによって収集対象として選択されたデータを、前記所定の収集規則に従って、繰り返し収集する。
【０１１８】
したがって、ＰＬＣ１０は、前記制御データのうち、ユーザによって収集対象として選択されたデータのみを、単位時間あたりに収集するデータのデータ量が最大値Ｖａｍｍ以下となるように、繰り返し収集することができるとの効果を奏する。
【０１１９】
これまでに概要を説明してきたＰＬＣ１０について、次に、先ずその構成の詳細について図１および図４を参照しながら説明し、その後、ＰＬＣ１０が実行する処理について、図５を参照しながら説明していく。
【０１２０】
§２．構成例
（マスタ装置の詳細）
図１は、ＰＬＣ１０等の要部構成を示すブロック図である。図１に示すように、ＰＬＣ１０は、記憶部１８０以外の機能ブロックとして、取得部１１０、受付部１２０、第１調整部１３０、収集部１４０、評価部１５０、第２調整部１６０、および、表示制御部１７０を備えている。なお、記載の簡潔性を担保するため、サーボドライバ３０に対する制御指示を演算する構成、および、演算した制御指示をサーボドライバ３０へ出力する構成などの、本実施の形態に直接関係のない構成は、説明およびブロック図から省略している。ただし、実施の実情に則して、ＰＬＣ１０は、当該省略された構成を備えてもよい。図１に例示した各機能ブロックは、例えば、ＣＰＵ（central processing unit）等が、ＲＯＭ（read only memory）、ＮＶＲＡＭ（non-Volatile random access memory）等で実現された記憶装置（記憶部１８０）に記憶されているプログラムを不図示のＲＡＭ（random access memory）等に読み出して実行することで実現できる。以下、ＰＬＣ１０における各機能ブロックについて説明する。
【０１２１】
（記憶部以外の機能ブロックの詳細）
取得部１１０は、サーボドライバ３０などのスレーブ装置から、スレーブ装置の出力する制御データを制御周期ごとに取得し、取得した制御データを、記憶部１８０の制御データテーブル１８１に格納する。
【０１２２】
受付部１２０は、通信ケーブルを介してＰＬＣ１０に接続されているツールなどから、「ＰＬＣ１０が、制御データから単位時間あたりに収集するデータのデータ量について、ユーザの指定する最大値」である最大値Ｖａｍｍを受け付ける。受付部１２０は、受け付けた最大値Ｖａｍｍを、記憶部１８０の最大許容値テーブル１８２に格納する。
【０１２３】
受付部１２０は、また、「ＰＬＣ１０がサンプリング処理を実行する際に従う収集規則についての、ユーザの初期設定（基準値）」をツールなどから受け付け、受け付けた「収集規則の初期設定」を、記憶部１８０の収集規則テーブル１８３に格納する。具体的には、受付部１２０は、各Ｉ／Ｏノードの、「名称（識別子）」、「データ型」、「サンプリング周波数の初期設定値（基準周波数）」、および「サンプリング点数の初期設定値（基準点数）」等を受け付け、これらを収集規則テーブル１８３に格納する。収集規則テーブル１８３に格納される「名称（識別子）」、「データ型」、「基準周波数」、および「基準点数」等について、詳細は図４の説明において後述する。本実施の形態において、「基準周波数」は「基準サンプリング周波数」とも称し、「基準点数」は「基準サンプリング点数」とも称する。
【０１２４】
第１調整部１３０は、ＰＬＣ１０が実行するサンプリング処理に係る処理負荷が、ユーザの許容する最大処理負荷以下となるように、ＰＬＣ１０がサンプリング処理を実行する際に従う収集規則を調整する。
【０１２５】
（基準収集規則の、最大値Ｖａｍｍを用いた調整）
第１調整部１３０は、先ず、図４等に例示する収集規則テーブル１８３を参照して、「調整後の収集規則」が未だ収集規則テーブル１８３に格納されていないことを確認すると、「基準収集規則（つまり、初期設定段階の収集規則）」を取得する。第１調整部１３０は、収集規則テーブル１８３の「ＩＤ」、「名称」、および「データ型」等の項目に入力値があって、かつ、「実周波数」および「実点数」等の項目に入力値のない行があると、「調整後の収集規則」が格納されていないと判定する。
【０１２６】
第１調整部１３０は、「調整後の収集規則」が格納されていないと判定すると、各Ｉ／Ｏノードの「データ型」、「巡回頻度」、「基準周波数」、「基準点数」、および、「巡回単位順列を一巡するまでに要する時間」を含む、「基準収集規則」を取得する。
【０１２７】
第１調整部１３０は、次に、基準収集規則に従ってＰＬＣ１０がサンプリング処理を実行した場合に要する処理負荷の大きさを示す値（平均サンプリング速度Ｖｍｅａｎ）を算出する。基準収集規則から平均サンプリング速度Ｖｍｅａｎを算出する方法について、詳細は図７の説明において後述する。
【０１２８】
そして、第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎ（＝最大値Ｖａｍｍ−平均サンプリング速度Ｖｍｅａｎ）が『０』以上であるか」を判定する。
【０１２９】
第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎが『０』以上である」と判定すると、ＰＬＣ１０が実際にサンプリング処理を実行する際に従う収集規則として、基準収集規則をそのまま変更せずに採用する。すなわち、第１調整部１３０は、各Ｉ／Ｏノードについて、収集規則テーブル１８３の「基準周波数」および「基準点数」の各々の値を、「実周波数」および「実点数」の各々へと格納する。
【０１３０】
第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎが『０』未満である」と判定すると、基準収集規則を調整し、調整後の収集規則を、ＰＬＣ１０が実際にサンプリング処理を実行する際に従う収集規則として採用する。すなわち、第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎが『０』以上となる」ように調整した収集規則を、収集規則テーブル１８３に格納する。具体的には、例えば、第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎが『０』以上となる」ように調整した値を、収集規則テーブル１８３の「実周波数」および「実点数」へと格納する。また、例えば、第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎが『０』以上となる」ように、収集規則テーブル１８３に格納されている巡回単位順列を調整する。さらに、例えば、第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎが『０』以上となる」ように、収集規則テーブル１８３に格納されている「巡回単位順列を一巡するまでに要する時間」を調整する。第１調整部１３０による収集規則の調整方法について、詳細は図９から図１２の説明において後述する。
【０１３１】
（調整後の収集規則の、最大値Ｖａｍｍを用いた再調整）
第１調整部１３０は、図４等に例示する収集規則テーブル１８３を参照して、「ＩＤ」、「名称」、および「データ型」等の項目に入力値がある行の、「実周波数」および「実点数」等の項目に入力値があると、「調整後の収集規則」が格納されていると判定する。第１調整部１３０は、調整後の収集規則に従ったサンプリング処理の処理負荷の大きさを示す値（平均サンプリング速度Ｖｍｅａｎ）を算出する。調整後の収集規則から平均サンプリング速度Ｖｍｅａｎを算出する方法は、基準収集規則から平均サンプリング速度Ｖｍｅａｎを算出する方法と同様である。
【０１３２】
そして、第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎ（＝最大値Ｖａｍｍ−平均サンプリング速度Ｖｍｅａｎ）が『０』以上であるか」を判定する。
【０１３３】
第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎが『０』以上である」と判定すると、ＰＬＣ１０が実際にサンプリング処理を実行する際に従う収集規則として、収集規則テーブル１８３に格納されている調整後の収集規則をそのまま変更せずに採用する。すなわち、第１調整部１３０は、各Ｉ／Ｏノードについて、収集規則テーブル１８３の「実周波数」および「実点数」の各々の項目に格納されている値を変更しない。
【０１３４】
第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎが『０』未満である」と判定すると、調整後の収集規則を再調整し、再調整後の収集規則を、ＰＬＣ１０が実際にサンプリング処理を実行する際に従う収集規則として採用する。すなわち、第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎが『０』以上となる」ように再調整した収集規則を、収集規則テーブル１８３に格納する。具体的には、例えば、第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎが『０』以上となる」ように再調整した値を、収集規則テーブル１８３の「実周波数」および「実点数」へと格納する。また、例えば、第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎが『０』以上となる」ように、収集規則テーブル１８３に格納されている巡回単位順列を調整する。さらに、例えば、第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎが『０』以上となる」ように、収集規則テーブル１８３に格納されている「巡回単位順列を一巡するまでに要する時間」を調整する。第１調整部１３０による収集規則の調整方法について、詳細は図９から図１２の説明において後述する。
【０１３５】
収集部１４０は、収集規則テーブル１８３に格納されている調整後の収集規則に従って、サンプリング処理を実行し、つまり、制御データテーブル１８１を参照して、データベース２０に送信すべきデータを収集する。すなわち、収集部１４０は、収集規則テーブル１８３に格納されている巡回単位順列に従って、データ収集対象とするＩ／Ｏノードを順次切り替えながら、各Ｉ／Ｏノードのデータを収集する。その際、収集部１４０は、収集規則テーブル１８３に格納されている「巡回単位順列を一巡するまでに要する時間」で、巡回単位順列を一巡する。また、収集部１４０は、収集規則テーブル１８３に格納されている、各Ｉ／Ｏノードの「実周波数」および「実点数」に従って、各Ｉ／Ｏノードのデータを収集する。そして、第１調整部１３０によって調整された収集規則に従って収集したデータを、収集部１４０は、評価部１５０に通知する。
【０１３６】
評価部１５０は、収集規則テーブル１８３に格納されている調整後の収集規則に従って収集部１４０が収集した各Ｉ／Ｏノードのデータに対して、重要度（例えば、調停済重要度）を算出し、算出した重要度を、収集規則テーブル１８３に格納する。
【０１３７】
例えば、収集規則テーブル１８３に格納されている「順列：Ａ、Ｂ、Ｃ、Ａ、Ｄ、Ｅ、Ｆ」に従って収集部１４０が収集する、順列の先頭に出現する「Ｉ／Ｏノード：Ａ」について、評価部１５０は、重要度を算出する。評価部１５０は、算出した重要度を、収集規則テーブル１８３の、順列の先頭に出現する「Ｉ／Ｏノード：Ａ」の「重要度」の項目に格納する。同様に、収集規則テーブル１８３に格納されている「順列：Ａ、Ｂ、Ｃ、Ａ、Ｄ、Ｅ、Ｆ」に従って収集部１４０が収集する、順列の先頭から４番目に出現する「Ｉ／Ｏノード：Ａ」について、評価部１５０は、重要度を算出する。評価部１５０は、算出した重要度を、収集規則テーブル１８３の、順列の先頭から４番目に出現する「Ｉ／Ｏノード：Ａ」の「重要度」の項目に格納する。
【０１３８】
前述の通り、評価部１５０は、各Ｉ／Ｏノードのデータについて、例えば、複数の利用目的の各々に対応する複数の評価方式の各々を適用して、評価方式ごとの重要度を算出する。そして、評価部１５０は、算出した評価方式ごとの重要度を用いて、「複数の評価方式の全体に対応する重要度」である調停済重要度を算出し、算出した調停済重要度を、収集規則テーブル１８３における各Ｉ／Ｏノードの「重要度」の項目に格納する。評価部１５０は、各Ｉ／Ｏノードのデータについて、例えば、「評価方式ごとの重要度」を示す値に、「評価方式ごとの重み付け係数」を乗じた値の和を用いて、調停済重要度を算出する。また、評価部１５０は、各Ｉ／Ｏノードのデータについて、例えば、「評価方式ごとの重要度」の中で最も高い重要度を、調停済重要度とする。
【０１３９】
さらに、評価部１５０は、収集部１４０から通知された各Ｉ／Ｏノードのデータを、データベース２０に送信し、これらのデータを収集データテーブル２１に保存させる。
【０１４０】
第２調整部１６０は、収集規則テーブル１８３を参照して、収集規則テーブル１８３における各Ｉ／Ｏノードの「重要度」が所定の基準を満たしているかを判定し、所定の基準を満たしていると判定したＩ／Ｏノードについての収集規則を変更する（調整する）。
【０１４１】
具体的には、第２調整部１６０は、所定の基準を満たしていると判定したＩ／Ｏノードについて、収集規則テーブル１８３の「実周波数」、「実点数」、および、「巡回頻度（より正確には、相対的な巡回頻度）」の少なくとも一つの項目を更新する。第２調整部１６０による「実周波数」、「実点数」、および、「巡回頻度」の更新内容について、詳細は後に図６を用いて説明する。
【０１４２】
表示制御部１７０は、表示画面（例えば、ツールなどの外部表示装置の表示画面）に、実行中のサンプリング処理に係る情報を表示する。表示制御部１７０は、例えば、ユーザの設定した最大値Ｖａｍｍ、実行中のサンプリング処理に係る処理負荷の大きさを示す平均サンプリング速度Ｖｍｅａｎ、および、最大値Ｖａｍｍと平均サンプリング速度Ｖｍｅａｎとの差である余裕速度Ｖｍａｒｇｉｎを表示させる。また、表示制御部１７０は、例えば、「巡回単位順列に含まれる複数のＩ／Ｏノードの各々の名称」、「巡回単位順列における、各Ｉ／Ｏノードの出現順序」、および、「現在、データ収集対象となっているＩ／Ｏノード」を表示させる。さらに、表示制御部１７０は、例えば、各Ｉ／Ｏノードについて、適用中の収集規則における「サンプリング周波数」、「サンプリング点数」、および、「直近のデータに対する重要度」を表示させる。
【０１４３】
（記憶部の詳細）
記憶部１８０は、ＰＬＣ１０が使用する各種データを格納する記憶装置である。なお、記憶部１８０は、ＰＬＣ１０が実行する（１）制御プログラム、（２）ＯＳプログラム、（３）ＰＬＣ１０が有する各種機能を実行するためのアプリケーションプログラム、および、（４）該アプリケーションプログラムを実行するときに読み出す各種データを非一時的に記憶してもよい。上記の（１）〜（４）のデータは、例えば、ＲＯＭ（read only memory）、フラッシュメモリ、ＥＰＲＯＭ（Erasable Programmable ROM）、ＥＥＰＲＯＭ（登録商標）（Electrically EPROM）、ＨＤＤ（Hard Disc Drive）等の不揮発性記憶装置に記憶される。ＰＬＣ１０は、図示しない一時記憶部を備えていてもよい。一時記憶部は、ＰＬＣ１０が実行する各種処理の過程で、演算に使用するデータおよび演算結果等を一時的に記憶するいわゆるワーキングメモリであり、ＲＡＭ（Random Access Memory）等の揮発性記憶装置で構成される。どのデータをどの記憶装置に記憶するのかについては、ＰＬＣ１０の使用目的、利便性、コスト、または、物理的な制約等から適宜決定される。記憶部１８０はさらに制御データテーブル１８１、最大許容値テーブル１８２、および、収集規則テーブル１８３を格納している。
【０１４４】
制御データテーブル１８１には、取得部１１０によって、取得部１１０がスレーブ装置から制御周期ごとに取得した制御データが格納される。最大許容値テーブル１８２には、受付部１２０によって、受付部１２０が受け付けた最大値Ｖａｍｍが格納される。収集規則テーブル１８３には、収集部１４０がサンプリングを実行する際に従う、つまり、収集部１４０が制御データテーブル１８１を参照してデータベース２０に送信すべきデータを収集する際に従う、収集規則等が格納される。
【０１４５】
（収集規則テーブルの概要）
図４は、収集規則テーブル１８３のデータ構造の一例を示す図である。図４に例示するように、収集規則テーブル１８３には、例えば、各Ｉ／Ｏノードを識別するＩＤが、巡回単位順列における出現順序に従って格納されており、つまり、収集規則テーブル１８３には、巡回単位順列が格納されている。言い換えれば、収集規則テーブル１８３の「ＩＤ」の項目に格納されているＩＤに対応するＩ／Ｏノードが、収集規則テーブル１８３の「ＩＤ」の項目に格納されている順に（例えば、図４の紙面の上から順に）、データ収集対象となる。図４の例では、「順列：Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、・・・、Ｘ」との巡回単位順列が収集規則テーブル１８３において規定されている。つまり、図４に例示する収集規則テーブル１８３には、「Ａの後にＢ、Ｂの後にＣ、Ｃの後にＤ、Ｄの後にＥ、Ｅの後にＦ、Ｆの後に・・・、Ｘの後にＡ」との巡回単位順列が格納されている。
【０１４６】
本実施形態の説明においては、記載を簡略化するため、例えば、「ＩＤ：Ａ」のＩ／Ｏノードを「Ｉ／Ｏノード：Ａ」と、「ＩＤ：Ｂ」のＩ／Ｏノードを「Ｉ／Ｏノード：Ｂ」といったように略記することがある。
【０１４７】
ユーザは、初期設定として、例えば、各ＩＤに対応するＩ／Ｏノードが、どのようなデータについてのデータであるのかを示す「名称」、および、そのデータの１単位当たりの大きさの基準となる「データ型」を登録する。ユーザは、各Ｉ／Ｏノードについて「データ型」を登録することによって、各Ｉ／Ｏノードについて、収集するデータの１単位当たりの大きさを登録する。
【０１４８】
また、ユーザは、初期設定として、各Ｉ／Ｏノードについての収集規則を登録する。すなわち、ユーザは、各Ｉ／Ｏノードについて、サンプリング周波数の初期設定として「基準周波数」を、サンプリング点数の初期設定として「基準点数」を、登録する。さらに、ユーザは、各Ｉ／Ｏノードに付与される重要度の変数名を示す項目である「重要度変数」を登録してもよい。
【０１４９】
受付部１２０は、各Ｉ／Ｏノードについて、ユーザの登録する「名称（識別子）」、「データ型」、「基準周波数」、および「基準点数」等を受け付け、これらを収集規則テーブル１８３の対応する項目に格納する。
【０１５０】
図４の例では、ユーザが、「ＩＤ：Ａ」のＩ／Ｏノードについて、その「名称」として「ＴｏｒｑｕｅＤａｔａ１（例えば、軸１のトルク）」を登録し、また、「ＩＤ：Ａ」のＩ／Ｏノードのデータの「データ型」が「ＩＮＴ」型であることが示されている。「ＩＤ：Ａ」のＩ／Ｏノードの「基準周波数（つまり、初期設定されたサンプリング周波数）」は、「２００Ｈｚ」であり、「基準点数（つまり、初期設定されたサンプリング点数）」は、「１０００」である。
【０１５１】
同様に、ユーザが、「ＩＤ：Ｂ」のＩ／Ｏノードについて、その「名称」として「ＶｅｌｏｃｉｔｙＤａｔａ１（例えば、軸１の速度）」を登録し、また、「ＩＤ：Ｂ」のＩ／Ｏノードのデータの「データ型」が「ＤＩＮＴ」型であることが示されている。「ＩＤ：Ｂ」のＩ／Ｏノードの「基準周波数」は、「２００Ｈｚ」であり、「基準点数」は、「１０００」である。
【０１５２】
（待ち時間の設定についての注記）
前述の通り、収集部１４０は、収集規則テーブル１８３に格納されている巡回単位順列に従って巡回を実行する。ここで、詳細は後に図１２の（Ｂ）を参照して説明するが、収集部１４０は、サンプリングするデータとデータとの間に待ち時間を設定してもよい。例えば、図４に例示する収集規則テーブル１８３には、「ＩＤ」および「収集時間（図４においては不図示）」の項目にだけデータが格納されている行があってもよい。すなわち、収集規則テーブル１８３は、巡回単位順列における各Ｉ／Ｏノード（より正確には、「各ＩＤ」）について、巡回単位順列における１回の出現ごとの収集時間（サンプリング期間）を示す「収集時間」の項目を有していてもよい。
【０１５３】
例えば、「順列：Ａ、Ｂ、Ｃ、Ｄ」を格納した収集規則テーブル１８３における「ＩＤ：Ｄ」の行について、「基準周波数」および「基準点数」等の項目は未指定で、「収集時間」の項目にだけ「１０．７ｓ」が格納されている場合、この収集規則テーブル１８３には、以下の収集規則が格納されている。すなわち、「ＩＤ：Ｃ」のＩ／Ｏノードについてのサンプリング（つまり、データ収集）を完了した後、「ＩＤ：Ａ」のＩ／Ｏノードについてのサンプリングを開始するまで、「１０．７秒」の間、サンプリング処理を中断するとの収集規則が格納されている。なお、本実施の形態では、「秒」は「Ｓ」と略記することがある。
【０１５４】
複数のＩ／Ｏノードのサンプリングの間に「待ち時間」が設定される（挿入される）場合、「待ち時間」として設定されるＩ／Ｏノードの「ＩＤ」および「収集時間」の項目のみが設定され、「基準周波数」および「基準点数」等の項目は未指定とされる。ただし、「待ち時間」として設定されるＩ／Ｏノードについて、収集規則テーブル１８３において、「基準点数：０」および「実点数：０」が設定されてもよい。
【０１５５】
（重要度について）
前述の通り、収集部１４０は、巡回単位順列において順々に出現するＩＤに対応するＩ／Ｏノードのデータを次々と収集し、評価部１５０は、収集部１４０によって収集されたデータに対して重要度（調停済重要度）を付与する。具体的には、評価部１５０は、収集部１４０によって収集されたデータに対して付与した重要度を、収集規則テーブル１８３の「履歴」項目へと格納する。
【０１５６】
収集規則テーブル１８３は、「Ｎ」を「１」以上の整数として、１巡目からＮ巡目までの巡回単位順列の各々において、各巡回単位順列において出現するＩＤに対応するＩ／Ｏノードのデータに対して付与される重要度が格納される、Ｎ個の「履歴」項目を有する。Ｎ個の「履歴」には、１巡目からＮ巡目までの巡回単位順列の各々において付与される重要度が、例えばＦＩＦＯ（First - In First - Out）で格納され、言い換えれば、重要度の、過去Ｎ回分の履歴が格納される。図４に示す例は、「Ｎ＝６」の例であり、つまり、図４の収集規則テーブル１８３は、１巡目から６巡目までの巡回単位順列の各々において付与される重要度の各々が格納される、「履歴１」から「履歴６」までの６個の「履歴」項目を有している。
【０１５７】
例えば、収集規則テーブル１８３に、「順列：Ａ、Ｂ、Ｃ、Ａ、Ｄ、Ｅ、Ｆ」が格納されている場合、図４の収集規則テーブル１８３の「履歴」項目には、以下のように収集部１４０によって付与された重要度が格納される。
【０１５８】
すなわち、評価部１５０は、１巡目の巡回単位順列の先頭の「Ｉ／Ｏノード：Ａ」について、「重要度：２」を算出すると、収集規則テーブル１８３における先頭の「ＩＤ：Ａ」の「履歴１」に「重要度：２」を格納する。評価部１５０は、１巡目の巡回単位順列の先頭から４番目に出現する「Ｉ／Ｏノード：Ａ」について、「重要度：１」を算出すると、収集規則テーブル１８３における先頭から４番目に出現する「ＩＤ：Ａ」の「履歴１」に「重要度：１」を格納する。
【０１５９】
評価部１５０は、２巡目の巡回単位順列の先頭の「Ｉ／Ｏノード：Ａ」について、「重要度：３」を算出すると、収集規則テーブル１８３における先頭の「ＩＤ：Ａ」の「履歴１」に「重要度：３」を、そして、「履歴２」に「重要度：２」を格納する。評価部１５０は、２巡目の巡回単位順列の先頭から４番目に出現する「Ｉ／Ｏノード：Ａ」について、「重要度：２」を算出すると、収集規則テーブル１８３における先頭から４番目に出現する「ＩＤ：Ａ」の「履歴１」に「重要度：２」を、「履歴２」に「重要度：１」を格納する。
【０１６０】
（その他の項目について）
図４に例示する収集規則テーブル１８３は、これまでに説明した「ＩＤ」、「名称」、「データ型」、「基準周波数」、「基準点数」、「重要度変数」、「履歴１」から「履歴６」、および、「収集時間」に加えて、以下の項目を有する。すなわち、収集規則テーブル１８３は、「実周波数（「実サンプリング周波数」とも称する）」および「実点数（「実サンプリング点数」とも称する）」の項目を有する。「実周波数」および「実点数」について、詳細は後に図６から図８等を用いて説明する。
【０１６１】
§３．動作例
図５は、ＰＬＣ１０が実行する処理の概要を示すフロー図である。受付部１２０は、ツールなどから、ユーザの指定する最大値Ｖａｍｍを受け付け、受け付けた最大値Ｖａｍｍを、記憶部１８０の最大許容値テーブル１８２に格納する（Ｓ１１０）。
【０１６２】
また、受付部１２０は、ツールなどから、各Ｉ／Ｏノードについて、ユーザの指定する「データ型」、「基準周波数」、および「基準点数」等の収集規則についての初期設定（基準値）を受け付ける。受付部１２０は、受け付けた「収集規則の初期設定」を、記憶部１８０の収集規則テーブル１８３に格納する。つまり、受付部１２０は、各Ｉ／Ｏノードの「名称（識別子）」、「データ型」、「基準周波数」、「基準点数」、「巡回頻度」、および、「順列を一巡するのに割り当てられた期間」の初期値を設定する（Ｓ１２０）。
【０１６３】
初期設定の段階では、各Ｉ／Ｏノードの「巡回頻度」は、例えば、巡回単位順列において「１回」であるものとする。すなわち、ユーザが「データ収集対象」として選択した全てのＩ／Ｏノードが各々１回だけ出現する巡回単位順列が、初期設定段階の巡回単位順列として、収集規則テーブル１８３に格納され、各Ｉ／Ｏノードの「巡回頻度」は初期設定段階では「１」である。また、「順列を一巡するのに割り当てられた期間」は、詳細は後述するが、巡回単位順列、サンプリング周波数、および、サンプリング点数から算出される。
【０１６４】
第１調整部１３０は、収集部１４０が収集規則テーブル１８３に格納されている収集規則に従って実行するサンプリング処理に係る処理負荷を示す平均サンプリング速度Ｖｍｅａｎが、ユーザの許容する最大処理負荷を示す最大値Ｖａｍｍ以下であるかを判定する。すなわち、第１調整部１３０は、「平均サンプリング速度Ｖｍｅａｎ＜＝最大値Ｖａｍｍ」となっているかを判定する（Ｓ１３０）。第１調整部１３０は、収集規則テーブル１８３を参照して、調整後の収集規則が格納済であれば調整後の収集規則から平均サンプリング速度Ｖｍｅａｎを算出し、調整後の収集規則が未格納であれば基準収集規則から平均サンプリング速度Ｖｍｅａｎを算出する。そして、第１調整部１３０は、算出した平均サンプリング速度Ｖｍｅａｎが、最大許容値テーブル１８２に格納されている最大値Ｖａｍｍ以下であるかを判定する。
【０１６５】
第１調整部１３０が、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍ以下であると判定すると（Ｓ１３０でＹｅｓ）、収集規則テーブル１８３に格納されている収集規則をそのまま、収集部１４０が従うべき収集規則として採用する。すなわち、調整後の収集規則が未格納であれば、第１調整部１３０は、各Ｉ／Ｏノードについて、収集規則テーブル１８３の「基準周波数」および「基準点数」の各々の値を、「実周波数」および「実点数」の各々へと格納する。調整後の収集規則が格納済であれば、第１調整部１３０は、各Ｉ／Ｏノードについて、収集規則テーブル１８３の「実周波数」および「実点数」の各々の項目に格納されている値を変更しない。
【０１６６】
収集部１４０は、収集規則テーブル１８３に格納されている収集規則に従って、制御データテーブル１８１を参照してデータ収集を実行する（Ｓ１５０）。すなわち、収集部１４０は、収集規則テーブル１８３に格納されている巡回単位順列に従って、データ収集対象とするＩ／Ｏノードを切り替えながら、各Ｉ／Ｏノードのデータを、収集規則テーブル１８３の「実周波数」および「実点数」に従って、収集する。
【０１６７】
第１調整部１３０が、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍより大きいと判定すると（Ｓ１３０でＮｏ）、収集規則テーブル１８３に格納されている収集規則を調整（なたは再調整）した収集規則を、収集部１４０が従うべき収集規則として採用する。つまり、第１調整部１３０は、各Ｉ／Ｏノードの「巡回頻度（より正確には、相対的な巡回頻度）」、「サンプリング周波数」、「サンプリング点数」、および「順列を一巡するのに割り当てられた期間」の少なくとも一つを、最大値Ｖａｍｍを用いて補正（調整）する（Ｓ１４０）。第１調整部１３０は、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍ以下となるように、各Ｉ／Ｏノードの「巡回頻度」、「サンプリング周波数」、「サンプリング点数」、および「順列を一巡するのに割り当てられた期間」の少なくとも１つを調整する。
【０１６８】
調整後の収集規則が未格納であれば、第１調整部１３０は、例えば、収集規則テーブル１８３の「基準周波数」および「基準点数」の少なくとも一方の値を調整した値を、「実周波数」および「実点数」へと格納する。また、第１調整部１３０は、例えば、収集規則テーブル１８３に格納されている巡回単位順列を調整し、さらに、例えば、収集規則テーブル１８３に格納されている「巡回単位順列を一巡するまでに要する時間」を調整する。
【０１６９】
調整後の収集規則が格納済であれば、第１調整部１３０は、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍ以下となるように、収集規則テーブル１８３の「実周波数」および「実点数」の少なくとも一方の値を再調整する。また、第１調整部１３０は、例えば、収集規則テーブル１８３に格納されている巡回単位順列を再調整し、さらに、例えば、収集規則テーブル１８３に格納されている「巡回単位順列を一巡するまでに要する時間」を再調整する。
【０１７０】
収集部１４０は、収集規則テーブル１８３に格納されている、Ｓ１４０における調整後（または、再調整後）の収集規則に従って、制御データテーブル１８１を参照してデータ収集（サンプリング）を実行する（Ｓ１５０）。収集部１４０は、収集規則テーブル１８３に格納されている収集規則に従って収集した各Ｉ／Ｏノードのデータを評価部１５０に通知する。
【０１７１】
評価部１５０は、収集部１４０から通知された各Ｉ／Ｏノードのデータに対して重要度（調停済重要度）を算出し、算出した重要度を、収集規則テーブル１８３における、対応するＩ／Ｏノードの「履歴（重要度の履歴）」の項目に格納する。
【０１７２】
第２調整部１６０は、収集規則テーブル１８３を参照して、収集規則テーブル１８３における各Ｉ／Ｏノードの「重要度」が所定の基準を満たしているかを判定し、所定の基準を満たしていると判定したＩ／Ｏノードについての収集規則を調整する。すなわち、第２調整部１６０は、各Ｉ／Ｏノードの重要度に基づいて、収集規則テーブル１８３における、各Ｉ／Ｏノードの「巡回頻度（より正確には、相対的な巡回頻度）」、「サンプリング周波数」、および「サンプリング点数」の少なくとも一つの値を更新する（Ｓ１６０）。
【０１７３】
これまでに図５を参照しながら説明してきたＰＬＣ１０が実行する処理（言い換えれば、ＰＬＣ１０が実行する制御方法）は、以下のように整理することができる。すなわち、ＰＬＣ１０が実行する制御方法は、マスタスレーブ制御システムである制御システム１におけるＰＬＣ１０（マスタ装置）の制御方法であって、収集ステップ（Ｓ１５０）と、受付ステップ（Ｓ１１０）と、第１調整ステップ（Ｓ１４０）と、を含んでいる。収集ステップＳ１５０は、サーボドライバ３０等のスレーブ装置から周期的に取得した制御データから、データベース２０等の外部装置に送信すべき複数のデータの各々を、所定の収集規則に従って、繰り返し収集するステップである。受付ステップＳ１１０は、収集ステップＳ１５０にて単位時間あたりに収集されるデータのデータ量について、ユーザの指定する最大値Ｖａｍｍを受け付けるステップである。第１調整ステップＳ１４０は、前記所定の収集規則に従って収集ステップＳ１５０にて単位時間あたりに収集されるデータのデータ量が、受付ステップＳ１１０にて受け付けられた最大値Ｖａｍｍ以下となるように、前記収集規則を調整するステップである。
【０１７４】
前記の方法によれば、ＰＬＣ１０が実行する制御方法は、単位時間あたりに収集するデータのデータ量が最大値Ｖａｍｍ以下となるように収集規則を調整し、調整した収集規則に従って、前記制御データから、前記複数のデータの各々を繰り返し収集する。
【０１７５】
ここで、単位時間あたりに収集するデータのデータ量が大きくなるほど、ＰＬＣ１０が実行する制御方法のデータ収集に係る単位時間当たりの処理負荷が大きくなることは明らかである。つまり、最大値Ｖａｍｍは、ＰＬＣ１０が実行する制御方法のデータ収集に係る単位時間当たりの処理負荷に対応する。
【０１７６】
したがって、ＰＬＣ１０が実行する制御方法は、データ収集に係る単位時間当たりの処理負荷が、ユーザの指定する最大値Ｖａｍｍに対応する処理負荷以下となるように、前記制御データから、データベース２０等の外部装置に送信すべきデータを収集することができるとの効果を奏する。言い換えれば、ＰＬＣ１０が実行する制御方法によってユーザは、前記制御データから前記複数のデータの各々を収集する処理に係る処理負荷を管理できるようになるとの効果を奏する。具体的には、ユーザは、ＰＬＣ１０に、「サーボドライバ３０等のスレーブ対象に対する制御処理などの、データ収集処理以外の処理」の実行に影響のない適切な処理負荷で、前記外部装置に送信すべきデータを、前記制御データから収集させることができる。
【０１７７】
また、「ＰＬＣ１０が実行する制御方法が単位時間あたりに収集するデータのデータ量」は、ユーザにとって直感的に把握しやすく、かつ、「ＰＬＣ１０が実行する制御方法の、データ収集に係る単位時間当たりの処理負荷」を正確に示すことのできる指標である。
【０１７８】
したがって、ＰＬＣ１０が実行する制御方法は、「データ収集に係る単位時間当たりの処理負荷」の指標として正確で、かつ、ユーザにとって直感的な把握の容易な「単位時間あたりに収集するデータのデータ量」に基づいて、データ収集処理を管理できるとの効果を奏する。
【０１７９】
（重要度に基づく、各Ｉ／Ｏノードの収集規則の調整について）
図６は、各Ｉ／Ｏノードについて、重要度に基づいて収集規則を調整する方法の具体例を説明する図である。図６の（Ａ）は、重要度に基づいて、サンプリング周波数とサンプリング点数とを調整する方法の一例を示す図である。図６の（Ｂ）は、重要度に基づいて、各Ｉ／Ｏノードの巡回頻度（より正確には、相対的な巡回頻度）を調整し、つまり、収集部１４０の従う巡回単位順列を調整する方法の一例を示す図である。
【０１８０】
（サンプリング周波数およびサンプリング点数の少なくとも一方の調整）
「Ｎ」を「１」以上の整数として、第２調整部１６０は、収集規則テーブル１８３の「履歴（重要度の履歴）」に格納されている値が、連続してＮ回、増加基準値Ｕｔｈ以上であるＩ／Ｏノード（つまり、各ＩＤ）の収集規則を変更する。
【０１８１】
図６の（Ａ）には、「Ｎ＝６」、「増加基準値Ｕｔｈ＝３」である例が示されている。図６の（Ａ）において、「Ｉ／Ｏノード：Ａ」の「履歴１」から「履歴６」までの各々には、いずれも「３」以上の値が入力されており、つまり、「Ｉ／Ｏノード：Ａ」について、「履歴」に格納されている値は、連続して「６」回、増加基準値「３」以上である。そこで、第２調整部１６０は、「Ｉ／Ｏノード：Ａ」の「実周波数」を「２００Ｈｚから、４００Ｈｚへ」増加させ、また、「実点数」を「１０００から、２０００へ」増加させている。ただし、第２調整部１６０にとって、「実周波数」と「実点数」との両方の値を増加させることは必須ではなく、少なくとも一方の値を増加させればよい。第２調整部１６０は、重要度の高いデータのＩ／Ｏノードについて、そのＩ／Ｏノードの収集規則を調整して、具体的には、サンプリング周波数とサンプリング点数との少なくとも一方を増加させて、より多くのデータを収集する。
【０１８２】
「Ｍ」を「１」以上の整数として、第２調整部１６０は、収集規則テーブル１８３の「履歴（重要度の履歴）」に格納されている値が、連続してＭ回、減少基準値Ｄｔｈ以下であるＩ／Ｏノード（つまり、各ＩＤ）の収集規則を変更する。
【０１８３】
図６の（Ａ）には、「Ｍ＝６」、「減少基準値Ｄｔｈ＝１」である例が示されている。図６の（Ａ）において、「Ｉ／Ｏノード：Ｄ」の「履歴１」から「履歴６」までの各々には、いずれも「１」以下の値が入力されており、つまり、「Ｉ／Ｏノード：Ｄ」について、「履歴」に格納されている値は、連続して「６」回、減少基準値「１」以下である。そこで、第２調整部１６０は、「Ｉ／Ｏノード：Ｄ」の「実周波数」を「２００Ｈｚから、１００Ｈｚへ」減少させ、また、「実点数」を「１０００から、５００へ」減少させている。ただし、第２調整部１６０にとって、「実周波数」と「実点数」との両方の値を減少させることは必須ではなく、少なくとも一方の値を減少させればよい。第２調整部１６０は、重要度の低いデータのＩ／Ｏノードについて、そのＩ／Ｏノードの収集規則を調整して、具体的には、サンプリング周波数とサンプリング点数との少なくとも一方を減少させて、収集するデータ量を抑制する。
【０１８４】
（巡回頻度の調整）
「Ｎ」を「１」以上の整数として、第２調整部１６０は、収集規則テーブル１８３の「履歴」に格納されている値が、連続してＮ回、増加基準値Ｕｔｈ以上であるＩ／Ｏノード（つまり、各ＩＤ）の巡回頻度（より正確には、相対的な巡回頻度）を増加させる。また、「Ｍ」を「１」以上の整数として、第２調整部１６０は、収集規則テーブル１８３の「履歴」に格納されている値が、連続してＭ回、減少基準値Ｄｔｈ以下であるＩ／Ｏノード（つまり、各ＩＤ）の巡回頻度（より正確には、相対的な巡回頻度）を減少させる。すなわち、第２調整部１６０は、各Ｉ／Ｏノードの重要度に基づいて、各Ｉ／Ｏノードの相対的な巡回頻度を変更し、つまり、巡回単位順列を変更する。
【０１８５】
図６の（Ｂ）の一段目には、データ収集対象のＩ／ＯノードのＩＤが、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆの６つである場合の、通常の巡回単位順列（つまり、初期設定段階の巡回単位順列）が、具体的には、「順列：Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ」が、示されている。初期設定段階において、各Ｉ／Ｏノードの「巡回頻度」は「１」であり、したがって、データ収集対象のＩ／ＯノードのＩＤが、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆの６つである場合、初期設定段階の巡回単位順列は、例えば「順列：Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ」となる。収集部１４０は、「Ａの後にＢ、Ｂの後にＣ、Ｃの後にＤ、Ｄの後にＥ、Ｅの後にＦ、Ｆの後にＡ、Ａの後にＢ、Ｂの後にＣ、Ｃの後にＤ、Ｄの後にＥ、Ｅの後にＦ、Ｆの後にＡ、Ａの後にＢ、・・・」で巡回を実行する。
【０１８６】
図６の（Ｂ）の二段目には、「Ｎ＝６」、「増加基準値Ｕｔｈ＝３」として、「Ｉ／Ｏノード：Ａ」の巡回頻度を増加させた場合の巡回単位順列が示されている。図６の（Ａ）の「Ｉ／Ｏノード：Ａ」のように、「履歴１」から「履歴６」までの各々に「３」以上の値が入力され、つまり、「履歴」の値が、連続「６」回、増加基準値「３」以上であると、第２調整部１６０は、「Ｉ／Ｏノード：Ａ」の巡回頻度を増加させる。図６の（Ｂ）の二段目に示す「順列：Ａ、Ｂ、Ｃ、Ａ、Ｄ、Ｅ、Ｆ」は、図６の（Ｂ）の一段目に示す「順列：Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ」から、「Ｉ／Ｏノード：Ａ」についてのみ、その巡回頻度を増加させた場合の巡回単位順列の一例である。「順列：Ａ、Ｂ、Ｃ、Ａ、Ｄ、Ｅ、Ｆ」において、「Ｉ／Ｏノード：Ａ」の「巡回頻度」は「２」であり、他のＩ／Ｏノード（つまり、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ）の「巡回頻度」は「１」である。第２調整部１６０は、重要度の高いデータのＩ／Ｏノードについて、そのＩ／Ｏノードの収集規則を調整して、具体的には、相対的な巡回頻度を増加させて、より多くのデータを収集する。
【０１８７】
図６の（Ｂ）の三段目には、「Ｍ＝６」、「減少基準値Ｄｔｈ＝１」として、「Ｉ／Ｏノード：Ｄ」の巡回頻度を増加させた場合の巡回単位順列が示されている。図６の（Ａ）の「Ｉ／Ｏノード：Ｄ」のように、「履歴１」から「履歴６」までの各々に「１」以下の値が入力され、つまり、「履歴」の値が、連続「６」回、減少基準値「１」以下であると、第２調整部１６０は、「Ｉ／Ｏノード：Ｄ」の巡回頻度を減少させる。図６の（Ｂ）の三段目に示す「順列：Ａ、Ｂ、Ｃ、Ａ、Ｅ、Ｆ、Ａ、Ｂ、Ｃ、Ａ、Ｄ、Ｅ、Ｆ」は、図６の（Ｂ）の二段目に示す「順列：Ａ、Ｂ、Ｃ、Ａ、Ｄ、Ｅ、Ｆ」から、「Ｉ／Ｏノード：Ｄ」の巡回頻度を減少させた場合の巡回単位順列の一例である。「順列：Ａ、Ｂ、Ｃ、Ａ、Ｅ、Ｆ、Ａ、Ｂ、Ｃ、Ａ、Ｄ、Ｅ、Ｆ」において、「巡回頻度」は、「Ｉ／Ｏノード：Ａ」が「４」、「Ｉ／Ｏノード：Ｂ、Ｃ、Ｅ、Ｆが「２」、「Ｉ／Ｏノード：Ｄ」が「１」である。第２調整部１６０は、重要度の低いデータのＩ／Ｏノードについて、そのＩ／Ｏノードの収集規則を調整して、具体的には、相対的な巡回頻度を減少させて、収集するデータ量を抑制する。
【０１８８】
（最大値Ｖａｍｍを用いた収集規則の調整の具体例）
取得部１１０がスレーブ装置から制御周期ごとに取得した全ての制御データを、つまり、全てのＩ／Ｏノードのデータを、収集部１４０が初期設定段階の収集規則に従って収集できれば最も望ましいが、そのような収集処理は処理負荷が極めて大きくなってしまう。そこで、ユーザは「ＰＬＣ１０が実行するサンプリング処理に係る処理負荷（言い換えれば、「システムのデータ収集能力」）」の許容最大値を、「最大値Ｖａｍｍ」として設定し、ＰＬＣ１０について、サンプリング処理に係る処理負荷を管理する。
【０１８９】
第１調整部１３０は、収集部１４０によるサンプリング処理に係る処理負荷が、「最大値Ｖａｍｍ」によって規定される処理負荷以下となるように、収集部１４０がサンプリング処理を実行する際に従う収集規則を調整する。具体的には、第１調整部１３０は、各Ｉ／Ｏノードの「巡回頻度」、「サンプリング周波数」、「サンプリング点数」、および、「巡回単位順列を一巡するまでに要する時間」の少なくとも一つの項目を、最大値Ｖａｍｍを用いて、調整する。
【０１９０】
第１調整部１３０が、各Ｉ／Ｏノードの「巡回頻度」、「サンプリング周波数」、「サンプリング点数」、および、「巡回単位順列を一巡するまでに要する時間」のいずれを調整するかは、例えば、収集部１４０の収集するデータの利用目的により決定される。例えば、収集部１４０の収集するデータに対する「一貫性のある解析」を目的として、ＰＬＣ１０にデータ収集処理（つまり、サンプリング処理）を実行させる場合、収集規則の内、「サンプリング周波数」は不変とするのが望ましい。したがって、第１調整部１３０は、例えば、「巡回頻度」および「サンプリング点数」の少なくとも一方を変更し（調整し）、「サンプリング周波数」は変更せずに維持する（周波数維持）。
【０１９１】
例えば、収集部１４０に、「取得部１１０がスレーブ装置から制御周期ごとに取得した全ての制御データ」から、まんべんなくデータを収集させることを目的とする場合、収集規則の内、「巡回頻度」および「サンプリング点数」は不変とするのが望ましい。したがって、第１調整部１３０は、例えば、「サンプリング周波数」を変更し（調整し）、「巡回頻度」および「サンプリング点数」は変更せずに維持する（巡回頻度および点数維持）。収集部１４０が繰り返し実行するサンプリング処理の間が途切れることを許容できる場合、第１調整部１３０は、繰り返し実行するサンプリング処理の間に待ち時間を設け、つまり、「巡回単位順列を一巡するまでに要する時間」を調整する（待ち時間挿入）。
【０１９２】
第１調整部１３０は、収集部１４０の収集するデータの利用目的に応じて、任意の方法によって、サンプリング処理に係る処理負荷が、「最大値Ｖａｍｍ」によって規定される処理負荷以下となるように、収集規則を調整する。つまり、第１調整部１３０は、収集部１４０の実行するデータ収集処理（サンプリング処理）の処理負荷の大きさを示す値（平均サンプリング速度Ｖｍｅａｎ）が最大値Ｖａｍｍ以下となるよう、収集部１４０の収集するデータの利用目的に応じて、収集規則を調整する。
【０１９３】
以下、先ず図７および図８を用いて、第１調整部１３０が、収集部１４０の実行するサンプリング処理の処理負荷の大きさを示す値（平均サンプリング速度Ｖｍｅａｎ）と、最大値Ｖａｍｍとから、収集規則の調整要否を判定する方法について説明する。
【０１９４】
（収集規則の調整が不要である場合の例）
図７は、収集部１４０が実際にサンプリング処理を実行する際に従う収集規則として、基準収集規則をそのまま変更せずに採用できる場合の収集規則テーブル１８３等の一例を示す図である。図７において、「最大値Ｖａｍｍ＝１０２４ｂｙｔｅ／ｓ」とする。
【０１９５】
ユーザは、取得部１１０がスレーブ装置から制御周期ごとに取得し、制御データテーブル１８１に格納されている制御データである、「Ｉ／Ｏノード：Ａ」、「Ｉ／Ｏノード：Ｂ」、および、「Ｉ／Ｏノード：Ｃ」のデータについて、以下の内容を登録する。すなわち、ユーザは、各Ｉ／Ｏノードについて、「名称」、「データ型」、「基準周波数」、および「基準点数」を設定する。ここで、「データ型」は、図４に例示したように、例えば、「ＩＮＴ」、「ＤＩＮＴ」等であり、各Ｉ／Ｏノードのデータの１単位当たりの大きさを示す情報である。例えば、「データ型：ＩＮＴ」のデータの１単位当たりの大きさは「１６ｂｉｔ」であり、「データ型：ＤＩＮＴ」のデータの１単位当たりの大きさは「３２ｂｉｔ」であるものとする。
【０１９６】
図７の（Ａ）に例示する収集規則テーブル１８３には、「Ｉ／Ｏノード：Ａ」について、「データ型」が例えば「ＤＩＮＴ」であって、１単位当たり３２ｂｉｔ、「基準周波数」が「２００Ｈｚ」、「基準点数」が「１０００」であるとの情報が登録されている。同様に、「Ｉ／Ｏノード：Ｂ」は、「データ型」が例えば「ＤＩＮＴ」であって、１単位当たり３２ｂｉｔ、「基準周波数」が「２００Ｈｚ」、「基準点数」が「１０００」である。また、「Ｉ／Ｏノード：Ｃ」は、「データ型」が例えば「ＩＮＴ」であって、１単位当たり１６ｂｉｔ、「基準周波数」が「１０００Ｈｚ」、「基準点数」が「１０００」である。
【０１９７】
（サンプリング速度の算出方法）
第１調整部１３０は、各Ｉ／Ｏノードの「データ型」、「基準周波数」、および「基準点数」から、各Ｉ／Ｏノードについて、「単位時間あたり（１秒間）に収集されるデータのデータ量（ｂｙｔｅ）」を示すサンプリング速度Ｖｓａｍｐｌｅを算出する。「Ｉ／Ｏノード：Ａ」、「Ｉ／Ｏノード：Ｂ」、および、「Ｉ／Ｏノード：Ｃ」の各々のサンプリング速度Ｖｓａｍｐｌｅをサンプリング速度ＶＡ、ＶＢ、およびＶＣとすると、第１調整部１３０は、以下のように、サンプリング速度ＶＡ、ＶＢ、およびＶＣを算出する。すなわち、第１調整部１３０は、各Ｉ／Ｏノードについて、「データ型」によって特定されるデータ１単位当たりの大きさに、「基準周波数」の値を乗じた後、「８ｂｉｔ／ｂｙｔｅ」で除して、サンプリング速度Ｖｓａｍｐｌｅを算出する。サンプリング速度ＶＡ、ＶＢ、およびＶＣは各々、具体的には、図７の（Ｂ）に例示するように、
【０１９８】
【数１】
2020052441.tif 000003
【０１９９】
となる。
【０２００】
すなわち、第１調整部１３０は、各Ｉ／Ｏノードについて、「データ型」によって特定されるデータ１単位当たりの大きさに、「サンプリング周波数」の値を乗じた後、「８ｂｉｔ／ｂｙｔｅ」で除して、サンプリング速度Ｖｓａｍｐｌｅを算出する。
【０２０１】
（収集時間の算出方法）
また、第１調整部１３０は、各Ｉ／Ｏノードの「データ型」、「基準周波数」、および「基準点数」から、各Ｉ／Ｏノードについて、「基準点数を収集するのに要する期間」である収集時間Ｔｓａｍｐｌｅを算出する。「Ｉ／Ｏノード：Ａ」、「Ｉ／Ｏノード：Ｂ」、および、「Ｉ／Ｏノード：Ｃ」の各々の収集時間Ｔｓａｍｐｌｅを収集時間ＴＡ、ＴＢ、およびＴＣとすると、第１調整部１３０は、以下のように、収集時間ＴＡ、ＴＢ、およびＴＣを算出する。すなわち、第１調整部１３０は、各Ｉ／Ｏノードについて、「基準点数」の値を「基準周波数」の値で除して、収集時間Ｔｓａｍｐｌｅを算出する。収集時間ＴＡ、ＴＢ、およびＴＣは各々、具体的には、図７の（Ｂ）に例示するように、
【０２０２】
【数２】
2020052441.tif 000004
【０２０３】
となる。
【０２０４】
すなわち、第１調整部１３０は、各Ｉ／Ｏノードについて、「サンプリング点数」の値を「サンプリング周波数」の値で除して、収集時間Ｔｓａｍｐｌｅを算出する。以下の説明において、「各Ｉ／Ｏノードの収集時間Ｔｓａｍｐｌｅの、全Ｉ／Ｏノード分の合計（つまり、全Ｉ／Ｏノード分の収集時間Ｔｓａｍｐｌｅの合計）」を「総収集時間ＴＡｌｌ」と称することがある。総収集時間ＴＡｌｌは、第１調整部１３０が巡回単位順列を一巡するのに割り当てられた期間（言い換えれば、巡回単位順列を一巡するまでに収集部１４０が要する期間）とも言える。図７の（Ｂ）に示す例では、巡回単位順列における各Ｉ／Ｏノードの収集時間Ｔｓａｍｐｌｅの合計から、「総収集時間ＴＡｌｌ＝ＴＡ＋ＴＢ＋ＴＣ＝５＋５＋１＝１１ｓ」となる。
【０２０５】
（平均サンプリング速度の算出方法）
第１調整部１３０は、巡回単位順列における各Ｉ／Ｏノードについて算出したサンプリング速度Ｖｓａｍｐｌｅと収集時間Ｔｓａｍｐｌｅとから、収集部１４０によって単位時間あたりに収集されるデータのデータ量を示す「平均サンプリング速度Ｖｍｅａｎ」を算出する。具体的には、第１調整部１３０は、「巡回単位順列を一巡するまでに収集部１４０によって収集されるデータのデータ量を、巡回単位順列を一巡するまでに収集部１４０が要する時間間隔で除した値」として、「平均サンプリング速度Ｖｍｅａｎ」を算出する。例えば、第１調整部１３０は、「各Ｉ／Ｏノードのサンプリング速度Ｖｓａｍｐｌｅに各Ｉ／Ｏノードの収集時間Ｔｓａｍｐｌｅを乗じた値」の全Ｉ／Ｏノード分の合計を、全Ｉ／Ｏノード分の収集時間Ｔｓａｍｐｌｅの合計で除して、平均サンプリング速度Ｖｍｅａｎを算出する。平均サンプリング速度Ｖｍｅａｎは、具体的には、図７の（Ｂ）に例示するように、
【０２０６】
【数３】
2020052441.tif 000005
【０２０７】
となる。
【０２０８】
（余裕速度の算出方法）
第１調整部１３０は、最大値Ｖａｍｍから平均サンプリング速度Ｖｍｅａｎを差し引いた値として、「余裕速度Ｖｍａｒｇｉｎ」を算出する。「最大値Ｖａｍｍ＝１０２４ｂｙｔｅ／ｓ」であり、「平均サンプリング速度Ｖｍｅａｎ＝９１０ｂｙｔｅ／ｓ」であるから、図７の（Ｂ）に例示するように、
【０２０９】
【数４】
2020052441.tif 000006
【０２１０】
である。
【０２１１】
第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎ＝１１４ｂｙｔｅ／ｓ」であり、つまり、「余裕速度Ｖｍａｒｇｉｎが『０』以上である」ことを確認すると、収集規則の調整が不要であると判定する。第１調整部１３０は、各Ｉ／Ｏノードについて、収集規則テーブル１８３の「基準周波数」および「基準点数」の各々の値を、「実周波数」および「実点数」の各々へと格納する。
【０２１２】
つまり、図７の（Ｃ）に例示するように、第１調整部１３０は、収集規則テーブル１８３の「Ｉ／Ｏノード：Ａ」について、「実周波数」に「基準周波数」と等しい「２００Ｈｚ」を格納し、「実点数」に「基準点数」と等しい「１０００」を格納する。同様に、「Ｉ／Ｏノード：Ｂ」について、「実周波数」に「基準周波数」と等しい「２００Ｈｚ」を格納し、「実点数」に「基準点数」と等しい「１０００」を格納する。また、「Ｉ／Ｏノード：Ｃ」について、「実周波数」に「基準周波数」と等しい「１０００Ｈｚ」を格納し、「実点数」に「基準点数」と等しい「１０００」を格納する。
【０２１３】
収集部１４０は、収集規則テーブル１８３に格納されている調整後の収集規則に従ってサンプリング処理を実行し、つまり、収集規則テーブル１８３に格納されている各Ｉ／Ｏノードの「基準周波数」および「基準点数」に従って、サンプリングを実行する。具体的には、図７の（Ｃ）に例示する収集規則テーブル１８３には、「順列：Ａ、Ｂ、Ｃ」が格納されているため、収集部１４０は、「Ｉ／Ｏノード：Ａ」、「Ｉ／Ｏノード：Ｂ」、および、「Ｉ／Ｏノード：Ｃ」の各々のデータを、この順に収集する。収集部１４０は、「Ｉ／Ｏノード：Ａ」について、「サンプリング周波数：２００Ｈｚ」として、「サンプリング点数：１０００」点のデータを、収集する。収集部１４０は、「Ｉ／Ｏノード：Ｂ」について、「サンプリング周波数：２００Ｈｚ」として、「サンプリング点数：１０００」点のデータを、収集する。収集部１４０は、「Ｉ／Ｏノード：Ｃ」について、「サンプリング周波数：１０００Ｈｚ」として、「サンプリング点数：１０００」点のデータを、収集する。
【０２１４】
（サンプリング速度についての留意点）
図７に示す例では、「Ｉ／Ｏノード：Ｃ」のサンプリング速度ＶＣは「２０００ｂｙｔｅ／ｓ」であり、「最大値Ｖａｍｍ＝１０２４ｂｙｔｅ／ｓ」よりも大きい。しかしながら、「平均サンプリング速度Ｖｍｅａｎ＝９１０ｂｙｔｅ／ｓ」は「最大値Ｖａｍｍ＝１０２４ｂｙｔｅ／ｓ」以下であるから、第１調整部１３０は、収集規則の調整が不要であると判定する。
【０２１５】
すなわち、特定のＩ／Ｏノードのサンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍを超えていても、データ収集全体の平均（平均サンプリング速度Ｖｍｅａｎ）が最大値Ｖａｍｍ以下であれば、第１調整部１３０は、収集規則の調整は不要であると判定する。
【０２１６】
（収集規則の調整が必要である場合の例）
図８は、収集部１４０が実際にサンプリング処理を実行する際に従う収集規則として、基準収集規則をそのまま採用できない場合の収集規則テーブル１８３等の一例を示す図である。図８において、「最大値Ｖａｍｍ＝１０２４ｂｙｔｅ／ｓ」とする。
【０２１７】
図８の（Ａ）に例示する収集規則テーブル１８３には、「Ｉ／Ｏノード：Ａ」について、「データ型」が例えば「ＤＩＮＴ」であって、１単位当たり３２ｂｉｔ、「基準周波数」が「２０００Ｈｚ」、「基準点数」が「２０００」であるとの情報が登録されている。同様に、「Ｉ／Ｏノード：Ｂ」は、「データ型」が例えば「ＤＩＮＴ」であって、１単位当たり３２ｂｉｔ、「基準周波数」が「１０００Ｈｚ」、「基準点数」が「１０００」である。また、「Ｉ／Ｏノード：Ｃ」は、「データ型」が例えば「ＩＮＴ」であって、１単位当たり１６ｂｉｔ、「基準周波数」が「１０００Ｈｚ」、「基準点数」が「１０００」である。
【０２１８】
（サンプリング速度の算出方法）
上述の通り、第１調整部１３０は、各Ｉ／Ｏノードについて、「データ型」によって特定されるデータ１単位当たりの大きさに、「サンプリング周波数」の値を乗じた後、「８ｂｉｔ／ｂｙｔｅ」で除して、サンプリング速度Ｖｓａｍｐｌｅを算出する。具体的には、第１調整部１３０は、「Ｉ／Ｏノード：Ａ」、「Ｉ／Ｏノード：Ｂ」、および、「Ｉ／Ｏノード：Ｃ」のサンプリング速度ＶＡ、ＶＢ、およびＶＣの各々について、図８の（Ｂ）に例示するように、以下の値を算出する。すなわち、第１調整部１３０は、「サンプリング速度ＶＡ＝８０００ｂｙｔｅ／ｓ」、「サンプリング速度ＶＢ＝４０００ｂｙｔｅ／ｓ」、「サンプリング速度ＶＣ＝２０００ｂｙｔｅ／ｓ」を算出する。
【０２１９】
（収集時間の算出方法）
また、第１調整部１３０は、各Ｉ／Ｏノードについて、「サンプリング点数」の値を「サンプリング周波数」の値で除して、収集時間Ｔｓａｍｐｌｅを算出する。具体的には、第１調整部１３０は、「Ｉ／Ｏノード：Ａ」、「Ｉ／Ｏノード：Ｂ」、および、「Ｉ／Ｏノード：Ｃ」の収集時間ＴＡ、ＴＢ、およびＴＣの各々について、図８の（Ｂ）に例示するように、以下の値を算出する。すなわち、第１調整部１３０は、「収集時間ＴＡ＝１ｓ」、「収集時間ＴＢ＝１ｓ」、「収集時間ＴＣ＝１ｓ」を算出する。
【０２２０】
（平均サンプリング速度および余裕速度の算出方法）
第１調整部１３０は、巡回単位順列における各Ｉ／Ｏノードについて算出したサンプリング速度Ｖｓａｍｐｌｅと収集時間Ｔｓａｍｐｌｅとから、平均サンプリング速度Ｖｍｅａｎを算出する。例えば、第１調整部１３０は、「各Ｉ／Ｏノードのサンプリング速度Ｖｓａｍｐｌｅに各Ｉ／Ｏノードの収集時間Ｔｓａｍｐｌｅを乗じた値」の全Ｉ／Ｏノード分の合計を、全Ｉ／Ｏノード分の収集時間Ｔｓａｍｐｌｅの合計で除して、平均サンプリング速度Ｖｍｅａｎを算出する。すなわち、第１調整部１３０は、「平均サンプリング速度Ｖｍｅａｎ＝４６６７ｂｙｔｅ／ｓ」を算出する。また、「最大値Ｖａｍｍ＝１０２４ｂｙｔｅ／ｓ」であるから、第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎ＝最大値Ｖａｍｍ−平均サンプリング速度Ｖｍｅａｎ＝−３６４３ｂｙｔｅ／ｓ」を算出する。
【０２２１】
第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎ＝−３６４３ｂｙｔｅ／ｓ」であり、つまり、「余裕速度Ｖｍａｒｇｉｎが『０』未満である」ことを確認すると、収集規則の調整が必要であると判定する。
【０２２２】
図７および図８を用いて説明したように、第１調整部１３０は、平均サンプリング速度Ｖｍｅａｎと最大値Ｖａｍｍとの比較から、収集規則の調整要否を判定する。そして、収集規則の調整が必要であると判定した第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎが『０』以上となる」ように、収集規則を調整する。具体的には、第１調整部１３０は、各Ｉ／Ｏノードの「巡回頻度」、「サンプリング周波数」、「サンプリング点数」、および、「巡回単位順列を一巡するまでに要する時間」の少なくとも一つの項目を、最大値Ｖａｍｍを用いて、調整する。
【０２２３】
（収集規則の調整を行なう場合の一般的な留意点について）
図９は、或るＩ／Ｏノードの収集規則を増減させた場合に、平均サンプリング速度Ｖｍｅａｎの値がどのように変化するかの傾向を説明する図である。具体的には、図９は、第１調整部１３０が、各Ｉ／Ｏノードの「巡回頻度」、「サンプリング周波数」、および「サンプリング点数」を調整する（つまり、増減させる）ことによる、平均サンプリング速度Ｖｍｅａｎへの一般的な影響を説明する図である。
【０２２４】
第１調整部１３０は、収集部１４０の収集するデータの利用目的に応じて、各Ｉ／Ｏノードの「巡回頻度」、「サンプリング周波数」、「サンプリング点数」、および、「巡回単位順列を一巡するまでに要する時間」の少なくとも１つを調整する。ここで、或るＩ／Ｏノードの収集規則が変更されると、「第１調整部１３０が巡回単位順列を一巡するのに要する総時間（つまり、総収集時間ＴＡｌｌ）に対して、各Ｉ／Ｏノードの収集時間Ｔｓａｍｐｌｅが占める割合」が相対的に変化する。具体的には、或るＩ／Ｏノードの「巡回頻度」、「サンプリング周波数」、「サンプリング点数」の少なくとも一つを変更すると、「総収集時間ＴＡｌｌに対して、各Ｉ／Ｏノードの収集時間Ｔｓａｍｐｌｅが占める割合」が相対的に変化する。そのため、或るＩ／Ｏノードの収集規則を変更すると、巡回単位順列における他のＩ／Ｏノードの収集規則にも影響を与え、結果として平均サンプリング速度Ｖｍｅａｎが大きく変わることがある。そこで、図９に、各Ｉ／Ｏノードの収集規則の変更と、その平均サンプリング速度Ｖｍｅａｎへの影響について整理した図を示しておく。
【０２２５】
図９の（Ａ）は、収集規則を変更するＩ／Ｏノードのサンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍよりも大きい場合の、変更する収集規則と、その平均サンプリング速度Ｖｍｅａｎへの影響を説明する図である。サンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍよりも大きいＩ／Ｏノードの「巡回頻度」を増加させると、平均サンプリング速度Ｖｍｅａｎは大きくなり、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍよりも大きくなる可能性は上昇する。サンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍよりも大きいＩ／Ｏノードの「巡回頻度」を減少させると、平均サンプリング速度Ｖｍｅａｎは小さくなり、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍよりも大きくなる可能性は下降する。
【０２２６】
サンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍよりも大きいＩ／Ｏノードの「サンプリング周波数」を増加させると、平均サンプリング速度Ｖｍｅａｎは大きくなり、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍよりも大きくなる可能性は上昇する。サンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍよりも大きいＩ／Ｏノードの「サンプリング周波数」を減少させると、平均サンプリング速度Ｖｍｅａｎは小さくなり、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍよりも大きくなる可能性は下降する。
【０２２７】
サンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍよりも大きいＩ／Ｏノードの「サンプリング点数」を増加させると、平均サンプリング速度Ｖｍｅａｎは大きくなり、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍよりも大きくなる可能性は上昇する。サンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍよりも大きいＩ／Ｏノードの「サンプリング点数」を減少させると、平均サンプリング速度Ｖｍｅａｎは小さくなり、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍよりも大きくなる可能性は下降する。
【０２２８】
図９の（Ｂ）は、収集規則を変更するＩ／Ｏノードのサンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍよりも小さい場合の、変更する収集規則と、その平均サンプリング速度Ｖｍｅａｎへの影響を説明する図である。サンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍよりも小さいＩ／Ｏノードの「巡回頻度」を増加させると、平均サンプリング速度Ｖｍｅａｎは小さくなり、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍよりも大きくなる可能性は下降する。サンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍよりも小さいＩ／Ｏノードの「巡回頻度」を減少させると、平均サンプリング速度Ｖｍｅａｎは大きくなり、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍよりも大きくなる可能性は上昇する。
【０２２９】
サンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍよりも小さいＩ／Ｏノードの「サンプリング周波数」を増加させると、平均サンプリング速度Ｖｍｅａｎは大きくなり、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍよりも大きくなる可能性は上昇する。サンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍよりも小さいＩ／Ｏノードの「サンプリング周波数」を減少させると、平均サンプリング速度Ｖｍｅａｎは小さくなり、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍよりも大きくなる可能性は下降する。
【０２３０】
サンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍよりも小さいＩ／Ｏノードの「サンプリング点数」を増加させると、平均サンプリング速度Ｖｍｅａｎは小さくなり、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍよりも大きくなる可能性は下降する。サンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍよりも小さいＩ／Ｏノードの「サンプリング点数」を減少させると、平均サンプリング速度Ｖｍｅａｎは大きくなり、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍよりも大きくなる可能性は上昇する。
【０２３１】
図９の（Ｃ）は、収集規則を変更するＩ／Ｏノードのサンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍに等しい場合の、変更する収集規則と、その平均サンプリング速度Ｖｍｅａｎへの影響を説明する図である。サンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍに等しいＩ／Ｏノードの「巡回頻度」を増減させた場合、平均サンプリング速度Ｖｍｅａｎの値は、そのＩ／Ｏノード以外の、他のＩ／Ｏノードの収集規則に依存する。
【０２３２】
サンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍに等しいＩ／Ｏノードの「サンプリング周波数」を増加させると、平均サンプリング速度Ｖｍｅａｎは大きくなり、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍよりも大きくなる可能性は上昇する。
【０２３３】
サンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍに等しいＩ／Ｏノードの「サンプリング周波数」を減少させると、平均サンプリング速度Ｖｍｅａｎは小さくなり、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍよりも大きくなる可能性は下降する。
【０２３４】
サンプリング速度Ｖｓａｍｐｌｅが最大値Ｖａｍｍに等しいＩ／Ｏノードの「サンプリング点数」を増減させた場合、平均サンプリング速度Ｖｍｅａｎの値は、そのＩ／Ｏノード以外の、他のＩ／Ｏノードの収集規則に依存する。
【０２３５】
第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎが『０』以上となる」ように、例えば、各Ｉ／Ｏノードの「巡回頻度」、「サンプリング周波数」、および、「サンプリング点数」の少なくとも一つを、図９を用いて説明した上述の傾向に留意して調整する。
【０２３６】
（「サンプリング周波数」を不変とする場合の調整方法の一例）
図１０は、第１調整部１３０が、各Ｉ／Ｏノードの「サンプリング周波数」を不変としつつ、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍ以下となるように収集規則を調整する例を示す図である。図１０において、「最大値Ｖａｍｍ＝１０２４ｂｙｔｅ／ｓ」とする。図１０に例示するように、第１調整部１３０は、各Ｉ／Ｏノードの「サンプリング周波数」は変更せずに、例えば、各Ｉ／Ｏノードの「巡回頻度（より正確には、相対的な巡回頻度）」を増減させて、平均サンプリング速度Ｖｍｅａｎを最大値Ｖａｍｍ以下とする。
【０２３７】
図１０の（Ａ）は、第２調整部１６０によって、「Ｉ／Ｏノード：Ａ」の巡回頻度が変更された直後の収集規則テーブル１８３の一例を示す図である。例えば、「Ｉ／Ｏノード：Ａ」について、収集規則テーブル１８３の「履歴」に格納されている値が、連続してＮ回、増加基準値Ｕｔｈ以上である判定した第２調整部１６０は、「Ｉ／Ｏノード：Ａ」の巡回頻度を、図１０の（Ａ）のように増やす。すなわち、第２調整部１６０は、「Ｉ／Ｏノード：Ａ」の巡回頻度を増やす前の巡回単位順列である「順列：Ａ、Ｂ、Ｃ」について、「Ｉ／Ｏノード：Ａ」の巡回頻度を増やして、例えば、図１０の（Ａ）に例示する「順列：Ａ、Ｂ、Ａ、Ｃ」に変更する。
【０２３８】
図１０の（Ａ）に例示する収集規則テーブル１８３には、「順列：Ａ、Ｂ、Ａ、Ｃ」が格納されており、さらに、「Ｉ／Ｏノード：Ａ」、「Ｉ／Ｏノード：Ｂ」、および、「Ｉ／Ｏノード：Ｃ」の各々について、以下の情報が格納されている。すなわち、「Ｉ／Ｏノード：Ａ」について、「データ型」が例えば「ＤＩＮＴ」であって、１単位当たり３２ｂｉｔ、「基準周波数」が「４００Ｈｚ」、「基準点数」が「１０００」であるとの情報が登録されている。同様に、「Ｉ／Ｏノード：Ｂ」は、「データ型」が例えば「ＤＩＮＴ」であって、１単位当たり３２ｂｉｔ、「基準周波数」が「４００Ｈｚ」、「基準点数」が「１０００」である。また、「Ｉ／Ｏノード：Ｃ」は、「データ型」が例えば「ＩＮＴ」であって、１単位当たり１６ｂｉｔ、「基準周波数」が「２００Ｈｚ」、「基準点数」が「１０００」である。
【０２３９】
（サンプリング速度の算出方法）
これまでに説明した方法を用いて、第１調整部１３０は、「Ｉ／Ｏノード：Ａ」、「Ｉ／Ｏノード：Ｂ」、および、「Ｉ／Ｏノード：Ｃ」のサンプリング速度ＶＡ、ＶＢ、およびＶＣの各々について、図１０の（Ａ）に例示するように、以下の値を算出する。すなわち、第１調整部１３０は、「サンプリング速度ＶＡ＝１６００ｂｙｔｅ／ｓ」、「サンプリング速度ＶＢ＝１６００ｂｙｔｅ／ｓ」、「サンプリング速度ＶＣ＝４００ｂｙｔｅ／ｓ」を算出する。
【０２４０】
（収集時間の算出方法）
また、これまでに説明した方法を用いて、第１調整部１３０は、「Ｉ／Ｏノード：Ａ」、「Ｉ／Ｏノード：Ｂ」、および、「Ｉ／Ｏノード：Ｃ」の収集時間ＴＡ、ＴＢ、およびＴＣの各々について、図１０の（Ａ）に例示するように、以下の値を算出する。すなわち、第１調整部１３０は、「収集時間ＴＡ＝２．５ｓ」、「収集時間ＴＢ＝２．５ｓ」、「収集時間ＴＣ＝５ｓ」を算出する。
【０２４１】
（平均サンプリング速度および余裕速度の算出方法）
第１調整部１３０は、巡回単位順列の各Ｉ／Ｏノードについて算出したサンプリング速度Ｖｓａｍｐｌｅと収集時間Ｔｓａｍｐｌｅとから、平均サンプリング速度Ｖｍｅａｎを算出する。例えば、第１調整部１３０は、「各Ｉ／Ｏノードのサンプリング速度Ｖｓａｍｐｌｅに各Ｉ／Ｏノードの収集時間Ｔｓａｍｐｌｅを乗じた値」の全Ｉ／Ｏノード分の合計を、全Ｉ／Ｏノード分の収集時間Ｔｓａｍｐｌｅの合計で除して、平均サンプリング速度Ｖｍｅａｎを算出する。すなわち、第１調整部１３０は、「平均サンプリング速度Ｖｍｅａｎ＝１１２０ｂｙｔｅ／ｓ」を算出する。また、「最大値Ｖａｍｍ＝１０２４ｂｙｔｅ／ｓ」であるから、第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎ＝最大値Ｖａｍｍ−平均サンプリング速度Ｖｍｅａｎ＝−９６ｂｙｔｅ／ｓ」を算出する。
【０２４２】
第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎ＝−９６ｂｙｔｅ／ｓ」であり、つまり、「余裕速度Ｖｍａｒｇｉｎが『０』未満である」ことを確認すると、収集規則の調整が必要であると判定する。
【０２４３】
（巡回頻度の調整例）
第１調整部１３０は、各Ｉ／Ｏノードの「サンプリング周波数」は変更せずに、例えば、図１０の（Ｂ）に例示するように各Ｉ／Ｏノードの「巡回頻度」を増減させて、平均サンプリング速度Ｖｍｅａｎを最大値Ｖａｍｍ以下とする。
【０２４４】
ここで、図９を用いて説明したように、最大値Ｖａｍｍよりも大きいサンプリング速度ＶｓａｍｐｌｅのＩ／Ｏノードの「巡回頻度」を減少させると、一般的に平均サンプリング速度Ｖｍｅａｎは小さくなる（図９の（Ａ））。また、最大値Ｖａｍｍよりも小さいサンプリング速度ＶｓａｍｐｌｅのＩ／Ｏノードの「巡回頻度」を増加させると、一般的に平均サンプリング速度Ｖｍｅａｎは小さくなる（図９の（Ｂ））。
【０２４５】
「最大値Ｖａｍｍ＝１０２４ｂｙｔｅ／ｓ」であるから、「サンプリング速度ＶＢ＝１６００ｂｙｔｅ／ｓ」は最大値Ｖａｍｍよりも大きく、「サンプリング速度ＶＣ＝４００ｂｙｔｅ／ｓ」は最大値Ｖａｍｍよりも小さい。
【０２４６】
そこで、第１調整部１３０は、「順列：Ａ、Ｂ、Ａ、Ｃ」について、「Ｉ／Ｏノード：Ｂ」の「巡回頻度（より正確には、「相対的な巡回頻度」）」の減少、および、「Ｉ／Ｏノード：Ｃ」の「巡回頻度」の増加の少なくとも一方を実行する。例えば、「Ｉ／Ｏノード：Ｂ」の重要度が、「Ｉ／Ｏノード：Ａ」および「Ｉ／Ｏノード：Ｃ」の重要度よりも低い場合、第１調整部１３０は、図１０の（Ａ）の「順列：Ａ、Ｂ、Ａ、Ｃ」を、図１０の（Ｂ）の「順列：Ａ、Ｂ、Ｃ、Ａ、Ａ、Ｃ」に変更する。
【０２４７】
「順列：Ａ、Ｂ、Ａ、Ｃ」において、「Ｉ／Ｏノード：Ａ、Ｂ、および、Ｃ」の各々の巡回頻度は、「２、１、１（相対的には、２／４、１／４、１／４）」である。これに対し、「順列：Ａ、Ｂ、Ｃ、Ａ、Ａ、Ｃ」において、「Ｉ／Ｏノード：Ａ、Ｂ、および、Ｃ」の各々の巡回頻度は、「３、１、２（相対的には、３／６、１／６、２／６）」である。つまり、第１調整部１３０は、「順列：Ａ、Ｂ、Ａ、Ｃ」について、「Ｉ／Ｏノード：Ｂ」の「巡回頻度（より正確には、「相対的な巡回頻度」）」を減少させ、「Ｉ／Ｏノード：Ｃ」の「巡回頻度」を増加させて、「順列：Ａ、Ｂ、Ｃ、Ａ、Ａ、Ｃ」に変更する。
【０２４８】
図１０の（Ｂ）に例示するように、第１調整部１３０が「順列：Ａ、Ｂ、Ｃ、Ａ、Ａ、Ｃ」について算出する平均サンプリング速度Ｖｍｅａｎは「平均サンプリング速度Ｖｍｅａｎ＝１０００ｂｙｔｅ／ｓ」となる。「最大値Ｖａｍｍ＝１０２４ｂｙｔｅ／ｓ」であるから、第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎ＝最大値Ｖａｍｍ−平均サンプリング速度Ｖｍｅａｎ＝２４ｂｙｔｅ／ｓ」を算出する。余裕速度Ｖｍａｒｇｉｎが０以上であると判定した第１調整部１３０は、この「順列：Ａ、Ｂ、Ｃ、Ａ、Ａ、Ｃ」を、収集部１４０が従うべき巡回単位順列として採用する。
【０２４９】
図１０を用いて説明したように、第１調整部１３０は、巡回単位順列の各Ｉ／Ｏノードの「サンプリング周波数」は変更せずに、各Ｉ／Ｏノードの「巡回頻度（相対的な巡回頻度）」を増減させて、平均サンプリング速度Ｖｍｅａｎを最大値Ｖａｍｍ以下とする。例えば、第１調整部１３０は、「Ｉ／Ｏノード：Ｂ」の「巡回頻度」を「１／４から１／６に」減少させ、「Ｉ／Ｏノード：Ｃ」の「巡回頻度」を「１／４から２／６に」増加させて、平均サンプリング速度Ｖｍｅａｎを最大値Ｖａｍｍ以下とする。
【０２５０】
なお、第２調整部１６０によって「順列：Ａ、Ｂ、Ｃ」から「Ｉ／Ｏノード：Ａ」の巡回頻度が増やされた「順列：Ａ、Ｂ、Ａ、Ｃ」について、平均サンプリング速度Ｖｍｅａｎを最大値Ｖａｍｍ以下とするための調整方法は、上述のものに限られない。例えば、第１調整部１３０は、図１０の（Ｂ）に例示する「順列：Ａ、Ｂ、Ａ、Ｃ」を、「順列：Ａ、Ｂ、Ｃ」に戻すことによって、平均サンプリング速度Ｖｍｅａｎを最大値Ｖａｍｍ以下としてもよい。
【０２５１】
（「巡回頻度」および「サンプリング点数」を不変とする場合の調整方法の一例）
図１１は、第１調整部１３０が、各Ｉ／Ｏノードの「巡回頻度」および「サンプリング点数」を不変としつつ、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍ以下となるように収集規則を調整する例を示す図である。図１１において、「最大値Ｖａｍｍ＝１０２４ｂｙｔｅ／ｓ」とする。図１１に例示するように、第１調整部１３０は、巡回単位順列の各Ｉ／Ｏノードの「巡回頻度」および「サンプリング点数」は変更せずに、例えば、各Ｉ／Ｏノードの「サンプリング周波数」を増減させて、平均サンプリング速度Ｖｍｅａｎを最大値Ｖａｍｍ以下とする。
【０２５２】
図１１の（Ａ）は、第１調整部１３０による調整前の収集規則テーブル１８３の一例であり、「順列：Ａ、Ｂ、Ｃ」の「Ｉ／Ｏノード：Ａ」、「Ｉ／Ｏノード：Ｂ」、および、「Ｉ／Ｏノード：Ｃ」の各々について、以下の情報が格納されている。すなわち、「Ｉ／Ｏノード：Ａ」について、「データ型」が例えば「ＤＩＮＴ」であって、１単位当たり３２ｂｉｔ、「基準周波数」が「２０００Ｈｚ」、「基準点数」が「２０００」であるとの情報が登録されている。同様に、「Ｉ／Ｏノード：Ｂ」は、「データ型」が例えば「ＤＩＮＴ」であって、１単位当たり３２ｂｉｔ、「基準周波数」が「１０００Ｈｚ」、「基準点数」が「１０００」である。また、「Ｉ／Ｏノード：Ｃ」は、「データ型」が例えば「ＩＮＴ」であって、１単位当たり１６ｂｉｔ、「基準周波数」が「１０００Ｈｚ」、「基準点数」が「１０００」である。
【０２５３】
（サンプリング速度および収集時間の算出方法）
これまでに説明した方法を用いて、第１調整部１３０は、「Ｉ／Ｏノード：Ａ、Ｂ、および、Ｃ」について、サンプリング速度ＶＡ、ＶＢ、ＶＣと、収集時間ＴＡ、ＴＢ、ＴＣと、を算出する。すなわち、第１調整部１３０は、「サンプリング速度ＶＡ＝８０００ｂｙｔｅ／ｓ」、「サンプリング速度ＶＢ＝４０００ｂｙｔｅ／ｓ」、「サンプリング速度ＶＣ＝２０００ｂｙｔｅ／ｓ」を算出する。また、第１調整部１３０は、「収集時間ＴＡ＝１ｓ」、「収集時間ＴＢ＝１ｓ」、「収集時間ＴＣ＝１ｓ」を算出する。
【０２５４】
（平均サンプリング速度および余裕速度の算出方法）
第１調整部１３０は、巡回単位順列の各Ｉ／Ｏノードについて算出したサンプリング速度Ｖｓａｍｐｌｅと収集時間Ｔｓａｍｐｌｅとから、「平均サンプリング速度Ｖｍｅａｎ＝４６６７ｂｙｔｅ／ｓ」を算出する。また、「最大値Ｖａｍｍ＝１０２４ｂｙｔｅ／ｓ」であるから、第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎ＝最大値Ｖａｍｍ−平均サンプリング速度Ｖｍｅａｎ＝−３６４３ｂｙｔｅ／ｓ」を算出する。
【０２５５】
第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎ＝−３６４３ｂｙｔｅ／ｓ」であり、つまり、「余裕速度Ｖｍａｒｇｉｎが『０』未満である」ことを確認すると、収集規則の調整が必要であると判定する。
【０２５６】
（サンプリング周波数の調整例）
第１調整部１３０は、巡回単位順列の各Ｉ／Ｏノードの「巡回頻度」および「サンプリング点数」は変更せずに、例えば、図１１の（Ｂ）に例示するように各Ｉ／Ｏノードの「サンプリング周波数」を増減させて、平均サンプリング速度Ｖｍｅａｎを最大値Ｖａｍｍ以下とする。
【０２５７】
先ず、第１調整部１３０は、「最大値Ｖａｍｍ＝１０２４ｂｙｔｅ／ｓ」を、調整前の「平均サンプリング速度Ｖｍｅａｎ＝４６６７ｂｙｔｅ／ｓ」で除した値である「低減率Ｒ」を算出する。すなわち、
【０２５８】
【数５】
2020052441.tif 000007
【０２５９】
である。
【０２６０】
次に、第１調整部１３０は、各Ｉ／Ｏノードの調整前のサンプリング周波数（ＦＡ＿未補正、ＦＢ＿未補正、ＦＣ＿未補正）に低減率Ｒを乗じて、各Ｉ／Ｏノードの調整後のサンプリング周波数（ＦＡ＿補正後、ＦＢ＿補正後、ＦＣ＿補正後）を算出する。すなわち、
【０２６１】
【数６】
2020052441.tif 000008
【０２６２】
を算出する。
【０２６３】
そして、第１調整部１３０は、各Ｉ／Ｏノードについて、「データ型」によって特定されるデータ１単位当たりの大きさに、「調整後のサンプリング周波数」の値を乗じた後、「８ｂｉｔ／ｂｙｔｅ」で除して、調整後のサンプリング速度Ｖｓａｍｐｌｅを算出する。具体的には、第１調整部１３０は、「Ｉ／Ｏノード：Ａ」、「Ｉ／Ｏノード：Ｂ」、および、「Ｉ／Ｏノード：Ｃ」の調整後のサンプリング速度ＶＡ、ＶＢ、およびＶＣの各々について、図１１の（Ｂ）に例示するように、以下の値を算出する。すなわち、第１調整部１３０は、「調整後のサンプリング速度ＶＡ＝１７５６ｂｙｔｅ／ｓ」、「調整後のサンプリング速度ＶＢ＝８７６ｂｙｔｅ／ｓ」、「調整後のサンプリング速度ＶＣ＝４３８ｂｙｔｅ／ｓ」を算出する。
【０２６４】
また、第１調整部１３０は、各Ｉ／Ｏノードについて、「サンプリング点数」の値を「調整後のサンプリング周波数」の値で除して、調整後の収集時間Ｔｓａｍｐｌｅを算出する。具体的には、第１調整部１３０は、「Ｉ／Ｏノード：Ａ」、「Ｉ／Ｏノード：Ｂ」、および、「Ｉ／Ｏノード：Ｃ」の調整後の収集時間ＴＡ、ＴＢ、およびＴＣの各々について、図１１の（Ｂ）に例示するように、以下の値を算出する。すなわち、第１調整部１３０は、「調整後の収集時間ＴＡ＝４．６ｓ」、「調整後の収集時間ＴＢ＝４．６ｓ」、「調整後の収集時間ＴＣ＝４．６ｓ」を算出する。
【０２６５】
前述のように、第１調整部１３０は、巡回単位順列の各Ｉ／Ｏノードについて算出した調整後のサンプリング速度ＶＡ、ＶＢ、ＶＣと調整後の収集時間ＴＡ、ＴＢ、ＴＣとから、調整後の「平均サンプリング速度Ｖｍｅａｎ（「Ｖｍｅａｎ＿補正後」とも称する）」を算出する。平均サンプリング速度Ｖｍｅａｎは、具体的には、図１１の（Ｂ）に例示するように、「平均サンプリング速度Ｖｍｅａｎ＝１０２４ｂｙｔｅ／ｓ」となる。「最大値Ｖａｍｍ＝１０２４ｂｙｔｅ／ｓ」であるから、第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎ＝最大値Ｖａｍｍ−平均サンプリング速度Ｖｍｅａｎ＝０ｂｙｔｅ／ｓ」を算出する。余裕速度Ｖｍａｒｇｉｎが０以上であると判定した第１調整部１３０は、この調整後のサンプリング周波数（ＦＡ＿補正後、ＦＢ＿補正後、ＦＣ＿補正後）を、収集部１４０が従うべきサンプリング周波数として採用する。
【０２６６】
（「待ち時間」を挿入する場合の調整方法の一例）
図１２は、第１調整部１３０が、サンプリング処理の間に待ち時間を挿入して、平均サンプリング速度Ｖｍｅａｎが最大値Ｖａｍｍ以下となるように、「巡回単位順列を一巡するまでに要する時間」を調整する例を示す図である。図１２において、「最大値Ｖａｍｍ＝１０２４ｂｙｔｅ／ｓ」とする。図１２に例示するように、第１調整部１３０は、巡回単位順列の各Ｉ／Ｏノードの「巡回頻度」、「サンプリング周波数」、「サンプリング点数」は変更せずに、「巡回単位順列を一巡するまでに要する時間」を増減させて、平均サンプリング速度Ｖｍｅａｎを最大値Ｖａｍｍ以下とする。
【０２６７】
図１２の（Ａ）は、第１調整部１３０による調整前の収集規則テーブル１８３の一例であり、「順列：Ａ、Ｂ、Ｃ」の「Ｉ／Ｏノード：Ａ」、「Ｉ／Ｏノード：Ｂ」、および、「Ｉ／Ｏノード：Ｃ」の各々について、以下の情報が格納されている。すなわち、「Ｉ／Ｏノード：Ａ」について、「データ型」が例えば「ＤＩＮＴ」であって、１単位当たり３２ｂｉｔ、「基準周波数」が「２０００Ｈｚ」、「基準点数」が「２０００」であるとの情報が登録されている。同様に、「Ｉ／Ｏノード：Ｂ」は、「データ型」が例えば「ＤＩＮＴ」であって、１単位当たり３２ｂｉｔ、「基準周波数」が「１０００Ｈｚ」、「基準点数」が「１０００」である。また、「Ｉ／Ｏノード：Ｃ」は、「データ型」が例えば「ＩＮＴ」であって、１単位当たり１６ｂｉｔ、「基準周波数」が「１０００Ｈｚ」、「基準点数」が「１０００」である。
【０２６８】
（サンプリング速度および収集時間の算出方法）
これまでに説明した方法を用いて、第１調整部１３０は、「Ｉ／Ｏノード：Ａ、Ｂ、および、Ｃ」について、サンプリング速度ＶＡ、ＶＢ、ＶＣと、収集時間ＴＡ、ＴＢ、ＴＣと、を算出する。すなわち、第１調整部１３０は、「サンプリング速度ＶＡ＝８０００ｂｙｔｅ／ｓ」、「サンプリング速度ＶＢ＝４０００ｂｙｔｅ／ｓ」、「サンプリング速度ＶＣ＝２０００ｂｙｔｅ／ｓ」を算出する。また、第１調整部１３０は、「収集時間ＴＡ＝１ｓ」、「収集時間ＴＢ＝１ｓ」、「収集時間ＴＣ＝１ｓ」を算出する。
【０２６９】
（平均サンプリング速度および余裕速度の算出方法）
第１調整部１３０は、巡回単位順列の各Ｉ／Ｏノードについて算出したサンプリング速度Ｖｓａｍｐｌｅと収集時間Ｔｓａｍｐｌｅとから、「平均サンプリング速度Ｖｍｅａｎ＝４６６７ｂｙｔｅ／ｓ」を算出する。また、「最大値Ｖａｍｍ＝１０２４ｂｙｔｅ／ｓ」であるから、第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎ＝最大値Ｖａｍｍ−平均サンプリング速度Ｖｍｅａｎ＝−３６４３ｂｙｔｅ／ｓ」を算出する。
【０２７０】
第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎ＝−３６４３ｂｙｔｅ／ｓ」であり、つまり、「余裕速度Ｖｍａｒｇｉｎが『０』未満である」ことを確認すると、収集規則の調整が必要であると判定する。
【０２７１】
（「待ち時間」の挿入例）
第１調整部１３０は、「巡回頻度」、「サンプリング周波数」、「サンプリング点数」は変更せずに、例えば、図１２の（Ｂ）に例示するように「待ち時間ＴＤ」を挿入して、平均サンプリング速度Ｖｍｅａｎを最大値Ｖａｍｍ以下とする。
【０２７２】
補正後の平均サンプリング速度Ｖｍｅａｎ＿補正後は最大値Ｖａｍｍ以下となるから、つまり、
【０２７３】
【数７】
2020052441.tif 000009
【０２７４】
となる。第１調整部１３０は、これを解いて、すなわち、
【０２７５】
【数８】
2020052441.tif 000010
【０２７６】
となる。第１調整部１３０は、「順列：Ａ、Ｂ、Ｃ」に「待ち時間ＴＤ」を挿入し、具体的には、図１２の（Ｂ）に例示するように、「待ち時間ＴＤ」を収集規則テーブル１８３に格納する。すなわち、図１２の（Ｂ）には、図１２の（Ａ）に例示する収集規則テーブル１８３に対し、「ＩＤ：Ｄ」および「収集時間：１０．７ｓ」だけが格納され、その他の項目にデータの格納されていない行が追加された収集規則テーブル１８３が示されている。
【０２７７】
「順列：Ａ、Ｂ、Ｃ」における各Ｉ／Ｏノードの収集時間Ｔｓａｍｐｌｅの合計である「総収集時間ＴＡｌｌ」は「総収集時間ＴＡｌｌ＝１＋１＋１＝３ｓ」である。「順列：Ａ、Ｂ、Ｃ」に「待ち時間ＴＤ」を挿入した「順列：Ａ、Ｂ、Ｃ、Ｄ」の「総収集時間ＴＡｌｌ」は「総収集時間ＴＡｌｌ＝１＋１＋１＋１０．７＝１３．７ｓ」である。そして、「Ｉ／Ｏノード：Ｄ」は待ち時間に対応するノードであるため、「Ｉ／Ｏノード：Ｄ」の「サンプリング点数」は「０」であり、つまり、「Ｉ／Ｏノード：Ｄ」について収集されるデータのデータ量は「０」である。
【０２７８】
第１調整部１３０は、「巡回単位順列を一巡するまでに収集するデータのデータ量」は変えずに、「待ち時間を挿入して巡回単位順列を一巡するまでに要する総収集時間ＴＡｌｌを大きくする」ことによって、平均サンプリング速度Ｖｍｅａｎを小さくする。
【０２７９】
図１２の（Ｂ）に例示するように、第１調整部１３０が「順列：Ａ、Ｂ、Ｃ、Ｄ」について算出する平均サンプリング速度Ｖｍｅａｎは「平均サンプリング速度Ｖｍｅａｎ＝１０２２ｂｙｔｅ／ｓ」となる。「最大値Ｖａｍｍ＝１０２４ｂｙｔｅ／ｓ」であるから、第１調整部１３０は、「余裕速度Ｖｍａｒｇｉｎ＝最大値Ｖａｍｍ−平均サンプリング速度Ｖｍｅａｎ＝２ｂｙｔｅ／ｓ」を算出する。余裕速度Ｖｍａｒｇｉｎが０以上であると判定した第１調整部１３０は、この「順列：Ａ、Ｂ、Ｃ、Ｄ」を含む、図１２の（Ｂ）に示す収集規則テーブル１８３に格納された収集規則を、収集部１４０が従うべき巡回単位順列として採用する。
【０２８０】
（表示処理について）
図１３は、表示制御部１７０が、ツールなどの外部表示装置の表示画面に表示させる情報の一例を示す図である。表示制御部１７０は、表示画面（例えば、ツールなどの外部表示装置の表示画面）に、実行中のサンプリング処理に係る情報を表示させ、例えば、図１３に例示するように、ユーザの設定した最大値Ｖａｍｍを表示させる。図１３に示す例では、表示制御部１７０は、さらに、実行中のサンプリング処理に係る処理負荷の大きさを示す平均サンプリング速度Ｖｍｅａｎ、および、最大値Ｖａｍｍと平均サンプリング速度Ｖｍｅａｎとの差である余裕速度Ｖｍａｒｇｉｎを表示させている。
【０２８１】
また、表示制御部１７０は、例えば、「巡回単位順列に含まれる複数のＩ／Ｏノードの各々の名称」、「巡回単位順列における、各Ｉ／Ｏノードの出現順序」、および、「現在、データ収集対象となっているＩ／Ｏノード」を表示させる。さらに、表示制御部１７０は、例えば、各Ｉ／Ｏノードについて、適用中の収集規則における「サンプリング周波数」、「サンプリング点数」、および、「直近のデータに対する重要度」を表示させる。
【０２８２】
§４．変形例
図１４は、記憶部１８０に格納されている収集規則テーブル１８３について、図４に例示したのとは異なる収集規則テーブル１８３のデータ構造の一例を示す図である。図１４に例示する収集規則テーブル１８３は、図４に例示した収集規則テーブル１８３の備える項目に加えてさらに、「収集フラグ変数」との項目を有する。
【０２８３】
収集部１４０は、制御データテーブル１８１に格納されている制御データのうち、収集規則テーブル１８３の「収集フラグ変数」が「ＴＲＵＥ」であるＩ／Ｏノードのデータを収集し、「収集フラグ変数」が「ＦＡＬＳＥ」のＩ／Ｏノードのデータは収集しない。つまり、収集部１４０は、取得部１１０がスレーブ装置から制御周期ごとに取得した制御データのうち、収集規則テーブル１８３の「収集フラグ変数」が「ＴＲＵＥ」であるＩ／Ｏノードのみを、データ収集対象とする。
【０２８４】
第１調整部１３０は、収集規則テーブル１８３の「収集フラグ変数」が「ＴＲＵＥ」であるＩ／Ｏノードのみをデータ収集対象とすることで、サンプリングの必要なＩ／Ｏノードのデータだけを収集することができる。
【０２８５】
収集規則テーブル１８３が「収集フラグ変数」との項目を有する場合、第１調整部１３０は、「収集フラグ変数」が「ＦＡＬＳＥ」のＩ／Ｏノードの「サンプリング点数」を「０」として、平均サンプリング速度Ｖｍｅａｎを算出する。
【０２８６】
〔ソフトウェアによる実現例〕
ＰＬＣ１０の制御ブロック（具体的には、取得部１１０、受付部１２０、第１調整部１３０、収集部１４０、評価部１５０、第２調整部１６０、および、表示制御部１７０）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ＣＰＵ（CenＴｒal Processing Unit）を用いてソフトウェアによって実現してもよい。
【０２８７】
後者の場合、ＰＬＣ１０は、各機能を実現するソフトウェアであるプログラムの命令を実行するＣＰＵ、上記プログラムおよび各種データがコンピュータ（またはＣＰＵ）で読み取り可能に記録されたＲＯＭ（Read Only Memory）または記憶装置（これらを「記録媒体」と称する）、上記プログラムを展開するＲＡＭ（Random Access Memory）等を備えている。そして、コンピュータ（またはＣＰＵ）が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路等を用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。なお、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【０２８８】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【０２８９】
１  制御システム（マスタスレーブ制御システム）
１０  ＰＬＣ（マスタ装置）
２０  データベース（外部装置）
３０  サーボドライバ（スレーブ装置）
１２０  受付部
１３０  第１調整部
１４０  収集部
１６０  第２調整部
１７０  表示制御部
Ｒ  低減率（一律の割合）
Ｓ１１０  受付ステップ
Ｓ１４０  第１調整ステップ
Ｓ１５０  収集ステップ
ＴＡｌｌ    総収集時間（順列を一巡するまでに収集部が要する時間）
Ｖａｍｍ    最大値（ユーザの指定する最大値）
Ｖｍｅａｎ  平均サンプリング速度（単位時間あたりに収集されるデータのデータ量）
Ｖｍａｒｇｉｎ  余裕速度（最大値Ｖａｍｍ−平均サンプリング速度Ｖｍｅａｎ）
【図１】
2020052441.tif 000011
【図２】
2020052441.tif 000012
【図３】
2020052441.tif 000013
【図４】
2020052441.tif 000014
【図５】
2020052441.tif 000015
【図６】
2020052441.tif 000016
【図７】
2020052441.tif 000017
【図８】
2020052441.tif 000018
【図９】
2020052441.tif 000019
【図１０】
2020052441.tif 000020
【図１１】
2020052441.tif 000021
【図１２】
2020052441.tif 000022
【図１３】
2020052441.tif 000023
【図１４】
2020052441.tif 000024