(57)【特許請求の範囲】
【請求項１】
第１情報処理ユニットと第２情報処理ユニットとを備える制御装置であって、
前記第２情報処理ユニットは、
汎用ＯＳを介して情報処理を実行する第１プロセッサと、
リアルタイムＯＳを介して前記第１プロセッサの稼働状態を測定する第２プロセッサと、を備え、
前記第１情報処理ユニットは、前記第２情報処理ユニットの前記第１プロセッサの稼働状態を表す情報を前記第２情報処理ユニットから取得し、取得した前記情報に基づいて情報処理の実行を前記第２情報処理ユニットに要求するか否かを判定し、要求すると判定した場合には前記情報処理の実行を要求する信号を前記第２情報処理ユニットに送信し、
前記第２情報処理ユニットの前記第１プロセッサは、前記情報処理の実行を要求する前記信号を受信すると、前記情報処理を実行する、
制御装置。
【請求項２】
マスタ情報処理ユニットと複数のスレーブ情報処理ユニットとを備える制御装置であって、
前記複数のスレーブ情報処理ユニットは、それぞれ、
汎用ＯＳを介して情報処理を実行する第１プロセッサと、
リアルタイムＯＳを介して前記第１プロセッサの稼働状態を測定する第２プロセッサと、を備え、
前記マスタ情報処理ユニットは、前記複数のスレーブ情報処理ユニットの前記第１プロセッサの稼働状態を表す情報を前記複数のスレーブ情報処理ユニットから取得し、取得した前記情報に基づいて情報処理の実行要求の対象を前記複数のスレーブ情報処理ユニットから選択し、前記情報処理の実行を要求する信号を選択した前記スレーブ情報処理ユニットに送信する、
制御装置。
【請求項３】
前記マスタ情報処理ユニットは、汎用ＯＳを介して情報処理を実行する第１プロセッサと、リアルタイムＯＳを介して前記複数のスレーブ情報処理ユニットに接続状態を確認するためのパケットを定期的に送信する第２プロセッサと、を備え、
前記マスタ情報処理ユニットは、前記パケットに対する応答を送信したスレーブ情報処理ユニットを前記情報処理の実行要求の対象としての前記選択の対象とする、
請求項２に記載の制御装置。
【請求項４】
前記マスタ情報処理ユニットは、前記情報処理の対象データを記憶する記憶部をさらに備え、
前記マスタ情報処理ユニットの前記第１プロセッサは、前記複数のスレーブ情報処理ユニットから取得した前記第１プロセッサの稼働状態を表す前記情報に基づいて、前記情報処理の実行要求の対象となる前記スレーブ情報処理ユニットごとに処理するデータ量を決定して、決定した前記データ量に基づいて前記記憶部に格納された対象データを分割して、選択した前記スレーブ情報処理ユニットに送信する、
請求項３に記載の制御装置。
【請求項５】
前記マスタ情報処理ユニットの前記記憶部は、前記複数のスレーブ情報処理ユニットの前記第１プロセッサの稼働状態を表す情報と、前記対象データのデータ量と、を入力要素とする学習済みモデルをさらに記憶し、
前記マスタ情報処理ユニットの前記第１プロセッサは、前記学習済みモデルを参照して、前記情報処理の実行要求の対象の選択と、前記データ量の決定と、を実行する、
請求項４に記載の制御装置。
【請求項６】
前記マスタ情報処理ユニットの前記記憶部は、前記複数のスレーブ情報処理ユニットの前記第１プロセッサの稼働状態の履歴を表す稼働状態履歴情報と、前記情報処理の実行を要求した履歴を表す要求履歴情報と、をさらに記憶し、
前記マスタ情報処理ユニットの前記第１プロセッサは、前記稼働状態履歴情報と前記要求履歴情報とに基づいて、前記記憶部に格納された前記学習済みモデルを更新する、
請求項５に記載の制御装置。
【請求項７】
前記マスタ情報処理ユニットの前記第２プロセッサは、前記情報処理の結果に基づいて、装置を制御する処理を実行する、
請求項３から６のいずれか１項に記載の制御装置。
【請求項８】
第１情報処理ユニットと、汎用ＯＳを介して情報処理を実行するプロセッサを備える第２情報処理ユニットとを備える制御装置において、前記情報処理の実行を要求する方法であって、
前記第２情報処理ユニットにより、リアルタイムＯＳを介して前記プロセッサの稼働状態を測定するステップと、
前記第１情報処理ユニットにより、前記プロセッサの稼働状態に基づいて前記情報処理の実行を前記第２情報処理ユニットに要求するか否かを判定し、要求すると判定した場合には前記情報処理の実行を要求する信号を前記第２情報処理ユニットに送信するステップと、を含む、
分散処理方法。
【請求項９】
マスタ情報処理ユニットと、汎用ＯＳを介して情報処理を実行するプロセッサを備える複数のスレーブ情報処理ユニットとを備える制御装置において、前記情報処理を分散して実行する方法であって、
前記複数のスレーブ情報処理ユニットのそれぞれにより、リアルタイムＯＳを介して前記プロセッサの稼働状態を測定するステップと、
前記マスタ情報処理ユニットにより、前記プロセッサの前記稼働状態に基づいて前記情報処理の実行要求の対象を前記複数のスレーブ情報処理ユニットから選択し、前記情報処理の実行を要求する信号を選択した前記スレーブ情報処理ユニットに送信するステップと、を含む、
分散処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置および分散処理方法に関する。
【背景技術】
【０００２】
ＰＬＣ（Programmable Logic Controller）が装置を制御する処理の負荷を分散する技術が研究されている。例えば、特許文献１には、処理対象データを生成する制御ユニットが、処理対象データをデータ処理ユニットに送信する際に、負荷が低い他の制御ユニットにデータ処理ユニットへの送信を代行させる技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−０９４４７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
装置を制御する処理に付随して、例えば、装置、センサ等から取得したデータの解析、装置動作のモデリング、異常検知等のための演算など、計算量の多い情報処理が必要となることがある。しかし、情報処理を実行するプロセッサの稼働状態によっては、計算の負荷が大きくなってしまい、全体的に処理が遅延するという問題がある。このような問題に対して、特許文献１に記載された技術では、データの送受信の負荷を軽減するだけであって、計算の負荷が軽減されないため、全体的な処理の遅延を解消することはできない。【０００５】
本発明は、上記実情に鑑みてなされたものであり、プロセッサの稼働状態に応じて情報処理の負荷を分散することができる制御装置および分散処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の制御装置は、第１情報処理ユニットと第２情報処理ユニットとを備える制御装置である。第２情報処理ユニットは、汎用ＯＳ（Operating System）を介して情報処理を実行する第１プロセッサと、リアルタイムＯＳを介して第１プロセッサの稼働状態を測定する第２プロセッサと、を備える。第１情報処理ユニットは、第２情報処理ユニットの第１プロセッサの稼働状態を表す情報を第２情報処理ユニットから取得し、取得した情報に基づいて情報処理の実行を第２情報処理ユニットに要求するか否かを判定し、要求すると判定した場合には情報処理の実行を要求する信号を第２情報処理ユニットに送信する。第２情報処理ユニットの第１プロセッサは、情報処理の実行を要求する信号を受信すると、情報処理を実行する。
【発明の効果】
【０００７】
本発明によれば、他のユニットのプロセッサの稼働状態を表す情報を取得して、取得した情報に基づいて情報処理の実行を他のユニットに要求することによって、プロセッサの稼働状態に応じて情報処理の負荷を分散することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施の形態１に係る制御装置のハードウェア構成図
【図２】本発明の実施の形態１に係るタスク実行要求処理のフローチャート
【図３】本発明の実施の形態２に係る制御装置のハードウェア構成図
【図４】本発明の実施の形態２に係る情報処理ユニット管理情報の一例を表す図
【図５】本発明の実施の形態２に係るＣＰＵ稼働状態履歴情報の一例を表す図
【図６】本発明の実施の形態２に係るタスク実行要求履歴情報の一例を表す図
【図７】本発明の実施の形態２に係るタスク分散処理のフローチャート
【図８】本発明の実施の形態２に係るＣＰＵ稼働状態情報の一例を表す図
【発明を実施するための形態】
【０００９】
（実施の形態１）
以下、本発明の制御装置の実施の形態について、図面を参照して説明する。
【００１０】
本実施の形態に係る制御装置１は、各種の装置を制御するためのＰＬＣ（Programmable Logic Controller）である。制御装置１は、図１に示されるように、情報処理のタスクを実行するユニットであるマスタ情報処理ユニット１０と、情報処理のタスクを実行するサブユニットであるスレーブ情報処理ユニット２０と、各種の装置を制御する制御ユニット３０と、定周期通信を行う通信路である定周期バス４０と、非同期通信を行う通信路である非同期バス５０と、を備える。
【００１１】
マスタ情報処理ユニット１０は、制御ユニット３０から装置データを受信して、受信した装置データに基づく演算処理のタスクを実行するユニットである。マスタ情報処理ユニット１０は、タスク分散のための処理を制御する分散制御ＣＰＵ（Central Processing Unit）１１０と、情報処理を実行する情報処理ＣＰＵ１２０と、分散制御ＣＰＵ１１０が処理するデータを格納する分散制御メモリ１３０と、情報処理ＣＰＵ１２０が処理するデータを格納する情報処理メモリ１４０と、各種情報を格納するストレージ１５０と、専用バスを制御する専用バス制御回路１６０と、シリアルインターフェース１７０と、を備える。なお、マスタ情報処理ユニット１０は、請求の範囲に記載された第１情報処理ユニットの一例である。
【００１２】
分散制御ＣＰＵ１１０は、タスク分散のための処理を制御するＣＰＵである。具体的には、分散制御ＣＰＵ１１０は、情報処理ＣＰＵ１２０の稼働状態を測定する。また、分散制御ＣＰＵ１１０は、スレーブ情報処理ユニット２０の接続状態を確認する。さらに、分散制御ＣＰＵ１１０は、スレーブ情報処理ユニット２０にタスク処理を要求するか否かを判定する。なお、分散制御ＣＰＵ１１０は、請求の範囲に記載された第２プロセッサの一例である。
【００１３】
情報処理ＣＰＵ１２０は、情報処理を実行するＣＰＵである。具体的には、情報処理ＣＰＵ１２０は、制御ユニット３０から受信した装置データに基づく演算処理を実行する。また、情報処理ＣＰＵ１２０は、スレーブ情報処理ユニット２０にタスク処理を要求するために、装置データを分割する処理を実行する。なお、情報処理ＣＰＵ１２０は、請求の範囲に記載された第１プロセッサの一例である。
【００１４】
分散制御メモリ１３０は、分散制御ＣＰＵ１１０が処理するデータを格納する主記憶装置である。また、分散制御メモリ１３０は、分散制御ＣＰＵ１１０が実行するためのリアルタイムＯＳ（Operating System）を格納する。リアルタイムＯＳは、命令を受けてから演算処理を実行または完了するまでの時間的制限が規定されたＯＳである。分散制御メモリ１３０には、情報処理ＣＰＵ１２０の稼働状態を監視して、稼働状態を表す情報を取得するためのアプリケーションが格納されている。
【００１５】
情報処理メモリ１４０は、情報処理ＣＰＵ１２０が処理するデータを格納する主記憶装置である。情報処理メモリ１４０は、情報処理ＣＰＵ１２０が実行するための汎用ＯＳを格納する。汎用ＯＳは、ネットワーク接続、ネットワーク経由送信、文字出力、プログラムの同時実行などの基本的な機能を有するＯＳである。分散制御メモリ１３０および情報処理メモリ１４０には、それぞれ通信用ドライバが格納されている。
【００１６】
ストレージ１５０は、各種情報を格納する外部記憶装置である。外部記憶装置は、具体的には、ハードディスクドライブ、ＳＳＤ（Solid State Drive）、フラッシュメモリ、磁気テープ等である。ストレージ１５０には、情報処理ＣＰＵ１２０が処理する装置データが格納される。なお、ストレージ１５０は、請求の範囲に記載された記憶部の一例である。
【００１７】
専用バス制御回路１６０は、専用バスを制御する電子回路である。専用バスは、マスタ情報処理ユニット１０、スレーブ情報処理ユニット２０および制御ユニット３０を相互に接続する通信路である。専用バスは、定周期バス４０と非同期バス５０を含む。専用バス制御回路１６０は、マスタ情報処理ユニット１０と定周期バス４０との間の接続を制御する定周期ＩＦ（Interface）１６１と、マスタ情報処理ユニット１０と非同期バス５０との間の接続を制御する非同期ＩＦ１６２と、を備える。
【００１８】
シリアルインターフェース１７０は、分散制御ＣＰＵ１１０と情報処理ＣＰＵ１２０とを接続する通信路である。分散制御ＣＰＵ１１０が、分散制御メモリ１３０に格納された通信用ドライバをリアルタイムＯＳ上で実行し、情報処理ＣＰＵ１２０が、情報処理メモリ１４０に格納された通信用ドライバを汎用ＯＳ上で実行する。これによって、シリアルインターフェース１７０を介して、分散制御ＣＰＵ１１０と情報処理ＣＰＵ１２０とは互いに各種データを高速に送受信する。例えば、分散制御ＣＰＵ１１０は、分散制御メモリ１３０に格納されたアプリケーションをリアルタイムＯＳ上で実行し、通信用ドライバによる通信によって、シリアルインターフェース１７０を介して、情報処理ＣＰＵ１２０の稼働状態を表す情報を取得することができる。また、分散制御ＣＰＵ１１０は、シリアルインターフェース１７０を介して情報処理メモリ１４０にアクセスすることができる。同様に、情報処理ＣＰＵ１２０は、シリアルインターフェース１７０を介して分散制御メモリ１３０にアクセスすることができる。
【００１９】
スレーブ情報処理ユニット２０は、マスタ情報処理ユニット１０からタスク分散処理の実行要求を受けて情報処理タスクを実行するユニットである。スレーブ情報処理ユニット２０は、マスタ情報処理ユニット１０と同様のハードウェア構成を備える。具体的には、スレーブ情報処理ユニット２０は、タスク分散のための処理を制御する分散制御ＣＰＵ２１０と、情報処理を実行する情報処理ＣＰＵ２２０と、分散制御ＣＰＵ２１０が処理するデータを格納する分散制御メモリ２３０と、情報処理ＣＰＵ２２０が処理するデータを格納する情報処理メモリ２４０と、各種情報を格納するストレージ２５０と、専用バスを制御する専用バス制御回路２６０と、シリアルインターフェース２７０と、を備える。専用バス制御回路２６０は、定周期バス４０との接続を制御する定周期ＩＦ２６１と、非同期バス５０との接続を制御する非同期ＩＦ２６２と、を備える。なお、スレーブ情報処理ユニット２０は、請求の範囲に記載された第２情報処理ユニットの一例である。
【００２０】
制御ユニット３０は、制御装置１の制御対象の装置を制御するためのユニットである。装置の制御とは、ラダー言語、ＦＢＤ（Function Block Diagram）言語等の装置制御に特化した言語により開発されたアプリケーションによって、各種の装置のシーケンスを制御することを表す。具体的には、制御ユニット３０は、各種ユニットを制御するためのＣＰＵユニット、サーボアンプ、サーボモータ等を制御するためのモーションユニット、装置のＯＮ／ＯＦＦ信号の受け渡しを実行するための入出力ユニット、センサを含むアナログデバイスとの間でデータを入出力するためのアナログユニット、上位の情報システム、他の制御システム等に接続するためのネットワークユニット等を含む。制御ユニット３０は、演算の対象となる装置データをマスタ情報処理ユニット１０に送信する。
【００２１】
定周期バス４０は、あるユニットから他のユニットに対して、定期的にデータを転送するために使用される通信路である。例えば、モーションユニットは、同期制御、速度制御、位置決め制御等の定時性が求められるデータの受け渡しに定周期バス４０を使用する。
【００２２】
非同期バス５０は、あるユニットから他のユニットに不特定のタイミングでデータを転送するために使用される通信路である。例えば、非同期バス５０は、マスタ情報処理ユニット１０とスレーブ情報処理ユニット２０との間で処理対象の装置データを転送するために使用される。
【００２３】
次に、制御装置１の動作について、図面を参照して説明する。マスタ情報処理ユニット１０の分散制御メモリ１３０には、あらかじめ設定情報として応答を待機する基準時間が格納されている。また、スレーブ情報処理ユニット２０の分散制御ＣＰＵ２１０は、情報処理ＣＰＵ２２０の稼働状態を定期的に測定して、測定した稼働状態を表すＣＰＵ稼働状態情報を分散制御メモリ２３０に格納する。ＣＰＵ稼働状態情報は、具体的には、情報処理ＣＰＵ２２０の使用率、情報処理メモリ２４０の使用率、Ｉ／Ｏ（Input Output）負荷等を含む情報である。Ｉ／Ｏ負荷は、例えば、ストレージ２５０への読み書きの単位時間あたりのブロック数によって表される。なお、ブロックとは、汎用ＯＳが読み書きを行う単位データ量を表す。
【００２４】
さらに、マスタ情報処理ユニット１０の分散制御メモリ１３０には、あらかじめ設定情報としてＣＰＵ稼働状態に基づいてタスク実行要求を行うための要求条件が格納されている。例えば、分散制御メモリ１３０には、「情報処理ＣＰＵ２２０の使用率が５０％以下、情報処理メモリ２４０の使用率が５０％以下およびＩ／Ｏ負荷が５以下」という要求条件が格納されている。
【００２５】
制御装置１の制御ユニット３０が装置データを取得して、取得した装置データを、非同期バス５０を介してマスタ情報処理ユニット１０に送信する。マスタ情報処理ユニット１０は、専用バス制御回路１６０の非同期ＩＦ１６２を介して装置データを受信する。そして、分散制御ＣＰＵ１１０は、受信した装置データを分散制御メモリ１３０に一時的にバッファリングする。さらに、制御ユニット３０は、装置データの解析をする演算処理の実行要求信号を、非同期バス５０を介してマスタ情報処理ユニット１０に送信する。マスタ情報処理ユニット１０の情報処理ＣＰＵ１２０は、分散制御ＣＰＵ１１０を介して演算処理の実行要求信号を受信すると、シリアルインターフェース１７０を介して、分散制御メモリ１３０にバッファリングされた装置データを読み込んで、ストレージ１５０に格納する。
【００２６】
続いて、マスタ情報処理ユニット１０は、制御ユニット３０から要求された演算処理をスレーブ情報処理ユニット２０に要求するためのタスク実行要求処理を開始する。
【００２７】
マスタ情報処理ユニット１０がタスク実行要求処理を開始すると、図２に示されるように、分散制御ＣＰＵ１１０は、スレーブ情報処理ユニット２０にスタンバイ要求信号を送信する（ステップＳ１１）。スタンバイ要求信号を受信したスレーブ情報処理ユニット２０は、演算処理が実行可能である場合には、スタンバイ状態であることを示す応答を送信する。
【００２８】
次に、分散制御ＣＰＵ１１０は、スレーブ情報処理ユニット２０から応答を受信したか否かを判定する（ステップＳ１２）。具体的には、分散制御ＣＰＵ１１０は、応答をする基準時間を分散制御メモリ１３０から取得する。そして、分散制御ＣＰＵ１１０は、ステップＳ１１の処理でスタンバイ要求信号を送信してから、基準時間を経過するまでに応答を受信したか否かを判定する。
【００２９】
分散制御ＣＰＵ１１０は、応答を受信しなかったと判定すると（ステップＳ１２：Ｎｏ）、タスク実行要求処理を終了する。一方、分散制御ＣＰＵ１１０は、応答を受信したと判定すると（ステップＳ１２：Ｙｅｓ）、スレーブ情報処理ユニット２０にＣＰＵ稼働状態情報の送信要求信号を送信する（ステップＳ１３）。スレーブ情報処理ユニット２０の分散制御ＣＰＵ２１０は、非同期ＩＦ２６２を介して、ＣＰＵ稼働状態情報の送信要求信号を受信すると、分散制御メモリ２３０に格納されたＣＰＵ稼働状態情報を、非同期バス５０を介して、マスタ情報処理ユニット１０に送信する。
【００３０】
続いて、分散制御ＣＰＵ１１０は、スレーブ情報処理ユニット２０からＣＰＵ稼働状態情報を受信する（ステップＳ１４）。分散制御ＣＰＵ１１０は、非同期バス５０を介して受信したＣＰＵ稼働状態情報を、分散制御メモリ１３０に格納する。
【００３１】
次に、分散制御ＣＰＵ１１０は、ＣＰＵ稼働状態が要求条件を満たすか否かを判定する（ステップＳ１５）。例えば、「情報処理ＣＰＵ２２０の使用率が５０％以下、情報処理メモリ２４０の使用率が５０％以下およびＩ／Ｏ負荷が５以下」という要求条件が分散制御メモリ１３０に格納されている場合、分散制御ＣＰＵ１１０は、ＣＰＵ稼働状態がこの要求条件を満たすか否かを判定する。
【００３２】
分散制御ＣＰＵ１１０は、ＣＰＵ稼働状態が要求条件を満たさないと判定すると（ステップＳ１５：Ｎｏ）、タスク実行要求処理を終了する。一方、分散制御ＣＰＵ１１０は、ＣＰＵ稼働状態が要求条件を満たすと判定すると（ステップＳ１５：Ｙｅｓ）、スレーブ情報処理ユニット２０にタスク実行要求信号を送信する（ステップＳ１６）。また、分散制御ＣＰＵ１１０は、ストレージ１５０に格納された装置データを、シリアルインターフェース１７０を介して取得して、非同期バス５０を介してスレーブ情報処理ユニット２０に送信する。そして、マスタ情報処理ユニット１０は、タスク実行要求処理を終了する。
【００３３】
マスタ情報処理ユニット１０は、タスク実行要求処理を実行して、スレーブ情報処理ユニット２０の稼働状態によって、タスクの実行をスレーブ情報処理ユニット２０に要求する。また、スレーブ情報処理ユニット２０が演算タスクを実行できない場合には、情報処理ＣＰＵ１２０が演算タスクを実行する。
【００３４】
本実施の形態に係る制御装置１によれば、スレーブ情報処理ユニット２０の情報処理ＣＰＵ２２０の稼働状態を、リアルタイムＯＳを介して分散制御ＣＰＵ２１０が測定することによって、情報処理ＣＰＵ２２０の負荷に影響されない正確な稼働情報が得られる。また、マスタ情報処理ユニット１０の分散制御ＣＰＵ１１０が、タスク実行要求を行うか否かの判定を行うことによって、情報処理ＣＰＵ１２０の負荷に影響されずにタスクの実行をスレーブ情報処理ユニット２０に要求するか否かを判定することができる。
【００３５】
また、ＣＰＵ稼働状態情報の送受信、装置データの送受信等を、定周期バス４０とは異なる非同期バス５０を介して行うことによって、定時性が求められるデータの送受信に影響を与えずに、タスクの実行を分散させることができる。
【００３６】
（実施の形態２）
実施の形態１では、情報処理ユニットのタスクの実行を他の情報処理ユニットに代行させる例を示した。本実施の形態では、複数の情報処理ユニットでタスクを計画的に分散して処理する例を示す。以下、本実施の形態については、実施の形態１と異なる部分を中心に説明する。
【００３７】
本実施の形態に係る制御装置２は、図３に示すように、１つのマスタ情報処理ユニット１０と、複数のスレーブ情報処理ユニット２０と、制御ユニット３０と、を備える。
【００３８】
マスタ情報処理ユニット１０の分散制御ＣＰＵ１１０は、定期的に、例えば１０秒ごとに、情報処理ＣＰＵ１２０のＣＰＵ稼働状態を測定して、測定したＣＰＵ稼働状態を表す情報を分散制御メモリ１３０に更新して格納する。また、分散制御ＣＰＵ１１０は、測定したＣＰＵ稼働状態を表す情報を、シリアルインターフェース１７０を介して、ストレージ１５０に追加して格納する。すなわち、ストレージ１５０には、ＣＰＵ稼働状態の履歴情報が蓄積される。
【００３９】
同様に、スレーブ情報処理ユニット２０の分散制御メモリ２３０には情報処理ＣＰＵ２２０のＣＰＵ稼働状態を表す最新の情報が格納され、ストレージ２５０には、ＣＰＵ稼働状態の履歴情報が蓄積される。
【００４０】
マスタ情報処理ユニット１０の分散制御ＣＰＵ１１０は、定期的に、例えば１日ごとに、各スレーブ情報処理ユニット２０に対して、非同期バス５０を介して、ＣＰＵ稼働状態履歴情報の送信を要求する信号を送信する。各スレーブ情報処理ユニット２０は、信号を受信すると、ストレージ２５０に格納されたＣＰＵ稼働状態履歴情報を、非同期バス５０を介してマスタ情報処理ユニット１０に送信する。マスタ情報処理ユニット１０の分散制御ＣＰＵ１１０は、受信した情報を集約して、図５に示されるようなＣＰＵ稼働状態履歴情報を作成して、ストレージ１５０に格納する。ＣＰＵ稼働状態履歴情報は、情報処理ユニットを識別するためのユニットＩＤ、日付、時刻、情報処理ＣＰＵ２２０の使用率を表すＣＰＵ使用率、情報処理メモリ２４０の使用率を表すメモリ使用率、情報処理ＣＰＵ２２０のストレージ２５０への読み書きの負荷を表すＩ／Ｏ負荷等の情報を含む。
【００４１】
また、マスタ情報処理ユニット１０の情報処理ＣＰＵ１２０は、後述するタスク分散処理によって、各スレーブ情報処理ユニット２０にタスクの実行を要求した履歴を表すタスク実行要求履歴情報をストレージ１５０に格納する。タスク実行要求履歴情報は、図６に示されるように、情報処理ユニットを識別するためのユニットＩＤ、日付、時刻、タスク実行の対象となる装置データのデータ量、タスクの種別を表す種別等の情報を含む。
【００４２】
さらにストレージ１５０には、タスクの分散を行うための学習済みモデルが格納される。学習済みモデルは、マスタ情報処理ユニット１０および各スレーブ情報処理ユニット２０のＣＰＵ稼働状態と、タスクのデータ量およびタスクの種別と、を入力要素とし、タスクの分割先のスレーブ情報処理ユニット２０と、それぞれのスレーブ情報処理ユニット２０に分割するデータ量とを出力要素とするモデル情報である。学習済みモデルは、ストレージ１５０に格納されたＣＰＵ稼働状態履歴情報と、タスク実行要求履歴情報とに基づいて、タスクのデータ量およびタスクの種別と、ＣＰＵ稼働状態との相関関係をニューラルネットワーク、決定木、サポートベクターマシン、隠れマルコフモデル等の機械学習によって解析して、あらかじめ構築しておく。
【００４３】
マスタ情報処理ユニット１０の情報処理ＣＰＵ１２０は、定期的に、例えば１日ごとに、ＣＰＵ稼働状態履歴情報とタスク実行要求履歴情報とを学習データとして、機械学習によって学習済みモデルを更新する。
【００４４】
また、マスタ情報処理ユニット１０の分散制御ＣＰＵ１１０は、定期的に、例えば１分ごとに、それぞれのスレーブ情報処理ユニット２０に、定周期バス４０を介して、接続状態を検知するためのパケットを送信する。それぞれのスレーブ情報処理ユニット２０の分散制御ＣＰＵ２１０は、パケットを受信した旨を表す信号を、定周期バス４０を介して、マスタ情報処理ユニット１０に送信する。マスタ情報処理ユニット１０の分散制御ＣＰＵ１１０は、それぞれのスレーブ情報処理ユニット２０から送信された信号に基づいて、情報処理ユニット管理情報を作成して、分散制御メモリ１３０に格納する。情報処理ユニット管理情報は、図４に示されるように、情報処理ユニットを識別するためのユニットＩＤと、マスタかスレーブかを区別する種別と、接続状態とを含む。パケットに応答する信号が送信されたスレーブ情報処理ユニット２０は、接続状態をＯＮとし、信号が送信されなかったスレーブ情報処理ユニット２０は、接続状態をＯＦＦとする。
【００４５】
次に、本実施の形態に係る制御装置２の動作について、図面を参照して説明する。マスタ情報処理ユニット１０は、制御ユニット３０から要求された演算処理を各スレーブ情報処理ユニット２０と分散して処理するためのタスク分散処理を開始する。
【００４６】
マスタ情報処理ユニット１０がタスク分散処理を開始すると、図７に示されるように、分散制御ＣＰＵ１１０は、各スレーブ情報処理ユニット２０にスタンバイ要求信号を送信する（ステップＳ２０１）。具体的には、分散制御ＣＰＵ１１０は、情報処理ユニット管理情報の接続状態がＯＮとなっているスレーブ情報処理ユニット２０に対して、スタンバイ要求信号を送信する。スタンバイ要求信号を受信した各スレーブ情報処理ユニット２０は、演算処理が実行可能である場合には、スタンバイ状態であることを示す応答を送信する。
【００４７】
続いて、分散制御ＣＰＵ１１０は、すべてのスレーブ情報処理ユニット２０から応答を受信したか否かを判定する（ステップＳ２０２）。分散制御ＣＰＵ１１０は、すべてのスレーブ情報処理ユニット２０から応答を受信してはいないと判定すると（ステップＳ２０２：Ｎｏ）、最後にスレーブ情報処理ユニット２０にスタンバイ要求信号を送信してから基準時間を経過したか否かを判定する（ステップＳ２０３）。そして、分散制御ＣＰＵ１１０は、基準時間を経過していないと判定すると（ステップＳ２０３：Ｎｏ）、ステップＳ２０２の処理に戻る。一方、分散制御ＣＰＵ１１０は、基準時間を経過したと判定すると（ステップＳ２０３：Ｙｅｓ）、情報処理ユニット管理情報を更新する（ステップＳ２０４）。具体的には、分散制御ＣＰＵ１１０は、基準時間を経過しても応答が無いスレーブ情報処理ユニット２０の接続状態をＯＦＦに更新する。
【００４８】
ステップＳ２０２の処理においてすべてのスレーブ情報処理ユニット２０から応答を受信したと判定した場合（ステップＳ２０２：Ｙｅｓ）、またはステップＳ２０４の処理に続いて、分散制御ＣＰＵ１１０は、各スレーブ情報処理ユニット２０にＣＰＵ稼働状態情報の送信を要求する信号を送信する（ステップＳ２０５）。
【００４９】
続いて、分散制御ＣＰＵ１１０は、各スレーブ情報処理ユニット２０からＣＰＵ稼働状態情報を受信する（ステップＳ２０６）。分散制御ＣＰＵ１１０は、非同期バス５０を介して受信したＣＰＵ稼働状態情報を、分散制御メモリ１３０に格納する。ＣＰＵ稼働状態情報は、図８に示されるように、情報処理ユニットを識別するためのユニットＩＤ、情報処理ＣＰＵ２２０の使用率を表すＣＰＵ使用率、情報処理メモリ２４０の使用率を表すメモリ使用率、情報処理ＣＰＵ２２０のストレージ２５０への読み書きの負荷を表すＩ／Ｏ負荷等の情報を含む。
【００５０】
そして、情報処理ＣＰＵ１２０は、タスクのデータ量、種別およびＣＰＵ稼働状態に基づいてタスク要求先とデータ量を決定する（ステップＳ２０７）。具体的には、情報処理ＣＰＵ１２０は、分散制御メモリ１３０に格納されたＣＰＵ稼働状態情報と、ストレージ１５０に格納されたタスクのデータ量およびタスクの種別と、を学習済みモデルに入力し、出力要素としてタスク実行要求先のスレーブ情報処理ユニット２０およびそれぞれのデータ量を取得する。
【００５１】
次に、情報処理ＣＰＵ１２０は、ステップＳ２０７で決定したデータ量に装置データを分割する（ステップＳ２０８）。そして、情報処理ＣＰＵ１２０は、分割された装置データをタスク実行要求先である各スレーブ情報処理ユニット２０に転送する（ステップＳ２０９）。そして、分散制御ＣＰＵ１１０は、各スレーブ情報処理ユニット２０にタスク実行命令の信号を送信する（ステップＳ２１０）。
【００５２】
ステップＳ２１０の処理においてタスク実行命令の信号を受信したスレーブ情報処理ユニット２０の情報処理ＣＰＵ２２０は、ステップＳ２０９の処理において転送された装置データに対する演算処理を実行する。そして、スレーブ情報処理ユニット２０の分散制御ＣＰＵ２１０は、情報処理ＣＰＵ２２０の演算処理の実行が終了すると、タスク実行完了通知をマスタ情報処理ユニット１０に送信する。
【００５３】
続いて、分散制御ＣＰＵ１１０は、すべてのタスク実行要求先のスレーブ情報処理ユニット２０からタスク実行完了通知を受信したか否かを判定する（ステップＳ２１１）。そして、分散制御ＣＰＵ１１０は、すべてのタスク実行要求先からタスク実行完了通知を受信してはいないと判定すると（ステップＳ２１１：Ｎｏ）、残ったタスクについてステップＳ２０１の処理から再度実行する。
【００５４】
一方、分散制御ＣＰＵ１１０は、すべてのタスク実行要求先からタスク実行完了通知を受信したと判定すると（ステップＳ２１１：Ｙｅｓ）、処理済みデータを統合する（ステップＳ２１２）。具体的には、分散制御ＣＰＵ１１０は、各スレーブ情報処理ユニット２０に処理済みデータの送信を要求する信号を送信し、各スレーブ情報処理ユニット２０から処理済みデータを受信する。そして、情報処理ＣＰＵ１２０は、受信した処理済みデータを結合してストレージ１５０に格納する。
【００５５】
以上のようにして、本実施の形態に係る制御装置２は、演算タスクを複数の情報処理ユニットで分散して実行することによって、高い計算能力を得ることができる。また、情報処理ユニットのＣＰＵの稼働状態に基づいて装置データを分割するデータ量を決定することによって、状況に応じた適切なデータ量に分けることができ、効率的な分散処理が実現される。
【００５６】
また、タスクの分割処理に機械学習によって得られた学習済みモデルを適用することによって、実績に即した現実的なデータ量の分割が実現される。さらに、学習済みモデルを実績に基づいて更新することによって、演算タスクを分散するアルゴリズムを継続して改良することができる。
【００５７】
（変形例）
本発明は、上述した実施の形態に限定されるわけではなく、その他の種々の変更が可能である。
【００５８】
実施の形態２に係る制御装置２のタスク分散処理において、複数のスレーブ情報処理ユニット２０にタスクを分散する例を示した。しかし、マスタ情報処理ユニット１０が分割された一部の装置データに対する情報処理を実行しても良い。この場合、マスタ情報処理ユニット１０が処理する装置データについては、ステップＳ２０９からステップＳ２１１までの処理は不要である。
【００５９】
また、制御装置２は、外部の情報処理装置にタスク実行を要求しても良い。この場合、マスタ情報処理ユニット１０は、分散制御ＣＰＵ１１０または情報処理ＣＰＵ１２０と接続されたネットワークカードをさらに備え、外部の情報処理装置と通信可能で接続され、スレーブ情報処理ユニット２０と同様に、外部の情報処理装置のＣＰＵの稼働状態を定期的に取得すれば良い。
【００６０】
マスタ情報処理ユニット１０の一部の処理を分散制御ＣＰＵ１１０が実行するか情報処理ＣＰＵ１２０が実行するかについては、上述の実施の形態において例示したものから適宜変更しても良い。具体的には、それぞれの処理の頻度、負荷を考慮して分散制御ＣＰＵ１１０が実行するか情報処理ＣＰＵ１２０が実行するかを設計しても良い。同様に、スレーブ情報処理ユニット２０の一部の処理について、分散制御ＣＰＵ１１０が実行するか情報処理ＣＰＵ１２０が実行するかは、上述の実施の形態において例示したものから適宜変更しても良い。また、通信路として定周期バス４０を使用するか非同期バス５０を使用するかについても、上述の実施の形態において例示したものから適宜変更しても良い。
【００６１】
上述の実施の形態に係るマスタ情報処理ユニット１０の分散制御ＣＰＵ１１０は、装置の制御を行っても良い。分散制御ＣＰＵ１１０は、情報処理ＣＰＵ１２０と並列に処理を実行することができるため、情報処理の負荷が高くなって情報処理ＣＰＵ１２０がハングアップしたとしても、装置の制御に影響することが無い。その場合、情報処理ＣＰＵ１２０のみを再起動することが可能である。
【００６２】
上述の実施の形態２のタスク分散処理において、各スレーブ情報処理ユニット２０が演算処理を停止または中断した場合に、他のスレーブ情報処理ユニット２０またはマスタ情報処理ユニット１０が演算処理を引き継いで実行するようにしても良い。具体的には、各スレーブ情報処理ユニット２０は、演算処理の途中の処理済みデータを、どの処理まで完了したかを示すデータとともに、他のスレーブ情報処理ユニット２０およびマスタ情報処理ユニット１０に転送する。そのために、各スレーブ情報処理ユニット２０およびマスタ情報処理ユニット１０は、ストレージ２５０もしくはストレージ１５０または情報処理メモリ２４０もしくは情報処理メモリ１４０に、情報処理ユニット管理情報の接続状態がＯＮとなっている情報処理ユニットの分の処理済みデータを格納するための領域を確保しておく。
【００６３】
そして、各スレーブ情報処理ユニット２０が演算処理を停止または中断した場合には、マスタ情報処理ユニット１０は、各スレーブ情報処理ユニット２０のＣＰＵ稼働状態情報を定期的に取得して、取得したＣＰＵ稼働状態情報に基づいて、演算処理が停止または中断したか否かを判定する。そして、マスタ情報処理ユニット１０は、演算処理が停止または中断したと判定すると、どの処理まで完了したかを示すデータを参照して、続きの処理を実行するスレーブ情報処理ユニット２０をＣＰＵ稼働状態情報に基づいて選定する。そして、マスタ情報処理ユニット１０は、選定したスレーブ情報処理ユニット２０にタスク実行を要求する。ここで、マスタ情報処理ユニット１０自身が演算処理タスクを引き継いで実行しても良い。また、スレーブ情報処理ユニット２０が演算処理を中断した後、汎用ＯＳの再起動によって演算処理を再開できる場合には、演算の再開が可能であることを示すスタンバイ情報を、マスタ情報処理ユニット１０に送信して待機する。スタンバイ情報を受信したマスタ情報処理ユニット１０は、他のスレーブ情報処理ユニット２０の演算処理が停止または中断するか、または新たにタスク分散処理を開始する際、当該スレーブ情報処理ユニット２０を選定の候補とする。
【００６４】
このようにすれば、スレーブ情報処理ユニット２０が演算処理の途中で処理を停止または中止した場合であっても、途中までの演算処理が無駄にならずに、演算処理を続けることができる。したがって、演算処理タスクの分散が、より効率的に実行される。
【００６５】
また、マスタ情報処理ユニット１０が何らかの影響により動作を停止した場合のリスクヘッジとして、マスタ機能をスレーブ情報処理ユニット２０に移行しても良い。具体的には、マスタ情報処理ユニット１０は、ＣＰＵ稼働状態情報に基づいて、マスタ機能の移行先を予め選定しておく。そして、選定されたスレーブ情報処理ユニット２０は、マスタ情報処理ユニット１０の稼働状態を監視しておくとともに、停止を検知した後にシームレスにマスタ機能を移行させるため、ＣＰＵ稼働状態情報、情報処理ユニット管理情報、装置データおよび演算処理の途中の処理済みデータを、どの処理まで完了したかを示すデータとともに、分散制御メモリ２３０とストレージ２５０にそれぞれバックアップする。また、マスタ情報処理ユニット１０は、選定されていないその他のスレーブ情報処理ユニット２０に対し、選定されたスレーブ情報処理ユニット２０の情報を通知しておく。選定されていないその他のスレーブ情報処理ユニット２０は、マスタ情報処理ユニット１０の停止を検知すると、前述の各情報の転送先の切り替えを実施する。
【００６６】
さらに、マスタ情報処理ユニット１０が再起動、ユニット交換等によって動作が回復した際に、マスタ機能を回復させても良い。具体的には、スレーブ情報処理ユニット２０は、マスタ情報処理ユニット１０の動作が回復したことを検知すると、マスタ情報処理ユニット１０に対してマスタ機能の回復要求を送信する。マスタ情報処理ユニット１０は、回復要求を受信すると、マスタ機能を回復しても良いか否かを自身のＣＰＵ稼働状態に応じて判定し、マスタ機能を回復しても良いと判定すると、送信元のスレーブ情報処理ユニット２０に対してマスタ機能の回復を通知する。すると、スレーブ情報処理ユニット２０は、分散メモリ２３０とストレージ２５０にバックアップしたＣＰＵ稼働状態情報、情報処理ユニット管理情報、装置データを、演算処理の途中の処理済みデータおよびどの処理まで完了したかを示すデータとともに転送し、他のスレーブ情報処理ユニット２０に対してマスタ機能の切替を通知する。転送が完了すると、マスタ情報処理ユニット１０はマスタ機能の回復を各スレーブ情報処理ユニット２０に通知する。各スレーブ情報処理ユニット２０は、前述の各情報の転送先をマスタ情報処理ユニット１０に戻す。
【００６７】
このようにすれば、マスタ情報処理ユニット１０の動作が停止した場合でも演算機能を停止する事無く継続して実行することができる。また、マスタ情報処理ユニット１０が復旧した場合には、元の構成に戻すことができる。
【００６８】
上述の実施の形態では、プロセッサがＣＰＵである例を示したが、マイクロプロセッサ、ＤＳＰ（Digital Signal Processor）等であっても良い。
【００６９】
上述の実施の形態では、ＣＰＵの稼働状態を表す情報として、ＣＰＵ使用率、メモリ使用率およびＩ／Ｏ負荷を例示した。ＣＰＵの稼働状態を表す情報はこれらに限らず、仮想メモリ、空きメモリ、バッファメモリ、キャッシュメモリ等の量、単位時間当りの割り込み処理、プログラム切り替えの回数等であっても良い。
【００７０】
なお、本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、この発明を説明するためのものであり、本発明の範囲を限定するものではない。即ち、本発明の範囲は、実施の形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、この発明の範囲内とみなされる。
【符号の説明】
【００７１】
１，２  制御装置、１０  マスタ情報処理ユニット、２０  スレーブ情報処理ユニット、３０  制御ユニット、４０  定周期バス、５０  非同期バス、１１０，２１０  分散制御ＣＰＵ、１２０，２２０  情報処理ＣＰＵ、１３０，２３０  分散制御メモリ、１４０，２４０  情報処理メモリ、１５０，２５０  ストレージ、１６０，２６０  専用バス制御回路、１６１，２６１  定周期ＩＦ、１６２，２６２  非同期ＩＦ、１７０，２７０  シリアルインターフェース。
【要約】
制御装置（１）は、マスタ情報処理ユニット（１０）とスレーブ情報処理ユニット（２０）とを備える。スレーブ情報処理ユニット（２０）は、汎用ＯＳを介して情報処理を実行する情報処理ＣＰＵ（２２０）と、リアルタイムＯＳを介して情報処理ＣＰＵ（２２０）の稼働状態を測定する分散制御ＣＰＵ（２１０）と、を備える。マスタ情報処理ユニット（１０）は、スレーブ情報処理ユニット（２０）の情報処理ＣＰＵ（２２０）の稼働状態を表す情報をスレーブ情報処理ユニット（２０）から取得し、取得した情報に基づいて情報処理の実行をスレーブ情報処理ユニット（２０）に要求するか否かを判定し、要求すると判定した場合には情報処理の実行を要求する信号をスレーブ情報処理ユニット（２０）に送信する。スレーブ情報処理ユニット（２０）の情報処理ＣＰＵ（２２０）は、情報処理の実行を要求する信号を受信すると、情報処理を実行する。【図１】
0006808090.tif 000002
【図２】
0006808090.tif 000003
【図３】
0006808090.tif 000004
【図４】
0006808090.tif 000005
【図５】
0006808090.tif 000006
【図６】
0006808090.tif 000007
【図７】
0006808090.tif 000008
【図８】
0006808090.tif 000009