IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オムロン株式会社の特許一覧

特開2024-85085シミュレーションシステムおよびシミュレーション方法
<>
  • 特開-シミュレーションシステムおよびシミュレーション方法 図1
  • 特開-シミュレーションシステムおよびシミュレーション方法 図2
  • 特開-シミュレーションシステムおよびシミュレーション方法 図3
  • 特開-シミュレーションシステムおよびシミュレーション方法 図4
  • 特開-シミュレーションシステムおよびシミュレーション方法 図5
  • 特開-シミュレーションシステムおよびシミュレーション方法 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024085085
(43)【公開日】2024-06-26
(54)【発明の名称】シミュレーションシステムおよびシミュレーション方法
(51)【国際特許分類】
   G05B 19/418 20060101AFI20240619BHJP
【FI】
G05B19/418 Z
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022199422
(22)【出願日】2022-12-14
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】岩村 慎太郎
【テーマコード(参考)】
3C100
【Fターム(参考)】
3C100AA22
3C100AA29
3C100BB13
3C100BB15
(57)【要約】
【課題】シミュレーションの全行程のうちの一部分を実行する技術を提供する。
【解決手段】シミュレーションシステムは、シミュレータを格納するストレージと、シミュレータを実行するプロセッサとを備える。プロセッサは、複数の工程からなるワークの加工処理のシミュレーションを実行し、シミュレーションの実行中に、シミュレーションの状態情報を保存し510,520,530,540、シミュレーションの実行後に、複数の工程のうちの1つの工程を指定する実行コードの入力を受け付けたことに基づいて、状態情報を参照し、指定された1つの工程からワークの加工処理を実行する。
【選択図】図5
【特許請求の範囲】
【請求項1】
シミュレータを格納するストレージと、
前記シミュレータを実行するプロセッサとを備え、
前記プロセッサは、
複数の工程からなるワークの加工処理のシミュレーションを実行し、
前記シミュレーションの実行中に、前記シミュレーションの状態情報を保存し、
前記シミュレーションの実行後に、前記複数の工程のうちの1つの工程を指定する実行コードの入力を受け付けたことに基づいて、前記状態情報を参照し、指定された前記1つの工程から前記ワークの加工処理を実行する、シミュレーションシステム。
【請求項2】
前記状態情報は、前記シミュレーション中の前記ワークの形状と、前記ワークの加工プログラムの変数情報とを含み、
前記変数情報は、工程を識別する情報と、各工程内で実行されるタスクの状態を管理する情報とを含む、請求項1に記載のシミュレーションシステム。
【請求項3】
前記複数の工程は、第1の工程と、前記第1の工程の次に実行される第2の工程とを含み、
前記複数の工程のうちの前記1つの工程を指定する前記実行コードの入力を受け付けたことに基づいて、指定された前記1つの工程から前記ワークの加工処理を実行することは、
前記第2の工程を指定する前記実行コードの入力を受け付けたことに基づいて、前記第1の工程の完了直後の前記ワークの形状を再現することと、
前記ワークの加工プログラムに、前記第2の工程で使用される前記変数情報を渡すことを含む、請求項2に記載のシミュレーションシステム。
【請求項4】
前記ワークの前記複数の工程からなる前記加工処理の前記シミュレーションを実行することは、
仮想的な制御装置に、前記ワークの加工プログラムを実行させることと、
前記仮想的な制御装置によって制御された1つ以上の仮想的な機械により、前記ワークを加工することとを含み、
前記シミュレーションの実行中に、前記シミュレーションの状態情報を保存することは、前記タスクを実行中に、前記ワークの形状と、前記変数情報とを更新することを含む、請求項2に記載のシミュレーションシステム。
【請求項5】
前記実行コードは、前記ワークの加工プログラムとは異なる、テキストベースのプログラムコードまたはグラフィカルプログラムのコードである、請求項2に記載のシミュレーションシステム。
【請求項6】
前記複数の工程のうちの前記1つの工程を指定する前記実行コードの入力を受け付けたことに基づいて、指定された前記1つの工程から前記ワークの加工処理を実行することは、
前記1つの工程内の1つのタスクを指定する前記実行コードの入力を受け付けることと、
前記1つのタスクを指定されたことに基づいて、前記ワークの加工プログラムを、指定された前記1つのタスクから実行することとを含む、請求項2~5のいずれかに記載のシミュレーションシステム。
【請求項7】
コンピュータによって実行されるシミュレーション方法であって、
複数の工程からなるワークの加工処理のシミュレーションを実行するステップと、
前記シミュレーションの実行中に、前記シミュレーションの状態情報を保存するステップと、
前記シミュレーションの実行後に、前記複数の工程のうちの1つの工程を指定する実行コードの入力を受け付けたことに基づいて、前記状態情報を参照し、指定された前記1つの工程から前記ワークの加工処理を実行するステップとを含む、シミュレーション方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、シミュレーションシステムに関し、より特定的には、シミュレーションを部分的に実行する技術に関する。
【背景技術】
【0002】
金属の曲げ加工等の柔軟物の加工処理は、複数の加工工程を含むことがある。近年のコンピュータ技術の進展により、ユーザは、シミュレータ等を用いて、このような柔軟物の加工処理のシミュレーションを実行することができる。
【0003】
シミュレーションの実行時にある工程に不具合があった場合、ユーザは、当該不具合のある工程のプログラムを修正した後で、シミュレーションの全行程をやり直す必要があった。そのため、ユーザは、シミュレーション技術を用いたとしても、柔軟物の加工プログラムを完成させるために、多くの時間を費やす必要があった。
【0004】
加工シミュレーションに関し、例えば、特許第7158636号公報(特許文献1)は、「加工を制御する加工プログラムが実行された後の部品に含まれる部位のうち指定された部位である指定部位毎の加工誤差の許容値である加工許容値と設計値とを設定する加工許容値設定部と、機械装置の特性を模擬する機械モデルと加工プログラムとを用いて、加工の加工シミュレーションを実行する加工シミュレーション実行部と、加工シミュレーションによって予測された加工プログラムが実行された後の部品形状であるシミュレーション形状と設計値とに基づいて、シミュレーション形状の加工誤差の予測値である部位加工誤差を、指定部位毎に計算する第1加工結果評価部とを備える」加工評価装置を開示している([要約]参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特許第7158636号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1に開示された技術によると、シミュレーションの全行程のうちの一部分を実行することができない。したがって、シミュレーションの全行程のうちの一部分を実行する技術が必要とされている。
【0007】
本開示は、上記のような背景に鑑みてなされたものであって、ある局面における目的は、シミュレーションの全行程のうちの一部分を実行する技術を提供することにある。
【課題を解決するための手段】
【0008】
ある実施の形態に従うと、シミュレーションシステムが提供される。シミュレーションシステムは、シミュレータを格納するストレージと、シミュレータを実行するプロセッサとを備える。プロセッサは、複数の工程からなるワークの加工処理のシミュレーションを実行し、シミュレーションの実行中に、シミュレーションの状態情報を保存し、シミュレーションの実行後に、複数の工程のうちの1つの工程を指定する実行コードの入力を受け付けたことに基づいて、状態情報を参照し、指定された1つの工程からワークの加工処理を実行する。この開示によれば、シミュレーションシステムは、シミュレーションの状態を保存することで、シミュレーションの実行後に、指定された1つの工程からシミュレーションを実行し得る。これにより、ユーザは、ワークの加工プログラムをデバッグ中に、不具合のある工程のコードの動作のみを確認することができ、デバッグ時間を削減し得る。
【0009】
上記の開示において、状態情報は、シミュレーション中のワークの形状と、ワークの加工プログラムの変数情報とを含む。変数情報は、工程を識別する情報と、各工程内で実行されるタスクの状態を管理する情報とを含む。この開示によれば、シミュレーションシステムは、3Dオブジェクトであるワークの形状およびワークの加工プログラムの変数の両方を保存することができる。これにより、シミュレーションシステムは、ワークの加工プログラムを途中から実行し、さらに、ワークの加工プログラムの実行段階に合わせたワークの形状を再現し得る。
【0010】
上記の開示において、複数の工程は、第1の工程と、第1の工程の次に実行される第2の工程とを含む。複数の工程のうちの1つの工程を指定する実行コードの入力を受け付けたことに基づいて、指定された1つの工程からワークの加工処理を実行することは、第2の工程を指定する実行コードの入力を受け付けたことに基づいて、第1の工程の完了直後のワークの形状を再現することと、ワークの加工プログラムに、第2の工程で使用される変数情報を渡すことを含む。この開示によれば、シミュレーションシステムは、ワークの加工プログラムを任意の工程から開始すると共に、直前の工程により変形済みのワークの形状を再現し得る。
【0011】
上記の開示において、ワークの複数の工程からなる加工処理のシミュレーションを実行することは、仮想的な制御装置に、ワークの加工プログラムを実行させることと、仮想的な制御装置によって制御された1つ以上の仮想的な機械により、ワークを加工することとを含む。シミュレーションの実行中に、シミュレーションの状態情報を保存することは、タスクを実行中に、ワークの形状と、変数情報とを更新することを含む。この開示によれば、シミュレーションシステムは、少なくともある工程が完了した時点でのワークの形状およびワークの加工プログラムの変数情報を記録し得る。また、シミュレーションシステムは、ワークの形状およびワークの加工プログラムの変数情報の履歴を残し得る。
【0012】
上記の開示において、実行コードは、ワークの加工プログラムとは異なる、テキストベースのプログラムコードまたはグラフィカルプログラムのコードである。この開示によれば、シミュレーションシステムは、ユーザにシミュレーションの処理内容を定義する手段を提供し得る。
【0013】
上記の開示において、複数の工程のうちの1つの工程を指定する実行コードの入力を受け付けたことに基づいて、指定された1つの工程からワークの加工処理を実行することは、1つの工程内の1つのタスクを指定する実行コードの入力を受け付けることと、1つのタスクを指定されたことに基づいて、ワークの加工プログラムを、指定された1つのタスクから実行することとを含む。この開示によれば、シミュレーションシステムは、ワークの加工プログラムを各工程内の特定のタスクから実行することができる。これにより、ユーザは、不具合のある特定のタスクの動作を繰り返し確認し得る。
【0014】
他の実施の形態に従うと、コンピュータによって実行されるシミュレーション方法が提供される。シミュレーション方法は、複数の工程からなるワークの加工処理のシミュレーションを実行するステップと、シミュレーションの実行中に、シミュレーションの状態情報を保存するステップと、シミュレーションの実行後に、複数の工程のうちの1つの工程を指定する実行コードの入力を受け付けたことに基づいて、状態情報を参照し、指定された1つの工程からワークの加工処理を実行するステップとを含む。この開示によれば、シミュレーション方法は、シミュレーションの状態を保存することで、シミュレーションの実行後に、指定された1つの工程からシミュレーションを実行し得る。これにより、ユーザは、ワークの加工プログラムをデバッグ中に、不具合のある工程のコードの動作のみを確認することができ、デバッグ時間を削減し得る。
【発明の効果】
【0015】
ある実施の形態に従うと、シミュレーションの全行程のうちの一部分を再生することが可能である。
【0016】
この開示内容の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解される本開示に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【0017】
図1】本開示の技術の適用例を示す図である。
図2】システム200のハードウェア構成の一例を示す図である。
図3】ワーク100の加工処理の各工程の一例を示す図である。
図4】ワーク100の加工プログラムの編集画面の一例を示す図である。
図5】各工程の保存処理を含むシミュレーションプログラムの一例を示す図である。
図6】指定された工程の再生処理を含むシミュレーションプログラムの一例を示す図である。
【発明を実施するための形態】
【0018】
以下、図面を参照しつつ、本開示に係る技術思想の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【0019】
<A.適用例>
図1は、本開示の技術の適用例を示す図である。本開示の技術は、図1に示されるようなワークの加工のためのプログラムの開発を支援するためのものである。図1を参照して、ワークの加工、ワークの加工プログラムの開発手順、ワークの加工プログラムの開発にシミュレーション技術を使用した場合の課題、当該課題の解決方法について説明する。
【0020】
(a.ワークの加工)
まず、ワークの加工について説明する。本明細書において、「ワーク」は、加工の対象となる物体である。例えば、ワークは、プラスチック部品、金属部品、基板、その他の任意の部品、または、これらを組み合わせた物体である。また、本明細書において、ワークへの「加工」は、曲げ加工、ねじり、ネジ締め、部品同士の嵌合、半田付け、穴開けおよび切削等の任意の工程を含む。一例として、金属等の柔軟性のあるワーク100の加工は、複数回の折り曲げ加工等を含むことがある。図1には、金属の曲げ加工を行う製造ライン10の一部が示されている。例えば、1枚の金属の板(ワーク100)は、図3に示されるように、複数回折り曲げられる。
【0021】
製造ライン10上でワーク100に複数の工程からなる加工を行う場合、ユーザは、例えば、シミュレーションシステム(システム200(図2参照)または他のソフトウェア等)を使用して、製造ライン10の各機械を制御する制御装置のプログラムを作成する。ある実施の形態に従うと、制御装置は、PLC(Programmable Logic Controller)である。他の実施の形態に従うと、制御装置は、PLCおよびロボットの制御装置を含む統合コントローラである。
【0022】
なお、本明細書において、「システム」は、1または複数の装置からなる構成、サーバ、クラウド環境に構築された仮想マシンもしくはコンテナ、または、これらの少なくとも一部からなる構成を包含する。また、装置は、パーソナルコンピュータ、ワークステーション、サーバ装置、タブレット、スマートフォン等の情報処理装置と、PLC等の制御装置と、多関節ロボット等の任意の機械装置とを含んでいてもよく、また、これらの組合せであってもよい。ある局面において、システムは、ディスプレイおよびキーボード等の入出力機器と接続されて、ユーザに使用されてもよい。他の局面において、システムは、ネットワークを介して、クラウドサービスまたはウェブアプリケーションとして、ユーザに各種機能を提供してもよい。この場合、ユーザは、自身の端末にインストールされたブラウザまたはクライアントソフトウェアを介して、システムの機能を使用し得る。
【0023】
(b.ワークの加工プログラムの開発手順)
次に、ワーク100の加工プログラムの開発手順について説明する。ユーザは、パーソナルコンピュータ等の情報処理装置を使用して、制御装置が実行するプログラム(ワークの加工プログラム)を作成する。制御装置は、情報処理装置からインストールされたプログラムを実行することで、製造ライン10上の各機械を制御することで、ワーク100を加工する。例えば、ワーク100の加工が、第1の工程と、第2の工程とを含むとする。この場合、制御装置のプログラムは、第1の工程および第2の工程の各々に対応するコードを含む。ある実施の形態に従うと、システム200は、制御装置のプログラムの開発環境を備える。
【0024】
制御装置のプログラム開発において、製造ライン10を実際に動作させると、非常に多くのワーク100を浪費してしまう。また、制御装置のプログラム開発のために、事前に製造ライン10を構築しなくてはならない。そのため、ユーザは、シミュレータ210(図2参照)を使用する。より具体的には、ユーザは、シミュレータ210を使用して、3D(Dimensional)空間に、仮想的な製造ライン10を構築する。そして、ユーザは、仮想的な制御装置を介して、仮想的な製造ライン10上の各機械を制御する。想的な制御装置は、現実の制御装置と同様にプログラムをインストール可能に構成され、当該プログラムに基づいて、仮想的な製造ライン10上の各機械を制御する。ユーザは、シミュレータ210を使用することで、事前に製造ライン10を構築することなく、また、ワーク100を浪費することなく、制御装置のプログラムを開発し得る。
【0025】
(c.ワークの加工プログラムの開発にシミュレータを使用した場合の課題)
次に、ワーク100の加工プログラムの開発にシミュレータ210を使用した場合の課題について説明する。ユーザが開発中の制御装置のプログラムは、第1の工程および第2の工程の各々に対応するコードを含むとする。この場合、仮想的な制御装置が当該プログラムを実行すると、シミュレータ210は、当該プログラムに含まれる全工程(第1の工程および第2の工程)を実行する。仮に、プログラム中の第1の工程のコードのみに不具合があるとする。この場合、ユーザは、第1の工程のコードを修正して、シミュレータ210を動作させる。そうすると、シミュレータ210は、第1の工程だけでなく、不具合のない第2の工程も実行する。その結果、デバッグに多くの時間がかかってしまう。そのため、制御装置のプログラムの開発時間を短縮するために、シミュレータ210は、シミュレーションの全工程のうち一部の工程のみを実行する機能を備えることが望ましい。
【0026】
(d.課題の解決方法)
本実施の形態に従うシステム200は、上記の課題を解決するために、シミュレーションの実行中に、シミュレーションの状態情報を保存する機能を備える。また、システム200は、シミュレーションの状態情報を参照することで、加工途中のワーク100の状態を3D空間内で再現し、途中の工程から加工プログラムを実行する機能を備える。
【0027】
なお、本明細書において、システム200(シミュレータ210)が実行する「プログラム」は、シミュレーションを実行するためのプログラムである。当該プログラムは、仮想的な制御装置が実行する加工プログラムとは異なる。システム200が当該プログラムを実行すると、シミュレーションが実行され、シミュレーションの中で、仮想的な制御装置が加工プログラムを実行する。シミュレーションは、仮想的な制御装置によって制御される仮想的な機械等の動作の再現と、仮想的な制御装置によって制御されないワーク等の動きおよび形状変化の再現とを含む。これ以降、区別のために、ユーザがデバッグする制御装置のプログラムを「ワーク100の加工プログラム、または、加工プログラム」と呼び、シミュレータ210が実行するプログラムを単に「プログラム」と呼ぶ。加工プログラムは、一例として、ラダープログラム、IEC(International Electrotechnical Commission)言語、ST(Structured Text)言語、SFC(Sequential Function Chart)言語、および、PLCが実行可能な任意のプログラム言語を包含する。シミュレータ210が実行するプログラムは、C#等の任意のテキストベースのプログラム、フローチャート等の任意のグラフィカルプログラムを含む。
【0028】
より具体的には、システム(シミュレーションシステム)200は、シミュレータ210を格納するストレージ203(図2参照)と、シミュレータ210を実行するプロセッサ201(図2参照)とを備える。プロセッサ201は、ストレージ203からメモリ202(図2参照)に読み込まれたシミュレータ210により、シミュレーションを実行する。
【0029】
まず、システム200は、複数の工程からなるワーク100の加工処理のシミュレーションを実行する。例えば、システム200は、第1の工程および第2の工程を実行する。次に、システム200は、シミュレーションの実行中に、シミュレーションの状態情報を保存する。システム200は、シミュレーションの状態情報をメモリ202およびストレージ203の少なくとも片方に保存する。一例として、システム200は、第1の工程の直後のシミュレーションの状態情報、および、第2の工程の直後のシミュレーションの状態情報を保存する。
【0030】
なお、シミュレーションの状態情報は、シミュレーション中のワーク100の形状と、加工プログラムの変数情報とを含む。加工プログラムの変数情報は、工程を識別する情報(グローバル変数421(図4参照)の値)と、各工程内で実行されるタスクの状態を管理する情報(ローカル変数422(図4参照)の値)とを含む。
【0031】
システム200は、一旦、シミュレーションの実行およびシミュレーションの状態情報を保存する。その後に、システム200は、複数の工程のうちの1つの工程を指定する実行コードの入力を受け付けたことに基づいて、指定された1つの工程からワーク100の加工処理を実行する。一例として、ユーザは、第2の工程を指定する実行コードをシステム200に入力したとする。この場合、システム200は、第2の工程からワーク100の加工処理のシミュレーションを開始する。
【0032】
より具体的には、システム200は、保存されたワークの形状情報を参照し、第1の工程の直後のワーク100の形状を再現する。そして、システム200は、保存された変数情報を加工プログラムに渡すことで、仮想的な制御装置に第2の工程のコード(加工プログラムの一部)を実行させる。このとき、システム200は、第2の工程で使用されるグローバル変数421の値およびローカル変数422の値を、加工プログラムに渡す。こうすることで、ユーザは、加工プログラムのデバッグ時に、加工プログラムの一部の工程のみを繰り返しシステム200に実行させることができる。
【0033】
ある実施の形態に従うと、シミュレータ210が実行するプログラム(実行コード)は、C#等のテキストベースのプログラムのコードまたはフローチャート等のグラフィカルプログラムのコードである。シミュレータ210がプログラムを実行すると、シミュレーション中で、制御装置により加工プログラムが実行される。
【0034】
このように、システム200は、ワーク100の加工途中の状態を保存しておき、当該ワーク100の加工途中の状態を呼び出すことで、加工プログラムの一部のコードのみを実行し得る。すなわち、システム200は、ワーク100の加工のシミュレーションをどの工程からでも実行し得る。
【0035】
また、ユーザは、システム200を使用することで、各工程の正しさをシミュレーションで確認できる。例えば、ユーザは、各工程におけるワーク100の形状を確認して、各工程においてワーク100を曲げるために必要なトルクなどを短い期間で繰り返し試行錯誤し得る。さらに、ユーザは、各工程を組み合わせたりばらしたりすることで、複数のワーク100を組み合わせたときの整合性等についても検証し得る。
【0036】
<B.ハードウェア構成>
図2は、システム200のハードウェア構成の一例を示す図である。ある実施の形態に従うと、制御装置は、ハードウェアの一部として、図2に示される各構成を備える。システム200は、プロセッサ201と、メモリ202と、ストレージ203と、外部機器IF(Interface)204と、入力IF205と、出力IF206と、通信IF207とを含む。これらの各構成は、バス208を介して、相互に通信可能に接続される。
【0037】
プロセッサ201は、システム200の各種機能を実現するためのプログラムを実行し得る。プロセッサ201は、例えば、少なくとも1つの集積回路によって構成される。ある実施の形態に従うと、システム200は、例えば、少なくとも1つのCPU(Central Processing Unit)と、少なくとも1つのGPU(Graphics Processing Unit)、少なくとも1つのFPGA(Field Programmable Gate Array)、少なくとも1つのASIC(Application Specific Integrated Circuit)またはこれらの組み合わせ等を含んでいてもよい。
【0038】
メモリ202は、プロセッサ201によって実行されるプログラムと、プロセッサ201によって参照されるデータとを格納する。ある局面において、メモリ202は、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)等によって実現され得る。
【0039】
ストレージ203は、不揮発性メモリであり、プロセッサ201によって実行されるプログラムおよびプロセッサ201によって参照されるデータを格納している。その場合、プロセッサ201は、ストレージ203からメモリ202に読み出されたプログラムを実行し、ストレージ203からメモリ202に読み出されたデータを参照する。ある局面において、ストレージ203は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electrically Erasable Programmable Read Only Memory)またはフラッシュメモリー等によって実現され得る。
【0040】
外部機器IF204は、プリンター、スキャナーおよび外付けHDD等の任意の外部機器に接続され得る。ある局面において、外部機器IF204は、USB(Universal Serial Bus)端子等によって実現され得る。
【0041】
入力IF205は、キーボード、マウス、タッチパッドまたはゲームパッド等の任意の入力装置に接続され得る。ある局面において、入力IF205は、USB端子、PS/2端子およびBluetooth(登録商標)モジュール等によって実現され得る。
【0042】
出力IF206は、ブラウン管ディスプレイ、液晶ディスプレイまたは有機EL(Electro-Luminescence)ディスプレイ等の任意の出力装置に接続され得る。ある局面において、出力IF206は、USB端子、D-sub端子、DVI(Digital Visual Interface)端子、HDMI(登録商標)(High-Definition Multimedia Interface)端子およびディスプレイポート端子等によって実現され得る。
【0043】
通信IF207は、有線ネットワークまたは無線ネットワークを介して他の機器と接続される。ある局面において、通信IF207は、有線LAN(Local Area Network)ポートおよびWi-Fi(登録商標)(Wireless Fidelity)モジュール等によって実現され得る。他の局面において、通信IF207は、TCP/IP(Transmission Control Protocol/Internet Protocol)、UDP(User Datagram Protocol)等の通信プロトコルを用いてデータを送受信し得る。
【0044】
シミュレータ210は、図1を参照して説明された処理を実行する。ある実施の形態に従うと、シミュレータ210は、ソフトウェアとして実現される。他の実施の形態に従うと、シミュレータ210の一部または全ては、ハードウェアとして実現される。
【0045】
シミュレータ210は、大きく分けて2つの機能を備える。1つ目の機能は、制御装置(PLC)のエミュレーション機能である。ユーザは、シミュレータ210内で再現された仮想的な制御装置に、加工プログラムを実行させることができる。ある実施の形態に従うと、制御装置に制御される各種機械の機能を再現する機能を備える。これらの機械は、仮想的な制御装置から受信した信号に基づいて、現実世界と同様に動作する。2つ目の機能は、3D空間内のオブジェクトの動作および変化を再現する機能である。例えば、システム200は、製造ライン10に投入されるワーク100の動きおよび形状変化等を再現する。
【0046】
シミュレータ210は、第1の機能により、3D空間で、ワーク100を加工する機械を動作させる。次に、シミュレータ210は、第2の機能により、3D空間で、機械による加工の影響を計算し、ワーク100を変形させる。すなわち、シミュレータ210が複数の工程からなるワークの加工処理のシミュレーションを実行することは、仮想的な制御装置に、加工プログラムを実行させることと、仮想的な制御装置によって制御された1つ以上の仮想的な機械により、ワークを加工することとを含む。また、シミュレータ210は、シミュレーション内でタスクを実行中に、ワークの形状と、変数情報とを更新し、これらの履歴情報をメモリ202および/またはストレージ203に保存する。
【0047】
<C.シミュレーションの手順>
次に、図3および図4を参照して、システム200によるシミュレーションの実行手順について説明する。なお、これ以降の説明では、一例として、ワーク100は金属板であり、ワーク100の加工は複数回の折り曲げ加工であるものとする。
【0048】
図3は、ワーク100の加工処理の各工程の一例を示す図である。図3を参照して、金属板の加工を例にワークの加工処理の流れについて説明する。図3に示される加工処理は、第1の工程310と、第2の工程320とを含む。また、第1の工程310は、第1のタスク311と、第2のタスク312とを含む。さらに、第2の工程320は、第1のタスク321と、第2のタスク322とを含む。
【0049】
本明細書において、「タスク」は、各工程内での加工処理である。各工程は、関連する任意の数のタスクを含む。例えば、第1の工程310は、ワーク100の右側をL字型に折り曲げる加工である。第1の工程310は、ワーク100の右側をL字型に折り曲げる加工に関連するタスクである第1のタスク311と、第2のタスク312とを含む。同様に、第2の工程320は、ワーク100の左側をL字型に折り曲げる加工に関連するタスクである第1のタスク321と、第2のタスク322とを含む。
【0050】
制御装置は、インストールされた加工プログラムに基づいて、図3に示される加工を実行する。より具体的には、制御装置は、製造ライン10上の各機械またはその制御装置に信号を送信する。図3に示される加工処理を実行するための加工プログラムは、第1の工程310に関するコードと、第2の工程320に関するコードとを含む。また、第1の工程310に関するコードは、第1のタスク311に関するコードと、第2のタスク312に関するコードとを含む。同様に、第2の工程320に関するコードは、第1のタスク321に関するコードと、第2のタスク322に関するコードとを含む。
【0051】
各機械は、制御装置から受信した信号に基づいて動作することで、ワーク100を加工する。ワーク100は、初期状態300では1枚の金属板である。制御装置は、各機械を駆動させることで、第1の工程310において、2回の折り曲げ処理(第1のタスク311および第2のタスク312)を実行する。次に、制御装置は、各機械を駆動させることで、第2の工程320において、2回の折り曲げ処理(第1のタスク311および第2のタスク322)を実行する。その結果として、ワーク100は、両側がL字型に折り曲げられた金属部品になる。
【0052】
図4は、ワーク100の加工プログラムの編集画面の一例を示す図である。システム200は、加工プログラムの開発環境および加工プログラムの編集用の画面400を提供する。画面400は、一例として、エクスプローラー上に、各工程のプログラム情報410を表示する。また、画面400は、各工程のプログラムのソースコード420を表示する。ある実施の形態に従うと、画面400は、各工程のプログラム情報410から特定の工程のプログラムを選択する操作を受け付ける。画面400は、特定の工程のプログラムを選択する操作を受け付けたことに基づいて、選択された工程のプログラムのソースコード420を表示する。ワーク100の加工プログラムは、POU(Program Organization Unit)という単位で作成され得る。ソースコード420は、工程を管理するためのグローバル変数421と、工程内の各タスクを管理するためのローカル変数422とを含む。ユーザは、シミュレーションを実行し、シミュレーションの実行結果に基づいて、各工程のプログラムのソースコード420を編集することで、加工プログラムをデバッグし得る。
【0053】
<D.シミュレーションの各工程の保存および再生>
次に、図5および図6を参照して、シミュレーションの各工程の状態情報を保存する方法と、シミュレーションの一部分を再生する方法について説明する。なお、ワーク100は、金属板であり、図3に示される加工を施されるものとする。
【0054】
図5は、各工程の保存処理を含むシミュレーションプログラムの一例を示す図である。図5に示されるシミュレーションのソースコードは、加工処理の各工程を実行し、かつ、各工程の状態情報を保存するためのソースコードである。
【0055】
システム200は、シミュレーションを実行およびシミュレーションの状態情報を保存するためのプログラムの編集用の画面500を提供する。画面500は、一例として、エクスプローラーと、シミュレーションのソースコードとを表示する。エクスプローラーは、シミュレーションの各項目等を含む。ある実施の形態に従うと、画面500は、エクスプローラーから特定のシミュレーションのソースコードを選択する操作を受け付ける。画面500は、特定のシミュレーションのソースコードを選択する操作を受け付けたことに基づいて、選択されたプログラムのソースコードを表示する。
【0056】
シミュレーションのソースコードは、メソッド「StartSaveForm()」と、メソッド「ExecuteProcess()」と、メソッド「EndSaveForm()」とを備える。これらは、独立したメソッドとして定義されてもよいし、クラスのメソッドとして定義されてもよい。これらのメソッドは、基本的にセットで使用される。図5の例では、各メソッドは、クラスのメソッドとして定義されている。
【0057】
StartSaveForm()は、状態情報の保存を開始するメソッドである。StartSaveForm()の引数は、例えば、加工プログラム名、工程名、または、工程名およびタスク名である。StartSaveForm()が実行されると、シミュレータ210は、シミュレーションの状態情報の保存処理を開始する。シミュレーションの状態情報は、3Dオブジェクトであるワーク100の形状と、加工プログラムに渡されるグローバル変数421の値と、ローカル変数422の値とを含む。
【0058】
ExecuteProcess()は、加工プログラムを実行するメソッドである。ExecuteProcess ()の引数は、例えば、加工プログラム名、工程名、または、工程名およびタスク名である。ExecuteProcess()が実行されると、シミュレーション内部で、仮想的な制御装置が、ExecuteProcess ()の引数で指定された加工プログラムを実行する。仮想的な制御装置が加工プログラムを実行すると、ワーク100の形状、グローバル変数421の値およびローカル変数422の値は、変化することがある。StartSaveForm()が事前に実行されている場合、シミュレータ210は、ワーク100の形状、グローバル変数421の値およびローカル変数422の値の変化の履歴を保存する。
【0059】
EndSaveForm()は、状態情報の保存を終了するメソッドである。EndSaveForm()の引数は、例えば、加工プログラム名、工程名、または、工程名およびタスク名である。EndSaveForm()が実行されると、シミュレータ210は、シミュレーションの状態情報の履歴の保存処理を完了する。ある実施の形態に従うと、シミュレータ210は、EndSaveForm()が実行されると、シミュレーションの状態情報の履歴をストレージ203に格納する。
【0060】
図5におけるコード510は、加工プログラムの「工程A」のシミュレーションをタスク単位で実行し、かつ、シミュレーションの状態情報を保存するする処理である。より具体的には、加工プログラムの「工程A」は、タスク「初期処理、折り曲げ処理A、折り曲げ処理B」を含む。
【0061】
コード510は、「StartSaveForm("工程A-初期処理")」、「ExecuteProcess ("工程A-初期処理")」および「EndSaveForm("工程A-初期処理")」を含む。これらのコードは、加工プログラムの「工程A」のタスク「初期処理」の実行と、タスク「初期処理」の実行時のシミュレーションの状態情報を保存する処理とを示す。「EndSaveForm("工程A-初期処理")」が実行されると、「工程A」のタスク「初期処理」の実行直後の状態情報「ワーク100の形状、グローバル変数の値、ローカル変数の値」が保存される。そのため、シミュレータ210は、これらの状態情報を呼び出すことで、「工程A」のタスク「初期処理」の実行が完了した状態からシミュレーションを再開し得る。
【0062】
コード520は、「StartSaveForm("工程A-折り曲げ処理A")」、「ExecuteProcess ("工程A-折り曲げ処理A")」および「EndSaveForm("工程A-折り曲げ処理A")」を含む。これらのコードは、加工プログラムの「工程A」のタスク「折り曲げ処理A」の実行と、タスク「折り曲げ処理A」の実行時のシミュレーションの状態情報を保存する処理を示す。「EndSaveForm("工程A-折り曲げ処理A")」が実行されると、「工程A」のタスク「工程A-折り曲げ処理A」の実行直後の状態情報「ワーク100の形状、グローバル変数の値、ローカル変数の値」が保存される。そのため、シミュレータ210は、これらの状態情報を呼び出すことで、「工程A」のタスク「工程A-折り曲げ処理A」の実行が完了した状態からシミュレーションを再開し得る。
【0063】
コード530は、「StartSaveForm("工程A-折り曲げ処理B")」、「ExecuteProcess("工程A-折り曲げ処理B")」および「EndSaveForm("工程A-折り曲げ処理B")」を含む。これらのコードは、加工プログラムの「工程A」のタスク「折り曲げ処理B」の実行と、タスク「折り曲げ処理B」の実行時のシミュレーションの状態情報を保存する処理を示す。「EndSaveForm("工程A-折り曲げ処理B")」が実行されると、「工程A」のタスク「工程A-折り曲げ処理B」の実行直後の状態情報「ワーク100の形状、グローバル変数の値、ローカル変数の値」が保存される。そのため、シミュレータ210は、これらの状態情報を呼び出すことで、「工程A」のタスク「工程A-折り曲げ処理B」の実行が完了した状態からシミュレーションを再開し得る。
【0064】
コード540は、「工程B」の各タスクを実行し、かつ、シミュレーションの状態を保存する処理に関する。コード540が実行されると、仮想的な制御装置は、工程Bの各タスクを実行する。また、シミュレータ210は、工程Bの各タスクの実行直後の状態情報「ワーク100の形状、グローバル変数の値、ローカル変数の値」をストレージ203に保存する。
【0065】
ある実施の形態に従うと、シミュレータ210は、StartSaveForm()およびEndSaveForm()が実行されたことに基づいて、タスク内の作業履歴を全て記録する。これにより、シミュレータ210は、ある工程のあるタスクの実行が完了した状態からだけではなく、例えば、ある工程のあるタスクがN%(Nは任意の整数)完了した時点からシミュレーションを再開し得る。
【0066】
図6は、指定された工程の再生処理を含むシミュレーションプログラムの一例を示す図である。図6を参照して、シミュレータ210が、シミュレーションの状態情報を参照して、シミュレーションの一部を実行する手順について説明する。
【0067】
システム200は、シミュレーションの状態を参照して、シミュレーションの一部を実行するための画面600を提供する。画面600は、一例として、エクスプローラーと、シミュレーションのソースコードとを表示する。エクスプローラーは、シミュレーションの各項目等を含む。ある実施の形態に従うと、画面600は、エクスプローラーから特定のシミュレーションのソースコードを選択する操作を受け付ける。画面600は、特定のシミュレーションのソースコードを選択する操作を受け付けたことに基づいて、選択されたプログラムのソースコードを表示する。
【0068】
シミュレーションのソースコードは、メソッド「LoadSaveForm()」と、メソッド「StartSaveForm()」と、メソッド「StartSaveForm()」と、メソッド「EndSaveForm()」とを備える。これらは、独立したメソッドとして定義されてもよいし、クラスのメソッドとして定義されてもよい。これはらのメソッドは、基本的にセットで使用される。図6の例では、各メソッドは、クラスのメソッドとして定義されている。
【0069】
LoadSaveForm()は、状態を再現するメソッドである。LoadSaveForm()の引数は、例えば、加工プログラム名、工程名、または、工程名およびタスク名である。LoadSaveForm()が実行されると、シミュレータ210は、シミュレーションの状態を再現する。シミュレータ210は、引数で指定されたタスクの開始時点のシミュレーションの状態を再現する。一例として、LoadSaveForm()の引数が「工程A-折り曲げ処理A」である場合、シミュレータ210は、直前のタスク「工程A-初期処理」が完了した時点の状態情報「ワーク100の形状、グローバル変数の値、ローカル変数の値」を呼び出す。そして、シミュレータ210は、3D空間でワーク100の形状を呼び出した形状に変形させ、グローバル変数の値、ローカル変数の値を加工プログラムに読み込ませる。こうすることで、シミュレータ210は、指定された任意の工程またはタスクからシミュレーションを実行し得る。
【0070】
なお、LoadSaveForm()により途中から実行したシミュレーションにおける状態情報「ワーク100の形状、グローバル変数の値、ローカル変数の値」を保存するため、コード610のように、StartSaveForm()、StartSaveForm()およびEndSaveForm()は、LoadSaveForm()とセットで使用されてもよい。
【0071】
ある実施の形態に従うと、LoadSaveForm()は、引数として、「工程名」または「工程名およびタスク名」と、進捗率とを含む。例えば、引数が、タスク「工程A-折り曲げ処理A」と、進捗率「50」である場合、シミュレータ210は、タスク「工程A-折り曲げ処理A」の進捗が50%の状態を再現する。このように、シミュレータ210は、タスクの途中からでもシミュレーションを実行することができる。
【0072】
このように、シミュレータ210は、1つの工程内の1つのタスクを指定する実行コード(例えば、LoadSaveForm(工程A-折り曲げ処理A))の入力を受け付けた場合、制御装置に加工プログラムを指定されたタスクから実行させる。なお、シミュレータ210は、1つの工程を指定する実行コード(例えば、LoadSaveForm(工程A))の入力を受け付けた場合、制御装置に加工プログラムを指定された工程の先頭のタスクから実行させる。
【0073】
また、ある実施の形態に従うと、システム200は、1つの装置(シミュレーション装置)として実現される。また、他の実施の形態に従うと、システム200は、制御装置と一体型で実現される。さらに、他の実施の形態に従うと、システム200は、クラウド環境で動作する、仮想的なマシンまたはソフトウェアとして実現される。
【0074】
以上説明した通り、本実施の形態に従うシステム200およびシミュレータ210は、シミュレーションの状態情報を保存する機能を備える。シミュレーションの状態情報は、ワーク100の形状と、加工プログラムのグローバル変数の値と、加工プログラムのローカル変数の値とを含む。また、システム200およびシミュレータ210は、保存したシミュレーションの状態情報を参照して、シミュレーションの途中の状態を再現し、シミュレーションの一部を実行する機能を備える。これにより、ユーザは、加工プログラムをデバッグする際に、加工プログラムの全てのコードを実行する必要はなくなる。すなわち、ユーザは、修正した一部のコードの実行結果のみをシミュレータ210で確認し得る。
【0075】
<E.付記>
以上のように、本実施の形態は以下のような開示を含む。
[構成1]
シミュレータ(210)を格納するストレージ(203)と、
前記シミュレータ(210)を実行するプロセッサ(201)とを備え、
前記プロセッサ(201)は、
複数の工程からなるワーク(100)の加工処理のシミュレーションを実行し、
前記シミュレーションの実行中に、前記シミュレーションの状態情報を保存し、
前記シミュレーションの実行後に、前記複数の工程のうちの1つの工程を指定する実行コードの入力を受け付けたことに基づいて、前記状態情報を参照し、指定された前記1つの工程から前記ワーク(100)の加工処理を実行する、シミュレーションシステム(200)。
[構成2]
前記状態情報は、前記シミュレーション中の前記ワーク(100)の形状と、前記ワークの加工プログラムの変数情報とを含み、
前記変数情報は、工程を識別する情報と、各工程内で実行されるタスクの状態を管理する情報とを含む、構成1に記載のシミュレーションシステム(200)。
[構成3]
前記複数の工程は、第1の工程と、前記第1の工程の次に実行される第2の工程とを含み、
前記複数の工程のうちの前記1つの工程を指定する前記実行コードの入力を受け付けたことに基づいて、指定された前記1つの工程から前記ワーク(100)の加工処理を実行することは、
前記第2の工程を指定する前記実行コードの入力を受け付けたことに基づいて、前記第1の工程の完了直後の前記ワーク(100)の形状を再現することと、
前記ワークの加工プログラムに、前記第2の工程で使用される前記変数情報を渡すことを含む、構成2に記載のシミュレーションシステム(200)。
[構成4]
前記ワーク(100)の前記複数の工程からなる前記加工処理の前記シミュレーションを実行することは、
仮想的な制御装置に、前記ワークの加工プログラムを実行させることと、
前記仮想的な制御装置によって制御された1つ以上の仮想的な機械により、前記ワーク(100)を加工することとを含み、
前記シミュレーションの実行中に、前記シミュレーションの状態情報を保存することは、前記タスクを実行中に、前記ワーク(100)の形状と、前記変数情報とを更新することを含む、構成2に記載のシミュレーションシステム(200)。
[構成5]
前記実行コードは、前記ワークの加工プログラムとは異なる、テキストベースのプログラムコードまたはグラフィカルプログラムのコードである、構成2に記載のシミュレーションシステム(200)。
[構成6]
前記複数の工程のうちの前記1つの工程を指定する前記実行コードの入力を受け付けたことに基づいて、指定された前記1つの工程から前記ワーク(100)の加工処理を実行することは、
前記1つの工程内の1つのタスクを指定する前記実行コードの入力を受け付けることと、
前記1つのタスクを指定されたことに基づいて、前記ワークの加工プログラムを、指定された前記1つのタスクから実行することとを含む、構成2~5のいずれかに記載のシミュレーションシステム(200)。
[構成7]
コンピュータによって実行されるシミュレーション方法であって、
複数の工程からなるワーク(100)の加工処理のシミュレーションを実行するステップと、
前記シミュレーションの実行中に、前記シミュレーションの状態情報を保存するステップと、
前記シミュレーションの実行後に、前記複数の工程のうちの1つの工程を指定する実行コードの入力を受け付けたことに基づいて、前記状態情報を参照し、指定された前記1つの工程から前記ワーク(100)の加工処理を実行するステップとを含む、シミュレーション方法。
【0076】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内で全ての変更が含まれることが意図される。また、実施の形態および各変形例において説明された開示内容は、可能な限り、単独でも、組合わせても、実施することが意図される。
【符号の説明】
【0077】
10 製造ライン、100 ワーク、200 システム、201 プロセッサ、202 メモリ、203 ストレージ、204 外部機器IF、205 入力IF、206 出力IF、207 通信IF、208 バス、210 シミュレータ、300 初期状態、310 第1の工程、311,321 第1のタスク、312,322 第2のタスク、320 第2の工程、400,500,600 画面、410 プログラム情報、420 ソースコード、421 グローバル変数、422 ローカル変数、510,520,530,540,610 コード。
図1
図2
図3
図4
図5
図6