(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0019】
[1.産業機器管理システムの全体構成]
本発明の発明者の見地によれば、産業機器において、プログラムやパラメータなどの設定データを変更すると、アラームや性能劣化などの所定の事象が発生することがあり、多数の設定データの中からその原因を特定するのは非常に手間がかかる。そこで、本発明の発明者は、産業機器で所定の事象が発生した原因の解析を支援するために鋭意研究開発を行った結果、新規かつ独創的な産業機器管理システム等に想到した。以降、実施形態に係る産業機器管理システム等を詳細に説明する。
【0020】
図1は、実施形態に係る産業機器管理システムの全体構成を示す図である。
図1に示すように、産業機器管理システム1は、管理サーバ10、ロボットシステム20、及びユーザ端末30を含む。管理サーバ10、ロボットシステム20、及びユーザ端末30の各々は、LAN又はインターネット等のネットワークに接続される。なお、
図1では、管理サーバ10、ロボットシステム20、及びユーザ端末30を1つずつ示しているが、これらは複数あってもよい。
【0021】
管理サーバ10は、サーバコンピュータである。なお、パーソナルコンピュータ、携帯電話(スマートフォンを含む)、又は携帯端末(タブレット型端末を含む)がサーバとしての機能を有し、これらのコンピュータにより管理サーバ10が実現されてもよい。管理サーバ10は、CPU11、記憶部12、及び通信部13を含む。
【0022】
CPU11は、少なくとも1つのプロセッサを含む。記憶部12は、RAM等の揮発性メモリと、ハードディスク等の不揮発性メモリと、を含み、各種プログラムやデータを記憶する。CPU11は、これらプログラムやデータに基づいて各種処理を実行する。通信部13は、ネットワークカードや各種通信コネクタ等の通信インタフェースを含み、他の装置との通信を行う。
【0023】
ロボットシステム20は、コントローラ21と、ロボット22と、を含む。なお、
図1では、コントローラ21とロボット22を1台ずつ示しているが、これらは複数台あってもよい。例えば、ロボットシステム20には、複数のコントローラ21が含まれていてもよいし、1台のコントローラ21が、複数台のロボット22を制御してもよい。
【0024】
コントローラ21は、ロボット22を制御するコンピュータである。コントローラ21は、特定のロボット22に特化した専用機器であってもよいが、本実施形態では、汎用コンピュータであるものとする。コントローラ21は、CPU、RAM、ハードディスク、及び通信インタフェースといったハードウェアを有し、ロボット22に動作指示を送る。
【0025】
ロボット22は、産業用ロボットである。ロボット22は、汎用の多関節ロボットであってよく、例えば、垂直多関節型、水平多関節型、又はガントリ型といった種々の形式のロボットを適用可能である。ロボット22のアーム数は、任意であってよく、1本のみのアームであってもよいし、複数本のアームであってもよい。ロボット22は、任意の用途で使用されてよく、例えば、ガス溶接又はアーク溶接などの溶接、部品の組立、又は、食品などの加工といった種々の目的で使用可能である。
【0026】
なお、コントローラ21及びロボット22は、産業機器の一例である。このため、本実施形態でコントローラ21又はロボット22と記載した箇所は、産業機器と読み替えることができる。産業機器管理システム1には、任意のタイプの産業機器を適用可能であり、例えば、産業機器は、モータコントローラ、サーボモータ、インバータ、工作機械、又はPLC(Programmable Logic Controller)であってもよく、産業機器管理システム1では、これらが動作してもよい。
【0027】
また、ロボットシステム20には、コントローラ21とロボット22以外の機器が含まれていてもよく、例えば、ロボット22の動作状況を検出するセンサが含まれていてもよい。センサは、任意のセンサを適用可能であり、例えば、トルクセンサ、モータエンコーダ、近接センサ、把持センサ、感圧センサ、モーションセンサ、スパッタリングセンサ、又は温度センサが含まれていてもよい。他にも例えば、ロボットシステム20には、ロボット22の動作を撮影するカメラが含まれていてもよいし、データの入出力が可能なI/O機器が含まれていてもよい。
【0028】
ユーザ端末30は、ユーザが操作するコンピュータである。本実施形態では、ユーザは、ロボットシステム20の全体を管理する立場にあり、個々のコントローラ21及びロボット22の管理を担当する作業員とは異なるものとするが、個々の作業員がユーザに相当してもよい。例えば、ユーザ端末30は、パーソナルコンピュータ、携帯電話(スマートフォンを含む)、又は携帯端末(タブレット型端末を含む)である。
【0029】
例えば、ユーザ端末30は、CPU31、記憶部32、通信部33、操作部34、及び表示部35を含む。CPU31、記憶部32、通信部33のハードウェア構成は、それぞれCPU11、記憶部12、通信部13と同様である。操作部34は、マウスやキーボード等の入力デバイスである。表示部35は、液晶ディスプレイ又は有機ELディスプレイ等であり、CPU31の指示により各種画面を表示する。
【0030】
なお、管理サーバ10、コントローラ21、及びユーザ端末30の各々に記憶されるものとして説明するプログラム及びデータは、ネットワークを介して供給されてもよい。また、管理サーバ10、コントローラ21、及びユーザ端末30の各々のハードウェア構成は、上記の例に限られず、種々のハードウェアを適用可能である。例えば、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、光ディスクドライブやメモリカードスロット)や外部機器と直接的に接続するための入出力部(例えば、USB端子)が含まれていてもよい。この場合、情報記憶媒体に記憶されたプログラムやデータが読取部又は入出力部を介して供給されてもよい。
【0031】
[2.産業機器管理システムの概要]
産業機器管理システム1では、コントローラ21は、自身に記憶された設定データに基づいて、ロボット22の動作を制御する。設定データとは、ロボット22の動作に係る設定が格納されたデータであり、例えば、プログラム又はパラメータである。このため、本実施形態でコントローラ21に記憶されるプログラム又はパラメータについて説明する箇所は、設定データと読み替えることができる。
【0032】
プログラムは、ジョブ又はタスクと呼ばれることもあり、ロボット22に対する命令(指令)を示すプログラムコードを含む。プログラムコードには、ロボット22に対する命令だけでなく、命令を実行する際の変数が含まれもよいし、命令の補足説明であるコメント又はヘッダといった他の情報が含まれてもよい。プログラミング言語自体は、公知の言語を利用可能であり、例えば、C言語、C++、Java(登録商標)、又はPythonといった任意の言語を利用可能である。
【0033】
例えば、プログラムコードには、ロボット22の動作が定義されている。例えば、ロボット22が周期的に動作する場合、プログラムコードには、各周期におけるロボット22の動作が時系列的に記述される。例えば、プログラムコードには、ロボット22の軌跡が定義される。軌跡を生成する方法自体は、公知の手法を適用可能であり、直線補間を利用してもよいし、リンク補間を利用してもよく、プログラムコードには、ロボット22の時系列的な位置が定義される。また例えば、プログラムコードには、ロボット22の待機命令が定義されている。待機命令には、ロボット22が移動せずにその場で待機する時間が示されている。また例えば、プログラムコードには、ロボット22がハンドを開閉するタイミングや強さが定義されていてもよいし、ロボット22の電動ガンの出力が定義されていてもよい。
【0034】
パラメータは、ロボット22に対する出力を示す値であり、例えば、モータの回転数(速度)、モータの回転方向、トルク値、電流値、又は通電時間などである。パラメータは、プログラムによって参照されることもあるし、プログラムの中に記述されていることもある。プログラム中に記述されたロボット22の位置や待機時間などもパラメータの一種ということができる。例えば、個々のパラメータが設定データに相当してもよいし、複数のパラメータが格納されたパラメータファイルが設定データに相当してもよい。パラメータファイルには、パラメータの値が時系列的に記述されていてもよい。
【0035】
例えば、ロボットシステム20は、工場などの施設に配置され、設定データは、個々のコントローラ21及びロボット22を管理する作業員によって変更される。ここでの変更とは、更新、編集、又は調整と同じ意味である。例えば、作業員は、ロボット22の実際の動作を確認したり、ロボット22による加工の対象物(ワーク)の状態を確認したりして、設定データを変更する必要があるか否かを判定する。また例えば、作業員は、コントローラ21におけるアラームの発生有無を確認したり、ロボット22の停止状況を確認したりして、設定データを変更する必要があるか否かを判定する。
【0036】
作業員は、設定データを変更する必要があると判定すると、例えば、エンジニアリングツールがインストールされた端末をコントローラ21に接続し、設定データを変更する。例えば、作業員は、プログラムコードを追記、変更、又は削除したり、プログラム中の変数の値を変更したりすることによって、プログラムを変更する。また例えば、作業員は、新たにプログラムを作成したり、不要なプログラムを削除したりする。また例えば、作業員は、パラメータの値を変更したり、不要になったパラメータを削除したりすることによって、パラメータを変更する。また例えば、作業員は、新たにパラメータを追加したり、不要なパラメータを削除したりする。
【0037】
設定データが変更されると、コントローラ21及びロボット22の動作が変更されて所定の事象が発生する原因になることがあるので、本実施形態では、所定の事象に関連する設定データを予めユーザに指定させ、所定の事象が発生した場合に、ユーザが指定した設定データの変更に関する情報を表示するようにしている。
【0038】
所定の事象とは、予め定められた事象であればよく、例えば、アラームが発生すること、性能が低下(劣化)すること、ロボット22同士が接触又は干渉すること、動作状況が基準範囲外になること、又は特定のスイッチがオンになることなどである。動作状況は、コントローラ21又はロボット22の状態であり、例えば、トルク信号の波形、最大トルク量、トルク信号の収束値、トルク信号の立ち上がりタイミング、トルク信号の収束タイミング、モータの位置情報、モータの速度情報、オーバーシュート量、整定時間、タクトタイム、サイクルタイム、CPU使用率、メモリ使用率、又は通信量などである。
【0039】
事象に関連する設定データとは、事象の原因の可能性がある設定データである。別の言い方をすれば、事象に関連する設定データは、事象が発生した場合に出力すべき設定データである。本実施形態では、事象に関連すると考えてユーザが指定した設定データが、事象に関連する設定データである場合を説明する。即ち、ユーザが、事象に関連する設定データを手動で指定する場合を説明する。なお、後述する変形例のように、事象に関連する設定データは、設定データの変更とアラームの発生との関係を統計的に解析することによって、自動的に特定されてもよい。
【0040】
本実施形態では、事象の一例としてアラームを説明する。このため、本実施形態でアラームについて説明している箇所は、事象と読み替えることができる。例えば、ユーザがユーザ端末30を操作して管理サーバ10にアクセスすると、アラームに関連する設定データを登録するための登録画面が表示部35に表示される。なお、本実施形態では、アラームに関連する設定データがコントローラ21ごとに登録される場合を説明するが、アラームに関連する設定データは、複数のコントローラ21で共通であってもよい。
【0041】
図2は、登録画面の一例を示す図である。
図2に示すように、登録画面G1には、登録対象のコントローラ21の名前が表示される。登録対象のコントローラ21は、任意のコントローラ21であってよく、例えば、登録画面G1が表示される前に、ユーザが登録対象のコントローラ21を指定する。
図2の例では、「コントローラX」に対し、アラームに関連する設定データが登録される。
【0042】
ユーザは、登録対象のコントローラ21に記憶された任意の設定データを、アラームに関連する設定データとして指定することができる。本実施形態では、アラームがアラームコードによって分類され、各アラームコードが示すアラームに関連する設定データが登録される。アラームには、任意の数の設定データを登録可能であり、必ずしも全てのアラームに設定データが登録される必要はない。
【0043】
図2の例では、アラームコード「001」が示すトルク異常のアラームに関連する設定データとして、「プログラムA」と「パラメータB」が登録されている。また例えば、アラームコード「002」が示す温度異常のアラームに関連する設定データは、まだ登録されていない。また例えば、アラームコード「003」が示す速度異常のアラームに関連する設定データとして、「プログラムC」が登録されている。他のアラームコードのアラームについても同様に、関連する設定データの登録状況が登録画面G1に表示される。
【0044】
ユーザがプルダウンメニューM10〜M12の何れかを選択すると、コントローラ21に記憶された設定データの一覧が表示される。ユーザは、一覧の中から、アラームに関連する設定データを指定して登録することができる。なお、アラームに関連する設定データは、ユーザが全て指定するのではなく、デフォルトで登録されていてもよい。また、登録画面G1では、アラームに関連する設定データの登録を解除できるようにしてもよい。
【0045】
登録画面G1から設定データが登録されると、アラームが発生した場合に、当該アラームに関連する設定データの変更が表示される。例えば、ロボットシステム20においてアラームが発生すると、電子メールなどを利用してユーザ端末30に通知が送信され、通知を見たユーザがユーザ端末30を操作して管理サーバ10にアクセスすると、発生したアラームの一覧を示すアラーム一覧画面が表示部35に表示される。
【0046】
図3は、アラーム一覧画面の一例を示す図である。
図3に示すように、アラーム一覧画面G2には、アラームが発生したコントローラ21の名前、アラーム発生日時、アラームコード、及びアラームの名前が表示される。アラーム一覧画面G2には、過去の全期間のアラームが表示されてもよいし、一部の期間のアラームが表示されてもよい。
【0047】
アラーム一覧画面G2に表示されたアラームをユーザが選択すると、当該アラームの詳細を示すアラーム詳細画面が表示部35に表示される。ここでは、アラーム一覧画面G2の「コントローラX」において、「2019年1月16日 10:25:08」に発生したアラームコード「003」のアラームが選択された場合を例に挙げて説明する。
【0048】
図4は、アラーム詳細画面の一例を示す図である。
図4に示すように、アラーム詳細画面G3には、「コントローラX」で発生したアラームコード「003」のアラームに関連する設定データの変更に関する情報が表示される。
図4の例では、アラームコード「003」のアラームに関連する設定データとして「プログラムC」が登録されており、アラーム詳細画面G3には、プログラムの名前と変更内容とが表示される。
【0049】
例えば、変更内容としては、アラーム発生時の「プログラムC」のプログラムコードと、それよりも前の「プログラムC」のプログラムコードと、が比較されて表示される。
図4の例では、「プログラムC」は、「2019年1月11日」に変更されており、アラームが発生した時点における最新バージョンのプログラムコード(ここでは、アラームが発生した前日にバックアップが取られた「2019年1月15日」のプログラムコード)と、変更前(即ち、1つ前のバージョン)の「2019年1月10日」のプログラムコードと、が表示される。なお、変更前のプログラムコードは、2つ以上前のバージョンが表示されてもよいし、1つ前のバージョンと2つ前のバージョンといったように複数の古いバーションが表示されてもよい。
【0050】
本実施形態では、アラーム詳細画面G3において、設定データの変更内容が強調されて表示されるようになっている。
図4の例では、アンダーラインによって変更内容が強調されており、「MOVJ C00001 VJ=80.00」といったロボット22の移動命令と、「MOVJ C00002 VJ=80.00」といったロボット22の移動命令と、が変更されている。
【0051】
なお、変更内容を強調して表示させる方法は、アンダーラインに限られず、任意の方法を利用可能である。例えば、設定データの変更内容は、赤や青などの所定の色で表示されてもよいし、他の部分よりも大きなサイズで表示されてもよい。他にも例えば、設定データの変更内容は、イタリック又は太字で表示されてもよいし、他の部分とは異なるフォントで表示されてもよい。
【0052】
アラーム詳細画面G3により、ユーザは、上記移動命令の変更がアラームコード「003」のアラームの原因になっていると推測することができる。ただし、アラーム詳細画面G3に表示される内容は、あくまでアラームの原因の可能性があるというだけであり、必ずしもアラームの原因であるとは限らない。このため、ユーザは、他の要因も総合的に考慮してアラームの原因を解析する。
【0053】
なお、アラームに関連する設定データとしてパラメータが登録されている場合には、アラーム詳細画面G3には、当該登録されたパラメータの名前及び変更内容が表示される。例えば、変更内容として、パラメータの変更量が表示される。また例えば、時系列的に値が示されるパラメータであれば、変更内容として、パラメータが変更された時点が表示される。他にも例えば、複数のパラメータが格納されたパラメータファイルであれば、変更内容として、これら複数のパラメータの中で変更されたパラメータが表示される。
【0054】
以上のように、本実施形態の産業機器管理システム1は、アラームに関連する設定データを予め登録しておき、コントローラ21でアラームが発生した場合に、当該アラームに関連する設定データの名前及び変更内容をアラーム詳細画面G3に表示させることによって、産業機器でアラームが発生した原因の解析を支援するようにしている。以降、産業機器管理システム1の詳細を説明する。
【0055】
[3.産業機器管理システムで実現される機能]
図5は、産業機器管理システム1で実現される機能を示す機能ブロック図である。ここでは、コントローラ21において実現される機能と、管理サーバ10において実現される機能と、について説明する。
【0056】
[コントローラにおいて実現される機能]
図5に示すように、コントローラ21では、データ記憶部200が実現される。データ記憶部200は、コントローラ21の記憶部を主として実現される。データ記憶部200は、少なくとも1つの設定データを記憶する。データ記憶部200が記憶する設定データの数は、コントローラ21及びロボット22の目的や用途に応じて決定されるようにすればよく、任意の数であってよい。例えば、コントローラ21が複数のロボット22を制御する場合には、データ記憶部200は、ロボット22ごとに設定データを記憶する。
【0057】
データ記憶部200が記憶する設定データは、作業員が自身の端末を操作することによって変更されてもよいし、ユーザがユーザ端末30を操作することによって変更されてもよい。本実施形態では、定期的に設定データのバックアップが取られるので、コントローラ21は、管理サーバ10から設定データの送信要求を受信した場合に、データ記憶部200に記憶された設定データを送信する。なお、コントローラ21が自発的に設定データを送信することがあってもよい。
【0058】
また例えば、データ記憶部200は、アラーム発生条件を記憶する。本実施形態では、データ記憶部200は、アラームコードごとにアラーム発生条件を記憶する。アラーム発生条件は、コントローラ21又はロボット22の動作状況に関する条件であればよく、アラームを検出する方法自体は、公知の方法を適用可能である。例えば、コントローラ21は、センサの検出信号に基づいてロボット22の動作状況を取得し、アラーム発生条件が満たされたか否かを判定する。
【0059】
例えば、トルク異常に関するアラームであれば、コントローラ21は、トルク信号のピーク値、収束値、立ち上がりタイミング、又は収束タイミングが基準範囲外になった場合に、アラーム発生条件が満たされたと判定する。また例えば、温度異常に関するアラームであれば、コントローラ21は、温度センサから受信した温度が基準範囲外になった場合に、アラーム発生条件が満たされたと判定する。また例えば、速度異常に関するアラームであれば、コントローラ21は、モータエンコーダ又はモーションセンサから受信した速度が基準範囲外になった場合に、アラーム発生条件が満たされたと判定する。他のアラームについても同様に、コントローラ21は、センサから受信した情報や自身の動作状況に基づいて、アラーム発生条件が満たされたか否かを判定する。
【0060】
コントローラ21は、何れかのアラーム発生条件が満たされたと判定した場合に、アラーム発生日時と、当該アラーム発生条件に関連付けられたアラームコードと、を含むアラーム発生通知を、管理サーバ10に送信する。アラーム発生日時は、リアルタイムクロック又はGPS信号等から取得した現在日時を利用すればよい。なお、本実施形態では、コントローラ21がアラームの発生を判定する場合を説明したが、管理サーバ10又は他のコンピュータによってアラームの発生が判定されてもよい。
【0061】
[管理サーバにおいて実現される機能]
図5に示すように、管理サーバ10では、データ記憶部、登録部101、収集部102、変更判定部103、取得部104、事象判定部105、特定部106、及び出力部107が実現される。データ記憶部は、記憶部12を主として実現され、他の各機能は、CPU11を主として実現される。
【0062】
[データ記憶部]
データ記憶部100は、ロボットシステム20を管理するためのデータを記憶する。例えば、データ記憶部100は、コントローラ21に関するデータが格納されたコントローラデータベースDB1と、アラームに関連する設定データが登録された関連性データベースDB2と、を記憶する。
【0063】
図6は、コントローラデータベースDB1のデータ格納例を示す図である。
図6に示すように、コントローラデータベースDB1には、コントローラ21の名前、バックアップ情報、及び発生アラーム情報が格納される。なお、コントローラデータベースDB1に格納される情報は、これらに限られない。例えば、コントローラデータベースDB1には、コントローラ21が属するラインの名前が格納されてもよいし、ロボット22の動作状況が時系列的に示されたトレースデータが格納されてもよい。ラインとは、施設における作業グループを示す。同じラインに属するコントローラ21は、ベルトコンベア等の搬送装置により搬送される対象物に対し、順番に加工を行う。ラインに属するコントローラ21は、コントローラデータベース21に定義されているものとする。
【0064】
バックアップ情報は、設定データのバックアップに関する情報であり、例えば、設定データのバックアップ時間、バックアップされた設定データの実データ、設定データの変更の有無を示す変更有無情報が格納される。なお、バックアップ時間は、日付だけでなく、時刻が示されていてもよい。
【0065】
本実施形態では、後述する収集部102により収集された設定データがコントローラデータベースDB1に格納されるので、データ記憶部100は、収集部102により収集された設定データを、バックアップとして記憶することになる。設定データは、繰り返しバックアップが取られるので、コントローラデータベースDB1には、過去にバックアップが取られた設定データの履歴が格納される。
【0066】
なお、古い設定データは自動的に消去されてもよく、例えば、直近の一定期間の設定データだけが格納されてもよいし、直近n回(nは自然数)の設定データだけが格納されてもよい。また、コントローラ21の全ての設定データがバックアップの対象となる場合を説明するが、一部の設定データだけがバックアップの対象となってもよい。この場合、バックアップの対象となっている設定データだけが、変更の有無の判定対象となってもよい。
【0067】
変更有無情報は、設定データが変更された場合に第1の値(
図6では、「変更あり」を示す値)となり、設定データが変更されなかった場合に第2の値(
図6では、「変更なし」を示す値)となる。このため、変更有無情報が第1の値であれば、その回のバックアップ時に設定データの変更が検知されたことを意味し、変更有無情報が第2の値であれば、その回のバックアップ時には設定データの変更が検知されなかったことを意味する。第1の値が格納された変更有無情報には、変更された設定データの名前が格納される。
【0068】
発生アラーム情報は、コントローラ21において発生したアラームに関する情報であり、例えば、アラームの発生日時とアラームコードとが格納される。本実施形態では、コントローラ21は、アラームが発生した場合にアラーム発生通知を送信するので、管理サーバ10は、アラーム発生通知を受信し、アラーム発生通知に含まれるアラーム発生日時とアラームコードを、発生アラーム情報としてコントローラデータベースDB1に格納する。なお、アラームコードとアラームの名前との関係は、他のデータベースに予め定義されているものとする。発生アラーム情報には、アラームの名前は含まれていなくてもよい。
【0069】
図7は、関連性データベースDB2のデータ格納例を示す図である。
図7に示すように、関連性データベースDB2には、コントローラ21ごとに、アラームコードと関連する設定データとの関連付けが登録されている。関連性データベースDB2は、全てのユーザで共通であってもよいし、ユーザごとに異なる関連付けが登録されてもよい。例えば、あるユーザは、アラームコード「001」のアラームに「プログラムA」と「パラメータB」を指定して登録し、別のユーザは、当該アラームに「プログラムC」を指定して登録するといったことができてもよい。
【0070】
なお、データ記憶部100が記憶するデータは、上記の例に限られない。例えば、データ記憶部100は、ユーザ及び作業員の基本情報が格納されたデータベースを記憶してもよいし、データ記憶部100は、登録画面G1、アラーム一覧画面G2、及びアラーム詳細画面G3を表示させるためのデータ(例えば、HTMLデータ又は画像データ)を記憶してもよい。
【0071】
[登録部]
登録部101は、アラームコードごとに、ユーザにより指定された設定データの種類を登録する。登録とは、データ記憶部100に設定データの種類を格納することであり、本実施形態では、関連性データベースDB2に設定データの種類を格納することである。本実施形態では、アラームコードごとに設定データの種類が登録される場合を説明するが、特にアラームコードごとに登録されなくてもよい。即ち、複数のアラームコードで共通の設定データの種類が、関連する設定データとして登録されてもよい。
【0072】
本実施形態では、アラームが事象に相当するので、アラームコードは事象の種類に相当する。事象の種類は、発生する事象によって呼び名が異なり、アラームの名前が事象に相当してもよい。他にも例えば、性能の低下が事象に相当する場合、低下する性能の種類が事象の種類に相当してもよい。例えば、寿命の低下、タクトタイムの低下、及び対象物の品質の低下といった事象の種類が存在してもよい。
【0073】
また例えば、動作状況が基準範囲外になることが事象に相当する場合、基準範囲外になる動作状況の種類が事象の種類に相当してもよい。例えば、トルク信号の波形の形状、最大トルク量、トルク信号の収束値、トルク信号の立ち上がりタイミング、トルク信号の収束タイミング、モータの位置情報、モータの速度情報、オーバーシュート量、整定時間、タクトタイム、サイクルタイム、CPU使用率、メモリ使用率、又は通信量が基準範囲外になるといった事象の種類が存在してもよい。
【0074】
本実施形態では、登録画面G1において、ユーザが自分で関連する設定データを指定するので、登録部101は、ユーザが指定した設定データを関連性データベースDB2に登録する。登録部101は、プルダウンメニューM10〜M12により指定されたアラームコードと設定データの種類とを関連付けて、関連性データベースDB2に格納する。登録部101は、ユーザにより指定されたアラームコードと設定データの種類との組み合わせをユーザ端末30から受信し、これらを関連性データベースDB2に格納する。
【0075】
[収集部]
収集部102は、コントローラ21において変更可能な設定データを収集する。収集とは、コントローラ21からデータを取得又は受信することである。収集部102は、複数の時点の各々における設定データを収集する。別の言い方をすれば、収集部102は、設定データを繰り返し収集する。収集部102は、定期的に設定データを収集してもよいし、不定期的に設定データを収集してもよい。不定期的に設定データを収集する場合には、収集部102は、アラームが発生した場合やユーザにより指示された場合などにおいて、設定データを収集すればよい。
【0076】
また、本実施形態では、コントローラ21は、自発的に設定データをアップロードするのではなく、管理サーバ10の要求に応じて設定データをアップロードする場合を説明する。このため、収集部102は、コントローラ21に対し、設定データを要求し、コントローラ21が当該要求に応じて送信した設定データを収集する。ロボットシステム20に複数のコントローラ21が含まれている場合には、収集部102は、当該複数のコントローラ21の各々から設定データを収集する。
【0077】
収集部102は、所定の条件が満たされた場合に、設定データを収集する。所定の条件は、設定データを収集するために定められた条件であればよく、任意の条件を適用可能である。本実施形態では、所定の条件の一例として、バックアップ時間が訪れることを説明するが、例えば、コントローラ21でアラームが発生することであってもよいし、ロボット22のトルク信号などのトレースデータが所定の状態になることであってもよい。他にも例えば、ユーザ又は作業員がバックアップを指示することが所定の条件に相当してもよい。
【0078】
バックアップ時間は、データ記憶部100に予め記憶させておけばよく、任意の時間を設定可能である。例えば、バックアップ時間は、毎日同じ時刻としてもよいし、曜日によって異なる時刻としてもよい。また例えば、毎日バックアップを取る必要はなく、数日おきにバックアップ時間が訪れるようにスケジューリングしてもよいし、工場が稼働する平日にだけバックアップ時間が訪れるようにスケジューリングしてもよい。
【0079】
例えば、収集部102は、リアルタイムクロック又はGPS信号等を利用して現在日時を取得し、予め定められたバックアップ時間が訪れたか否かを判定する。収集部102は、バックアップ時間が訪れたと判定された場合に、コントローラ21に対し、設定データを要求する。なお、全てのコントローラ21で共通のバックアップ時間が設定されてもよいし、コントローラ21ごとに個別のバックアップ時間が設定されてもよい。収集部102は、コントローラ21から設定データを収集すると、バックアップとしてコントローラデータベースDB1に格納する。
【0080】
[変更判定部]
変更判定部103は、複数の時点の各々における設定データに基づいて、設定データが変更されたか否かを判定する。例えば、変更判定部103は、第1の時点に収集された設定データと、第1の時点とは異なる第2の時点に収集された設定データと、を比較することによって、設定データが変更されたか否かを判定する。別の言い方をすれば、変更判定部103は、収集部102により設定データが収集された場合に、当該設定データと、それよりも前に収集された設定データと、を比較することによって、設定データが変更されたか否かを判定する。変更判定部103は、設定データが変更されたと判定した場合に、変更有無情報に第1の値と変更された設定データの名前とを格納し、設定データが変更されたと判定しない場合に、変更有無情報に第2の値を格納する。
【0081】
本実施形態では、設定データが少しでも異なっていれば(設定データの一部でも変更されていれば)、設定データが変更されたと判定される場合を説明する。例えば、変更判定部103は、プログラムコードが完全一致する場合には、プログラムが変更されていないと判定し、プログラムコードが完全一致しない場合には、プログラムが変更されたと判定する。また例えば、変更判定部103は、新たなプログラムが追加されたり、既存のプログラムが削除されたりした場合には、プログラムが変更されたと判定する。また例えば、変更判定部103は、パラメータの値が完全一致する場合には、パラメータが変更されていないと判定し、パラメータの値が完全一致しない場合には、パラメータが変更されたと判定する。また例えば、変更判定部103は、新たなパラメータが追加されたり、既存のパラメータが削除されたりした場合には、パラメータが変更されたと判定する。
【0082】
なお、設定データに対し、所定の変更が加えられていなければ、設定データが変更されたと判定されないようにしてもよい。例えば、所定の変更とは、プログラム中の特定の命令(例えば、移動命令や待機命令など)に変更が加えられたり、特定のパラメータ(例えば、出力トルクやモータ速度など)に変更が加えられたりすることである。また例えば、所定の変更は、プログラム中の変数の変更量が閾値以上であったり、パラメータの変更量が閾値以上であったりすることである。
【0083】
本実施形態では、バックアップ時に設定データの変更有無が判定されるので、変更判定部103は、バックアップ判定部103Aを含む。バックアップ判定部103Aは、バックアップのために収集された設定データに基づいて、設定データが変更されたか否かを判定する。即ち、バックアップ判定部103Aは、収集部102によりバックアップ対象の設定データが収集された場合に、バックアップの対象となった設定データと、それよりも前にバックアップの対象となった設定データと、に基づいて、設定データが変更されたか否かを判定することになる。なお、バックアップ判定部103Aは、コントローラデータベースDB1に設定データが格納された後(バックアップが完了した後)に判定処理を実行してもよいし、コントローラデータベースDB1に設定データが格納される前(バックアップが完了する前)に判定処理を実行してもよい。
【0084】
[取得部]
取得部104は、設定データが変更されたと判定された場合に、設定データの変更に関する変更情報を取得する。変更情報とは、設定データの変更に関係する情報であればよく、例えば、設定データの変更内容に関する変更内容情報、又は、変更された設定データの種類に関する変更種類情報である。他にも例えば、変更情報は、設定データが変更された時間、設定データが変更された事実そのもの、設定データの変更者、設定データが変更されたコントローラ21、又は変更された設定データに基づいて動作するロボット22といった他の情報を示してもよい。
【0085】
本実施形態では、アラーム詳細画面G3に変更内容情報が表示されるので、取得部104は、変更内容情報を取得するために内容取得部104Aを含む。内容取得部104Aは、設定データが変更されたと判定された場合に、設定データの変更内容に関する変更内容情報を、変更情報として取得する。例えば、内容取得部104Aは、変更前の設定データと変更後の設定データとに基づいて、変更内容情報を取得する。内容取得部104Aは、変更内容情報を取得してコントローラデータベースDB1に格納してもよい。
【0086】
変更内容情報は、設定データの変更内容を示す情報である。変更内容は、設定データの変更箇所又は変更部分ということもできる。例えば、プログラムが変更された場合、変更内容情報は、追加、変更、又は削除されたプログラムコードを示す。また例えば、パラメータが変更された場合、変更内容情報は、パラメータの変更量を示す。なお、複数のパラメータが格納されたパラメータファイルが設定データに相当する場合には、変更内容情報は、パラメータファイルの中で、変更されたパラメータを示してもよい。例えば、複数種類のパラメータがパラメータファイルに格納されている場合には、変更内容情報は、パラメータファイルの中で、変更されたパラメータの種類を示し、あるパラメータの値が時系列にパラメータファイルに格納されている場合には、変更内容情報は、パラメータファイルの中で、変更されたパラメータの時点を示してもよい。
【0087】
また、本実施形態では、アラーム詳細画面G3に変更種類情報が表示されるので、取得部104は、変更種類情報を取得するために変更種類取得部104Bを含む。コントローラ21においては、複数種類の設定データが変更可能であり、変更種類取得部104Bは、設定データが変更されたと判定された場合に、変更された設定データの種類に関する変更種類情報を、変更情報として取得する。変更種類取得部104Bは、変更種類情報を取得してコントローラデータベースDB1に格納してもよい。
【0088】
変更種類情報は、変更された設定データの種類を示す情報である。例えば、プログラムが変更された場合、変更種類情報は、変更されたプログラムの名前(プログラムのファイル名)を示す。また例えば、パラメータが変更された場合、変更種類情報は、変更されたパラメータの名前(パラメータのファイル名)を示す。なお、名前以外にもIDなどの識別情報によって設定データの種類が示されてもよい。
【0089】
[事象判定部]
事象判定部105は、コントローラ21において所定の事象が発生したか否かを判定する。本実施形態では、コントローラ21において事象の発生有無が判定され、コントローラ21は、事象が発生した場合に所定の通知を送信するので、事象判定部105は、コントローラ21から通知を受信したか否かを判定する。なお、コントローラ21側で事象の発生有無が判定されなくてもよく、この場合には、事象判定部105は、コントローラ21又はロボットの動作状況を受信し、当該動作状況が事象の発生条件を満たすか否かを判定すればよい。
【0090】
本実施形態では、アラームが事象に相当するので、事象判定部105は、アラーム判定部105Aを含む。アラーム判定部105Aは、コントローラ21においてアラームが発生したか否かを、事象として判定する。例えば、コントローラ21は、アラームが発生した場合に、管理サーバ10に対し、アラームの発生日時とアラームコードを含むアラーム発生通知を送信するので、アラーム判定部105Aは、アラーム発生通知を受信したか否かを判定することによって、アラームが発生したか否かを判定する。アラーム判定部105Aは、アラーム発生通知を受信した場合にアラームが発生したと判定し、アラーム発生通知を受信しない場合には、アラームが発生したと判定しない。
【0091】
なお、本実施形態では、コントローラ21によりアラーム発生条件が満たされたか否かが判定される場合を説明するが、管理サーバ10が、コントローラ21から、コントローラ21又はロボット22の動作状況を受信し、アラーム判定部105Aは、当該受信した動作状況に基づいて、アラーム発生条件が満たされたか否かを判定してもよい。アラーム判定部105Aは、アラーム発生条件が満たされたと判定された場合にアラームが発生したと判定し、アラーム発生条件が満たされたと判定されない場合には、アラームが発生したと判定しない。
【0092】
また、性能の低下が事象に相当する場合には、事象判定部105は、コントローラ21から性能に関する情報を受信し、当該情報が示す性能が基準範囲外であるか否かを判定する。性能に関する情報は、例えば、ロボット22の部品などの寿命、負荷率、又はタクトタイムなどである。性能の低下については、コントローラ21側で判定され、事象判定部105は、当該判定結果だけを受信してもよい。
【0093】
また、動作状況が基準範囲外になることが事象に相当する場合には、事象判定部105は、コントローラ21から動作状況に関する情報を受信し、当該情報が示す動作状況が基準範囲外であるか否かを判定する。動作状況に関する情報は、時系列的な情報であるトレースデータであってもよいし、ある一時点におけるトルク信号値や速度値などの情報であってもよい。動作状況が基準範囲外であるか否かについては、コントローラ21側で判定され、事象判定部105は、当該判定結果だけを受信してもよい。
【0094】
[特定部]
特定部106は、事象判定部105により事象が発生したと判定された場合に、事象に関連する変更情報を特定する。本実施形態では、事象と設定データとの関係が関連性データベースDB2に示されているので、特定部106は、発生した事象に関連付けられた設定データの変更情報を特定する。例えば、特定部106は、過去に取得された変更情報のうち、事象が発生した時間に近い変更情報を特定する。
【0095】
特定部106は、事象が発生した時間に近い変更情報を1つだけ特定してもよいし、事象が発生した時間に近い順に所定数の変更情報を特定してもよい。特定部106が特定する変更情報の数は、任意の数であってよい。例えば、本実施形態のような1つの変更情報に限られず、2つ、3つ、又は4つ以上の変更情報が特定されてもよい。
【0096】
特定部106により特定される変更情報は、過去に取得された変更情報のうち、出力部107により出力されるべき変更情報である。このため、特定部106は、過去に取得された変更情報のうち、出力部107に出力させるべき変更情報を絞り込むことになる。別の言い方をすれば、特定部106は、事象が発生した時点を基準として期間内に変更された設定データの変更情報の中から、出力部107に出力させるべき変更情報を抽出することになる。
【0097】
本実施形態では、特定部106は、アラームに関連する設定データの変更情報を特定し、アラームに関連しない設定データの変更情報については特定しない。このため、アラームに関連しない設定データが変更された時点が、アラームに関連する設定データが変更された時点よりもアラームの発生時点に近かったとしても、特定部106は、アラームに関連しない設定データの変更情報については特定せず、アラームに関連する設定データの変更情報を特定する。
【0098】
図6及び
図7のデータ格納例であれば、「コントローラX」においてアラームコード「003」のアラームが発生した時点「2019年1月16日 10:25:08」の直近の設定データの変更は、「2019年1月15日」のバックアップ時に検知された「プログラムA」及び「パラメータB」であるが、これらの設定データは、アラームに関連しないので、特定部106により特定されず、「2019年1月11日」のバックアップ時に検知された「プログラムC」の変更情報が、特定部106により特定される。
【0099】
本実施形態では、アラーム詳細画面G3に変更内容情報が表示されるので、特定部106は、変更内容情報を特定するために内容特定部106Aを含む。内容特定部106Aは、事象判定部105により事象が発生したと判定された場合に、当該事象に関連する変更内容情報を特定する。例えば、内容特定部106Aは、過去に取得された変更内容情報のうち、事象が発生した時間に近い変更内容情報を特定する。内容特定部106Aは、事象が発生した時間に近い順に所定数の変更内容情報を特定する。内容特定部106Aは、事象に関連する設定データの変更内容情報を特定し、事象に関連しない設定データの変更内容情報については特定しない。
【0100】
本実施形態では、アラーム詳細画面G3に変更種類情報が表示されるので、特定部106は、変更種類情報を特定するために内容特定部106Aを含む。変更種類特定部106Bは、事象が発生したと判定された場合に、事象に関連する変更種類情報を特定する。例えば、変更種類特定部106Bは、過去に取得された変更種類情報のうち、事象が発生した時間に近い変更種類情報を特定する。変更種類特定部106Bは、事象が発生した時間に近い順に所定数の変更種類情報を特定する。変更種類特定部106Bは、事象に関連する設定データの変更種類情報を特定し、事象に関連しない設定データの変更種類情報については特定しない。
【0101】
本実施形態では、アラームが事象に相当するので、特定部106は、アラーム関連特定部106Cを含む。アラーム関連特定部106Cは、アラームが発生したと判定された場合に、アラームに関連する変更情報を特定する。本実施形態では、アラームと設定データとの関係が関連性データベースDB2に示されているので、アラーム関連特定部106Cは、発生したアラームに関連付けられた設定データの変更情報を特定する。例えば、アラーム関連特定部106Cは、過去に取得された変更情報のうち、アラーム発生時間に近い変更情報を特定する。アラーム関連特定部106Cは、アラームが発生した時間に近い順に所定数の変更情報を特定する。アラーム関連特定部106Cは、アラームに関連する設定データの変更情報を特定し、アラームに関連しない設定データの変更情報については特定しない。
【0102】
本実施形態では、コントローラ21においては、複数種類の設定データが変更可能であり、かつ、複数種類の事象が発生可能なので、特定部106は、関連種類特定部106Dを含む。関連種類特定部106Dは、複数種類の事象の何れかの事象が発生したと判定された場合に、当該事象の種類に関連する種類の設定データの変更情報を特定する。本実施形態では、事象の種類と設定データとの関係が関連性データベースDB2に示されているので、関連種類特定部106Dは、発生した事象の種類に関連付けられた設定データの変更情報を特定し、発生した事象の種類に関連付けられていない設定データの変更情報については特定しない。
【0103】
本実施形態では、関連する設定データがユーザにより登録されているので、特定部106は、登録種類特定部106Eを含む。登録種類特定部106Eは、複数種類の事象の何れかの事象が発生したと判定された場合に、登録部101の登録内容に基づいて、当該事象の種類に関連する種類の設定データの変更情報を特定する。登録内容は、ユーザにより指定されるので、登録種類特定部106Eは、ユーザにより指定された種類の設定データの変更情報を特定し、ユーザにより指定されていない種類の設定データの変更情報については特定しない。
【0104】
[出力部]
出力部107は、特定部106により特定された変更情報を出力する。本実施形態では、変更情報が画面上で視覚的に出力される場合を説明するが、変更情報は、音声によって出力されてもよいし、データ出力(ファイル出力)されてもよい。変更情報がデータ出力されるとは、変更情報がデータとして外部機器又はメモリに出力されて記録されることである。この場合、任意のデータ形式で出力されるようにすればよく、例えば、画像形式、テキスト形式、文書形式、表形式、csv形式、又はメッセージ形式などで出力されるようにすればよい。例えば、変更情報を含むメッセージを送信することが出力に相当してもよい。
【0105】
本実施形態では、アラーム詳細画面G3に変更内容情報が表示されるので、出力部107は、内容出力部107Aを含む。内容出力部107Aは、内容特定部106Aにより特定された変更内容情報を出力する。例えば、内容出力部107Aは、設定データの差分(違い)を示す変更内容情報を出力する。本実施形態では、差分の全てが変更内容情報として取得される場合を説明するが、差分の一部だけが変更内容情報として取得されてもよい。
【0106】
例えば、内容出力部107Aは、変更前のプログラムが示すプログラムコードの文字列と、変更後のプログラムが示すプログラムコードの文字列と、の間で一致しない部分を示す変更内容情報を出力する。また例えば、内容出力部107Aは、変更前のパラメータの値と、変更後のパラメータの値と、の差分を示す変更内容情報を出力する。本実施形態では、内容出力部107Aは、アラーム詳細画面G3において、プログラムコードの変更内容を表示させたり、パラメータの変更内容を表示させたりする。
【0107】
また、本実施形態では、アラーム詳細画面G3に変更種類情報が表示されるので、出力は、種類出力部107Bを含む。種類出力部107Bは、変更種類特定部106Bにより特定された変更種類情報を出力する。例えば、変更判定部103は、設定データの種類ごとに、設定データが変更されたか否かを判定するので、種類出力部107Bは、変更判定部103により変更されたと判定された種類を示す変更種類情報を出力する。例えば、種類出力部107Bは、変更判定部103により変更されたと判定されたプログラムの名前を示す変更種類情報を出力する。本実施形態では、種類出力部107Bは、アラーム詳細画面G3において、変更されたプログラムの名前を表示させる。
【0108】
[4.産業機器管理システムで実行される処理]
次に、産業機器管理システム1で実行される処理を説明する。ここでは、関連する設定データを登録するための登録処理、設定データのバックアップを取るバックアップ処理、及びアラームが発生した場合に実行されるアラーム発生処理について説明する。以降説明する処理は、
図5に示す機能ブロックにより実行される処理の一例である。
【0109】
[登録処理]
図8は、登録処理を示すフロー図である。
図8に示す処理は、管理サーバ10のCPU11が記憶部12に記憶されたプログラムに従って動作し、ユーザ端末30のCPU31が記憶部32に記憶されたプログラムに従って動作することによって実行される。
【0110】
図8に示すように、まず、ユーザ端末30においては、CPU31は、管理サーバ10に対し、登録画面G1の表示要求を送信する(S100)。表示要求は、所定形式のデータが送信されることによって実行されるようにすればよく、例えば、ウェブブラウザ上で画面を表示させる場合にはURLが含まれており、アプリケーション上で画面を表示させる場合には画面の識別情報が含まれているものとする。この点は、以降説明する他の画面の表示要求についても同様である。なお、S100において送信される表示要求には、登録対象のコントローラ21の名前も含まれているものとする。
【0111】
管理サーバ10においては、登録画面G1の表示要求を受信すると、CPU11は、コントローラデータベースDB1と関連性データベースDB2とに基づいて、登録画面G1の表示データを生成し、ユーザ端末30に送信する(S101)。S101においては、CPU11は、コントローラデータベースDB1のバックアップ情報を参照し、設定データの登録対象となるコントローラ21が記憶する設定データの種類を特定し、プルダウンメニューM10〜M12に表示させる設定データの種類を設定する。そして、CPU11は、関連性データベースDB2を参照し、アラームコードと関連する設定データとの関係を特定し、登録画面G1に表示させるアラームコード、アラーム名、及び現時点で登録されている設定データの種類を決定する。
【0112】
ユーザ端末30においては、登録画面G1の表示データを受信すると、CPU31は、受信した表示データに基づいて、登録画面G1を表示部35に表示させる(S102)。CPU31は、操作部34の検出信号に基づいて、ユーザの操作を特定する(S103)。S103においては、関連する設定データを登録するための登録操作、又は、登録済みの設定データを解除する解除操作の何れかが行われるものとする。
【0113】
関連する設定データの登録操作が行われた場合(S103;登録操作)、CPU31は、関連する設定データを登録するための登録要求を送信する(S104)。登録要求は、所定形式のデータが送信されることによって実行されるようにすればよく、例えば、ユーザが指定したアラームコードと設定データの名前が含まれるものとする。
【0114】
管理サーバ10においては、追加要求を受信すると、CPU11は、ユーザが指定したアラームコードのアラームに関連する設定データとして、ユーザが指定した設定データを登録し(S105)、本処理は終了する。S105においては、CPU11は、追加要求に含まれるアラームコードと設定データとを互いに関連付けて、関連性データベースDB2に格納する。
【0115】
一方、関連する設定データの解除操作が行われた場合(S103;解除操作)、CPU31は、アラームコードから、ユーザが指定した関連性のある設定データを解除する旨の解除要求を送信する(S106)。解除要求は、所定形式のデータが送信されることによって実行されるようにすればよく、例えば、ユーザが指定したアラームコードと設定データの名前が含まれるものとする。
【0116】
管理サーバ10においては、解除要求を受信すると、CPU11は、ユーザが指定したアラームコードのアラームから、ユーザが指定した設定データを解除し(S107)、本処理は終了する。S107においては、CPU11は、解除要求に含まれるアラームコードと設定データとの関連付けを解除するように、関連性データベースDB2を更新する。
【0117】
[バックアップ処理]
図9は、バックアップ処理を示すフロー図である。
図9に示す処理は、管理サーバ10のCPU11が記憶部12に記憶されたプログラムに従って動作し、コントローラ21が自身に記憶されたプログラムに従って動作することによって実行される。
【0118】
図9に示すように、まず、管理サーバ10においては、CPU11は、リアルタイムクロック又はGPS信号等を利用して現在日時を取得し、バックアップ時間が訪れたか否かを判定する(S200)。バックアップ時間は、記憶部12に予め記憶されているものとする。バックアップを取得する時間が訪れたと判定されない場合(S200;N)、S200の処理が再び実行される。
【0119】
バックアップ時間が訪れたと判定された場合(S200;Y)、CPU11は、コントローラ21に対し、設定データを要求する(S201)。設定データの要求は、所定形式のデータが送信されることによって実行されるようにすればよい。複数台のコントローラ21が存在する場合には、S201においては、CPU11は、各コントローラ21に対し、設定データを要求する。なお、バックアップの対象となるのは、全てのコントローラ21ではなく、一部のコントローラ21だけであってもよい。
【0120】
コントローラ21は、設定データの要求を受信すると、自身の記憶部に記憶された設定データを送信する(S202)。S202においては、コントローラ21は、自身を識別する情報(例えば、コントローラ21の名前)とともに、バックアップ対象となる全ての設定データを送信する。なお、バックアップ対象となるのは、コントローラ21に記憶された全ての設定データではなく、一部の設定データだけであってもよい。
【0121】
管理サーバ10においては、コントローラ21から設定データを受信すると、CPU11は、コントローラデータベースDB1に設定データを格納し、設定データのバックアップを取る(S203)。S203においては、CPU11は、設定データを送信したコントローラ21の名前に関連付けて、受信した設定データを格納することによってバックアップを取り、バックアップ日時として現在日時を格納する。
【0122】
CPU11は、S103で受信した設定データ(今回バックアップを取った設定データ)と、過去の設定データ(前回以前にバックアップを取った設定データ)と、に基づいて、設定データが変更されたか否かを判定する(S204)。S204においては、CPU11は、プログラムコードが一致しているか否かを判定したり、パラメータの値が一致しているか否かを判定したりする。ここでは、1つでも設定データが変更されていれば、S204の判定が肯定になる場合を説明するが、特定の設定データが変更された場合にS204の判定が肯定になってもよいし、基準範囲外の数の設定データが変更された場合にS204の判定が肯定になってもよい。
【0123】
設定データが変更されたと判定された場合(S204;Y)、CPU11は、コントローラデータベースDB1に第1の値の変更有無情報を格納し(S205)、ユーザに電子メールを送信して(S206)、本処理は終了する。S205においては、CPU11は、設定データを送信したコントローラ21の変更有無情報を第1の値に設定し、変更された設定データの名前を格納する。なお、この時点でCPU11は、変更内容情報及び変更種類情報を取得して変更有無情報に含めるようにしてもよい。S206においては、CPU11は、予め定められたメールアドレスに、電子メールを送信する。電子メールの送信先は、コントローラ21ごとに指定できるようにしてもよい。
【0124】
一方、設定データが変更されたと判定されない場合(S204;N)、CPU11は、コントローラデータベースDB1に第2の値の変更有無情報を格納し(S207)、本処理は終了する。S207においては、CPU11は、設定データを送信したコントローラ21の変更有無情報を第2の値に設定する。この場合、設定データが変更されていないので、電子メールは送信されない。
【0125】
[アラーム発生処理]
図10は、アラーム発生処理を示すフロー図である。
図10に示す処理は、管理サーバ10のCPU11が記憶部12に記憶されたプログラムに従って動作し、コントローラ21が自身の記憶部に記憶されたプログラムに従って動作し、ユーザ端末30のCPU31が記憶部32に記憶されたプログラムに従って動作することによって実行される。
【0126】
図10に示すように、まず、コントローラ21は、アラームが発生したか否かを判定する(S300)。S300においては、コントローラ21は、自身又はロボット22の動作状況に基づいて、アラーム発生条件が満たされたか否かを判定する。この判定処理の詳細については、先述した通りである。
【0127】
アラームが発生したと判定された場合(S300;Y)、コントローラ21は、管理サーバ10に、アラームが発生したことを示すアラーム発生通知を送信する(S301)。S301においては、コントローラ21は、現在日時であるアラーム発生日時と、満たされたアラーム発生条件が示すアラームコードと、を含むアラーム発生通知を送信する。
【0128】
管理サーバ10においては、アラーム発生通知を受信すると、CPU11は、コントローラデータベースDB1のアラーム発生情報を更新し(S302)、ユーザに電子メールを送信する(S303)。S302においては、CPU11は、アラーム発生通知に含まれるアラーム発生日時とアラームコードを含むアラーム発生情報をコントローラデータベースDB1に格納する。S303においては、CPU11は、アラームが発生した旨を示す電子メールを作成し、ユーザのアドレスを送信先に設定して送信する。電子メールには、アラームが発生したコントローラ21の名前、アラームコード、アラームの名前、アラームの発生時間、及びアラーム一覧画面G2へのリンクが含まれていてもよい。電子メールの送信先は、コントローラ21ごとに指定できるようにしてもよい。
【0129】
ユーザ端末30においては、CPU31は、アラーム一覧画面G2の表示要求を送信する(S304)。管理サーバ10においては、アラーム一覧画面G2の表示要求を受信すると、CPU31は、コントローラデータベースDB1に基づいて、アラーム一覧画面G2の表示データを生成し、ユーザ端末30に送信する(S305)。S305においては、CPU11は、コントローラデータベースDB1の発生アラーム情報を参照し、アラームが発生したコントローラ21、アラーム発生時間、アラームコード、及びアラームの名前を特定し、アラーム一覧画面G2の表示データを生成する。
【0130】
ユーザ端末30においては、アラーム一覧画面G2の表示データを受信すると、CPU31は、受信した表示データに基づいて、アラーム一覧画面G2を表示部35に表示させる(S306)。CPU31は、操作部34の検出信号に基づいて、アラーム一覧画面G2に表示されたアラームが選択されたか否かを判定する(S307)。
【0131】
アラームが選択されたと判定された場合(S307;Y)、CPU31は、選択されたアラームの詳細を示すアラーム詳細画面G3の表示要求を送信する(S308)。この表示要求には、ユーザが選択したアラームが発生したコントローラの名前、アラーム発生時間、アラームコード、及びアラームの名前が含まれているものとする。
【0132】
管理サーバ10においては、アラーム詳細画面G3の表示要求を受信すると、CPU11は、関連性データベースDB2に基づいて、ユーザが指定したアラームに関連する設定データを特定し(S309)、コントローラデータベースDB1に基づいて、アラーム詳細画面G3の表示データを生成し、ユーザ端末30に送信する(S310)。S309においては、CPU11は、関連性データベースDB2を参照し、表示要求に含まれるコントローラの名前及びアラームコードに関連付けられた設定データを特定する。S310においては、CPU11は、コントローラデータベースDB1を参照し、当該特定した設定データのアラーム発生時間におけるバージョンと1つ前のバージョンとを取得し、アラーム詳細画面G3の表示データを生成する。
【0133】
ユーザ端末30においては、アラーム詳細画面G3の表示データを受信すると、CPU11は、受信した表示データに基づいて、アラーム詳細画面G3を表示部35に表示させ(S311)、本処理は終了する。
【0134】
産業機器管理システム1によれば、コントローラ21において設定データが変更されたと判定された場合に、設定データの変更に関する変更情報を取得し、コントローラ21において所定の事象が発生したと判定された場合に、事象に関連する変更情報を特定して出力することで、コントローラ21で所定の事象が発生した原因を解析するために有用な情報を提供し、原因の解析を支援することができる。例えば、ユーザの知らないところで誰かが設定データを変更し、それが原因となって所定の事象が発生したとしても、ユーザは、事象の発生に関連する変更情報を知ることができ、所定の事象が発生した原因の解析を効果的に支援することができる。
【0135】
また、コントローラ21において所定の事象が発生したと判定された場合に、発生した事象に関連する変更内容情報を特定して出力することで、設定データのどの部分の変更が事象の発生の原因になっているかをユーザに容易に把握させることができるので、コントローラ21で事象が発生した原因の解析を効果的に支援することができる。例えば、コントローラ21で所定の事象(アラーム等)が発生した場合に、設定データの特定箇所に対する変更が、発生した事象に関連していることがあるが、変更内容情報を出力することで、ユーザによる解析を効果的に支援することができる。
【0136】
また、コントローラ21において所定の事象が発生したと判定された場合に、発生した事象に関連する変更種類情報を特定して出力することで、どの種類の設定データの変更が事象の発生の原因になっているかをユーザに容易に把握させることができるので、コントローラ21で事象が発生した原因の解析を効果的に支援することができる。例えば、コントローラ21で所定の事象(アラーム等)が発生した場合に、特定種類の設定データの変更が、発生した事象に関連していることがあるが、変更種類情報を出力することで、ユーザによる解析を効果的に支援することができる。
【0137】
また、コントローラ21でアラームが発生した場合に、アラームの発生には、設定データの変更が関連していることがあるので、変更情報を出力することにより、ユーザによる解析を効果的に支援することができる。
【0138】
また、コントローラ21において発生する事象の種類によって、その原因となる設定データの種類が違うことがあるが、コントローラ21において発生した事象の種類に関連する設定データの種類の変更情報を特定して出力することで、発生した事象の種類に応じた変更情報を提供し、原因の解析を効果的に支援することができる。
【0139】
また、事象の種類ごとに、ユーザにより指定された設定データの種類を登録することにより、コントローラ21において発生した事象の種類に関連する設定データの種類をユーザが自分で指定することができる。これにより、ユーザが解析したい設定データの種類を事象の種類ごとに指定することができるので、事象の原因の解析を効果的に支援することができる。
【0140】
また、バックアップ目的でコントローラ21から設定データを収集したとすると、いわばバックアップのついでに、変更情報を出力することができ、変更情報を出力するためだけに設定データを収集する必要がなくなるので、コントローラ21及びシステムの処理負荷と、ネットワークの通信負荷と、を軽減することができる。
【0141】
[5.変形例]
なお、本発明は、以上に説明した実施の形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
【0142】
図11は、変形例の機能ブロック図である。
図11に示すように、記録部108、記録種類特定部106F、役割特定部106G、及び他機器特定部106Hが実現される。これら各機能は、CPU11を主として実現される。
【0143】
(1)例えば、実施形態では、アラームコードと関連する設定データとの関係を、ユーザが手動で登録する場合を説明したが、コントローラ21で発生したアラームと、直近で変更された設定データと、の関係を統計的に分析し、アラームコードと関連する設定データとの関係が特定されてもよい。
【0144】
図12は、本変形例の関連性データベースDB2の一例を示す図である。
図12に示すように、関連性データベースDB2には、コントローラの名前、アラームコード、アラームの名前、及び設定データの関連度が格納される。即ち、関連性データベースDB2には、アラームごとに、設定データの関連度が格納される。
【0145】
関連度は、アラームに対する設定データの関連性の高さである。関連度が高いほど、アラームの発生に関連している蓋然性(確率)が高いことを示す。関連度は、アラームが発生した場合に、直近のm回(mは自然数)で変更された設定データに基づいて更新される。例えば、あるアラームが発生した場合に、直近のm回で変更された回数が多いほど、関連度は高くなる。
【0146】
本変形例では、記録部108と記録種類特定部106Fとが実現される。記録部108は、複数種類のアラームの何れかのアラームが発生したと判定された場合に、当該アラームの種類に関連付けて、少なくとも直近に変更された設定データの種類を記録する。ここでは、アラームの種類がアラームコードによって特定されるので、記録部108は、アラームコードに関連付けて、少なくとも直近に変更された設定データの種類を記録する。
【0147】
少なくとも直近に変更された設定データとは、アラームが発生した時点から数えてm番目までに変更された設定データである。本変形例では、mの数値を1とするが、mの数値は2以上であってもよい。即ち、アラームが発生した時点を基準として、直近に変更された設定データだけでなく、2番目以降に変更された設定データの種類が記録されてもよい。
【0148】
本変形例では、アラームコードごとに、各設定データの関連度が用意されているので、記録部108は、各設定データの関連度を増加させることにより、少なくとも直近に変更された設定データの種類を記録する。例えば、記録部108は、アラームが発生した場合に、コントローラデータベースDB1の変更有無情報を参照し、直近m回に変更された設定データの名前を特定する。記録部108は、発生したアラームのアラームコードに関連付けられた当該設定データの関連度を増加させる。
【0149】
関連度の増加量は、任意であってよく、ここでは1とするが、2以上であってもよい。例えば、mの数値が2以上の場合、記録部108は、アラームが発生した時点に近いほど、重み付けを高くして関連度を増加させてもよい。例えば、アラームが発生した時点の過去2回の設定データの変更を考慮する場合、記録部108は、直近の1番目の設定データについては関連度を2増加させ、2番目の設定データについては関連度を1増加させるといったようにしてもよい。このようにすることで、設定データが変更された時点がアラームの発生時点に近いほど、アラームの発生との関連性を高めることができる。
【0150】
記録種類特定部106Fは、記録部108による記録が行われた後に、複数種類のアラームの何れかのアラームが発生したと判定された場合に、記録部108の記録内容に基づいて、当該アラームの種類に関連する種類の設定データの変更情報を特定する。本変形例では、記録部108の記録内容は、関連性データベースDB2に記録されているので、記録種類特定部106Fは、関連性データベースDB2に基づいて、アラームに関連する設定データの種類を特定する。例えば、記録種類特定部106Fは、最も関連度の高い設定データを特定してもよいし、関連度が高い順に所定番目までの設定データを特定してもよい。関連する設定データが特定された後の処理については、実施形態で説明した通りであり、当該特定された設定データの変更情報がアラーム詳細画面G3に表示される。
【0151】
変形例(1)によれば、複数種類のアラームの何れかのアラームが発生したと判定された場合に、当該アラームの種類に関連付けて、少なくとも直近に変更された設定データの種類を記録し、当該記録内容に基づいて、産業機器において発生したアラームの種類に関連する種類の設定データの変更情報を特定することで、過去に発生したアラームと、変更された設定データの種類と、の関係を統計的に分析したうえで、変更情報を出力することができる。これにより、産業機器において発生したアラームにより関連性の高い設定データの変更情報を提供し、原因の解析を効果的に支援することができる。
【0152】
(2)また例えば、コントローラ21の役割に応じて、アラームに関連する設定データが異なる場合がある。役割とは、コントローラ21の用途ということもできる。例えば、コントローラ21が対象物に対する加工を行う場合、コントローラ21が行う加工の種類は、役割に相当する。別の言い方をすれば、コントローラ21が担当する工程の種類は、役割に相当する。コントローラ21の役割ごとに、アラームに関連する設定データを登録しておき、アラームが発生したコントローラ21の役割に応じた設定データが特定されるようにしてもよい。
【0153】
本変形例では、ロボットシステム22が食品の加工で利用される場面を例に挙げる。例えば、施設内に複数のラインが存在し、各ラインにおいて、原材料の生成工程、成形工程、加熱工程、及び包装工程の4つの工程が行われるものとする。各ラインには、個々の工程を担当するコントローラ21及びロボット22が4セット含まれる。この場合、あるラインAの生成工程を担当するコントローラ21のアラームは、別のラインBの生成工程を担当するコントローラ21のアラームと原因が共通していることがある。他の工程も同様であり、成形工程、加熱工程、及び包装工程の各々では、これらの工程特有の原因が存在していることがある。そこで、コントローラ21の役割(コントローラ21が担当する工程)ごとに、関連する設定データを登録できるようにしてもよい。
【0154】
本変形例では、役割特定部106Gが実現される。役割特定部106Gは、アラームが発生したと判定された場合に、コントローラ21の役割に基づいて、アラームに関連する変更情報を特定する。本変形例では、コントローラデータベースDB1に、コントローラ21の役割が格納されているものとする。
【0155】
また、実施形態で説明したように、アラームに関連する設定データをユーザが手動で指定して登録する場合、関連性データベースDB2は、
図7のようなデータ格納例となる。ただし、実施形態では、コントローラ21ごとに、各アラームに関連する設定データが登録される場合を説明したが、本変形例では、コントローラ21の役割ごとに、関連する設定データが登録される。先述した食品の加工の例であれば、個々の工程ごとに、関連する設定データが登録される。
【0156】
あるコントローラ21でアラームが発生した場合、役割特定部106Gは、コントローラデータベースDB1を参照し、アラームが発生したコントローラ21の役割を特定する。そして、役割特定部106Gは、関連性データベースDB2を参照し、当該特定された役割に対する登録内容に基づいて、アラームに関連する変更情報を特定する。例えば、役割特定部106Gは、アラームが発生したコントローラ21の役割及び当該アラームのアラームコードの両方に関連付けられた設定データを特定する。関連する設定データが特定された後の処理については、実施形態で説明した通りであり、当該特定された設定データの変更情報がアラーム詳細画面G3に表示される。
【0157】
なお、各アラームに関連する設定データをユーザが手動で指定する場合を例に挙げたが、変形例(1)のように、関連する設定データが統計的に解析される場合であっても、変形例(2)の処理を適用可能である。この場合、関連性データベースDB2は、
図12のようなデータ格納例になり、各設定データの関連度が、コントローラ21の役割ごとに格納される。記録部108は、あるコントローラ21でアラームが発生した場合、当該コントローラ21の役割に関連付けられた関連度を更新する。役割特定部106Gは、アラームが発生したと判定された場合に、コントローラ21の役割に関連付けられた関連度に基づいて、アラームに関連する設定データを特定する。関連度に基づいて設定データを特定する処理は、変形例(1)で説明した通りである。
【0158】
変形例(2)によれば、コントローラ21において所定のアラームが発生した場合に、コントローラ21の役割に応じた変更情報を特定して出力することにより、コントローラ21で所定のアラームが発生した原因を解析するために有用な情報を提供し、原因の解析を効果的に支援することができる。
【0159】
(3)また例えば、あるコントローラ21でアラームが発生した場合に、当該コントローラ21の設定データではなく、前後の工程を担当するコントローラ21に原因があることもある。このため、あるコントローラ21でアラームが発生した場合に、関連する設定データとして、他のコントローラ21の設定データが表示されてもよい。例えば、変形例(2)で説明した食品の可能の例であれば、成形工程を担当するコントローラ21で発生したアラームの原因は、その前工程である生成工程を担当するコントローラ21の設定データにあることも考えられる。このため、成形工程を担当するコントローラ21でアラームが発生した場合に、生成工程を担当するコントローラ21の設定データの変更情報が表示されてもよい。
【0160】
本変形例では、他機器特定部106Hが実現される。複数のコントローラ21が同じラインに属しており、他機器特定部106Hは、複数のコントローラ21の何れかのコントローラ21においてアラームが発生したと判定された場合に、他のコントローラ21の変更情報を特定する。他のコントローラ21は、アラームが発生したコントローラと同じラインに属する他のコントローラ21であればよい。例えば、他機器特定部106Hは、同じラインの他の全てのコントローラ21の変更情報を特定してもよいし、他の一部のコントローラ21の変更情報を特定してもよい。例えば、他機器特定部106Hは、アラームが発生したコントローラ21の前の工程を担当する他のコントローラ21と、後の工程を担当する他のコントローラ21と、の両方又は何れか一方の変更情報を特定してもよい。また例えば、他機器特定部106Hは、前後の工程ではなく、他の全てのコントローラ21の変更情報を特定してもよい。
【0161】
変形例(3)によれば、コントローラ21において所定の事象が発生した場合に、同じラインに属する他のコントローラ21が原因になっていることがあるが、変形例(3)によれば、他のコントローラ21の変更情報を出力することで、所定の事象が発生した原因を解析するために有用な情報を提供し、原因の解析を効果的に支援することができる。
【0162】
(4)また例えば、上記説明した変形例を組み合わせてもよい。
【0163】
また例えば、管理サーバ10は、設定データをバックアップ目的で収集しなくてもよく、アラーム発生時などの任意のタイミングで設定データを収集してよい。また例えば、上記説明した主たる機能が管理サーバ10で実現される場合を説明したが、複数のコンピュータで各機能が分担されてもよい。
【0164】
また、以上説明した実施形態は具体例として示したものであり、本明細書にて開示される発明をこれら具体例の構成やデータ格納例そのものに限定するものではない。当業者はこれら開示された実施形態に種々の変形、例えば、物理的構成の形状や数、データ構造、処理の実行順を変更したりしてもよい。本明細書にて開示される発明の技術的範囲は、そのようになされた変形をも含むものと理解すべきである。