(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-10
(45)【発行日】2023-05-18
(54)【発明の名称】生産システム、上位制御装置、制御装置、通信方法、及びプログラム
(51)【国際特許分類】
G05B 19/05 20060101AFI20230511BHJP
【FI】
G05B19/05 F
(21)【出願番号】P 2020113005
(22)【出願日】2020-06-30
【審査請求日】2022-01-21
(73)【特許権者】
【識別番号】000006622
【氏名又は名称】株式会社安川電機
(74)【代理人】
【識別番号】110000154
【氏名又は名称】弁理士法人はるか国際特許事務所
(72)【発明者】
【氏名】木村 元
(72)【発明者】
【氏名】坂口 誠史郎
(72)【発明者】
【氏名】清水 寛将
【審査官】藤崎 詔夫
(56)【参考文献】
【文献】特開2018-147017(JP,A)
【文献】特開平11-221950(JP,A)
【文献】特開平01-297728(JP,A)
【文献】特開平08-036501(JP,A)
【文献】米国特許出願公開第2017/0371310(US,A1)
【文献】特開2008-005587(JP,A)
【文献】特開2003-153080(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
(57)【特許請求の範囲】
【請求項1】
1以上の産業装置を制御
し、複数のプログラムを実行可能な制御装置と、前記制御装置を制御可能な上位制御装置と、が通信可能に接続された生産システムであって、
前記上位制御装置は、
前記制御装置の制御用に割り当てられた、
プログラム選択を要求する選択要求コマンドが書き込まれる第1エリアと、プログラム名が書き込まれる第2エリアと、があるコマンドエリアを含むレジスタを有するレジスタ部と、
前記コマンドエリアに書き込まれた
前記選択要求コマンド及び前記プログラム名を、対応する前記制御装置に送信する送信部と、
を有し、
前記制御装置は、
前記上位制御装置から受信した
前記選択要求コマンド及び前記プログラム名が書き込まれる通信用記憶部と、
前記通信用記憶部に書き込まれた
前記選択要求コマンドに基づいて前記プログラム名のプログラムを選択し、当該選択されたプログラムを実行することによって、前記上位制御装置により指示された処理を実行する実行部と、
を有
し、
前記選択要求コマンドとは異なる他のコマンドが前記第1エリアに書き込まれる場合には、前記プログラム名とは異なる他の情報が前記第2エリアに書き込まれ、
前記送信部は、前記他のコマンドが前記第1エリアに書き込まれ、前記他の情報が前記第2エリアに書き込まれた場合には、前記他のコマンド及び前記他の情報を、対応する前記制御装置に送信し、
前記実行部は、前記他のコマンド及び前記他の情報が前記通信用記憶部に書き込まれた場合には、前記他の情報に基づいて、前記他のコマンドを実行することによって、前記処理を実行する、
する生産システム。
【請求項2】
前記コマンドエリアには、前記
選択要求コマンドと前記プログラム名とが送信された後に、プログラム開始を要求する新たなコマンドデータが書き込まれ、
前記送信部は、前記新たなコマンドデータを、対応する前記制御装置に送信し、
前記実行部は、前記新たなコマンドデータに基づいて、前記選択されたプログラムの実行を開始する、
請求項
1に記載の生産システム。
【請求項3】
前記コマンドエリアには、プログラムにおける開始部分に関する開始部分情報
が更に書き込まれ、
前記実行部は、前記開始部分情報に基づいて、前記
選択されたプログラムにおける開始部分を特定し、当該特定された開始部分から前記
選択されたプログラムを実行する、
請求項
1又は
2に記載の生産システム。
【請求項4】
前記コマンドエリアには、コマンド実行を要求するコマンド要求情報とコマンドと
が書き込まれ、
前記実行部は、前記コマンド要求情報が更新された場合に、前記コマンドに基づいて、前記処理を実行する、
請求項1~
3の何れかに記載の生産システム。
【請求項5】
前記制御装置は、複数の機能を有し、
前記コマンドエリアには、前記複数の機能のうちの何れかを要求するメインコマンドと、当該機能における処理を要求するサブコマンドと、
が書き込まれ、
前記実行部は、前記メインコマンドと前記サブコマンドの組み合わせに基づいて、前記処理を特定して実行する、
請求項1~
4の何れかに記載の生産システム。
【請求項6】
前記コマンドエリアのうち、前記メインコマンドと前記サブコマンドの組み合わせに対応するエリア内に、前記処理の詳細に関する詳細情報
が更に書き込まれ、
前記実行部は、前記メインコマンドと前記サブコマンドの組み合わせに対応するエリア内に書き込まれた前記詳細情報に基づいて、前記処理を実行する、
請求項
5に記載の生産システム。
【請求項7】
前記上位制御装置は、前記制御装置を制御するための制御プログラムを実行することによって
、前記コマンドエリア
への書き込
みを行う動作制御部を更に有し、
前記送信部は、前記制御プログラムが実行されることによって前記コマンドエリアに書き込まれた
前記選択要求コマンド及び前記プログラム名を送信する、
請求項1~
6の何れかに記載の生産システム。
【請求項8】
前記上位制御装置と前記制御装置は、非同期通信のネットワークで接続されており、
前記送信部は、非同期通信を利用して、前記
選択要求コマンド及び前記プログラム名を送信する、
請求項1~
7の何れかに記載の生産システム。
【請求項9】
前記通信用記憶部は、前記処理の実行結果を示す応答データが書き込まれ、
前記
制御装置は、前記通信用記憶部に書き込まれた応答データを、前記上位制御装置に送信する送信部を更に有し、
前記上位制御装置の前記レジスタ部は、前記制御装置から受信した応答データが書き込まれる応答エリアを有する、
請求項1~
8の何れかに記載の生産システム。
【請求項10】
前記上位制御装置は、
前記
コマンドエリアに書き込まれたデータと、前記応答データと、を比較する比較部と、
前記比較部の比較結果に基づいて、所定のアラートを出力する出力部と、
を更に有する請求項
9に記載の生産システム。
【請求項11】
1以上の産業装置を制御する制御装置と通信可能に接続され、前記制御装置を制御可能な上位制御装置であって、
前記制御装置の制御用に割り当てられた、
プログラム選択を要求する選択要求コマンドが書き込まれる第1エリアと、プログラム名が書き込まれる第2エリアと、があるコマンドエリアを含むレジスタを有するレジスタ部と、
前記コマンドエリアに書き込まれた
前記選択要求コマンド及び前記プログラム名を、対応する前記制御装置に送信する送信部と、
を有
し、
前記選択要求コマンドとは異なる他のコマンドが前記第1エリアに書き込まれる場合には、前記プログラム名とは異なる他の情報が前記第2エリアに書き込まれ、
前記送信部は、前記他のコマンドが前記第1エリアに書き込まれ、前記他の情報が前記第2エリアに書き込まれた場合には、前記他のコマンド及び前記他の情報を、対応する前記制御装置に送信する、
上位制御装置。
【請求項12】
上位制御装置と通信可能に接続され、1以上の産業装置を制御する制御装置であって、
前記制御装置の制御用に割り当てられた前記上位制御装置のレジスタのコマンドエリア
であって、プログラム選択を要求する選択要求コマンドが書き込まれる第1エリアと、プログラム名が書き込まれる第2エリアと、がある前記コマンドエリアに書き込まれた
当該選択要求コマンド及び当該プログラム名を受信した場合に、当該
選択要求コマンド及び当該プログラム名が書き込まれる通信用記憶部と、
前記通信用記憶部に書き込まれた
前記選択要求コマンドに基づいて前記プログラム名のプログラムを選択し、当該選択されたプログラムを実行することによって、前記上位制御装置により指示された処理を実行する実行部と、
を有
し、
前記選択要求コマンドとは異なる他のコマンドが前記第1エリアに書き込まれる場合には、前記プログラム名とは異なる他の情報が前記第2エリアに書き込まれ、
前記上位制御装置は、前記他のコマンドが前記第1エリアに書き込まれ、前記他の情報が前記第2エリアに書き込まれた場合には、前記他のコマンド及び前記他の情報を、対応する前記制御装置に送信し、
前記実行部は、前記他のコマンド及び前記他の情報が前記通信用記憶部に書き込まれた場合には、前記他の情報に基づいて、前記他のコマンドを実行することによって、前記処理を実行する、
制御装置。
【請求項13】
前記産業装置は、ロボットであり、
前記制御装置は、前記ロボットを制御するロボットコントローラであり、
前記上位制御装置は、前記ロボットコントローラを制御可能であり、
前記処理は、ロボットプログラムの処理である、
請求項1
~10の何れかに記載の
生産システム。
【請求項14】
前記
コマンドエリアには、前記ロボットプログラムを実行させるためのコマンド、前記ロボットプログラムのロボットプログラム名、及び前記ロボットプログラムにおけるロボットプログラムにおける開始部分に関する開始部分情報
が書き込まれ、
前記実行部は、前記コマンドを受信した場合に、前記ロボットプログラム名と前記開始部分情報とに基づいて、前記ロボットプログラムと前記開始部分とを特定し、当該特定された開始部分から当該特定されたロボットプログラムを実行する、
請求項1
3に記載の
生産システム。
【請求項15】
1以上の産業装置を制御する制御装置と、前記制御装置を制御可能な上位制御装置と、が通信可能に接続された生産システムにおける通信方法であって、
前記制御装置の制御用に割り当てられた前記上位制御装置のレジスタのコマンドエリア
であって、プログラム選択を要求する選択要求コマンドが書き込まれる第1エリアと、プログラム名が書き込まれる第2エリアと、があるコマンドエリアに書き込まれた
前記選択要求コマンド及び前記プログラム名を、対応する前記制御装置に送信し、
前記上位制御装置から受信した
前記選択要求コマンド及び前記プログラム名が書き込まれる通信用記憶部に書き込まれた
前記選択要求コマンドに基づいて前記プログラム名のプログラムを選択し、当該選択されたプログラムを実行することによって、前記上位制御装置により指示された処理を実行
し、
前記選択要求コマンドとは異なる他のコマンドが前記第1エリアに書き込まれる場合には、前記プログラム名とは異なる他の情報が前記第2エリアに書き込まれ、
前記他のコマンドが前記第1エリアに書き込まれ、前記他の情報が前記第2エリアに書き込まれた場合には、前記他のコマンド及び前記他の情報を、対応する前記制御装置に送信し、
前記他のコマンド及び前記他の情報が前記通信用記憶部に書き込まれた場合には、前記他の情報に基づいて、前記他のコマンドを実行することによって、前記処理を実行する、
通信方法。
【請求項16】
1以上の産業装置を制御する制御装置と通信可能に接続され、前記制御装置を制御可能な上位制御装置を、
前記制御装置の制御用に割り当てられた、
プログラム選択を要求する選択要求コマンドが書き込まれる第1エリアと、プログラム名が書き込まれる第2エリアと、があるコマンドエリアを含むレジスタを有するレジスタ部の前記コマンドエリアに書き込まれた
前記選択要求コマンド及び前記プログラム名を、対応する前記制御装置に送信する送信部、
として機能させ
、
前記選択要求コマンドとは異なる他のコマンドが前記第1エリアに書き込まれる場合には、前記プログラム名とは異なる他の情報が前記第2エリアに書き込まれ、
前記送信部は、前記他のコマンドが前記第1エリアに書き込まれ、前記他の情報が前記第2エリアに書き込まれた場合には、前記他のコマンド及び前記他の情報を、対応する前記制御装置に送信する、
プログラム。
【請求項17】
上位制御装置と通信可能に接続され、1以上の産業装置を制御する制御装置を、
前記制御装置の制御用に割り当てられた前記上位制御装置のレジスタのコマンドエリア
であって、プログラム選択を要求する選択要求コマンドが書き込まれる第1エリアと、プログラム名が書き込まれる第2エリアと、がある前記コマンドエリアに書き込まれた
当該選択要求コマンド及び当該プログラム名を受信した場合に、当該
選択要求コマンド及び当該プログラム名が書き込まれる通信用記憶部に書き込まれた
前記選択要求コマンドに基づいて前記プログラム名のプログラムを選択し、当該選択されたプログラムを実行することによって、前記上位制御装置により指示された処理を実行する実行部、
として機能させ
、
前記選択要求コマンドとは異なる他のコマンドが前記第1エリアに書き込まれる場合には、前記プログラム名とは異なる他の情報が前記第2エリアに書き込まれ、
前記上位制御装置は、前記他のコマンドが前記第1エリアに書き込まれ、前記他の情報が前記第2エリアに書き込まれた場合には、前記他のコマンド及び前記他の情報を、対応する前記制御装置に送信し、
前記実行部は、前記他のコマンド及び前記他の情報が前記通信用記憶部に書き込まれた場合には、前記他の情報に基づいて、前記他のコマンドを実行することによって、前記処理を実行する、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、生産システム、上位制御装置、制御装置、通信方法、及びプログラムに関する。
【背景技術】
【0002】
特許文献1には、PLC(Programmable Logic Controller)などの上位制御装置の動作をラダーチャートに記述してプログラムを作成し、上位制御装置がプログラムを実行する技術が記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示が解決しようとする課題は、例えば、上位制御装置が制御装置に種々の処理を実行させる場合の通信コストを低減させることである。
【課題を解決するための手段】
【0005】
本開示の一側面に係る生産システムは、1以上の産業装置を制御する制御装置と、前記制御装置を制御可能な上位制御装置と、が通信可能に接続された生産システムであって、前記上位制御装置は、前記制御装置の制御用に割り当てられた、コマンドエリアを含むレジスタを有するレジスタ部と、前記コマンドエリアに書き込まれた複数のコマンドデータを、対応する前記制御装置に送信する送信部と、を有し、前記制御装置は、前記上位制御装置から受信した複数のコマンドデータが書き込まれる通信用記憶部と、前記通信用記憶部に書き込まれた複数のコマンドデータに基づいて、前記上位制御装置により指示された処理を実行する実行部と、を有する。
【0006】
本開示の一側面に係る上位制御装置は、1以上の産業装置を制御する制御装置と通信可能に接続され、前記制御装置を制御可能な上位制御装置であって、前記制御装置の制御用に割り当てられた、コマンドエリアを含むレジスタを有するレジスタ部と、前記コマンドエリアに書き込まれた複数のコマンドデータを、対応する前記制御装置に送信する送信部と、を有する。
【0007】
本開示の一側面に係る制御装置は、上位制御装置と通信可能に接続され、1以上の産業装置を制御する制御装置であって、前記制御装置の制御用に割り当てられた前記上位制御装置のレジスタのコマンドエリアに書き込まれた複数のコマンドデータを受信した場合に、当該複数のコマンドデータが書き込まれる通信用記憶部と、前記通信用記憶部に書き込まれた複数のコマンドデータに基づいて、前記上位制御装置により指示された処理を実行する実行部と、を有する。
【0008】
本開示の一側面に係る通信方法は、1以上の産業装置を制御する制御装置と、前記制御装置を制御可能な上位制御装置と、が通信可能に接続された生産システムにおける通信方法であって、前記制御装置の制御用に割り当てられた前記上位制御装置のレジスタのコマンドエリアに書き込まれた複数のコマンドデータを、対応する前記制御装置に送信し、前記上位制御装置から受信した複数のコマンドデータが書き込まれる通信用記憶部に書き込まれた複数のコマンドデータに基づいて、前記上位制御装置により指示された処理を実行する。
【0009】
本開示の一側面に係るプログラムは、1以上の産業装置を制御する制御装置と通信可能に接続され、前記制御装置を制御可能な上位制御装置を、前記制御装置の制御用に割り当てられた、コマンドエリアを含むレジスタを有するレジスタ部の前記コマンドエリアに書き込まれた複数のコマンドデータを、対応する前記制御装置に送信する送信部、として機能させる。
【0010】
本開示の一側面に係るプログラムは、上位制御装置と通信可能に接続され、1以上の産業装置を制御する制御装置を、前記制御装置の制御用に割り当てられた前記上位制御装置のレジスタのコマンドエリアに書き込まれた複数のコマンドデータを受信した場合に、当該複数のコマンドデータが書き込まれる通信用記憶部に書き込まれた複数のコマンドデータに基づいて、前記上位制御装置により指示された処理を実行する実行部、として機能させる。
【0011】
本開示の一側面によれば、前記制御装置は、複数のプログラムを実行可能であり、前記コマンドエリアには、プログラム選択を要求するコマンドとプログラム名とが、前記複数のコマンドデータとして書き込まれ、前記実行部は、前記コマンドに基づいて前記プログラム名のプログラムを選択し、当該選択されたプログラムを実行する。
【0012】
本開示の一側面によれば、前記コマンドエリアには、前記コマンドと前記プログラム名とが送信された後に、プログラム開始を要求する新たなコマンドデータが書き込まれ、前記送信部は、前記新たなコマンドデータを、対応する前記制御装置に送信し、前記実行部は、前記新たなコマンドデータに基づいて、前記選択されたプログラムの実行を開始する。
【0013】
本開示の一側面によれば、前記コマンドエリアには、プログラムにおける開始部分に関する開始部分情報が、前記コマンドデータとして更に書き込まれ、前記実行部は、前記開始部分情報に基づいて、前記特定されたプログラムにおける開始部分を特定し、当該特定された開始部分から前記特定されたプログラムを実行する。
【0014】
本開示の一側面によれば、前記コマンドエリアには、コマンド実行を要求するコマンド要求情報とコマンドとが、前記複数のコマンドデータとして書き込まれ、前記実行部は、前記コマンド要求情報が更新された場合に、前記コマンドに基づいて、前記処理を実行する。
【0015】
本開示の一側面によれば、前記制御装置は、複数の機能を有し、前記コマンドエリアには、前記複数の機能のうちの何れかを要求するメインコマンドと、当該機能における処理を要求するサブコマンドと、が前記複数のコマンドデータとして書き込まれ、前記実行部は、前記メインコマンドと前記サブコマンドの組み合わせに基づいて、前記処理を特定して実行する。
【0016】
本開示の一側面によれば、前記コマンドエリアのうち、前記メインコマンドと前記サブコマンドの組み合わせに対応するエリア内に、前記処理の詳細に関する詳細情報が前記コマンドデータとして更に書き込まれ、前記実行部は、前記メインコマンドと前記サブコマンドの組み合わせに対応するエリア内に書き込まれた前記詳細情報に基づいて、前記処理を実行する。
【0017】
本開示の一側面によれば、前記上位制御装置は、前記制御装置を制御するための制御プログラムを実行することによって、前記処理の実行を要求するための前記複数のコマンドデータを前記コマンドエリアに書き込む動作制御部を更に有し、前記送信部は、前記制御プログラムが実行されることによって前記コマンドエリアに書き込まれた前記複数のコマンドデータを送信する。
【0018】
本開示の一側面によれば、前記上位制御装置と前記制御装置は、非同期通信のネットワークで接続されており、前記送信部は、非同期通信を利用して、前記複数のコマンドデータを送信する。
【0019】
本開示の一側面によれば、前記通信用記憶部は、前記処理の実行結果を示す応答データが書き込まれ、前記産業装置は、前記通信用記憶部に書き込まれた応答データを、前記上位制御装置に送信する送信部を更に有し、前記上位制御装置の前記レジスタ部は、前記制御装置から受信した応答データが書き込まれる応答エリアを有する。
【0020】
本開示の一側面によれば、前記上位制御装置は、前記複数のコマンドデータと、前記応答データと、を比較する比較部と、前記比較部の比較結果に基づいて、所定のアラートを出力する出力部と、を更に有する。
【0021】
本開示の一側面によれば、前記産業装置は、ロボットであり、前記制御装置は、前記ロボットを制御するロボットコントローラであり、前記上位制御装置は、前記ロボットコントローラを制御可能であり、前記処理は、前記ロボットコントローラの動作プログラムにおける動作単位に相当するロボットプログラムの処理である。
【0022】
本開示の一側面によれば、前記複数のコマンドデータは、前記ロボットプログラムを実行させるためのコマンド、前記ロボットプログラムのロボットプログラム名、及び前記ロボットプログラムにおけるロボットプログラムにおける開始部分に関する開始部分情報を含み、前記実行部は、前記コマンドを受信した場合に、前記ロボットプログラム名と前記開始部分情報とに基づいて、前記ロボットプログラムと前記開始部分とを特定し、当該特定された開始部分から当該特定されたロボットプログラムを実行する。
【発明の効果】
【0023】
本開示によれば、例えば、上位制御装置が制御装置に種々の処理を実行させる場合の通信コストを低減させることができる。
【図面の簡単な説明】
【0024】
【
図1】生産システムの全体構成の一例を示す図である。
【
図2】構造体データのデータ格納例を示す図である。
【
図3】メインコマンドとサブコマンドの組み合わせと、ロボットコントローラが実行すべき処理と、の関係が定義されたコマンド定義データのデータ格納例を示す図である。
【
図4】生産システムで実現される機能を示す機能ブロック図である。
【
図5】レジスタ部に記憶される各変数のデータ格納例を示す図である。
【
図6】ロボットプログラムを選択して実行する場合の変数の値の一例を示す図である。
【
図7】実施形態の生産システムで実行される処理の一例を示すフロー図である。
【
図8】実施形態の生産システムで実行される処理の一例を示すフロー図である。
【発明を実施するための形態】
【0025】
[1.生産システムの全体構成]
1以上の産業装置を制御する制御装置と、制御装置を制御可能な上位制御装置と、が通信可能に接続された生産システムは、上位制御装置と制御装置との間でコマンドデータが頻繁に送受信されており、通信コストが増加していた。そこで発明者達は、上位制御装置が制御装置に種々の処理を実行させる場合の通信コストを低減させるために鋭意研究開発を行った結果、新規かつ独創的な生産システム等に想到した。以降、本実施形態に係る生産システム等を詳細に説明する。
【0026】
図1は、生産システムの全体構成の一例を示す図である。
図1に示すように、生産システム1は、エンジニアリング装置10、上位制御装置20、ロボットコントローラ30、ロボット40、及びデータ収集装置50を含む。
図1では、各装置を1台ずつ示しているが、各装置は複数台存在してもよい。
【0027】
生産システム1に含まれる各装置は、任意のネットワークに接続可能である。本実施形態では、各装置がEthernet(登録商標)等の一般的なネットワークで接続されている場合を説明するが、各装置は、産業装置用のネットワークにより接続されてもよい。例えば、上位制御装置20と、エンジニアリング装置10及びデータ収集装置50と、が一般的なネットワークで接続され、上位制御装置20とロボットコントローラ30とが産業装置用のネットワークで接続されるといったように、異なる種類のネットワークで接続されてもよい。
【0028】
エンジニアリング装置10は、1以上のロボット40を制御するロボットコントローラ30を制御可能な上位制御装置20の設定を行うコンピュータである。例えば、エンジニアリング装置10は、パーソナルコンピュータ、携帯電話(スマートフォンを含む)、又は携帯端末(タブレット型端末を含む)である。なお、エンジニアリング装置10は、上位制御装置20以外の他の装置の設定を行ってもよい。
【0029】
エンジニアリング装置10には、ユーザの設定作業を支援するためのエンジニアリングツールがインストールされている。例えば、エンジニアリングツールは、プログラムの作成、パラメータの設定、装置間の通信設定、レジスタの定義、又は変数の定義といった種々の目的で利用される。エンジニアリング装置10は、CPU11、記憶部12、通信部13、操作部14、及び表示部15を含む。
【0030】
CPU11は、少なくとも1つのプロセッサを含む。CPU11は、circuitryの一種である。記憶部12は、RAMやハードディスクを含み、各種プログラムやデータを記憶する。CPU11は、これらプログラムやデータに基づいて各種処理を実行する。通信部13は、ネットワークカードや各種通信コネクタ等の通信インタフェースを含み、他の装置との通信を行う。操作部14は、マウスやキーボード等の入力デバイスである。表示部15は、液晶ディスプレイ又は有機ELディスプレイ等であり、CPU11の指示により各種画面を表示する。
【0031】
上位制御装置20は、他の装置を制御可能なコンピュータである。上位制御装置20は、他の装置を制御する機能を有していればよく、必ずしも他の装置を制御しなければならないわけではない。例えば、上位制御装置20は、ロボットコントローラ30への制御を行わずに、ロボットコントローラ30からデータ収集のみを実行してもよい。生産システム1全体は、ラインよりも小さな単位であるセルと呼ばれることがあり、この場合には、上位制御装置20は、セルコントローラと呼ばれることもある。上位制御装置20は、PLC(Programmable Logic Controller)の一種に相当することもある。
【0032】
本実施形態では、上位制御装置20は、ロボットコントローラ30と通信可能に接続され、ロボットコントローラ30を制御可能である。例えば、上位制御装置20は、複数のロボットコントローラ30を制御可能であってもよい。また例えば、上位制御装置20は、互いに異なる種類の複数の装置を制御可能であってもよい。上位制御装置20の制御対象となる装置の台数及び種類は、本実施形態の例に限られず、任意の台数及び任意の種類の装置が制御対象になってよい。
【0033】
上位制御装置20は、CPU21、記憶部22、通信部23、及びIoT部24を含む。CPU21、記憶部22、及び通信部23の物理的構成は、それぞれCPU11、記憶部12、及び通信部13と同様であってよい。IoT部24は、ネットワークを介して、他のコンピュータにデータを送信するためのユニットである。例えば、IoT部24は、CPU、記憶部、及び通信部を含む。IoT部24に含まれるCPU、記憶部、及び通信部の物理的構成は、それぞれCPU11、記憶部12、及び通信部13と同様であってよい。
【0034】
なお、CPU21、記憶部22、及び通信部23は、上位制御装置20の第1の筐体(以降、CPUユニット)に含まれており、IoT部24は、上位制御装置20の第2の筐体(以降、IoTユニット)に含まれていてもよい。この場合、エンジニアリング装置10は、CPUユニット及びIoTユニットの各々に接続可能である。ユーザは、エンジニアリング装置10をCPUユニットに接続してもよいし、エンジニアリング装置10をIoTユニットに接続してもよい。
【0035】
ロボットコントローラ30は、ロボット40を制御するコンピュータである。ロボットコントローラ30は、制御装置の一例である。このため、本実施形態でロボットコントローラ30と記載した箇所は、制御装置と読み替えることができる。制御装置は、上位制御装置20と通信可能に接続され、1以上の産業装置を制御する装置であればよく、任意の種類の装置であってよい。例えば、制御装置は、PLC、モーションコントローラ、モータコントローラ、インバータ、コンバータ、工作機械、搬送装置、又は半導体製造装置であってもよい。制御装置は、任意の台数の産業装置を制御可能である。制御装置は、1台の産業装置だけを制御してもよいし、複数台の産業装置を制御してもよい。制御装置は、産業装置の上位装置に相当する。上位制御装置20は、制御装置を制御することがあるので、制御装置よりも更に上位の装置に相当する。
【0036】
ロボット40は、ロボットコントローラ30により制御される産業用ロボットである。例えば、ロボット40は、ロボットアーム、ロボットハンド、モータ、及びセンサを含む。センサは、物理量を検出可能なセンサであればよく、例えば、モータエンコーダ、トルクセンサ、モーションセンサ、把持センサ、ビジョンセンサ、又は温度センサである。ロボット40は、産業装置の一例である。このため、本実施形態でロボット40と記載した箇所は、産業装置と読み替えることができる。産業装置は、人間が行う作業の補助又は代行をする機器及びその周辺機器の総称である。例えば、産業用ロボット、サーボアンプ、又はモータは、産業装置に相当する。広い意味では、上位制御装置20、ロボットコントローラ30、及びセンサも産業装置の一種である。上記説明したPLCなどの装置も産業装置の一種である。
【0037】
データ収集装置50は、生産システム1におけるデータを収集するコンピュータである。データ収集装置50は、パーソナルコンピュータ、サーバコンピュータ、携帯電話(スマートフォンを含む)、又は携帯端末(タブレット型端末を含む)である。データ収集装置50は、CPU51、記憶部52、通信部53、操作部54、及び表示部55を含む。CPU51、記憶部52、通信部53、操作部54、及び表示部55の物理的構成は、それぞれCPU11、記憶部12、通信部13、操作部14、及び表示部15と同様であってよい。
【0038】
なお、各装置に記憶されるものとして説明するプログラム及びデータは、ネットワークを介して供給されてもよい。また、各装置のハードウェア構成は、上記の例に限られず、種々のハードウェアを適用可能である。例えば、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、光ディスクドライブやメモリカードスロット)や外部機器と直接的に接続するための入出力部(例えば、USB端子)が含まれてもよい。この場合、情報記憶媒体に記憶されたプログラムやデータが、読取部又は入出力部を介して供給されてもよい。
【0039】
また例えば、上位制御装置20には、上位制御装置20が直接的に制御するロボット等の産業装置が接続されていてもよい。また例えば、上位制御装置20及びロボットコントローラ30の各々には、FPGA又はASICと呼ばれる回路が含まれてもよい。また例えば、上位制御装置20及びロボットコントローラ30の各々には、先述したセンサ又は入出力機器などが接続されていてもよい。
【0040】
[2.生産システムの概要]
本実施形態の上位制御装置20は、複数の変数の各々に基づいて、ロボットコントローラ30を制御する。変数は、ロボットコントローラ30を制御するための制御プログラムにより参照される情報である。制御プログラムは、変数を書き換えることもある。例えば、変数は、途中の計算結果、アラームの有無、又は、センサにより検出された物理量(例えば、トルクセンサにより検出されたトルク値、又は、モータエンコーダにより検出されたモータの回転速度)を示す。
【0041】
例えば、ロボットコントローラ30が複数の工程を所定の順序で実行する場合、制御プログラムには、各工程の実行順が記述されている。上位制御装置20は、制御プログラムに基づいて、ロボットコントローラ30に対して指示を送る。変数は、工程の実行条件になってもよい。例えば、ロボットコントローラ30は、工程を開始するための変数、工程を一時停止するための変数、又は、工程を終了するための変数を記憶する。変数は、入出力変数と呼ばれることもある。
【0042】
工程とは、ロボットコントローラ30がロボット40を利用して行う作業又は動作である。工程は、1つの作業だけから構成されてもよいし、複数の作業の組み合わせから構成されてもよい。工程は、ロボットコントローラ30の用途に応じた任意の内容であってよく、例えば、ワークの認識、ワークの把持、扉の開閉、ワークのセット、又は工作機器を利用した加工などである。ロボットコントローラ30は、少なくとも1つの工程を行う。ロボットコントローラ30が行う工程の数は、任意の数であってよく、ロボットコントローラ30は、1つの工程だけを行ってもよいし、複数の工程を行ってもよい。ロボットコントローラ30は、上位制御装置20から受信した指示と、自身に記憶された装置プログラムと、に基づいて工程を行う。
【0043】
装置プログラムは、ロボットコントローラ30の動作を定義したプログラムである。装置プログラムには、各工程における個々の手順が定義されている。装置プログラムは、ロボットコントローラ30に応じた任意の言語で作成可能であり、例えば、ラダー言語又はロボット言語等によって作成される。本実施形態では、工程ごとに装置プログラムが用意されている。このため、あるロボットコントローラ30がn個(nは自然数)の工程を行うとすると、当該ロボットコントローラ30は、少なくともn個の装置プログラムを記憶していることになる。
【0044】
なお、変数の種類は、上記の例に限られない。例えば、上位制御装置20からロボットコントローラ30に対するコマンドを示す変数が存在してもよい。また例えば、ある変数が示すコマンドの実行開始を示す別の変数が存在してもよい。また例えば、ロボットコントローラ30が実行すべきロボットプログラム名やその実行条件を示す変数が存在してもよい。ロボットプログラムは、ロボットコントローラ30が実行するプログラムであり、例えば、先述した装置プログラムは、ロボットプログラムの一種である。ジョブと呼ばれるプログラムもロボットプログラムの一種である。また例えば、ロボットコントローラ30から上位制御装置20への応答を示す変数が存在してもよい。また例えば、ロボットコントローラ30の制御とは直接的に関係がない変数が存在してもよい。
【0045】
ユーザは、エンジニアリング装置10を操作して、上記のような変数を記憶する上位制御装置20の設定を行う。本実施形態でユーザと記載した箇所は、上位制御装置20のユーザを意味する。上位制御装置20のユーザは、ロボットコントローラ30のユーザ及びデータ収集装置50のユーザと同じであってもよいが、本実施形態では、これらのユーザが異なる場合を説明する。
【0046】
例えば、ユーザは、エンジニアリング装置10にインストールされたエンジニアリングツールを利用して、上位制御装置20のレジスタの割り当てを行う。レジスタの割り当ては、上位制御装置20とロボットコントローラ30との間における通信設定の一環として行われる。通信設定では、使用するポートやIPアドレスなどの設定も行われる。上位制御装置20には、ロボットコントローラ30ごとに、当該ロボットコントローラ30の制御用のレジスタ範囲が割り当てられる。
【0047】
レジスタ範囲は、レジスタ番号の帯域である。レジスタ範囲には、複数のレジスタ番号が含まれる。レジスタ範囲に含まれるレジスタ番号の数は、任意の数であってよい。本実施形態では、レジスタ範囲に含まれるレジスタ番号が連番である場合を説明するが、レジスタ範囲に含まれるレジスタ番号は連番でなくてもよい。ある装置に割り当てられたレジスタ範囲に含まれるレジスタには、その装置の制御用の変数が格納され、他の装置の制御用の変数は格納されない。
【0048】
レジスタ番号は、個々のレジスタを識別する情報である。レジスタ番号は、アドレスと似た概念であるが、厳密にはアドレスとは異なる意味である。本実施形態では、CPU21に含まれるレジスタに変数が格納されるので、レジスタ番号は、CPU21の個々のレジスタを示す。例えば、ユーザが先頭レジスタ番号を指定すると、指定された先頭レジスタ番号から所定値だけ後までの範囲が、レジスタ範囲として自動的に指定される。
【0049】
先頭レジスタ番号は、装置の制御用に割り当てられるレジスタ範囲のうちの最初のレジスタ番号である。終了レジスタ番号は、装置の制御用に割り当てられるレジスタ範囲のうちの最後のレジスタ番号である。本実施形態では、レジスタ範囲が連番なので、ある装置のレジスタ範囲は、その装置に指定された先頭レジスタ番号から終了レジスタ番号までになる。
【0050】
終了レジスタ番号は、先頭レジスタ番号に対し、通信プロファイルに応じた構造体データで定義されるサイズ分のオフセットだけ加算した番号になる。通信プロファイルは、上位制御装置20とロボットコントローラ30とを接続するインタフェースである。通信プロファイルは、通信プロトコルと同じ意味であってもよく、通信手順やデータの形式が定義されている。構造体データは、エンジニアリングツールの一部として、エンジニアリング装置10の記憶部12に記憶されている。
【0051】
図2は、構造体データのデータ格納例を示す図である。
図2に示すように、構造体データD1には、通信プロファイルにおけるレジスタ体系が定義されたデータである。複数の通信プロファイルが用意されている場合には、通信プロファイルごとに構造体データD1が用意される。構造体データD1には、レジスタ範囲に含まれるレジスタ番号と、そのレジスタ番号に格納される情報と、の関係が示される。例えば、構造体データD1には、オフセット、階層、及び名称が格納される。
【0052】
オフセットは、先頭レジスタ番号を基準としたレジスタ番号である。オフセットは、先頭レジスタ番号から数えた場合のレジスタ番号、又は、先頭レジスタ番号に対する相対的なレジスタ番号ということもできる。
図2のデータ格納例であれば、ユーザが指定した先頭レジスタ番号は、オフセットの最初の番号である「0000番」に相当する。エンジニアリングツールが自動的に設定する終了レジスタ番号は、オフセットの最後の番号である「4259」番に相当する。本実施形態では、「0000番」から「4259番」までの合計4260個のレジスタ番号を含むレジスタ範囲が、ロボットコントローラ30に割り当てられる。
【0053】
階層は、オフセットに対応するレジスタに格納される変数の属性を示す情報である。属性は、変数の分類を示す情報である。属性は、変数の性質又は特徴を示す情報ということもできる。階層によって属性が表現される場合には、下の階層になるほど、変数の具体的な分類が表現される。
図2のデータ格納例では、4段階の階層とするが、階層の段階数は、任意であってよい。なお、属性は、階層の概念がなくてもよい。
【0054】
名称は、オフセットに対応するレジスタに格納される変数の名称である。変数のデータサイズによっては、1つのレジスタ番号に対応するレジスタには格納できないことがあるので、このような変数は、複数のレジスタ番号にまたがって格納される。変数のデータサイズが大きいほど、その変数に必要なレジスタ番号が多くなる。なお、第1層~第4層のうち、各変数の最下層の名称(例えば、「2500番」の「CmdReqid」)も変数の名称の一種である。
【0055】
本実施形態では、構造体データD1に定義された変数のうち、主な変数についてのみ説明する。例えば、オフセット「0012番」~「2041番」の変数群は、上位制御装置20がロボットコントローラ30から受信する受信データと同じデータである。この変数群には、「0413番」のコマンド要求ID、「0415番」のメインコマンド、「0416番」のサブコマンド、「0417番」の戻り値、及び「0418番」の付加データへのオフセットを含むアンサヘッダが複数個含まれる。
【0056】
コマンド要求IDは、コマンド要求情報の一例である。本実施形態でコマンド要求IDを説明している箇所は、コマンド要求情報と読み替えることができる。コマンド要求情報は、ロボットコントローラ30に対し、コマンドの実行を要求するための情報である。例えば、コマンド要求情報が更新された場合に、コマンドが実行される。また例えば、コマンド要求情報が所定値を示す場合に、コマンドが実行される。コマンド要求情報は、ID以外の任意の形式であってよく、ID以外の名称で呼ばれてもよい。本実施形態のコマンド要求IDは、数値で表現され、コマンドが実行されるたびにインクリメントされる。
【0057】
メインコマンドは、ロボットコントローラ30が有する複数の機能のうち、ロボットコントローラ30に要求される機能を示す情報である。本実施形態では、ロボット40を制御するロボット制御機能、ロボット40の動作を監視するモニタリング機能、及びロボット40の動作に関するデータを収集する収集機能の3つの機能が用意されており、メインコマンドは、これらの何れかを示す値になる。なお、ロボットコントローラ30は、モニタリング機能又は収集機能を有さなくてもよいし、他の機能を有してもよい。また、ロボットコントローラ30は、単一の機能のみを有してもよい。この場合、メインコマンドは省略可能である。
【0058】
サブコマンドは、ロボットコントローラ30が実行可能な複数の動作のうち、ロボットコントローラ30に要求された動作を示す情報である。本実施形態では、メインコマンドで示される機能ごとに、複数の動作が用意されている。サブコマンドは、メインコマンドで示された機能に用意された複数の動作のうちの何れかを示す。即ち、本実施形態では、メインコマンドとサブコマンドの組み合わせによって、ロボットコントローラ30が実行する具体的な動作が特定される。
【0059】
戻り値は、ロボットコントローラ30の動作結果を示す情報である。例えば、戻り値が第1の値(例えば、0)であることは、動作が正常に完了したことを意味する。また例えば、戻り値が第2の値(例えば、1)であることは、動作に異常が発生したことを意味する。付加データへのオフセットは、ロボットコントローラ30からの応答データに含まれる付加データが格納されたレジスタ番号を特定するための情報である。付加データは、メインコマンドとサブコマンドが所定の組み合わせの場合にのみ付加される。
【0060】
また例えば、「0012番」~「2041番」の変数群には、上記のアンサヘッダ以外にも、「0504番」~「1054番」のアンサデータエリアが含まれる。アンサデータエリアには、付加データ等のデータが格納される。
【0061】
また例えば、「2042番」~「2499番」の変数群は、上位制御装置20がロボットコントローラ30に対して送信する送信データと同じデータである。この変数群には、「2163番」のコマンド要求ID、「2165番」のメインコマンド、「2166番」のサブコマンド、及び「2167番」~「2499番」のコマンドデータエリアが含まれる。コマンド要求ID、メインコマンド、及びサブコマンドの意味は、先述した通りである。
【0062】
「2163番」~「2166番」のコマンド要求ID、メインコマンド、及びサブコマンドは、ロボットコントローラ30に送信される情報である。即ち、これらの情報は、ロボットコントローラ30に対するコマンドの一種である。先述した「0413番」~「0416番」のコマンド要求ID、メインコマンド、及びサブコマンドは、ロボットコントローラ30から受信される情報である。即ち、これらの情報は、ロボットコントローラ30からの応答の一種である。ロボットコントローラ30が正確に動作している場合には、「2163番」~「2166番」の値と、「0413番」~「0416番」の値と、が一致する。
【0063】
「2167番」~「2499番」のコマンドデータエリアには、ロボットコントローラ30に要求された動作の詳細が格納される。例えば、ロボットプログラム選択のコマンドであれば、ロボットプログラム名と、ロボットプログラムの開始部分と、がコマンドデータエリアに格納される。その他にも、ロボットプログラムの実行に必要なパラメータなどのデータがコマンドデータエリアに格納されてもよい。また例えば、電源制御のコマンドであれば、電源をオンにするかオフにするかを示すデータがコマンドデータエリアに格納される。他のコマンドについても同様であり、必要に応じて、そのコマンドの詳細な内容を示すデータがコマンドデータに格納されるようにすればよい。
【0064】
なお、「2500番」~「2950番」の変数群は、上位制御装置20がロボットコントローラ30から受信した最新の受信データに相当する。例えば、「0413番」~「0418番」と「0504番」以降に最新の受信データが格納されているので、この最新の受信データが「2500番」~「2950番」にコピーされる。なお、「2500番」~「2950番」の変数群が受信データに相当し、「0413番」~「2041番」には、受信データの履歴が格納されるようにしてもよい。即ち、受信データの単位は、「0413番」~「2041番」の変数群であってもよいし、「2500番」~「2950番」の変数群であってもよい。
【0065】
また、構造体データD1には、モニタリング機能用のレジスタ範囲と、収集機能用のレジスタ範囲と、が含まれていてもよい。モニタリング機能用のレジスタ範囲には、ロボット40の動作を監視するための変数が格納される。収集機能用のレジスタ範囲には、データ収集装置50の収集対象となる変数が格納される。
【0066】
本実施形態の上位制御装置20は、ロボットコントローラ30ごとに、構造体データD1に対応するレジスタ範囲が割り当てられる。例えば、上位制御装置20と、k(kは自然数)台のロボットコントローラ30と、が接続されていたとすると、上位制御装置20のCPU21のレジスタには、少なくともk個のレジスタ範囲が割り当てられる。k台のロボットコントローラ30の通信プロファイルが同じであれば、k個のレジスタ範囲は、互いに
図2のような体系になる。ただし、
図2は、あくまでオフセットのレジスタ番号なので、k個のレジスタ範囲に含まれる実際のレジスタ番号は、互いに重複しないように設定される。
【0067】
上位制御装置20は、k台のロボットコントローラ30の各々に対応するレジスタ範囲の変数に基づいて、当該ロボットコントローラ30を制御する。本実施形態では、メインコマンドとサブコマンドの組み合わせによって、具体的な処理内容が特定されるので、ロボットコントローラ30は、送信データに含まれるメインコマンドとサブコマンドの組み合わせに基づいて、自身が実行すべき具体的な処理を特定し、コマンド要求IDがインクリメントしたことに応じて、その処理を実行する。
【0068】
図3は、メインコマンドとサブコマンドの組み合わせと、ロボットコントローラ30が実行すべき処理と、の関係が定義されたコマンド定義データのデータ格納例を示す図である。コマンド定義データD2は、エンジニアリングツールの一部として、エンジニアリング装置10の記憶部12に記憶されていてもよい。
【0069】
図3の例では、メインコマンドが「1」であることは、ロボット制御機能を意味する。メインコマンドが「2」であることは、モニタリング機能を意味する。メインコマンドが「3」であることは、収集機能を意味する。これら3つのメインコマンドの値ごとに、各機能における処理の詳細を示すサブコマンドが定義されている。サブコマンドには、対応するメインコマンドが示す機能における具体的な処理内容が示されている。
【0070】
例えば、ロボット制御機能のメインコマンドであれば、アラームのリセット、電源制御、ロボットプログラム選択、モード切替、ロボットプログラム実行、及び目標位置へのロボット動作の各々のサブコマンドが用意されている。
図3の例では、サブコマンドの「1」~「6」の各々の値によって、これらの具体的な内容が示される。なお、ロボット制御機能のサブコマンドは、
図3の例に限られず、例えば、ホールドの停止、HMIのロック、サイクル変更、及び各軸のパルスを指定したロボット動作などのサブコマンドが用意されていてもよい。また例えば、ロボット言語におけるMOVEやWAITなどのコマンドに相当するサブコマンドが用意されていてもよい。また例えば、ロボットプログラムよりも大きなプログラム(例えば、装置プログラム)を実行するためのサブコマンドやパラメータ設定などのメンテナンス用のサブコマンドが用意されていてもよい。
【0071】
また例えば、モニタリング機能のメインコマンドであれば、モニタ設定読み出しと、ロボットプログラム情報読み出しと、のサブコマンドが用意されている。
図3の例では、サブコマンドの「1」及び「2」の各々の値によって、これらの具体的な内容が示される。なお、モニタリング機能のサブコマンドは、
図3の例に限られず、例えば、モニタ設定書き込みなどのサブコマンドが用意されていてもよい。
【0072】
また例えば、収集機能のメインコマンドであれば、収集設定の読み出しと、収集開始と、のサブコマンドが用意されている。
図3の例では、サブコマンドの「1」及び「2」の各々の値によって、これらの具体的な内容が示される。なお、収集機能のサブコマンドは、
図3の例に限られず、例えば、収集設定の書き込みや収集終了などのサブコマンドが用意されていてもよい。
【0073】
図3に示すように、メインコマンドとサブコマンドの組み合わせによって、コマンドデータエリアに格納されるデータが異なる。コマンドデータエリアのうち、どのレジスタ番号を参照すればよいか(どのレジスタ番号に何のデータが格納されているか)は、コマンド定義データD2に予め定義されているものとする。この定義は、上位制御装置20とロボットコントローラ30の各々に記憶されているものとする。
【0074】
例えば、メインコマンド「1」とサブコマンド「3」の組み合わせが示す「ロボットプログラム選択」は、選択対象のロボットプログラムを特定する必要があるので、コマンドデータエリアのうちの所定のレジスタ番号のレジスタに、ロボットプログラム名が格納される。本実施形態では、ロボットプログラムの途中から実行を開始することもできる。ロボットプログラムの途中から実行を開始する場合には、コマンドデータエリアのうちの所定のレジスタ番号のレジスタに、ロボットプログラムの開始部分が格納される。
【0075】
ロボットプログラムの開始部分は、ロボットプログラムに対応する複数のプログラムコードのうち、実行を開始するプログラムコードを特定するための情報である。ラダー言語でロボットプログラムが作成されるのであれば、ロボットプログラムの開始部分は行番号である。ロボットプログラムの途中ではなく先頭から開始する場合には、開始部分が書き込まれなくてもよい。
【0076】
以上のように、本実施形態の上位制御装置20は、第1層「CommandData」に対応するレジスタ範囲に、コマンド要求ID、メインコマンド、及びサブコマンドなどの種々のコマンドデータを格納し、これらのコマンドデータを一度に送信する。ロボットコントローラ30は、一度に受信した複数のコマンドデータを実行する。これにより、上位制御装置20とロボットコントローラ30との間で、何度もコマンドデータを送受信することがなくなり、通信コストを低減させるようにしている。以降、生産システム1の詳細を説明する。
【0077】
[3.生産システムで実現される機能]
図4は、生産システム1で実現される機能を示す機能ブロック図である。本実施形態では、エンジニアリング装置10、上位制御装置20、ロボットコントローラ30、及びデータ収集装置50の各々で実現される機能について説明する。
【0078】
[3-1.エンジニアリング装置で実現される機能]
図4に示すように、エンジニアリング装置10は、データ記憶部100と設定部101とを含む。データ記憶部100は、記憶部12を主として実現され、設定部101は、CPU11を主として実現される。
【0079】
[データ記憶部]
データ記憶部100は、上位制御装置20の設定を行うために必要なデータを記憶する。例えば、データ記憶部100は、先述した構造体データD1とコマンド定義データD2とを記憶する。また例えば、データ記憶部100は、エンジニアリングツールを記憶する。また例えば、データ記憶部100は、ユーザがエンジニアリングツールを利用して作成したプログラムやパラメータを記憶してもよい。また例えば、データ記憶部100は、通信設定の詳細な定義を示す詳細定義データを記憶してもよい。詳細定義データには、ロボットコントローラ30に割り当てられたレジスタ範囲、ロボットコントローラ30との通信で使用する自局ポート、通信種別、ロボットコントローラ30側のポート、及びロボットコントローラ30のIPアドレスなとの情報が格納される。
【0080】
[設定部]
設定部101は、ユーザの操作に基づいて、上位制御装置20などの装置の設定処理を実行する。例えば、設定部101は、ユーザが指定したレジスタ番号に基づいて、上位制御装置20がロボットコントローラ30の制御で使用するレジスタ範囲を割り当てる。このレジスタ範囲には、対応するロボットコントローラ30を制御するための制御プログラムによって参照及び書き換えの少なくとも一方が行われる変数群が格納される。レジスタ範囲を割り当てるとは、あるロボットコントローラ30に対応するレジスタ範囲が示すレジスタ番号を、そのロボットコントローラ30の制御のために確保又は予約することである。割当部により割り当てられたレジスタ範囲は、そのレジスタ範囲に対応するロボットコントローラ30の制御専用の記憶領域になる。設定部101は、詳細定義データに格納されたレジスタ範囲の情報を、上位制御装置20のデータ記憶部200に書き込むことによって、レジスタ範囲を割り当てる。設定部101は、IPアドレスの設定等の他の設定も行う。
【0081】
[3-2.上位制御装置で実現される機能]
図4に示すように、上位制御装置20は、データ記憶部200、レジスタ部201、動作制御部202、送信部203、受信部204、比較部205、及び出力部206を含む。データ記憶部200は、記憶部22を主として実現される。レジスタ部201、動作制御部202、送信部203、受信部204、比較部205、及び出力部206の各々は、CPU21を主として実現される。
【0082】
[データ記憶部]
データ記憶部200は、ロボットコントローラ30を制御するためのデータを記憶する。例えば、データ記憶部200は、制御プログラムとパラメータを記憶する。また例えば、データ記憶部200は、ファームウェアなどの他のプログラムを記憶してもよいし、データ収集装置50にデータを送信するためのプログラムを記憶してもよい。後述する動作制御部202は、これらのプログラム及びパラメータに基づいて、ロボットコントローラ30を制御する。また例えば、データ記憶部200は、エンジニアリング装置10により設定された通信設定の詳細を示す詳細定義データを記憶する。詳細定義データには、ロボットコントローラ30の制御用に割り当てられたレジスタ範囲が示されている。この詳細定義データは、エンジニアリング装置10のデータ記憶部100に記憶されるものと同じである。
【0083】
[レジスタ部]
レジスタ部201は、複数のレジスタ番号の各々により示されるレジスタを有する。レジスタ部201に含まれるレジスタのうち、設定部101により割り当てられたレジスタ範囲に、ロボットコントローラ30の制御用の変数が格納される。レジスタ番号によって特定されるレジスタは、個々の記憶素子の単位である。本実施形態では、レジスタ部201は、CPU21に含まれる複数のレジスタの集まりである場合を説明するが、レジスタ部201は、記憶部22又は他の情報記憶媒体に含まれる複数のレジスタの集まりであってもよい。レジスタ部201は、ロボットコントローラ30の制御用の変数以外の変数を記憶してもよい。
【0084】
図5は、レジスタ部201に記憶される各変数のデータ格納例を示す図である。
図5では、ある1台のロボットコントローラ30の制御用のレジスタ範囲全体の変数をD3の符号で示している。
図5に示すように、レジスタ部201には、複数のレジスタ番号の各々が示すレジスタに、変数の値が格納されている。
図5の例では、ユーザが指定した先頭アドレスが「GW05000番」であり、この番号からレジスタ範囲が開始する。構造体データD1は、
図2のようなオフセットになっているので、ロボットコントローラ30の制御用のレジスタ範囲は、「GW05000番」~「GW09259番」になる。
【0085】
例えば、レジスタ部201は、ロボットコントローラ30の制御用に割り当てられた、コマンドエリアを含むレジスタを有する。コマンドエリアは、コマンドデータを格納するためのエリアである。エリアは、記憶領域であり、少なくとも1つのレジスタ番号によって示されるレジスタである。
図2の構造体データD1であれば、第1階層「CommandData」のエリア(オフセットの「2042」番~「2499番」のエリア。
図5であれば、「GW07042番」~「GW07499番」)は、コマンドエリアの一例である。
【0086】
なお、コマンドエリアは、上記のエリアに限られない。コマンドエリアは、コマンドデータを格納可能なエリアであればよく、任意のエリアであってよい。例えば、第2階層「CmdRequest」のエリア(オフセットの「2163」番~「2499番」のエリア。
図5であれば、「GW07163番」~「GW07499番」)がコマンドエリアに相当してもよい。また例えば、第3階層「CmdReqid」~「SubCmd」のエリア(オフセットの「2163」番~「2166番」のエリア。
図5であれば、「GW07163番」~「GW07166番」)がコマンドエリアに相当してもよい。
【0087】
コマンドデータは、コマンドに関する変数である。コマンドは、上位制御装置20によるロボットコントローラ30に対する指令である。別の言い方をすれば、コマンドは、上位制御装置20により指示された処理内容である。コマンドデータは、コマンドそのものを意味してもよいし、コマンドの実行に必要な付帯的なデータを意味してもよい。コマンドエリアには、複数のコマンドデータが格納される。例えば、複数のコマンドデータの組み合わせによって、1つの処理の内容が特定される。また例えば、複数のコマンドの組み合わせによって、処理の内容と、その処理を開始するか否かと、が特定される。即ち、複数のコマンドデータを1つのデータセットとして、ロボットコントローラ30が制御される。
【0088】
本実施形態では、コマンド要求ID、メインコマンド、サブコマンド、及びコマンドデータエリアに格納されるロボットプログラム名や開始部分などのデータの各々は、コマンドデータに相当する。これら全てが利用される場合には、4つのコマンドデータがロボットコントローラ30に送信されることになる。一度に送信されるコマンドデータの数は、4つに限られない。一度に2つ、3つ、又は5つ以上のコマンドデータが送信されるようにしてもよい。コマンドエリアには、少なくとも送信される数のコマンドデータが格納されるようにすればよい。例えば、コマンド要求ID、メインコマンド、及びサブコマンドのように、コマンドデータは、数値で示されてもよい。また例えば、ロボットプログラム名などのように、コマンドデータは、文字列で示されてもよい。
【0089】
例えば、レジスタ部201は、ロボットコントローラ30から受信した応答データが書き込まれる応答エリアを有する。応答エリアは、応答データを格納するためのエリアである。
図2の構造体データD1であれば、第1階層「ResponsData」のエリア(オフセットの「0012」番~「2041番」のエリア。
図5であれば、「GW05012番」~「GW07041番」)は、応答エリアの一例である。
【0090】
なお、応答エリアは、上記のエリアに限られない。応答エリアは、応答データの一部又は全部を格納可能なエリアであればよく、任意のエリアであってよい。例えば、第2階層「CmdAnswer」のエリア(オフセットの「0413」番~「1054番」のエリア。
図5であれば、「GW05413番」~「GW06054番」)が応答エリアに相当してもよい。また例えば、第1階層「CmdAnsWork」のエリア(オフセットの「2500」番~「2950番」のエリア。
図5であれば、「GW07500番」~「GW07950番」)が応答エリアに相当してもよい。
【0091】
応答データは、コマンドの実行結果を示すデータである。本実施形態では、複数のコマンドデータを1つの指令ととらえると、応答データは、指令に対する応答に相当するデータである。例えば、応答データには、ロボットコントローラ30が実行した処理を識別可能な情報が含まれる。本実施形態では、応答データには、コマンド要求ID、メインコマンド、サブコマンド、及び戻り値が含まれる。応答データに含まれるコマンド要求IDは、メインコマンド及びサブコマンドが実行されたときのコマンド要求IDである。応答データに含まれるメインコマンド及びサブコマンドは、ロボットコントローラ30が実際に実行したものである。戻り値は、メインコマンド及びサブコマンドによって特定される処理が正常に終了したか否かを示す値である。なお、応答データは、これらに限られず、任意の情報が格納されてよい。例えば、応答データには、必要に応じて、処理結果の詳細などを示す付加データが格納されてもよい。
【0092】
[動作制御部]
動作制御部202は、複数の変数と制御プログラムとに基づいて、ロボットコントローラ30の動作を制御する。例えば、動作制御部202は、ロボットコントローラ30を制御するための制御プログラムを実行することによって、処理の実行を要求するための複数のコマンドデータをコマンドエリアに書き込む。制御プログラムには、複数のコマンドデータの各々の値が定義されている。
【0093】
例えば、
図3に示すロボットプログラム選択であれば、メインコマンドのエリアに「1」を格納し、サブコマンドのエリアに「3」を格納し、コマンドデータエリアに所定のロボットプログラム名を格納し(必要に応じて開始部分も格納し)、コマンド要求IDをインクリメントすることが、制御プログラムに定義されている。他の処理についても同様に、制御プログラムには、少なくともメインコマンドのエリアとサブコマンドのエリアの各々に所定の値を格納した後に、コマンド要求IDをインクリメントすることが定義されている。なお、コマンド要求IDをインクリメントした後に、他のエリアの値を格納してもよいが、この場合には、他のエリアの値が変更される前に送信データが送信されると、ロボットコントローラ30が誤動作を起こす可能性があるので、本実施形態では、上記順番とする。
【0094】
動作制御部202は、ロボットコントローラ30に対するコマンドを、そのロボットコントローラ30に対応するレジスタ範囲に含まれるレジスタに書き込む。動作制御部202は、データ記憶部200に記録された詳細定義データを参照し、どのロボットコントローラ30がどのレジスタ範囲に対応するかを特定し、特定したレジスタ範囲に含まれるレジスタにコマンドを書き込む。レジスタに書き込まれたコマンドは、動作制御部202によりロボットコントローラ30に送信される。
【0095】
ここでは、ロボットコントローラ30にロボットプログラムを実行させる場合の処理を例に挙げて、動作制御部202の処理を説明する。本実施形態では、ロボットプログラムの選択と、ロボットプログラムの実行と、が別々のコマンドとして用意されている場合を説明するが、これらは1つのコマンドとしてまとめられていてもよい。即ち、ロボットプログラムが選択されてすぐにそのロボットプログラムが実行されてもよい。
【0096】
図6は、ロボットプログラムを選択して実行する場合の変数の値の一例を示す図である。なお、ここでは、
図5のようなレジスタ範囲が割り当てられた場合を説明する。即ち、ロボットコントローラ30に対応するレジスタ範囲として、「GW05000番」~「GW09259番」が割り当てられている。
図6では、このレジスタ範囲のうち、コマンドエリアに書き込まれる複数のコマンドデータ(コマンド要求ID、メインコマンド、サブコマンド、及びコマンドデータエリア内のデータ)の変化を示す。
図6の例では、制御プログラムの実行前のコマンドエリアには、初期状態として、コマンド要求IDが「0」になっており、エリアにはデータが格納されていない。
【0097】
動作制御部202は、制御プログラムの実行を開始すると(例えば、ラダープログラムの冒頭に記述されたコイルがオンになると)、ロボットコントローラ30にロボットプログラム選択をさせるために、「GW07165番」のレジスタに、ロボット制御の機能を示す値(例えば、1)をメインコマンドとして書き込む。動作制御部202は、「GW07166番」のレジスタに、ロボットプログラム選択を示す値(例えば、3)をサブコマンドとして書き込む。
【0098】
動作制御部202は、「GW07167番」~「GW07499番」のうちの一部のレジスタに、ロボットプログラム名と、ロボットプログラムの開始部分と、を書き込む。ロボットプログラムの開始部分は、ロボットプログラムに対応する複数のプログラムコードのうち、実行を開始するプログラムコードを特定するための情報である。ラダー言語でロボットプログラムが作成されるのであれば、ロボットプログラムの開始部分は行番号である。ロボットプログラムの途中ではなく先頭から開始する場合には、開始部分が書き込まれなくてもよい。動作制御部202は、上記の書き込みを終えると、ロボットコントローラ30にロボットプログラムを選択させるために、「GW07163番」のコマンド要求IDをインクリメントする。
図6に示すように、コマンド要求IDは、「0」から「1」になる。
【0099】
以上により、ロボットプログラムを選択するための処理が完了する。上位制御装置20の送信部203は、「GW07042番」~「GW07499番」のレジスタに相当する送信データを送信する。ロボットコントローラ30の受信部304は、送信データを受信して後述する通信用記憶部301に書き込む。ロボットコントローラ30の実行部302は、通信用記憶部301を参照し、コマンド要求IDがインクリメントされたか否かを判定する。ここでは、コマンド要求IDが「0」から「1」にインクリメントされているので、実行部302は、通信用記憶部301に書き込まれたメインコマンド及びサブコマンドを実行し、通信用記憶部301に書き込まれたロボットプログラム名が示すロボットプログラムを読み出す。開始部分が指定されている場合には、実行部302は、その開始部分以降のロボットプログラムを読み出す。読み出されたロボットプログラムは、データ記憶部300又は通信用記憶部301に展開される。なお、この時点では、読み出されたロボットプログラムは、まだ実行されない。後述するロボットプログラム実行が行われた場合に、読み出されたロボットプログラムが実行される。
【0100】
実行部302は、メインコマンド及びサブコマンドの実行結果を示す応答データを、通信用記憶部301に書き込む。送信部303は、上位制御装置20に対し、通信用記憶部301に書き込まれた応答データを送信する。この応答データは、
図2に示す「0012番」~「2041番」と同じ形式である。例えば、送信部303は、実行したコマンドに対応するコマンド要求ID、メインコマンド、及びサブコマンドと、コマンドが正常に実行されたことを示す戻り値と、を含む応答データを送信する。コマンドが正常に実行されなかった場合には、その旨の戻り値が応答データに含まれる。
【0101】
上位制御装置20の受信部204は、応答データを受信すると、レジスタ部201のうちの応答エリアに書き込む。後述する比較部205は、送信済みの送信データに含まれるコマンド要求ID、メインコマンド、及びサブコマンド(即ち、「G07163番」~「G07166番」の各変数)と、応答データに含まれるコマンド要求ID、メインコマンド、及びサブコマンド(即ち、「G05413番」~「G05416番」又は「G07500番」~「G07503番」の各変数)と、が一致するか否かを判定する。また、比較部205は、応答データに含まれる戻り値が正常値を示すか否かを判定する。これらの判定が何れも肯定であった場合に、次の処理が実行される。何れかの判定が否定であった場合には、後述する出力部206は、アラートを出力する。この場合、動作制御部202は、制御プログラムの実行を停止する。
【0102】
制御プログラムには、次の処理として、選択済みのロボットプログラムを実行させる処理が記述されている。
図6に示すように、動作制御部202は、ロボットコントローラ30にロボットプログラムを実行させるために、「GW07165番」のレジスタに、ロボット制御の機能を示す値(例えば、1)をメインコマンドとして書き込む。動作制御部202は、「GW07166番」のレジスタに、ロボットプログラム実行を示す値(例えば、5)をサブコマンドとして書き込む。動作制御部202は、「GW07163番」のコマンド要求IDをインクリメントする。コマンド要求IDは、「1」から「2」になる。なお、ロボットプログラム実行の場合には、「GW07167番」~「GW07499番」のレジスタには、何も書き込まれないものとする。
【0103】
以上により、ロボットプログラムを実行するための処理が完了する。送信部203は、「GW07042番」~「GW07499番」のレジスタに相当する送信データを送信する。先述した流れと同様にして、ロボットコントローラ30の実行部302により、コマンド要求IDがインクリメントされたことが検知され、メインコマンド及びサブコマンドが実行される。1つ前のメインコマンド及びサブコマンドによって、既にロボットプログラムが読み出されているので、実行部302は、読み出し済みのロボットプログラムを実行する。ロボットプログラムの開始部分が指定されている場合には、実行部302は、指定された開始部分からロボットプログラムを実行する。ロボットプログラムが実行されると、先述した流れと同様にして応答データが送信されて、ロボットプログラムが正常に実行されたか否かが判定される。
【0104】
なお、ロボットコントローラ30の制御方法は、上記の例に限られない。動作制御部202は、メインコマンドとサブコマンドを利用せずに、ロボットコントローラ30を制御してもよい。例えば、動作制御部202は、あるロボットコントローラ30に対応するレジスタ範囲のレジスタに、コマンド要求IDと、ある1つのコマンドと、を書き込むことによって、そのロボットコントローラ30を制御してもよい。また例えば、あるロボットコントローラ30に対応するレジスタ範囲のレジスタに、そのロボットコントローラ30の装置プログラムの開始条件となる変数を記憶させる場合、動作制御部202は、その変数の値を書き換えることによって、そのロボットコントローラ30に装置プログラムの実行開始を指示してもよい。
【0105】
また、動作制御部202は、レジスタ部201に記憶された変数の一部又は全部と、通信用記憶部301に記憶された変数の一部又は全部と、を整合させてもよい。これらの整合は、定期的に行われてもよいし、不定期的に行われてもよい。例えば、動作制御部202は、あるロボットコントローラ30に対し、レジスタ部201のうち、そのロボットコントローラ30に対応するレジスタ範囲の変数の全部又は一部を含む送信データを送信する。また例えば、動作制御部202は、あるロボットコントローラ30から、レジスタ部201のうち、そのロボットコントローラ30に対応するレジスタ範囲に、そのロボットコントローラ30から受信した応答データを記録する。これらの処理により、全部又は一部の変数の整合が取られる。
【0106】
以上のように、動作制御部202は、コマンドエリアに、ロボットプログラム選択を要求するコマンドとロボットプログラム名とを、複数のコマンドデータとして書き込む。本実施形態では、このコマンドは、「1」を示すメインコマンドと、「3」を示すサブコマンドと、の組み合わせである。ロボットプログラム名は、制御プログラムに定義されている文字列である。動作制御部202は、制御プログラムに定義されたロボットプログラム名を、コマンドデータエリアのうちの所定のエリアに格納する。
【0107】
例えば、動作制御部202は、コマンドエリアに、ロボットプログラムにおける開始部分に関する開始部分情報を、コマンドデータとして更に書き込んでもよい。開始部分情報は、制御プログラムに定義されているものとする。動作制御部202は、制御プログラムに定義された開始部分情報(例えば、ラダープログラムにおける行番号)を、コマンドエリアに書き込む。なお、開始部分を指定せずにロボットプログラムの最初から実行する場合には、開始部分情報は書き込まれないものとする。
【0108】
動作制御部202は、コマンドエリアに、コマンドとロボットプログラム名とが送信された後に、ロボットプログラム開始を要求する新たなコマンドデータを書き込む。本実施形態では、この新たなコマンドデータは、「1」を示すメインコマンドと、「5」を示すサブコマンドと、の組み合わせである。先述した通り、コマンドデータエリアには何も格納されないものとするが、何らかのデータがコマンドデータエリアに格納されてもよい。
【0109】
動作制御部202は、コマンドエリアに、コマンド実行を要求するコマンド要求IDとコマンドとを、複数のコマンドデータとして書き込む。本実施形態では、このコマンドは、メインコマンドとサブコマンドの組み合わせである場合を説明するが、単一のコマンドであってもよいし、3つ以上のコマンドの組み合わせであってもよい。
【0110】
本実施形態では、ロボットコントローラ30は、複数の機能を有しており、動作制御部202は、コマンドエリアに、複数の機能のうちの何れかを要求するメインコマンドと、当該機能における処理を要求するサブコマンドと、を複数のコマンドデータとして書き込む。上記の例では、ロボット制御機能を例に挙げたが、モニタリング機能又は収集機能が要求される場合には、動作制御部202は、「1」又は「2」のメインコマンドを書き込むようにすればよい。
【0111】
動作制御部202は、コマンドエリアのうち、メインコマンドとサブコマンドの組み合わせに対応するエリア内に、処理の詳細に関する詳細情報をコマンドデータとして更に書き込む。詳細情報は、コマンドデータエリアに格納される情報である。本実施形態でロボットプログラム名や開始部分情報について説明している箇所は、詳細情報と読み替えることができる。先述したように、メインコマンドとサブコマンドの組み合わせと、コマンドエリアのうち詳細情報が格納された部分と、の関係は、コマンド定義データD2などに予め定義されているものとする。動作制御部202は、この関係を参照することによって、コマンドエリアのうちのどの部分を参照すれば詳細情報を取得できるかを特定できる。
【0112】
[送信部]
送信部203は、ロボットコントローラ30に対し、任意のデータを送信する。例えば、送信部203は、コマンドエリアに書き込まれた複数のコマンドデータを、対応するロボットコントローラ30に送信する。対応するロボットコントローラ30とは、コマンドエリアを含むレジスタ範囲に対応するロボットコントローラ30である。コマンドエリアに新たなコマンドデータが書き込まれた場合には、送信部203は、新たなコマンドデータを、対応するロボットコントローラ30に送信する。
【0113】
本実施形態では、制御プログラムの実行によってコマンドエリアへの書き込みが行われるので、送信部203は、制御プログラムが実行されることによってコマンドエリアに書き込まれた複数のコマンドデータを送信する。送信部203は、コマンドエリアへの書き込みが完了した後の任意のタイミングで、複数のコマンドデータを含む送信データを送信する。本実施形態では、送信データにコマンドデータ以外のデータも含まれている場合を説明するが、送信データには、複数のコマンドデータだけが含まれていてもよい。本実施形態では、送信部203は、複数のコマンドデータを、1つの送信データとして一度に送信するものとする。即ち、複数のコマンドデータは、1つのデータフレームにまとめられている。
【0114】
また、本実施形態では、上位制御装置20とロボットコントローラ30は、非同期通信のネットワークで接続されているものとする。例えば、上位制御装置20とロボットコントローラ30は、Ethernet(登録商標)等の一般的なネットワークで接続される。また例えば、上位制御装置20とロボットコントローラ30との間で定期的にデータの送受信が行われてもよい。
【0115】
同期通信とは、送信側の機器がデータを送信するタイミングと、受信側の機器がデータを受信するタイミングと、を合わせる通信方式である。同期通信では、データ通信のリクエストが送信されてからレスポンスを受信するまでの間は、原則として他の処理は実行されない。このため、送信側の機器は、受信側の機器にデータを送信した後は、レスポンスを受信するのを待機する。受信側の機器は、送信側の機器からデータを受信すると、すぐに処理を実行し、送信側の機器にレスポンスとして処理結果を返す。送信側の機器は、処理結果を受信すると、次の処理に移行する。同期通信が行われない場合には、非同期通信を利用して通信が行われる。上位制御装置20とロボットコントローラ30は、同期通信のネットワークで接続されていてもよい。
【0116】
非同期通信とは、送信側の機器がデータを送信するタイミングと、受信側の機器がデータを受信するタイミングと、を合わせずに通信を行う通信方式である。非同期通信では、データ通信のリクエストが送信されてからレスポンスを受信するまでの間に、他の処理を実行可能である。このため、非同期通信では、送信側の機器は、受信側の機器にデータを送信してからレスポンスを受信するまでの間に、他の処理を実行可能である。また、非同期通信では、受信側の機器は、送信側の機器からデータを受信しても、すぐに処理を実行するとは限らない。受信側の機器は、所定の条件が充足されるまで処理の実行を待機したり、同期通信の処理を優先して実行したりする。送信部203は、非同期通信を利用して、複数のコマンドデータを送信する。
【0117】
[受信部]
受信部204は、ロボットコントローラ30から、任意のデータを受信する。例えば、受信部204は、ロボットコントローラ30がコマンドの実行に応じて送信する応答データを受信する。受信部204は、応答データを受信すると、予め定められたレジスタ番号のレジスタに応答データを格納する。本実施形態では、オフセットの「0012番」~「2041番」の各々のレジスタに応答データが格納される。
【0118】
[比較部]
比較部205は、送信された複数のコマンドデータと、応答データと、を比較する。比較部205は、これらのデータの全部又は一部が一致するか否かを判定する。本実施形態では、比較部205は、送信された複数のコマンドデータに含まれるコマンド要求ID、メインコマンド、及びサブコマンドと、応答データに含まれるコマンド要求ID、メインコマンド、及びサブコマンドと、が一致するか否かを判定する。比較部205は、他の判定を行ってもよく、例えば、応答データに含まれる戻り値が所定であるか否かを判定してもよい。また例えば、比較部205は、応答データに付加データが含まれているか否かを判定してもよい。
【0119】
[出力部]
出力部206は、比較部205の比較結果に基づいて、所定のアラートを出力する。アラートは、人間が知覚可能な態様で出力されるようにすればよく、例えば、視覚的、聴覚的、又は触覚的に出力される。例えば、出力部206は、上位制御装置20に接続された表示部に、所定の画像を表示させることによって、アラートを出力する。この画像は、エラーメッセージであってもよいし、アイコンであってもよい。また例えば、出力部206は、画面を点滅させることによって、アラートを出力してもよい。
【0120】
出力部206は、比較部205により一致していると判定された場合にはアラートを出力せず、比較部205により一致していると判定されなかった場合に、アラートを出力する。なお、アラートは、スピーカからの音声、バイブレータの振動、又はLEDライトの点滅によって出力されてもよい。また、アラートは、電子メールの送信などの他の方法によって出力されてもよい。また、本実施形態では、コマンド要求ID、メインコマンド、及びサブコマンドの3つの項目が比較部205によって比較され、出力部206は、何れか1つの項目でも一致していない場合にアラートを出力する。出力部206は、一致しない項目数が閾値(例えば、2)以上になった場合にアラートを出力してもよい。
【0121】
[3-3.ロボットコントローラで実現される機能]
図4に示すように、ロボットコントローラ30は、データ記憶部300、通信用記憶部301、実行部302、送信部303、及び受信部304を含む。データ記憶部300は、記憶部32を主として実現される。通信用記憶部301、実行部302、送信部303、及び受信部304は、CPU31を主として実現される。
【0122】
[データ記憶部]
データ記憶部300は、データ記憶部300は、ロボットコントローラ30が所定の動作をするために必要なデータを記憶する。例えば、データ記憶部300は、装置プログラムやパラメータを記憶する。また例えば、データ記憶部300は、装置プログラムには含まれないロボットプログラムのプログラムを記憶する。
【0123】
[通信用記憶部]
通信用記憶部301は、上位制御装置20との通信内容を示す複数の変数を記憶する。本実施形態では、通信用記憶部301がCPU31内のレジスタにより実現される場合を説明するが、データ記憶部300と通信用記憶部301を分けずに、データ記憶部300が複数の変数の各々を記憶してもよい。なお、通信用記憶部301のレジスタ体系は、予め定義されているものとする。即ち、どのデータをどのレジスタ番号のレジスタに書き込むかは、予め定められている。このレジスタ体系は、原則として固定されており、変更できないものとするが、エンジニアリングツールによって変更可能であってもよい。
【0124】
例えば、通信用記憶部301は、上位制御装置20が送信した送信データを記憶する。通信用記憶部301は、上位制御装置20から受信した複数の変数の各々を記憶する。例えば、通信用記憶部301は、上位制御装置20から受信した受信データに含まれる変数を記憶する。この変数は、レジスタ部201に記憶される変数と同じ値である。通信用記憶部301は、他の変数を記憶してもよい。なお、データ記憶部300と通信用記憶部301を分けずに、データ記憶部300が複数の変数の各々を記憶してもよい。
【0125】
本実施形態では、通信用記憶部301には、上位制御装置20から受信した複数のコマンドデータが書き込まれる。即ち、通信用記憶部301には、ロボットコントローラ30の制御用に割り当てられた上位制御装置20のレジスタのコマンドエリアに書き込まれた複数のコマンドデータを受信した場合に、当該複数のコマンドデータが書き込まれる。また例えば、通信用記憶部301は、ロボットコントローラ30が送信する応答データを記憶する。通信用記憶部301には、処理の実行結果を示す応答データが書き込まれる。
【0126】
[実行部]
実行部302は、通信用記憶部301に書き込まれた複数のコマンドデータに基づいて、上位制御装置20により指示された処理を実行する。実行部302は、複数のコマンドデータに基づいて、処理内容を特定し、当該特定された処理内容の処理を実行する。複数のコマンドデータの各々と処理内容との関係は、データ記憶部300に予め記憶されているものとする。この関係は、
図3のコマンド定義データD2と同じデータであってもよい。
【0127】
実行部302が実行する処理は、任意の処理であってよい。実行部302は、先述した種々のコマンドに応じた処理を実行可能である。例えば、処理は、ロボットプログラムの処理である。ロボットプログラムは、装置プログラムにおける動作単位に相当することもある。本実施形態のロボットコントローラ30は、複数のロボットプログラムを実行可能であり、実行部302は、コマンドに基づいてロボットプログラム名のロボットプログラムを選択し、当該選択されたロボットプログラムを実行する。
【0128】
本実施形態では、ロボットプログラムが選択された後に、新たなコマンドデータが送信されて、ロボットプログラムの実行が指示されるので、実行部302は、新たなコマンドデータに基づいて、選択されたロボットプログラムの実行を開始する。実行部302は、ロボットプログラムの実行を示す新たなコマンドデータ(本実施形態では、メインコマンドが「1」でサブコマンドが「5」のデータ)が通信用記憶部301に記録されている場合に、選択されたロボットプログラムの実行を開始する。
【0129】
また、本実施形態では、ロボットプログラムの実行を開始する開始部分を指定可能なので、実行部302は、開始部分情報に基づいて、特定されたロボットプログラムにおける開始部分を特定し、当該特定された開始部分から特定されたロボットプログラムを実行する。例えば、開始部分としてロボットプログラムの行番号が指定される場合には、実行部302は、開始部分として指定された行番号からロボットプログラムの実行を開始する。
【0130】
また、本実施形態では、実行部302は、コマンド要求IDが更新された場合に、コマンドに基づいて、処理を実行する。実行部302は、通信用記憶部301に記憶されたコマンド要求IDを参照し、コマンド要求IDが更新されたか否かを判定する。実行部302は、コマンド要求IDが更新されたと判定されない場合、メインコマンド及びサブコマンドの少なくとも一方が更新されていたとしても、メインコマンド及びサブコマンドに応じて定まる処理を実行しない。実行部302は、コマンド要求IDが更新されたと判定された場合、メインコマンド及びサブコマンドに応じて定まる処理を実行する。なお、直近のコマンド要求IDは、通信用記憶部301に保持されているものとする。
【0131】
また、本実施形態では、実行部302は、メインコマンドとサブコマンドの組み合わせに基づいて、処理を特定して実行する。メインコマンドとサブコマンドの組み合わせと、実行すべき処理内容と、の関係は、予め定義されているものとする。この定義は、装置プログラムの中で定義されていてもよいし、別途定義ファイルが用意されてデータ記憶部300に記憶されていてもよい。なお、実行部302は、ある装置プログラムの開始条件となる変数が所定の値になったことを検知した場合に、その装置プログラムを実行してもよい。
【0132】
実行部302は、メインコマンドとサブコマンドの組み合わせに対応するエリア内に書き込まれた詳細情報に基づいて、処理を実行する。このエリアは、コマンドデータエリアである。詳細情報は、コマンドデータエリアに書き込まれる情報である。メインコマンドとサブコマンドの組み合わせと、詳細情報が書き込まれるエリアと、の関係は、予め定義されているものとする。この定義は、装置プログラムの中で定義されていてもよいし、別途定義ファイルが用意されてデータ記憶部300に記憶されていてもよい。
【0133】
本実施形態の複数のコマンドデータは、ロボットプログラムを実行させるためのコマンド、ロボットプログラムのロボットプログラム名、及びロボットプログラムにおけるロボットプログラムにおける開始部分に関する開始部分情報を含み、実行部302は、コマンドを受信した場合に、ロボットプログラム名と開始部分情報とに基づいて、ロボットプログラムと開始部分とを特定し、当該特定された開始部分から当該特定されたロボットプログラムを実行する。ロボットプログラムと開始部分を特定する流れは、
図6を参照して説明した通りである。
【0134】
[送信部]
送信部303は、通信用記憶部301に書き込まれた応答データを、上位制御装置20に送信する。先述したように、応答データは、実行部302により生成されて通信用記憶部301に書き込まれる。送信部303は、通信用記憶部301への応答データの書き込みが完了した場合に、応答データを上位制御装置20に送信する。なお、送信部303は、通信用記憶部301に書き込まれた応答データを定期的に送信してもよい。この場合、上位制御装置20とロボットコントローラ30との間で、周期的な通信が行われることになる。
【0135】
[受信部]
受信部304は、上位制御装置20から送信データを受信する。受信部304は、当該送信データを通信用記憶部301に記録する。本実施形態では、上位制御装置20とロボットコントローラ30との間で非同期通信が行われており、送信データは、不定期的に送受信されるので、受信部304は、不定期的に送信データを受信する。応答データも不定期的に送受信される。
【0136】
なお、上位制御装置20とロボットコントローラ30との間で同期通信が行われている場合には、送信データと応答データが定期的に送受信されてもよい。この場合、同期通信は、所定の周期ごとに行われ、レジスタ部201の変数と通信用記憶部301の変数とは定期的に整合が取られる。
【0137】
[3-4.データ収集装置で実現される機能]
図4に示すように、データ収集装置50は、データ記憶部500を含む。データ記憶部500は、記憶部52を主として実現される。データ記憶部500は、上位制御装置20から収集した変数が格納された収集データを記憶する。収集データは、収集対象として指定された変数の値が格納されたデータである。収集データには、ある一時点の変数の値が格納されてもよいし、変数の値の時系列的な変化が格納されてもよい。また、収集データには、1つの変数の値だけが格納されていてもよいし、複数の変数の値が格納されていてもよい。また例えば、データ記憶部500は、収集データの解析プログラムを記憶してもよい。
【0138】
[4.実施形態の生産システムで実行される処理]
図7及び
図8は、実施形態の生産システム1で実行される処理の一例を示すフロー図である。本実施形態では、生産システム1で実行される処理のうち、上位制御装置20とロボットコントローラ30との間で行われる通信処理について説明する。CPU21が記憶部22に記憶された制御プログラムを実行し、CPU31が記憶部32に記憶された装置プログラムを実行することによって、
図7及び
図8に示す処理が実行される。
図7及び
図8に示す処理は、
図4に示す機能ブロックにより実行される処理の一例である。
【0139】
図7に示すように、上位制御装置20は、制御プログラムに基づいて、ロボットコントローラ30にコマンドを送信するか否かを判定する(S1)。例えば、制御プログラムがラダーチャートで記述されている場合、制御プログラムの実行開始の条件となるコイルが定義されている。上位制御装置20は、この条件が満たされたか否かを判定する。この条件は、特定の変数が所定の値になることであってもよい。この条件が満たされたと判定された場合、コマンドを送信すると判定される。
【0140】
コマンドを送信すると判定されない場合(S1;N)、後述するS17の処理に移行する。コマンドを送信すると判定された場合(S1;Y)、上位制御装置20は、CPU21のレジスタのうち「GW07165番」のレジスタに、制御プログラムによって特定される値のメインコマンドを書き込む(S2)。上位制御装置20は、CPU21のレジスタのうち「GW07166番」のレジスタに、制御プログラムによって特定される値のサブコマンドを書き込む(S3)。上位制御装置20は、CPU21のレジスタのうち「GW07167番」以降のコマンドデータエリアのレジスタに、必要に応じてデータを書き込む(S4)。制御プログラムには、S2~S4の処理で書き込むべき値が定義されているものとする。なお、データを書き込む必要がない場合、S4の処理は実行されない。
【0141】
上位制御装置20は、CPU21のレジスタのうち「GW07163番」のコマンド要求IDをインクリメントする(S5)。上位制御装置20は、ロボットコントローラ30に対し、CPU21のレジスタのうち「GW07163番」~「GW07499番」のレジスタに格納された複数のコマンドデータを送信する(S6)。
【0142】
ロボットコントローラ30は、複数のコマンドデータを受信し、CPU31のレジスタに記録する(S7)。ロボットコントローラ30は、レジスタに記録された複数のコマンドデータに基づいて、コマンド要求IDがインクリメントされたか否かを判定する(S8)。S8においては、ロボットコントローラ30は、それまで記憶されていたコマンド要求IDの値と、S7で記録された複数のコマンドデータに含まれるコマンド要求IDの値と、を比較する。
【0143】
コマンド要求IDがインクリメントされたと判定された場合(S8;Y)、ロボットコントローラ30は、CPU31のレジスタに記録されているメインコマンドとサブコマンドの組み合わせが示す処理を特定する(S9)。ロボットコントローラ30は、必要に応じて、CPU31のコマンドデータエリアに格納されたデータを取得し(S10)、S9で特定した処理を実行する(S11)。
【0144】
図8に移り、ロボットコントローラ30は、S11の処理の実行結果に基づいて、応答データを生成し、CPU31のレジスタに格納する(S12)。S11の処理が正常に実行されていれば、応答データには、S7で受信したものと同じコマンド要求ID、メインコマンド、及びサブコマンドが格納される。ロボットコントローラ30は、上位制御装置20に対し、CPU31のレジスタに格納された応答データを送信する(S13)。
【0145】
上位制御装置20は、応答データを受信し、CPU21のレジスタに格納する(S14)。上位制御装置20は、応答データに含まれるコマンド要求ID等と、送信データに含まれるコマンド要求ID等と、が一致するか否かを判定する(S15)。これら一致すると判定されない場合(S15;N)、上位制御装置20は、所定のアラートを出力し(S16)、本処理は終了する。
【0146】
S15において、コマンド要求ID等が一致すると判定された場合(S15;Y)、上位制御装置20は、制御プログラムの実行を終了するか否かを判定する(S17)。S17においては、制御プログラムのコード部分の最後まで実行されたか否かが判定される。制御プログラムの実行を終了すると判定されない場合(S17;N)、S1の処理に戻り、制御プログラムの実行が継続される。制御プログラムの実行を終了すると判定された場合(S17;Y)、本処理は終了する。
【0147】
以上説明した生産システム1によれば、ロボットコントローラ30の制御用に割り当てられたレジスタのコマンドエリアに書き込まれた複数のコマンドデータをロボットコントローラ30に送信し、複数のコマンドデータに基づいて、上位制御装置20により指定された処理を特定させることによって、ロボットコントローラ30に種々の処理を実行するために何度もコマンドデータを送信する必要がなくなり、通信コストを下げることができる。ロボットコントローラ30からすれば、通信用記憶部301に書き込まれた複数のコマンドデータを参照するだけで、上位制御装置20により指定された処理を特定することができる。また、単に1つのコマンドデータを送信して処理を実行させるのではなく、複数のコマンドデータを組み合わせて利用することにより、メモリ等のリソースを節約しつつ、より多数の処理に対応することができる。
【0148】
また、生産システム1は、コマンドエリアのコマンドとロボットプログラム名を書き換えるだけで、複数のロボットプログラムの中から任意のロボットプログラムをロボットコントローラ30に実行させることができるので、種々のロボットプログラムを実行する際の通信コストを下げることができる。
【0149】
また、生産システム1は、ロボットプログラム選択のサブコマンドを送信した後に、ロボットプログラム開始のサブコマンドをコマンドエリアに書き込んで送信し、選択されたロボットプログラムの実行を開始することによって、ロボットプログラムの実行開始タイミングを上位制御装置20側でコントロールできる。
【0150】
また、生産システム1は、コマンドエリアに開始部分情報を書き込むことによって、ロボットプログラムの中の任意の部分から実行することができる。ロボットプログラムの最初から実行するのではなく、途中から実行することにより、ロボットコントローラ30に無駄な処理を実行させる必要がなくなる。その結果、ロボットコントローラ30の処理負荷を軽減できる。また、所望の処理を実行させるまでに、無駄な時間が発生することを防止できる。
【0151】
また、生産システム1は、コマンド要求情報が更新された場合に、コマンドを実行することによって、コマンドの実行タイミングを制御できる。例えば、コマンドを実行させたいタイミングではないにもかかわらず、コマンドエリアにコマンドが格納されたとしても、コマンド要求情報が更新されていなければ、そのコマンドが実行されないようにすることができ、コマンドが誤って実行されることを防止できる。
【0152】
また、生産システム1は、ロボットコントローラ30が有する複数の機能のうちの何れかをメインコマンドで要求し、その機能における具体的な処理をサブコマンドで要求し、メインコマンドとサブコマンドの組み合わせに基づいて処理を特定して実行することにより、コマンド体系を簡略化できる。1度に送信できるメインコマンドとサブコマンドの組み合わせによって、種々の処理に対応することができるので、通信コストを低減させることができる。
【0153】
また、生産システム1は、メインコマンドとサブコマンドの組み合わせに対応するエリア内に書き込まれた詳細情報に基づいて、処理内容の詳細を指定することにより、コマンドエリアを有効活用することができる。例えば、メインコマンドとサブコマンドの組み合わせごとに、詳細情報を書き込むエリアを別々に設けるのではなく、共用のエリアとすることで、確保すべきレジスタのサイズや送信データのサイズが増加することを防止し、メモリ消費量や通信コストを低減させることができる。
【0154】
また、生産システム1は、上位制御装置20が制御プログラムを実行することによって、ロボットコントローラ30に実行させる処理を指定して実行させることができる。通信コストを上げることなく、上位制御装置20によるロボットコントローラ30の制御のバリエーションを増やすことができる。
【0155】
また、生産システム1は、上位制御装置20とロボットコントローラ30が非同期通信で接続されていたとしても、複数のコマンドデータを送信することにより、ロボットコントローラ30の高度な制御が可能になる。
【0156】
また、生産システム1は、ロボットコントローラ30が実行した処理結果を示す応答データが応答エリアに書き込まれることによって、ロボットコントローラ30に指示した処理が正確に実行されたか否かを特定することができる。
【0157】
また、生産システム1は、複数のコマンドデータと応答データを比較することによって、上位制御装置20が指示した処理が正確に実行されたか否かを確認することができる。
【0158】
また、生産システム1は、ロボットプログラムの中の任意の部分から実行することができる。ロボットプログラムの最初から実行するのではなく、途中から実行することにより、ロボットコントローラ30に無駄な処理を実行させる必要がなくなる。その結果、ロボットコントローラ30の処理負荷を軽減できる。また、所望の処理を実行させるまでに、無駄な時間が発生することを防止できる。
【0159】
[5.変形例]
なお、本開示は、以上に説明した実施の形態に限定されるものではない。本開示の趣旨を逸脱しない範囲で、適宜変更可能である。
【0160】
例えば、複数のコマンドデータにそれぞれ複数のコマンドが示されており、ロボットコントローラ30は、一度に受信した複数のコマンドデータに示された複数のコマンドを連続的に実行してもよい。また例えば、上位制御装置20のレジスタ範囲は、エンジニアリング装置10によって割り当てられたものではなく、工場の出荷時点の設定で固定されていてもよい。また例えば、上位制御装置20は、複数のロボットコントローラ30を制御する場合も実施形態と同様の処理により、個々のロボットコントローラ30に対し、複数のコマンドデータを送信すればよい。
【0161】
また例えば、上記説明した各機能は、生産システム1における任意の装置で実現されるようにすればよい。例えば、データ収集装置50で実現されるものとして説明した機能が上位制御装置20又はロボットコントローラ30によって実現されてもよい。また例えば、上位制御装置20で実現されるものとして説明した機能がデータ収集装置50又はロボットコントローラ30によって実現されてもよい。また例えば、各機能が複数のコンピュータによって分担されるのではなく、1つのコンピュータによって実現されてもよい。
【0162】
また、以上説明した実施形態は具体例として示したものであり、本明細書にて開示される発明をこれら具体例の構成やデータ格納例そのものに限定するものではない。当業者はこれら開示された実施形態に種々の変形、例えば、物理的構成の形状や数、データ構造、処理の実行順を変更したりしてもよい。本明細書にて開示される発明の技術的範囲は、そのようになされた変形をも含むものと理解すべきである。
【符号の説明】
【0163】
1 生産システム、10 エンジニアリング装置、11,21,31,51 CPU、12,22,32,52 記憶部、13,23,33,43 通信部、14,54 操作部、15,55 表示部、20 上位制御装置、24 IoT部、30 ロボットコントローラ、40 ロボット、50 データ収集装置、D1 構造体データ、D2 コマンド定義データ、100 データ記憶部、101 設定部、200 データ記憶部、201 レジスタ部、202 動作制御部、203 送信部、204 受信部、205 比較部、206 出力部、300 データ記憶部、301 通信用記憶部、302 実行部、303 送信部、304 受信部、500 データ記憶部。