以下、実施形態の演算装置、演算方法及び演算プログラムを、図面を参照して説明する。
(第1の実施形態)
図1は、演算装置20を備える制御システム1aの構成の例を示す図である。制御システム1aは、入力装置10と、演算装置20と、通信回線30と、制御装置40と、出力装置50とを備える。入力装置10は複数でもよい。制御装置40は複数でもよい。以下、制御装置40−1〜40−N(Nは1以上の整数)に共通する事項については、符号の一部を省略して「制御装置40」と表記する。出力装置50は複数でもよい。
入力装置10は、情報処理装置である。入力装置10は、制御信号を生成するための元となる信号(以下、「元信号」という。)を、演算装置20に送信する。入力装置10は、スイッチ又はボタンを備えている場合、スイッチ又はボタンに対する操作に応じたデジタルの元信号を、ローカルネットワーク100を介して、演算装置20に送信する。入力装置10は、センサでもよい。入力装置10は、出力装置50に関する温度又は圧力に応じたアナログの元信号を、ローカルネットワーク100を介して、演算装置20に送信する。
第1の実施形態では、入力装置10は、一例として、第1の元信号と第2の元信号とを演算装置20に送信する。第1の元信号は、例えば、スイッチ又はボタンに対する操作に応じたデジタル信号である。第2の元信号は、例えば、出力装置50に関する温度に応じたアナログ信号である。ローカルネットワーク100は、フィールドバス、有線通信回線又は無線通信回線である。ローカルネットワーク100は、フィールドバスである場合、例えば、プロフィバス(Profibus)、MODBUS(登録商標)又はTC−NET(登録商標)である。ローカルネットワーク100は、有線通信回線である場合、例えば、イーサネット(登録商標)である。ローカルネットワーク100は、無線通信回線である場合、例えば、無線LANや920MHz帯等の無線通信回線である。
演算装置20は、通信装置(通信モジュール)である。演算装置20は、ローカルネットワーク100を介して、第1の元信号と第2の元信号とを入力装置10から取得する。演算装置20は、通信回線30を介して、第2の元信号を制御装置40に送信する。演算装置20は、第1の元信号に基づいて第1制御信号を生成する。演算装置20は、第1制御信号を出力装置50に送信する。
演算装置20は、自装置と制御装置40との間の往復又は片道の通信時間を測定する。演算装置20は、制御装置40が第2制御信号を生成するための処理時間と通信時間とに基づいて、通信回線30に伝送遅延が発生しているか否かを判定する。
演算装置20は、通信回線30を介して、第2の元信号に基づく第2制御信号を制御装置40から取得する。演算装置20は、通信回線30に伝送遅延が発生していない場合、制御装置40から取得した第2制御信号を出力装置50に送信する。演算装置20は、第2の元信号に基づいて第2制御信号を生成する。演算装置20は、通信回線30に伝送遅延が発生している場合、自装置が生成した第2制御信号を、一定時間内に出力装置50に送信する。
通信回線30は、広域ネットワークの通信回線である。通信回線30は、例えば、インターネット、専用回線、3G無線通信回線である。通信回線30の通信プロトコルは、例えば、HTTPS(Hypertext Transfer Protocol Secure)である。
制御装置40は、サーバ装置等の情報処理装置である。制御装置40は、クラウド技術に基づいて動作するクラウドサーバ装置でもよい。制御装置40は、第2の元信号に基づいて第2制御信号を生成する。制御装置40は、第2制御信号によって出力装置50を制御する。
制御装置40は、通信部41と、プログラム記憶部42と、制御部43とを備える。通信部41は、演算装置20と通信する。通信部41は、例えば、第2の元信号を演算装置20から取得する。通信部41は、プログラム記憶部42に記憶させるプログラムを演算装置20から取得してもよい。プログラム記憶部42は、制御部43が実行する制御プログラムを記憶する。
制御部43は、演算装置20と制御装置40との間の通信回線30の通信時間を測定する。例えば、制御部43は、演算装置20から取得した信号のタイムスタンプに基づいて、通信回線30の通信時間を測定する。例えば、制御部43は、通信回線30の通信時間の平均値を測定する。制御部43は、第2の元信号に基づいて第2制御信号を生成する。制御部43は、第2制御信号を制御装置40が生成するのに要する時間と通信時間との合計値(以下、「応答時間」という。)の測定値を、通信部41を介して演算装置20に送信する。通信時間は、信号が往復するのに要する時間でもよいし、信号が一方向に通信されるのに要する時間(片道の時間)でもよい。制御部43は、応答時間の平均(以下、「平均応答時間」という。)の測定値を、通信部41を介して演算装置20に送信してもよい。制御部43が第2制御信号を生成する処理の時間は、予め測定されていてもよい。
出力装置50は、制御対象の装置である。出力装置50は、サーボモータ等のアクチュエータである。出力装置50は、例えば、LED(Light Emitting Diode)表示器、警報装置でもよい。出力装置50は、ローカルネットワーク100を介して、第1制御信号及び第2制御信号を演算装置20から取得する。出力装置50は、第1制御信号及び第2制御信号に基づいて動作する。
演算装置20の構成を説明する。
演算装置20は、インタフェース201と、分配先記憶部202と、プログラム記憶部203と、時間記憶部204と、結果記憶部205と、分配部206と、生成部207と、比較部208と、通信部209と、集約部210と、測定部211とを備える。
インタフェース201と、分配部206と、生成部207と、比較部208と、通信部209と、集約部210と、測定部211との一部または全部は、例えば、CPU(Central Processing Unit)等のプロセッサが、記憶部に記憶されたプログラムを実行することにより機能するソフトウェア機能部である。また、これらの機能部のうち一部または全部は、LSI(Large Scale Integration)やASIC(Application Specific Integrated Circuit)等のハードウェア機能部であってもよい。
分配先記憶部202と、プログラム記憶部203と、時間記憶部204と、結果記憶部205との一部または全部は、例えば、磁気ハードディスク装置や半導体記憶装置等の不揮発性の記憶媒体(非一時的な記録媒体)を有する記憶装置を用いて構成される。各記憶部は、例えば、RAM(Random Access Memory)やレジスタなどの揮発性の記憶媒体を有していてもよい。
インタフェース201は、第1の元信号を入力装置10から取得する。インタフェース201は、取得した第1の元信号を通信部209に送信する。インタフェース201は、第2の元信号を入力装置10から取得する。インタフェース201は、取得した第2の元信号を通信部209に送信する。
インタフェース201は、生成部207が生成した第1制御信号を、出力装置50に送信する。インタフェース201は、制御装置40が生成した第2制御信号を、通信部209から取得する。
インタフェース201は、制御装置40が生成した第2制御信号を、出力装置50に送信する。インタフェース201は、生成部207が生成した第2制御信号を分配部206が選択した場合、生成部207が生成した第2制御信号を出力装置50に送信してもよい。例えば、インタフェース201は、制御装置40が生成した第2制御信号と、生成部207が生成した第2制御信号とのうち、より早い時刻に送信可能である第2制御信号を出力装置50に送信する。すなわち、インタフェース201は、制御装置40が生成した第2制御信号と、生成部207が生成した第2制御信号とのうち、生成のための演算が早く終了した第2制御信号を優先する。
インタフェース201は、異なるタイミングで取得された元信号が同じ内容を示す信号である場合、元信号に基づいて予め生成された制御信号を送信する。例えば、インタフェース201は、今回取得した第1の元信号と前回取得した第1の元信号とが同じ内容を示す信号である場合、前回取得した第1の元信号に基づいて生成された第1制御信号を出力装置50に送信する。インタフェース201は、今回取得した第2の元信号と前回取得した第2の元信号とが同じ内容を示す信号である場合、前回取得した第2の元信号に基づいて生成された第2制御信号を出力装置50に送信する。前回取得した元信号に基づいて生成された制御信号は、結果記憶部205に記憶されている。以下、第1制御信号及び第2制御信号等の複数の制御信号に共通する事項については、「制御信号」と表記する。インタフェース201は、生成部207を介して、結果記憶部205から制御信号を取得してもよい。
分配先記憶部202は、元信号の分配先を表す情報(以下、「分配先情報」という。)を記憶する。第1の実施形態では、分配先記憶部202に記憶される分配先情報において、第1の元信号と演算装置20とが対応付けられている。すなわち、第1の元信号の分配先は、演算装置20である。これによって、演算装置20は、第1の元信号に基づいて第1制御信号を生成することができる。第1の実施形態では、分配先記憶部202に記憶される分配先情報において、第2の元信号と制御装置40とが対応付けられている。すなわち、第2の元信号の分配先は、制御装置40である。これによって、演算装置20は、第2の元信号に基づいて第2制御信号を生成することができる。制御装置40は、第2の元信号に基づいて第2制御信号を生成することができる。
プログラム記憶部203は、生成部207が演算を実行するためのプログラムを記憶する。プログラム記憶部203が記憶しているプログラムは、制御装置40から取得したプログラムでもよい。プログラム記憶部203が記憶しているプログラムは、制御装置40のプログラム記憶部42が記憶しているプログラムと同じでもよい。プログラム記憶部203が記憶しているプログラムは、制御装置40のプログラム記憶部42が記憶しているプログラムの一部でもよい。
時間記憶部204は、制御装置40がプログラムを実行した場合の処理時間を表す情報を記憶する。制御装置40がプログラムを実行した場合の処理時間は、例えば、制御装置40が第2制御信号を生成するのに要する時間である。時間記憶部204は、演算装置20がプログラムを実行した場合の処理時間を表す情報を記憶してもよい。演算装置20がプログラムを実行した場合の処理時間は、例えば、演算装置20が第1制御信号又は第2制御信号を生成するのに要する時間である。時間記憶部204は、制御装置40から取得した応答時間の測定値を記憶する。時間記憶部204は、制御装置40から取得した平均応答時間の測定値を記憶する。平均応答時間の測定値は、閾値として用いられてもよい。閾値は、予め定められた値でもよい。以下、閾値は、平均応答時間の測定値である。
結果記憶部205は、前回取得した第1の元信号と、前回取得した第1の元信号に基づいて生成された第1制御信号(生成結果)とを対応付けて記憶する。結果記憶部205は、前回取得した第2の元信号の情報と、前回取得した第2の元信号に基づいて生成された第2制御信号(生成結果)とを対応付けて記憶する。
分配部206は、分配先情報に基づいて、第1の元信号の分配先を演算装置20に決定する。これによって、分配部206は、第1の元信号を制御装置40に送信しない、と判定することができる。分配部206は、分配先情報に基づいて、第2の元信号の分配先を制御装置40に決定する。
分配部206は、前回の応答時間の測定値に基づいて、制御装置40から取得した第2制御信号又は生成部207が生成した第2制御信号を選択する。すなわち、分配部206は、通信回線30に伝送遅延が発生しているか否かに基づいて、制御装置40から取得した第2制御信号又は生成部207が生成した第2制御信号を選択する。
例えば、分配部206は、閾値が前回の応答時間の測定値以上である場合、制御装置40から取得した第2制御信号を選択する。すなわち、分配部206は、通信回線30に伝送遅延が発生していない場合、制御装置40から取得した第2制御信号を選択する。
例えば、分配部206は、閾値が前回の応答時間の測定値未満である場合、生成部207が生成した第2制御信号を選択する。すなわち、分配部206は、通信回線30に伝送遅延が発生している場合、生成部207が生成した第2制御信号を選択する。
生成部207は、目標の送信時刻に間に合うように、第1の元信号に基づいて第1制御信号を生成する。例えば、生成部207は、制御信号を生成するのに要する時間を考慮することによって、目標の送信時刻に間に合うように第1制御信号を生成する。生成部207が生成した第2制御信号を分配部206が選択した場合、目標の送信時刻に間に合うように、第2の元信号に基づいて第2制御信号を生成する。
生成部207は、今回取得された第1の元信号と前回取得された第1の元信号とが同じ内容を示す信号である場合、前回取得された第1の元信号に基づいて生成された第1制御信号を、結果記憶部205から取得する。生成部207は、今回取得された第2の元信号と前回取得された第2の元信号とが同じ内容を示す信号である場合、前回取得された第2の元信号に基づいて生成された第2制御信号を、結果記憶部205から取得する。
比較部208は、異なるタイミングでインタフェース部201に取得された元信号を比較する。例えば、比較部208は、今回の第1の元信号と前回の第1の元信号とを比較する。比較部208は、今回取得された第1の元信号と前回取得された第1の元信号とが同じ内容を示す信号であるか否かを判定する。比較部208は、今回の第2の元信号と前回の第2の元信号とを比較する。比較部208は、今回取得された第2の元信号と前回取得された第2の元信号とが同じ内容を示す信号であるか否かを判定する。
通信部209は、通信回線30を介して、制御装置40と通信する。例えば、通信部209は、第2制御信号を制御装置40から取得する。例えば、通信部209は、応答時間の測定値を制御装置40から取得する。例えば、通信部209は、平均応答時間の測定値を制御装置40から取得する。
集約部210は、複数の制御装置40から取得した第2制御信号を集約する。すなわち、集約部210は、複数の第2制御信号をまとめる。なお、集約部210は、制御装置40が1台である場合、制御装置40から取得した第2制御信号を集約しなくてもよい。
測定部211は、制御装置40の代わりに、応答時間を測定してもよい。測定部211は、例えば、通信部209から制御装置40に第2の元信号を送信した時刻と第2制御信号を通信部209が取得した時刻との差と、制御装置40がプログラムを実行した場合の処理時間とに基づいて、応答時間の測定値を算出してもよい。測定部211は、算出した応答時間の測定値を、時間記憶部204に記憶させてもよい。測定部211は、算出した平均応答時間の測定値を、時間記憶部204に記憶させてもよい。
図2は、制御システム1aの動作の例を示すシーケンス図である。入力装置10は、第1の元信号及び第2の元信号を演算装置20に送信する(ステップS101)。演算装置20は、第1の元信号及び第2の元信号を取得する(ステップS102)。演算装置20は、前回の応答時間の測定値と閾値とを比較する。演算装置20は、分配先情報に基づいて第2の元信号の分配先を制御装置40に決定する(ステップS103)。演算装置20は、第2の元信号を制御装置40に送信する(ステップS104)。
制御装置40は、第2の元信号を取得する(ステップS105)。制御装置40は、第2の元信号に基づいて第2制御信号を生成する(ステップS106)。制御装置40は、生成した第2制御信号を演算装置20に送信する(ステップS107)。
演算装置20は、第1の元信号に基づいて第1制御信号を生成する(ステップS108)。演算装置20は、第1制御信号を出力装置50に送信する(ステップS109)。出力装置50は、第1制御信号を演算装置20から取得する(ステップS110)。
演算装置20は、第2の元信号に基づいて第2制御信号を生成する(ステップS111)。演算装置20は、閾値が前回の応答時間の測定値未満である場合(通信回線30に伝送遅延が発生している場合)、制御装置40から送信される第2制御信号を一定時間待つ。演算装置20は、一定時間内に第2制御信号の取得が可能である場合、第2制御信号を制御装置40から取得する。
演算装置20は、閾値が前回の応答時間の測定値以上である場合(通信回線30に伝送遅延が発生していない場合)、制御装置40から送信される第2制御信号を一定時間未満待つ。演算装置20は、一定時間未満以内に第2制御信号の取得が可能である場合、第2制御信号を制御装置40から取得する(ステップS112)。
演算装置20は、複数の制御装置40から取得した複数の第2制御信号を集約する(ステップS113)。演算装置20は、自装置が第2制御信号を生成する前に第2制御信号を制御装置40から取得した場合、取得した第2制御信号を出力装置50に送信する。演算装置20は、自装置が第2制御信号を生成する前に第2制御信号を制御装置40から取得していない場合、自装置が生成した第2制御信号を出力装置50に送信する(ステップS113)。出力装置50は、第2制御信号を演算装置20から取得する(ステップS110)。
図3は、演算装置20の動作の例を示すフローチャートである。ステップS201は、図2に示すステップS102に対応する。ステップS210は、図2に示すステップS109に対応する。ステップS212は、図2に示すステップS114に対応する。
インタフェース201は、第1の元信号及び第2の元信号を取得する(ステップS201)。分配部206は、閾値が前回の応答時間の測定値以上であるか否かを判定する(ステップS202)。
閾値が前回の応答時間の測定値以上である場合(ステップS202:YES)、分配部206は、第1の元信号及び第2の元信号を制御装置40に送信するか否かを、分配先情報に基づいて元信号ごとに判定する(ステップS203)。
第1の元信号を制御装置40に送信しないと分配部206が判定した場合(ステップS203:NO)、生成部207は、目標の送信時刻に間に合うように、第1の元信号に基づいて第1制御信号を生成する(ステップS204)。第2の元信号を制御装置40に送信すると分配部206が判定した場合(ステップS203:YES)、通信部209は、第2の元信号を制御装置40に送信する(ステップS205)。
閾値が前回の応答時間の測定値未満である場合(ステップS202:NO)、分配部206は、第1の元信号及び第2の元信号を制御装置40に送信するか否かを、分配先情報に基づいて元信号ごとに判定する(ステップS206)。
第1の元信号を制御装置40に送信しないと分配部206が判定した場合(ステップS206:NO)、生成部207は、目標の送信時刻に間に合うように、第1の元信号に基づいて第1制御信号を生成する。生成部207は、目標の送信時刻に間に合うように、第2の元信号に基づいて第2制御信号を生成する(ステップS207)。第2の元信号を制御装置40に送信すると分配部206が判定した場合(ステップS206:YES)、通信部209は、第2の元信号を制御装置40に送信する(ステップS208)。
分配部206は、取得した全ての第1の元信号について第1制御信号を生成したか否かを判定する(ステップS209)。演算装置20が第1制御信号の生成処理を施していない第1の元信号が残っている場合(ステップS209:NO)、分配部206は、ステップS202における判定結果に応じて、ステップS204又はステップS207に処理を戻す。
取得した全ての第1の元信号について第1制御信号を生成した場合(ステップS209:YES)、インタフェース201は、第1制御信号を出力装置50に送信する(ステップS210)。集約部210は、複数の制御装置40から取得した複数の第2制御信号を集約する(ステップS211)。
インタフェース201は、生成部207が第2制御信号を生成する前に第2制御信号を制御装置40から取得した場合、取得した第2制御信号を出力装置50に送信する。インタフェース201は、生成部207が第2制御信号を生成する前に第2制御信号を制御装置40から取得していない場合、生成部207が生成した第2制御信号を出力装置50に送信する(ステップS212)。演算装置20の各部は、ステップS201に処理を戻す。
図4は、制御装置40の動作の例を示すフローチャートである。ステップS301は、図2に示すステップS105に対応する。ステップS302は、図2に示すステップS106に対応する。ステップS303は、図2に示すステップS107に対応する。
通信部41は、第2の元信号を演算装置20から取得する(ステップS301)。制御部43は、プログラム記憶部42に記憶されているプログラムと第2の元信号とに基づいて、第2制御信号を生成する(ステップS302)。通信部41は、第2制御信号を演算装置20に送信する(ステップS303)。
図5は、演算装置20の動作の例を示すフローチャートである。ステップS401は、図2に示すステップS102に対応する。ステップS408は、図2に示すステップS109に対応する。ステップS410は、図2に示すステップS114に対応する。
インタフェース201は、第1の元信号及び第2の元信号を取得する(ステップS401)。比較部208は、今回取得された第1の元信号と前回取得された第1の元信号とが同じ内容を示す信号であるか否かを判定する。比較部208は、今回取得された第2の元信号と前回取得された第2の元信号とが同じ内容を示す信号であるか否かを判定する(ステップS402)。
今回取得された第1の元信号と前回取得された第1の元信号とが同じ内容を示す信号である場合(ステップS402:YES)、生成部207は、前回取得された第1の元信号に基づいて生成された第1制御信号を、結果記憶部205から取得する。すなわち、生成部207は、前回取得された第1の元信号に基づいて生成された第1制御信号を、今回取得された第1の元信号に基づいて生成された第1制御信号とする。
また、今回取得された第2の元信号と前回取得された第2の元信号とが同じ内容を示す信号である場合(ステップS402:YES)、生成部207は、前回取得された第2の元信号に基づいて生成された第2制御信号を、結果記憶部205から取得する。すなわち、生成部207は、前回取得された第2の元信号に基づいて生成された第2制御信号を、今回取得された第2の元信号に基づいて生成された第2制御信号とする(ステップS403)。生成部207は、ステップS410に処理を進める。
今回取得された第1の元信号と前回取得された第1の元信号とが異なる値を示す信号である場合(ステップS402:NO)、分配部206は、第1の元信号及び第2の元信号を制御装置40に送信するか否かを、分配先情報に基づいて元信号ごとに判定する(ステップS404)。
第1の元信号を制御装置40に送信しないと分配部206が判定した場合(ステップS404:NO)、生成部207は、目標の送信時刻に間に合うように、第1の元信号に基づいて第1制御信号を生成する(ステップS405)。第2の元信号を制御装置40に送信すると分配部206が判定した場合(ステップS404:YES)、通信部209は、第2の元信号を制御装置40に送信する(ステップS406)。
分配部206は、取得した全ての第1の元信号について第1制御信号を生成したか否かを判定する(ステップS407)。演算装置20が第1制御信号の生成処理を施していない第1の元信号が残っている場合(ステップS407:NO)、分配部206は、ステップS405に処理を戻す。
取得した全ての第1の元信号について第1制御信号を生成した場合(ステップS407:YES)、インタフェース201は、第1制御信号を出力装置50に送信する(ステップS408)。集約部210は、複数の制御装置40から取得した複数の第2制御信号を集約する(ステップS409)。
インタフェース201は、ステップS403において生成部207が第1制御信号又は第2制御信号を結果記憶部205から取得した場合、結果記憶部205から取得された第1制御信号又は第2制御信号を、出力装置50に送信する。インタフェース201は、ステップS403において生成部207が第2制御信号を結果記憶部205から取得していない場合、制御装置40から取得した第2制御信号を、出力装置50に送信する。インタフェース201は、ステップS403において生成部207が第1制御信号を結果記憶部205から取得していない場合、生成部207が生成した第1制御信号を、出力装置50に送信する(ステップS410)。演算装置20の各部は、ステップS401に処理を戻す。
図6は、演算装置20の動作の例を示すフローチャートである。ステップS501は、図2に示すステップS102に対応する。ステップS507は、図2に示すステップS109に対応する。ステップS509は、図2に示すステップS114に対応する。
インタフェース201は、第1の元信号及び第2の元信号を取得する(ステップS501)。分配部206は、元信号と制御プログラムとの対応付けに基づいて、第1の元信号及び第2の元信号を制御プログラムごとに分類する。分配部206は、第1の元信号及び第2の元信号に、分類を示す番号を付与してもよい(ステップS502)。分配部206は、第1の元信号及び第2の元信号を制御装置40に送信するか否かを、分配先情報に基づいて元信号ごとに判定する(ステップS503)。
第1の元信号を制御装置40に送信しないと分配部206が判定した場合(ステップS503:NO)、生成部207は、分類された第1の元信号に基づいて、目標の送信時刻に間に合うように第1制御信号を生成する(ステップS504)。第2の元信号を制御装置40に送信すると分配部206が判定した場合(ステップS503:YES)、通信部209は、分類された第2の元信号を制御装置40に送信する(ステップS505)。
分配部206は、取得した全ての第1の元信号について第1制御信号を生成したか否かを判定する(ステップS506)。演算装置20が第1制御信号の生成処理を施していない第1の元信号が残っている場合(ステップS506:NO)、分配部206は、ステップS504に処理を戻す。
取得した全ての第1の元信号について第1制御信号を生成した場合(ステップS506:YES)、インタフェース201は、第1制御信号を出力装置50に送信する(ステップS507)。集約部210は、複数の制御装置40から取得した複数の第2制御信号を集約する(ステップS508)。インタフェース201は、取得した第2制御信号を、出力装置50に送信する(ステップS509)。演算装置20の各部は、ステップS501に処理を戻す。
以上のように、第1の実施形態の演算装置20は、測定部211と、通信部209と、生成部207と、インタフェース201とを持つ。測定部211は、演算装置20と制御装置40との間の通信時間を測定する。通信部209(送信部)は、制御信号を生成するための元となる信号である元信号を制御装置に送信する。通信部209(取得部)は、制御装置40が第2の元信号に基づいて生成した第2制御信号を制御装置40から取得する。生成部207は、制御装置40が第2制御信号を生成するのに要する時間と通信時間との合計値(応答時間)に応じて第2制御信号を第2の元信号に基づいて生成する。インタフェース201は、制御装置40から取得した第2制御信号と生成部207が生成した第2制御信号とのうち、より早い時刻に送信可能である第2制御信号を送信する。
これによって、第1の実施形態の演算装置20は、通信回線30に伝送遅延が発生した場合でも、制御対象の出力装置50を一定時間内に制御することができる。
第1の実施形態の演算装置20は、制御の一部を実行するので、制御システム1aの初期の設備コストを抑えることができる。第1の実施形態の制御システム1aは、クラウドサーバ装置等である制御装置40と演算装置20とが連携することで、通信回線30に発生した伝搬遅延の影響を低減することができる。
第1の実施形態の制御システム1aは、物理的に離れた複数の制御装置40にプログラムを記憶させることができる。第1の実施形態の制御システム1aは、制御プログラムが失われることがないため、制御プログラムの再構築時間及び制御装置40の交換時間を短くすることができる。
(第2の実施形態)
第2の実施形態では、制御システム1bが集約演算装置60を備える点が、第1の実施形態と相違する。第2の実施形態では、第1の実施形態との相違点についてのみ説明する。
図7は、演算装置20を備える制御システム1bの構成の例を示す図である。制御システム1bは、入力装置10と、演算装置20と、通信回線30と、制御装置40と、出力装置50と、集約演算装置60とを備える。
第2の実施形態では、入力装置10は、一例として、第1の元信号と第2の元信号と第3の元信号とを演算装置20に送信する。第1の元信号は、例えば、スイッチ又はボタンに対する操作に応じたデジタル信号である。第2の元信号は、例えば、出力装置50に関する温度に応じたアナログ信号である。第3の元信号は、例えば、出力装置50に関する圧力に応じたアナログ信号である。
比較部208は、今回取得された第1の元信号と前回取得された第1の元信号とが同じ内容を示す信号であるか否かを判定してもよい。比較部208は、今回取得された第2の元信号と前回取得された第2の元信号とが同じ内容を示す信号であるか否かを判定してもよい。比較部208は、今回取得された第3の元信号と前回取得された第3の元信号とが同じ内容を示す信号であるか否かを判定してもよい。
分配部206は、元信号と制御プログラムとの対応付けに基づいて、第1の元信号と第2の元信号と第3の元信号とを制御プログラムごとに分類してもよい。分配部206は、第1の元信号と第2の元信号と第3の元信号とに、分類を示す番号を付与してもよい。
集約演算装置60は、通信を中継する中継装置である。集約演算装置60は、ローカルネットワーク110を介して、第1の元信号と第2の元信号と第3の元信号とを演算装置20から取得する。集約演算装置60は、通信回線30を介して、第2の元信号と第3の元信号とを制御装置40に送信する。集約演算装置60は、第3の元信号に基づいて第3制御信号を生成する。集約演算装置60は、第3御信号を演算装置20に送信する。
集約演算装置60の構成を説明する。
集約演算装置60は、第2制御信号を制御装置40から取得する。集約演算装置60は、第2制御信号を制御装置40ごとに取得し、複数の第2制御信号を集約する。集約演算装置60は、集約した第2制御信号を演算装置20に送信する。集約演算装置60は、集約した第2制御信号を、複数の演算装置20に送信してもよい。
集約演算装置60は、通信部601と、分配先記憶部602と、プログラム記憶部603と、時間記憶部604と、分配部605と、生成部606と、集約部607と、測定部608とを備える。
通信部601と、分配部605と、生成部606と、集約部607と、測定部608との一部または全部は、例えば、CPU等のプロセッサが、記憶部に記憶されたプログラムを実行することにより機能するソフトウェア機能部である。また、これらの機能部のうち一部または全部は、LSIやASIC等のハードウェア機能部であってもよい。
分配先記憶部602と、プログラム記憶部603と、時間記憶部604との一部または全部は、例えば、磁気ハードディスク装置や半導体記憶装置等の不揮発性の記憶媒体(非一時的な記録媒体)を有する記憶装置を用いて構成される。各記憶部は、例えば、RAMやレジスタなどの揮発性の記憶媒体を有していてもよい。
通信部601は、第2の元信号を演算装置20から取得する。通信部601は、第3の元信号を入力装置10から取得する。通信部601は、取得した第2の元信号を制御装置40に送信する。通信部601は、制御装置40が第2の元信号に基づいて生成した第2制御信号を、通信回線30を介して制御装置40から取得する。通信部601は、制御装置40が第2の元信号に基づいて生成した第2制御信号を、ローカルネットワーク110を介して、演算装置20に送信する。
分配先記憶部602は、分配先情報を記憶する。第2の実施形態では、分配先記憶部602に記憶される分配先情報において、第3の元信号と集約演算装置60とが対応付けられている。すなわち、第3の元信号の分配先は、集約演算装置60である。これによって、集約演算装置60は、第3の元信号に基づいて第3制御信号を生成することができる。第2の実施形態では、分配先記憶部602に記憶される分配先情報において、第2の元信号と制御装置40とが対応付けられている。すなわち、第2の元信号の分配先は、制御装置40である。これによって、集約演算装置60は、第2の元信号に基づいて第2制御信号を生成することができる。制御装置40は、第2の元信号に基づいて第2制御信号を生成することができる。
プログラム記憶部603は、生成部606が演算を実行するためのプログラムを記憶する。プログラム記憶部603が記憶しているプログラムは、制御装置40から取得したプログラムでもよい。プログラム記憶部603が記憶しているプログラムは、制御装置40のプログラム記憶部42が記憶しているプログラムと同じでもよい。プログラム記憶部203が記憶しているプログラムは、制御装置40のプログラム記憶部42が記憶しているプログラムの一部でもよい。
時間記憶部604は、制御装置40がプログラムを実行した場合の処理時間を表す情報を記憶する。制御装置40がプログラムを実行した場合の処理時間は、例えば、制御装置40が第2制御信号を生成するのに要する時間である。時間記憶部604は、集約演算装置60がプログラムを実行した場合の処理時間を表す情報を記憶してもよい。集約演算装置60がプログラムを実行した場合の処理時間は、例えば、集約演算装置60が第2制御信号又は第3制御信号を生成するのに要する時間である。時間記憶部604は、制御装置40から取得した応答時間の測定値を記憶する。時間記憶部604は、制御装置40から取得した平均応答時間の測定値を記憶する。
分配部605は、分配先情報に基づいて、第3の元信号の分配先を集約演算装置60に決定する。これによって、分配部605は、第3の元信号を制御装置40に送信しない、と判定することができる。分配部605は、分配先情報に基づいて、第2の元信号の分配先を制御装置40に決定する。
分配部605は、前回の応答時間の測定値に基づいて、制御装置40から取得した第2制御信号又は生成部606が生成した第2制御信号を選択する。すなわち、分配部605は、通信回線30に伝送遅延が発生しているか否かに基づいて、制御装置40から取得した第2制御信号又は生成部606が生成した第2制御信号を選択する。
例えば、分配部605は、閾値が前回の応答時間の測定値以上である場合、制御装置40から取得した第2制御信号を選択する。すなわち、分配部605は、通信回線30に伝送遅延が発生していない場合、制御装置40から取得した第2制御信号を選択する。
例えば、分配部605は、閾値が前回の応答時間の測定値未満である場合、生成部606が生成した第2制御信号を選択する。すなわち、分配部206は、通信回線30に伝送遅延が発生している場合、生成部606が生成した第2制御信号を選択する。
生成部606は、目標の送信時刻に間に合うように、第3の元信号に基づいて第3制御信号を生成する。生成部606が生成した第3制御信号を分配部605が選択した場合、目標の送信時刻に間に合うように、第3の元信号に基づいて第3制御信号を生成する。
集約部607は、複数の制御装置40から取得した第2制御信号を集約する。すなわち、集約部607は、複数の第2制御信号をまとめる。なお、集約部607は、制御装置40が1台である場合、制御装置40から取得した第2制御信号を集約しなくてもよい。
測定部608は、制御装置40の代わりに、応答時間を測定してもよい。測定部608は、例えば、通信部601から制御装置40に第2の元信号を送信した時刻と第2制御信号を通信部601が取得した時刻との差と、制御装置40がプログラムを実行した場合の処理時間とに基づいて、応答時間の測定値を算出してもよい。測定部608は、算出した応答時間の測定値を、時間記憶部604に記憶させてもよい。測定部608は、算出した平均応答時間の測定値を、時間記憶部604に記憶させてもよい。
図8は、制御システム1bの動作の例を示すシーケンス図である。入力装置10は、第1の元信号と第2の元信号と第3の元信号とを、演算装置20に送信する(ステップS601)。演算装置20は、第1の元信号と第2の元信号と第3の元信号とを取得する(ステップS602)。演算装置20は、前回の応答時間の測定値と閾値とを比較する。演算装置20は、分配先情報に基づいて第2の元信号の分配先を制御装置40に決定する。演算装置20は、分配先情報に基づいて第3の元信号の分配先を集約演算装置60に決定する(ステップS603)。演算装置20は、第2の元信号と第3の元信号とを集約演算装置60に送信する(ステップS604)。
集約演算装置60は、第2の元信号及び第3の元信号を取得する(ステップS605)。集約演算装置60は、前回の応答時間の測定値と閾値とを比較する。集約演算装置60は、分配先情報に基づいて第2の元信号の分配先を制御装置40に決定する(ステップS606)。集約演算装置60は、第2の元信号を制御装置40に送信する(ステップS607)。
制御装置40は、第2の元信号を取得する(ステップS608)。制御装置40は、第2の元信号に基づいて第2制御信号を生成する(ステップS609)。制御装置40は、生成した第2制御信号を演算装置20に送信する(ステップS610)。
演算装置20は、第1の元信号に基づいて第1制御信号を生成する(ステップS611)。演算装置20は、第1制御信号を出力装置50に送信する(ステップS612)。出力装置50は、第1制御信号を演算装置20から取得する(ステップS613)。演算装置20は、第2の元信号に基づいて第2制御信号を生成する(ステップS614)。
集約演算装置60は、第3の元信号に基づいて第3制御信号を生成する(ステップS615)。集約演算装置60は、第3制御信号を演算装置20に送信する(ステップS616)。演算装置20は、第3制御信号を取得する(ステップS617)。演算装置20は、第3制御信号を出力装置50に送信する(ステップS618)。出力装置50は、第3制御信号を演算装置20から取得する(ステップS619)。
集約演算装置60は、第2の元信号に基づいて第2制御信号を生成する(ステップS620)。集約演算装置60は、第2制御信号を取得する(ステップS621)。集約演算装置60は、第2制御信号を演算装置20に送信する(ステップS622)。演算装置20は、第2制御信号を取得する(ステップS623)。演算装置20は、第2制御信号を出力装置50に送信する(ステップS624)。出力装置50は、第2制御信号を演算装置20から取得する(ステップS625)。
図9は、演算装置20の動作の例を示すフローチャートである。ステップS701は、図8に示すステップS602に対応する。ステップS710は、図8に示すステップS612に対応する。ステップS712は、図8に示すステップS618に対応する。
インタフェース201は、第1の元信号と第2の元信号と第3の元信号とを取得する(ステップS701)。分配部206は、閾値が前回の応答時間の測定値以上であるか否かを判定する(ステップS702)。
閾値が前回の応答時間の測定値以上である場合(ステップS702:YES)、分配部206は、第1の元信号と第2の元信号と第3の元信号とを集約演算装置60に送信するか否かを、分配先情報に基づいて元信号ごとに判定する(ステップS703)。
第1の元信号を集約演算装置60に送信しないと分配部206が判定した場合(ステップS703:NO)、生成部207は、目標の送信時刻に間に合うように、第1の元信号に基づいて第1制御信号を生成する(ステップS704)。第2の元信号及び第3の元信号を集約演算装置60に送信すると分配部206が判定した場合(ステップS703:YES)、通信部209は、第2の元信号及び第3の元信号を集約演算装置60に送信する(ステップS705)。
閾値が前回の応答時間の測定値未満である場合(ステップS702:NO)、分配部206は、第1の元信号と第2の元信号と第3の元信号とを集約演算装置60に送信するか否かを、分配先情報に基づいて元信号ごとに判定する(ステップS706)。
第1の元信号を集約演算装置60に送信しないと分配部206が判定した場合(ステップS706:NO)、生成部207は、目標の送信時刻に間に合うように、第1の元信号に基づいて第1制御信号を生成する。生成部207は、目標の送信時刻に間に合うように、第3の元信号に基づいて第3制御信号を生成する(ステップS707)。第2の元信号及び第3の元信号を集約演算装置60に送信すると分配部206が判定した場合(ステップS706:YES)、通信部209は、第2の元信号及び第3の元信号を集約演算装置60に送信する(ステップS708)。
分配部206は、取得した全ての第1の元信号について第1制御信号を生成し、かつ、取得した全ての第3の元信号について第3制御信号を生成したか否かを判定する(ステップS709)。演算装置20が生成処理を施していない第1の元信号又は第3の元信号が残っている場合(ステップS709:NO)、分配部206は、ステップS702における判定結果に応じて、ステップS704又はステップS707に処理を戻す。
取得した全ての第1の元信号について第1制御信号を生成し、かつ、取得した全ての第3の元信号について第3制御信号を生成した場合(ステップS709:YES)、インタフェース201は、第1制御信号を出力装置50に送信する(ステップS710)。集約部210は、集約演算装置60から取得した複数の第3制御信号を集約してもよい(ステップS711)。
インタフェース201は、生成部207が第3制御信号を生成する前に第3制御信号を集約演算装置60から取得した場合、取得した第3制御信号を出力装置50に送信する。インタフェース201は、生成部207が第3制御信号を生成する前に第3制御信号を集約演算装置60から取得していない場合、生成部207が生成した第3制御信号を出力装置50に送信する(ステップS712)。演算装置20の各部は、ステップS701に処理を戻す。
図10は、集約演算装置60の動作の例を示すフローチャートである。ステップS801は、図8に示すステップS605に対応する。ステップS810は、図8に示すステップS616に対応する。ステップS812は、図8に示すステップS622に対応する。
インタフェース201は、第2の元信号及び第3の元信号を取得する(ステップS801)。分配部605は、閾値が前回の応答時間の測定値以上であるか否かを判定する(ステップS702)。
閾値が前回の応答時間の測定値以上である場合(ステップS802:YES)、分配部605は、第2の元信号及び第3の元信号を集約演算装置60に送信するか否かを、分配先情報に基づいて元信号ごとに判定する(ステップS803)。
第3の元信号を集約演算装置60に送信しないと分配部605が判定した場合(ステップS803:NO)、生成部606は、目標の送信時刻に間に合うように、第3の元信号に基づいて第3制御信号を生成する(ステップS804)。第2の元信号を集約演算装置60に送信すると分配部605が判定した場合(ステップS803:YES)、通信部209は、第2の元信号を集約演算装置60に送信する(ステップS805)。
閾値が前回の応答時間の測定値未満である場合(ステップS802:NO)、分配部605は、第2の元信号及び第3の元信号を集約演算装置60に送信するか否かを、分配先情報に基づいて元信号ごとに判定する(ステップS806)。
第3の元信号を集約演算装置60に送信しないと分配部605が判定した場合(ステップS806:NO)、生成部606は、目標の送信時刻に間に合うように、第2の元信号に基づいて第2制御信号を生成する。生成部606は、目標の送信時刻に間に合うように、第3の元信号に基づいて第3制御信号を生成する(ステップS807)。第2の元信号を集約演算装置60に送信すると分配部605が判定した場合(ステップS806:YES)、通信部209は、第2の元信号を集約演算装置60に送信する(ステップS808)。
分配部605は、取得した全ての第2の元信号について第2制御信号を生成し、かつ、取得した全ての第3の元信号について第3制御信号を生成したか否かを判定する(ステップS809)。演算装置20が生成処理を施していない第2の元信号又は第3の元信号が残っている場合(ステップS809:NO)、分配部605は、ステップS802における判定結果に応じて、ステップS804又はステップS807に処理を戻す。
取得した全ての第2の元信号について第2制御信号を生成し、かつ、取得した全ての第3の元信号について第3制御信号を生成した場合(ステップS809:YES)、通信部601は、第3制御信号を出力装置50に送信する(ステップS810)。集約部607は、複数の制御装置40から取得した複数の第2制御信号を集約する(ステップS811)。
通信部601は、生成部606が第2制御信号を生成する前に第2制御信号を制御装置40から取得した場合、取得した第2制御信号を出力装置50に送信する。通信部601は、生成部606が第2制御信号を生成する前に第2制御信号を制御装置40から取得していない場合、生成部606が生成した第2制御信号を出力装置50に送信する(ステップS812)。集約演算装置60の各部は、ステップS801に処理を戻す。
図11は、制御装置40の動作の例を示すフローチャートである。ステップS901は、図8に示すステップS608に対応する。ステップS902は、図8に示すステップS609に対応する。ステップS903は、図8に示すステップS610に対応する。
通信部41は、第2の元信号を集約演算装置60から取得する(ステップS901)。制御部43は、プログラム記憶部42に記憶されているプログラムと第2の元信号とに基づいて、第2制御信号を生成する(ステップS902)。通信部41は、第2制御信号を集約演算装置60に送信する(ステップS903)。
以上のように、第2の実施形態の通信部209は、通信を中継する中継装置である集約演算装置60を介して、複数の制御装置60に元信号を送信する。これによって、第2の実施形態の演算装置20は、演算装置20は、通信回線30に伝送遅延が発生した場合でも、制御対象の出力装置50を一定時間内に制御することができる。
(第3の実施形態)
第3の実施形態では、制御システム1cが端末70を備える点が、第1の実施形態と相違する。第3の実施形態では、第1の実施形態との相違点についてのみ説明する。
図12は、演算装置20を備える制御システム1cの構成の例を示す図である。制御システム1cは、入力装置10と、演算装置20と、通信回線30と、制御装置40と、出力装置50と、端末70とを備える。端末70は複数でもよい。
端末70は、パーソナルコンピュータ装置やタブレット端末等の情報処理装置である。端末70は、表示部71と、操作部72とを備える。表示部71は、表示装置である。表示部71は、プログラムを実行した装置を識別するための情報を表示する。例えば、表示部71は、プログラム記憶部203に記憶されているプログラムを演算装置20−1が実行した場合、演算装置20−1に割り当てられた識別番号を表示する。操作部72は、キーボードやマウス等のインタフェースである。操作部72は、表示部71に表示する画像を切り替える操作を受け付ける。操作部72は、表示部71に表示する画像を切り替える操作を受け付ける。
演算装置20の通信部209は、生成部207がプログラムを実行した場合、自装置に割り当てられた識別情報を、端末70に送信する。端末70の表示部71は、演算装置20から取得した識別番号を表示する。すなわち、通信部209は、生成部207が制御信号を元信号に基づいて生成した場合、自装置を示す情報を表示部71に表示させる。
以上のように、第3の実施形態の通信部209は、プログラムを実行した演算装置20を示す情報を、端末70に送信する。これによって、第3の実施形態の端末70は、複数の演算装置20のうちプログラムを実行した演算装置20を、ユーザに把握させることができる。
(第4の実施形態)
第4の実施形態では、制御システム1dが集約演算装置60を備える点が、第3の実施形態と相違する。第4の実施形態では、第3の実施形態との相違点についてのみ説明する。
図13は、演算装置20を備える制御システム1dの構成の例を示す図である。制御システム1cは、入力装置10と、演算装置20と、通信回線30と、制御装置40と、出力装置50と、集約演算装置60と、端末70とを備える。端末70は複数でもよい。
通信部209は、プログラムを実行した演算装置20を示す情報を、端末70に送信する。通信部601は、プログラムを実行した集約演算装置60を示す情報を、端末70に送信する。表示部71は、プログラム記憶部203に記憶されているプログラムを実行した演算装置20に割り当てられた識別番号を表示する。表示部71は、プログラム記憶部603に記憶されているプログラムを実行した集約演算装置60に割り当てられた識別番号を表示する。
以上のように、第4の実施形態の通信部209は、プログラムを実行した演算装置20を示す情報を、端末70に送信する。第4の実施形態の通信部601は、プログラムを実行した集約演算装置60を示す情報を、端末70に送信する。これによって、第4の実施形態の端末70は、複数の演算装置20と集約演算装置60とのうちプログラムを実行した装置を、ユーザに把握させることができる。
以上述べた少なくともひとつの実施形態によれば、制御装置が制御信号を生成するのに要する時間と通信時間との合計値に応じて制御信号を元信号に基づいて生成する生成部を持つことにより、通信回線に伝送遅延が発生した場合でも、制御対象の装置を一定時間内に制御することができる。
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。