(57)【特許請求の範囲】
【請求項１】
各加工ポイントで一連の作業を繰り返すロボットであって、
前記一連の作業で各加工ポイントに対して本作業を実行する作業ツールと、
前記一連の作業で前記作業ツールを移動させる移動手段と、
前記作業ツールと前記移動手段を制御するコントローラと、
前記加工ポイントごとの前記一連の作業を括った構造化ポイントブロックを配列した制御データを記憶する記憶手段と、
前記構造化ポイントブロック単位で前記制御データを連続実行して一旦停止するステップオーバーを実行するデバッガと、
を備え、
前記一連の作業は、
前記作業ツールによる本作業、当該本作業前後の事前作業と事後作業、及び前記本作業のための複数ポイントへの位置取りを含んで成り、
前記構造化ポイントブロックは、
前記一連の作業に含まれる作業と移動の内容を示すデータが記録されていること、
を特徴とするロボット。
【請求項２】
前記構造化ポイントブロックは、
一個の前記一連の作業の過程で位置取りする全てのポイントと其のポイントへの移動前、移動中又は移動後の作業の内容を示すデータである各ポイントステートメントを配列して成り、
前記デバッガは、
一個の前記構造化ポイントブロックに含まれるポイントステートメントの全てを連続実行して、前記制御データの連続実行を一旦停止すること、
を特徴とする請求項１記載のロボット。
【請求項３】
前記構造化ポイントブロックは、
一個の前記一連の作業の過程で位置取りする全てのポイントを示すデータである各ポイントステートメントと、
一個の前記一連の作業の過程で移動前、移動中又は移動後に行う全ての作業を示すデータである各作業ステートメントと、
を配列して成り、
前記デバッガは、
一個の前記構造化ポイントブロックに含まれるポイントステートメント及び作業ステートメントの全てを連続実行して、前記制御データの連続実行を一旦停止すること、
を特徴とする請求項１記載のロボット。
【請求項４】
前記構造化ポイントブロックは、
ブレークポイント情報が記録されて成り、
前記デバッガは、
前記ブレークポイント情報を有する前記構造化ポイントブロックの手前まで全ての前記構造化ポイントブロックを連続実行して一旦停止すること、
を特徴とする請求項１乃至３の何れかに記載のロボット。
【請求項５】
前記記憶手段は、
特定の前記構造化ポイントブロックを示すブレークポイント情報を記録したテーブルを記憶し、
前記デバッガは、
前記ブレークポイント情報が示す前記構造化ポイントブロックの手前まで全ての前記構造化ポイントブロックを連続実行して一旦停止すること、
を特徴とする請求項１乃至３の何れかに記載のロボット。
【請求項６】
ユーザの操作を受け付ける操作手段を備え、
前記デバッガは、
前記操作手段を用いたステップオーバー実行の選択に応じて、前記構造化ポイントブロック単位で前記制御データを連続実行して一旦停止するステップオーバー実行手段と、
前記操作手段を用いたステップイン実行の選択に応じて、前記構造化ポイントブロックの内部先頭に実行位置を合わせて一旦停止し、前記操作手段による再開指示の都度、１ステートメントずつ断続実行して一旦停止するステップイン実行手段と、
を備えること、
を特徴とする請求項１乃至５の何れかに記載のロボット。
【請求項７】
前記デバッガは、
前記操作手段を用いた前記ステップイン実行の選択後のステップアウト実行の選択に応じて、前記構造化ポイントブロックの残りのステートメントを全て連続実行し、前記構造化ポイントブロックからステップアウトして一旦停止するステップアウト実行手段を備えること、
を特徴とする請求項６記載のロボット。
【請求項８】
前記制御データは、
前記構造化ポイントブロックを入れ子にして記録して成り、
前記デバッガは、
入れ子にされた前記構造化ポイントブロック内を全て連続実行する入れ子ステップオーバー実行手段と、
入れ子にされた前記構造化ポイントブロックの内部を１ステートメントずつ断続実行する入れ子ステップイン実行手段と、
を備えること、
を特徴とする請求項１乃至７の何れかに記載のロボット。
【請求項９】
前記デバッガは、
入れ子の前記構造化ポイントブロックの残りのステートメントを全て連続実行し、前記入れ子の構造化ポイントブロックからステップアウトして一旦停止する入れ子ステップアウト実行手段を備えること、
を特徴とする請求項８記載のロボット。
【請求項１０】
前記制御データの構造をツリー表示する表示手段を更に備えること、
を特徴とする請求項１乃至９の何れかに記載のロボット。
【請求項１１】
全ての前記構造化ポイントブロックは、
最初の処理の内容を示す命令群又は其のコール命令によりなる単数又は複数行の最初ステートメントと、
最後の処理の内容を示す命令群又は其のコール命令によりなる単数又は複数行の最後ステートメントと、
を記録し、
前記コントローラは、
前記最初ステートメントと前記最後ステートメントを無視し、
前記デバッガは、
前記最初ステートメントと前記最後ステートメントを実行すること、
を特徴とする請求項１乃至１０の何れかに記載のロボット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットの制御データのデバッグに関する。
【背景技術】
【０００２】
ワークに対するネジ締め、溶接、塗装、ワークの搬送、ワークへの部品の取り付け、半田付け等の各種産業用ロボットは、例えば垂直多関節型の移動手段を有し、コンピュータによる制御プログラムの実行により、移動手段に装備された作業ツールを所定ポイントに移動させ、作業ツールを駆動する。
【０００３】
制御プログラムは、制御文、手続き、機能といった命令を主体とした構文を有するＳＬＩＭ（Ｓｔａｎｄａｒｄ  Ｌａｎｇｕａｇｅ  ｆｏｒ  Ｉｎｄｕｓｔｒｉａｌ  Ｍａｎｉｐｕｌａｔｏｒｓ）やスーパーＳＥＬ言語等のロボット言語で記述される。また、ポイント番号を区切りとし、ポイント番号以下に、作業ツールを位置させるポイントに関する情報を付加した制御データを参照してロボットを制御するポイント主体のロボット言語も提供されている（例えば、特許文献１乃至３参照。）。
【０００４】
ポイント主体のロボット言語では、作業ツールの本来機能を発揮させる本作業の開始点、本作業の終了点、開始点へ作業ツールを位置させるための経由点、及び開始点から終了点への経由点の各々にポイント番号を振り、これらポイントに関する情報を制御データに記録しておく。
【０００５】
ポイントに関する情報は、ポイントの種類、ポイントへの移動方法、ポイントの座標、ポイントに移動する前の作業内容、ポイントに移動中の作業内容、ポイントでの作業内容等を示し、コンピュータは、これら情報を参照して予め記憶された命令群を実行していく。すなわち、ポイント主体のロボット言語では、ポイントの各々が言わばサブルーチンとなり、制御データに配列されていく。
【０００６】
制御プログラムは、何れの言語で記述されようと、キーボードやＧＵＩを用いたコード入力や、ティーチングによるポイントや姿勢の記録を併用して作成される。プログラミングの過程には、制御プログラムを区切って断続的に実行しながら、ロボットの動作を区切り毎に確認し、区切りごとに制御データのバグ洗い出しと修正を行うデバッグ作業が含まれる。
【０００７】
このデバッグ作業では、１ステップずつ実行するステップ実行が知られている。命令を１行ずつ確認することで、バグをつぶさに特定できる。ファンクションブロックと呼ばれるサブルーチン内を連続実行するステップオーバー実行も知られている（例えば、特許文献２参照）。ファンクションブロックは既に完成されていることが多く、ファンクションブロック内をステップ実行し、停止の度にユーザが再開指示することは、極めて煩雑で非効率だからである。
【０００８】
ファンクションブロックは、ＩＥＣ−６１１３１−３で規定されるプログラムの構成要素の一つであり、複数機能の組み合わせにより実現する制御を一つの命令で呼び出し可能なサブルーチンである。ファンクションブロックについて、一塊にする機能の種類は規定されておらず、ファンクションブロックは、一般的には、プログラムの開発効率や見易さの観点から、使用頻度の高いコードを流用できるように、また複雑なプログラムを関数化することで簡素にするために利用される。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特許４２２２８２８号公報
【特許文献２】特開平０７−６４６１９号公報
【特許文献３】特開平０５−２５７５２２号公報
【特許文献４】特開２００７−１０２３８５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
デバッグ作業は極力効率的であることが望ましい。ロボットに注目すると、作業ツールが加工ポイントを変えて本作業を繰り返すことが多い。そのため、デバッグ作業におけるロボットの動作確認は、経由点を経由して物理的な接触を避けながら開始点に位置し、開始点から本作業をしながら終了点へ移動し、終了点で事後的な処理を行うまでの一連の作業単位で行ったほうが効率的な場合がある。
【００１１】
しかしながら、ポイント主体の構文を記録した制御データを参照する制御形式の場合、従来のデバッグ動作では、複数の各経由点で一旦動作を停止し、開始点に位置して一旦動作を停止し、終了点に位置して一旦動作を停止し、各停止の間はユーザによる再開指示を待つことになる。要するに、１箇所の加工ポイントに対する一連の作業が細切れになる。
【００１２】
ロボットに一連の作業を連続動作させるためには、ユーザ側で制御データにブレークポイントを設定することが考えられる。しかし、プログラミング中に予めデバッグを考えてブレークポイントを設定していくのは手間であり、効率的とは言えない。また、一応のプログラミング終了後に制御データにブレークポイントを設定していくのは現実的でない。
【００１３】
本発明は、上記のような従来技術の問題点を解決するために提案されたもので、ポイント主体の構文を記録した制御データを参照する制御プログラムのデバッグを効率化したロボットを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記の目的を達成するために、本発明に係るロボットは、各加工ポイントで一連の作業を繰り返すロボットであって、前記一連の作業で各加工ポイントに対して本作業を実行する作業ツールと、前記一連の作業で前記作業ツールを移動させる移動手段と、前記作業ツールと前記移動手段を制御するコントローラと、前記加工ポイントごとの前記一連の作業を括った構造化ポイントブロックを配列した制御データを記憶する記憶手段と、前記構造化ポイントブロック単位で前記制御データを連続実行して一旦停止するステップオーバーを実行するデバッガと、を備え、前記一連の作業は、前記作業ツールによる本作業、当該本作業前後の事前作業と事後作業、及び前記本作業のための複数ポイントへの位置取りを含んで成り、前記構造化ポイントブロックは、前記一連の作業に含まれる作業と移動の内容を示すデータが記録されていること、を特徴とする。
【００１６】
前記構造化ポイントブロックは、一個の前記一連の作業の過程で位置取りする全てのポイントと其のポイントへの移動前、移動中又は移動後の作業の内容を示すデータである各ポイントステートメントを配列して成り、前記デバッガは、一個の前記構造化ポイントブロックに含まれるポイントステートメントの全てを連続実行して、前記制御データの連続実行を一旦停止するようにしてもよい。
【００１７】
前記構造化ポイントブロックは、一個の前記一連の作業の過程で位置取りする全てのポイントを示すデータである各ポイントステートメントと、一個の前記一連の作業の過程で移動前、移動中又は移動後に行う全ての作業を示すデータである各作業ステートメントと、を配列して成り、前記デバッガは、一個の前記構造化ポイントブロックに含まれるポイントステートメント及び作業ステートメントの全てを連続実行して、前記制御データの連続実行を一旦停止するようにしてもよい。
【００１８】
前記構造化ポイントブロックは、ブレークポイント情報が記録されて成り、前記デバッガは、前記ブレークポイント情報を有する前記構造化ポイントブロックの手前まで全ての前記構造化ポイントブロックを連続実行して一旦停止するようにしてもよい。
【００１９】
前記記憶手段は、特定の前記構造化ポイントブロックを示すブレークポイント情報を記録したテーブルを記憶し、前記デバッガは、前記ブレークポイント情報が示す前記構造化ポイントブロックの手前まで全ての前記構造化ポイントブロックを連続実行して一旦停止するようにしてもよい。
【００２０】
ユーザの操作を受け付ける操作手段を備え、前記デバッガは、前記操作手段を用いたステップオーバー実行の選択に応じて、前記構造化ポイントブロック単位で前記制御データを連続実行して一旦停止するステップオーバー実行手段と、前記操作手段を用いたステップイン実行の選択に応じて、前記構造化ポイントブロックの内部先頭に実行位置を合わせて一旦停止し、前記操作手段による再開指示の都度、１ステートメントずつ断続実行して一旦停止するステップイン実行手段と、を備えるようにしてもよい。
【００２１】
前記デバッガは、前記操作手段を用いた前記ステップイン実行の選択後のステップアウト実行の選択に応じて、前記構造化ポイントブロックの残りのステートメントを全て連続実行し、前記構造化ポイントブロックからステップアウトして一旦停止するステップアウト実行手段を備えるようにしてもよい。
【００２２】
前記制御データは、前記構造化ポイントブロックを入れ子にして記録して成り、前記デバッガは、入れ子にされた前記構造化ポイントブロック内を全て連続実行する入れ子ステップオーバー実行手段と、入れ子にされた前記構造化ポイントブロックの内部を１ステートメントずつ断続実行する入れ子ステップイン実行手段と、を備えるようにしてもよい。
【００２３】
前記デバッガは、入れ子の前記構造化ポイントブロックの残りのステートメントを全て連続実行し、前記入れ子の構造化ポイントブロックからステップアウトして一旦停止する入れ子ステップアウト実行手段を備えるようにしてもよい。
【００２４】
前記制御データの構造をツリー表示する表示手段を更に備えるようにしてもよい。
【００２５】
全ての前記構造化ポイントブロックは、最初の処理の内容を示す命令群又は其のコール命令によりなる単数又は複数行の最初ステートメントと、最後の処理の内容を示す命令群又は其のコール命令によりなる単数又は複数行の最後ステートメントと、を記録し、前記コントローラは、前記最初ステートメントと前記最後ステートメントを無視し、前記デバッガは、前記最初ステートメントと前記最後ステートメントを実行するようにしてもよい。
【発明の効果】
【００２６】
本発明によれば、各加工ポイントの一連の作業ごとにロボットが連続動作して一旦停止するので、デバッグの効率性が向上する。
【図面の簡単な説明】
【００２７】
【図１】ロボットの全体構成を示す模式図である。
【図２】コントローラの構成を示すブロック図である。
【図３】加工ポイントへの一連の作業を示す模式図である。
【図４】第１の実施形態に係る制御データを示す模式図である。
【図５】プログラミングモードでのコントローラの構成を示すブロック図である。
【図６】第１の実施形態に係るデバッガの制御動作を示すフローチャートである。
【図７】制御データの第１の変形例を示す模式図である。
【図８】制御データの第２の変形例を示す模式図である。
【図９】第２の変形例の制御データに基づくデバッガの制御動作を示すフローチャートである。
【図１０】制御データの第３の変形例を示す模式図である。
【図１１】第２の実施形態に係る制御データを示す模式図である。
【図１２】第２の実施形態に係るデバッガの構成を示すブロック図である。
【図１３】第２の実施形態に係るデバッガの制御動作を示すフローチャートである。
【図１４】第３の実施形態に係るデバッガが表示部に表示させる操作画面を示す模式図である。
【図１５】第３の実施形態に係り、ステップイン実行ボタンが押下された場合のデバッガの制御動作を示すフローチャートである。
【図１６】第３の実施形態に係り、ステップオーバー実行ボタンが押下された場合のデバッガの制御動作を示すフローチャートである。
【図１７】第３の実施形態に係り、ステップアウト実行ボタンが押下された場合のデバッガの制御動作を示すフローチャートである。
【図１８】制御データの第４の変形例を示す模式図である。
【図１９】第４の実施形態に係り、デバッガが表示部に表示させる操作画面を示す模式図である。
【図２０】第５の実施形態に係る制御データの構造化ポイントブロックを示す模式図である。
【図２１】第５の実施形態に係るデバッガの制御動作を示すフローチャートである。
【発明を実施するための形態】
【００２８】
（第１の実施形態）
(ロボット構成)
以下、本発明に係るロボット１の第１の実施形態について図面を参照しつつ詳細に説明する。図１は、本実施形態のロボット１の全体構成図である。図１に示すように、ロボット１は移動手段２とコントローラ３を備える。移動手段２には作業ツール４が装着されている。このロボット１は、移動手段２及び作業ツール４を制御して、所望位置に作業ツール４を位置させて作業させる。作業ツール４は、例えば電動のネジ締めドライバ、溶接機、塗装ガン、ハンドラ等である。
【００２９】
移動手段２は、作業ツール４をＸ軸方向、Ｙ軸方向及びＺ軸方向に移動させ、指定されたポイントに作業ツール４を位置させる。Ｘ軸方向は、水平面と平行な軸方向である。Ｙ軸方向は、水平面と平行でＸ軸と直交する他軸方向である。Ｚ軸方向は高さ方向である。この移動手段２は、作業ツール４をＸ軸方向に移動させるＸリニアスライダ２１、作業ツール４をＹ軸方向に移動させるＹリニアスライダ２２、作業ツール４をＺ軸方向に移動させるＺリニアスライダ２３を備える。
【００３０】
Ｘリニアスライダ２１は、Ｘ軸方向に延設されたレール上にＹリニアスライダ２２を摺設し、Ｘ軸方向に走行する無端ベルトにＹリニアスライダ２２を直交させて固定してなり、無端ベルトをＸ軸モータで走行させ、Ｙリニアスライダ２２をＸ軸に沿って移動させる。
【００３１】
Ｙリニアスライダ２２は、Ｙ軸方向に延設されたレール上にＺリニアスライダ２３を摺設し、Ｙ軸方向に走行する無端ベルトにＺリニアスライダ２３を固定してなり、無端ベルトをＹ軸モータで走行させ、Ｚリニアスライダ２３をＹ軸に沿って移動させる。Ｘリニアスライダ２１及びＹリニアスライダ２２の伝動機構としては、無端ベルトの他、シリンダ、リードスクリュー等の各種アクチュエータを挙げることができる。
【００３２】
Ｚリニアスライダ２３は、Ｚ軸に沿った軸を有するアームを備え、このアームの先端に作業ツール４が装着される。このＺリニアスライダ２３は、例えばラックアンドピニオン機構を有し、ラックをＺ軸方向に延設し、当該ラックにアームを固定して構成される。Ｚ軸モータによりピニオンを回転させることで、アームをＺ軸方向に移動させる。このＺリニアスライダ２３により作業ツール４は、Ｚ軸方向を移動する。
【００３３】
コントローラ３は、図２に示すように、いわゆる制御プログラムの構成要素である制御データ６に従って演算処理及び周辺機器へ指令信号を出力するＣＰＵ３１と、プログラムを記憶するＨＤＤ等のストレージ３２と、プログラムが展開され、ＣＰＵ３１の演算結果が一時記憶されるメモリ３３と、周辺機器で構成される所謂コンピュータである。周辺機器は、ＣＰＵ３１が送出する指令信号に従って各モータに電力パルスを供給するモータドライバ３４、液晶ディスプレイ等の表示部３５２、並びにマウス、キーボード及びティーチングペンダント３５１等の操作手段３５である。
【００３４】
このコントローラ３は、ストレージ３２の制御データ６を参照したプログラム処理の結果として移動手段２と作業ツール４を制御する。図３に示すように、ロボット１は、コントローラ３の制御の結果、例えば、３点の経由点を経ながら、開始点へ移動する。この移動の前には移動前作業を行い、移動中も移動中作業を行う。開始点へ移動すると、開始点での開始点作業を行う。開始点作業が終了すると、本作業を開始しながら開始点から終了点へ移動する。終了点に移動すると、終了点での終了点作業を行う。
【００３５】
この例に示すように、ロボット１は、コントローラ３の制御の結果、加工ポイントに対する一連の作業を行い、加工ポイントを変えて新たに一連の作業を繰り返す。加工ポイントは、本作業が施される加工点である。一連の作業は、加工ポイントに対する本作業と、その本作業を完遂するための付随作業により成る。付随作業は、本作業の開始点への移動、本作業前後の事前作業及び事後作業を含む。
【００３６】
本作業は、作業ツール４の本来機能を発揮するネジ締め又は溶接等である。事前作業は、開始点への移動前の作業と移動中の作業、及び開始点での本作業前の作業である。移動は、物理的な障害を避けるための経由点を経ながら開始点への移動と、開始点から本作業の終了点への移動である。事後作業は、本作業終了後の終了点での作業である。
【００３７】
(制御データ構成)
図４は、制御データ６の全体構成を示す模式図である。制御データ６は各加工ポイントに対する一連の作業を記録している。この制御データ６は、複数の構造化ポイントブロック７を配列して成る。構造化ポイントブロック７は、１箇所の加工ポイントに対する一連の作業を一塊にして記録している。
【００３８】
一連の作業は、ポイント主体の構文で記録されている。すなわち、構造化ポイントブロック７は、１箇所の加工ポイントに対する一連の作業を表す全ポイントステートメント８を配列して成る。各ポイントステートメント８は、加工ポイントに本作業を完遂するために位置取りする必要のあるポイントごとに用意される情報である。このポイントステートメント８は、ポイント番号８１以下に、ポイント種別オプション８２と、ポイント座標８３とポイント速度８４を並べて成る。更に、ポイントステートメント８は、ポイント番号８１以下に、作業種別オプション８５と、作業番号８６を並べてなる。
【００３９】
ポイント番号８１は、ポイント主体の構文であることの宣言及び区切りを明示し、各ポイントステートメント８を区分けしている。ポイント種別オプション８２は、ポイントの種類と移動方法の組み合わせを示す。ポイントの種類は、経由点、本作業の開始点、及び本作業の終了点等である。移動方法は、ＰＴＰ移動、直線補間移動、補助点指定による円弧補間等である。経由点を示すポイント種別オプション８２の記録に対して、経由点を示す複数のポイント座標８３の記録が許可されている。
【００４０】
作業番号８６は、作業ツール４の作業内容を記述した命令群を示す識別子である。命令群は、ＳＬＩＭ（Ｓｔａｎｄａｒｄ  Ｌａｎｇｕａｇｅ  ｆｏｒ  Ｉｎｄｕｓｔｒｉａｌ  Ｍａｎｉｐｕｌａｔｏｒｓ）やスーパーＳＥＬ言語等のロボット言語により記述され、予めストレージ３２に記憶されている。作業種別オプション８５は、作業番号８６が示す作業の実施時期を示す。この作業種別オプション８５は、移動前作業、移動中作業、開始点作業、終了作業、又は本作業を示す。
【００４１】
例えばポイントステートメント８は、「＃１  ＣＰ開始点  Ｘ＝○○，Ｙ＝△△，Ｚ＝××  速度４０  移動中作業  作業番号１」である。コントローラ３は、＃１によって、ポイントステートメント８の区切りを識別し、＃１以下を参照して移動手段２を制御し、作業ツール４を「Ｘ＝○○，Ｙ＝△△，Ｚ＝××」のポイント座標８３で得られる座標へ、「速度４０」のポイント速度８４で得られる速度で、「ＣＰ開始点」のポイント種別オプション８２で得られる滑らかな円弧を描いた移動方法により、作業ツール４を位置させる。
【００４２】
また、コントローラ３は、「移動中作業」の作業種別オプション８５で得られる移動中に、「作業番号１」の作業番号８６が識別する命令群を実行し、作業番号１の作業をロボット１に行わせる。
【００４３】
このように、この制御データ６においては、ポイントステートメント８は、加工ポイントへの本作業の完遂のために位置取りされるポイントごとに記録されており、加工ポイントを直接指し示すものではない。一方、一連の作業を表す全ポイントステートメント８は、構造化ポイントブロック７で括られており、加工ポイントは、構造化ポイントブロック７によって明示的となっている。
【００４４】
コントローラ３は、この制御データ６に従って移動手段２及び作業ツール４を制御する運転モードと、制御データ６を編集するプログラミングモードを有する。プログラミングモードは、制御データ６に従ったロボット１の動作確認を行う実機デバッグモードを備える。
【００４５】
運転モードにおいて、コントローラ３は、制御データ６の全ポイントステートメント８を連続実行し、移動手段２及び作業ツール４を制御する。すなわち、コントローラ３は、先頭から次々に構造化ポイントブロック７を参照する。構造化ポイントブロック７の参照では、コントローラ３は、構造化ポイントブロック７内の各ポイントステートメント８を先頭から順に参照する。そして、ポイントステートメント８が示す制御を実行し、全ポイントステートメント８が示す制御の実行終了により、メインルーチンに戻る。メインルーチンに戻ると、次の構造化ポイントブロック７の参照を続けていく。
【００４６】
(デバッガ構成)
図５に示すように、プログラミングモードの場合、コントローラ３は、制御データ生成手段５１とデバッガ５２からなる。制御データ生成手段５１は、ティーチングペンダント３５１やマウスやキーボード等の操作手段３５への入力に従って、制御データ６内の各データを追加、削除、又は修正等し、制御データ６を編集する。
【００４７】
デバッガ５２は、制御データ６を区切って断続実行し、移動手段２と作業ツール４を断続動作させるプログラム断続実行手段である。デバッガ５２は、構造化ポイントブロック７を区切りの目安とし、構造化ポイントブロック７ごとにステップオーバー実行する。
【００４８】
図６は、デバッガ５２の制御動作を示すフローチャートである。図６に示すように、デバッガ５２は、制御データ６から次の構造化ポイントブロック７を参照する（ステップＳ０１）。構造化ポイントブロック７を参照すると、参照した構造化ポイントブロック７内の先頭から順にポイントステートメント８を実行する（ステップＳ０２）。未実行のポイントステートメント８がまだ存在すれば（ステップＳ０３，Ｎｏ）、ステップＳ０２に戻り、次のポイントステートメント８を実行する（ステップＳ０２）。
【００４９】
参照した構造化ポイントブロック７内の全ポイントステートメント８の実行が終了すると（ステップＳ０３，Ｙｅｓ）、制御データ６のメインルーチンに戻る（ステップＳ０４）。そして、次の構造化ポイントブロック７がまだ存在すれば（ステップＳ０５，Ｎｏ）、デバッガ５２は、制御データ６の実行を一旦停止する（ステップＳ０６）。
【００５０】
ユーザが操作手段３５を用いて実行再開を指示すると（ステップＳ０７，Ｙｅｓ）、デバッガ５２は、ステップＳ０１に戻り、未実行の次の構造化ポイントブロック７を参照する（ステップＳ０１）。構造化ポイントブロック７の全てを参照終了すると（ステップＳ０５，Ｙｅｓ）、デバッガ５２は、制御データ６を参照する動作確認の実行を終了する。
【００５１】
(作用効果)
このように、構造化ポイントブロック７を区切りの目安として断続的に制御データを実行するデバッガ５２により、ロボット１は、一連の作業ごとに動作し、一連の作業の終了ごとに一旦停止し、操作手段３５を用いたユーザによる再開指示を待って次の一連の作業を開始する。すなわち、ロボット１の制御データ６は、１箇所の加工ポイントに対する一連の作業を構成する全ポイントステートメント８が一個の構造化ポイントブロック７に纏められている。
【００５２】
従って、ステートメントのブロックをステップオーバー実行するデバッグ５２によって、ロボット１は、１箇所の加工ポイントに対する一連の作業単位で動作することになり、ユーザによるデバッグ５２の効率性が向上する。
【００５３】
また、制御データ６には、加工ポイントごとの構造化ポイントブロック７が並ぶ。ポイント主体の構文であると、加工ポイントを直接指し示さない経由点、開始点、終了点が並ぶことになり、これらポイントが何れの加工ポイントに関するポイントであるか把握しづらい。
【００５４】
しかし、加工ポイントごとの構造化ポイントブロック７の並びで制御データ６を構成することで、制御データ６が加工ポイントを主体として判読可能となり、ユーザによるデバッグの効率性は向上する。
【００５５】
（制御データ変形例１）
図７は、制御データ６に配列される構造化ポイントブロック７を示す模式図である。この制御データ６では、作業種別オプション８５と作業番号８６がポイントステートメント８から外に出され、一文の作業ステートメント９を形成している。この作業ステートメント９は、作業種別オプション９１と作業番号９２から成る。作業ステートメント９とポイントステートメント８は実行する順番で配列される。移動中の作業を構成する命令群は、移動中にシステムによって明示的又は暗黙的に繰り返される。
【００５６】
このように、構造化ポイントブロック７内がポイントステートメント８だけで構成されず、作業ステートメント９が混在していたとしても、構造化ポイントブロック７で括られる限りは、デバッグにおいて１箇所の加工ポイントに対応する一連の作業単位で連続実行できる。
【００５７】
（制御データ変形例２）
図８は、第２の変形例に係る制御データ６を示す模式図である。図８に示すように、構造化ポイントブロック７にはブレークポイント情報７１が付加可能となっている。ブレークポイント情報７１は、プログラミングモード中の操作手段３５を用いた制御データ６の作成及び編集操作によって書き込まれ、デバッグモードにおいて有効となる。
【００５８】
この制御データ６に従ったデバッグモードの動作は次の通りである。すなわち、図９に示すように、デバッガ５２は、制御データ６から未実行のうちの先頭の構造化ポイントブロック７を参照する（ステップＳ１１）。参照した構造化ポイントブロック７にブレークポイント情報７１があれば（ステップＳ１２，Ｙｅｓ）、制御データ６の実行を一旦停止する（ステップＳ１３）。
【００５９】
一方、ブレークポイント情報７１がなければ（ステップＳ１２，Ｎｏ）、参照した構造化ポイントブロック７から未実行のうちの先頭のポイントステートメント８又は作業ステートメント９を実行する（ステップＳ１４）。未実行のポイントステートメント８又は作業ステートメント９がまだ存在すれば（ステップＳ１５，Ｎｏ）、ステップＳ１４に戻り、次の未実行のうちの先頭のポイントステートメント８又は作業ステートメント９を実行する。
【００６０】
参照した構造化ポイントブロック７に含まれる全てのポイントステートメント８又は作業ステートメント９の実行が終了すると（ステップＳ１５，Ｙｅｓ）、メインルーチンに戻る（ステップＳ１６）。そして、未実行の構造化ポイントブロック７がまだ存在すれば（ステップＳ１７，Ｎｏ）、デバッガ５２は、ステップＳ１１に戻り、その構造化ポイントブロック７を参照し（ステップＳ１１）、ブレークポイント情報７１があれば（ステップＳ１２，Ｙｅｓ）、一旦停止する（ステップＳ１３）。
【００６１】
ステップＳ１３の一旦停止中、ユーザが操作手段３５を用いて実行再開を指示すると（ステップＳ１８，Ｙｅｓ）、デバッガ５２は、ステップＳ１４に戻り、参照した構造化ポイントブロック７を実行する。構造化ポイントブロック７の全てを実行終了すると（ステップＳ１７，Ｙｅｓ）、デバッガ５２は、制御データ６の実行を終了する。
【００６２】
このブレークポイント情報７１に依存した一旦停止の方法と構造化ポイントブロック７に依存した一旦停止の方法は、実機デバッグモードで操作手段３５を用いて選択される。
【００６３】
このように、デバッグ作業において、構造化ポイントブロック７単位の実行と設定されたブレークポイントまでの連続動作を選択的とすることで、デバッグ作業の段階に合わせて適切な実行方法を採ることができ、デバッグ作業が更に効率化する。
【００６４】
（制御データ変形例３）
図１０に示すように、制御データ６は、ブレークポイントテーブル７２を有している。このブレークポイントテーブル７２は、実行前に一旦停止する構造化ポイントブロック７を示すブレークポイント情報７１を記憶している。このブレークポイント情報７１は、例えば構造化ポイントブロック７の名称で表される。
【００６５】
デバッガ５２は、構造化ポイントブロック７を参照する前に、ブレークポイントテーブル７２を参照し、参照した構造化ポイントブロック７とブレークポイントテーブル７２に記憶されたブレークポイント情報７１が一致するか判定する。一致の場合には、参照する構造化ポイントブロック７を実行する前に一旦停止し、操作手段３５による再開指示を待って構造化ポイントブロック７の実行を開始する。
【００６６】
このように、ブレークポイント情報７１を制御データ６の本体とは別のテーブルに記録しておくことで、ブレークポイント情報７１の設置、置き換え、及び削除が容易となり、デバッグ作業の効率が更に向上する。すなわち、ブレークポイント情報７１の設置等のために、制御データ６の中身を判読する必要がなくなる。
【００６７】
（第２の実施形態）
次に第２の実施形態に係るロボットについて図面を参照しつつ詳細に説明する。第１の実施形態と同一構成及び同一機能については同一の符号を付して説明を省略する。
【００６８】
(制御データ構成)
図１１は、第２の実施形態に係る制御データ６の模式図である。この制御データ６は、各加工点に対する一連の作業を構成するポイントステートメント８を配列してなる。この制御データ６は、ポイントステートメント８を構造化ポイントブロック７で括るように、一連の作業ごとにポイントステートメント８の列を区切るものではない。
【００６９】
例えば、座標（Ｘ，Ｙ，Ｚ）＝（１００，１２０，５０）を開始点とする第１の一連の作業の各ポイントステートメント８と、座標（Ｘ，Ｙ，Ｚ）＝（１００，２４０，５０）を開始点とする第２の一連の作業の各ポイントステートメント８がポイント番号８１を付して連続的に並べられている。
【００７０】
第１の一連の作業は、ポイント番号１〜６であり、この制御データ６に従うと、作業ツール４は、２点の回避点を通りつつ、直線的に開始点へ移動し、開始点から２点の通過点を通りながら円弧状に終了点に移動し、この終了点の移動まで作業番号４で示される本作業を行う。
【００７１】
第２の一連の作業は、ポイント番号７〜１３であり、この制御データ６に従うと、作業ツール４は、第１の一連の作業の終了点から２点の回避点を通りつつ、直線的に開始点に移動し、開始点から３点の通過点を通りながら円弧状に終了点に移動し、この終了点の移動まで「作業番号４」で示される本作業を行う。
【００７２】
(デバッガ)
図１２に示すように、デバッガ５２は、主にストレージ３２により構成される区切りポイント情報記憶部５２ａを有し、先頭区切りポイント情報と後尾区切りポイント情報を予め記憶している。先頭区切りポイント情報と後尾区切りポイント情報は、一連の作業の最初と最後のポイントステートメント８の種類を示す。例えば、最初のポイントステートメント８は経由点列に関し、最後のポイントステートメント８は終了点に関する。
【００７３】
図１３に示すように、デバッガ５２は、次のポイントステートメント８の実行を終了すると（ステップＳ２１）、デバッガ５２は、区切りポイント情報記憶部５２ａに記憶されている後尾区切りポイント情報を参照して、更に次のポイントステートメント８が最後のポイントステートメント８であるか判断する（ステップＳ２２）。
【００７４】
後尾区切りポイント情報が示すポイントステートメント８であると（ステップＳ２２，Ｙｅｓ）、デバッガ５２は、このポイントステートメント８を実行して（ステップＳ２３）、一旦停止する（ステップＳ２４）。一方、後尾区切りポイント情報が示すポイントステートメント８でなければ（ステップＳ２２，Ｎｏ）、ステップＳ２１に戻り、順番にポイントステートメント８の連続実行を続けていく。
【００７５】
一旦停止の後（ステップＳ２４）、操作手段３５を用いた再開指示を待って（ステップＳ２５）、デバッガ５２は、区切りポイント情報記憶部５２ａに記憶されている先頭区切りポイント情報を参照して、更に次のポイントステートメント８が最初のポイントステートメント８であるか判断する（ステップＳ２６）。
【００７６】
先頭区切りポイント情報が示すポイントステートメント８であると（ステップＳ２６，Ｙｅｓ）、デバッガ５２は、ステップＳ２１に戻り、順番にポイントステートメント８の連続実行を続けていく。一方、先頭区切りポイント情報が示すポイントステートメント８でなければ（ステップＳ２６，Ｎｏ）、デバッガ５２は、ポイントステートメント８の１行ずつの断続的な実行に切り替えていく（ステップＳ２７）。
【００７７】
このように、構造化ポイントブロック７は、ユーザが判読可能にポイントステートメント８を括らなくとも暗黙的に構成することができ、デバッグ作業において一連の作業単位で連続実行させることが可能となる。そのため、プログラミングの許容度が高まる。
【００７８】
（第３の実施形態）
次に第３の実施形態に係るロボットについて図面を参照しつつ詳細に説明する。第１の実施形態と同一構成及び同一機能については同一の符号を付して説明を省略する。
【００７９】
(デバッガ)
このデバッガ５２は、操作手段３５を用いた操作に応じて、制御データ６をステップイン実行、ステップオーバー実行、又はステップアウト実行する。図１４は、第３の実施形態に係るロボットの動作確認を行う操作画面の模式図である。この操作画面には、ステップイン実行ボタン５３３とステップオーバー実行ボタン５３４とステップアウト実行ボタン５３５が表示されている。
【００８０】
デバッガ５２は、図１５に示すように、ステップイン実行ボタン５３３が押下されると（ステップＳ３１，Ｙｅｓ）、実行位置がメインルーチンならば（ステップＳ３２，Ｙｅｓ）、構造化ポイントブロック７にステップインする（ステップＳ３３）。すなわち、構造化ポイントブロック７の先頭で制御データ６の実行を一旦停止する。
【００８１】
一方、ステップイン実行ボタン５３３の押下の際に実行位置が構造化ポイントブロック７内ならば（ステップＳ３２，Ｎｏ）、構造化ポイントブロック７からポイントステートメント８にステップインする（ステップＳ３４）。すなわち、実行位置のポイントステートメント８を実行し、ポイントステートメント８の実行終了で一旦停止する。ポイントステートメント８が命令群により成る場合には１ステップずつ実行して、一旦停止する。
【００８２】
また、デバッガ５２は、図１６に示すように、ステップオーバー実行ボタン５３４が押下されると（ステップＳ４１，Ｙｅｓ）、構造化ポイントブロック７を終わりまで連続実行し（ステップＳ４２）、次の構造化ポイントブロック７で実行を一旦停止する（ステップＳ４３）。すなわち、第１の実施形態に係るデバッガ５２と同一の制御動作を行う。
【００８３】
また、デバッガ５２は、図１７に示すように、ステップアウト実行ボタン５３５が押下されると（ステップＳ５１，Ｙｅｓ）、構造化ポイントブロック７内の残りを連続実行して（ステップＳ５２）、連続実行した構造化ポイントブロック７の終了でメインルーチンに戻って実行を一旦停止する（ステップＳ５３）。
【００８４】
このように、デバッガ５２は、ステップイン実行ボタン５３３の押下によって、制御データ６を１ステップずつ断続実行する。また、デバッガ５２は、ステップオーバー実行ボタン５３４の押下によって、制御データ６を構造化ポイントブロック７毎に連続実行する。また、デバッガ５２は、ステップアウト実行ボタン５３５の押下によって、ステップイン実行から構造化ポイントブロック７のステップオーバー実行に移行する。
【００８５】
従って、ユーザはデバッグ作業の段階に応じて適切なデバッグ動作をさせることができ、デバッグ操作の効率性が更に向上する。
【００８６】
（制御データ変形例４）
図１８は、第４の変形例に係る制御データ６を示す模式図である。この制御データ６は、メインルーチンに構造化ポイントブロック７を明示的に配列し、構造化ポイントブロック７の内部に更に構造化ポイントブロック７が入れ子となって配置されている。この入れ子となった構造化ポイントブロック７は、例えば、「Ｃａｌｌ  Ｐｏｉｎｔｓ」といった構造化ポイントブロック７のコール命令で上位層の構造化ポイントブロック７内に記録される。
【００８７】
この構造を有する制御データ６の場合、デバッガ５２は、ステップイン実行ボタン５３３を押下されると、入れ子となった構造化ポイントブロック７のポイントステートメント８を一つずつ実行して、実行の度に一旦停止する。ステップオーバー実行ボタン５３４を押下されると、入れ子となった構造化ポイントブロック７内のポイントステートメント８の全てを連続実行して、上位層の構造化ポイントブロック７内に戻って一旦停止する。また、ステップイン実行の途中でステップアウト実行ボタン５３５が押下されると、入れ子となった構造化ポイントブロック７の残りを全て実行して、上位層の構造化ポイントブロック７内に戻って一旦停止する。
【００８８】
（第４の実施形態）
次に第４の実施形態に係るロボットについて図面を参照しつつ詳細に説明する。第１の実施形態又は変形例と同一構成及び同一機能については符号を付して説明を省略する。
【００８９】
(デバッガ)
図１９は、プログラミングモードにおいて表示部３５２に表示される操作画面５３を示す。図１９に示すように、コントローラ３は、表示部３５２に操作画面５３の画面を表示させる。操作画面５３は、構造作成カラム５３１とコード記述カラム５３２に分けられる。構造作成カラム５３１は、制御データ６の構造をツリー表示する。
【００９０】
この構造作成カラム５３１には、上位の階層にメインルーチンを展開する。メインルーチンには、構造化ポイントブロック７が並ぶ。この構造化ポイントブロック７の並びによって、加工ポイントごとのプログラムの区切りが識別可能となる。構造化ポイントブロック７を展開すると、ポイントステートメント８が並ぶ。このポイントステートメント８の並びによって、一箇所の加工ポイントごとの作業内容が作業ツール４を移動させるポイントを主体として認識可能となる。
【００９１】
構造作成カラム５３１内での操作手段３５の操作によって、制御データ生成手段５１は、制御データ６に構造化ポイントブロック７を追加する。また、構造作成カラム５３１内での操作手段３５によって、制御データ生成手段５１は、構造化ポイントブロック７にポイントステートメント８を追加する。更に、コード記述カラムでは、操作手段３５を用いたキー入力やティーチングに応じて、ポイントステートメント８が編集され、作業番号８６で示される命令群のコードが記述される。
【００９２】
デバッガ５２は、この構造作成カラム５３１内で制御データ６の実行位置を表示する。実行中の構造化ポイントブロック７を展開し、実行中のポイントステートメント８のアイコンを強調する。作業ステートメント９を実行中であれば、作業ステートメント９に含まれる作業番号９２の命令群を展開し、実行中の命令を強調する。また、デバッガ５２は、構造作成カラム５３１内の操作手段３５の操作によって、ブレークポイント情報７１を指示された構造化ポイントブロック７に付す。
【００９３】
これにより、ユーザは、制御データ６の構造化ポイントブロック７の配列を視覚的に捉えることができる。すなわち、加工ポイントごとの一連の作業単位で制御プログラムを判読することができる。従って、デバッグ作業の効率が更に向上する。
【００９４】
（第５の実施形態）
次に第５の実施形態に係るロボットについて図面を参照しつつ詳細に説明する。第１の実施形態の変形例１と同一構成及び同一機能については同一の符号を付して説明を省略する。
【００９５】
(制御データ)
図２０は、制御データ６に配列される構造化ポイントブロック７を示す模式図である。各構造化ポイントブロック７は、ポイントステートメント８と作業ステートメント９を配列して成る。この構造化ポイントブロック７には、デバッグ再開時実行の作業ステートメント９ａと、デバッグ停止時実行の作業ステートメント９ｂが配列されている。
【００９６】
デバッグ再開時実行の作業ステートメント９ａの処理内容は、運転モード時に各構造化ポイントブロック７を通して連続実行する際に、制御データ６の初期に予め実行しておく作業内容である。例えば、複数の加工ポイントを結んでレーザーカットする場合のレーザ照射である。デバッグ停止時実行の作業ステートメント９ｂの処理内容は、運転モード時に書く構造化ポイントブロック７を通して連続実行する際に、制御データ６の最後に実行しておく作業内容である。例えば、複数の加工ポイントを結んでレーザーカットする場合のレーザー照射停止である。
【００９７】
（デバッガ）
このデバッグ再開時実行とデバッグ停止時実行の作業ステートメント９ａ、９ｂは、運転モードでは無視され、実機デバッグモードで特定条件を満たした場合にデバッガ５２により実行される。特定条件は、デバッグ時再開時実行の作業ステートメント９ａに関してステップオーバー実行の最初であり、デバッグ時停止時実行の作業ステートメント９ｂに関してステップオーバー実行又はステップアウト実行の最後である。
【００９８】
図２１は、デバッガ５２の制御動作を示すフローチャートである。図２１に示すように、デバッガ５２は、先の構造化ポイントブロック７の実行が終了すると（ステップＳ６１）、一旦停止する（ステップＳ６２）。そして、操作手段３５を用いたユーザによる再開指示により（ステップＳ６３，Ｙｅｓ）、次の構造化ポイントブロック７内のデバッグ再開時実行の作業ステートメント９ａを参照して（ステップＳ６４）、デバッグ再開時の作業を実行する（ステップＳ６５）。デバッグ再開時の作業がロボット１の動作に関与する場合、デバッガ５２は、移動手段２や作業ツール４を制御する。
【００９９】
デバッグ再開時実行の作業ステートメント９ａの実行が終了すると（ステップＳ６５）、デバッガ５２は、参照中の構造化ポイントブロック７内の残りのポイントステートメント８や作業ステートメント９を連続実行していく（ステップＳ６６）。
【０１００】
残りのポイントステートメント８等の連続実行が終了すると（ステップＳ６６）、デバッガ５２は、構造化ポイントブロック７内のデバッグ停止時実行の作業ステートメント９ｂを参照して（ステップＳ６７）、デバッグ停止時の作業を実行する（ステップＳ６８）。デバッグ終了時の作業がロボット１の動作に関与する場合、デバッガ５２は、移動手段２や作業ツール４を制御する。
【０１０１】
そして、デバッグ再開時実行及びデバッグ停止時実行の作業ステートメント９ａ、９ｂを含めて、参照中の構造化ポイントブロック７内の全てのステートメントの連続実行が終了すると（ステップ６１）、ステップＳ６２に戻り、一旦停止する（ステップＳ６２）。
【０１０２】
デバッグ作業においてプログラムの実行を停止させた場合、システム上、制御データの実行中は連続的に動作させ続ける内容も一旦停止させたい場合がある。例えば、レーザ加工において、実機の状態を見直すためにレーザ出力を一旦停止させたい場合がある。
【０１０３】
このロボット１では、デバッグ停止時実行の作業ステートメント９ｂによって、ロボット１の一旦停止と共に止めておきたい作業も自動的に停止させることができる。
【０１０４】
一方、ロボット１の一旦停止と共に止めておきたい作業を停止させると、次の構造化ポイントブロック７を実行する際に、止めておいた作業を再開させずにいるために不具合が起こることがある。例えば、レーザ加工においてレーザ出力無しで次の加工ポイントにおける動作確認を行うことはできない。
【０１０５】
そこで、このロボット１では、デバッグ再開時実行の作業ステートメント９ａによって、一旦停止させておいた作業を次の構造化ポイントブロック７の実行開始時に実行させておくことができる。
【０１０６】
これにより、デバッグ作業におけるミスや煩雑さを取り除くことができ、デバッグ作業の効率性も高まる。
【０１０７】
（他の実施形態）
以上のように本発明の実施形態を説明したが、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。そして、この実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１０８】
例えば、ロボット１に対するプログラミングを直接ロボット１に対して行う例を示したが、これに限らず、ロボット１とは別のコンピュータ等のプログラミングツールで行うようにし、制御データ６をロボット１にロードするようにしてもよい。
【符号の説明】
【０１０９】
１  ロボット
２  移動手段
２１  Ｘリニアスライダ
２２  Ｙリニアスライダ
２３  Ｚリニアスライダ
３  コントローラ
３１  ＣＰＵ
３２  ストレージ
３３  メモリ
３４  モータドライバ
３５  操作手段
３５１  ティーチングペンダント
３５２  表示部
４  作業ツール
５１  制御データ生成手段
５２  デバッガ
５２ａ  区切りポイント情報記憶部
５３  操作画面
５３１  構造作成カラム
５３２  コード記述カラム
５３３  ステップイン実行ボタン
５３４  ステップオーバー実行ボタン
５３５  ステップアウト実行ボタン
６  制御データ
７  構造化ポイントブロック
７１  ブレークポイント情報
７２  ブレークポイントテーブル
８  ポイントステートメント
８１  ポイント番号
８２  ポイント種別オプション
８３  ポイント座標
８４  ポイント速度
８５  作業種別オプション
８６  作業番号
９  作業ステートメント
９１  作業種別オプション
９２  作業番号
９ａ  デバッグ再開時実行の作業ステートメント
９ｂ  デバッグ停止時実行の作業ステートメント
【図１】
0006545472.tif 000002
【図２】
0006545472.tif 000003
【図３】
0006545472.tif 000004
【図４】
0006545472.tif 000005
【図５】
0006545472.tif 000006
【図６】
0006545472.tif 000007
【図７】
0006545472.tif 000008
【図８】
0006545472.tif 000009
【図９】
0006545472.tif 000010
【図１０】
0006545472.tif 000011
【図１１】
0006545472.tif 000012
【図１２】
0006545472.tif 000013
【図１３】
0006545472.tif 000014
【図１４】
0006545472.tif 000015
【図１５】
0006545472.tif 000016
【図１６】
0006545472.tif 000017
【図１７】
0006545472.tif 000018
【図１８】
0006545472.tif 000019
【図１９】
0006545472.tif 000020
【図２０】
0006545472.tif 000021
【図２１】
0006545472.tif 000022