(57)【要約】【課題】複数装置でのデータ共有時にネットワークを介した通信処理時間を削減できる分散制御システムを提供する。【解決手段】複数の通信ポートを具備する制御装置を複数備え、複数の制御装置の間に、通信ポート同士を接続する通信路を具備することで構成されるネットワークを備える分散制御システムであって、制御装置は、制御装置自身が備える通信ポートの１つ乃至複数が、通信路を介して転送されるデータを制御装置自身で処理するデータである入力データとして取込む通信ポートである受信ポートに選択され、制御装置自身が備える通信ポートの１つ乃至複数が、自身が発信するデータである出力データを通信路に転送する通信ポートである送信ポートに選択され、制御装置自身が備える通信ポートの複数が、通信路を介して転送される信号およびデータを受信する通信ポートと、受信した信号およびデータを通信路に転送する通信ポートの組である中継ポートに選択されていることを特徴とする分散制御システム。【選択図】図２
2020150393.tif 000002
【特許請求の範囲】
【請求項１】
複数の通信ポートを具備する制御装置を複数備え、複数の制御装置の間に、通信ポート同士を接続する通信路を具備することで構成されるネットワークを備える分散制御システムであって、
前記制御装置は、制御装置自身が備える前記通信ポートの１つ乃至複数が、前記通信路を介して転送されるデータを制御装置自身で処理するデータである入力データとして取込む通信ポートである受信ポートに選択され、制御装置自身が備える通信ポートの１つ乃至複数が、自身が発信するデータである出力データを前記通信路に転送する通信ポートである送信ポートに選択され、制御装置自身が備える前記通信ポートの複数が、前記通信路を介して転送される信号およびデータを受信する通信ポートと、受信した信号およびデータを通信路に転送する通信ポートの組である中継ポートに選択されていることを特徴とする分散制御システム。
【請求項２】
請求項１に記載の分散制御システムであって、
前記ネットワークを介したデータ転送を実行する前記制御装置を複数選択し、
任意の前記制御装置の前記送信ポートから自身に格納された伝達情報を転送した後、選択された全ての前記制御装置が受信ポートを介して転送される入力データを取込み、取込まれた入力データを出力データとして前記送信ポートを介して転送を繰り返し実行した際に、伝達情報が選択された全ての前記制御装置を通過するように、各制御装置の前記受信ポートと、前記送信ポートと、前記中継ポートを選択することを特徴とする分散制御システム。
【請求項３】
請求項２に記載の分散制御システムであって、
選択された全ての前記制御装置に対し、少なくとも１つの前記受信ポートと、少なくとも１つの前記送信ポートと、を必ず選択し、さらに、選択された全ての前記制御装置のいくつかは、任意数の前記中継ポートを選択することを特徴とする分散制御システム。
【請求項４】
請求項２に記載の分散制御システムであって、
選択された全ての前記制御装置は、前記受信ポートを介して転送される入力データとして受信しながら、自身の演算結果あるいは入力データのいずれかを出力データとして前記送信ポートに転送する通信処理と、自身の演算結果あるいは入力データのいずれかを用いて計算を実行する演算処理と、を実行することを特徴とする分散制御システム。
【請求項５】
請求項４に記載の分散制御システムであって、
データ転送を実行する前記制御装置を、各制御装置で実行させる演算処理に対して、自身の処理能力を超えないように選択数を変更することを特徴とする分散制御システム。
【請求項６】
請求項４に記載の分散制御システムであって、
前記制御装置の演算処理の内容が深層学習の演算モデルの一部であることを特徴とする分散制御システム。
【請求項７】
複数の通信ポートを具備する制御装置を複数備え、複数の制御装置の間に、通信ポート同士を接続する通信路を具備することで構成されるネットワークを備える分散制御システムであって、
前記制御装置は、制御装置自身に搭載される全ての前記通信ポートと接続され、前記通信路を介した通信を実行する通信制御部と、前記通信制御部からの受信データを用いて演算を行い、演算結果を送信データとして前記通信演算部に与える演算部を備え、
前記通信制御部は、全ての前記通信ポートの受信側と接続され、任意の前記通信ポートを受信ポートとして選択する受信ポート選択部と、全ての前記通信ポートの送信側と接続され、任意の通信ポートを送信ポートとして選択する送信ポート選択部と、中継ポート選択部とを備え、
前記通信制御部は、前記受信ポート選択部と接続され、受信ポートから伝送されるデータが格納される受信データ格納部と、前記送信ポート選択部と接続され、送信ポートに伝送するデータが格納される送信データ格納部と、前記受信データ格納部および前記送信データ格納部と接続され、前記演算部の演算結果のデータ、および、前記受信データ格納部に格納されたデータのうち、いずれかを選択し、前記送信データ格納部にデータを格納する送信データ選択部とを備え、
前記受信ポート選択部は、前記中継ポート選択部と接続され、全ての通信ポートの接続線から伝送される信号を、前記中継ポート選択部に受け渡し、
前記送信ポート選択部は、前記中継ポート選択部と接続され、前記中継ポート選択部からの接続を、通信ポートの接続と１対１に対応するように備え、前記中継ポート選択部から伝送される信号を、対応する通信ポートの接続線に受け渡し、
前記中継ポート選択部は、前記受信ポート選択部からの接続線と、前記送信ポート選択部からの接続線の組を選択することで、中継ポートを決定し、中継ポートに決定された受信ポート選択部の接続線から伝送される信号を、同じ中継ポートに決定された前記送信ポート選択部の接続線に受け渡すことを特徴とする分散制御システム。
【請求項８】
請求項７に記載の分散制御システムであって、
前記制御装置に対して、動作指令、動作応答、および、制御パラメータ、演算パラメータをネットワークを介して転送することで全ての制御装置を統括するメイン制御装置と、前記メイン制御装置と接続され、全ての通信装置を管理、設定するため画面表示と入力の機能を具備する表示入力装置とを備えることを特徴とする分散制御システム。
【請求項９】
請求項７または請求項８に記載の分散制御システムであって、
前記制御装置は、前記通信制御部の受信データ格納部と接続され、モーション制御や深層学習などの演算処理を実行する演算部と、前記演算部および演算制御部の送信データ選択部と接続され、前記演算部の処理結果を格納し、格納された処理結果を前記送信データ選択部に転送する演算結果格納部を備えることを特徴とする分散制御システム。
【請求項１０】
請求項１から請求項９のいずれか１項に記載の分散制御システムであって、
複数の制御装置が通信路により接続されて、複数の制御装置の間で一巡する転送ルートが形成されるように、前記制御装置内の通信ポートは受信ポート、送信ポート、中継ポートに選択されていることを特徴とする分散制御システム。
【請求項１１】
請求項１から請求項１０のいずれか１項に記載の分散制御システムを用いて構成されたことを特徴とする作業機械。
【請求項１２】
請求項１１に記載の作業機械であって、
作業機械を構成する分散制御システムは、深層学習の学習演算を実行する制御装置と深層学習の推論演算を実行する制御装置とを組としてネットワーク構成された制御装置群を複数組備え、制御装置群はメイン処理装置に接続されていることを特徴とする作業機械。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のユニットでシステム全体を制御する分散制御システムとそれを用いた作業機械に関する。
【背景技術】
【０００２】
近年、作業機械の調整自動化や複雑作業の自動化などを目的に、深層学習の利用が検討されている。
【０００３】
深層学習では、あるタスクを実行した際の画像やセンサなどの入力データと、評価尺度を用いて事前に、このタスクを繰返し実行する中で評価が改善するように自身の演算モデル内のパラメータを更新する。以下、これを学習処理と呼ぶ。
【０００４】
また、実運用時には、タスクを実行した際の入力データを、学習済みの演算モデルとパラメータの組を用いて演算する。以下、これを推論処理と呼ぶ。
【０００５】
深層学習では、このような学習処理と推論処理の実行で、数理的な設計およびチューニングをすることなく処理結果の改善や、複雑なアルゴリズムの設計および実装を実現できる。
【０００６】
産業装置やロボットなどの作業機械の分野では、このような深層学習を応用することで、機体や動作環境などの個体差を吸収するためのチューニングにかかる工数の削減や、多くの物理変化量への考慮が必要となる複雑な作業動作のためのアルゴリズムの設計、実装の容易化が期待される。
【０００７】
ここで、作業機械では、その制御にミリ秒からマイクロ秒周期での高速な演算が求められる。
【０００８】
そのため、作業機械では、アームやエンドエフェクタなどの機能モジュールや、モータやセンサなどの制御デバイスごとに制御装置を分散搭載し、これらの制御装置をネットワークで接続する分散制御システムを備えることが一般的であり、作業機械の各モジュールに必要な制御演算を、分散並列に実行することで高速化する。
【０００９】
したがって、作業機械に深層学習を適用する際も同様に、演算処理を分散並列に実行することが必須となる。
【００１０】
しかしながら、深層学習では分散処理した数百〜数千の各計算結果を、分散処理した制御装置全体で複数回共有する必要があり、この際に発生するネットワークの通信時間がボトルネックとなり、高速な演算処理を阻害する。
【００１１】
これを解決する手段として、ネットワークを介した通信処理時間を削減する技術が一般的に知られており、例えば、特許文献１などがある。特許文献１では、通信データの負荷分散をネットワークの通信を介して要求し、通信データの負荷分散の対象となる制御装置をネットワークの通信を介して指定することを特徴としている。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２０１２−１７５６８４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、特許文献１に記載の技術では、実際のデータ転送時にかかる、ルーティング制御の処理時間や伝送空き時間など、伝送以外の通信処理時間の削減について考慮がなされていない。
【００１４】
また、ネットワークの通信時間だけでなく、学習処理や推論処理などの演算時間を含めたシステム全体での処理時間の短縮について考慮がなされていない。
【課題を解決するための手段】
【００１５】
以上のことから本発明は「複数の通信ポートを具備する制御装置を複数備え、複数の制御装置の間に、通信ポート同士を接続する通信路を具備することで構成されるネットワークを備える分散制御システムであって、制御装置は、制御装置自身が備える通信ポートの１つ乃至複数が、通信路を介して転送されるデータを制御装置自身で処理するデータである入力データとして取込む通信ポートである受信ポートに選択され、制御装置自身が備える通信ポートの１つ乃至複数が、自身が発信するデータである出力データを通信路に転送する通信ポートである送信ポートに選択され、制御装置自身が備える通信ポートの複数が、通信路を介して転送される信号およびデータを受信する通信ポートと、受信した信号およびデータを通信路に転送する通信ポートの組である中継ポートに選択されていることを特徴とする分散制御システム。」としたものである。
【００１６】
また本発明は「複数の通信ポートを具備する制御装置を複数備え、複数の制御装置の間に、通信ポート同士を接続する通信路を具備することで構成されるネットワークを備える分散制御システムであって、制御装置は、制御装置自身に搭載される全ての通信ポートと接続され、通信路を介した通信を実行する通信制御部と、通信制御部からの受信データを用いて演算を行い、演算結果を送信データとして通信演算部に与える演算部を備え、通信制御部は、全ての通信ポートの受信側と接続され、任意の通信ポートを受信ポートとして選択する受信ポート選択部と、全ての通信ポートの送信側と接続され、任意の通信ポートを送信ポートとして選択する送信ポート選択部と、中継ポート選択部とを備え、通信制御部は、受信ポート選択部と接続され、受信ポートから伝送されるデータが格納される受信データ格納部と、送信ポート選択部と接続され、送信ポートに伝送するデータが格納される送信データ格納部と、受信データ格納部および送信データ格納部と接続され、演算部の演算結果のデータ、および、受信データ格納部に格納されたデータのうち、いずれかを選択し、送信データ格納部にデータを格納する送信データ選択部とを備え、受信ポート選択部は、中継ポート選択部と接続され、全ての通信ポートの接続線から伝送される信号を、中継ポート選択部に受け渡し、送信ポート選択部は、中継ポート選択部と接続され、中継ポート選択部からの接続を、通信ポートの接続と１対１に対応するように備え、中継ポート選択部から伝送される信号を、対応する通信ポートの接続線に受け渡し、中継ポート選択部は、受信ポート選択部からの接続線と、送信ポート選択部からの接続線の組を選択することで、中継ポートを決定し、中継ポートに決定された受信ポート選択部の接続線から伝送される信号を、同じ中継ポートに決定された送信ポート選択部の接続線に受け渡すことを特徴とする分散制御システム。」としたものである。
【００１７】
また本発明は「分散制御システムを用いて構成されたことを特徴とする作業機械。」としたものである。
【発明の効果】
【００１８】
本発明の１つの態様に依れば、データ転送時のルーティング制御の処理時間を短縮し、伝送空き時間を削減できるため、ネットワークを介したデータ共有を高速化できる。
【００１９】
また、本発明の他の態様に依れば、ネットワークを介した計算結果の共有と、学習処理や推論処理などの演算を並列（同時）かつ直列並行（パイプライン）に処理できるため、
システム全体での処理時間の短縮できる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施例に係る分散制御システム２０を作業機械１０に適用した際の構成例を示す図。
【図２】分散制御システム２０における制御装置２１の具体的な構成例を示す図。
【図３】図２の通信制御部２０１において、さらに各部信号を明記した図。
【図４】分散制御システム２０の複数の制御装置２０１内の通信制御部２０１の設定手順を示すフローチャート。
【図５（ａ）】分散制御システム２０で実行される深層学習の演算モデル４００の構成例を示す図。
【図５（ｂ）】演算部２０２の一例を示す図。
【図６】制御装置２１の接続設定の例を示す図。
【図７】通信制御部２０１の設定の処理内容の例を示す図。
【図８】分散制御システム２０の演算処理手順を示すフローチャート。
【図９（ａ）】分散制御システム２０の演算ステップＳ６０１の詳細を示すフローチャート。
【図９（ｂ）】分散制御システム２０の処理の実行内容を示すタイミングチャート。
【図１０】分散制御システム２０の設定画面８００の表示例を示す。
【図１１】実施例２に係わる分散制御システム２０の構成例を示す図。
【図１２】実施例３に係わる分散制御システム２０の構成例を示す図。
【発明を実施するための形態】
【００２１】
本発明を実施するための形態について、適宜図面を参照しながら詳細に説明する。
【実施例１】
【００２２】
図１は、本発明の実施例に係る分散制御システム２０を作業機械１０に適用した際の構成例を示す図である。
【００２３】
作業機械１０は、自身に具備されるアームやエンドエフェクタなどの機構を駆動させるための分散制御システム２０を備える。
【００２４】
分散制御システム２０は、メイン制御装置２３と、表示入力装置２４と、複数の制御装置２１を通信路２２で各々接続して構成されている。本実施例では、例えばメイン制御装置２３において深層学習の学習処理を実施し、複数の制御装置２１において深層学習の推論処理を分散実施させることにより、全体として有意の作業を行わしめる。
【００２５】
このうち制御装置２１は、モータ、センサ、カメラなどの複数の制御デバイス（図示しない）と接続され、接続された制御デバイスの制御処理を実行する。
【００２６】
メイン制御装置２３は、深層学習の学習処理を実行するとともに、通信路２２により構成されたネットワークを介して制御装置２１に対し、学習の結果得られた動作指令、動作応答、および、制御パラメータ、演算パラメータを転送することで全ての制御装置２１を統括的に制御する。
【００２７】
表示入力装置２４は、メイン制御装置２３と接続され、分散制御システム２０の利用者が全ての制御装置２１を管理、設定するため画面表示と入力の機能を備える。
【００２８】
図２は、本実施例に係わる分散制御システム２０における制御装置２１の具体的な構成例を示す。
【００２９】
本実施例の分散制御システム２０は、制御装置２１を複数備えるが、図２の例では、制御装置２１ａ〜２１ｆを備えるものとする。同一仕様により標準的に構成される制御装置２１ａ〜２１ｆについて、図２の２１ａを代表例として、その具体的な構成について説明する。
【００３０】
制御装置２１は、通信ポート２００を複数備え、自身に備えられた通信ポート２００と、他の制御装置２１の通信ポート２００間に通信路２２が接続される。通信ポート２００は、受信側と送信側を備えて双方向通信が可能に構成されている。なお図示の例では通信ポート２００は標準的に３組備えた例を示しており、他の制御装置２１に接続するときには、３組の通信ポート２００の任意の１つ以上を適宜使用することができる。制御装置２１ａは２組使用例であり、制御装置２１ｂは３組使用例である。また通信ポート２００は全二重で構成されるのが好ましく、この場合に各通信ポートの送受信は同時に実行される。
【００３１】
また、制御装置２１は、自身に搭載される全ての通信ポート２００と接続され通信路２２を介した通信を実行する通信制御部２０１と、通信制御部２０１と接続されモーション制御や深層学習などの演算処理を実行する演算部２０２と、通信制御部２０１および演算部２０２と接続され演算部２０２の処理結果を格納し、格納された処理結果を通信制御部２０１に転送する演算結果格納部２０３を備える。
【００３２】
制御装置２０１内の通信制御部２０１は、通信制御装置２１に搭載される全ての通信ポート２００の受信側と接続される受信ポート選択部２１０と、通信制御装置２１に搭載される全ての通信ポート２００の送信側と接続される送信ポート選択部２１１と、受信ポート選択部２１０及び送信ポート選択部２１１に接続される中継ポート選択部２１２と、受信ポート選択部２１０および演算部２０２と接続される受信データ格納部２１３と、送信ポート選択部２１１と接続される送信データ格納部２１４と、受信データ格納部２１０および演算結果格納部２０３および送信データ格納部２１４と接続される送信データ選択部２１５を備える。
【００３３】
図３は、図２の通信制御部２０１において、さらに各部信号を明記した図である。ここでは、３組の通信ポート２００を２００−１、２００−２、２００−３として、それぞれの受信信号をＳ１ｒ、Ｓ２ｒ、Ｓ３ｒと定義し、送信信号をＳ１ｓ、Ｓ２ｓ、Ｓ３ｓと定義する。また中継ポート選択部２１２で取り扱う受信信号をＳ１ｒ’、Ｓ２ｒ’、Ｓ３ｒ’と定義し、中継ポート選択部２１２で取り扱う送信信号をＳ１ｓ’、Ｓ２ｓ’、Ｓ３ｓ’と定義する。
【００３４】
通信制御部２０１の各部の動作について説明する。図３の構成において、受信ポート選択部２１０は、通信ポート２００からの接続線を選択することでデータを受信する通信ポート２００（以下、受信ポートと呼ぶ）を決定し、受信ポートから伝送されるデータを受信処理して、受信データ格納部２１３に格納する。また、受信ポート選択部２１０は、全ての通信ポート２００の接続線から伝送される信号を、中継ポート選択部２１２に受け渡す。
【００３５】
より詳細に述べると、受信ポート選択部２１０における受信ポートの選択処理では、入力信号｛Ｓ１ｒ、Ｓ２ｒ、Ｓ３ｒ｝から１つ選択して、選択した受信信号をＳｒとして受信データ格納部２１０に出力し、保管する。
【００３６】
送信ポート選択部２１１は、通信ポート２００からの接続線を選択することでデータを送信する通信ポート２００（以下、送信ポートと呼ぶ）を決定し、送信データ格納部２１４のデータを取得し、送信処理して、送信ポートに伝送する。また、送信ポート選択部２１１は、中継ポート選択部２１２からの接続を、通信ポート２００の接続と１対１に対応するように備え、中継ポート選択部２１２から伝送される信号を、対応する通信ポート２００の接続線に受け渡す。
【００３７】
より詳細に述べると、送信ポート選択部２１１における送信ポートの選択処理では、送信データ格納部２１４から入力される信号Ｓｓの出力先を、出力信号｛Ｓ１ｓ、Ｓ２ｓ、Ｓ３ｓ｝から１つ選択する。つまり、通信ポート２００−１、２００−２、２００−３のいずれかのみに信号Ｓｓを送信する。
【００３８】
中継ポート選択部２１２は、受信ポート選択部２１０からの接続線と、送信ポート選択部２１１からの接続線の組を選択することで、伝送信号を中継する通信ポート２００（以下、中継ポート）を決定し、中継ポートに決定された受信ポート選択部２１０の接続線から伝送される信号を、同じ中継ポートに決定された送信ポート選択部２１１の接続線に受け渡す。
【００３９】
より詳細に述べると、中継ポート選択部２１２における中継ポートの選択では、以下のようにされる。中継ポートの選択においては、まずＳ１ｒからＳ１ｒ’、Ｓ２ｒからＳ２ｒ’、Ｓ３ｒからＳ３ｒ’、にそれぞれスルーされる入力信号｛Ｓ１ｒ’、Ｓ２ｒ’、Ｓ３ｒ’｝を１つ選択し、その出力先を出力信号｛Ｓ１ｓ’、Ｓ２ｓ’、Ｓ３ｓ’｝から１つ選択する。
【００４０】
次に、上記選択された出力信号は、Ｓ１ｓ’の場合Ｓ１ｓに、Ｓ２ｓ’の場合Ｓ２ｓに、Ｓ３ｓ’の場合はＳ３ｓにそのまま力される。ただし未選択の場合は、出力されない。
【００４１】
このときに、上記の設定を複数行ってもよい。ただし、この回数は最大で通信装置が具備するポート数分であり、上記の例では３回までとされる。
【００４２】
受信データ格納部２１３は、演算部２０２および送信データ選択部２１５の要求に応じて自身に格納されたデータＳｒを転送する。
【００４３】
送信データ格納部２１４は、送信ポート選択部２０１の要求に応じて自身に格納されたデータＳｓを転送する。
【００４４】
送信データ選択部２１５は、受信データ格納部２１３と、計算結果格納部２０３のいずれか１つからデータを取得し、取得したデータを送信データ格納部２１４に格納する。
【００４５】
図４は、本実施例に係る分散制御システム２０の複数の制御装置２１内の通信制御部２０１の設定手順を示すフローチャートである。
【００４６】
このフローでは、分散制御システム２０として有意の動作を行わせるに必要な、個々の制御装置２１の処理内容、複数の制御装置２１間での接続および個々の制御装置２１内の通信の設定、通信制御部の設定などの事前段階の設定を行っている。
【００４７】
図４のフローでは、最初に個々の制御装置２１の処理内容を定めている。ここで処理内容を定めることは、例えばメイン制御装置２３において深層学習の学習処理を実施し、この学習結果を反映して複数の制御装置２１において深層学習の推論処理を分散実施させるための準備段階の処理を行うことを意味している。
【００４８】
具体的には、図４のフローにおける最初の処理ステップＳ３００において、分散制御システム２０の利用者は、事前に深層学習の学習処理を実施する。次に、処理ステップＳ３０１において分散制御システム２０の利用者は、学習処理で得られた推論処理の演算内容を複数の制御装置２１に分散搭載する際の分散方法を設定する。
【００４９】
ここで、処理ステップＳ３０１の具体例を図５（ａ）と図５（ｂ）を用いて説明する。本実施例に係わる分散制御システム２０で実行される深層学習の演算モデル４００が図５（ａ）に、演算部２０２の一例が図５（ｂ）に例示されている。
【００５０】
図５（ａ）に例示する演算モデル４００は、入力層４０１と、出力層４０２と、ニューロン数ｎ、層数ｍの中間層４０３を備え、各層間のニューロンを全結合するモデルである。この演算モデル４００は、分散制御システム２０の全体の動作や処理を表す全体モデルである。
【００５１】
本実施例では、演算モデル４００を、上下に４分割（演算モデル４００ａ〜４００ｄに対応）したものを分散して複数の制御装置２１ａに搭載する。例えば制御装置２１ａに演算モデル４００ａを搭載し、制御装置２１ｂに演算モデル４００ｂを搭載し、制御装置２１ｃに演算モデル４００ｃを搭載し、制御装置２１ｄに演算モデル４００ｄを搭載することで、全体として演算モデル４００を構成する。これは、上半身の作業機械１０の例でいえば、制御装置２１ａに右腕の機能を付与し、制御装置２１ｂに右手の機能を付与し、制御装置２１ｃに左腕の機能を付与し、、制御装置２１ｄに左手の機能を付与したものということができる。
【００５２】
このとき、分割数は、演算モデル４００のニューロン数ｎ、層数ｍから決定される重み係数などの計算数や、データ量、あるいは、制御装置２１に搭載される演算部２０２の演算方式で決めることが望ましい。
【００５３】
分割数の一例を説明するため、図５（ｂ）に演算部２０２と演算結果格納部２０３の詳細構成を示す。
【００５４】
演算部２０２は、ニューロンの演算（重み係数乗算、バイアス加算、発火関数演算など）を実行する演算器４１０と、ニューロンの演算に用いる重み係数のパラメータを格納する重み係数格納部４１１と、をｋ個備える。
【００５５】
一方、演算結果格納部２０３は、演算部４１０の演算結果を格納するデータ格納部４２０を、ｋ個備え、演算部４１０と１対１で対応するように接続する。
【００５６】
さらに演算結果格納部２０３は、ｋ個搭載されるデータ格納部４２０と接続され、データ格納部４２０に格納されたデータを集約するデータ集約部４２１を備える。
【００５７】
演算部２０２は、さらに、自身への入力、および、データ集約部４２１からの入力のいずれのデータを演算部２０２が備える全ての演算器４１０の入力とするかを選択するデータ選択部４１２を備える。
【００５８】
制御装置２１が、このような演算部２０２と、演算結果格納部２０３を備える場合、ｋ個のニューロンの演算を並列処理できるため、演算モデル４００ａ〜４００ｄの各ニューロン数は、ｋ個以内に設定するとよい。こうすることで、計算効率がよく、演算モデル４００全体の演算時間の短縮が期待できる。
【００５９】
ここで、図４に戻って説明を続ける。次に図４のフローでは、複数の制御装置２１間での接続についての設定を行う。これは、処理ステップＳ３０１の後、処理ステップＳ３０２において、演算内容を実際に分散搭載する制御装置２１を選択し、さらに処理ステップＳ３０３において、これらの制御装置２１の通信制御部２０１の制御方法を設定する。
【００６０】
ここで、処理ステップＳ３０２、Ｓ３０３の具体例を図６、図７を用いて説明する。図６は、本実施例に係わる分散制御システム２０の複数の制御装置２１の接続の設定を示す図、並びに図７は通信制御部２０１の設定の処理内容の例を示す図である。
【００６１】
本実施例では、図６において前述の演算モデル４００ａ〜４００ｄを、それぞれ制御装置２１ａ〜２１ｄに分散搭載するように設定する。なお図６の分散制御システム２０では、制御装置２１ｅ、２１ｆも備えるが、以下の説明では同様の考え方により設定され、あるいは使用されないものとしている。
【００６２】
このとき複数の制御装置２１間の接続の設定では、ネットワークを介して転送されるデータが制御装置２１ａ〜２１ｄを一巡するように、即ち、制御装置２１ａ〜２１ｄがそれぞれ転送ｃ５００〜ｃ５０３を実行できるように、各制御装置２１ａ〜２１ｄの通信制御部２０１を設定する。
【００６３】
具体的には例えば図６において、制御装置２１ａは通信ポート２００ａ−１、２００ａ−２、２００ａ−３、制御装置２１ｂは通信ポート２００ｂ−１、２００ｂ−２、２００ｂ−３、制御装置２１ｃは通信ポート２００ｃ−１、２００ｃ−２、２００ｃ−３、制御装置２１ｄは通信ポート２００ｄ−１、２００ｄ−２、２００ｄ−３をそれぞれ備えているものとして以下の説明を行う。
【００６４】
そのうえで、制御装置２１ａの通信ポート２００ａ−３を制御装置２１ｂの通信ポート２００ｂ−１に接続し、制御装置２１ｂの通信ポート２００ｂ−２を制御装置２１ｄの通信ポート２００ｄ−１に接続し、制御装置２１ｂの通信ポート２００ｂ−３を制御装置２１ｃの通信ポート２００ｃ−１にそれぞれ通信路２２を介して接続する。
【００６５】
この場合に、通信路２２および通信ポート２００では双方向通信が行われるので、この結果として、制御装置２１ａ〜２１ｄを一巡する転送ルート（ｃ５００〜ｃ５０３）を形成することができる。
【００６６】
この転送ルートは、転送ルートＣ５００（制御装置２１ａの通信ポート２００ａ−３から制御装置２１ｂの通信ポート２００ｂ−１に至る）、転送ルートＣ５０１（制御装置２１ｂの通信ポート２００ｂ−３から制御装置２１ｃの通信ポート２００ｃ−１に至る）、転送ルートＣ５０２（制御装置２１ｃの通信ポート２００ｃ−１から制御装置２１ｂの通信ポート２００ｂ−３、２００ｂ−２、制御装置２１ｄの通信ポート２００ｄ−１に至る）、転送ルートＣ５０３、（制御装置２１ｄの通信ポート２００ｄ−１から制御装置２１ｂの通信ポート２００ｂ−２、制御装置２１ｂの通信ポート２００ｂ−１、制御装置２１ａの通信ポート２００ａ−３）により形成されている。
【００６７】
図７は、このように設定した時に各制御装置２１ａ〜２１ｄにおける通信ポートが果たす役割（受信ポート、送信ポート、中継ポートの別）を縦方向に、また各ポートにおいて取り扱うことになる受信信号、送信信号が何であるかを横方向に記述して纏めたものである。図７に示すように、上記の一巡する転送ルートを形成するためには、各制御装置２１の通信ポート２００は、以下のように定義されている必要がある。
【００６８】
まず制御装置２１ａでは、通信ポート２００ａ−３を、送信ポートおよび受信ポートに設定する。制御装置２１ｂでは、通信ポート２００ｂ−１を受信ポート、通信ポート２００ｂ−３を送信ポートに設定する。さらに、制御装置２１ｂでは、通信ポート２００ｂ−３の受信側と、通信ポート２００ｂ−２の送信側の組を中継ポートの１つとして設定し、制御装置２１ｃでは、通信ポート２００ｃ−１を受信ポートおよび送信ポートに設定する。また制御装置２１ｂでは、通信ポート２００ｂ−２の受信側と通信ポート２００ｂ−１の送信側の組をもう１つの中継ポートとして設定する。制御装置２１ｄでは、通信ポート２００ｄ−１を送信ポートおよび受信ポートに設定する。この設定により、複数の制御装置２１間での接続準備、および個々の制御装置２１内の通信の設定が完了する。
【００６９】
なお図７の記述において、〇は左列の各ポートの役割に、上行の信号を割り付けたという意味で、その際の制御装置の物理的な通信ポートとの関連性をその横に番号として記載している。受信ポート／送信ポートは、受信信号／送信信号を各制御装置に１つ設定している。中継ポートは受信信号と、送信信号の組として設定している。受信信号→送信信号に伝送される。制御装置２１ａ〜２１ｆに上記を初期設定（固定で設定）することで、同一制御装置で様々な通信に対応できる。
【００７０】
このように、制御装置２１ａ〜２１ｄの各通信制御部２０１を設定し、かつ、各制御装置２１ａ〜２１ｄは、データの受信を４回繰返すと同時に、初回のみ自身のデータを送信、以降３回は受信したデータを送信し、これらのデータ送受信を同時に実行することで、制御装置２１ａ〜２１ｄの全てでデータを共有できる。
【００７１】
再度図４に戻って説明を続ける。処理ステップＳ３０３の後、分散制御システム２０の利用者は、処理ステップＳ３０４において推論処理に用いる重み係数などのパラメータを制御装置２１ａ〜制御装置２１ｄに展開し、演算を実行する。以上の処理手順で、推論処理を分散して実行できる。
【００７２】
図８は、本実施例に係わる分散制御システム２０の演算処理手順を示すフローチャートである。
【００７３】
図８のフローにおいて、分散制御システム２０は、演算を開始すると、まず処理ステップＳ６００において、図５（ａ）の演算モデル４００の入力層４０１の演算を実行する。処理ステップＳ６００の入力層４０１の演算では、制御装置２１ａ〜２１ｄに入力データを共有してから、各制御装置２１ａ〜２１ｄで同時並行に演算を実行する。
【００７４】
次に、分散制御システム２０は、処理ステップＳ６０１において演算モデル４００の中間層４０３の演算を実行する。ここで、処理ステップＳ６０１の処理手順の詳細を図９（ａ）、図９（ｂ）を用いて説明する。
【００７５】
図９（ａ）は、本実施例に関わる分散制御システム２０の演算処理手順の詳細を示すフローチャートであり、図９（ｂ）は、処理の実行内容を示すタイミングチャートである。この図に示す通り、制御装置２１ａ〜２１ｄは本処理手順を同時並行に実行することで、中間層４０３の演算を分散して実行できる。
【００７６】
まず、図９（ａ）について説明する。なお、図８の処理ステップＳ６０１に相当する処理ステップＳ７００は、演算モデル４００の中間層４０３の一層分の演算に該当し、処理ステップＳ７０１〜処理ステップＳ７０４のステップで実行されるものである。
【００７７】
さらに、処理ステップＳ７００のうち、処理ステップＳ７１０〜処理ステップＳ７１３は、受信ポート選択部２１０の処理手順を、処理ステップＳ７２０〜処理ステップＳ７２３は、演算部２０２の処理手順を処理ステップＳ７３０〜処理ステップＳ７３３は、送信データ選択部２１５、および、送信ポート選択部２１２の処理手順をそれぞれ示すものとする。
【００７８】
まず、受信ポート選択部２１０は、処理ステップＳ７１０において受信ポートを介して転送される計算結果を受信し、受信データ格納部２１３に格納する。
【００７９】
処理ステップＳ７１０と同時に、演算部２０２は、処理ステップＳ７２０において自身の前回の演算結果（入力層４０１の演算結果、あるいは、一層前の中間層４０３の演算結果）を用いて、演算を実行する。
【００８０】
さらに処理ステップＳ７２０と同時に、送信データ選択部２１４は、処理ステップＳ７３０において演算結果格納部２０３に格納される自身の前回の演算結果（入力層４０１の演算結果、あるいは、一層前の中間層４０３の演算結果）を選択し、送信データ格納部２１４に格納し、送信データ選択部２１１は、送信データ格納部２１４に格納されたデータを送信ポートに転送する。
【００８１】
次に、受信ポート選択部２１０は、処理ステップＳ７１１において受信ポートを介して転送される計算結果を受信し、受信データ格納部２１３に格納する。
【００８２】
処理ステップＳ７１１と同時に、演算部２０２は、処理ステップＳ７２１において受信データ格納部２１３に格納済みの受信データを用いて、演算を実行する。
【００８３】
さらに処理ステップＳ７２１と同時に、送信データ選択部２１４は処理ステップＳ７３１において、処理ステップＳ７１０で受信データ格納部２１３に格納済みの受信データを選択し、送信データ格納部２１４に格納し、送信データ選択部２１１は、送信データ格納部２１４に格納されたデータを送信ポートに転送する。
【００８４】
次に、受信ポート選択部２１０は、処理ステップＳ７１２において受信ポートを介して転送される計算結果を受信し、受信データ格納部２１３に格納する。
【００８５】
処理ステップＳ７１１と同時に、演算部２０２は処理ステップＳ７２２において、処理ステップＳ７１１で受信データ格納部２１３に格納済みの受信データを用いて、演算を実行する。
【００８６】
さらに処理ステップＳ７２２と同時に、送信データ選択部２１４は処理ステップＳ７３２において、処理ステップＳ７１１で受信データ格納部２１３に格納済みの受信データを選択し、送信データ格納部２１４に格納し、送信データ選択部２１１は、送信データ格納部２１４に格納されたデータを送信ポートに転送する。
【００８７】
次に、受信ポート選択部２１０は、処理ステップＳ７１３において受信ポートを介して転送される計算結果を受信し、受信データ格納部２１３に格納する。
【００８８】
処理ステップＳ７１３と同時に、演算部２０２は処理ステップＳ７２２において、処理ステップＳ７１２で受信データ格納部２１３に格納済みの受信データを用いて、演算を実行する。
【００８９】
さらに処理ステップＳ７２２と同時に、送信データ選択部２１４は処理ステップＳ７３３において、処理ステップＳ７１２で受信データ格納部２１３に格納済みの受信データを選択し、送信データ格納部２１４に格納し、送信データ選択部２１１は、送信データ格納部２１４に格納されたデータを送信ポートに転送する。
【００９０】
処理ステップＳ７１３、処理ステップＳ７２３、処理ステップＳ７３３が全て完了した後、演算部２０２は処理ステップＳ７２４の判断処理において、処理ステップＳ７００の実行回数が演算モデル４００の中間層４０３の層数分に達していない場合は処理ステップＳ７２４の判断をＮｏとして、処理ステップＳ７００を繰り返し実行する。また処理ステップＳ７００の実行回数が演算モデル４００の中間層４０３の層数分に達している場合は処理ステップＳ７２４の判断をＹｅｓとして、処理を終了する。
【００９１】
なお、本実施例では、演算モデル４００の分散数を４としたため、処理ステップＳ７００を４ステップ（処理ステップＳ７０１〜処理ステップＳ７０４）で実行したが、本実施例と異なる分散数の場合には、分散数をｎとすると、処理ステップＳ７００を処理ステップＳ７０１、処理ステップＳ７０２の繰返しでｎステップ分実行すればよい。
【００９２】
次に図９（ｂ）について説明する。このタイミングチャート７３０は、処理ステップＳ７００を一回実行した際の各通信装置２１ａ〜２１ｄに対する、演算と、転送ｃ５００〜ｃ５０３の実行状態について示した図である。
【００９３】
なお、タイミングチャート７３０の内部に記載されている記号２１ａ〜２１ｄは、各通信装置２１ａ〜２１ｄに対する、演算と、転送ｃ５００〜ｃ５０３で扱っているデータを転送開始した制御装置２１ａ〜２１ｄに対応する。
【００９４】
これによれば、タイミングチャート７３０に示すとおり、推論処理などの演算を並列（同時）かつ直列並行（パイプライン）に処理できる。演算を行いながら、その時間帯で同時に転送が行われている。
【００９５】
ここで、図６に戻って説明を続ける。処理ステップＳ６０１の後、分散制御システム２０は、処理ステップＳ６０２において演算モデル４００の出力層４０２の演算を実行する。
【００９６】
処理ステップＳ６０２の出力層４０２の演算では、通信装置２１ａ〜２１ｄの各自で保有する処理ステップＳ６０１の計算結果を１つの任意の制御装置２１（例えば、制御装置２１ａ）に集約しながら、制御装置２１の演算部２０２で演算を実行する。
【００９７】
以上の処理手順で、通信と演算を並列処理しつつ、演算モデル４００の推論処理を通信装置２１ａ〜２１ｄに分散して実行できる。
【００９８】
図１０は、本実施例に関わる分散制御システム２０の設定画面８００の表示例を示す図である。
【００９９】
設定画面８００は、演算モデル分散方法表示設定部８０１と分散制御システム表示設定部８０２を備える。
【０１００】
演算モデル分散方法表示設定部８０１は、図４を用いて説明した演算モデル４００を分散させるための一連の設定を画面上で実施するための表示機能、入力機能を備える。
【０１０１】
分散制御システム表示設定部８０２は、図５を用いて説明した演算モデル４００の演算内容を分散搭載するために必要な通信制御部２０１の設定を画面上で実施するための表示機能、入力機能を備える。
【０１０２】
以上の構成を備える分散制御システム２０の１つの効果として、データ転送時のルーティング制御の処理時間を短縮し、伝送空き時間を削減できるため、ネットワークを介した通信を高速化できる。
【０１０３】
また、他の効果として、ネットワークを介した計算結果の共有と、学習処理や推論処理などの演算を並列（同時）かつ直列並行（パイプライン）に処理できるため、システム全体での処理時間の短縮ができる。
【実施例２】
【０１０４】
図１１は、実施例２に係わる分散制御システム２０の構成例を示す図である。
【０１０５】
本実施例では、演算モデル４００ａ〜４００ｄの演算内容を通信装置２１ａ、２１ｂ、２１ｃ、２１ｆに分散搭載する。
【０１０６】
この場合も、実施例１と同様に、制御装置２１ａ〜２１ｃ、２１ｆをネットワークを介して転送されるデータが一巡するように、即ち、制御装置２１ａ〜２１ｃ、２１ｆがそれぞれ転送ｃ９００〜ｃ９０３を実行できるように、通信制御部２０１を設定することで、実施例１と同様の効果が得られる。
【０１０７】
具体的には、制御装置２１ａでは、通信ポート２００ａ−３を送信ポートに設定する。さらに、制御装置２１ａでは、通信ポート２００ａ−３の受信側と、通信ポート２００ａ−２の送信側の組を中継ポートとして設定する。
【０１０８】
制御装置２１ｂでは、通信ポート２００ｂ−１を受信ポート、通信ポート２００ｂ−３を送信ポートに設定する。
さらに、制御装置２１ｂでは、通信ポート２００ｂ−３の受信側と、通信ポート２００ｂ−１の送信側の組を中継ポートとして設定する。
【０１０９】
制御装置２１ｃでは、通信ポート２００ｃ−１を受信ポート、および、送信ポートに設定する。
【０１１０】
制御装置２１ｆでは、通信ポート２００ｆ−１を受信ポート、および、送信ポートに設定する。
【０１１１】
ここで、本実施例では、制御装置２１ａと制御装置２１ｆの間に接続される制御装置２１ｅの通信制御部２０１にも設定を行う。具体的には、通信ポート２００ｅ−１の受信側と、通信ポート２００ｉの送信側の組を中継ポートの１つとして設定し、
通信ポート２００ｅ−３の受信側と、通信ポート２００ｅ−１の送信側の組を中継ポートとして設定する。
【０１１２】
本実施例の分散制御システム２０によって得られるその他の効果については、実施例１のものと同様であるため、その重複説明は省略する。
【実施例３】
【０１１３】
図１２は、本実施例に関わる分散制御システム２０の第３の実施例を示す図である。
【０１１４】
本実施例では、作業機械１０の３つ部位のそれぞれに、演算モデル４００に相当する演算内容を制御装置２１に分散搭載する。
【０１１５】
このとき、１つの演算内容に対して処理を分散搭載した制御装置２１の全ての集合を分散処理グループ１０００とする。
【０１１６】
本実施例の分散制御システム２０、作業機械１０の３つの部位のそれぞれに、分散処理グループ１０００ａ〜１０００ｃを設定する。
【０１１７】
このような作業機械１０の動作では、これらの分散処理グループ１０００ａ〜１０００ｃを連携して動作させる必要がある。
【０１１８】
ここで、分散処理グループ１０００ａ〜１０００ｃのそれぞれに、連携用の通信を実行するための制御装置２１ｇ〜２１ｉを設ける。
【０１１９】
制御装置２１ｇ〜２１ｉは、他の実施例と同様に、分散処理をするとともに、各分散処理グループ１０００ａ〜１０００ｃの外部に接続される通信路２２を介して、
演算モデル４００の全体に相当する演算結果を転送し、メイン処理装置２３および制御装置２１ｇ〜２１ｉで情報を共有する。
【０１２０】
このようにすることで、分散制御システム２０は、部分的な分散処理のシステムを複数備えることができ、それを連携して動作できる。
【０１２１】
本実施例の分散制御システム２０によって得られるその他の効果については、実施例１のものと同様であるため、その重複説明は省略する。
【符号の説明】
【０１２２】
１０：作業機械
２０：分散制御システム
２１、２１ａ〜２１ｉ：制御装置
２２：通信路
２３：メイン処理装置
２４：表示入力装置
２００、２００ａ〜２００ｊ：通信ポート
２０１：通信制御部
２０２：演算部
２０３：演算結果格納部
２１０：受信ポート選択部
２１１：送信ポート選択部
２１２：中継ポート選択部
２１３：受信データ格納部
２１４：送信データ格納部
２１５：送信データ選択部
４００、４００ａ〜４００ｄ：演算モデル
４０１：入力層
４０２：出力層
４０３：中間層
４１０：演算器
４１１：重み係数格納部
４１２：データ選択部
４２０：データ格納部
４２１：データ集約部
７３０：タイミングチャート
８００：設定画面
８０１：演算モデル分散方法表示設定部
８０２：分散制御システム表示設定部
１０００、１０００ａ〜１０００ｃ：分散処理グループ
【図１】
2020150393.tif 000003
【図２】
2020150393.tif 000004
【図３】
2020150393.tif 000005
【図４】
2020150393.tif 000006
【図５（ａ）】
2020150393.tif 000007
【図５（ｂ）】
2020150393.tif 000008
【図６】
2020150393.tif 000009
【図７】
2020150393.tif 000010
【図８】
2020150393.tif 000011
【図９（ａ）】
2020150393.tif 000012
【図９（ｂ）】
2020150393.tif 000013
【図１０】
2020150393.tif 000014
【図１１】
2020150393.tif 000015
【図１２】
2020150393.tif 000016