以下、添付の図面を参照しながら本発明の実施形態を説明する。
<通信システムの概略構成> 図1は、本発明の実施形態に係る通信システム1の概略を示すブロック図である。図1に示すように、通信システム1は、複数のロボット(監視対象)2をそれぞれ制御および監視する複数のコントローラ(情報送信装置)4と、これらのコントローラ4の遠隔にあるクラウドサーバ6とを備える。各ロボット2は、工場内での製造ロボットであり、例えば多関節ロボットである。
クラウドサーバ6は、複数のコンピュータ7と、動作ログファイル記憶部8とを備える。コンピュータ7および動作ログファイル記憶部8は、ネットワーク10に接続されている。
ネットワーク10は、例えば社内LAN(Local Area Network)でもよいし、公衆ネットワークでもよい。また、ネットワーク10は有線ネットワークでもよいし、無線ネットワークでもよい。各コントローラ4は、ゲートウェイ(GW)12を介してネットワーク10に接続されている。各ゲートウェイ12は、コントローラ4に対するエッジコンピューティング処理、およびネットワーク10とコントローラ4の間の通信プロトコル変換などの処理を行う。
また、ネットワーク10には、障害時動作ログファイル記憶部14が接続されている。
<通信システムの詳細構成> 図2は、通信システム1の詳細、特にコントローラ4とクラウドサーバ6の詳細を示すブロック図である。但し、図2では、ネットワーク10およびゲートウェイ12の図示を省略する。
図2に示すように、クラウドサーバ6には、管理者コンピュータ7A(第1の外部情報装置)、分析者コンピュータ(第2の外部情報装置)7B、動作ログファイル記憶部8およびメッセージ記憶部9が設けられている。
コントローラ4は、設定情報受信保存部40、送信部50、送信データ蓄積部60、ロボット制御部20、および共有メモリ(稼働情報記憶部)30を備える。設定情報受信保存部40は、パラメータ記憶部41、設定情報送受信部42、およびパラメータ更新部43を備える。送信部50は、パラメータ処理部51および送信処理部52を備える。送信データ蓄積部60は、読出し書込み部61、リングバッファ62、およびメモリ管理部63を備える。ロボット制御部20は、プロセッサ21を備える。
コントローラ4は、当該コントローラ4に対応するロボット2の稼働状態を示す少なくとも1つの稼働情報項目を含む送信メッセージを周期的に分析者コンピュータ7Bに送信することができる。コントローラ4は、設定情報受信保存部40のパラメータ記憶部41に記憶された複数のパラメータに従って、送信メッセージを送信する。管理者コンピュータ7Aは、これらパラメータを設定するための設定情報を含むメッセージをコントローラ4に送信する。コントローラ4は、複数の分析者コンピュータ7Bに送信メッセージを送信してもよい。
ロボット制御部20のプロセッサ21は、ロボット制御プログラムに従って、ロボット2の状態に応じてロボット2の動作を制御するための各種の指令値を生成し、これら指令値をロボット2に与える。共有メモリ30(稼働情報記憶部)はこれら指令値を記憶する。プロセッサ21は、ある瞬間の各種の指令値を生成するたびに、共有メモリ30に上書きする。すなわち、共有メモリ30においては、複数の指令値が記憶されると、直前の複数の指令値が消去される。各指令値が各稼働情報項目である。
コントローラ4の設定情報受信保存部40の設定情報送受信部42は、管理者コンピュータ7Aと通信する。設定情報送受信部42が管理者コンピュータ7Aから設定情報を含むメッセージを受信すると、パラメータ更新部43は、設定情報に応じてパラメータ記憶部41に記憶されたパラメータを更新する。パラメータ記憶部41に記憶されたパラメータが更新されると、設定情報送受信部42は、パラメータ記憶部41に記憶されたすべてのパラメータを示す設定返信情報を管理者コンピュータ7Aに送信する。設定返信情報によって、管理者コンピュータ7Aの使用者は、パラメータ記憶部41に記憶されているすべてのパラメータの状態を確認することができる。
コントローラ4の送信部50の送信処理部52は、分析者コンピュータ7B、動作ログファイル記憶部8、障害時動作ログファイル記憶部14と通信する。送信処理部52は、少なくとも1つの稼働情報項目を含む送信メッセージを周期的に分析者コンピュータ7Bに送信することができる。また、送信処理部52は、少なくとも1つの稼働情報項目を含む動作ログファイルを周期的に動作ログファイル記憶部8に送信することができる。送信処理部52は、動作ログファイルを複数の動作ログファイル記憶部8に送信してもよい。さらに、送信処理部52は、分析者コンピュータ7Bとの通信障害が発生すると、複数の時刻にわたって蓄積された少なくとも1つの稼働情報項目を含む障害時動作ログファイルを障害時動作ログファイル記憶部14に送信することができる。送信処理部52は、障害時動作ログファイルを複数の障害時動作ログファイル記憶部14に送信してもよい。
管理者コンピュータ7Aから送信された設定情報に応じてパラメータ記憶部41に記憶されたパラメータが更新されると、即座にまたは一定期間経過後に、送信部50のパラメータ処理部51は
、パラメータ記憶部41からパラメータ記憶部41に記憶されたすべてのパラメータを受け取る。パラメータ処理部51は、これらパラメータのうち送信処理部52の送信に関わるパラメータを送信処理部52に渡す。ここで、送信処理部52の送信に関わるパラメータは、例えば、送信メッセージの送信周期を指定するパラメータを含む。また、パラメータ処理部51は、これらパラメータのうち一部のパラメータを送信データ蓄積部60に渡す。一部のパラメータは、例えば、送信メッセージに含めるべき稼働情報項目を指定する稼働情報パラメータ、共有メモリ30から稼働情報項目を読み出す読出し周期を指定するパラメータを含む。
送信データ蓄積部60の読出し書込み部61は、稼働情報パラメータで指定された稼働情報項目を、読出し周期を指定するパラメータで指定された読出し周期で共有メモリ30から読み出して、リングバッファ62に書き込む。メモリ管理部63は、リングバッファ62の書込み位置を示すライトポインタと読出し位置を示すリードポインタを管理し、ライトポインタとリードポインタのポインタ位置の差分として示されるリングバッファ62の空き領域があるか否かを判断する。共有メモリ30は、ロボット制御部20のプロセッサ21と、送信データ蓄積部60の読出し書込み部61に共有されている。
送信処理部52は、リングバッファ62に蓄積された稼働情報項目を含む送信メッセージを、送信周期を指定するパラメータで指定された送信周期で生成し、当該送信メッセージを分析者コンピュータ7Bに送信する。したがって、読出し書込み部61、リングバッファ62および送信処理部52は、共有メモリ30に記憶された稼働情報項目をパラメータで指定された読出し周期で読み出して、送信メッセージを生成する送信メッセージ生成部として機能する。送信メッセージ生成部は、共有メモリ30に記憶された複数の稼働情報項目のうち、情報設定情報で指定された稼働情報項目を選択して、送信メッセージを生成する。また、送信処理部52は、送信メッセージ生成部により生成された送信メッセージを、指定された送信周期に、分析者コンピュータ7Bへ送信する送信実行部として機能する。
分析者コンピュータ7Bは、送信処理部52から送信メッセージを受信するたびに、メッセージ記憶部9に送信メッセージを記憶する。したがって、分析者コンピュータ7Bの使用者は、周期的に受信した送信メッセージを閲覧することができる。
送信処理部52による送信メッセージの送信周期は、好ましくは読出し書込み部61による稼働情報項目の読出し周期よりも長く設定される。これにより、短い読出し周期で読み出されて蓄積された、各読出し周期での稼働情報を含む送信メッセージを送信することができる。
また、送信処理部52は、送信メッセージの生成および送信とは別に、リングバッファ62に記憶された稼働情報項目を含む動作ログファイルを生成し、動作ログファイルを周期的に動作ログファイル記憶部8に送信する。動作ログファイル記憶部8は、周期的に受信する動作ログファイルを蓄積する。動作ログファイルを送信する周期は、好ましくは、送信メッセージを送信する周期よりも長く設定される。これにより、通信システム1の使用者、例えば分析者コンピュータ7Bの使用者は、ある程度の期間にわたる稼働情報項目を含む動作ログファイルを所望の時に参照することができる。
より具体的には、送信処理部52は、リングバッファ62に記憶された稼働情報項目を随時読み出して、当該稼働情報項目から暫定動作ログファイルを生成して記憶しておく。そして、送信処理部52は、動作ログファイルの送信周期に、複数の暫定動作ログファイルを統合すなわち連結することによって、ある程度の期間にわたる動作ログファイルを生成し、動作ログファイルを動作ログファイル記憶部8に送信する。但し、動作ログファイルの送信周期が短い場合には、送信処理部52は、1つの暫定動作ログファイルをそのまま動作ログファイルとして動作ログファイル記憶部8に送信してよい。また、複数の暫定動作ログファイルを連結することによって生成された動作ログファイルが所定量より大きいデータ量を有する場合には、送信処理部52は、動作ログファイルを分割して送信してもよい。
動作ログファイルに含まれる稼働情報項目は、送信メッセージに含まれる稼働情報項目と同じでもよいが、送信メッセージに含まれる稼働情報項目に加えてさらに多くの稼働情報項目を含んでもよい。
さらに送信処理部52は、分析者コンピュータ7Bとの通信が発生すると、複数の時刻にわたってリングバッファ62に蓄積された稼働情報項目を含む障害時動作ログファイルを生成し、障害時動作ログファイルを障害時動作ログファイル記憶部14に送信する。障害時動作ログファイル記憶部14は、受信した障害時動作ログファイルを記憶する。これにより、通信システム1の使用者、例えば分析者コンピュータ7Bの使用者は、通信障害の前にある程度の期間にわたってリングバッファ62に蓄積された稼働情報項目を含む障害時動作ログファイルを、通信障害後の所望の時に参照することができる。障害時動作ログファイルに含まれる稼働情報項目は、送信メッセージに含まれる稼働情報項目と同じでよい。
動作ログファイルおよび障害時動作ログファイルは、稼働情報項目とタイムスタンプを有する。タイムスタンプは、共有メモリ30への稼働情報項目の書込み時に当該稼働情報項目に付与されたカウンタ値でもよいし、共有メモリ30からの稼働情報項目の読出し時刻であってもよい。送信データ蓄積部60の読出し書込み部61は、稼働情報項目にタイムスタンプを付けて、リングバッファ62に書き込む。送信処理部52は、リングバッファ62から読み出された稼働情報項目とタイムスタンプを利用して、動作ログファイルおよび障害時動作ログファイルを生成する。
通信システム1の使用者、例えば分析者コンピュータ7Bの使用者は、タイムスタンプを参照して動作ログファイルおよび障害時動作ログファイル内の稼働情報項目の時刻を知り、これらファイル内の稼働情報項目を時系列分析することができる。特に、障害時動作ログファイルについては、通信障害の直前の稼働情報項目を時系列分析することによって、通信障害の直前のロボット2の稼働状態を推定することができる。
このようなタイムスタンプは、送信メッセージにも含めることができる。この場合には、分析者コンピュータ7Bの使用者は、タイムスタンプを参照して送信メッセージ内の稼働情報項目の時刻を知り、送信メッセージ内の稼働情報項目を時系列分析することができる。また、送信メッセージ内のタイムスタンプと、動作ログファイルまたは障害時動作ログファイル内のタイムスタンプとを照合することによって、分析者コンピュータ7Bの使用者は、送信メッセージに含まれるべき稼働情報項目が実際に送信メッセージに含まれているか否かを知ることができる。
上記の設定情報送受信部42、パラメータ更新部43、パラメータ処理部51、送信処理部52、読出し書込み部61、およびメモリ管理部63の機能は、コントローラ4におけるコンピュータのプロセッサ(図示せず)が記録媒体(図示せず)に記憶されたプログラムを読み出し実行することによって実現可能である。この場合、記録媒体から読み出されたプログラム(プログラムコード)自体が実施形態の機能を実現することになる。また、当該プログラムを記録した記録媒体は本発明を構成することができる。
この実施形態では、クラウドサーバ6からの指示に応答して、コントローラ4がクラウドサーバ6で必要な情報項目を送信するのではなく、クラウドサーバ6からの設定情報に基づいて、設定情報に指定された送信周期で設定情報に指定された項目を有する送信メッセージをコントローラ4が送信する。したがって、設定情報受信保存部40の処理系統は、送信部50の処理系統と異なっていてもよく、設定情報送受信部42の通信ポートが送信処理部52の通信ポートと異なっていてもよい。この場合には、設定情報送受信部42による設定情報の受信および設定返信情報の送信の時期と、送信処理部52による送信メッセージ、動作ログファイルおよび障害時動作ログファイルの送信の時期を容易に異ならせることができる。
<パラメータ記憶部に記憶されたパラメータの例> 図3は、パラメータ記憶部41に記憶されたパラメータの例を示す。図3に示されるパラメータは、例であって、他のパラメータを使用してもよいし、一部のパラメータを使用しなくてもよい。この実施形態のパラメータ記憶部41は、キーバリューデータベースであって、各パラメータは「キー」と「バリュー」の対を有する。この実施形態では、各キーは4つの文字の列である。図3の「解説」は、理解の容易のために示されており、パラメータ記憶部41に記憶されてもよいが、記憶されていなくてもよい。
これらパラメータは、制御パラメータと稼働情報パラメータに大別される。各稼働情報パラメータは、1つの稼働情報項目に対応しており、対応する稼働情報項目を送信メッセージに含めるべきか否かをバリューで規定する。稼働情報パラメータのバリューは、オンまたはオフを取りうる。稼働情報パラメータのバリューのオンは、当該稼働情報パラメータに対応する稼働情報項目を送信メッセージに含めるべきことを意味する。稼働情報パラメータのバリューのオフは、当該稼働情報パラメータに対応する稼働情報項目を送信メッセージに含めるべきでないことを意味する。例えば、キーr000の稼働情報パラメータのバリューがオンであれば、当該稼働情報パラメータに対応する稼働情報項目Xが読出し書込み部61によって共有メモリ30から読み出され、送信処理部52によって送信メッセージに含められる。例えば、キーr005の稼働情報パラメータのバリューがオフであれば、当該稼働情報パラメータに対応する稼働情報項目Rxは読出し書込み部61によって共有メモリ30から読み出されず、送信メッセージに含められない。
すべての稼働情報パラメータについて、パラメータ記憶部41に記憶されている初期のバリューはオフである。
一方、各制御パラメータは、送信部50および送信データ蓄積部60の動作を規定する。制御パラメータは、バリューがオンまたはオフを取りうる制御パラメータ(図3の例ではキーi000〜i105の制御パラメータ)と、バリューが具体的数値または具体的記号を取りうる制御パラメータ(図3の例ではキーi200〜i205の制御パラメータ)に大別される。制御パラメータのバリューのオンは、当該制御パラメータに対応する制御項目を実行すべきであることを意味する。制御パラメータのバリューのオフは、当該制御パラメータに対応する制御項目を実行すべきでないことを意味する。例えば、キーi000の制御パラメータのバリューがオンであれば、送信処理部52は送信メッセージに送信日付を含めるのであって、キーi002の制御パラメータのバリューがオフであれば、送信処理部52は送信メッセージにコントローラ4が動作するソフトウェアのバージョン情報を含めない。
また、キーi100〜i105の制御パラメータ(バリューがオンまたはオフを取りうる制御パラメータ)は、キーi200〜i205の制御パラメータ(バリューが具体的数値または記号を取りうる制御パラメータ)にそれぞれ対応する。具体的には、キーi100の制御パラメータは、送信メッセージのデータフォーマットのオン(有効)またはオフ(無効)を指定する。当該制御パラメータがオンであれば、キーi200の制御パラメータのバリューで指定されるデータフォーマットに従って、送信処理部52は送信メッセージを生成する。キーi100の制御パラメータがオンであって、キーi200の制御パラメータのバリューが0であれば、送信処理部52は、JSON(登録商標)に従って、送信処理部52は送信メッセージを生成する。キーi100の制御パラメータがオンであって、キーi200の制御パ
ラメータのバリューが1であれば、送信処理部52は、カンマ区切り(CSV)形式に従って、送信処理部52は送信メッセージを生成する。
キーi101の制御パラメータは、送信メッセージの送信周期タイマーのオン(有効)またはオフ(無効)を指定する。当該制御パラメータがオンであれば、キーi201の制御パラメータのバリューで指定される送信周期値に従って、送信処理部52は送信メッセージを生成して、分析者コンピュータ7Bに送信する。キーi201の制御パラメータのバリューは、最大で2678400秒(1ヶ月(31*24*60*60秒))を指定することができる。図3では、キーi201の制御パラメータのバリューとして0.1秒が指定されている。
送信メッセージの送信周期に代えて、送信時刻を制御パラメータで指定してもよい。この場合には、例えば、トラフィックが少ない時刻または分析者コンピュータ7Bの使用者にとって都合がよい時刻に、分析者コンピュータ7Bは送信メッセージを受信することができる。
キーi102の制御パラメータは、動作ログファイルのアップロード周期タイマーのオン(有効)またはオフ(無効)を指定する。当該制御パラメータがオンであれば、キーi202の制御パラメータのバリューで指定される周期値に従って、送信処理部52は、動作ログファイルを動作ログファイル記憶部8に送信すなわちアップロードする。キーi202の制御パラメータのバリューは、最大で2678400秒(1ヶ月(31*24*60*60秒))を指定することができる。図3では、キーi202の制御パラメータのバリューとして2678400秒が指定されている。
動作ログファイルのアップロード周期に代えて、動作ログファイルのアップロード時刻を制御パラメータで指定してもよい。この場合には、例えば、トラフィックが少ない時刻に、コントローラ4は動作ログファイルを動作ログファイル記憶部8に送信することができる。
キーi103の制御パラメータは、動作ログファイルの宛先IPアドレスのオン(有効)またはオフ(無効)を指定する。当該制御パラメータがオンであれば、キーi203の制御パラメータのバリューで指定される動作ログファイル記憶部8の宛先IPアドレスに向けて、送信処理部52は動作ログファイルを送信する。キーi104の制御パラメータは、動作ログファイルの宛先ポートのオン(有効)またはオフ(無効)を指定する。当該制御パラメータがオンであれば、キーi204の制御パラメータのバリューで指定される動作ログファイル記憶部8の宛先ポートに向けて、送信処理部52は動作ログファイルを送信する。
送信処理部52は、複数の動作ログファイル記憶部8に動作ログファイルを送信してもよい。この場合には、さらなる制御パラメータが使用される。
また、制御パラメータは、分析者コンピュータ7Bを示す宛先情報パラメータおよび当該宛先情報パラメータのオン(有効)またはオフ(無効)を指定する制御パラメータを有してもよい。この場合には、送信メッセージの宛先を任意に指定することができる。送信処理部52は、複数の分析者コンピュータ7Bに送信メッセージを送信してもよい。この場合には、制御パラメータは、複数の分析者コンピュータ7Bをそれぞれ示す複数の宛先情報パラメータおよびそれらの宛先情報パラメータのオン(有効)またはオフ(無効)を指定する複数の制御パラメータを有してもよい。
キーi100,i101のいずれかの制御パラメータがオフの場合、キーi200,i201の制御パラメータのバリューに関わらず、送信処理部52は送信メッセージを生成せず送信もしない。また、キーi102〜i104のいずれかの制御パラメータがオフの場合、キーi202〜i204の制御パラメータのバリューに関わらず、送信処理部52は動作ログファイルを生成せず送信もしない。
キーi105の制御パラメータは、共有メモリ30からの読出し周期タイマーのオン(有効)またはオフ(無効)を指定する。当該制御パラメータがオンであれば、キーi205の制御パラメータのバリューで指定される周期値に従って、送信データ蓄積部60の読出し書込み部61は、稼働情報項目を共有メモリ30から読み出して、リングバッファ62に書き込む。図3では、キーi205の制御パラメータのバリューとして0.01秒が指定されている。キーi105の制御パラメータがオフの場合、キーi205の制御パラメータのバリューに関わらず、送信データ蓄積部60の読出し書込み部61は、稼働情報項目を共有メモリ30から読み出さず、リングバッファ62に書き込まない。
バリューがオンまたはオフを取りうるすべての制御パラメータについて、パラメータ記憶部41に記憶されている初期のバリューはオフである。一方、バリューが具体的数値または具体的記号を取りうるすべての制御パラメータについて、パラメータ記憶部41には所定の初期のバリューが記憶されている。
パラメータ記憶部41は、図3に示すパラメータに加えて他のパラメータを記憶してもよい。例えば、送信メッセージにタイムスタンプを含めるか否かを指定する制御パラメータをパラメータ記憶部41が記憶してもよい。
<管理者コンピュータとコントローラとの情報交換> 図4は、通信システムの管理者コンピュータ7Aとコントローラ4との情報交換を示すシーケンス図である。管理者コンピュータ7Aは、管理者コンピュータ7Aの使用者の所望の時に設定情報を含むメッセージをコントローラ4に送信することができる。コントローラ4では、設定情報送受信部42が設定情報を含むメッセージを受信すると、パラメータ更新部43は、設定情報に応じてパラメータ記憶部41に記憶されたパラメータを更新する。
パラメータ記憶部41に記憶されたパラメータが更新されると、コントローラ4の設定情報送受信部42は、返信情報送信部として機能し、設定返信情報を管理者コンピュータ7Aに送信する。設定情報を受信するたびに、コントローラ4は、パラメータを更新して、設定返信情報を管理者コンピュータ7Aに送信する。
図5は、管理者コンピュータ7Aからコントローラ4に送信される設定情報の一例を示す図である。設定情報では、キーバリューデータベースであるパラメータ記憶部41のキーバリューに従って、管理者コンピュータ7Aの使用者が設定したいパラメータのキーおよび当該パラメータのバリューが指定されている。図5の例では、キーi000,i001,i100,i101,r000,r001,r002,r003,r004,r005,r200,r201,r202,r203,r204,r205の各パラメータについては、当該パラメータのキーと、当該パラメータのバリュー(オン)が設定情報に含まれている。これらパラメータは、バリューがオンまたはオフを取りうるパラメータであって、パラメータ記憶部41に記憶されている初期のバリューはオフである。これらパラメータについては、管理者コンピュータ7Aの使用者がオンに切り替えたい場合に、設定情報において、キーを指定し、バリューをオンに指定すればよい。設定情報に従って、パラメータ記憶部41においては、キーi000,i001,i100,i101,r000,r001,r002,r003,r004,r005,r200,r201,r202,r203,r204,r205の各パラメータがオンに切り替えられる。管理者コンピュータ7Aの使用者が初期のバリュー(オフ)を維持したい場合に、設定情報において当該パラメータのキーもバリューも指定されないので、設定情報の量を削減することができる。
バリューがオンまたはオフを取りうるパラメータについて、一旦オンに切り替えた後に、管理者コンピュータ7Aの使用者が再びオフに切り替えたい場合には、当該パラメータのキーとバリュー(バリューはオフ)の組を含む設定情報を管理者コンピュータ7Aがコントローラ4に送信すればよい。このようにして、有効にしたい制御パラメータの自由度および送信メッセージに含まれる稼働情報項目の自由度が高められる。
図5の例では、キーi200の制御パラメータ(送信メッセージのデータフォーマット)についてはバリューとして1(カンマ区切り形式)が指定されている。キーi201の制御パラメータ(送信メッセージの送信周期タイマーの周期値)についてはバリューとして0.066秒が指定されている。これら制御パラメータは、バリューが具体的数値または具体的記号を取りうる制御パラメータであり、パラメータ記憶部41には所定の初期のバリューが記憶されている。これらパラメータについては、管理者コンピュータ7Aの使用者が既存のバリューから所望のバリューに変更したい場合に、設定情報においてキーとバリューの組を指定すればよい。管理者コンピュータ7Aの使用者が既存のバリューを維持したい場合に、設定情報において当該パラメータのキーもバリューも指定されないので、設定情報の量を削減することができる。
一旦、設定情報を送信した後、管理者コンピュータ7Aの使用者があるパラメータを変更したい場合には、管理者コンピュータ7Aは、管理者コンピュータ7Aの使用者の所望の時に当該パラメータのキーとバリューの組を含む設定情報を含むメッセージをコントローラ4に送信することができる。パラメータ更新部43は、新たな設定情報に応じてパラメータ記憶部41に記憶されたパラメータを更新する。
図5の例では、設定情報は、制御パラメータの更新を指示する制御パラメータ設定情報と、稼働情報パラメータの更新を指示する稼働情報設定情報を含む。ここで、制御パラメータはキーi000,i001,i100,i101,i200,i201のパラメータである。また、稼動情報パラメータは、キーr200,r201,r202,r203,r204,r205のパラメータである。但し、管理者コンピュータ7Aは、制御パラメータの更新を指示する制御パラメータ設定情報のみを含むメッセージを送信してもよい。制御パラメータ設定情報は、制御パラメータのキーと当該制御パラメータのバリューを持つ組を含む。また、管理者コンピュータ7Aは、稼働情報パラメータの更新を指示する稼働情報設定情報のみを含むメッセージを送信してもよい。稼働情報設定情報は、稼働情報パラメータのキーとバリュー(オンまたはオフ)の組を含む。
以上のように、この実施形態の設定情報は、キーバリューデータベースであるパラメータ記憶部に記憶されたパラメータのうち、更新すべきパラメータのキーとバリューの組を含む。したがって、所定の多数のフィールドに多数のパラメータの設定値を記入する形式の設定情報よりも、設定情報を容易に作成することができる。例えば、設定情報において、パラメータの順番は可変であり、パラメータの数も限定されず、パラメータの追加も容易である。また、設定情報においてオフにすべきパラメータの指定も容易である。
また、この実施形態では、設定情報によって、送信メッセージの送信周期または送信時刻と、動作ログファイルのアップロード周期またはアップロード時刻と、共有メモリ30からの稼働情報の読出し周期とを変更することが可能である。送信メッセージの送信周期または送信時刻を変更することによって、送信メッセージの送信周期または送信時刻を最適化することができる。動作ログファイルのアップロード周期またはアップロード時刻を変更することによって、動作ログファイルのアップロード周期またはアップロード時刻を最適化することができる。稼働情報の読出し周期を変更することによって、稼働情報から生成される送信メッセージの量を最適化することができる。
さらにこの実施形態では、設定情報によって、送信メッセージに含まれる稼働情報項目を任意に指定することができる。したがって、送信すべき項目の自由度が高められる。
図6は、コントローラから管理者コンピュータに送信される設定返信情報の一例を示す図である。設定返信情報は、パラメータ記憶部41に記憶されたすべてのパラメータを示す。すなわち、この実施形態では、設定返信情報は、パラメータ記憶部41に記憶されたすべての制御パラメータについての制御パラメータ設定返信情報と、パラメータ記憶部41に記憶されたすべての稼働情報パラメータ
についての稼働情報設定返信情報を含む。
図6に示すように、設定返信情報は、各制御パラメータのキーと当該制御パラメータのバリューを持つ組を含む。また、設定返信情報は、各稼働情報パラメータのキーと当該稼働情報パラメータのバリューを持つ組を含む。当該稼働情報パラメータのバリューとは、すなわち、当該稼働情報パラメータに対応する稼働情報項目を送信すべきか否かを示すバリューである。設定返信情報によって、管理者コンピュータ7Aの使用者は、パラメータ記憶部41に記憶されているすべての制御パラメータの状態、およびパラメータ記憶部41に記憶されているすべての稼働情報パラメータの状態を確認することができる。そして、必要に応じて、再度、設定情報を含むメッセージを管理者コンピュータ7Aはコントローラ4に送信する。
<コントローラからの情報送信> 図7は、通信システム1内のコントローラ4からロボット2と分析者コンピュータ7Bと動作ログファイル記憶部8への情報送信を示すシーケンス図である。
上記の通り、コントローラ4のプロセッサ21は、ロボット2に逐次、複数の指令値(稼働情報項目)を供給する。ロボット2への稼働情報項目の供給は、上記の設定情報とは無関係である。
コントローラ4の読出し書込み部61は、設定情報でオンに指定された稼働情報パラメータに対応する稼働情報項目を、設定情報でオンにされた読出し周期タイマーに対応する読出し周期で共有メモリ30から読み出して、リングバッファ62に書き込む。
コントローラ4の送信処理部52は、設定情報でオンにされた送信周期タイマーに対応する送信周期または設定情報でオンにされた送信時刻で、リングバッファに記憶された稼働情報項目を読み出す。続いて、送信処理部52は、読み出された稼働情報項目を含む送信メッセージ送信メッセージを生成して、分析者コンピュータ7Bに送信する。送信メッセージを受信すると、分析者コンピュータ7Bは、送信メッセージをメッセージ記憶部9に記憶する。
また、コントローラ4の送信処理部52は、設定情報でオンにされた動作ログファイルのアップロード周期タイマーに対応するアップロード周期または設定情報でオンにされたアップロード時刻で、動作ログファイルを生成し、動作ログファイルを動作ログファイル記憶部8に送信する。上記の通り、送信処理部52は、動作ログファイルの送信周期に、複数の暫定動作ログファイルを統合すなわち連結することによって動作ログファイルを生成し、動作ログファイルを動作ログファイル記憶部8に送信する。動作ログファイルを受信すると、動作ログファイル記憶部8は、動作ログファイルを記憶する。
以上のように、この実施形態においては、管理者コンピュータ7Aから受信される制御パラメータ設定情報の制御パラメータによって、共有メモリ30に記憶された稼働情報項目の読出し周期と、稼働情報項目を含む送信メッセージの送信周期または送信時刻を指定することが可能である。送信メッセージの送信周期または送信時刻を指定することにより、コントローラ4から分析者コンピュータ7Bに送信される送信メッセージの送信周期または送信時刻、ひいてはトラフィックを最適化することができる。また、共有メモリ30から稼働情報を読み出す読出し周期を指定することにより、送信メッセージの量を最適化することができる。
図8は、コントローラ4から分析者コンピュータ7Bに送信される送信メッセージの一例を示す図である。送信メッセージは、制御パラメータのキーと当該制御パラメータのバリューを持つ組を含む。例えば、図8の例で、「i001,232956789」の組は、送信メッセージの送信時刻が23時29分56.789秒であることを意味し、i001がキー、232956789がバリューである。送信メッセージは、稼働情報項目のキーと当該稼働情報項目のバリューを持つ組を含む。例えば、図8の例で、「r202,2.096525」の組は、ロボットのジョイントJ3の指令値が2.096525度であることを意味し、r202がキー、2.096525がバリューである。このように、送信メッセージの制御パラメータおよび稼働情報項目の各々を、キーとバリューで表現することによって、送信メッセージの内容を容易に理解することができる。
図9は、コントローラ4から動作ログファイル記憶部8に送信される動作ログファイルの一例を示す図である。動作ログファイルも制御パラメータのキーと当該制御パラメータのバリューを持つ組を含み、稼働情報項目のキーと当該稼働情報項目のバリューを持つ組を含む。したがって、動作ログファイルの内容を容易に理解することができる。また、図9の例において、i000,20170620、i001,212956789、i000,20170620、i001,222956789、およびi000,20170620、i001,232956789は、タイムスタンプである。これらタイムスタンプは、送信処理部52が暫定動作ログファイルを生成するときに、暫定動作ログファイルに含めることができ、送信処理部52が複数の暫定動作ログファイルを連結して、動作ログファイルを生成するときに、動作ログファイルに含めることができる。通信システム1の使用者、例えば分析者コンピュータ7Bの使用者は、タイムスタンプを参照して動作ログファイル内の稼働情報項目の時刻を知り、稼働情報項目を時系列分析することができる。上記の通り、タイムスタンプは、送信メッセージにも含めることができる。
<制御パラメータの不整合の防止> コントローラ4のパラメータ記憶部41に記憶されている制御パラメータには、他の制御パラメータのバリューがパラメータ記憶部41で所定のバリューでなければ利用できない制御パラメータがある。例えば、図3の例で、キーi100の制御パラメータのバリューがオンでない場合には、送信メッセージのデータフォーマットが指定できないので、キーi000〜i002の制御パラメータまたはキーi101の制御パラメータのバリューがオンであっても、送信メッセージを生成することができない。また、キーi101の制御パラメータのバリューがオンでない場合には、送信メッセージの送信周期が指定できないので、キーi000〜i002の制御パラメータまたはキーi100の制御パラメータのバリューがオンであっても、送信メッセージを生成することができない。
このようなパラメータのバリューの不整合を回避するため、この実施形態では、2つの方策がとられる。1つの方策は、管理者コンピュータ7Aが管理者コンピュータ7Aの使用者に注意することである。具体的には、管理者コンピュータ7Aで設定情報を生成するための作業を行っている時、使用者がある制御パラメータのバリューをオンに変更する指示を管理者コンピュータ7Aに与えるとする。このとき、当該制御パラメータのバリューがオンであれば、やはりバリューがオンであるべき他の制御パラメータを、管理者コンピュータ7Aは、なんらかの形式で使用者に知らせればよい。例えば、使用者がキーi000の制御パラメータのバリューをオンに変更する指示を管理者コンピュータ7Aに与えると、管理者コンピュータ7Aは、キーi100,i101の制御パラメータのバリューもオンであるべきことを使用者に知らせる。
逆に、使用者がある制御パラメータのバリューをオフに変更する指示を管理者コンピュータ7Aに与えると、当該制御パラメータのバリューをオフに変更することに伴う影響を管理者コンピュータ7Aは、なんらかの形式で使用者に知らせればよい。例えば、使用者がキーi101の制御パラメータのバリューをオフに変更する指示を管理者コンピュータ7Aに与えると、管理者コンピュータ7Aは、送信メッセージが送信されなくなることを管理者コンピュータ7Aのディスプレイで使用者に知らせてもよいし、キーi100もオフに変更すべきか否かをディスプレイで使用者に尋ねてもよい。
もう1つの方策は、コントローラ4が設定返信情報を用いて、管理者コンピュータ7Aの使用者に注意することである。具体的には、設定情報に指定されたある制御パラメータのバリューとパラメータ記憶部41に記憶された他の制御パラメータのバリューの組合せが所定の組合せでない場合に、コントローラ4の設定情報送受信部42は、設定返信情報において、これら制御パラメータのバリューを無効なバリューに設定する。この場合、パラメータ更新部43は、パラメータ記憶部41に記憶されたこれら制御パラメータのバリューを無効なバリューのままにするか、無効なバリューに設定してよい。
例えば、設定情報がキーi000の制御パラメータのオンを指定していても、キーi100,i101のパラメータのバリューがパラメータ記憶部41でオンでなければ、キーi000の制御パラメータは利用できない。よって、キーi100,i101の制御パラメータのバリューがパラメータ記憶部41でオフである場合には、設定情報送受信部42は、設定返信情報において、キーi000の制御パラメータのバリューをオフに設定する。また、設定情報送受信部42は、設定返信情報において、キーi100,i101のパラメータのバリューもパラメータ記憶部41の記憶に従ってオフに設定する。パラメータ更新部43は、パラメータ記憶部41に記憶されたキーi000のバリューを、設定情報に従ってオンに更新せず、オフのままにしてよい。管理者コンピュータ7Aの使用者が、直前に送信したパラメータ設定情報と、受信した制御パラメータ設定返信情報の相違に気づけば、使用者は、制御パラメータ相互の整合性をとるために、新たな設定情報を管理者コンピュータ7Aから送信することができる。
また、例えば、設定情報がキーi000の制御パラメータのオフを指定しており、キーi100,i101の制御パラメータのバリューがパラメータ記憶部41でオンである場合には、設定情報送受信部42は、設定返信情報において、キーi000の制御パラメータだけでなく、キーi100,i101の制御パラメータのバリューをオフに設定する。管理者コンピュータ7Aの使用者が、以前に送信したパラメータ設定情報と、受信した制御パラメータ設定返信情報の相違に気づけば、使用者は、制御パラメータ相互の整合性をとるために、新たな設定情報を管理者コンピュータ7Aから送信することができる。パラメータ更新部43は、パラメータ記憶部41に記憶されたキーi000の制御パラメータのバリューをオフに設定し、キーi100,i101の制御パラメータのバリューもオフに設定してよい。
<リングバッファの管理> 図10は、コントローラ4におけるリングバッファ62の管理に関する動作の例を示すフローチャートである。この動作は、コントローラ4の上記のプロセッサがプログラムに従って実行する。
この実施形態に係るコントローラ4では、読出し書込み部61が、共有メモリ30に記憶された稼働情報項目を読出し周期で読み出して、リングバッファ62に一時的に蓄積する。送信処理部52は、リングバッファ62に蓄積された稼働情報項目を含む送信メッセージを送信周期または送信周期に生成し、送信メッセージを分析者コンピュータ7Bに送信する。この実施形態では、リングバッファ62の使用により、共有メモリ30に記憶された稼働情報項目の読出し周期と、稼働情報項目を含む送信メッセージの送信周期を容易に異ならせることができる。
メモリ管理部63は、リングバッファ62の書込み位置を示すライトポインタと読出し位置を示すリードポインタを管理し、ライトポインタとリードポインタのポインタ位置の差分として示されるリングバッファ62の空き領域があるか否かを判断する。そして、送信処理部52により送信メッセージを送信できない場合に、リングバッファ62の空き領域がないとメモリ管理部63が判断するまで、読出し書込み部61は、リングバッファ62に稼働情報項目を書き込む。したがって、この実施形態では、送信処理部52により送信メッセージを送信できない場合でも、空き容量がなくなるまでは、リングバッファ62に稼働情報項目を書き込むことが可能である。したがって、通信障害によって、送信メッセージを送信できなくても、稼働情報項目がリングバ
ッファ62に記憶され、稼働情報項目の損失を抑制することができる。
図10に示すように、ステップSt1で、読出し書込み部61が、共有メモリ30に記憶された稼働情報項目を読み出して、リングバッファ62に稼働情報項目を書き込む。この時、読出し書込み部61は、タイムスタンプを稼働情報項目に付与してリングバッファ62に書き込む。リングバッファ62に書き込まれる稼働情報項目にタイムスタンプが付与されることにより、稼働情報項目から生成される送信メッセージに稼働情報項目に対応するタイムスタンプを含めることができ、稼働情報項目から生成される障害時動作ログファイルにも稼働情報項目に対応するタイムスタンプを含めることができる。次に、ステップSt2でメモリ管理部63はリングバッファ62のライトポインタを更新する。
この後、ステップSt3で、送信処理部52は、暫定動作ログファイルを生成する。暫定動作ログファイルは、ステップSt2でリングバッファ62に書き込まれた稼働情報項目と、当該稼働情報項目のタイムスタンプを含む。次に、ステップSt4で、送信処理部52は、暫定動作ログファイル管理情報を更新する。コントローラ4で生成されたが、動作ログファイル記憶部8に送信されていない暫定動作ログファイルを管理するために、暫定動作ログファイル管理情報は、図示しない記録媒体に記憶されている。ステップSt4では、送信処理部52は、直前のステップSt3で生成された暫定動作ログファイルの名前またはIDを暫定動作ログファイル管理情報に追加する。暫定動作ログファイルの名前またはIDは、例えば、暫定動作ログファイルのタイムスタンプが用いられる。
そして、ステップSt5で、メモリ管理部63はリングバッファ62に空き領域があるか否か判断する。ここで、リングバッファ62に空き領域があると判断された場合には、ステップSt6で、送信処理部52は、送信メッセージの送信時刻または送信周期であるか否か判断する。送信メッセージの送信時刻または送信周期であると判断された場合には、ステップSt7で、送信処理部52は、リングバッファ62に蓄積された稼働情報項目を読み出す。ステップSt8において、送信処理部52は、当該稼働情報を含む送信メッセージを生成して、送信メッセージを分析者コンピュータ7Bへ送信する。
次に、ステップSt9で、送信処理部52は、所定期間内に送信メッセージの送信が完了したか否か判断する。この判断は、例えば、分析者コンピュータ7Bから受信確認通知を送信処理部52が受信したか否かに基づいて行うことができる。ステップSt9の判断が肯定的である場合、すなわち送信メッセージの送信が完了すると、ステップSt10において、読出し書込み部61はリングバッファ62からステップSt7で読み出された稼働情報項目を消去する。次に、ステップSt11において、メモリ管理部63は、リングバッファ62のリードポインタを更新する。
さらに、ステップSt12で、メモリ管理部63はリングバッファ62に空き領域があるか否か判断する。ここで、リングバッファ62に空き領域があると判断された場合には、動作はステップSt13に進む。
ステップSt13で、送信処理部52は、暫定動作ログファイル管理情報を参照する。ステップSt14で、送信処理部52は、暫定動作ログファイル管理情報に未送信の暫定動作ログファイルが記録されているか否か判断する。ステップSt14の判断が肯定的である場合、すなわち暫定動作ログファイル管理情報に未送信の暫定動作ログファイルが記録されている場合には、ステップSt15で、送信処理部52は、動作ログファイルの送信時刻または送信周期であるか否か判断する。ステップSt15の判断が肯定的である場合、すなわち動作ログファイルの送信時刻または送信周期である場合、ステップSt16で、送信処理部52は、暫定動作ログファイルから動作ログファイルを生成して、動作ログファイルを動作ログファイル記憶部8へ送信する。
次に、ステップSt17で、送信処理部52は、所定期間内に動作ログファイルの送信が完了したか否か判断する。この判断は、例えば、メッセージ記憶部9から受信確認通知を送信処理部52が受信したか否かに基づいて行うことができる。ステップSt17の判断が肯定的である場合、すなわち動作ログファイルの送信が完了すると、ステップSt18で、送信処理部52は暫定動作ログファイル管理情報を更新する。具体的には、送信処理部52は、暫定動作ログファイル管理情報に記録された暫定動作ログファイルの名前またはIDを消去する。
ステップSt14の判断が否定的である場合、すなわち暫定動作ログファイル管理情報に未送信の暫定動作ログファイルが記録されていない場合には、動作はステップSt1に戻る。また、ステップSt15の判断が否定的である場合、すなわち動作ログファイルの送信時刻でない場合には、動作はステップSt1に戻る。
このように、ネットワーク10で通信障害が発生しない限り、ステップSt1からステップSt18までの正常時の動作が中断されることなく繰り返される。
リングバッファ62を使用する場合に、分析者コンピュータ7Bに送信すべき稼働情報項目の消失を防ぐために、読み出されていない稼働情報項目または送信されていない稼働情報項目を新たな稼働情報項目で上書きしないようにすることが好ましい。このため、この実施形態では、下記の方策が採られている。
まず、ステップSt5の判断が否定的である場合およびステップSt12の判断が否定的である場合、すなわちリングバッファ62に空き領域がない場合には、動作はステップSt19に進む。ステップSt19では、読出し書込み部61はリングバッファ62への稼働情報項目の書込みを中断し、動作はその後、ステップSt6に進む。ステップSt6の判断が肯定的である場合、すなわち送信メッセージの次の送信時刻または送信周期である場合、動作はステップSt7に進む。ステップSt7で、送信処理部52は、リングバッファ62に蓄積された稼働情報項目を読み出す。次に、ステップSt8で、送信処理部52は、当該稼働情報を含む送信メッセージを生成して、送信メッセージを分析者コンピュータ7Bへ送信する。
送信が完了すれば、ステップSt9の判断が肯定的になり、動作はステップSt10に進む。ステップSt10で、読出し書込み部61は、リングバッファ62から読み出された稼働情報項目を消去する。これにより、リングバッファ62には空き領域が生ずる。通信障害が発生していなければ、あるいは通信障害が復旧すれば、読み出された稼働情報項目はリングバッファ62から消去されるので、ステップSt12の判断が肯定的になる。その後に、ステップSt1で、読出し書込み部61は、共有メモリ30に記憶された稼働情報項目を読み出して、リングバッファ62に稼働情報項目を書き込むことが可能になる。また、読み出されていない稼働情報項目がリングバッファ62で新たな稼働情報項目により上書きされることが防止される。
また、ステップSt9の判断が否定的である場合、すなわち所定期間内に送信メッセージの送信が完了しない場合には、動作はステップSt19に進む。ステップSt19では、読出し書込み部61はリングバッファ62に稼働情報項目を書き込まず、動作はその後、ステップSt6に進む。このようにして、送信されていない稼働情報項目が、リングバッファ62で新たな稼働情報項目により上書きされることが防止されている。
通信障害が復旧し、この後、ステップSt9の判断が肯定的になれば、正常時の動作が繰り返される。上記の通り、送信メッセージには、稼働情報項目のタイムスタンプを付けることができる。したがって、送信メッセージの送信が大幅に遅延したとしても、分析者コンピュータ7Bの使用者は、タイムスタンプを参照して送信メッセージ内の稼働情報項目の時刻を知り、送信メッセージ内の稼働情報項目を時系列分析し、分析結果を通信障害の原因の究明に使用することができる。
通信障害が復旧しない場合には、送信処理部52は、送信メッセージを分析者コンピュータ7Bに送信せず、リングバッファ62への稼働情報の書込みは中断されたままである。この場合には、リングバッファ62には、以前に蓄積された稼働情報項目が記憶されている。したがって、通信システム1の使用者、例えば分析者コンピュータ7Bの使用者は、リングバッファ62に記憶されている稼働情報項目を読み出して、稼働情報項目を分析することができる。
上記の通り、リングバッファ62に記憶された稼働情報項目にはタイムスタンプが付けられている。したがって、通信システム1の使用者、例えば分析者コンピュータ7Bの使用者は、リングバッファ62に記憶された稼働情報項目を得て、タイムスタンプを参照してリングバッファ62に記憶された稼働情報項目の時刻を知り、稼働情報項目を時系列分析し、分析結果を通信障害の原因の究明に使用することができる。
図11は、コントローラ4の上記のプロセッサがプログラムに従って実行するリングバッファ62の管理に関する動作の他の例を示すフローチャートである。図11の動作における図10の動作と相違する点について説明する。
ステップSt9の判断が否定的である場合、すなわち所定期間内に送信メッセージの送信が完了しない場合には、動作はステップSt20に進む。ステップSt20では、送信処理部52は、送信メッセージを分析者コンピュータ7Bに向けて再度送信する。次に、ステップSt21で、送信処理部52は、再送された送信メッセージの送信が所定期間内に完了したか否か判断する。この判断は、例えば、分析者コンピュータ7Bから受信確認通知を送信処理部52が受信したか否かに基づいて行うことができる。ステップSt21の判断が肯定的である場合、すなわち送信メッセージの送信が完了すると、ステップSt10で、読出し書込み部61はリングバッファ62からステップSt7で読み出された稼働情報項目を消去する。次に、ステップSt11で、メモリ管理部63は、リングバッファ62のリードポインタを更新する。
ステップSt21の判断が否定的である場合、すなわち再送された送信メッセージの送信が所定期間内に完了しない場合には、動作はステップSt22に進む。ステップSt22では、送信処理部52は、リングバッファ62に蓄積された内容のすべて、すなわち異なる時刻の稼働情報項目すべてを読み出して、複数の時刻にわたってリングバッファ62に蓄積された稼働情報項目を含む障害時動作ログファイルを生成する。次に、ステップSt23で、送信処理部52は、障害時動作ログファイル記憶部14に障害時動作ログファイルを送信する。障害時動作ログファイル記憶部14は、受信した障害時動作ログファイルを記憶する。このように、送信処理部52は、障害時動作ログファイル記憶部14に障害時動作ログファイルを記録する記録部として機能する。
次に、ステップSt24で、送信処理部52は、障害時動作ログファイル管理情報を更新する。障害時動作ログファイル管理情報は、コントローラ4で生成されて、障害時動作ログファイル記憶部14に送信された障害時動作ログファイルを管理するために、図示しない記録媒体に記憶されている。ステップSt24では、送信処理部52は、直前のステップSt23で生成された暫定動作ログファイルの名前またはIDを障害時動作ログファイル管理情報に追加する。
図11の動作によれば、通信障害が復旧しない場合には、送信処理部52は、リングバッファ62に以前に蓄積された稼働情報項目を含む障害時動作ログファイルを障害時動作ログファイル記憶部14に記録する。したがって、通信システム1の使用者、例えば分析者コンピュータ7Bの使用者は、障害時動作ログファイル記憶部14から障害時動作ログファイルを読み出
して、稼働情報項目を分析することができる。
上記の通り、障害時動作ログファイルにおいては、稼働情報項目にタイムスタンプが付けられている。したがって、通信システム1の使用者、例えば分析者コンピュータ7Bの使用者は、タイムスタンプを参照して障害時動作ログファイル内の稼働情報項目の時刻を知り、稼働情報項目を時系列分析し、分析結果を通信障害の原因の究明に使用することができる。この場合、通信システム1の使用者、例えば分析者コンピュータ7Bの使用者は、障害時動作ログファイルを分析することによって、コントローラ4が設けられた場所を訪れることなく、リングバッファ62に蓄積された内容を把握することができる。
<変形例> 以上、本発明の実施形態を説明したが、上記の説明は本発明を限定するものではなく、本発明の技術的範囲において、構成要素の削除、追加、置換を含む様々な変形例が考えられる。
例えば、上記の実施形態においては、同一のクラウドサーバ6に、管理者コンピュータ7A、分析者コンピュータ7B、および動作ログファイル記憶部8が設けられている。しかし、これらは、異なるドメインまたは異なる場所に配置されていてもよい。
上記の実施形態においては、管理者コンピュータ7Aは、分析者コンピュータ7Bと異なるコンピュータであるが、分析者コンピュータ7Bと同一のコンピュータであってもよい。
上記の実施形態においては、コントローラ4は、ネットワーク10を介して、障害時動作ログファイルを障害時動作ログファイル記憶部14に記録する。しかし、各コントローラ4に専用の障害時動作ログファイル記憶部を設け、当該コントローラ4が障害時動作ログファイルを専用の障害時動作ログファイル記憶部に記録してもよい。あるいは、障害時動作ログファイル記憶部14をクラウドサーバ6に設けてもよい。
上記の実施形態においては、監視対象の稼働情報項目は、ロボット2に供給される指令値である。しかし、監視対象の稼働情報項目は、ロボット2を監視するセンサで測定された測定値であってもよい。
上記の実施形態においては、監視対象はロボットであるが、他の物体であってもよい。
コントローラ4において、プロセッサが実行する各機能は、プロセッサの代わりに、ハードウェアで実行してもよいし、例えばFPGA(Field Programmable Gate Array)、DSP(Digital Signal Processor)等のプログラマブルロジックデバイスで実行してもよい。