(57)【要約】【課題】データの損失を抑制することができる情報送信装置を提供する。【解決手段】情報送信装置は、監視対象の稼働状態を示す稼働情報を記憶する稼働情報記憶部と、稼働情報を一時的に蓄積するリングバッファと、稼働情報記憶部に記憶された稼働情報を所定の読出し周期で読み出して、稼働情報をリングバッファに書き込む読出し書込み部と、リングバッファに蓄積された稼働情報を読み出して、稼働情報を含む送信メッセージを生成して、送信メッセージを外部装置へ送信する送信処理部と、リングバッファのライトポインタとリードポインタのポインタ位置の差分として示されるリングバッファの空き領域があるか否かを判断するメモリ管理部とを備える。送信処理部により送信メッセージを送信できない場合に、メモリ管理部が空き領域がないと判断するまで、読出し書込み部は、リングバッファに稼働情報を書き込む。【選択図】図２
2019064812.tif 000002
【特許請求の範囲】
【請求項１】
監視対象の稼働状態を示す稼働情報を記憶する稼働情報記憶部と、  書込み位置を示すライトポインタと読出し位置を示すリードポインタとを有し、前記稼働情報を一時的に蓄積するリングバッファと、  前記稼働情報記憶部に記憶された前記稼働情報を所定の読出し周期で読み出して、前記稼働情報を前記リングバッファに書き込む読出し書込み部と、  前記リングバッファに蓄積された前記稼働情報を読み出して、当該稼働情報を含む送信メッセージを生成して、前記送信メッセージを外部装置へ送信する送信処理部と、  前記リングバッファの前記ライトポインタと前記リードポインタのポインタ位置の差分として示される前記リングバッファの空き領域があるか否かを判断するメモリ管理部と、を備え、  前記送信処理部により前記送信メッセージを送信できない場合に、前記メモリ管理部が前記空き領域がないと判断するまで、前記読出し書込み部は、前記リングバッファに前記稼働情報を書き込むことを特徴とする情報送信装置。
【請求項２】
前記読出し書込み部は、タイムスタンプを前記稼働情報に付与して前記リングバッファに書き込むことを特徴とする請求項１に記載の情報送信装置。
【請求項３】
前記読み出し周期は、前記送信処理部が前記送信メッセージを送信する周期とは、別に設定されていることを特徴とする請求項１または２に記載の情報送信装置。
【請求項４】
前記読み出し周期は、前記送信処理部が前記送信メッセージを送信する周期よりも短いことを特徴とする請求項３に記載の情報送信装置。
【請求項５】
前記メモリ管理部が前記空き領域がないと判断した場合に、前記送信処理部は前記リングバッファから前記稼働情報を読み出して前記送信メッセージを前記外部装置へ送信し、前記送信処理部による前記送信メッセージの送信が完了すると、前記読出し書込み部は前記リングバッファから前記稼働情報を消去し、前記メモリ管理部は、前記リードポインタを更新することを特徴とする請求項１から４のいずれか１項に記載の情報送信装置。
【請求項６】
前記空き領域がないと前記メモリ管理部が判断し、前記送信処理部による前記送信メッセージの送信ができない場合に、前記リングバッファに蓄積された前記稼働情報にタイムスタンプを付与した障害時動作ログファイルを、障害時動作ログファイル記憶部に記録する記録部をさらに備えることを特徴とする請求項１から５のいずれか１項に記載の情報送信装置。
【請求項７】
監視対象の稼働状態を示す稼働情報を記憶する稼働情報記憶部と、  書込み位置を示すライトポインタと読出し位置を示すリードポインタとを有し、前記稼働情報を一時的に蓄積するリングバッファと、を備えるコンピュータを、  前記稼働情報記憶部に記憶された前記稼働情報を所定の読出し周期で読み出して、前記稼働情報を前記リングバッファに書き込む読出し書込み部と、  前記リングバッファに蓄積された前記稼働情報を読み出して、当該稼働情報を含む送信メッセージを生成して、前記送信メッセージを外部装置へ送信する送信処理部と、  前記リングバッファの前記ライトポインタと前記リードポインタのポインタ位置の差分として示される前記リングバッファの空き領域があるか否かを判断するメモリ管理部として機能させるプログラムであって、  前記送信処理部により前記送信メッセージを送信できない場合に、前記メモリ管理部が前記空き領域がないと判断するまで、前記読出し書込み部は、前記リングバッファに前記稼働情報を書き込むことを特徴とするプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
監視対象の稼働状態を示す情報をネットワークで管理装置に送信する技術が知られている（特許文献１）。
【先行技術文献】
【特許文献】
【０００２】
【特許文献１】特開２０１６−２０８２４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００３】
上記の技術において、通信経路に障害が発生すると、データが失われるおそれがある。  【０００４】
そこで、本発明の一つの態様は、データの損失を抑制することができる情報送信装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一つの態様に係る情報送信装置は、監視対象の稼働状態を示す稼働情報を記憶する稼働情報記憶部と、書込み位置を示すライトポインタと読出し位置を示すリードポインタとを有し、前記稼働情報を一時的に蓄積するリングバッファと、前記稼働情報記憶部に記憶された前記稼働情報を所定の読出し周期で読み出して、前記稼働情報を前記リングバッファに書き込む読出し書込み部と、前記リングバッファに蓄積された前記稼働情報を読み出して、当該稼働情報を含む送信メッセージを生成して、前記送信メッセージを外部装置へ送信する送信処理部と、前記リングバッファの前記ライトポインタと前記リードポインタのポインタ位置の差分として示される前記リングバッファの空き領域があるか否かを判断するメモリ管理部と、を備え、前記送信処理部により前記送信メッセージを送信できない場合に、前記メモリ管理部が前記空き領域がないと判断するまで、前記読出し書込み部は、前記リングバッファに前記稼働情報を書き込む。  【０００６】
本発明の一つの態様に係るプログラムは、監視対象の稼働状態を示す稼働情報を記憶する稼働情報記憶部と、書込み位置を示すライトポインタと読出し位置を示すリードポインタとを有し、前記稼働情報を一時的に蓄積するリングバッファと、を備えるコンピュータを、前記稼働情報記憶部に記憶された前記稼働情報を所定の読出し周期で読み出して、前記稼働情報を前記リングバッファに書き込む読出し書込み部と、前記リングバッファに蓄積された前記稼働情報を読み出して、当該稼働情報を含む送信メッセージを生成して、前記送信メッセージを外部装置へ送信する送信処理部と、前記リングバッファの前記ライトポインタと前記リードポインタのポインタ位置の差分として示される前記リングバッファの空き領域があるか否かを判断するメモリ管理部として機能させるプログラムであって、前記送信処理部により前記送信メッセージを送信できない場合に、前記メモリ管理部が前記空き領域がないと判断するまで、前記読出し書込み部は、前記リングバッファに前記稼働情報を書き込む。
【発明の効果】
【０００７】
本発明の態様においては、送信処理部により送信メッセージを送信できない場合でも、空き容量がなくなるまでは、リングバッファに稼働情報を書き込むことが可能である。したがって、通信障害によって、送信メッセージを送信できなくても、稼働情報がリングバッファに記憶され、稼働情報の損失を抑制することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、本発明の実施形態に係る通信システムの概略を示すブロック図である。
【図２】図２は、本発明の実施形態に係る通信システムの詳細を示すブロック図である。
【図３】図３は、通信システムのコントローラのパラメータ記憶部に記憶されたパラメータの例を示す表である。
【図４】図４は、通信システムの管理者コンピュータとコントローラとの情報交換を示すシーケンス図である。
【図５】図５は、管理者コンピュータからコントローラに送信される設定情報の一例を示す図である。
【図６】図６は、コントローラから管理者コンピュータに送信される設定返信情報の一例を示す図である。
【図７】図７は、通信システム内の情報送信を示すシーケンス図である。
【図８】図８は、コントローラから分析者コンピュータに送信される送信メッセージの一例を示す図である。
【図９】図９は、コントローラから動作ログファイル記憶部に送信される動作ログファイルの一例を示す図である。
【図１０】図１０は、コントローラにおけるリングバッファの管理に関する動作の例を示すフローチャートである。
【図１１】図１１は、コントローラにおけるリングバッファの管理に関する動作の他の例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、添付の図面を参照しながら本発明の実施形態を説明する。  
【００１０】
＜通信システムの概略構成＞  図１は、本発明の実施形態に係る通信システム１の概略を示すブロック図である。図１に示すように、通信システム１は、複数のロボット（監視対象）２をそれぞれ制御および監視する複数のコントローラ（情報送信装置）４と、これらのコントローラ４の遠隔にあるクラウドサーバ６とを備える。各ロボット２は、工場内での製造ロボットであり、例えば多関節ロボットである。  
【００１１】
クラウドサーバ６は、複数のコンピュータ７と、動作ログファイル記憶部８とを備える。コンピュータ７および動作ログファイル記憶部８は、ネットワーク１０に接続されている。  
【００１２】
ネットワーク１０は、例えば社内ＬＡＮ（Local Area Network）でもよいし、公衆ネットワークでもよい。また、ネットワーク１０は有線ネットワークでもよいし、無線ネットワークでもよい。各コントローラ４は、ゲートウェイ（ＧＷ）１２を介してネットワーク１０に接続されている。各ゲートウェイ１２は、コントローラ４に対するエッジコンピューティング処理、およびネットワーク１０とコントローラ４の間の通信プロトコル変換などの処理を行う。  
【００１３】
また、ネットワーク１０には、障害時動作ログファイル記憶部１４が接続されている。  
【００１４】
＜通信システムの詳細構成＞  図２は、通信システム１の詳細、特にコントローラ４とクラウドサーバ６の詳細を示すブロック図である。但し、図２では、ネットワーク１０およびゲートウェイ１２の図示を省略する。  
【００１５】
図２に示すように、クラウドサーバ６には、管理者コンピュータ７Ａ、分析者コンピュータ（外部装置）７Ｂ、動作ログファイル記憶部８およびメッセージ記憶部９が設けられている。  
【００１６】
コントローラ４は、設定情報受信保存部４０、送信部５０、送信データ蓄積部６０、ロボット制御部２０、および共有メモリ（稼働情報記憶部）３０を備える。設定情報受信保存部４０は、パラメータ記憶部４１、設定情報送受信部４２、およびパラメータ更新部４３を備える。送信部５０は、パラメータ処理部５１および送信処理部５２を備える。送信データ蓄積部６０は、読出し書込み部６１、リングバッファ６２、およびメモリ管理部６３を備える。ロボット制御部２０は、プロセッサ２１を備える。  
【００１７】
コントローラ４は、当該コントローラ４に対応するロボット２の稼働状態を示す少なくとも１つの稼働情報項目を含む送信メッセージを周期的に分析者コンピュータ７Ｂに送信することができる。コントローラ４は、設定情報受信保存部４０のパラメータ記憶部４１に記憶された複数のパラメータに従って、送信メッセージを送信する。管理者コンピュータ７Ａは、これらパラメータを設定するための設定情報を含むメッセージをコントローラ４に送信する。コントローラ４は、複数の分析者コンピュータ７Ｂに送信メッセージを送信してもよい。  
【００１８】
ロボット制御部２０のプロセッサ２１は、ロボット制御プログラムに従って、ロボット２の状態に応じてロボット２の動作を制御するための各種の指令値を生成し、これら指令値をロボット２に与える。共有メモリ３０（稼働情報記憶部）はこれら指令値を記憶する。プロセッサ２１は、ある瞬間の各種の指令値を生成するたびに、共有メモリ３０に上書きする。すなわち、共有メモリ３０においては、複数の指令値が記憶されると、直前の複数の指令値が消去される。各指令値が各稼働情報項目である。  
【００１９】
コントローラ４の設定情報受信保存部４０の設定情報送受信部４２は、管理者コンピュータ７Ａと通信する。設定情報送受信部４２が管理者コンピュータ７Ａから設定情報を含むメッセージを受信すると、パラメータ更新部４３は、設定情報に応じてパラメータ記憶部４１に記憶されたパラメータを更新する。パラメータ記憶部４１に記憶されたパラメータが更新されると、設定情報送受信部４２は、パラメータ記憶部４１に記憶されたすべてのパラメータを示す設定返信情報を管理者コンピュータ７Ａに送信する。設定返信情報によって、管理者コンピュータ７Ａの使用者は、パラメータ記憶部４１に記憶されているすべてのパラメータの状態を確認することができる。  
【００２０】
コントローラ４の送信部５０の送信処理部５２は、分析者コンピュータ７Ｂ、動作ログファイル記憶部８、障害時動作ログファイル記憶部１４と通信する。送信処理部５２は、少なくとも１つの稼働情報項目を含む送信メッセージを周期的に分析者コンピュータ７Ｂに送信することができる。また、送信処理部５２は、少なくとも１つの稼働情報項目を含む動作ログファイルを周期的に動作ログファイル記憶部８に送信することができる。送信処理部５２は、動作ログファイルを複数の動作ログファイル記憶部８に送信してもよい。さらに、送信処理部５２は、分析者コンピュータ７Ｂとの通信障害が発生すると、複数の時刻にわたって蓄積された少なくとも１つの稼働情報項目を含む障害時動作ログファイルを障害時動作ログファイル記憶部１４に送信することができる。送信処理部５２は、障害時動作ログファイルを複数の障害時動作ログファイル記憶部１４に送信してもよい。  
【００２１】
管理者コンピュータ７Ａから送信された設定情報に応じてパラメータ記憶部４１に記憶されたパラメータが更新されると、即座にまたは一定期間経過後に、送信部５０のパラメータ処理部５１は、パラメータ記憶部４１からパラメータ記憶部４１に記憶されたすべてのパラメータを受け取る。パラメータ処理部５１は、これらパラメータのうち送信処理部５２の送信に関わるパラメータを送信処理部５２に渡す。ここで、送信処理部５２の送信に関わるパラメータは、例えば、送信メッセージの送信周期を指定するパラメータを含む。また、パラメータ処理部５１は、これらパラメータのうち一部のパラメータを送信データ蓄積部６０に渡す。一部のパラメータは、例えば、送信メッセージに含めるべき稼働情報項目を指定する稼働情報パラメータ、共有メモリ３０から稼働情報項目を読み出す読出し周期を指定するパラメータを含む。  
【００２２】
送信データ蓄積部６０の読出し書込み部６１は、稼働情報パラメータで指定された稼働情報項目を、読出し周期を指定するパラメータで指定された読出し周期で共有メモリ３０から読み出して、リングバッファ６２に書き込む。メモリ管理部６３は、リングバッファ６２の書込み位置を示すライトポインタと読出し位置を示すリードポインタを管理し、ライトポインタとリードポインタのポインタ位置の差分として示されるリングバッファ６２の空き領域があるか否かを判断する。共有メモリ３０は、ロボット制御部２０のプロセッサ２１と、送信データ蓄積部６０の読出し書込み部６１に共有されている。  
【００２３】
送信処理部５２は、リングバッファ６２に蓄積された稼働情報項目を含む送信メッセージを、送信周期を指定するパラメータで指定された送信周期で生成し、当該送信メッセージを分析者コンピュータ７Ｂに送信する。したがって、読出し書込み部６１、リングバッファ６２および送信処理部５２は、共有メモリ３０に記憶された稼働情報項目をパラメータで指定された読出し周期で読み出して、送信メッセージを生成する送信メッセージ生成部として機能する。送信メッセージ生成部は、共有メモリ３０に記憶された複数の稼働情報項目のうち、情報設定情報で指定された稼働情報項目を選択して、送信メッセージを生成する。また、送信処理部５２は、送信メッセージ生成部により生成された送信メッセージを、指定
された送信周期に、分析者コンピュータ７Ｂへ送信する送信実行部として機能する。  
【００２４】
分析者コンピュータ７Ｂは、送信処理部５２から送信メッセージを受信するたびに、メッセージ記憶部９に送信メッセージを記憶する。したがって、分析者コンピュータ７Ｂの使用者は、周期的に受信した送信メッセージを閲覧することができる。  
【００２５】
送信処理部５２による送信メッセージの送信周期は、好ましくは読出し書込み部６１による稼働情報項目の読出し周期よりも長く設定される。これにより、短い読出し周期で読み出されて蓄積された、各読出し周期での稼働情報を含む送信メッセージを送信することができる。  
【００２６】
また、送信処理部５２は、送信メッセージの生成および送信とは別に、リングバッファ６２に記憶された稼働情報項目を含む動作ログファイルを生成し、動作ログファイルを周期的に動作ログファイル記憶部８に送信する。動作ログファイル記憶部８は、周期的に受信する動作ログファイルを蓄積する。動作ログファイルを送信する周期は、好ましくは、送信メッセージを送信する周期よりも長く設定される。これにより、通信システム１の使用者、例えば分析者コンピュータ７Ｂの使用者は、ある程度の期間にわたる稼働情報項目を含む動作ログファイルを所望の時に参照することができる。  
【００２７】
より具体的には、送信処理部５２は、リングバッファ６２に記憶された稼働情報項目を随時読み出して、当該稼働情報項目から暫定動作ログファイルを生成して記憶しておく。そして、送信処理部５２は、動作ログファイルの送信周期に、複数の暫定動作ログファイルを統合すなわち連結することによって、ある程度の期間にわたる動作ログファイルを生成し、動作ログファイルを動作ログファイル記憶部８に送信する。但し、動作ログファイルの送信周期が短い場合には、送信処理部５２は、１つの暫定動作ログファイルをそのまま動作ログファイルとして動作ログファイル記憶部８に送信してよい。また、複数の暫定動作ログファイルを連結することによって生成された動作ログファイルが所定量より大きいデータ量を有する場合には、送信処理部５２は、動作ログファイルを分割して送信してもよい。  
【００２８】
動作ログファイルに含まれる稼働情報項目は、送信メッセージに含まれる稼働情報項目と同じでもよいが、送信メッセージに含まれる稼働情報項目に加えてさらに多くの稼働情報項目を含んでもよい。  
【００２９】
さらに送信処理部５２は、分析者コンピュータ７Ｂとの通信が発生すると、複数の時刻にわたってリングバッファ６２に蓄積された稼働情報項目を含む障害時動作ログファイルを生成し、障害時動作ログファイルを障害時動作ログファイル記憶部１４に送信する。障害時動作ログファイル記憶部１４は、受信した障害時動作ログファイルを記憶する。これにより、通信システム１の使用者、例えば分析者コンピュータ７Ｂの使用者は、通信障害の前にある程度の期間にわたってリングバッファ６２に蓄積された稼働情報項目を含む障害時動作ログファイルを、通信障害後の所望の時に参照することができる。障害時動作ログファイルに含まれる稼働情報項目は、送信メッセージに含まれる稼働情報項目と同じでよい。  
【００３０】
動作ログファイルおよび障害時動作ログファイルは、稼働情報項目とタイムスタンプを有する。タイムスタンプは、共有メモリ３０への稼働情報項目の書込み時に当該稼働情報項目に付与されたカウンタ値でもよいし、共有メモリ３０からの稼働情報項目の読出し時刻であってもよい。送信データ蓄積部６０の読出し書込み部６１は、稼働情報項目にタイムスタンプを付けて、リングバッファ６２に書き込む。送信処理部５２は、リングバッファ６２から読み出された稼働情報項目とタイムスタンプを利用して、動作ログファイルおよび障害時動作ログファイルを生成する。  
【００３１】
通信システム１の使用者、例えば分析者コンピュータ７Ｂの使用者は、タイムスタンプを参照して動作ログファイルおよび障害時動作ログファイル内の稼働情報項目の時刻を知り、これらファイル内の稼働情報項目を時系列分析することができる。特に、障害時動作ログファイルについては、通信障害の直前の稼働情報項目を時系列分析することによって、通信障害の直前のロボット２の稼働状態を推定することができる。  
【００３２】
このようなタイムスタンプは、送信メッセージにも含めることができる。この場合には、分析者コンピュータ７Ｂの使用者は、タイムスタンプを参照して送信メッセージ内の稼働情報項目の時刻を知り、送信メッセージ内の稼働情報項目を時系列分析することができる。また、送信メッセージ内のタイムスタンプと、動作ログファイルまたは障害時動作ログファイル内のタイムスタンプとを照合することによって、分析者コンピュータ７Ｂの使用者は、送信メッセージに含まれるべき稼働情報項目が実際に送信メッセージに含まれているか否かを知ることができる。  
【００３３】
上記の設定情報送受信部４２、パラメータ更新部４３、パラメータ処理部５１、送信処理部５２、読出し書込み部６１、およびメモリ管理部６３の機能は、コントローラ４におけるコンピュータのプロセッサ（図示せず）が記録媒体（図示せず）に記憶されたプログラムを読み出し実行することによって実現可能である。この場合、記録媒体から読み出されたプログラム（プログラムコード）自体が実施形態の機能を実現することになる。また、当該プログラムを記録した記録媒体は本発明を構成することができる。  
【００３４】
この実施形態では、クラウドサーバ６からの指示に応答して、コントローラ４がクラウドサーバ６で必要な情報項目を送信するのではなく、クラウドサーバ６からの設定情報に基づいて、設定情報に指定された送信周期で設定情報に指定された項目を有する送信メッセージをコントローラ４が送信する。したがって、設定情報受信保存部４０の処理系統は、送信部５０の処理系統と異なっていてもよく、設定情報送受信部４２の通信ポートが送信処理部５２の通信ポートと異なっていてもよい。この場合には、設定情報送受信部４２による設定情報の受信および設定返信情報の送信の時期と、送信処理部５２による送信メッセージ、動作ログファイルおよび障害時動作ログファイルの送信の時期を容易に異ならせることができる。  
【００３５】
＜パラメータ記憶部に記憶されたパラメータの例＞  図３は、パラメータ記憶部４１に記憶されたパラメータの例を示す。図３に示されるパラメータは、例であって、他のパラメータを使用してもよいし、一部のパラメータを使用しなくてもよい。この実施形態のパラメータ記憶部４１は、キーバリューデータベースであって、各パラメータは「キー」と「バリュー」の対を有する。この実施形態では、各キーは４つの文字の列である。図３の「解説」は、理解の容易のために示されており、パラメータ記憶部４１に記憶されてもよいが、記憶されていなくてもよい。  
【００３６】
これらパラメータは、制御パラメータと稼働情報パラメータに大別される。各稼働情報パラメータは、１つの稼働情報項目に対応しており、対応する稼働情報項目を送信メッセージに含めるべきか否かをバリューで規定する。稼働情報パラメータのバリューは、オンまたはオフを取りうる。稼働情報パラメータのバリューのオンは、当該稼働情報パラメータに対応する稼働情報項目を送信メッセージに含めるべきことを意味する。稼働情報パラメータのバリューのオフは、当該稼働情報パラメータに対応する稼働情報項目を送信メッセージに含めるべきでないことを意味する。例えば、キーr000の稼働情報パラメータのバリューがオンであれば、当該稼働情報パラメータに対応する稼働情報項目Ｘが読出し書込み部６１によって共有メモリ３０から読み出され、送信処理部５２によって送信メッセージに含められる。例えば、キーr005の稼働情報パラメータのバリューがオフであれば、当該稼働情報パラメータに対応する稼働情報項目Ｒｘは読出し書込み部６１によって共有メモリ３０から読み出されず、送信メッセージに含められない。  
【００３７】
すべての稼働情報パラメータについて、パラメータ記憶部４１に記憶されている初期のバリューはオフである。  
【００３８】
一方、各制御パラメータは、送信部５０および送信データ蓄積部６０の動作を規定する。制御パラメータは、バリューがオンまたはオフを取りうる制御パラメータ（図３の例ではキーi000〜i105の制御パラメータ）と、バリューが具体的数値または具体的記号を取りうる制御パラメータ（図３の例ではキーi200〜i205の制御パラメータ）に大別される。制御パラメータのバリューのオンは、当該制御パラメータに対応する制御項目を実行すべきであることを意味する。制御パラメータのバリューのオフは、当該制御パラメータに対応する制御項目を実行すべきでないことを意味する。例えば、キーi000の制御パラメータのバリューがオンであれば、送信処理部５２は送信メッセージに送信日付を含めるのであって、キーi002の制御パラメータのバリューがオフであれば、送信処理部５２は送信メッセージにコントローラ４が動作するソフトウェアのバージョン情報を含めない。  
【００３９】
また、キーi100〜i105の制御パラメータ（バリューがオンまたはオフを取りうる制御パラメータ）は、キーi200〜i205の制御パラメータ（バリューが具体的数値または記号を取りうる制御パラメータ）にそれぞれ対応する。具体的には、キーi100の制御パラメータは、送信メッセージのデータフォーマットのオン（有効）またはオフ（無効）を指定する。当該制御パラメータがオンであれば、キーi200の制御パラメータのバリューで指定されるデータフォーマットに従って、送信処理部５２は送信メッセージを生成する。キーi100の制御パラメータがオンであって、キーi200の制御パラメータのバリューが０であれば、送信処理部５２は、JSON（登録商標）に従って、送信処理部５２は送信メッセージを生成する。キーi100の制御パラメータがオンであって、キーi200の制御パラメータのバリューが１であれば、送信処理部５２は、カンマ区切り（ＣＳＶ）形式に従って、送信処理部５２は送信メッセージを生成する。  
【００４０】
キーi101の制御パラメータは、送信メッセージの送信周期タイマーのオン（有効）またはオフ（無効）を指定する。当該制御パラメータがオンであれば、キーi201の制御パラメータのバリューで指定される送信周期値に従って、送信処理部５２は送信メッセージを生成して、分析者コンピュータ７Ｂに送信する。キーi201の制御パラメータのバリューは、最大で2678400秒（１ヶ月（31*24*60*60秒））を指定することができる。図３では、キーi201の制御パラメータのバリューとして0.1秒が指定されている。  
【００４１】
送信メッセージの送信周期に代えて、送信時刻を制御パラメータで指定してもよい。この場合には、例えば、トラフィックが少ない時刻または分析者コンピュータ７Ｂの使用者にとって都合がよい時刻に、分析者コンピュータ７Ｂは送信メッセージを受信することができる。  
【００４２】
キーi102の制御パラメータは、動作ログファイルのアップロード周期タイマーのオン（有効）またはオフ（無効）を指定する。当該制御パラメータがオンであれば、キーi202の制御パラメータのバリューで指定される周期値に従って、送信処理部５２は、動作ログファイルを動作ログファイル記憶部８に送信すなわちアップロードする。キーi202の制御パラメータのバリューは、最大で2678400秒（１ヶ月（31*24*60*60秒））を指定することができる。図３では、キーi202の制御パラメータのバリューとして2678400秒が指定されている。  
【００４３】
動作ログファイルのアップロード周期に代えて、動作ログファイルのアップロード時刻を制御パラメータで指定してもよい。この場合には、例えば、トラフィックが少ない時刻に、コントローラ４は動作ログファイルを動作ログファイル記憶部８に送信することができる。  
【００４４】
キーi103の制御パラメータは、動作ログファイルの宛先ＩＰアドレスのオン（有効）またはオフ（無効）を指定する。当該制御パラメータがオンであれば、キーi203の制御パラメータの
バリューで指定される動作ログファイル記憶部８の宛先ＩＰアドレスに向けて、送信処理部５２は動作ログファイルを送信する。キーi104の制御パラメータは、動作ログファイルの宛先ポートのオン（有効）またはオフ（無効）を指定する。当該制御パラメータがオンであれば、キーi204の制御パラメータのバリューで指定される動作ログファイル記憶部８の宛先ポートに向けて、送信処理部５２は動作ログファイルを送信する。  
【００４５】
送信処理部５２は、複数の動作ログファイル記憶部８に動作ログファイルを送信してもよい。この場合には、さらなる制御パラメータが使用される。  
【００４６】
また、制御パラメータは、分析者コンピュータ７Ｂを示す宛先情報パラメータおよび当該宛先情報パラメータのオン（有効）またはオフ（無効）を指定する制御パラメータを有してもよい。この場合には、送信メッセージの宛先を任意に指定することができる。送信処理部５２は、複数の分析者コンピュータ７Ｂに送信メッセージを送信してもよい。この場合には、制御パラメータは、複数の分析者コンピュータ７Ｂをそれぞれ示す複数の宛先情報パラメータおよびそれらの宛先情報パラメータのオン（有効）またはオフ（無効）を指定する複数の制御パラメータを有してもよい。  
【００４７】
キーi100，i101のいずれかの制御パラメータがオフの場合、キーi200，i201の制御パラメータのバリューに関わらず、送信処理部５２は送信メッセージを生成せず送信もしない。また、キーi102〜i104のいずれかの制御パラメータがオフの場合、キーi202〜i204の制御パラメータのバリューに関わらず、送信処理部５２は動作ログファイルを生成せず送信もしない。  
【００４８】
キーi105の制御パラメータは、共有メモリ３０からの読出し周期タイマーのオン（有効）またはオフ（無効）を指定する。当該制御パラメータがオンであれば、キーi205の制御パラメータのバリューで指定される周期値に従って、送信データ蓄積部６０の読出し書込み部６１は、稼働情報項目を共有メモリ３０から読み出して、リングバッファ６２に書き込む。図３では、キーi205の制御パラメータのバリューとして0.01秒が指定されている。キーi105の制御パラメータがオフの場合、キーi205の制御パラメータのバリューに関わらず、送信データ蓄積部６０の読出し書込み部６１は、稼働情報項目を共有メモリ３０から読み出さず、リングバッファ６２に書き込まない。  
【００４９】
バリューがオンまたはオフを取りうるすべての制御パラメータについて、パラメータ記憶部４１に記憶されている初期のバリューはオフである。一方、バリューが具体的数値または具体的記号を取りうるすべての制御パラメータについて、パラメータ記憶部４１には所定の初期のバリューが記憶されている。  
【００５０】
パラメータ記憶部４１は、図３に示すパラメータに加えて他のパラメータを記憶してもよい。例えば、送信メッセージにタイムスタンプを含めるか否かを指定する制御パラメータをパラメータ記憶部４１が記憶してもよい。  
【００５１】
＜管理者コンピュータとコントローラとの情報交換＞  図４は、通信システムの管理者コンピュータ７Ａとコントローラ４との情報交換を示すシーケンス図である。管理者コンピュータ７Ａは、管理者コンピュータ７Ａの使用者の所望の時に設定情報を含むメッセージをコントローラ４に送信することができる。コントローラ４では、設定情報送受信部４２が設定情報を含むメッセージを受信すると、パラメータ更新部４３は、設定情報に応じてパラメータ記憶部４１に記憶されたパラメータを更新する。  
【００５２】
パラメータ記憶部４１に記憶されたパラメータが更新されると、コントローラ４の設定情報送受信部４２は、返信情報送信部として機能し、設定返信情報を管理者コンピュータ７Ａに送信する。設定情報を受信するたびに、コントローラ４は、パラメータを更新して、設定返信情報を管理者コンピュータ７Ａに送信する。  
【００５３】
図５は、管理者コンピュータ７Ａからコントローラ４に送信される設定情報の一例を示す図である。設定情報では、キーバリューデータベースであるパラメータ記憶部４１のキーバリューに従って、管理者コンピュータ７Ａの使用者が設定したいパラメータのキーおよび当該パラメータのバリューが指定されている。図５の例では、キーi000，i001，i100，i101，r000，r001，r002，r003，r004，r005，r200，r201，r202，r203，r204，r205の各パラメータについては、当該パラメータのキーと、当該パラメータのバリュー（オン）が設定情報に含まれている。これらパラメータは、バリューがオンまたはオフを取りうるパラメータであって、パラメータ記憶部４１に記憶されている初期のバリューはオフである。これらパラメータについては、管理者コンピュータ７Ａの使用者がオンに切り替えたい場合に、設定情報において、キーを指定し、バリューをオンに指定すればよい。設定情報に従って、パラメータ記憶部４１においては、キーi000，i001，i100，i101，r000，r001，r002，r003，r004，r005，r200，r201，r202，r203，r204，r205の各パラメータがオンに切り替えられる。管理者コンピュータ７Ａの使用者が初期のバリュー（オフ）を維持したい場合に、設定情報において当該パラメータのキーもバリューも指定されないので、設定情報の量を削減することができる。  
【００５４】
バリューがオンまたはオフを取りうるパラメータについて、一旦オンに切り替えた後に、管理者コンピュータ７Ａの使用者が再びオフに切り替えたい場合には、当該パラメータのキーとバリュー（バリューはオフ）の組を含む設定情報を管理者コンピュータ７Ａがコントローラ４に送信すればよい。このようにして、有効にしたい制御パラメータの自由度および送信メッセージに含まれる稼働情報項目の自由度が高められる。  
【００５５】
図５の例では、キーi200の制御パラメータ（送信メッセージのデータフォーマット）についてはバリューとして１（カンマ区切り形式）が指定されている。キーi201の制御パラメータ（送信メッセージの送信周期タイマーの周期値）についてはバリューとして０．０６６秒が指定されている。これら制御パラメータは、バリューが具体的数値または具体的記号を取りうる制御パラメータであり、パラメータ記憶部４１には所定の初期のバリューが記憶されている。これらパラメータについては、管理者コンピュータ７Ａの使用者が既存のバリューから所望のバリューに変更したい場合に、設定情報においてキーとバリューの組を指定すればよい。管理者コンピュータ７Ａの使用者が既存のバリューを維持したい場合に、設定情報において当該パラメータのキーもバリューも指定されないので、設定情報の量を削減することができる。  
【００５６】
一旦、設定情報を送信した後、管理者コンピュータ７Ａの使用者があるパラメータを変更したい場合には、管理者コンピュータ７Ａは、管理者コンピュータ７Ａの使用者の所望の時に当該パラメータのキーとバリューの組を含む設定情報を含むメッセージをコントローラ４に送信することができる。パラメータ更新部４３は、新たな設定情報に応じてパラメータ記憶部４１に記憶されたパラメータを更新する。  
【００５７】
図５の例では、設定情報は、制御パラメータの更新を指示する制御パラメータ設定情報と、稼働情報パラメータの更新を指示する稼働情報設定情報を含む。ここで、制御パラメータはキーi000，i001，i100，i101，i200，i201のパラメータである。また、稼動情報パラメータは、キーr200，r201，r202，r203，r204，r205のパラメータである。但し、管理者コンピュータ７Ａは、制御パラメータの更新を指示する制御パラメータ設定情報のみを含むメッセージを送信してもよい。制御パラメータ設定情報は、制御パラメータのキーと当該制御パラメータのバリューを持つ組を含む。また、管理者コンピュータ７Ａは、稼働情報パラメータの更新を指示する稼働情報設定情報のみを含むメッセージを送信してもよい。稼働情報設定情報は、稼働情報パラメータのキーとバリュー（オンまたはオフ）の組を含む。  
【００５８】
以上のように、この実施形態の設定情報は、キーバリューデータベースであるパラメータ記憶部に記憶されたパラメータのうち、更新すべきパラメータのキーとバリューの組を含む。したがって、所定の多数のフィールドに多数のパラメータの設定値を記入する形式の設定情報よりも、設定情報を容易に作成することができる。例えば、設定情報において、パラメータの順番は可変であり、パラメータの数も限定されず、パラメータの追加も容易である。また、設定情報においてオフにすべきパラメータの指定も容易である。  
【００５９】
また、この実施形態では、設定情報によって、送信メッセージの送信周期または送信時刻と、動作ログファイルのアップロード周期またはアップロード時刻と、共有メモリ３０からの稼働情報の読出し周期とを変更することが可能である。送信メッセージの送信周期または送信時刻を変更することによって、送信メッセージの送信周期または送信時刻を最適化することができる。動作ログファイルのアップロード周期またはアップロード時刻を変更することによって、動作ログファイルのアップロード周期またはアップロード時刻を最適化することができる。稼働情報の読出し周期を変更することによって、稼働情報から生成される送信メッセージの量を最適化することができる。  
【００６０】
さらにこの実施形態では、設定情報によって、送信メッセージに含まれる稼働情報項目を任意に指定することができる。したがって、送信すべき項目の自由度が高められる。  
【００６１】
図６は、コントローラから管理者コンピュータに送信される設定返信情報の一例を示す図である。設定返信情報は、パラメータ記憶部４１に記憶されたすべてのパラメータを示す。すなわち、この実施形態では、設定返信情報は、パラメータ記憶部４１に記憶されたすべての制御パラメータについての制御パラメータ設定返信情報と、パラメータ記憶部４１に記憶されたすべての稼働情報パラメータについての稼働情報設定返信情報を含む。  
【００６２】
図６に示すように、設定返信情報は、各制御パラメータのキーと当該制御パラメータのバリューを持つ組を含む。また、設定返信情報は、各稼働情報パラメータのキーと当該稼働情報パラメータのバリューを持つ組を含む。該稼働情報パラメータのバリューとは、すなわち、当該稼働情報パラメータに対応する稼働情報項目を送信すべきか否かを示すバリューである。設定返信情報によって、管理者コンピュータ７Ａの使用者は、パラメータ記憶部４１に記憶されているすべての制御パラメータの状態、およびパラメータ記憶部４１に記憶されているすべての稼働情報パラメータの状態を確認することができる。そして、必要に応じて、再度、設定情報を含むメッセージを管理者コンピュータ７Ａはコントローラ４に送信する。  
【００６３】
＜コントローラからの情報送信＞  図７は、通信システム１内のコントローラ４からロボット２と分析者コンピュータ７Ｂと動作ログファイル記憶部８への情報送信を示すシーケンス図である。  
【００６４】
上記の通り、コントローラ４のプロセッサ２１は、ロボット２に逐次、複数の指令値（稼働情報項目）を供給する。ロボット２への稼働情報項目の供給は、上記の設定情報とは無関係である。  
【００６５】
コントローラ４の読出し書込み部６１は、設定情報でオンに指定された稼働情報パラメータに対応する稼働情報項目を、設定情報でオンにされた読出し周期タイマーに対応する読出し周期で共有メモリ３０から読み出して、リングバッファ６２に書き込む。  
【００６６】
コントローラ４の送信処理部５２は、設定情報でオンにされた送信周期タイマーに対応する送信周期または設定情報でオンにされた送信時刻で、リングバッファに記憶された稼働情報項目を読み出す。続いて、送信処理部５２は、読み出された稼働情報項目を含む送信メッセージ送信メッセージを生成して、分析者コンピュータ７Ｂに送信する。送信メッセージを受信すると、分析者コンピュータ７Ｂは、送信メッセージをメッセージ記憶部９に記憶する。  
【００６７】
また、コントローラ４の送信処理部
５２は、設定情報でオンにされた動作ログファイルのアップロード周期タイマーに対応するアップロード周期または設定情報でオンにされたアップロード時刻で、動作ログファイルを生成し、動作ログファイルを動作ログファイル記憶部８に送信する。上記の通り、送信処理部５２は、動作ログファイルの送信周期に、複数の暫定動作ログファイルを統合すなわち連結することによって動作ログファイルを生成し、動作ログファイルを動作ログファイル記憶部８に送信する。動作ログファイルを受信すると、動作ログファイル記憶部８は、動作ログファイルを記憶する。  
【００６８】
以上のように、この実施形態においては、管理者コンピュータ７Ａから受信される制御パラメータ設定情報の制御パラメータによって、共有メモリ３０に記憶された稼働情報項目の読出し周期と、稼働情報項目を含む送信メッセージの送信周期または送信時刻を指定することが可能である。送信メッセージの送信周期または送信時刻を指定することにより、コントローラ４から分析者コンピュータ７Ｂに送信される送信メッセージの送信周期または送信時刻、ひいてはトラフィックを最適化することができる。また、共有メモリ３０から稼働情報を読み出す読出し周期を指定することにより、送信メッセージの量を最適化することができる。  
【００６９】
図８は、コントローラ４から分析者コンピュータ７Ｂに送信される送信メッセージの一例を示す図である。送信メッセージは、制御パラメータのキーと当該制御パラメータのバリューを持つ組を含む。例えば、図８の例で、「i001,232956789」の組は、送信メッセージの送信時刻が２３時２９分５６．７８９秒であることを意味し、i001がキー、232956789がバリューである。送信メッセージは、稼働情報項目のキーと当該稼働情報項目のバリューを持つ組を含む。例えば、図８の例で、「r202,2.096525」の組は、ロボットのジョイントＪ３の指令値が2.096525度であることを意味し、r202がキー、2.096525がバリューである。このように、送信メッセージの制御パラメータおよび稼働情報項目の各々を、キーとバリューで表現することによって、送信メッセージの内容を容易に理解することができる。  
【００７０】
図９は、コントローラ４から動作ログファイル記憶部８に送信される動作ログファイルの一例を示す図である。動作ログファイルも制御パラメータのキーと当該制御パラメータのバリューを持つ組を含み、稼働情報項目のキーと当該稼働情報項目のバリューを持つ組を含む。したがって、動作ログファイルの内容を容易に理解することができる。また、図９の例において、i000,20170620、i001,212956789、i000,20170620、i001,222956789、およびi000,20170620、i001,232956789は、タイムスタンプである。これらタイムスタンプは、送信処理部５２が暫定動作ログファイルを生成するときに、暫定動作ログファイルに含めることができ、送信処理部５２が複数の暫定動作ログファイルを連結して、動作ログファイルを生成するときに、動作ログファイルに含めることができる。通信システム１の使用者、例えば分析者コンピュータ７Ｂの使用者は、タイムスタンプを参照して動作ログファイル内の稼働情報項目の時刻を知り、稼働情報項目を時系列分析することができる。上記の通り、タイムスタンプは、送信メッセージにも含めることができる。  
【００７１】
＜制御パラメータの不整合の防止＞  コントローラ４のパラメータ記憶部４１に記憶されている制御パラメータには、他の制御パラメータのバリューがパラメータ記憶部４１で所定のバリューでなければ利用できない制御パラメータがある。例えば、図３の例で、キーi100の制御パラメータのバリューがオンでない場合には、送信メッセージのデータフォーマットが指定できないので、キーi000〜i002の制御パラメータまたはキーi101の制御パラメータのバリューがオンであっても、送信メッセージを生成することができない。また、キーi101の制御パラメータのバリューがオンでない場合には、送信メッセージの送信周期が指定できないので、キーi000〜i002の制御パラメータまたはキーi100の制御パラメータのバリューがオンであっても、送信メッセージを生成することができない。  
【００７２】
このようなパラメータのバリューの不整合を回避するため、この実施形態では、２つの方策がとられる。１つの方策は、管理者コンピュータ７Ａが管理者コンピュータ７Ａの使用者に注意することである。具体的には、管理者コンピュータ７Ａで設定情報を生成するための作業を行っている時、使用者がある制御パラメータのバリューをオンに変更する指示を管理者コンピュータ７Ａに与えるとする。このとき、当該制御パラメータのバリューがオンであれば、やはりバリューがオンであるべき他の制御パラメータを、管理者コンピュータ７Ａは、なんらかの形式で使用者に知らせればよい。例えば、使用者がキーi000の制御パラメータのバリューをオンに変更する指示を管理者コンピュータ７Ａに与えると、管理者コンピュータ７Ａは、キーi100，i101の制御パラメータのバリューもオンであるべきことを使用者に知らせる。  
【００７３】
逆に、使用者がある制御パラメータのバリューをオフに変更する指示を管理者コンピュータ７Ａに与えると、当該制御パラメータのバリューをオフに変更することに伴う影響を管理者コンピュータ７Ａは、なんらかの形式で使用者に知らせればよい。例えば、使用者がキーi101の制御パラメータのバリューをオフに変更する指示を管理者コンピュータ７Ａに与えると、管理者コンピュータ７Ａは、送信メッセージが送信されなくなることを管理者コンピュータ７Ａのディスプレイで使用者に知らせてもよいし、キーi100もオフに変更すべきか否かをディスプレイで使用者に尋ねてもよい。  
【００７４】
もう１つの方策は、コントローラ４が設定返信情報を用いて、管理者コンピュータ７Ａの使用者に注意することである。具体的には、設定情報に指定されたある制御パラメータのバリューとパラメータ記憶部４１に記憶された他の制御パラメータのバリューの組合せが所定の組合せでない場合に、コントローラ４の設定情報送受信部４２は、設定返信情報において、これら制御パラメータのバリューを無効なバリューに設定する。この場合、パラメータ更新部４３は、パラメータ記憶部４１に記憶されたこれら制御パラメータのバリューを無効なバリューのままにするか、無効なバリューに設定してよい。  
【００７５】
例えば、設定情報がキーi000の制御パラメータのオンを指定していても、キーi100，i101のパラメータのバリューがパラメータ記憶部４１でオンでなければ、キーi000の制御パラメータは利用できない。よって、キーi100，i101の制御パラメータのバリューがパラメータ記憶部４１でオフである場合には、設定情報送受信部４２は、設定返信情報において、キーi000の制御パラメータのバリューをオフに設定する。また、設定情報送受信部４２は、設定返信情報において、キーi100，i101のパラメータのバリューもパラメータ記憶部４１の記憶に従ってオフに設定する。パラメータ更新部４３は、パラメータ記憶部４１に記憶されたキーi000のバリューを、設定情報に従ってオンに更新せず、オフのままにしてよい。管理者コンピュータ７Ａの使用者が、直前に送信したパラメータ設定情報と、受信した制御パラメータ設定返信情報の相違に気づけば、使用者は、制御パラメータ相互の整合性をとるために、新たな設定情報を管理者コンピュータ７Ａから送信することができる。  
【００７６】
また、例えば、設定情報がキーi000の制御パラメータのオフを指定しており、キーi100，i101の制御パラメータのバリューがパラメータ記憶部４１でオンである場合には、設定情報送受信部４２は、設定返信情報において、キーi000の制御パラメータだけでなく、キーi100，i101の制御パラメータのバリューをオフに設定する。管理者コンピュータ７Ａの使用者が、以前に送信したパラメータ設定情報と、受信した制御パラメータ設定返信情報の相違に気づけば、使用者は、制御パラメータ相互の整合性をとるために、新たな設定情報を管理者コンピュータ７Ａから送信することができる。パラメータ更新部４３は、パラメータ記憶部４１に記憶されたキーi000の制御パラメータのバリューをオフに設定し、キーi100，i101の制御パラメータのバリューもオフに設定してよい。  
【００７７】
＜リングバッファの管理＞  図１０は、コントローラ４におけるリングバッファ６２の管理に関する動作の例を示すフローチャートである。この動作は、コントローラ４の上記のプロセッサがプログラムに従って実行する。  
【００７８】
この実施形態に係るコントローラ４では、読出し書込み部６１が、共有メモリ３０に記憶された稼働情報項目を読出し周期で読み出して、リングバッファ６２に一時的に蓄積する。送信処理部５２は、リングバッファ６２に蓄積された稼働情報項目を含む送信メッセージを送信周期または送信周期に生成し、送信メッセージを分析者コンピュータ７Ｂに送信する。この実施形態では、リングバッファ６２の使用により、共有メモリ３０に記憶された稼働情報項目の読出し周期と、稼働情報項目を含む送信メッセージの送信周期を容易に異ならせることができる。  
【００７９】
メモリ管理部６３は、リングバッファ６２の書込み位置を示すライトポインタと読出し位置を示すリードポインタを管理し、ライトポインタとリードポインタのポインタ位置の差分として示されるリングバッファ６２の空き領域があるか否かを判断する。そして、送信処理部５２により送信メッセージを送信できない場合に、リングバッファ６２の空き領域がないとメモリ管理部６３が判断するまで、読出し書込み部６１は、リングバッファ６２に稼働情報項目を書き込む。したがって、この実施形態では、送信処理部５２により送信メッセージを送信できない場合でも、空き容量がなくなるまでは、リングバッファ６２に稼働情報項目を書き込むことが可能である。したがって、通信障害によって、送信メッセージを送信できなくても、稼働情報項目がリングバッファ６２に記憶され、稼働情報項目の損失を抑制することができる。  
【００８０】
図１０に示すように、ステップＳｔ１で、読出し書込み部６１が、共有メモリ３０に記憶された稼働情報項目を読み出して、リングバッファ６２に稼働情報項目を書き込む。この時、読出し書込み部６１は、タイムスタンプを稼働情報項目に付与してリングバッファ６２に書き込む。リングバッファ６２に書き込まれる稼働情報項目にタイムスタンプが付与されることにより、稼働情報項目から生成される送信メッセージに稼働情報項目に対応するタイムスタンプを含めることができ、稼働情報項目から生成される障害時動作ログファイルにも稼働情報項目に対応するタイムスタンプを含めることができる。次に、ステップＳｔ２でメモリ管理部６３はリングバッファ６２のライトポインタを更新する。  
【００８１】
この後、ステップＳｔ３で、送信処理部５２は、暫定動作ログファイルを生成する。暫定動作ログファイルは、ステップＳｔ２でリングバッファ６２に書き込まれた稼働情報項目と、当該稼働情報項目のタイムスタンプを含む。次に、ステップＳｔ４で、送信処理部５２は、暫定動作ログファイル管理情報を更新する。コントローラ４で生成されたが、動作ログファイル記憶部８に送信されていない暫定動作ログファイルを管理するために、暫定動作ログファイル管理情報は、図示しない記録媒体に記憶されている。ステップＳｔ４では、送信処理部５２は、直前のステップＳｔ３で生成された暫定動作ログファイルの名前またはＩＤを暫定動作ログファイル管理情報に追加する。暫定動作ログファイルの名前またはＩＤは、例えば、暫定動作ログファイルのタイムスタンプが用いられる。  
【００８２】
そして、ステップＳｔ５で、メモリ管理部６３はリングバッファ６２に空き領域があるか否か判断する。ここで、リングバッファ６２に空き領域があると判断された場合には、ステップＳｔ６で、送信処理部５２は、送信メッセージの送信時刻または送信周期であるか否か判断する。送信メッセージの送信時刻または送信周期であると判断された場合には、ステップＳｔ７で、送信処理部５２
は、リングバッファ６２に蓄積された稼働情報項目を読み出す。ステップＳｔ８において、送信処理部５２は、当該稼働情報を含む送信メッセージを生成して、送信メッセージを分析者コンピュータ７Ｂへ送信する。  
【００８３】
次に、ステップＳｔ９で、送信処理部５２は、所定期間内に送信メッセージの送信が完了したか否か判断する。この判断は、例えば、分析者コンピュータ７Ｂから受信確認通知を送信処理部５２が受信したか否かに基づいて行うことができる。ステップＳｔ９の判断が肯定的である場合、すなわち送信メッセージの送信が完了すると、ステップＳｔ１０において、読出し書込み部６１はリングバッファ６２からステップＳｔ７で読み出された稼働情報項目を消去する。次に、ステップＳｔ１１において、メモリ管理部６３は、リングバッファ６２のリードポインタを更新する。  
【００８４】
さらに、ステップＳｔ１２で、メモリ管理部６３はリングバッファ６２に空き領域があるか否か判断する。ここで、リングバッファ６２に空き領域があると判断された場合には、動作はステップＳｔ１３に進む。  
【００８５】
ステップＳｔ１３で、送信処理部５２は、暫定動作ログファイル管理情報を参照する、ステップＳｔ１４で、送信処理部５２は、暫定動作ログファイル管理情報に未送信の暫定動作ログファイルが記録されているか否か判断する。ステップＳｔ１４の判断が肯定的である場合、すなわち暫定動作ログファイル管理情報に未送信の暫定動作ログファイルが記録されている場合には、ステップＳｔ１５で、送信処理部５２は、動作ログファイルの送信時刻または送信周期であるか否か判断する。ステップＳｔ１５の判断が肯定的である場合、すなわち動作ログファイルの送信時刻または送信周期である場合、ステップＳｔ１６で、送信処理部５２は、暫定動作ログファイルから動作ログファイルを生成して、動作ログファイルを動作ログファイル記憶部８へ送信する。  
【００８６】
次に、ステップＳｔ１７で、送信処理部５２は、所定期間内に動作ログファイルの送信が完了したか否か判断する。この判断は、例えば、メッセージ記憶部９から受信確認通知を送信処理部５２が受信したか否かに基づいて行うことができる。ステップＳｔ１７の判断が肯定的である場合、すなわち動作ログファイルの送信が完了すると、ステップＳｔ１８で、送信処理部５２は暫定動作ログファイル管理情報を更新する。具体的には、送信処理部５２は、暫定動作ログファイル管理情報に記録された暫定動作ログファイルの名前またはＩＤを消去する。  
【００８７】
ステップＳｔ１４の判断が否定的である場合、すなわち暫定動作ログファイル管理情報に未送信の暫定動作ログファイルが記録されていない場合には、動作はステップＳｔ１に戻る。また、ステップＳｔ１５の判断が否定的である場合、すなわち動作ログファイルの送信時刻でない場合には、動作はステップＳｔ１に戻る。  
【００８８】
このように、ネットワーク１０で通信障害が発生しない限り、ステップＳｔ１からステップＳｔ１８までの正常時の動作が中断されることなく繰り返される。  
【００８９】
リングバッファ６２を使用する場合に、分析者コンピュータ７Ｂに送信すべき稼働情報項目の消失を防ぐために、読み出されていない稼働情報項目または送信されていない稼働情報項目を新たな稼働情報項目で上書きしないようにすることが好ましい。このため、この実施形態では、下記の方策が採られている。  
【００９０】
まず、ステップＳｔ５の判断が否定的である場合およびステップＳｔ１２の判断が否定的である場合、すなわちリングバッファ６２に空き領域がない場合には、動作はステップＳｔ１９に進む。ステップＳｔ１９では、読出し書込み部６１はリングバッファ６２への稼働情報項目の書込みを中断し、動作はその後、ステップＳｔ６に進む。ステップＳｔ６の判断が肯定的である場合、すなわち送信メッセージの次の送信時刻または送信周期である場合、動作はステップＳｔ７に進む。ステップＳｔ７で、送信処理部５２は、リングバッファ６２に蓄積された稼働情報項目を読み出す。次に、ステップＳｔ８で、送信処理部５２は、当該稼働情報を含む送信メッセージを生成して、送信メッセージを分析者コンピュータ７Ｂへ送信する。  
【００９１】
送信が完了すれば、ステップＳｔ９の判断が肯定的になり、動作はステップＳｔ１０に進む。ステップＳｔ１０で、読出し書込み部６１は、リングバッファ６２から読み出された稼働情報項目を消去する。これにより、リングバッファ６２には空き領域が生ずる。通信障害が発生していなければ、あるいは通信障害が復旧すれば、読み出された稼働情報項目はリングバッファ６２から消去されるので、ステップＳｔ１２の判断が肯定的になる。その後に、ステップＳｔ１で、読出し書込み部６１は、共有メモリ３０に記憶された稼働情報項目を読み出して、リングバッファ６２に稼働情報項目を書き込むことが可能になる。また、読み出されていない稼働情報項目がリングバッファ６２で新たな稼働情報項目により上書きされることが防止される。  
【００９２】
また、ステップＳｔ９の判断が否定的である場合、すなわち所定期間内に送信メッセージの送信が完了しない場合には、動作はステップＳｔ１９に進む。ステップＳｔ１９では、読出し書込み部６１はリングバッファ６２に稼働情報項目を書き込まず、動作はその後、ステップＳｔ６に進む。このようにして、送信されていない稼働情報項目が、リングバッファ６２で新たな稼働情報項目により上書きされることが防止されている。  
【００９３】
通信障害が復旧し、この後、ステップＳｔ９の判断が肯定的になれば、正常時の動作が繰り返される。上記の通り、送信メッセージには、稼働情報項目のタイムスタンプを付けることができる。したがって、送信メッセージの送信が大幅に遅延したとしても、分析者コンピュータ７Ｂの使用者は、タイムスタンプを参照して送信メッセージ内の稼働情報項目の時刻を知り、送信メッセージ内の稼働情報項目を時系列分析し、分析結果を通信障害の原因の究明に使用することができる。  
【００９４】
通信障害が復旧しない場合には、送信処理部５２は、送信メッセージを分析者コンピュータ７Ｂに送信せず、リングバッファ６２への稼働情報の書込みは中断されたままである。この場合には、リングバッファ６２には、以前に蓄積された稼働情報項目が記憶されている。したがって、通信システム１の使用者、例えば分析者コンピュータ７Ｂの使用者は、リングバッファ６２に記憶されている稼働情報項目を読み出して、稼働情報項目を分析することができる。  
【００９５】
上記の通り、リングバッファ６２に記憶された稼働情報項目にはタイムスタンプが付けられている。したがって、通信システム１の使用者、例えば分析者コンピュータ７Ｂの使用者は、リングバッファ６２に記憶された稼働情報項目を得て、タイムスタンプを参照してリングバッファ６２に記憶された稼働情報項目の時刻を知り、稼働情報項目を時系列分析し、分析結果を通信障害の原因の究明に使用することができる。  
【００９６】
図１１は、コントローラ４の上記のプロセッサがプログラムに従って実行するリングバッファ６２の管理に関する動作の他の例を示すフローチャートである。図１１の動作における図１０の動作と相違する点について説明する。  
【００９７】
ステップＳｔ９の判断が否定的である場合、すなわち所定期間内に送信メッセージの送信が完了しない場合には、動作はステップＳｔ２０に進む。ステップＳｔ２０では、送信処理部５２は、送信メッセージを分析者コンピュータ７Ｂに向けて再度送信する。次に、ステップＳｔ２１で、送信処理部５２は、再送された送信メッセージの送信が所定期間内に完了したか否か判断する。この判断は、例えば、分析者コンピュータ７Ｂから受信確認通知を送信処理部５２が受信したか否かに基づいて行うことができる。ステップＳｔ２１の判断が肯定的である場合、すなわち送信メッセージの送信が完了すると、ステップＳｔ１０で、読出し書込み部６１はリングバッファ６２からステップＳｔ７で読み出された稼働情報項目を消去する。次に、ステップＳｔ１１で、メモリ管理部６３は、リングバッファ６２のリードポインタを更新する。  
【００９８】
ステップＳｔ２１の判断が否定的である場合、すなわち再送された送信メッセージの送信が所定期間内に完了しない場合には、動作はステップＳｔ２２に進む。ステップＳｔ２２では、送信処理部５２は、リングバッファ６２に蓄積された内容のすべて、すなわち異なる時刻の稼働情報項目すべてを読み出して、複数の時刻にわたってリングバッファ６２に蓄積された稼働情報項目を含む障害時動作ログファイルを生成する。次に、ステップＳｔ２３で、送信処理部５２は、障害時動作ログファイル記憶部１４に障害時動作ログファイルを送信する。障害時動作ログファイル記憶部１４は、受信した障害時動作ログファイルを記憶する。このように、送信処理部５２は、障害時動作ログファイル記憶部１４に障害時動作ログファイルを記録する記録部として機能する。  
【００９９】
次に、ステップＳｔ２４で、送信処理部５２は、障害時動作ログファイル管理情報を更新する。障害時動作ログファイル管理情報は、コントローラ４で生成されて、障害時動作ログファイル記憶部１４に送信された障害時動作ログファイルを管理するために、図示しない記録媒体に記憶されている。ステップＳｔ２４では、送信処理部５２は、直前のステップＳｔ２３で生成された暫定動作ログファイルの名前またはＩＤを障害時動作ログファイル管理情報に追加する。  
【０１００】
図１１の動作によれば、通信障害が復旧しない場合には、送信処理部５２は、リングバッファ６２に以前に蓄積された稼働情報項目を含む障害時動作ログファイルを障害時動作ログファイル記憶部１４に記録する。したがって、通信システム１の使用者、例えば分析者コンピュータ７Ｂの使用者は、障害時動作ログファイル記憶部１４から障害時動作ログファイルを読み出して、稼働情報項目を分析することができる。  
【０１０１】
上記の通り、障害時動作ログファイルにおいては、稼働情報項目にタイムスタンプが付けられている。したがって、通信システム１の使用者、例えば分析者コンピュータ７Ｂの使用者は、タイムスタンプを参照して障害時動作ログファイル内の稼働情報項目の時刻を知り、稼働情報項目を時系列分析し、分析結果を通信障害の原因の究明に使用することができる。この場合、通信システム１の使用者、例えば分析者コンピュータ７Ｂの使用者は、障害時動作ログファイルを分析することによって、コントローラ４が設けられた場所を訪れることなく、リングバッファ６２に蓄積された内容を把握することができる。  
【０１０２】
＜変形例＞  以上、本発明の実施形態を説明したが、上記の説明は本発明を限定するものではなく、本発明の技術的範囲において、構成要素の削除、追加、置換を含む様々な変形例が考えられる。  
【０１０３】
例えば、上記の実施形態においては、同一のクラウドサーバ６に、管理者コンピュータ７Ａ、分析者コンピュータ７Ｂ、および動作ログファイル記憶部８が設けられている。しかし、これらは、異なるドメインまたは異なる場所に配置されていてもよい。  
【０１０４】
上記の実施形態においては、管理者コンピュータ７Ａは、分析者コンピュータ７Ｂと異なるコンピュータであるが、分析者コンピュータ７Ｂと同一のコンピュータであってもよい。  
【０１０５】
上記の実施形態においては、コントローラ４は、ネットワーク１０を介して、障害時動作ログファイルを障害時動作ログファイル記憶部１４に記録する。しかし、各コントローラ４に専用の障害時動作ログファイル記憶部を設け、当該コントローラ４が障害時動作ログファイルを専用の障害時動作ログファイル記憶部に記録してもよい。あるいは、障害時動作ログファイル記憶部１４をクラウドサーバ６に設けてもよい。  
【０１０６】
上記の実施形態においては、監視対象の稼働情報項目は、ロボット２に供給される指令値である。しかし、監視対象の稼働情報項目は、ロボット２を監視するセンサで測定された測定値であって
もよい。  
【０１０７】
上記の実施形態においては、監視対象はロボットであるが、他の物体であってもよい。  
【０１０８】
コントローラ４において、プロセッサが実行する各機能は、プロセッサの代わりに、ハードウェアで実行してもよいし、例えばFPGA（Field Programmable Gate Array）、DSP（Digital Signal Processor）等のプログラマブルロジックデバイスで実行してもよい。
【符号の説明】
【０１０９】
２  ロボット（監視対象）４  コントローラ（情報送信装置）７Ｂ  分析者コンピュータ（外部装置）１４  障害時動作ログファイル記憶部３０  共有メモリ（稼働情報記憶部）５２  送信処理部５２  送信処理部（記録部）６１  読出し書込み部６２  リングバッファ６３  メモリ管理部
【図１】
2019064812.tif 000003
【図２】
2019064812.tif 000004
【図３】
2019064812.tif 000005
【図４】
2019064812.tif 000006
【図５】
2019064812.tif 000007
【図６】
2019064812.tif 000008
【図７】
2019064812.tif 000009
【図８】
2019064812.tif 000010
【図９】
2019064812.tif 000011
【図１０】
2019064812.tif 000012
【図１１】
2019064812.tif 000013
【国際調査報告】
2019064812.tif 000014
2019064812.tif 000015
2019064812.tif 000016