(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024110909
(43)【公開日】2024-08-16
(54)【発明の名称】制御プログラム生成装置、制御プログラム生成方法、プログラム
(51)【国際特許分類】
G05B 19/05 20060101AFI20240808BHJP
【FI】
G05B19/05 B
【審査請求】未請求
【請求項の数】4
【出願形態】OL
(21)【出願番号】P 2023179201
(22)【出願日】2023-10-17
(31)【優先権主張番号】P 2023015609
(32)【優先日】2023-02-03
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】000150213
【氏名又は名称】株式会社オプトン
(74)【代理人】
【識別番号】100111970
【弁理士】
【氏名又は名称】三林 大介
(72)【発明者】
【氏名】路 海寧
(72)【発明者】
【氏名】可兒 利弘
(72)【発明者】
【氏名】尾崎 秀典
【テーマコード(参考)】
5H220
【Fターム(参考)】
5H220AA04
5H220BB12
5H220CC05
5H220CX02
5H220DD07
5H220DD09
5H220JJ02
5H220JJ12
5H220JJ24
(57)【要約】
【課題】自動製造機械(10)が動作を開始してから終了するまでの動作時間が短い制御プログラム(400)を自動で生成する。
【解決手段】動作チャートの複数の部分期間にアクチュエータの基本動作を割り当てて自動製造機械の動作を記述し、基本動作に対応するプログラム要素を動作チャート上での部分期間の順序で結合して制御プログラムを生成する。動作チャートに、複数の部分期間と複数の並列部分期間とが並列に形成された並列期間(210)を設定し、並列期間の並列部分期間には所定の選択アクチュエータの基本動作を割り当て、並列期間の部分期間には選択アクチュエータ以外のアクチュエータの基本動作を割り当てる。動作チャートの並列期間内では、並列部分期間に割り当てた基本動作のプログラム要素は並列部分期間の順序で結合し、部分期間に割り当てた基本動作のプログラム要素は部分期間の順序で結合することによって制御プログラムを生成する。
【選択図】
図12
【特許請求の範囲】
【請求項1】
複数のアクチュエータを備えた自動製造機械(10)の制御プログラム(400)を生成する制御プログラム生成装置(110)であって、
前記アクチュエータが指定された動作量で該アクチュエータの自由度方向に動作する基本動作を、前記基本動作を実現するプログラム要素と対応付けて記憶している基本動作記憶部(112)と、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、前記自動製造機械の動作が複数の前記基本動作に分解されると共に、前記基本動作が前記複数の部分期間の何れか1つの前記部分期間に割り当てられることによって前記自動製造機械の動作が記述された動作チャート(200)を読み込む動作チャート読込部(111)と、
前記動作チャート上の複数の前記部分期間に割り当てられた複数の前記基本動作の前記プログラム要素を、前記動作チャート上での前記部分期間の順序に従って結合することにより、前記自動製造機械を動作させる前記制御プログラムを生成する制御プログラム生成部(113、114)と
を備え、
前記動作チャート読込部が読み込む前記動作チャートは、
前記複数の部分期間の中の連続する2つ以上の前記部分期間が一体に纏められることによって並列期間(210)が設定されており、
前記並列期間では、複数の前記部分期間と、前記並列期間を分割する複数の並列部分期間(212)とが並列に形成された状態となっており、
前記並列期間の前記並列部分期間には、前記複数のアクチュエータの中から選択された選択アクチュエータの前記基本動作が割り当てられており、
前記並列期間の前記部分期間には、前記選択アクチュエータではない前記アクチュエータの前記基本動作が割り当てられており、
前記制御プログラム生成部は、
前記並列期間内で前記並列部分期間に割り当てられた前記基本動作の前記プログラム要素については、前記並列部分期間の順序に従って結合し、
前記並列期間内で前記部分期間に割り当てられた前記基本動作の前記プログラム要素については、前記部分期間の順序に従って結合することによって、前記制御プログラムを生成する
ことを特徴とする制御プログラム生成装置。
【請求項2】
請求項1に記載の制御プログラム生成装置であって、
前記動作チャート読込部は、前記動作チャートとは別に、前記動作チャートの前記並列期間に対して作成され、前記並列期間の各々の前記並列部分期間に対して少なくとも1つの前記選択アクチュエータの前記基本動作が割り当てられたローカルチャート(200L)も読み込んでおり、
前記動作チャート読込部が読み込む前記動作チャートの前記並列期間に対しては、前記ローカルチャートに固有のローカルチャート記号(220)が割り当てられている
ことを特徴とする制御プログラム生成装置。
【請求項3】
複数のアクチュエータを備えた自動製造機械(10)の制御プログラム(400)をコンピュータによって生成する制御プログラム生成方法であって、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、前記自動製造機械の動作が、前記アクチュエータが指定された動作量で該アクチュエータの自由度方向に動作する複数の基本動作に分解されると共に、前記基本動作が、前記複数の部分期間の何れか1つの前記部分期間に割り当てられることによって前記自動製造機械の動作が記述された動作チャート(200)を読み込む動作チャート読込工程(STEP1)と、
前記動作チャートに記載された前記基本動作と、前記基本動作を実現するためのプログラム要素とが対応付けて記憶された対応関係を参照することによって、前記動作チャートに記載された前記基本動作を前記プログラム要素に変換すると共に、前記プログラム要素を前記部分期間の順番に従って結合することによって、前記自動製造機械を動作させる前記制御プログラムを生成する制御プログラム生成工程(STEP4~STEP6)と
を備え、
前記動作チャート読込工程で読み込む前記動作チャートは、
前記複数の部分期間の中の連続する2つ以上の前記部分期間が一体に纏められることによって並列期間(210)が設定されており、
前記並列期間では、複数の前記部分期間と、前記並列期間を分割する複数の並列部分期間(212)とが並列に形成された状態となっており、
前記並列期間の前記並列部分期間には、前記複数のアクチュエータの中から選択された選択アクチュエータの前記基本動作が割り当てられており、
前記並列期間の前記部分期間には、前記選択アクチュエータではない前記アクチュエータの前記基本動作が割り当てられており、
前記制御プログラム生成工程は、
前記並列期間内で前記並列部分期間に割り当てられた前記基本動作の前記プログラム要素については、前記並列部分期間の順序に従って結合し、
前記並列期間内で前記部分期間に割り当てられた前記基本動作の前記プログラム要素については、前記部分期間の順序に従って結合することによって、前記制御プログラムを生成する
ことを特徴とする制御プログラム生成方法。
【請求項4】
複数のアクチュエータを備えた自動製造機械(10)の制御プログラム(400)を生成する方法を、コンピュータを用いて実現するプログラムであって、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、前記自動製造機械の動作が、前記アクチュエータが指定された動作量で該アクチュエータの自由度方向に動作する複数の基本動作に分解されると共に、前記基本動作が、前記複数の部分期間の何れか1つの前記部分期間に割り当てられることによって前記自動製造機械の動作が記述された動作チャート(200)を読み込む動作チャート読込機能(STEP1)と、
前記動作チャートに記載された前記基本動作と、前記基本動作を実現するためのプログラム要素とが対応付けて記憶された対応関係を参照することによって、前記動作チャートに記載された前記基本動作を前記プログラム要素に変換すると共に、前記プログラム要素を前記部分期間の順番に従って結合することによって、前記自動製造機械を動作させる前記制御プログラムを生成する制御プログラム生成機能(STEP4~STEP6)と
を前記コンピュータを用いて実現すると共に、
前記動作チャート読込機能によって読み込まれる前記動作チャートは、
前記複数の部分期間の中の連続する2つ以上の前記部分期間が一体に纏められることによって並列期間(210)が設定されており、
前記並列期間では、複数の前記部分期間と、前記並列期間を分割する複数の並列部分期間(212)とが並列に形成された状態となっており、
前記並列期間の前記並列部分期間には、前記複数のアクチュエータの中から選択された選択アクチュエータの前記基本動作が割り当てられており、
前記並列期間の前記部分期間には、前記選択アクチュエータではない前記アクチュエータの前記基本動作が割り当てられており、
前記制御プログラム生成機能は、
前記並列期間内で前記並列部分期間に割り当てられた前記基本動作の前記プログラム要素については、前記並列部分期間の順序に従って結合し、
前記並列期間内で前記部分期間に割り当てられた前記基本動作の前記プログラム要素については、前記部分期間の順序に従って結合することによって、前記制御プログラムを生成する機能である
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のアクチュエータを備えた自動製造機械の制御プログラムを自動で生成する技術に関する。
【背景技術】
【0002】
自動製造機械に搭載された複数のアクチュエータの動作を特殊な動作チャート(以下、YOGOチャート)に記載しておき、このYOGOチャートをコンピュータに読み込ませることで、自動製造機械の制御プログラムを自動で生成する技術を開発した(特許文献1)。YOGOチャートは、縦軸および横軸が複数に分割された表形式のチャートとなっており、縦軸または横軸の一方の軸には自動製造機械に搭載された複数のアクチュエータが割り当てられている。また、YOGOチャートの他方の軸は、自動機械が動作を開始してから終了するまでの動作期間を表しており、その動作期間は複数の部分期間に分割されている。従って、表形式のYOGOチャートを形成するマス目の1つ1つは、複数のアクチュエータの何れかと、複数の部分期間の何れかとの組み合わせに対応している。そこで、YOGOチャートでは、マス目の位置にアクチュエータの動作内容を記載することによって、その動作を実行するアクチュエータと、動作させる部分期間とを指定する。
【0003】
また、YOGOチャートのマス目の位置には、アクチュエータの基本動作を記載する。ここで、アクチュエータの基本動作とは、アクチュエータが所定の距離だけ前進あるいは後退する動作や、所定の角度だけ回転する動作のように、アクチュエータが備える最も基本的な動作である。自動製造機械のどのような複雑な動作も個々のアクチュエータの基本動作に分解することができるから、YOGOチャートのマス目の位置に基本動作を記載することによって自動製造機械の動作を記述することができる。そして、このようなYOGOチャートを作成しておけば、先頭の部分期間から順番に、その部分期間に割り当てられた内容を読み出してアクチュエータに基本動作を実行させる動作を繰り返していくことで、自動製造機械に所望の動作をさせることができる。このような理由から、自動製造機械を動作させる制御プログラムを、YOGOチャートから自動的に生成することができる。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、上述した開発済みの技術では、自動製造機械が動作を開始してから終了するまでに要する時間が長くなり易いという問題があった。この理由は、次のようなものである。先ず、YOGOチャートから自動生成された制御プログラムは、複数のアクチュエータを部分期間の順番で動作させるようになっている。ここで、同じ部分期間で動作するアクチュエータが複数存在する場合、それらのアクチュエータの中に、動作に要する時間の長いアクチュエータが存在すると、そのアクチュエータが動作を終了するまでは次の部分期間の動作を開始することができない。従って、他のアクチュエータにとっては、自らの動作が終了してから最後のアクチュエータが動作を終了するまでの時間は待ち時間となる。そして、同じ部分期間で動作する複数のアクチュエータの中に、他のアクチュエータに比べて動作の時間が特に長いアクチュエータが含まれていると、待ち時間が特に長くなる。このような長い待ち時間が発生すると、自動製造機械が動作を開始してから終了するまでに要する時間が長くなってしまう。
【0006】
この発明は、開発済みの技術が有する上述した課題を解決するために成されたものであり、自動製造機械が動作を開始してから終了するまでに要する時間の短い制御プログラムを自動で生成する技術の提供を目的とする。
【課題を解決するための手段】
【0007】
上述した課題を解決するために、本発明の制御プログラム生成装置は次の構成を採用した。すなわち、
複数のアクチュエータを備えた自動製造機械(10)の制御プログラム(400)を生成する制御プログラム生成装置(110)であって、
前記アクチュエータが指定された動作量で該アクチュエータの自由度方向に動作する基本動作を、前記基本動作を実現するプログラム要素と対応付けて記憶している基本動作記憶部(112)と、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、前記自動製造機械の動作が複数の前記基本動作に分解されると共に、前記基本動作が前記複数の部分期間の何れか1つの前記部分期間に割り当てられることによって前記自動製造機械の動作が記述された動作チャート(200)を読み込む動作チャート読込部(111)と、
前記動作チャート上の複数の前記部分期間に割り当てられた複数の前記基本動作の前記プログラム要素を、前記動作チャート上での前記部分期間の順序に従って結合することにより、前記自動製造機械を動作させる前記制御プログラムを生成する制御プログラム生成部(113、114)と
を備え、
前記動作チャート読込部が読み込む前記動作チャートは、
前記複数の部分期間の中の連続する2つ以上の前記部分期間が一体に纏められることによって並列期間(210)が設定されており、
前記並列期間では、複数の前記部分期間と、前記並列期間を分割する複数の並列部分期間(212)とが並列に形成された状態となっており、
前記並列期間の前記並列部分期間には、前記複数のアクチュエータの中から選択された選択アクチュエータの前記基本動作が割り当てられており、
前記並列期間の前記部分期間には、前記選択アクチュエータではない前記アクチュエータの前記基本動作が割り当てられており、
前記制御プログラム生成部は、
前記並列期間内で前記並列部分期間に割り当てられた前記基本動作の前記プログラム要素については、前記並列部分期間の順序に従って結合し、
前記並列期間内で前記部分期間に割り当てられた前記基本動作の前記プログラム要素については、前記部分期間の順序に従って結合することによって、前記制御プログラムを生成する
ことを特徴とする。
【0008】
また、上述した制御プログラム生成装置に対応する本発明の制御プログラム生成方法は次の構成を採用した。すなわち、
複数のアクチュエータを備えた自動製造機械(10)の制御プログラム(400)をコンピュータによって生成する制御プログラム生成方法であって、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、前記自動製造機械の動作が、前記アクチュエータが指定された動作量で該アクチュエータの自由度方向に動作する複数の基本動作に分解されると共に、前記基本動作が、前記複数の部分期間の何れか1つの前記部分期間に割り当てられることによって前記自動製造機械の動作が記述された動作チャート(200)を読み込む動作チャート読込工程(STEP1)と、
前記動作チャートに記載された前記基本動作と、前記基本動作を実現するためのプログラム要素とが対応付けて記憶された対応関係を参照することによって、前記動作チャートに記載された前記基本動作を前記プログラム要素に変換すると共に、前記プログラム要素を前記部分期間の順番に従って結合することによって、前記自動製造機械を動作させる前記制御プログラムを生成する制御プログラム生成工程(STEP4~STEP6)と
を備え、
前記動作チャート読込工程で読み込む前記動作チャートは、
前記複数の部分期間の中の連続する2つ以上の前記部分期間が一体に纏められることによって並列期間(210)が設定されており、
前記並列期間では、複数の前記部分期間と、前記並列期間を分割する複数の並列部分期間(212)とが並列に形成された状態となっており、
前記並列期間の前記並列部分期間には、前記複数のアクチュエータの中から選択された選択アクチュエータの前記基本動作が割り当てられており、
前記並列期間の前記部分期間には、前記選択アクチュエータではない前記アクチュエータの前記基本動作が割り当てられており、
前記制御プログラム生成工程は、
前記並列期間内で前記並列部分期間に割り当てられた前記基本動作の前記プログラム要素については、前記並列部分期間の順序に従って結合し、
前記並列期間内で前記部分期間に割り当てられた前記基本動作の前記プログラム要素については、前記部分期間の順序に従って結合することによって、前記制御プログラムを生成する
ことを特徴とする。
【0009】
上述した本発明の制御プログラム生成装置および制御プログラム生成方法では、動作チャートの複数の部分期間にアクチュエータの基本動作が割り当てられることによって、自動製造機械の動作が記述されており、基本動作に対応するプログラム要素が、動作チャート上での部分期間の順序に従って結合されることによって、制御プログラムが生成される。こうして生成された制御プログラムは、先頭の部分期間から順番に、部分期間に割り当てられた基本動作のプログラム要素を実行することによって自動製造機械を動作させる。また、動作チャートに設定された並列期間には、複数の部分期間と複数の並列部分期間とが並列な状態で形成されており、並列期間の並列部分期間に対しては、複数のアクチュエータの中から選択された選択アクチュエータの基本動作が割り当てられている。更に、並列期間内で並列部分期間ではない部分期間に対しては、選択アクチュエータ以外のアクチュエータの基本動作が割り当てられている。そして、動作チャートの並列期間内では、並列部分期間に割り当てられた基本動作のプログラム要素については、並列部分期間の順序に従って結合し、部分期間に割り当てられた基本動作のプログラム要素については、部分期間の順序に従って結合することによって、制御プログラムを生成する。
【0010】
動作チャートから生成された制御プログラムでは、先頭の部分期間から順番に、部分期間に割り当てられた基本動作に対応するプログラム要素を実行する。同じ部分期間に複数の基本動作が割り当てられた場合には、それらの基本動作の中で動作に要する時間が最も長い基本動作が終了するまで、次の部分期間の基本動作を開始することができない。このため、動作の時間が短い基本動作にとっては待ち時間が発生する。そして、同じ部分期間に割り当てられた複数の基本動作の動作に要する時間の差が大きくなるほど、発生する待ち時間が長くなり、その結果として、自動製造機械の動作に要する時間が長くなる。しかし、複数の部分期間と複数の並列部分期間とが並列に形成された並列期間を動作チャートに形成し、並列期間の部分期間および並列部分期間に基本動作を設定しておけば、並列部分期間については、部分期間の基本動作の終了を待たずに次の並列部分期間を開始することができ、部分期間については、並列部分期間の基本動作の終了を待たずに次の部分期間を開始することができる。このため、動作の時間が短い基本動作と、動作の時間が長い基本動作とが並行して実行される場合でも、長い待ち時間が発生することを抑制することができる。その結果、自動製造機械が動作を開始してから終了するまでに要する時間の短い制御プログラムを、自動で生成することが可能となる。
【0011】
また、上述した本発明の制御プログラム生成装置においては、自動製造機械の動作を記述した動作チャートとは別に、ローカルチャートを読み込むようにしてもよい。ここでローカルチャートとは、動作チャートの並列期間を切り出して、並列期間の各々の並列部分期間に対して少なくとも1つの選択アクチュエータの基本動作を割り当てることによって作成された小さな動作チャートである。そして、自動製造機械の動作を記述した動作チャートの並列期間には、各々の並列部分期間に対して少なくとも1つの選択アクチュエータの基本動作を割り当てる代わりに、ローカルチャートに固有のローカルチャート記号を、並列期間に対して割り当てることとしてもよい。
【0012】
こうすれば、動作チャートの並列期間に割り当てられたローカルチャート記号に基づいてローカルチャートを特定することができ、ローカルチャートに基づいて、動作チャートの並列期間の並列部分期間に割り当てられた選択アクチュエータの基本動作を特定することができる。このように、ローカルチャートを介して、動作チャートの並列期間の並列部分期間に、選択アクチュエータの基本動作を割り当てることができるので、動作チャート上で並列部分期間に基本動作を割り当てる必要が無い。その結果、動作チャートを作成する作業や、動作チャートの内容を理解する作業が容易となる。
【0013】
また、前述した本発明の制御プログラム生成方法は、コンピュータを用いて制御プログラム生成方法を実現するためのプログラムとして把握することも可能である。すなわち、本発明のプログラムは、
複数のアクチュエータを備えた自動製造機械(10)の制御プログラム(400)を生成する方法を、コンピュータを用いて実現するプログラムであって、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、前記自動製造機械の動作が、前記アクチュエータが指定された動作量で該アクチュエータの自由度方向に動作する複数の基本動作に分解されると共に、前記基本動作が、前記複数の部分期間の何れか1つの前記部分期間に割り当てられることによって前記自動製造機械の動作が記述された動作チャート(200)を読み込む動作チャート読込機能(STEP1)と、
前記動作チャートに記載された前記基本動作と、前記基本動作を実現するためのプログラム要素とが対応付けて記憶された対応関係を参照することによって、前記動作チャートに記載された前記基本動作を前記プログラム要素に変換すると共に、前記プログラム要素を前記部分期間の順番に従って結合することによって、前記自動製造機械を動作させる前記制御プログラムを生成する制御プログラム生成機能(STEP4~STEP6)と
を前記コンピュータを用いて実現すると共に、
前記動作チャート読込機能によって読み込まれる前記動作チャートは、
前記複数の部分期間の中の連続する2つ以上の前記部分期間が一体に纏められることによって並列期間(210)が設定されており、
前記並列期間では、複数の前記部分期間と、前記並列期間を分割する複数の並列部分期間(212)とが並列に形成された状態となっており、
前記並列期間の前記並列部分期間には、前記複数のアクチュエータの中から選択された選択アクチュエータの前記基本動作が割り当てられており、
前記並列期間の前記部分期間には、前記選択アクチュエータではない前記アクチュエータの前記基本動作が割り当てられており、
前記制御プログラム生成機能は、
前記並列期間内で前記並列部分期間に割り当てられた前記基本動作の前記プログラム要素については、前記並列部分期間の順序に従って結合し、
前記並列期間内で前記部分期間に割り当てられた前記基本動作の前記プログラム要素については、前記部分期間の順序に従って結合することによって、前記制御プログラムを生成する機能である
ことを特徴とする。
【0014】
このようなプログラムをコンピュータに読み込ませて実行させれば、自動製造機械が動作を開始してから終了するまでに要する時間の短い制御プログラムを、自動で生成することが可能となる。
【図面の簡単な説明】
【0015】
【
図1】本実施例の制御装置100によって制御されるパイプベンダ10の大まかな構造を示した説明図である。
【
図2】制御装置100が、パイプベンダ10に搭載された各種のアクチュエータAc10~18の動作を制御する様子を概念的に示したブロック図である。
【
図3】YOGOチャートから制御プログラムを自動で生成する基本原理についての説明図である。
【
図4】
図3のYOGOチャートに使用された複数の基本動作についての説明図である。
【
図5】YOGOチャートで使用され得る複数の基本動作を分類した結果についての説明図である。
【
図6】YOGOチャート200の一部を例示した説明図である。
【
図7】YOGOチャート200に記載されたパラメータ記号206bに対してパラメータ値が設定された様子を例示する説明図である。
【
図8】YOGOチャート200から自動生成した制御プログラムでは、自動製造機械が動作を開始してから終了するまでの時間が長くなり易い理由を示した説明図である。
【
図9】並列期間210が設定された本実施例のYOGOチャート200を例示した説明図である。
【
図10】並列期間210が設定されたYOGOチャート200の構造を概念的に示した説明図である。
【
図11】並列期間210が設定されたYOGOチャート200を、動作線203の長さがアクチュエータの動作時間の長さを表すように描き直した説明図である。
【
図12】並列期間210が設定された他の態様のYOGOチャート200を例示した説明図である。
【
図13】並列期間210が設定された他の態様のYOGOチャート200を例示した説明図である。
【
図14】制御装置100に搭載された制御プログラム生成装置110についての説明図である。
【
図15】制御プログラム生成装置110がYOGOチャート200から制御プログラムを生成するために実行する制御プログラム生成処理のフローチャートである。
【
図16】制御プログラム生成処理で読み込まれるYOGOチャート200を例示した説明図である。
【
図17】YOGOチャート200から分離されたメインチャート200Mを示す説明図である。
【
図18】
図17中の一点鎖線で囲った部分に組み込まれていたローカルチャート200Lを示す説明図である。
【
図19】
図17中の二点鎖線で囲った部分に組み込まれていたローカルチャート200Lを示す説明図である。
【
図20】制御プログラム生成処理中で実行される中間データ生成処理のフローチャートである。
【
図21】メインチャート200Mから生成された中間データ300Mを例示した説明図である。
【
図22】ローカルチャート200Lの開始位置および終了位置が追加された中間データ300Mを例示した説明図である。
【
図23】YOGOチャート解析処理によって生成されたローカルチャート200Lの中間データ300Lを例示した説明図である。
【
図24】メインチャート200Mの中間データ300Mを変換することによって生成されたメインプログラム400Mを例示した説明図である。
【
図25】ローカルチャート200Lの中間データ300Lを変換することによって生成されたローカルプログラム400Lを例示した説明図である。
【
図26】動作制御装置120が制御プログラムを用いて実行する動作制御処理の前半部分のフローチャートである。
【
図27】動作制御処理の後半部分のフローチャートである。
【
図28】動作制御処理の中で起動されるローカルプログラム実行処理の前半部分のフローチャートである。
【
図29】ローカルプログラム実行処理の後半部分のフローチャートである。
【
図30】ローカルチャート記号220が記入された第1変形例のYOGOチャート200を例示する説明図である。
【
図31】「lclchrt1」というローカルチャート記号220に対応するローカルチャート200Lを例示した説明図である。
【
図32】「lclchrt2」というローカルチャート記号220に対応するローカルチャート200Lを例示した説明図である。
【
図33】同じ並列期間210に並列部分期間212の個数が異なる複数種類のローカルチャート記号220が記載された第2変形例のYOGOチャート200を例示する説明図である。
【
図34】グローバルチャート200Gを例示する説明図である。
【
図35】ローカルチャート記号220およびグローバルチャート記号230が記載された第2変形例のYOGOチャート200を例示する説明図である。
【
図36】第2変形例の他の態様のYOGOチャート200を例示する説明図である。
【発明を実施するための形態】
【0016】
A.装置構成 :
図1は、パイプベンダ10の大まかな外観形状を例示した説明図である。パイプベンダ10は、長尺のパイプ材に対して自動で曲げ加工を施すことによって、所望の形状に加工することが可能な一種の自動製造機械である。以下では、自動製造機械がパイプベンダ10であるものとして説明するが、複数のアクチュエータを搭載して、対象物に対して把持、搬送、加工、加熱などの複数の動作を自動で実行することができれば、パイプベンダ10以外の自動製造機械であっても良い。例えば、複数の関節を有するアームロボットであってもよいし、あるいは、複数の関節を有するアームロボットと搬送装置とを組み合わせた製造システムであっても良い。
【0017】
図1に例示したパイプベンダ10は、大まかには横長の直方体の外観形状を有しており、直方体の上面側には長手方向に2本のレール11が架設され、レール11上の一端側(
図1では左側)には、加工対象の図示しないパイプ材を把持して搬送する搬送ユニット12が搭載されている。また、搬送ユニット12が搭載されている側に対して反対側には、図示しないパイプ材に曲げ加工を施す加工ユニット13が搭載されている。搬送ユニット12には、円柱形状の把持軸12aが突設されており、把持軸12aの先端には、図示しないパイプ材を把持するチャック12bが取り付けられている。このため、チャック12bでパイプ材を把持した状態で搬送ユニット12をレール11上で移動させることによって、パイプ材を加工ユニット13に供給し、そのパイプ材に対して加工ユニット13で曲げ加工を施すことが可能となっている。
【0018】
本実施例のパイプベンダ10は、搬送ユニット12の移動量によってパイプ材の送り量を制御することができるので、パイプ材に曲げ加工を施す位置を自由に変更することができる。また、チャック12bが取り付けられた把持軸12aを軸回りに旋回(いわゆる捻り動作)させることによって、所望の方向にパイプ材を曲げることも可能である。こうしたことを実現するために、搬送ユニット12の内部には、チャック12bを開閉させるためのアクチュエータAc10や、把持軸12aを軸回りに回転させるためのアクチュエータAc11や、把持軸12aを軸方向に対して左右方向に平行移動させるためのアクチュエータAc12や、レール11上で搬送ユニット12を進退動させるためのアクチュエータAc13などが搭載されている。本実施例のパイプベンダ10では、これらのアクチュエータAc10~Ac13は何れも交流電源で動作するACサーボモータが用いられているが、アクチュエータに要求される性能に応じて、他の駆動方式のアクチュエータ(例えば、油圧シリンダや、ソレノイドや、パルスモータなど)を採用することができる。尚、搬送ユニット12には、把持軸12aの回転位置や、搬送ユニット12の移動位置を検出するためのエンコーダや、リミットスイッチなどのセンサー類も搭載されているが、図面が煩雑となることを回避する目的で、
図1では図示が省略されている。
【0019】
加工ユニット13の内部には、パイプ材を曲げるために用いられる複数のアクチュエータAc15、Ac16、Ac17、Ac18が搭載されている。更に、2本のレール11の下方の空間にもアクチュエータAc14が搭載されている。これらのアクチュエータAc14~Ac18の動作については、後ほど詳しく説明する。尚、加工ユニット13の内部や2本のレール11の下方の空間にも、エンコーダや、接点スイッチなどのスイッチ・センサー類が搭載されているが、図面が煩雑となることを避けるため、これらについては図示が省略されている。
【0020】
また、加工ユニット13の内部には、上述した複数のアクチュエータAc10~Ac18を駆動するための複数のドライバアンプ(図示は省略)が搭載されている。ここで、ドライバアンプとは、次のような機能を有する電気部品である。アクチュエータAc10~Ac18に所望の動作をさせるためには、それぞれのアクチュエータAc10~Ac18に適切な波形および電圧の駆動電流を供給する必要がある。しかし、アクチュエータAc10~Ac18に供給するべき駆動電流は、アクチュエータAc10~Ac18の駆動方式によって異なっており、更に同じ方式のアクチュエータであっても、駆動電流の波形や電圧はアクチュエータによって異なっている。そこで、それぞれのアクチュエータAc10~Ac18にはドライバアンプと呼ばれる専用の電気部品が用意されている。そして、パイプベンダ10を制御する制御装置100から、それぞれのドライバアンプに対して駆動量を指定すると、ドライバアンプがアクチュエータAc10~Ac18に対して適切な駆動電流を出力して、アクチュエータAc10~Ac18を駆動するようになっている。
【0021】
図2は、パイプベンダ10に搭載された複数のアクチュエータAc10~Ac18が、ドライバアンプDA10~DA18を介して制御装置100に接続されている様子を示した説明図である。アクチュエータAc10には、アクチュエータAc10を駆動するためのドライバアンプDA10が接続されており、アクチュエータAc11には、アクチュエータAc11を駆動するためのドライバアンプDA11が接続されている。同様に、アクチュエータAc12~Ac18には、アクチュエータAc12~Ac18を駆動するためのドライバアンプDA12~DA18が接続されている。また、ドライバアンプDA10~DA18は互いに直列に接続されており、一端側のドライバアンプ(図示した例では、ドライバアンプDA10)が、制御装置100に接続されている。しかし、このような接続形態に限らず、例えば、それぞれのドライバアンプDA10~DA18が、制御装置100に直接接続されるようにしても良い。
【0022】
ここで、パイプベンダ10でパイプを曲げ加工するためには、アクチュエータAc10~Ac18を適切なタイミングで且つ適切な動作量で動作させる必要がある。そして、そのためには、制御装置100の上で動作することにより、ドライバアンプDA10~DA18に対して、適切なタイミングで適切な駆動量を指定することが可能な制御プログラムを作成する必要がある。このような制御プログラムの作成には、パイプベンダ10などのハードウェアを作成するよりも多くの労力が必要であった。
【0023】
しかし、本願の発明者は、制御プログラムを自動的に生成する技術を開発して、既に特許を取得済みである。この特許取得済みの技術では、複数のアクチュエータを備えた自動製造機械(ここでは、パイプベンダ10)の動作を、複数のアクチュエータ(ここでは、アクチュエータAc10~Ac18)の基本的な動作に分解し、それらの基本的な動作を、「YOGOチャート」と命名した特殊な動作チャート上に記入することで自動製造機械の動作を記述する。こうすれば、YOGOチャートから制御プログラムを自動生成することができる。以下では、YOGOチャートから制御プログラムを自動生成する原理について説明する。
【0024】
B.YOGOチャートから制御プログラムを自動で生成する原理 :
図3は、YOGOチャートと命名した特殊な動作チャートを用いて、自動製造機械(ここではパイプベンダ10)の制御プログラムを自動生成する原理についての説明図である。
図3(a)には、各種の改良を施す前の原始的なYOGOチャートが示されている。後述する本実施例のYOGOチャートは、
図3(a)に示した原始的なYOGOチャートを発展させて改良したものとなっているが、制御プログラムを自動で生成する原理は原始的なYOGOチャートと同じである。そこで、理解を容易とするために、
図3(a)に示した原始的なYOGOチャートを用いて、YOGOチャートから制御プログラムを自動生成する原理について説明する。
【0025】
前述したようにYOGOチャートでは、自動製造機械に搭載された複数のアクチュエータの基本的な動作を組み合わせることによって、自動製造機械の動作を記述する。ここで、アクチュエータの基本的な動作とは、アクチュエータが有する自由度方向へ指定された動作量だけ動作する単純な動作のことである。例えば、モータのような回転するアクチュエータであれば、指定された角度だけ回転する動作が該当し、シリンダのような進退動するアクチュエータであれば、指定された距離だけ移動する動作が該当する。また、モータによってボールねじを回転させることによって、ボールねじに噛み合う部材を進退動させるようなアクチュエータの場合は、モータを指定された角度だけ回転させる動作、あるいは部材を指定された距離だけ移動させる動作の何れかとなる。尚、以下では、アクチュエータが有する自由度方向へ、指定された動作量だけ動作する単純な動作を「基本動作」と称する。
【0026】
また、YOGOチャートでは、自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、個々のアクチュエータの基本動作は、これら複数の部分期間の中から、基本動作毎に選択された何れか1つの部分期間に割り当てられている。
図3(a)に示した例では、自動製造機械が動作を開始した初めの部分期間(部分期間1)には、あるアクチュエータの基本動作act1が割り当てられており、次の部分期間(部分期間2)には、(そのアクチュエータと同じあるいは別のアクチュエータによる)基本動作act2と、基本動作act3と、基本動作act4とが割り当てられている。その次の部分期間(部分期間3)には、基本動作act5と、基本動作act6とが割り当てられており、その次の部分期間(部分期間4)には基本動作act7が、更にその次の部分期間(部分期間5)には、基本動作act8と、基本動作act9とが割り当てられている。
【0027】
このようにすることで、複数のアクチュエータによる一連の動作を記述することができる。すなわち、先ず初めは、あるアクチュエータによる基本動作act1が開始され、その基本動作act1が終了すると、対応するアクチュエータによって基本動作act2と、基本動作act3と、基本動作act4とが開始される。それらの基本動作が終了すると、今度は基本動作act5と基本動作act6とが開始される。それらの基本動作が終了すると今度は基本動作act7が開始され、基本動作act7が終了すると、基本動作act8および基本動作act9が開始されるというような一連の動作を記述することができる。このように、YOGOチャートでは、自動製造機械の動作を、その自動製造機械に搭載された複数のアクチュエータの基本動作に分解して、それらの基本動作を何れかの部分期間に割り当てることによって、自動製造機械の動作を記述する。
【0028】
尚、以上の説明から明らかなように、部分期間は、割り当てられたアクチュエータが動作する期間を示しており、時間の長さを示しているわけではない。例えば、部分期間1の時間の長さは基本動作act1の実行に要する時間であり、部分期間2の時間の長さは基本動作act2,act3,act4の実行に要する時間の中で長い方の時間となっている。従って、それぞれの部分期間の時間の長さは、互いに異なっていることが通常である。
【0029】
また、前述したように、アクチュエータの基本動作は、例えばモータを一定量だけ回転させたり、あるいはシリンダを一定量だけ進退動させたりするといった単純な動作である。従って、アクチュエータに基本動作させるためのプログラム(プログラム要素)を予め作成しておくことができる。例えば、あるアクチュエータに基本動作act1を行わせるためのプログラム要素prog1を予め作成しておくことができる。同様に、基本動作act2~act9についても、それらの基本動作を行わせるためのプログラム要素prog2~prog9を予め作成しておくことができる。
【0030】
そこで、これらのプログラム要素を、
図3(a)に示した原始的なYOGOチャートに記述された通りに連結してやれば、自動製造機械を動作させるための制御プログラムを自動で生成することができる。すなわち、
図3(b)に示したように、初めにプログラム要素prog1を起動させ、プログラム要素prog1が終了したらプログラム要素prog2~prog4を起動させる。それらのプログラム要素prog2~prog4が終了したら、プログラム要素prog5およびプログラム要素prog6を起動させ、それらのプログラム要素prog5、prog6が終了したら、プログラム要素prog7を起動させる。そして、プログラム要素prog7が終了したら、今度はプログラム要素prog8およびプログラム要素prog9を起動させる。このように、アクチュエータに基本動作を行わせるプログラム要素を予め作成しておき、それらのプログラム要素がYOGOチャートに記述された順序で次々に起動するように、複数のプログラム要素を組み合わせてやる。こうすれば、自動製造機械を動作させるための制御プログラムを、YOGOチャートから自動で生成することができる。
【0031】
また、基本動作を実現するための全てのプログラム要素(ここでは、プログラム要素prog1~prog9)を作成しておく必要があるが、このことは、それほど困難なことではない。この理由は次のようなものである。
図4は、
図3(a)に示した基本動作act1~act9について、動作態様(回転動作や進退動作など)および動作機構(アクチュエータの大まかな構造)を示した説明図である。例えば、基本動作act1は、アクチュエータが回転する動作であり、この動作は、ACサーボモータの回転軸の回転速度を、減速機構を用いて減速することによって実現されている。また、基本動作act2は、アクチュエータが進退動する動作であり、この動作は、ACサーボモータの回転軸が回転する動きを、変換機構を用いて直線方向の動きに変換することによって実現されている。更に、基本動作act3は、アクチュエータが進退する動作であり、この動作は、リニアサーボモータによって実現されている。
【0032】
基本動作act4、基本動作act5、および基本動作act8は、基本動作act1と同様にアクチュエータが回転する動作であり、ACサーボモータに減速機構を組み合わせることによって実現されている。また、基本動作act6および基本動作act7は、基本動作act2と同様にアクチュエータが進退動する動作であり、ACサーボモータに変換機構を組み合わせることによって実現されている。更に、基本動作act9は、基本動作act3と同様にアクチュエータが進退する動作であり、リニアサーボモータによって実現されている。
【0033】
このように、基本動作act1、基本動作act4、基本動作act5、および基本動作act8を実現する動作機構は、何れもACサーボモータに減速機構を組み合わせたものであり、違いがあるとしても、ACサーボモータの出力や、減速機構の減速比などが違っているに過ぎない。従って、これらの基本動作のプログラム要素は共通化することができる。また、基本動作act2、基本動作act6、および基本動作act7を実現する動作機構は、何れもACサーボモータに変換機構を組み合わせたものであるため、これらの基本動作のプログラム要素は共通化することができる。更に、基本動作act3および基本動作act9のプログラム要素についても、同様な理由から共通化することができる。結局、9つの基本動作act1~act9を実現するプログラム要素としては、3つのプログラム要素prog1~prog3を用意しておき、基本動作に応じて適切なプログラム要素を選択して、適切な動作量(回転角度や移動量など)を指定してやれば、全ての基本動作act1~act9を実現することが可能となる。また、こうした事情(すなわち、多くの基本動作を実現するプログラム要素を共通化することができるという事情)は、
図3に示した場合に限らず、一般的に成立するものである。
【0034】
図5は、YOGOチャートで用いられる一般的な基本動作を分類した結果を示す説明図である。
図5に示すように、基本動作の動作態様は、(特殊なものを除くと)進退動作または回転動作の何れかに分類できる。また、進退動作を実現するための動作機構は、ACサーボモータに変換機構を組み合わせた機構か、リニアサーボモータを用いた機構か、エアシリンダを用いた機構か、油圧シリンダを用いた機構の何れかと考えて、ほぼ間違いはない。同様に、回転動作を実現するための動作機構は、ACサーボモータに減速機構を組み合わせた機構か、パルスモータに減速機構を組み合わせた機構の何れかと考えて、ほぼ間違いはない。従って、全ての基本動作は、進退動作が4つ、回転動作が2つの合計で6つの類型に分類され、同じ類型の基本動作は同じプログラム要素を用いて実現することができるから、6つのプログラム要素を用意しておけば、ほぼ全ての基本動作に対応することができると考えられる。
【0035】
そこで、以下に説明するYOGOチャートでは、基本動作の類型を指定するために「動作記号」を使用する。例えば、YOGOチャートに記載された「CNC-XA」という動作記号は、ACサーボモータに変換機構を組み合わせたアクチュエータによる進退動作を表している。また、「CNC-XL」という動作記号は、リニアサーボモータをアクチュエータとして用いた進退動作を表しており、「AC」という動作記号はエアシリンダによる進退動作を、「OC」という動作記号は油圧シリンダによる進退動作を表している。更に、「CNC-θA」という動作記号は、ACサーボモータに減速機構を組み合わせたアクチュエータによる回転動作を表しており、「OPN-θP」という動作記号は、パルスモータに減速機構を組み合わせたアクチュエータによる回転動作を表している。また、各動作記号の基本動作を実現するためのプログラム要素には、固有のプログラム要素番号が付されている。このため、プログラム要素番号によってプログラム要素を特定することが可能となっている。
【0036】
C.YOGOチャートの記載方法 :
図6は、YOGOチャート200を用いて自動製造機械の動作を記述する方法についての説明図である。図示した例では、自動製造機械に搭載されているアクチュエータは、アクチュエータA~Eの5つであるものとしている。
図6に示されるように、YOGOチャート200は、複数本の横線と複数本の縦線とが交差した大きな表のような形状となっている。以下では、交差する複数本の線の内、横線については「仕切線」201と称し、縦線については「トリガ線」202と称する。
【0037】
トリガ線202には、1番から始まる通し番号が付けられている。
図6に示した例では、YOGOチャート200の上端の欄内に、その下のトリガ線202の通し番号が記載されている。また、互いに隣接するトリガ線202の間の領域は、
図3を用いて前述した部分期間となっており、部分期間にも1番から始まる通し番号(以下、部分期間番号と称する)が付けられている。尚、
図6に例示したYOGOチャート200では、トリガ線202が縦方向に引かれており、従って、トリガ線202とトリガ線202とに挟まれた部分期間は横方向に並んでいる。しかし、トリガ線202は横方向に引いても良く、この場合は、複数の部分期間が縦方向に並ぶことになる。
【0038】
また、本実施例のYOGOチャート200は、複数の仕切線201によって複数の横長の領域(以下では「行」と称することもある)に分割されており、これらの横長の行には1番から始まる通し番号(以下、アクチュエータ番号と称する)が付けられている。自動製造機械に搭載されたアクチュエータは、複数の横長の何れかの行に割り当てられる。例えば、自動製造機械に搭載されたアクチュエータが、アクチュエータA~アクチュエータEの5つのアクチュエータであるとすると、
図6に示したように、アクチュエータ番号が1番の行にはアクチュエータAが割り当てられ、アクチュエータ番号が2番の行にはアクチュエータBが割り当てられ、アクチュエータ番号が3番の行にはアクチュエータCが割り当てられる。同様に、アクチュエータ番号が4番の行にはアクチュエータDが、アクチュエータ番号が5番の行にはアクチュエータEが割り当てられる。
【0039】
そして、アクチュエータA~Eの基本動作は、そのアクチュエータA~Eが割り当てられた横長の行の上の適切な位置に記載する。例えば、アクチュエータAが部分期間1で行う基本動作は、アクチュエータ番号が1番の横長の行と、部分期間番号が1番の縦長の領域(以下では「列」と称することもある)とが交差するマス目状の座標位置に、アクチュエータAにさせたい基本動作を記載する。基本動作を記載する場合は、YOGOチャート200上で基本動作を記載しようとするマス目状の座標位置に動作線203を記入し、その動作線203の上に動作記号206aおよびパラメータ記号206bを記入することによって、基本動作を記載する。
【0040】
図6に示した例では、アクチュエータ番号が1番で、部分期間番号が1番のYOGOチャート200上での座標位置(以下では、「チャート座標(1,1)」と称する)のマス目の中には、白丸で示した始点204と黒丸で示した終点205とを有する動作線203が記載されており、動作線203の上には、白い星印の後に記載された「CNC-XA」という動作記号206aと、黒い星印の後ろに記載された3つのパラメータ記号206bとを用いて、基本動作206が記載されている。ここで、始点204が1番のトリガ線202の上に記載されており、終点205が2番のトリガ線202の上に記載されているのは、その基本動作206が1番のトリガ線202のタイミングで開始され、2番のトリガ線202のタイミングで終了することを表している。また、動作線203の上に記載された「CNC-XA」という動作記号206aは、
図5を用いて前述したように、ACサーボモータに変換機構を組み合わせたアクチュエータによる進退動作を表している。逆に言えば、「CNC-XA」という動作記号206aが、アクチュエータ番号が1番の座標位置に記載されているということは、アクチュエータ番号1番に対応するアクチュエータAが、ACサーボモータに変換機構を組み合わせることによって進退動作するアクチュエータであることを表している。更に、動作記号206aの下に記載されたパラメータ記号206bは、進退動作の具体的な内容(すなわち、進退動させる移動距離、進退動させる際の移動速度、および進退動させる際の移動トルク)を表している。パラメータ記号206bの詳細については後述する。
【0041】
また、アクチュエータ番号が2番で、部分期間番号が2番の座標位置(チャート座標(2,2))のマス目には、動作線203の上に、「CNC-θA」という動作記号206aと、3つのパラメータ記号206bとを用いて基本動作206が記載されている。ここで、「CNC-θA」という動作記号206aは、ACサーボモータに減速機構を組み合わせたアクチュエータによる回転動作を表している。従って、アクチュエータ番号2番に対応するアクチュエータBは、ACサーボモータに減速機構を組み合わせることによって回転動作するアクチュエータとなる。また、この動作記号206aの下に記載された3つのパラメータ記号206bは、回転角度、回転速度、および回転トルクを表している。それぞれのパラメータ記号206bの具体的な数値(パラメータ値)は、アクチュエータ毎に予め設定されている。
【0042】
図7は、アクチュエータ毎に、パラメータ記号206bに対してパラメータ値が予め設定されている様子を示した説明図である。尚、アクチュエータ毎にパラメータ記号206bに対してパラメータ値が設定されたテーブルは、「B表」と呼ばれる。例えば、
図7(a)に示したB表には、5つのパラメータ記号206bが設定されているが、これらはアクチュエータAに対して用いられるパラメータ記号206bである。前述したようにアクチュエータAは、ACサーボモータに変換機構を組み合わせることによって進退動作するアクチュエータであるから、パラメータ記号206bを用いて指定するパラメータ値は、移動距離と、移動速度と、移動トルクとなる。このことに対応して、「AA-pos1」および「AA-pos2」という2つのパラメータ記号206bは移動距離を指定するために用いられ、それぞれ50mm、150mmのパラメータ値が設定されている。また、「AA-spd1」および「AA-spd2」という2つのパラメータ記号206bは移動速度を指定するために用いられ、それぞれ10mm/秒、15mm/秒のパラメータ値が設定されている。更に、「AA-trq1」というパラメータ記号206bは、進退動する際に許容する移動トルクを、ACサーボモータの規格トルクに対する比率で指定するために用いられ、100パーセントのパラメータ値(規格トルクまで許容することを意味する値)が設定されている。
【0043】
また、
図7(b)に示したB表にも、5つのパラメータ記号206bが設定されているが、これらはアクチュエータBに対して用いられるパラメータ記号206bである。前述したようにアクチュエータBは、ACサーボモータに減速機構を組み合わせることによって回転動作するアクチュエータであるから、パラメータ記号206bを用いて指定するパラメータ値は、回転させる回転角度と、回転速度と、回転トルクとなる。このことに対応して、「AB-pos1」および「AB-pos2」という2つのパラメータ記号206bは回転角度を指定するために用いられ、それぞれ90度、30度のパラメータ値が設定されている。また、「AB-spd1」および「AB-spd2」という2つのパラメータ記号206bは回転速度を指定するために用いられ、それぞれ15度/秒、10度/秒のパラメータ値が設定されている。更に、「AB-trq1」というパラメータ記号206bは、進退動する際に許容する移動回転トルクを、ACサーボモータの規格トルクに対する比率で指定するために用いられ、100パーセントのパラメータ値(規格トルクまで許容することを意味する値)が設定されている。
【0044】
同様に、
図7(c)のB表に設定された5つのパラメータ記号206bは、アクチュエータCに対して用いられるパラメータ記号206bであり、
図7(d)のB表に設定された5つのパラメータ記号206bは、アクチュエータDに対して用いられるパラメータ記号206bである。更に、
図7(e)のB表に設定された3つのパラメータ記号206bは、アクチュエータEに対して用いられるパラメータ記号206bである。そして、それぞれのアクチュエータに対して設定されたパラメータ記号206bは、アクチュエータに固有のパラメータ記号206bとなっている。例えば「AB-spd1」というパラメータ記号206bは、アクチュエータBに対して回転速度を指定するためのパラメータ記号206bであり、このパラメータ記号206bが別の目的では使用されないようになっている。
【0045】
YOGOチャート200では、以上に説明した動作記号206aおよびパラメータ記号206bを用いて、基本動作206を記載する。例えば、
図6のYOGOチャート200で、チャート座標(1,1)(すなわち、アクチュエータ番号1番、部分期間番号1番の座標位置)の基本動作206は、動作記号206aが「CNC-XA」であり、パラメータ記号206bが「AA-pos1」、「AA-spd1」、「AA-trq1」となっている。従って、この基本動作206は、アクチュエータを進退動させる動作であり、その時の移動距離は50mm、移動速度は10mm/秒、その時の移動トルクはACサーボモータの規格トルクの最大値まで許容することを表していることになる。
【0046】
以上に説明したように、YOGOチャート200は、アクチュエータ番号と部分期間番号とによって決まる座標位置のマス目の中に、基本動作206の動作記号206aとパラメータ記号206bとを記入することによって記載されている。基本動作206が記入された座標位置のアクチュエータ番号は、基本動作206を行うアクチュエータを表し、部分期間番号は、基本動作206を行うタイミングを表している。更に、基本動作206の動作記号206aおよびパラメータ記号206bは、基本動作206の具体的な内容を表している。このようにして、YOGOチャート200の座標位置に基本動作206を記載することによって、自動製造機械の動作を記述することができる。例えば、
図6のYOGOチャート200は、初めにアクチュエータAを基本動作206で指定された内容で動作させ、アクチュエータAの動作が終了したら、アクチュエータB~Dをそれぞれの基本動作206で指定された内容で動作させ、アクチュエータB~Dの動作が終了したら、今度は、アクチュエータAおよびアクチュエータEをそれぞれの基本動作206の内容で動作させる。そして、アクチュエータAおよびアクチュエータEの動作が終了したら、アクチュエータCおよびアクチュエータDをそれぞれの基本動作206の内容で動作させる。このような一連の動作を記述することが可能となる。
【0047】
尚、本実施例では、動作記号206aと、複数のパラメータ記号206bとを用いて、YOGOチャート200に基本動作206を記載するものとして説明しているが、YOGOチャート200に基本動作206を記載する方法は、これに限られるわけではない。例えば、
図6に示した例では、動作記号206aの下方に列記していた複数のパラメータ記号206bと、それらのパラメータ記号206bに対するパラメータ値とを対応付けたテーブルを設定しておき、それぞれのテーブルには固有のテーブル記号を設定しておく。そして、動作記号206aの下方に複数のパラメータ記号206bを列記する代わりに、それらのパラメータ記号206bに対するパラメータ値が設定されたテーブルのテーブル記号を記載することとしてもよい。
【0048】
以上のようにして、自動製造機械の動作をYOGOチャート200に記載しておけば、そのYOGOチャート200を変換することによって、自動製造機械を動作させるための制御プログラムを自動で生成することができる。もっとも、こうして生成した制御プログラムには、自動製造機械が動作を開始してから終了するまでの全体の動作時間が長くなり易いという問題があった。この理由は、次のようなものである。
【0049】
D.自動製造機械の全体の動作時間が長くなり易い理由 :
図8は、YOGOチャート200から自動生成した制御プログラムを用いて自動製造機械を動作させた場合に、自動製造機械が動作を開始してから終了するまでに要する時間が長くなり易い理由を示した説明図である。
図8(a)には、5つのアクチュエータA~Eを備える自動製造機械の動作を記述したYOGOチャート200が例示されている。尚、
図8(a)のYOGOチャート200では、図示が煩雑となることを避ける目的で、動作線203上には動作記号206aのみが表示され、パラメータ記号206bの表示が省略されている。また、
図8以降のYOGOチャート200についても同様に、パラメータ記号206bの表示は省略する。
【0050】
図8(a)に例示したように、YOGOチャート200を見る限りでは、5つのアクチュエータA~Eが定められた順序で整然と動作しているように見える。例えば、先頭から2つめ(部分期間番号が2)の部分期間では、3つのアクチュエータB~Dに対して同じ長さの動作線203が記載されているので、それらのアクチュエータB~Dが一斉に動作を開始して、同じタイミングで動作を終了しているように見える。しかし、YOGOチャート200に記載された動作線203の長さは、アクチュエータの動作時間を表しているわけではない。
【0051】
図8(b)には、動作線203の長さを、それぞれのアクチュエータが動作する時間の長さに対応するように描き直したYOGOチャート250が示されている。描き直されたYOGOチャート250の上部には経過時間が表示されている。
図8(b)のYOGOチャート250に示されるように、先頭の部分期間(部分期間番号が1番の部分期間)ではアクチュエータAだけが動作し、動作に要する時間が10秒となっている。従って、動作開始から10秒が経過すると部分期間番号2番の部分期間が開始され、3つのアクチュエータB~Dが動作を開始する。ここで、図示した例では、アクチュエータBの動作に要する時間は6秒であり、アクチュエータCの動作に要する時間は8秒、アクチュエータDの動作に要する時間は26秒となっている。従って、アクチュエータBやアクチュエータCにとっては、自らの動作が終了しているにも拘わらずアクチュエータDが動作を終了していないので、現在の部分期間を終了することができない状態(すなわち、アクチュエータDの動作終了を待っている状態)が発生する。この待ち時間は、アクチュエータBにとっては20(=26-6)秒となり、アクチュエータCにとっては18(=26-8)秒となる。
【0052】
また、部分期間番号2番の部分期間が終了すると、部分期間番号3番の部分期間が開始されて、2つのアクチュエータA,Eが動作を開始する。図示した例では、部分期間番号3番の部分期間でのアクチュエータAの動作に要する時間は30秒であり、アクチュエータEの動作に要する時間は6秒となっている。従って、アクチュエータEにとっては、アクチュエータAの動作終了を待っている状態が発生する。この待ち時間は24(=30-6)秒となる。部分期間番号3番の部分期間が終了した後は、今度は、部分期間番号4番の部分期間が開始されてアクチュエータBが動作を開始する。
【0053】
このように長い待ち時間が発生すると、自動製造機械が動作を開始してから終了するまでに要する時間が長くなる。こうした事態が発生する直接的な原因は、同じ部分期間で動作する複数のアクチュエータの中に、他のアクチュエータに比べて動作時間が特に長いアクチュエータが存在することである。しかし、YOGOチャート200の複数の部分期間が、先頭の部分期間から最後の部分期間まで一列に繋がっていることも、間接的には原因の1つになっていると考えられる。すなわち、部分期間が一列に繋がっていると、同じタイミングで動作するアクチュエータは同じ部分期間に割り当てるしかなく、このため、動作時間の大きく異なる複数のアクチュエータが同じ部分期間に割り当てられることになり、長い待ち時間が発生する。
【0054】
E.自動製造機械の全体の動作時間を短縮する方法 :
以上のような点に着眼して、本願の発明者らは、自動製造機械の全体の動作時間を短縮する方法を考え出した。この方法では、自動製造機械の動作期間(先頭の部分期間から最後の部分期間まで)の一部範囲では部分期間を並列化して、並列化された異なる列同士では部分期間の動作を独立して実行する。こうすれば、以下のような理由から、自動製造機械の全体の動作時間を短縮することができる。
【0055】
図8に例示したYOGOチャート200では、部分期間番号2番および3番の部分期間で待ち時間が発生している。そこで、部分期間番号2番および3番の部分期間に対して並列に新たな部分期間を追加することによって、この範囲(部分期間番号2番および3番の範囲)で部分期間を並列化する。そして、部分期間が並列化された範囲では、元々の部分期間に加えて、追加した部分期間にもアクチュエータの動作を割り当てる。尚、以下では、部分期間が並列化された範囲を「並列期間」と称する。また、並列期間内に追加された新たな部分期間を「並列部分期間」と称する。更に、元々の部分期間を並列部分期間に対して区別する必要がある場合には、元々の部分期間を「通常部分期間」と称する。
【0056】
図9には、並列期間が設定された本実施例のYOGOチャート200が例示されている。図示した例では、部分期間番号が2番および3番の部分期間に並列期間210が設定されており、並列期間210は2つの並列部分期間212に分割されている。そして、図中で「S1」と表示した1つめの並列部分期間212にはアクチュエータDの基本動作が割り当てられ、図中で「S2」と表示した2つめの並列部分期間212にはアクチュエータEの基本動作が割り当てられている。尚、S1およびS2は、それぞれ並列部分期間212の部分期間番号である。従って、以下では、「S1」と表示した並列部分期間212を「部分期間番号がS1の並列部分期間212」と称し、「S2」と表示した並列部分期間212を「部分期間番号がS2の並列部分期間212」と称する。また、
図9に示した例では、アクチュエータDおよびアクチュエータEが、本発明における「選択アクチュエータ」に該当する。
【0057】
図10は、
図9に示した(並列期間210を有する)YOGOチャート200の構造を概念的に示した説明図である。図示したように、部分期間番号が1番~5番までの通常部分期間211の中で、部分期間番号が2番および3番の通常部分期間211に対して、部分期間番号がS1およびS2の2つの並列部分期間212が追加されている。このような構造を有するYOGOチャート200を用いれば、次のような動作を記述することができる。
【0058】
先ず、部分期間番号が1番の通常部分期間211に割り当てられたアクチュエータを動作させ、この動作が終了したら、部分期間番号が2番の通常部分期間211に割り当てられたアクチュエータと、部分期間番号がS1の並列部分期間212に割り当てられたアクチュエータとを動作させる。そして、部分期間番号が2番の通常部分期間211の動作が終了したら、部分期間番号が3番の通常部分期間211に割り当てられたアクチュエータを動作させる。また、部分期間番号がS1の並列部分期間212の動作が終了したら、部分期間番号がS2の並列部分期間212に割り当てられたアクチュエータを動作させる。ここで、部分期間番号が3番の通常部分期間211の動作は、部分期間番号がS1の並列部分期間212の動作の終了を待たずに開始することができる。また、部分期間番号がS2の並列部分期間212の動作は、部分期間番号が2番の通常部分期間211の動作の終了を待たずに開始することができる。何故なら、通常部分期間211と並列部分期間212とは別系統の(すなわち並列な)部分期間だからである。また、部分期間番号が4番の通常部分期間211に割り当てられた動作については、部分期間番号が3番の通常部分期間211の動作が終了し、且つ、部分期間番号がS2の並列部分期間212の動作が終了した後に開始される。
【0059】
このような構造のYOGOチャート200では、通常部分期間211の動作については従来のYOGOチャート200と同様に、先頭の通常部分期間211から順番に実行される。また、並列期間210内での並列部分期間212の動作についても先頭の並列部分期間212から順番に実行される。更に、並列期間210が開始される部分(すなわち、通常部分期間211から並列部分期間212が分離する部分)では、直前の通常部分期間211の動作が終了した後でなければ、並列期間210内の先頭の通常部分期間211および先頭の並列部分期間212の何れの動作も開始されることがない。加えて、並列期間210が終了する部分(すなわち、通常部分期間211と並列部分期間212とが合流する部分)では、並列期間210内の最後の通常部分期間211および最後の並列部分期間212の何れの動作も終了した後でなければ、並列期間210に続く通常部分期間211の動作が開始されることがない。従って、従来のYOGOチャートに対する大きな違いは、並列期間210内では、通常部分期間211の動作と並列部分期間212の動作とが独立して実行される点に過ぎない。このため、一部が並列化されたYOGOチャート200を用いた場合でも、従来のYOGOチャート200と同様に自動製造機械の制御プログラムを自動で生成することができる。
【0060】
尚、上述した説明から明らかなように、並列期間210が設定されたYOGOチャート200では、その並列期間210に形成された全ての並列部分期間212に対して、少なくとも1つのアクチュエータの基本動作を割り当てる必要がある。何故なら、並列期間210内の先頭の並列部分期間212から順番にアクチュエータを動作させた時に、アクチュエータの基本動作が割り当てられていない並列部分期間212が存在すると、その並列部分期間212に続く並列部分期間212の動作を開始することができなくなってしまうからである。
【0061】
また、並列期間210で並列部分期間212に対して基本動作が設定されたアクチュエータは、同じ並列期間210の通常部分期間211に対しては基本動作を設定することは避けた方がよい。何故なら、並列期間210では通常部分期間211の動作と並列部分期間212の動作とが独立して実行されるので、同じ並列期間210内で通常部分期間211と並列部分期間212とに同じアクチュエータの基本動作を割り当てると、それらの動作タイミングが重なってしまい、何れの基本動作も実行できなくなる可能性があるためである。
【0062】
図11には、
図9に示した一部が並列化されたYOGOチャート200を、動作線203の長さがアクチュエータの動作時間の長さを表すように描き直したYOGOチャート250が示されている。YOGOチャート250の上部には経過時間が表示されている。また、
図11に示したYOGOチャート250は、
図8(b)に示したYOGOチャート250に対して、一部の部分期間が並列化されている点が異なるが、アクチュエータA~Eの動作時間は同一となっている。尚、
図11中で、アクチュエータDおよびアクチュエータEに対する一部の動作線203が一点鎖線で表示されているのは、その動作が並列部分期間212に設定された動作であることを表している。
【0063】
図11のYOGOチャート250では、部分期間番号がS1の並列部分期間212の動作の実行中に、部分期間番号が2番の通常部分期間211を終了して、部分期間番号が3番の通常部分期間211の動作が開始されている。また、部分期間番号が3番の通常部分期間211の動作の実行中に、部分期間番号がS2の並列部分期間212の動作が開始されている。このため、待ち時間を大幅に減少することができ、自動製造機械の全体の動作時間を短縮することができる。このように、一部が並列化されたYOGOチャート200を用いれば、自動製造機械の全体の動作時間を短縮することが可能となる。
【0064】
尚、
図9~
図11を用いて説明した例では、2つの通常部分期間211を纏めて設定された並列期間210に、2つの並列部分期間212が設定されている。従って、並列期間210に形成された並列部分期間212の個数は、通常部分期間211の個数と同じとなっている。しかし、並列期間210内の並列部分期間212の個数は、通常部分期間211の個数と同じである必要はない。例えば、
図12(a)に示した例では、並列期間210を形成する通常部分期間211は2つであるが、その並列期間210には部分期間番号S1~S3の3つの並列部分期間212が形成されている。あるいは、
図12(b)に示した例では、並列期間210を形成する通常部分期間211は3つであるが、その並列期間210には、部分期間番号S1およびS2の2つの並列部分期間212が形成されている。
【0065】
また、1つのYOGOチャート200に複数の並列期間210を設定しても良い。更に、それらの並列期間210は少なくとも一部が重複していても良い。例えば、
図13に示した例では、部分期間番号が2番および3番の範囲に一点鎖線で囲った並列期間210が設定されており、この一点鎖線の並列期間210には部分期間番号がA1およびA2の2つの並列部分期間212が形成されている。また、部分期間番号が3番~5番の範囲には、二点鎖線で囲った並列期間210が設定されており、この二点鎖線の並列期間210には部分期間番号がB1~B3の3つの並列部分期間212が形成されている。このように、1つのYOGOチャート200に複数の並列期間210を設定しても良く、更には、それらの並列期間210の少なくとも一部を重複させることもできる。尚、
図13に示した例では、アクチュエータD、E、G~Iが、本発明における「選択アクチュエータ」に該当する。
【0066】
更に、
図9や
図12や
図13に示した例では、同じ並列期間210の並列部分期間212は、YOGOチャート200上で互いに隣接するアクチュエータに対して設定されている。すなわち、
図9や
図12のYOGOチャート200上では、アクチュエータDおよびアクチュエータEに対して並列部分期間212が設定されている。また、
図13のYOGOチャート200上では、2つの並列期間210が設定されており、一方の並列期間210の並列部分期間212はアクチュエータDおよびアクチュエータEに対して設定され、他方の並列部分期間212はアクチュエータG~Iに対して設定されている。しかし、同じ並列期間210の並列部分期間212を、YOGOチャート200上で離れた位置のアクチュエータ(例えばアクチュエータAとアクチュエータD)に対して設定しても構わない。
【0067】
F.制御プログラム生成装置110 :
一部が並列化されたYOGOチャート200は、以下のような制御プログラム生成装置110によって制御プログラムに変換される。また、本実施例の制御プログラム生成装置110は、生成した制御プログラムを用いて自動製造機械の動作を制御する動作制御装置120と共に、制御装置100内に組み込まれている。
【0068】
F-1.制御装置100および制御プログラム生成装置110の概要 :
図14は、制御プログラム生成装置110を内蔵した制御装置100についての説明図である。図示されるように、制御装置100は、チャート作成部101や、チャート記憶部102や、制御プログラム生成装置110や、動作制御装置120を備えている。更に、制御プログラム生成装置110は、チャート読込部111や、基本動作記憶部112や、中間データ生成部113や、中間データ変換部114などを備えている。尚、これらの「部」は、制御装置100がYOGOチャート200を作成して、それらを記憶しておくために備える機能や、制御プログラム生成装置110がYOGOチャート200を読み込んで制御プログラムを生成するために備える機能を表した抽象的な概念である。従って、制御装置100や制御プログラム生成装置110が、これらの「部」に相当する部品を組み合わせて形成されていることを表しているわけではない。実際には、これらの「部」は、CPUで実行されるプログラムの形態で実現することもできるし、ICチップやLSIなどを組み合わせた電子回路の形態で実現することもできるし、更には、これらが混在した形態など、様々な形態で実現することができる。
【0069】
チャート作成部101は、モニター画面100mや、操作入力ボタン100sなどに接続されており、パイプベンダ10などの自動製造機械について十分な知識を有する機械技術者などが、モニター画面100mを見ながら操作入力ボタン100sを操作することによって、
図9や
図12や
図13に例示したYOGOチャート200を作成する。自動製造機械の動作について十分な知識を有する技術者であれば、YOGOチャート200を簡単に作成することができる。
【0070】
また、本実施例では、YOGOチャートに基本動作206を記入する際には、原則として動作記号206aとパラメータ記号206bとを用いて基本動作206を記入するが、動作記号206aや、パラメータ記号206bや、パラメータ記号206bに対応するパラメータ値は、基本動作記憶部112に記憶されている。そこで、チャート作成部101は基本動作記憶部112を参照可能となっており、YOGOチャート200を作成する際には、基本動作記憶部112を参照しながら基本動作206を記入することができる。そして、YOGOチャート200が完成したらチャート記憶部102に保存しておく。
【0071】
制御プログラム生成装置110のチャート読込部111は、チャート記憶部102に記憶されているYOGOチャート200を読み込んで、中間データ生成部113に出力する。中間データ生成部113は、読み込んだYOGOチャート200を解析することによって、後述する中間データを生成した後、中間データを中間データ変換部114に出力する。YOGOチャートから中間データを生成する処理については、後ほど詳しく説明する。尚、チャート読込部111は、YOGOチャート200をチャート記憶部102から読み込む代わりに、制御装置100とは別体に設けたコンピュータ50からYOGOチャート200を読み込むようにしてもよい。
【0072】
中間データ変換部114は、中間データを受け取ると、基本動作記憶部112を参照することによって、中間データから制御プログラムを生成する。中間データから制御プログラムを生成する方法については、後ほど詳しく説明する。そして、得られた制御プログラムを、後述する動作制御装置120に出力する。尚、本実施例では、中間データ生成部113および中間データ変換部114が、本発明における「制御プログラム生成部」に対応する。
【0073】
F-2.制御プログラム生成処理 :
図15は、上述した制御プログラム生成装置110が実行する制御プログラム生成処理の概要を示したフローチャートである。図示されるように、制御プログラム生成処理では、先ず初めにYOGOチャートを読み込む(STEP1)。ここでは、
図16に例示したYOGOチャート200を読み込むものとする。
【0074】
図16のYOGOチャート200には、部分期間番号が3番~7番の部分期間の範囲と、部分期間番号が6番~10番の部分期間の範囲の2箇所に並列期間210が設定されている。そして、図中に一点鎖線で囲った1つめの並列期間210では、アクチュエータ番号Mが4番~6番のアクチュエータAc13~Ac15に対して、部分期間番号がA1~A6の6つの並列部分期間212が形成されている。更に、図中の二点鎖線で囲った2つめの並列期間210では、アクチュエータ番号Mが8番および9番のアクチュエータAc17,Ac18に対して、部分期間番号がB1~B3の3つの並列部分期間212が形成されている。尚、1つめの並列期間210では、アクチュエータAc13~Ac15が本発明における「選択アクチュエータ」に該当し、2つめの並列期間210では、アクチュエータAc17,Ac18が本発明における「選択アクチュエータ」に該当する。
【0075】
図15のSTEP1でYOGOチャート200を読み込んだら、そのYOGOチャート200を、通常部分期間211によって形成された部分と、並列部分期間212によって形成された部分とに分離する(STEP2)。尚、以下では、YOGOチャート200中で並列部分期間212によって形成された部分を「ローカルチャート」と称する。また、YOGOチャート200からローカルチャートを除いた部分(すなわち、通常部分期間211によって形成された部分)を「メインチャート」と称する。
【0076】
図17は、
図16のYOGOチャート200から分離されたメインチャート200Mを示す説明図である。図中に一点鎖線で囲った部分および二点鎖線で囲った部分は、ローカルチャートが組み込まれていた部分である。また、
図18は、
図17中の一点鎖線で囲った部分に組み込まれていたローカルチャート200Lを示す説明図である。更に、
図19は、
図17中の二点鎖線で囲った部分に組み込まれていたローカルチャート200Lを示す説明図である。尚、YOGOチャート200から抜き出されたローカルチャート200Lでは、部分期間番号が1番から始まる番号に再付番されている(
図18および
図19参照)。
【0077】
図15のSTEP2でYOGOチャート200をメインチャート200Mとローカルチャート200Lとに分離したら、メインチャート200Mに対して以下のような中間データ生成処理を実行することによって、メインチャート200Mの中間データ300Mを生成する(STEP3)。
【0078】
図20は、中間データ生成処理のフローチャートである。この処理は、制御プログラム生成装置110内の中間データ生成部113によって実行される。図示したように、中間データ生成処理では、先ず初めに、部分期間番号Nおよびアクチュエータ番号Mを「1」に初期化する(STEP10)。続いて、YOGOチャート(ここではメインチャート200M)上のチャート座標(M,N)に、基本動作が記入されているか否かを判断する(STEP11)。尚、チャート座標(M,N)とは、アクチュエータ番号Mおよび部分期間番号Nの組み合わせによって特定されるYOGOチャート200上の座標位置である。STEP10で部分期間番号Nおよびアクチュエータ番号Mを初期化した直後は、NおよびMは何れも「1」であるから、YOGOチャート上のチャート座標(1,1)に基本動作が記入されているか否かを判断することになる。
【0079】
図17に例示したメインチャート200Mの場合では、チャート座標(1,1)には基本動作は記入されていないから、STEP11では「no」と判断して、アクチュエータ番号Mが最終値に達したか否かを判断する(STEP14)。
図17に例示したメインチャート200Mには9個のアクチュエータAc10~Ac18が記載されているから、アクチュエータ番号Mの最終値は9となる。従って、チャート座標(1,1)の基本動作の有無を確認した後のSTEP14の判断では、「no」と判断されるので、アクチュエータ番号Mを1つ増加させる(STEP15)。そして、増加させたアクチュエータ番号Mを用いて、再び、チャート座標(M,N)に基本動作が記入されているか否かを判断する(STEP11)。
【0080】
このように、部分期間番号Nは「1」のまま、アクチュエータ番号Mを1つずつ増加させながら、チャート座標(M,1)に基本動作が記入されているか否かを判断して行き、基本動作が記入されているチャート座標(M,1)に達すると、STEP11で「yes」と判断されることになる。
【0081】
そして、STEP11で「yes」と判断された場合は、そのチャート座標に記入されている基本動作の動作記号206aおよびパラメータ記号206bを読み込む(STEP12)。
図17に例示したメインチャート200Mでは、チャート座標(3,1)に達すると、STEP11で「yes」と判断されて、メインチャート200Mのチャート座標(3,1)に記載された基本動作206の動作記号206aおよびパラメータ記号206bを読み込む。尚、図示が煩雑化することを回避する目的で、
図17のメインチャート200Mでもパラメータ記号206bの表示は省略されている。
【0082】
続いて、基本動作206を読み込んだチャート座標(M,N)と、読み込んだ動作記号206aおよびパラメータ記号206bとを含んだデータ(以下、中間データ(N,M,動作記号,数値テーブル))をメモリに記憶する(STEP13)。こうして、YOGOチャートから読み出した中間データをメモリに記憶した後は(STEP13)、アクチュエータ番号Mが最終値(ここでは、9)に達したか否かを判断する(STEP14)。その結果、最終値に達していない場合は(STEP14:no)、アクチュエータ番号Mを1つ増加させた後(STEP15)、STEP11に戻って、再び、YOGOチャート上のチャート座標(M,N)に基本動作が記入されているか否かを判断する。
【0083】
これに対して、アクチュエータ番号Mが最終値に達していた場合は(STEP14:yes)、今度は、部分期間番号Nが最終値に達したか否かを判断する(STEP16)。
図17に例示したメインチャート200Mでは、最後の部分期間番号は12番なので、部分期間番号Nの最終値は12となる。
【0084】
その結果、部分期間番号Nが最終値に達していない場合は(STEP16:no)、部分期間番号Nを1つ増加させると共に(STEP17)、アクチュエータ番号Mを「1」に初期化した後(STEP18)、STEP11に戻って、再び、YOGOチャート上のチャート座標(M,N)に基本動作が記入されているか否かを判断する。このように、部分期間番号Nが1番の部分期間を上から順番に確認して行き、一番下まで確認したら、今度は、部分期間番号Nが2番の部分期間を上から順番に確認して行き、2番の部分期間を確認し終わったら、部分期間番号Nが3番の部分期間というように、部分期間番号Nが小さな部分期間から大きな部分期間に向かって順番に、YOGOチャートに記入されている基本動作を読み出して、中間データをメモリに記憶して行く。そして、このような操作を繰り返していき、最終的に、部分期間番号Nが最終値に達したと判断したら(STEP16:yes)、YOGOチャートに記入された全ての基本動作を読み出したことになる。そこで、メモリに記憶しておいた中間データを読み出して、中間データ変換部114(
図14参照)に出力する(STEP19)。
【0085】
図21には、
図17に例示したメインチャート200Mから生成された中間データ300Mが例示されている。図示されるように中間データ300は、部分期間番号Nと、アクチュエータ番号Mと、動作記号206aと、パラメータ記号206bとが、この順序で並んだ一組のデータ(以下、「データレコード」と呼ぶ)が集まったものとなっている。また、各データレコードの部分期間番号Nは、1~部分期間番号Nの最終値までの何れかの値を取り、アクチュエータ番号Mは、YOGOチャートに記載されたアクチュエータ番号Mの何れかの値を取る。また、YOGOチャート上の全ての部分期間番号Nは、必ず何れかのデータレコードに記載されており、YOGOチャートに記載された全てのアクチュエータ番号Mは、必ず何れかのデータレコードに記載されている。このような中間データ300Mを出力したら、
図20の中間データ生成処理を終了して、
図15の制御プログラム生成処理に復帰する。
【0086】
こうしてメインチャート200Mの中間データ300Mを生成したら、その中間データ300Mに対して、ローカルチャート200Lの開始位置および終了位置を追加する(STEP4)。
図16に示したYOGOチャート200では、一点鎖線で囲った1つめの並列期間210は部分期間番号が3番~7番の範囲に設定されているから、1つめのローカルチャート200Lの開始位置は部分期間番号が3番の部分期間となり、ローカルチャート200Lの終了位置は部分期間番号が7番の部分期間となる。そこで、中間データ300の中の部分期間番号が3番のデータレコードの最後の位置に、1つめのローカルチャート200Lが開始されることを示すデータレコードを追加する。更に、中間データ300の中の部分期間番号が7番のデータレコードの最後の位置には、1つめのローカルチャート200Lが終了することを示すデータレコードを追加する。
【0087】
図22は、ローカルチャート200Lの開始位置および終了位置が追加された中間データ300Mを示す説明図である。図中に示した(3,0,lclchrt1-str)というデータレコードは、ローカルチャート200Lの開始位置を表すデータレコード207であり、(7,0,lclchrt1-end)というデータレコードは、ローカルチャート200Lの終了位置を表すデータレコード208である。ここで、開始位置を表すデータレコード207中の「lclchrt1-str」というデータは、1つめのローカルチャート200Lが開始されることを表しており、終了位置を表すデータレコード208中の「lclchrt1-end」というデータは、1つめのローカルチャート200Lが終了することを表している。また、これらのデータレコード中の先頭のデータは、ローカルチャート200Lが開始される部分期間番号あるいは終了する部分期間番号を表している。更に、これらのデータレコード中で先頭から2番目のデータが「0」となっているのは、これらのデータレコードがローカルチャート200Lの開始位置あるいは終了位置を示すデータレコードであることを表している。すなわち、通常のデータレコード(アクチュエータの基本動作を表すデータレコード)では、先頭から2番目のデータはアクチュエータ番号Mを表しており、アクチュエータ番号Mは「1」から始まる自然数であるから「0」となることは無い。従って、データレコード中の先頭から2番目のデータが「0」ということは、これらのデータレコードがアクチュエータの基本動作を表す通常のデータレコードではなく、ローカルチャート200Lに関するデータレコードであることを表している。
【0088】
図16中に示した2つめのローカルチャート200Lについても同様に、メインチャート200Mの中間データ300にローカルチャート200Lの開始位置および終了位置を追加する。すなわち、2つめのローカルチャート200Lは部分期間番号が6番~10番の範囲に設定されているから、2つめのローカルチャート200Lの開始位置は部分期間番号が6番の部分期間となり、終了位置は部分期間番号が10番の部分期間となる。そこで、
図22に示すように、中間データ300の部分期間番号が6番のデータレコードの最後の位置に、2つめのローカルチャート200Lの開始位置を示すデータレコード207(6,0,lclchrt2-str)を追加し、部分期間番号が10番のデータレコードの最後の位置に、2つめのローカルチャート200Lの終了位置を示すデータレコード208(10,0,lclchrt2-end)を追加する。ここで、「lclchrt2-str」というデータは、2つめのローカルチャート200Lが開始されることを表しており、「lclchrt2-end」というデータは、2つめのローカルチャート200Lが終了することを表している。
【0089】
以上のようにして、メインチャート200Mの中間データ300Mにローカルチャート200Lの開始位置および終了位置を追加したら(
図15のSTEP4)、今度はローカルチャート200Lの中間データ300Lを生成する(STEP5)。前述したように、
図16に示したYOGOチャート200からは、
図18および
図19に示した2つのローカルチャート200Lが抽出されているから、それぞれのローカルチャート200Lに対して
図20の中間データ生成処理を適用する。こうすることによって、
図18のローカルチャート200Lからは
図23(a)の中間データ300Lが生成され、
図19のローカルチャート200Lからは
図23(b)の中間データ300Lが生成される。
【0090】
こうして得られたメインチャート200Mの中間データ300M、および2つのローカルチャート200Lの中間データ300Lを、それぞれの制御プログラム400に変換する(STEP6)。尚、以下では、メインチャート200Mの中間データ300Mを変換して得られる制御プログラム400を「メインプログラム」と称し、ローカルチャート200Lの中間データ300Lを変換して得られる制御プログラム400を「ローカルプログラム」と称する。
【0091】
図24は、
図22に示したメインチャート200Mの中間データ300Mを変換して得られるメインプログラム400Mについての説明図である。また、
図25(a)および
図25(b)は、それぞれ
図23(a)および
図23(b)に示したローカルチャート200Lの中間データ300Lを変換して得られるローカルプログラム400Lについての説明図である。説明の都合上、初めに、ローカルプログラム400Lについて説明する。
【0092】
図25(a)および
図25(b)に示されるように、ローカルプログラム400Lは、部分期間番号Nと、アクチュエータ番号Mと、プログラム要素番号Pと、パラメータ値Vとが、この順序で並んだ一組のデータ(すなわち、データレコード)が集まったものとなっている。
図23(a)および
図23(b)に示した中間データ300Lのデータレコードと、
図25(a)および
図25(b)に示したローカルプログラム400Lのデータレコードとを比較すれば明らかなように、ローカルプログラム400Lのデータレコードは、中間データ300Lのデータレコード中の動作記号206aが、その動作記号206aに対応するプログラム要素番号Pに置き換えられ、中間データ300のデータレコード中のパラメータ記号206bが、そのパラメータ記号206bに対応するパラメータ値Vに置き換えられたものとなっている。こうして生成されたそれぞれのローカルプログラム400Lは、固有の識別番号が付された状態で、
図14に示した制御プログラム生成装置110の図示しないメモリに記憶される。
【0093】
また、メインチャート200Mの中間データ300Mもほぼ同様にして、メインプログラム400Mに変換することができる。但し、
図22を用いて前述したように、メインチャート200Mの中間データ300Mにはローカルチャート200Lの開始位置を示すデータレコード207や終了位置を示すデータレコード208が追加されている。これらのデータレコードについては次のようにして変換する。
【0094】
先ず、開始位置を示すデータレコード207は、部分期間番号Nと、「0」と、ローカルチャート200Lが開始されることを示すデータとが、この順序で並んだデータレコードとなっている。ここで、2番目のデータの「0」は、このデータレコードがローカルチャート200Lに関するデータレコードであることを表している。そこで、先頭の2つのデータは、そのままメインプログラム400Mのデータとして使用する。また、3つめのデータ(ローカルチャート200Lが開始されることを示すデータ)は、ローカルチャート200Lの開始を表すデータである「1」に変換する。更に、4つめのデータとして、ローカルチャート200Lから生成されたローカルプログラム400Lの識別番号を記憶する。
図24に示したメインプログラム400M中のデータレコード401は、このようにして、開始位置を示すデータレコード207から生成されたデータレコードである。例えば、
図24中の(3,0,1,100)というデータレコード401は、部分期間番号が3番の部分期間でローカルプログラム400Lが開始され、そのローカルプログラム400Lの識別番号が「100」であることを表している。
【0095】
また、終了位置を示すデータレコード208についても、ほぼ同様にして変換する。すなわち、終了位置を示すデータレコード208の先頭の2つのデータは、そのままメインプログラム400Mのデータとして使用する。また、3つめのデータ(ローカルチャート200Lが終了することを示すデータ)は、ローカルチャート200Lの終了を表すデータである「0」に変換する。更に、4つめのデータを追加して、このデータには、終了するローカルプログラム400Lの識別番号を記憶する。
図24に示したメインプログラム400M中のデータレコード402は、このようにして、終了位置を示すデータレコード208から生成されたデータレコードである。例えば、
図24中の(7,0,0,100)というデータレコード402は、部分期間番号が7番の部分期間でローカルプログラム400Lが終了し、そのローカルプログラム400Lの識別番号が「100」であることを表している。
【0096】
以上のようにして中間データ300Mや中間データ300Lをメインプログラム400Mやローカルプログラム400Lに変換する操作は、
図14の中間データ変換部114が、基本動作記憶部112を参照することによって実行される。すなわち、基本動作記憶部112には、動作記号206aがプログラム要素番号と対応付けて記憶されている(
図5参照)。更に、基本動作記憶部112には、
図7に例示したように、パラメータ記号206bと、パラメータ記号206bに対して設定されたパラメータ値Vとが対応付けて記憶されている。そこで、中間データ変換部114は、これらを参照することによって、中間データ中の動作記号206aやパラメータ記号206bを、プログラム要素番号Pおよびパラメータ値Vに置き換えて行く。
【0097】
以上のようにして、中間データ300Mおよび中間データ300Lからメインプログラム400Mおよびローカルプログラム400Lを生成したら(
図15のSTEP6)、生成したメインプログラム400Mおよびローカルプログラム400Lを動作制御装置120に出力して(STEP7)、
図15の制御プログラム生成処理を終了する。
【0098】
G.制御プログラムを用いた自動製造機械の制御の概要 :
制御装置100の動作制御装置120は、制御プログラム生成装置110から受け取った制御プログラム(すなわち、メインプログラム400Mおよびローカルプログラム400L)を図示しないメモリに記憶しておき、以下のようにして自動製造機械の動作を制御する。
【0099】
図26および
図27は、動作制御装置120が制御プログラムを用いて自動製造機械の動作を制御する動作制御処理のフローチャートである。動作制御処理を開始すると、先ず始めに、メモリに記憶されているメインプログラム400Mを読み出す(STEP50)。そして、部分期間番号Nを1に設定した後(STEP51)、メインプログラム400Mの各データレコードの中から、設定された部分期間番号Nのデータレコードを抽出する(STEP52)。
【0100】
動作制御処理を開始した直後は部分期間番号Nが1に設定されているから、
図24のメインプログラム400Mからは、(1,3,1,15,50,100)というデータレコードが抽出されることになる。ここで、データレコード中の1番目の数字は部分期間番号Nであり、2番目の数字はアクチュエータ番号Mであり、3番目の数字はプログラム要素番号Pである。更に、レコード中の4番目~6番目の数字は、プログラム要素に指定するパラメータ値Vである。そこで、データレコード中のアクチュエータ番号Mに基づいて制御対象のアクチュエータを特定し(STEP53)、更に、プログラム要素番号Pおよびパラメータ値Vに基づいて、アクチュエータに出力するコマンドを生成する(STEP54)。
【0101】
その後、STEP52で抽出した部分期間番号Nのデータレコードの中に、ローカルプログラム400Lの開始を示すデータレコード401が存在するか否かを判断する(STEP55)。
図24のメインプログラム400Mの場合は、部分期間番号Nが1のデータレコードの中には、ローカルプログラム400Lの開始を示すデータレコード401は存在しないから、STEP55では「no」と判断する。そして、STEP53で特定した制御対象のアクチュエータに対して、STEP54で生成したコマンドを出力することによって、アクチュエータの動作の制御を開始する(STEP56)。
【0102】
続いて、STEP56で制御を開始した全てのアクチュエータの動作が終了したか否かを判断する(
図27のSTE58)。その結果、まだ動作が終了していないアクチュエータが残っている場合は(STEP58:no)、STEP58の判断を繰り返して実行することにより、全てのアクチュエータの動作が終了するまで待機状態となる。そして、全てのアクチュエータの動作が終了したと判断した場合は(STEP58:yes)、STEP52で抽出したデータレコードの中にローカルプログラム400Lの終了を示すデータレコードが存在するか否かを判断する(STEP59)。部分期間番号Nが1の場合は、ローカルプログラム400Lの終了を示すデータレコードが存在する筈はないので、STEP59では「no」と判断する。
【0103】
続いて、部分期間番号Nが最終値に達したか否かを判断する(STEP61)。部分期間番号Nが1の場合は、部分期間番号Nが最終値に達していないので(STEP61:no)、部分期間番号Nを1つ増加した後(STEP62)、
図26のSTEP52に戻って、メインプログラム400Mの中から新たな部分期間番号Nのデータレコードを抽出する。そして、抽出したデータレコードに対して、上述した一連の操作を行い。すなわち、制御対象のアクチュエータを特定し(STEP53)、特定したアクチュエータに対するコマンドを生成した後(STEP54)、抽出したデータレコードの中にローカルプログラム400Lの開始を示すデータレコードが存在するか否かを判断する(STEP55)。
図24に例示したメインプログラム400Mであれば、部分期間番号Nが2のデータレコードを抽出した場合は、ローカルプログラム400Lの開始を示すデータレコードが存在しないが、部分期間番号Nが3のデータレコードを抽出した場合は、ローカルプログラム400Lの開始を示すデータレコードが存在すると判断されることになる。
【0104】
そして、STEP55で、ローカルプログラム400Lの開始を示すデータレコードが存在しないと判断した場合は(STEP55:no)、STEP53で特定した制御対象のアクチュエータに対して、STEP54で生成したコマンドを出力することによって制御を開始する(STEP56)。これに対して、ローカルプログラム400Lの開始を示すデータレコードが存在すると判断した場合は(STEP55:yes)、そのデータレコード中の識別番号で特定されたローカルプログラム400Lを起動した後(STEP57)、制御対象のアクチュエータに対してコマンドを出力することによって制御を開始する(STEP56)。尚、ローカルプログラム400Lを起動すると、後述するローカルプログラム実行処理が開始される。
【0105】
その後、全てのアクチュエータの動作が終了したか否かを判断して(
図27のSTE58)、動作が終了していないアクチュエータが残っている場合は(STEP58:no)、STEP58の判断を繰り返して実行することによって待機状態となる。そして、全てのアクチュエータの動作が終了したら(STEP58:yes)、STEP52で抽出したデータレコードの中にローカルプログラム400Lの終了を示すデータレコードが存在するか否かを判断する(STEP59)。その結果、ローカルプログラム400Lの終了を示すデータレコードが存在する場合は(STEP59:yes)、その終了予定のローカルプログラム400Lが終了したか否かを判断し(STEP60)、ローカルプログラム400Lがまだ終了していない場合は(STEP60:no)、STEP60の判断を繰り返して実行することによって待機状態となる。そして、終了予定のローカルプログラム400Lが終了したら(STEP60:yes)、部分期間番号Nが最終値に達したか否かを判断する(STEP61)。その結果、部分期間番号Nが最終値に達していない場合は(STEP61:no)、部分期間番号Nを1つ増加した後(STEP62)、再び
図26のSTEP52に戻って、メインプログラム400Mの中から新たな部分期間番号Nのデータレコードを抽出する。
【0106】
このように、部分期間番号Nを1つずつ増加させながら、STEP52~STEP61の操作を行った後、最終的に部分期間番号Nが最終値に達したと判断されたら(STEP61:yes)、
図26および
図27に示す動作制御処理を終了する。
【0107】
また、上述した動作制御処理のSTEP57でローカルプログラム400Lが起動された場合は、以下のようなローカルプログラム実行処理が開始される。
図28および
図29は、上述した動作制御処理の中で起動されるローカルプログラム実行処理のフローチャートである。前述した動作制御処理とローカルプログラム実行処理とを比べると、動作制御処理はメインプログラム400Mを実行するのに対して、ローカルプログラム実行処理はローカルプログラム400Lを実行する点が違っているに過ぎない。従って、ローカルプログラム実行処理の処理内容は、前述した動作制御処理の処理内容とほとんど同じであり、ローカルプログラム実行処理からは他のローカルプログラム400Lを起動しない点が異なるに過ぎない。そこで、この相違点を中心として、ローカルプログラム実行処理について簡単に説明する。
【0108】
ローカルプログラム実行処理を開始すると、先ず始めに、識別番号で特定されたローカルプログラム400Lを読み出す(STEP70)。識別番号は、前述した動作制御処理でローカルプログラム400Lを起動する際に指定されている(
図26のSTEP57参照)。また、ローカルプログラム400Lは、
図15を用いて前述した制御プログラム生成処理によってメモリに記憶されている(STEP7参照)。
【0109】
続いて、部分期間番号Nを1に設定した後(STEP71)、ローカルプログラム400Lの各データレコードの中から、設定された部分期間番号Nのデータレコードを抽出する(STEP72)。そして、データレコード中のアクチュエータ番号Mに基づいて制御対象のアクチュエータを特定し(STEP73)、更に、プログラム要素番号Pおよびパラメータ値Vに基づいて、アクチュエータに出力するコマンドを生成する(STEP74)。
【0110】
前述した動作制御処理では、続いて、ローカルプログラム400Lの開始を示すデータレコード401が存在するか否かを判断している(
図26のSTEP55)。しかし、本実施例ではローカルプログラム400Lから他のローカルプログラム400Lが開始されることは無いとしているので、ローカルプログラム実行処理では、
図26のSTEP55に対応する判断は行わない。
【0111】
そして、制御対象のアクチュエータに対してコマンドを出力することによって、アクチュエータの動作の制御を開始する(STEP75)。続いて、全てのアクチュエータの動作が終了したか否かを判断して(STE76)、動作が終了していないアクチュエータが残っている場合は(STEP76:no)、STEP76の判断を繰り返して実行することによって待機状態となる。その後、全てのアクチュエータの動作が終了したと判断したら(STEP76:yes)、部分期間番号Nが最終値に達したか否かを判断する(
図29のSTEP77)。尚、前述した動作制御処理では、部分期間番号Nが最終値に達したか否かを判断するに先立って、終了するローカルプログラム400Lが存在するか否かを判断している(
図27のSTEP59)。しかし、本実施例ではローカルプログラム400Lから他のローカルプログラム400Lが開始されることは無いとしているので、ローカルプログラム実行処理では、
図27のSTEP59に対応する判断は行わない。
【0112】
そして、部分期間番号Nが最終値に達したか否かを判断した結果、最終値に達していなかった場合は(STEP77:no)、部分期間番号Nを1つ増加した後(STEP78)、再び
図28のSTEP72に戻って、ローカルプログラム400Lの中から新たな部分期間番号Nのデータレコードを抽出する。これに対して、部分期間番号Nが最終値に達していた場合は(STEP77:yes)、ローカルプログラム400Lが終了したことになるので、
図28および
図29に示すローカルプログラム実行処理を終了する。
【0113】
以上に詳しく説明したように、YOGOチャート200の構造を一部が並列化された構造としておけば、各アクチュエータで動作の待ち時間が発生することを抑制することができる。このため、YOGOチャート200から自動的に生成した制御プログラム400を用いて自動製造機械の動作を制御してやれば、自動製造機械が動作を開始してから終了するまでの全体の動作時間を短縮することが可能となる。
【0114】
H.変形例 :
上述した本実施例には複数の変形例が存在する。以下では、本実施例との相違点を中心として変形例について説明する。
【0115】
H-1.第1変形例 :
上述した実施例では、YOGOチャート200の中にローカルチャート200Lを直接記入するものとして説明した(
図16参照)。しかし、YOGOチャート200の中には、ローカルチャート200Lが存在することを示すローカルチャート記号を記入しておき、ローカルチャート200LはYOGOチャート200とは別に作成するものとしても良い。
【0116】
図30は、ローカルチャート記号220が記入された第1変形例のYOGOチャート200についての説明図である。図示した例では、アクチュエータ番号Mが4番で、部分期間番号Nが3番~7番の範囲に、一点鎖線で示した動作線221が記入されており、動作線221の上には、白い星印に続けて、「lclchrt1」というローカルチャート記号220が記載されている。尚、動作線221の開始位置を示す始点222は白い四角印で表されており、動作線221の終了位置を示す終点223は黒い四角印で表されている。また、アクチュエータ番号Mが5番および7番の横長の欄(すなわち、行)についても同様に、部分期間番号Nが3番~7番の範囲に一点鎖線の動作線221が記入され、その動作線221の上には「lclchrt1」というローカルチャート記号220が記載されている。これらの記載は、部分期間番号Nが3番~7番の範囲では、アクチュエータ番号Mが4番、5番、および7番のそれぞれのアクチュエータAc13,Ac14,Ac16の動作が、ローカルチャート記号220によって特定されるローカルチャート200Lに記載されていることを表している。従って、部分期間番号Nが3番~7番の範囲が並列期間210となり、この並列期間210では、アクチュエータ番号Mが4番、5番、および7番のアクチュエータAc13,Ac14,Ac16が、本発明における「選択アクチュエータ」に該当する。
【0117】
また、
図30に例示したYOGOチャート200には、アクチュエータ番号Mが8番および9番で、部分期間番号Nが6番~10番の範囲にも、二点鎖線のローカルチャート記号220の上に、「lclchrt2」というローカルチャート記号220が記載されている。この記載は、部分期間番号Nが6番~10番の範囲では、アクチュエータ番号Mが8番および9番のそれぞれのアクチュエータAc17,Ac18の動作も、ローカルチャート記号220によって特定されるローカルチャート200Lに記載されていることを表している。従って、部分期間番号Nが6番~10番の範囲も並列期間210となり、この並列期間210では、アクチュエータ番号Mが8番および9番のアクチュエータAc17,Ac18が、本発明における「選択アクチュエータ」に該当する。
【0118】
図31は、「lclchrt1」というローカルチャート記号220に対応するローカルチャート200Lを例示した説明図である。図示したローカルチャート200Lには、部分期間番号が1番~6番の6つの部分期間に対して、アクチュエータ番号Mが4番、5番、および7番のアクチュエータAc13,Ac14,Ac16の基本動作が記載されている。ここで、ローカルチャート200Lに基本動作が記載されたアクチュエータがこれら3つのアクチュエータAc13,Ac14,Ac16である理由は、
図30のYOGOチャート200中で「lclchrt1」というローカルチャート記号220が記載されているアクチュエータが、これら3つのアクチュエータAc13,Ac14,Ac16だからである。また、
図30のYOGOチャート200中で「lclchrt1」というローカルチャート記号220が記載された並列期間210は、部分期間番号が3番~7番の5つの部分期間によって形成されている。従って、
図30のYOGOチャート200で部分期間番号が3番~7番の5つの部分期間が進む間に、
図31に示したローカルチャート200Lの6つの部分期間が進むことになる。
【0119】
図32は、「lclchrt2」というローカルチャート記号220に対応するローカルチャート200Lを例示した説明図である。図示したローカルチャート200Lには、部分期間番号が1番~3番の3つの部分期間に対して、アクチュエータ番号Mが8番および9番の2つのアクチュエータAc17,Ac18の基本動作が記載されている。ローカルチャート200Lに基本動作が記載されたアクチュエータがこれら2つのアクチュエータAc17,Ac18である理由は、
図30のYOGOチャート200中で「lclchrt2」というローカルチャート記号220が記載されているアクチュエータが、これら2つのアクチュエータAc17,Ac18だからである。また、
図30のYOGOチャート200中で「lclchrt2」というローカルチャート記号220が記載された並列期間210は、部分期間番号が6番~10番の5つの部分期間によって形成されている。従って、
図30のYOGOチャート200で部分期間番号が6番~10番の5つの部分期間が進む間に、
図32に示したローカルチャート200Lの3つの部分期間が進むことになる。
【0120】
以上のように、YOGOチャート200にはローカルチャート記号220を記載しておき、YOGOチャート200とは別にローカルチャート記号220に対応するローカルチャート200Lを作成することによっても、前述した本実施例と一部が並列化されたYOGOチャート200を作成することができる。このため、前述した本実施例と同様な理由により、自動製造機械の全体の動作時間を短縮することが可能となる。
【0121】
また、上述した第1変形例の方法を用いれば、YOGOチャート200にはローカルチャート記号220を記載しておけば良いので、YOGOチャート200の記載が複雑になることも無い。その結果、一部が並列化されたYOGOチャート200を作成する際や、YOGOチャート200の内容を理解する際に、ミスをする可能性を抑制することが可能となる。
【0122】
H-2.第2変形例 :
上述した第1変形例では、1つの並列期間210に設定されるローカルチャート200Lは一種類であるものとして説明した。例えば、
図30に例示したYOGOチャート200では、部分期間番号が3番~7番の並列期間210には「localchart1」というローカルチャート200Lが設定されており、部分期間番号が6番~10番の並列期間210には「localchart2」というローカルチャート200Lが設定されているものとして説明した。しかし、1つの並列期間210に対して、並列部分期間212の個数が異なる複数種類のローカルチャート200Lを設定しても良い。
【0123】
例えば、
図33に例示したYOGOチャート200では、部分期間番号が3番~7番の部分期間が並列期間210に纏められており、この並列期間210では、アクチュエータ番号Mが4番、5番、および7番の3つのアクチュエータに対しては「lclchrt1」というローカルチャート記号220が記載され、アクチュエータ番号Mが8番および9番の2つのアクチュエータに対しては「lclchrt2」というローカルチャート記号220が記載されている。ここで、「lclchrt1」というローカルチャート記号220は、6つの部分期間に亘る動作を記載した「localchart1」というローカルチャート200Lを示しており(
図31参照)、「lclchrt2」というローカルチャート記号220は、3つの部分期間に亘る動作を記載した「localchart2」というローカルチャート200Lを示している(
図32参照)。
【0124】
このように、1つの並列期間210に対して、並列部分期間212の個数が異なる複数種類のローカルチャート200Lを設定することで、各アクチュエータの動作をYOGOチャート200に、より柔軟に記載することが可能となる。その結果、アクチュエータの動作が終了しているにも拘わらず、他のアクチュエータの動作が終了していないために次の動作を開始することができない「待ち時間」の発生を、より一層抑制することが可能となる。
【0125】
また、並列期間210内の通常部分期間211の動作(すなわち、ローカルチャート200Lに動作が記載されていないアクチュエータの動作)を、ローカルチャート200Lとは別のチャート(以下、グローバルチャート200Gと称する)に纏めてやれば、YOGOチャート200の記載を簡素にすることができる。
【0126】
例えば、
図33に例示したYOGOチャート200の並列期間210では、アクチュエータ番号Mが1番、5番、7番の3つのアクチュエータAc13,Ac14,Ac16の動作、およびアクチュエータ番号Mが8番、9番の2つのアクチュエータAc17,Ac18の動作は、
図31および
図32のローカルチャート200Lに記載されている。しかし、それ以外のアクチュエータ(アクチュエータ番号Mが1番~3番、6番の4つのアクチュエータAc10~Ac12,Ac15)の動作は、ローカルチャート200Lには記載されていない。そこで、
図34に例示したように、これらのアクチュエータの動作をグローバルチャート200Gに記載する。そして、YOGOチャート200の並列期間210には、グローバルチャート200Gに対応するグローバルチャート記号230を記載することによって、これらのアクチュエータ(アクチュエータ番号Mが1番~3番、6番の4つのアクチュエータAc10~Ac12,Ac15)の動作がグローバルチャート200Gに記載されていることを表示しても良い。
【0127】
図35に例示したYOGOチャート200では、並列期間210中で、且つ、アクチュエータ番号Mが1番~3番、6番の位置に、「glblchrt1」というグローバルチャート記号230が記載されている。これは、アクチュエータ番号Mが1番~3番、6番の各アクチュエータAc10~Ac12,Ac15の動作は、「globalchart1」というグローバルチャート200Gに記載されていることを表している。グローバルチャート記号230を用いて記載した
図35のYOGOチャート200と、グローバルチャート記号230を用いずに記載した
図33のYOGOチャート200とを比較すれば明らかなように、グローバルチャート記号230を用いることでYOGOチャート200の記載を簡素にすることができる。
【0128】
更に、
図35に例示したYOGOチャート200には、並列期間210が5つの部分期間(部分期間番号が3番~7番の部分期間)によって形成されているという情報も表示されている。しかし、実際には、並列期間210を形成する5つの部分期間を通して、ローカルチャート記号220またはグローバルチャート記号230の何れかが記載されているだけであり、並列期間210が5つの部分期間によって形成されていることを表示する必要性が乏しい。また、この情報は、グローバルチャート200Gを形成する部分期間の個数から取得することができるので、YOGOチャート200に表示する必要もない。
【0129】
そこで、
図36に示したように、並列期間210を形成する5つの部分期間(部分期間番号が3番~7番の部分期間)を先頭の部分期間(部分期間番号が3番の部分期間)に集約してしまい、集約した1つの部分期間に、ローカルチャート記号220またはグローバルチャート記号230を記載するようにしても良い。こうすれば、YOGOチャート200の記載を更に簡素にすることが可能となる。
【0130】
以上、本実施例および変形例の制御プログラム生成装置110について説明したが、本発明は上記の実施例および変形例に限られるものではなく、その要旨を逸脱しない範囲において種々の態様で実施することが可能である。
【0131】
例えば、上述した本実施例および変形例では、ローカルチャート200Lに並列期間210が設定されることはないものとして説明した。ローカルチャート200Lに並列期間210を設定して、そのローカルチャート200Lの並列期間210にローカルチャート200Lを設定してもよい。
【符号の説明】
【0132】
10…パイプベンダ、 11…レール、 12…搬送ユニット、
12a…把持軸、 12b…チャック、 13…加工ユニット、
50…コンピュータ、 100…制御装置、 100m…モニター画面、
100s…操作入力ボタン、 101…チャート作成部、
102…チャート記憶部、 110…制御プログラム生成装置、
111…チャート読込部、 112…基本動作記憶部、
113…中間データ生成部、 114…中間データ変換部、
120…動作制御装置、 200…YOGOチャート、
200G…グローバルチャート、 200L…ローカルチャート、
200M…メインチャート、 201…仕切線、 202…トリガ線、
203…動作線、 204…始点、 205…終点、 206…基本動作、
206a…動作記号、 206b…パラメータ記号、
207,208…データレコード、 210…並列期間、
211…通常部分期間、 212…並列部分期間、
220…ローカルチャート記号、 221…動作線、 222…始点、
223…終点、 230…グローバルチャート記号、
300,300L,300M…中間データ、 400…制御プログラム、
400L…ローカルプログラム、 400M…メインプログラム、
401,402…データレコード、 Ac10~18…アクチュエータ、
DA10~18…ドライバアンプ。