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

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

▶ 株式会社オプトンの特許一覧

特許7114035動作制御装置、動作制御方法、プログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-29
(45)【発行日】2022-08-08
(54)【発明の名称】動作制御装置、動作制御方法、プログラム
(51)【国際特許分類】
   G05B 19/042 20060101AFI20220801BHJP
   B25J 13/00 20060101ALI20220801BHJP
   G05B 19/4155 20060101ALI20220801BHJP
【FI】
G05B19/042
B25J13/00 Z
G05B19/4155 M
【請求項の数】 6
(21)【出願番号】P 2021010883
(22)【出願日】2021-01-27
(65)【公開番号】P2022013621
(43)【公開日】2022-01-18
【審査請求日】2021-12-08
(31)【優先権主張番号】P 2020112920
(32)【優先日】2020-06-30
(33)【優先権主張国・地域又は機関】JP
【早期審査対象出願】
(73)【特許権者】
【識別番号】000150213
【氏名又は名称】株式会社オプトン
(74)【代理人】
【識別番号】100111970
【弁理士】
【氏名又は名称】三林 大介
(72)【発明者】
【氏名】路 海寧
(72)【発明者】
【氏名】可兒 利弘
(72)【発明者】
【氏名】與語 照明
【審査官】影山 直洋
(56)【参考文献】
【文献】特開平11-202912(JP,A)
【文献】特開平06-250715(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/4155
B25J 13/00
G05B 19/042
(57)【特許請求の範囲】
【請求項1】
複数のアクチュエータを搭載した自動製造機械(10,20,30)に適用されて、予め記憶されている制御プログラムに従って複数の前記アクチュエータを動作させることによって、前記自動製造機械の動作を制御する動作制御装置(120)であって、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、各々の前記部分期間に対して、動作させる前記アクチュエータと、前記アクチュエータの動作内容とを割り当てることによって前記自動製造機械の動作を記述した動作記述データを、前記制御プログラムとして記憶している制御プログラム記憶部(121)と、
複数の前記部分期間の中から1の前記部分期間を制御対象期間として選択する制御対象期間選択部(123)と、
前記制御プログラムの中から、前記制御対象期間での制御対象となる前記アクチュエータである制御対象アクチュエータと、前記制御対象アクチュエータの動作内容である制御対象動作内容とを抽出する制御内容抽出部(124)と、
前記制御対象アクチュエータが前記制御対象動作内容で動作するように、前記制御対象アクチュエータの動作をフィードバック制御する制御実行部(127)と
を備え、
前記制御対象期間選択部は、前記制御対象アクチュエータに対する前記フィードバック制御が終了すると、現在の前記制御対象期間の次の前記部分期間を新たな前記制御対象期間として選択する
ことを特徴とする動作制御装置。
【請求項2】
請求項1に記載の動作制御装置であって、
前記制御プログラム記憶部は、何れの前記部分期間に対しても、割り当てられる前記アクチュエータの数が、所定の許容割当数以下となっている前記制御プログラムを記憶している
ことを特徴とする動作制御装置。
【請求項3】
請求項1または請求項2に記載の動作制御装置であって、
前記制御プログラム記憶部は、前記アクチュエータの動作内容として、前記アクチュエータの動作目標値と、前記動作目標値に達するまでの経過動作を生成するための情報とを含んだ前記制御プログラムを記憶しており、
前記制御内容抽出部は、前記制御対象動作内容として、前記動作目標値と、前記経過動作を生成するための情報とを抽出しており、
前記制御実行部は、前記動作目標値と、前記経過動作を生成するための情報とに基づいて前記経過動作を生成して、前記制御対象アクチュエータが前記経過動作で前記動作目標値に達するように、前記制御対象アクチュエータの動作をフィードバック制御する
ことを特徴とする動作制御装置。
【請求項4】
請求項3に記載の動作制御装置であって、
前記制御実行部は、
前記制御対象アクチュエータが前記経過動作で前記動作目標値に達するまでの所定の時間間隔毎の経過目標値を算出し、
前記所定の時間間隔で前記制御対象アクチュエータの動作を検出して、
前記制御対象アクチュエータの動作の検出値が前記経過目標値となるように、前記制御対象アクチュエータの動作をフィードバック制御する
ことを特徴とする動作制御装置。
【請求項5】
複数のアクチュエータを搭載した自動製造機械(10,20,30)の動作を制御する動作制御装置(120)に適用されて、予め記憶されている制御プログラムに従って複数の前記アクチュエータを動作させることによって、前記自動製造機械の動作を制御する動作制御方法であって、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、各々の前記部分期間に対して、動作させる前記アクチュエータと、前記アクチュエータの動作内容とを割り当てることによって前記自動製造機械の動作を記述した前記制御プログラムを読み出す工程(STEP50)と、
複数の前記部分期間の中から1の前記部分期間を制御対象期間として選択する工程(STEP51、STEP63)と、
前記制御プログラムの中から、前記制御対象期間での制御対象となる前記アクチュエータである制御対象アクチュエータと、前記制御対象アクチュエータの動作内容である制御対象動作内容とを抽出する工程(STEP52~STEP55)と、
前記制御対象アクチュエータが前記制御対象動作内容で動作するように、前記制御対象アクチュエータの動作をフィードバック制御する工程(STEP59)と
を備え、
前記制御対象期間を選択する工程は、前記制御対象アクチュエータに対する前記フィードバック制御が終了すると、現在の前記制御対象期間の次の前記部分期間を新たな前記制御対象期間として選択する
ことを特徴とする動作制御方法。
【請求項6】
複数のアクチュエータを搭載した自動製造機械(10,20,30)の動作を制御する動作制御装置(120)に適用されて、予め記憶されている制御プログラムに従って複数の前記アクチュエータを動作させることによって、前記自動製造機械の動作を制御する動作制御方法を、前記動作制御装置に搭載されたコンピュータを用いて実現させるプログラムであって、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、各々の前記部分期間に対して、動作させる前記アクチュエータと、前記アクチュエータの動作内容とを割り当てることによって前記自動製造機械の動作を記述した前記制御プログラムを読み出す機能(STEP50)と、
複数の前記部分期間の中から1の前記部分期間を制御対象期間として選択する機能(STEP51、STEP63)と、
前記制御プログラムの中から、前記制御対象期間での制御対象となる前記アクチュエータである制御対象アクチュエータと、前記制御対象アクチュエータの動作内容である制御対象動作内容とを抽出する機能(STEP52~STEP55)と、
前記制御対象アクチュエータが前記制御対象動作内容で動作するように、前記制御対象アクチュエータの動作をフィードバック制御する機能(STEP59)と
をコンピュータを用いて実現させると共に、
前記制御対象期間を選択する機能は、前記制御対象アクチュエータに対する前記フィードバック制御が終了すると、現在の前記制御対象期間の次の前記部分期間を新たな前記制御対象期間として選択する機能である
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のアクチュエータを備えた自動製造機械の動作を制御プログラムに従って制御する技術に関する。
【背景技術】
【0002】
工場などの製造現場の生産性を向上させるためには、自動製造機械を利用した製造工程の自動化が不可欠と考えられる。ここで製造工程には、加工あるいは製造しようとする対象物や、加工の内容(例えば、切削加工や、曲げ加工)などに応じて様々な工程が存在するので、自動化しようとする製造工程に応じて、様々なタイプの自動製造機械が開発されている(例えば、特許文献1、特許文献2)。
【0003】
また、同じような製造工程であっても、具体的な内容は製造現場毎に異なっている。このため、他の製造現場に導入されている自動製造機械を流用することは困難であり、製造現場毎に専用の自動製造機械を開発しなければならないことが一般的である。そして、専用の自動製造機械を開発すると、その自動製造機械を制御するための制御プログラムも、新たに開発する必要が生じる。
【0004】
ところが、制御プログラムを開発するためには多大な労力が必要となる。加えて、製造現場の生産性を向上させるためには、自動製造機械に複雑な動作を行わせたり、複数種類の自動製造機械を組み合わせて製造システムを形成したりする必要が生じ、それに伴って、制御プログラムの開発に必要な労力は更に増加する。そこで本願の発明者らは、自動製造機械の動作を特殊な動作チャートに記述することで、動作チャートから制御プログラムを自動生成することが可能な技術を開発して既に出願済みである(特願2020-075017)。尚、この特殊な動作チャートは、本願の発明者が開発した動作チャートであって、従来には存在しないものであるため、以下では、この動作チャートのことを「YOGOチャート」と称することにする。
【0005】
この動作チャート(YOGOチャート)は、自動製造機械の動作を理解していれば容易に作成することができるという特長を有している。このため、自動製造機械に搭載されるアクチュエータの数が多くなった場合でも、自動製造機械のYOGOチャートを短時間で作成することができる。更には、複数種類の自動製造機械を組み合わせて製造システムを形成する場合でも、それらの自動製造機械のYOGOチャートを短時間で作成することができる。そして、YOGOチャートを作成しておけば、制御プログラムを容易に生成することが可能となる。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2011-245602号公報
【文献】特開2018-192570号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかし、上述した出願中の技術では、制御プログラムを容易に作成することが可能ではあるものの、作成した制御プログラムを容易に実行できるとは限らないという問題があった。この理由は、制御対象となるアクチュエータの数が多くなると、それらのアクチュエータを制御するために必要な処理能力が増加するため、高い処理能力を有する制御装置を用意しておかなければ、制御プログラムを必要な速度で実行することができないためである。また、複数種類の自動製造機械を用いて製造システムを形成した場合も、結局は、制御すべきアクチュエータの数が多くなるため、高い処理能力を有する制御装置を用意しておかなければ、制御プログラムを必要な速度で実行することができないためである。
【0008】
この発明は、従来の技術が有する上述した課題を解決するために成されたものであり、動作チャート(YOGOチャート)から生成された制御プログラムを、容易に実行することが可能な技術の提供を目的とする。
【課題を解決するための手段】
【0009】
上述した課題を解決するために、本発明の動作制御装置は次の構成を採用した。すなわち、
複数のアクチュエータを搭載した自動製造機械(10,20,30)に適用されて、予め記憶されている制御プログラムに従って複数の前記アクチュエータを動作させることによって、前記自動製造機械の動作を制御する動作制御装置(120)であって、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、各々の前記部分期間に対して、動作させる前記アクチュエータと、前記アクチュエータの動作内容とを割り当てることによって前記自動製造機械の動作を記述した動作記述データを、前記制御プログラムとして記憶している制御プログラム記憶部(121)と、
複数の前記部分期間の中から1の前記部分期間を制御対象期間として選択する制御対象期間選択部(123)と、
前記制御プログラムの中から、前記制御対象期間での制御対象となる前記アクチュエータである制御対象アクチュエータと、前記制御対象アクチュエータの動作内容である制御対象動作内容とを抽出する制御内容抽出部(124)と、
前記制御対象アクチュエータが前記制御対象動作内容で動作するように、前記制御対象アクチュエータの動作をフィードバック制御する制御実行部(127)と
を備え、
前記制御対象期間選択部は、前記制御対象アクチュエータに対する前記フィードバック制御が終了すると、現在の前記制御対象期間の次の前記部分期間を新たな前記制御対象期間として選択する
ことを特徴とする。
【0010】
また、上述した動作制御装置に対応する本発明の動作制御方法は次の構成を採用した。すなわち、
複数のアクチュエータを搭載した自動製造機械(10,20,30)の動作を制御する動作制御装置(120)に適用されて、予め記憶されている制御プログラムに従って複数の前記アクチュエータを動作させることによって、前記自動製造機械の動作を制御する動作制御方法であって、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、各々の前記部分期間に対して、動作させる前記アクチュエータと、前記アクチュエータの動作内容とを割り当てることによって前記自動製造機械の動作を記述した前記制御プログラムを読み出す工程(STEP50)と、
複数の前記部分期間の中から1の前記部分期間を制御対象期間として選択する工程(STEP51、STEP63)と、
前記制御プログラムの中から、前記制御対象期間の制御対象となる前記アクチュエータである制御対象アクチュエータと、前記制御対象アクチュエータの動作内容である制御対象動作内容とを抽出する工程(STEP52~STEP55)と、
前記制御対象アクチュエータが前記制御対象動作内容で動作するように、前記制御対象アクチュエータの動作をフィードバック制御する工程(STEP59)と
を備え、
前記制御対象期間を選択する工程は、前記制御対象アクチュエータに対する前記フィードバック制御が終了すると、現在の前記制御対象期間の次の前記部分期間を新たな前記制御対象期間として選択する
ことを特徴とする。
【0011】
かかる本発明の動作制御装置および動作制御方法では、次のような制御プログラムを制御に使用する。すなわち、自動製造機械の動作期間が複数の部分期間に分割されており、各々の部分期間に対して、動作させるアクチュエータと、アクチュエータの動作内容とを割り当てられることによって、自動製造機械の動作が記述された制御プログラムを使用する。自動製造機械の動作を制御するに際しては、制御対象の部分期間を順番に1つずつ選択して、制御プログラムの中から、その部分期間に割り当てられたアクチュエータおよびアクチュエータの動作内容を抽出する。そして、抽出したアクチュエータが、抽出した動作内容で動作するように、アクチュエータの動作をフィードバック制御する。こうすれば、たとえ多数のアクチュエータを搭載した自動製造機械の動作を制御する場合でも、同時に制御するアクチュエータの数を抑制することができる。その結果、高い処理能力を有する動作制御装置を用意する必要が無くなるので、制御プログラムを容易に実行することが可能となる。
【0012】
また、上述した本発明の動作制御装置においては、何れの部分期間に対しても、所定の許容割当数以下のアクチュエータが割り当てられている制御プログラムを記憶しておいてもよい。
【0013】
こうすれば、同時に制御するアクチュエータの数を、所定の許容割当数以下に抑制することができるので、高い処理能力を有する動作制御装置を用いなくても、制御プログラムを実行することが可能となる。
【0014】
また、上述した本発明の動作制御装置においては、部分期間に割り当てられたアクチュエータの動作内容として、アクチュエータの動作目標値と、動作目標値に達するまでの過程の動作(すなわち経過動作)を生成するための情報とが記述されている制御プログラムを記憶しておいても良い。そして、制御対象期間を選択すると、その制御対象期間に割り当てられた動作目標値と、経過動作を生成するための情報とを、制御対象動作内容として抽出することにより、制御対象アクチュエータについての経過動作を生成する。そして、その経過動作に従って制御対象アクチュエータが動作目標値に達するように、制御対象アクチュエータの動作をフィードバック制御しても良い。
【0015】
こうすれば、アクチュエータが所望の態様の経過動作を経て、所望の動作目標値に達するように制御することができるので、自動製造機械をより適切に制御することが可能となる。
【0016】
また、上述した本発明の動作制御装置においては、次のような方法で、制御対象アクチュエータの動作をフィードバック制御しても良い。先ず、制御対象アクチュエータが経過動作を経て動作目標値に達するまでの、所定の時間間隔毎の経過目標値を算出しておく。そして、所定の時間間隔で制御対象アクチュエータの動作を検出して、検出値が経過目標値となるように、制御対象アクチュエータの動作をフィードバック制御するようにしても良い。
【0017】
こうすれば、所定の時間間隔を小さな値に設定しておくことで、アクチュエータの動作を精密に制御することが可能となる。
【0018】
また、前述した本発明の動作制御方法は、動作制御装置に搭載されたコンピュータを用いて本発明の動作制御方法を実現するためのプログラムとして把握することも可能である。すなわち、本発明のプログラムは、
複数のアクチュエータを搭載した自動製造機械(10,20,30)の動作を制御する動作制御装置(120)に適用されて、予め記憶されている制御プログラムに従って複数の前記アクチュエータを動作させることによって、前記自動製造機械の動作を制御する動作制御方法を、前記動作制御装置に搭載されたコンピュータを用いて実現させるプログラムであって、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、各々の前記部分期間に対して、動作させる前記アクチュエータと、前記アクチュエータの動作内容とを割り当てることによって前記自動製造機械の動作を記述した前記制御プログラムを読み出す機能(STEP50)と、
複数の前記部分期間の中から1の前記部分期間を制御対象期間として選択する機能(STEP51、STEP63)と、
前記制御プログラムの中から、前記制御対象期間の制御対象となる前記アクチュエータである制御対象アクチュエータと、前記制御対象アクチュエータの動作内容である制御対象動作内容とを抽出する機能(STEP52~STEP55)と、
前記制御対象アクチュエータが前記制御対象動作内容で動作するように、前記制御対象アクチュエータの動作をフィードバック制御する機能(STEP59)と
をコンピュータを用いて実現させると共に、
前記制御対象期間を選択する機能は、前記制御対象アクチュエータに対する前記フィードバック制御が終了すると、現在の前記制御対象期間の次の前記部分期間を新たな前記制御対象期間として選択する機能である
ことを特徴とする。
【0019】
このようなプログラムを動作制御装置のコンピュータに読み込ませて実行させれば、高い勝利能力を有する動作制御装置を用意しなくても、十分に実用的な速度で制御プログラムを実行することが可能となる。
【図面の簡単な説明】
【0020】
図1】本実施例の動作制御装置120によって制御される製造システム1を例示した説明図である。
図2】製造システム1で用いられるアームロボット20、30の大まかな構造を示した説明図である。
図3】製造システム1で用いられるパイプベンダ10の大まかな構造を示した説明図である。
図4】パイプベンダ10に搭載された複数のアクチュエータAc10~Ac19が、ドライバアンプDA10~DA19を介して本実施例の動作制御装置120に接続されている様子を示した説明図である。
図5】制御するアクチュエータの総数が多くなっても、制御プログラムの実行に必要な処理能力の増大を回避することが可能な基本原理についての説明図である。
図6】制御プログラムの実行に必要な処理能力の増大を回避することが可能な基本原理について補足説明する説明図である。
図7】YOGOチャートの部分期間に割り当てられた基本動作の数が許容割当数以下となるようにYOGOチャートを自動的に修正する方法についての説明図である。
図8】本実施例の制御プログラム生成装置110が読み込むYOGOチャートの一部を例示した説明図である。
図9】YOGOチャートに記入される各種の基本動作の動作記述206aについての説明図である。
図10】「Ω-AA」という動作記述206aと組み合わせて用いられる数値テーブル206bを例示した説明図である。
図11】「Ω-AB」という動作記述206aと組み合わせて用いられる数値テーブル206bを例示した説明図である。
図12】中央制御装置100に搭載された制御プログラム生成装置110についての説明図である。
図13】アクチュエータと動作記述206aとプログラム要素番号とが対応づけられて記憶されている様子を示した説明図である。
図14】制御プログラム生成装置110がYOGOチャートから制御プログラムを生成するために実行する制御プログラム生成処理のフローチャートである。
図15】制御プログラム生成処理の中で実行されるYOGOチャート解析処理のフローチャートである。
図16】YOGOチャート解析処理によってYOGOチャートから生成される中間データを例示した説明図である。
図17】中間データを変換することによって生成された制御プログラムを例示した説明図である。
図18】中央制御装置100に搭載された本実施例の動作制御装置120についての説明図である。
図19】本実施例の動作制御装置120が制御プログラムに従って自動製造機械の動作を制御する動作制御処理の前半部分のフローチャートである。
図20】動作制御処理の後半部分のフローチャートである。
図21】各種のプログラム要素番号Pに対応付けてコマンドが記憶されている様子を示した説明図である。
図22】コマンドに応じて経過目標値の数値列を生成する様子を示した説明図である。
図23】他のコマンドに応じて経過目標値の数値列を生成する様子を示した説明図である。
図24】基本動作が終了したものとみなすための条件が設定された第1変形例の数値テーブル206bを例示した説明図である。
図25】第2変形例の動作制御装置120についての説明図である。
【発明を実施するための形態】
【0021】
A.装置構成 :
A-1.製造システム1の概要 :
図1は、パイプ状の素材Aに曲げ加工を施すことによって所定形状の完成品Bを製造する製造システム1を例示した説明図である。図示した製造システム1は、集積場に積み上げられた素材Aを掴んでパイプベンダ10に装着するアームロボット20と、装着されたパイプ状の素材Aに曲げ加工を施すパイプベンダ10と、パイプベンダ10で曲げ加工された完成品Bを掴んで集積場に積み上げるアームロボット30とを備えている。また、パイプベンダ10や、アームロボット20,30は中央制御装置100に接続されている。
【0022】
中央制御装置100には、制御プログラム生成装置110や動作制御装置120が内蔵されており、制御プログラム生成装置110は、パイプベンダ10やアームロボット20,30の動作を制御するための制御プログラムを生成して、動作制御装置120に出力する。そして、動作制御装置120は、その制御プログラムに従って、パイプベンダ10やアームロボット20,30の動作を制御するようになっている。
【0023】
尚、本実施例では、アームロボット20、30や、パイプベンダ10が、本発明における「自動製造機械」に対応するが、自動製造機械は、アームロボット20、30や、パイプベンダ10に限られるわけではない。すなわち、複数のアクチュエータを搭載して、対象物に対して把持、搬送、加工、加熱などの複数の動作を自動で実行することが可能な製造機械であれば、本発明における「自動製造機械」に対応する。
【0024】
A-2.アームロボット20、30の概要 :
図2は、製造システム1で用いられるアームロボット20、30の大まかな構造を示した説明図である。また、図2中には、アームロボット20、30に搭載された複数のアクチュエータが動作制御装置120に接続されている様子も示されている。図2に示したアームロボット20およびアームロボット30は、一般的な6軸式のアームロボットの先端に、対象物を把持するための機構が接続された構造となっている。尚、本実施例のアームロボット20とアームロボット30とは同じ構造となっているので、以下ではアームロボット20について説明し、アームロボット30については、アームロボット20についての説明を読み替えるものとする。このことに対応して、図2中では、アームロボット20についての付番は()を付けずに表示され、その付番に併記される状態で、アームロボット30についての付番が()付きで表示されている。
【0025】
図2に示されるように、本実施例のアームロボット20(30)は、床面に設置された基台21(31)と、基台21(31)に対して旋回可能に取り付けられた本体部22(32)と、本体部22(32)に対して回動可能に取り付けられた第1アーム部23(33)と、第1アーム部23(33)に対して回動可能に取り付けられた第2アーム部24(34)と、第2アーム部24(34)に対して旋回可能に取り付けられた第3アーム部25(35)と、第3アーム部25(35)に対して回動可能に取り付けられた第4アーム部26(36)と、第4アーム部26(36)に対して旋回可能に取り付けられた掌部27(37)とを備えている。更に、掌部27(37)には、2つの把持部28(38)が互いに向かい合わせに立設されている。尚、「旋回」とは、一方の部材が他方の部材に対して捻れるように回転する動作を表しており、「回動」とは、一方の部材が他方の部材に対して折れ曲がるように回転する動作を表している。
【0026】
基台21(31)にはアクチュエータAc21(Ac31)が内蔵されており、アクチュエータAc21(Ac31)を駆動すると、基台21(31)に対して本体部22(32)が旋回する。また、本体部22(32)と第1アーム部23(33)との接続部分にはアクチュエータAc22(Ac32)が内蔵されており、アクチュエータAc22(Ac32)を駆動すると、本体部22(32)に対して第1アーム部23(33)が回動する。更に、第1アーム部23(33)と第2アーム部24(34)との接続部分にはアクチュエータAc23(Ac3)が内蔵されており、アクチュエータAc23(Ac3)を駆動すると、第1アーム部23(33)に対して第2アーム部24(34)が回動する。また、第2アーム部24(34)にはアクチュエータAc24(Ac34)が内蔵されており、アクチュエータAc24(Ac34)を駆動すると、第2アーム部24(34)に対して第3アーム部25(35)が旋回する。
【0027】
第3アーム部25(35)と第4アーム部26(36)との接続部分にはアクチュエータAc25(Ac35)が内蔵されており、アクチュエータAc25(Ac35)を駆動すると、第3アーム部25(35)に対して第4アーム部26(36)が回動する。また、第4アーム部26(36)にはアクチュエータAc26(Ac36)が内蔵されており、アクチュエータAc26(Ac36)を駆動すると、第4アーム部26(36)に対して掌部27(37)が旋回する。更に、掌部27(37)にはアクチュエータAc27(Ac37)が内蔵されており、アクチュエータAc27(Ac37)を駆動すると、掌部27(37)から立設された2つの把持部28(38)が、駆動方向に応じて、互いに近づいたり遠ざかったりする。尚、本実施例のアームロボット20(30)では、アクチュエータAc21~Ac27(Ac31~Ac37)としてサーボモータが採用されている。しかし、サーボモータに限らず、ステッピングモータなど、異なる方式で動作するアクチュエータであっても良い。
【0028】
アクチュエータAc21(Ac31)には、アクチュエータAc21(Ac31)を駆動するドライバアンプDA21(DA31)が接続されている。ここで、「ドライバアンプ」とは、次のような機能を有する機器である。アクチュエータを駆動するためには、アクチュエータに対して、アクチュエータの駆動方式および規格に合致した電流を供給する必要がある。従って、同じ動作をさせる場合でも、動作させるアクチュエータの種類や製造メーカなどが異なれば、それぞれのアクチュエータ毎に、供給すべき電流値や電流の形態が異なる可能性がある。そこで、アクチュエータには、一般に、そのアクチュエータ用のドライバアンプが用意されており、ドライバアンプに対して駆動量を入力すると、ドライバアンプがアクチュエータの駆動方式および規格に合致した電流を生成して、アクチュエータを駆動するようになっている。
【0029】
アクチュエータAc21(Ac31)以外のアクチュエータについても、それぞれにドライバアンプが接続されている。すなわち、図2に示されるように、アクチュエータAc22(Ac32)には、アクチュエータAc22(Ac32)を駆動するドライバアンプDA22(DA32)が接続されており、アクチュエータAc23~Ac27(Ac33~Ac37)にも、アクチュエータAc23~Ac27(Ac33~Ac37)を駆動するドライバアンプDA23~DA27(DA33~DA37)が接続されている。
【0030】
また、ドライバアンプDA21~DA27(DA31~DA37)は、互いに直列に接続されており、一端側のドライバアンプ(図示した例では、ドライバアンプDA27(DA37))が、中央制御装置100内の動作制御装置120に接続されている。このため、動作制御装置120に直接接続された一端側のドライバアンプ(図示した例では、ドライバアンプDA27(DA37))以外は、他のドライバアンプを介して動作制御装置120に接続されていることになる。しかし、このような接続形態に限らず、例えば、それぞれのドライバアンプDA23~DA27(DA33~DA37)が、動作制御装置120に直接接続されるようにしても良い。
【0031】
更に、詳細には後述するが、動作制御装置120は、アクチュエータAc21~Ac27(Ac31~Ac37)によって駆動される部材(本体部22(32)や、第1アーム部23(33)や、第2アーム部24(34)など)の位置が目標位置となるように、ドライバアンプDA21~DA27(DA31~DA37)の動作をフィードバック制御している。このことに対応して、アクチュエータAc21~Ac27(Ac31~Ac37)には回転位置を検出する図示しないエンコーダが内蔵されており、ドライバアンプDA21~DA27(DA31~DA37)は、アクチュエータAc21~Ac27に内蔵されたエンコーダを用いて検出した回転位置の情報を、動作制御装置120に送信する機能も有している。
【0032】
A-3.パイプベンダ10の概要 :
図3は、製造システム1で用いられるパイプベンダ10の大まかな構造を示した説明図である。前述したようにパイプベンダ10は、長尺でパイプ状の素材Aに曲げ加工を施すことによって所定形状の完成品Bを製造する機能を有している。
【0033】
図3に示されるように、本実施例のパイプベンダ10は、大まかには横長で直方体の外形形状を有しており、直方体の上面側には長手方向に2本のレール11が架設され、レール11上の一端側(図3では左側)には、図示しないパイプ状の素材Aを把持して長手方向に送り出す送出ユニット12が搭載されている。また、送出ユニット12が搭載されている側に対して反対側には、パイプ状の素材Aに対して曲げ加工を施す加工ユニット13が搭載されている。送出ユニット12には、円柱形状の把持軸12aが突設されており、把持軸12aの先端には、図示しない素材Aを把持するチャック12bが取り付けられている。このため、チャック12bで素材Aを把持した状態で送出ユニット12をレール11上で移動させることによって、素材Aを加工ユニット13に供給し、その素材Aに対して加工ユニット13で曲げ加工を施すことが可能となっている。
【0034】
本実施例のパイプベンダ10は、送出ユニット12の移動量によってパイプ状の素材Aの送り量を制御することができるので、素材Aに曲げ加工を施す位置を自由に制御することができる。また、チャック12bが取り付けられた把持軸12aを軸回りに旋回(すなわち、捻り動作)させることによって、パイプ状の素材Aを所望の方向に曲げることも可能となっている。こうしたことを実現するために、送出ユニット12の内部には、チャック12bを開閉させるためのアクチュエータAc10や、把持軸12aを旋回させるためのアクチュエータAc11や、把持軸12aを軸方向に進退動させるためのアクチュエータAc12や、レール11上で送出ユニット12を進退動させるためのアクチュエータAc13などが搭載されている。本実施例のパイプベンダ10では、これらのアクチュエータAc10~Ac13は何れも交流電源で動作するサーボモータが用いられているが、アクチュエータに要求される性能に応じて、他の駆動方式のアクチュエータ(例えば、油圧シリンダや、ソレノイドや、ステッピングモータなど)を採用することができる。尚、送出ユニット12には、把持軸12aの回転位置や、送出ユニット12の移動位置を検出するためのエンコーダや、リミットスイッチなどのセンサー類も搭載されているが、図面が煩雑となることを回避する目的で、図3では図示が省略されている。
【0035】
加工ユニット13の内部には、パイプ状の素材Aを曲げるためのアクチュエータAc16や、素材Aを曲げる際に、曲げるために力を加える位置を移動させるためのアクチュエータAc17や、加工ユニット13全体を上下方向に移動させるためのアクチュエータAc18や、パイプ状の素材Aに対してフランジと呼ばれる平坦な端面を形成したり、バルジと呼ばれる環状の凸部を形成したりするためのアクチュエータAc19などが搭載されている。尚、加工ユニット13にも、エンコーダや、接点スイッチなどのスイッチ・センサー類が搭載されているが、図面が煩雑となることを避けるため、これらについては図示が省略されている。また、加工ユニット13の内部には、上述した各種のアクチュエータAc10~Ac13、Ac16~Ac19を駆動するための複数のドライバアンプが搭載されているが、ドライバアンプについても図3では図示が省略されている。
【0036】
更に、図3に示されるように、2本のレール11の下方には各種の機械部品が搭載された空間が存在しているが、この空間は、加工ユニット13内に搭載された複数のドライバアンプ(図示は省略)から、送出ユニット12内の各種のアクチュエータAc10~13に向かって駆動電流を供給する電気ケーブル(図示は省略)や、送出ユニット12に搭載された各種のスイッチ・センサー類からの信号を、加工ユニット13に伝達するための信号ケーブル(図示は省略)などが配線される空間となっている。レール11上で送出ユニット12が進退動する動きに伴って、これらの電気ケーブルや信号ケーブルが空間内で移動すると、互いに絡まったり、何かに引っ掛かったりする虞が生じる。そこで、こうした事態が発生することを避けるため、レール11の下方の空間には、電気ケーブルや信号ケーブルに不要な遊びがある場合はケーブルを手繰ることによって不要な遊びを解消し、電気ケーブルや信号ケーブルが強い力で引っ張られる場合は、手繰ったケーブルを送り出すことによって、ケーブルに適度な遊びを持たせるためのアクチュエータAc14、Ac15も搭載されている。本実施例のパイプベンダ10では、アクチュエータAc14、Ac15としてエアシリンダが採用されており、これらのエアシリンダの動作も、図示しないドライバアンプによって制御されている。
【0037】
図4は、パイプベンダ10に搭載された複数のアクチュエータAc10~Ac19が、ドライバアンプDA10~DA19を介して動作制御装置120に接続されている様子を示した説明図である。アクチュエータAc10には、アクチュエータAc10を駆動するためのドライバアンプDA10が接続されており、アクチュエータAc11には、アクチュエータAc11を駆動するためのドライバアンプDA11が接続されている。同様に、アクチュエータAc12~Ac19には、アクチュエータAc12~Ac19を駆動するためのドライバアンプDA12~DA19が接続されている。また、ドライバアンプDA10~DA19は互いに直列に接続されており、一端側のドライバアンプ(図示した例では、ドライバアンプDA10)が、中央制御装置100内の動作制御装置120に接続されている。しかし、このような接続形態に限らず、例えば、それぞれのドライバアンプDA10~DA19が、動作制御装置120に直接接続されるようにしても良い。
【0038】
以上に説明したように、中央制御装置100内の動作制御装置120には、アームロボット20のDA21~DA27や、パイプベンダ10のDA10~DA19や、アームロボット30のDA31~DA37が接続されている(図2および図4参照)。そして、動作制御装置120は、これらのドライバアンプDA10~DA19、DA21~DA27、DA31~DA37を介して、アクチュエータAc10~Ac19、Ac21~Ac27、Ac31~Ac37の動作を制御している。
【0039】
ここで、アクチュエータAc10~Ac19、Ac21~Ac27、Ac31~Ac37の動作を制御するためには、動作制御装置120上で動作する制御プログラムを作成する必要がある。このような制御プログラムの作成には、アームロボット20,30やパイプベンダ10などのハードウェアを作成するよりも多くの労力が必要であった。特に、本実施例の製造システム1のように、制御すべきアクチュエータが多数存在している場合、制御プログラムの作成に要する労力は更に大きなものとなる。
【0040】
しかし、本願の発明者は、制御プログラムを自動的に生成する技術を開発して、既に特許出願済みである。この特許出願済みの技術では、複数のアクチュエータを備えた自動製造機械(ここでは、アームロボット20,30やパイプベンダ10)の動作を、複数のアクチュエータ(ここでは、アクチュエータAc10~Ac19、Ac21~Ac27、Ac31~Ac37)の基本的な動作に分解し、それらの基本的な動作を、「YOGOチャート」と命名した特殊な動作チャート上に記入することで自動製造機械の動作を記述する。こうすれば、後述するメカニズムによって、YOGOチャートから自動的に制御プログラムを生成することができる。従って、本実施例の製造システム1のように、制御すべきアクチュエータが多数存在している場合でも、制御プログラムを容易に作成することが可能となる。
【0041】
もっとも、多数のアクチュエータの動作を制御するためには、高い処理能力を有する動作制御装置120が必要となる。このため、本実施例の製造システム1のように制御すべきアクチュエータが多数存在する場合、動作制御装置120の処理能力の不足から、制御プログラムを必要な速度で実行できない場合が起こり得る。これでは、たとえ制御プログラムを容易に作成できたとしても、製造システム1あるいは自動製造機械を容易に制御できるとは言い難い。そこで、本実施例の動作制御装置120は、YOGOチャートから自動的に生成された制御プログラムを、以下に説明する方法で実行することとした。このような方法で実行すれば、制御プログラムを実行するために必要な処理能力を抑制することができる。このため、制御すべきアクチュエータの数が多くなっても、特別に高い処理能力を有する動作制御装置120を用意することなく、製造システム1あるいは自動製造機械を制御することが可能となる。以下では、本実施例の動作制御装置120が制御プログラムを実行する方法について説明するが、理解の便宜から、先ず初めに、YOGOチャートから制御プログラムを自動生成する原理について説明し、その説明を踏まえて、本実施例の動作制御装置120が、制御プログラムを実行するための処理能力を抑制可能な原理について説明する。その後、実際の処理内容について具体的に説明する。
【0042】
B.YOGOチャートを作成して自動製造機械の動作を制御する方法の概要 :
B-1.YOGOチャートから制御プログラムを自動で生成する原理 :
図5は、YOGOチャートと命名した特殊な動作チャートから、自動製造機械(ここでは、パイプベンダ10や、アームロボット20,30)の制御プログラムを自動で生成する原理についての説明図である。図5(a)には、各種の改良を施す前の原始的なYOGOチャートが示されている。後述する本実施例のYOGOチャートは、図5(a)に示した原始的なYOGOチャートを発展させて改良したものとなっているが、制御プログラムを自動で生成する原理は原始的なYOGOチャートと同じである。そこで、理解を容易とするために、図5(a)に示した原始的なYOGOチャートを用いて、YOGOチャートから制御プログラムを自動で生成する原理について説明する。
【0043】
一般に自動製造機械には複数のアクチュエータが搭載されており、それらのアクチュエータが動作することによって自動製造機械が動作するようになっている。YOGOチャートでは、自動製造機械に搭載された複数のアクチュエータの基本的な動作を組み合わせることによって、自動製造機械の動作を記述する。ここで、アクチュエータの基本的な動作とは、アクチュエータが有する自由度方向への動作(以下、基本動作)のことである。例えば、モータのような回転するアクチュエータであれば、回転動作が基本動作となり、シリンダのような進退動するアクチュエータであれば、進退動する動作が基本動作となる。また、モータによってボールねじを回転させることによって、ボールねじに噛み合う部材を進退動させるようなアクチュエータの場合は、モータの回転動作、あるいは部材が進退動する動作の何れかが基本動作となる。このように、アクチュエータの基本動作は、アクチュエータが指定された動作量だけアクチュエータの自由度方向に動作するという単純な動作となっている。
【0044】
また、YOGOチャートでは、自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、個々のアクチュエータの基本動作は、これら複数の部分期間の中から、基本動作毎に選択された何れか1つの部分期間に割り当てられている。図5(a)に示した例では、自動製造機械が動作を開始した初めの部分期間(部分期間1)には、あるアクチュエータの基本動作act1が割り当てられており、次の部分期間(部分期間2)には、(そのアクチュエータと同じあるいは別のアクチュエータによる)基本動作act2と、基本動作act3と、基本動作act4とが割り当てられている。その次の部分期間(部分期間3)には、基本動作act5と、基本動作act6とが割り当てられており、その次の部分期間(部分期間4)には基本動作act7が、更にその次の部分期間(部分期間5)には、基本動作act8と、基本動作act9とが割り当てられている。
【0045】
このようにすることで、複数のアクチュエータによる一連の動作を記述することができる。すなわち、先ず初めは、あるアクチュエータによる基本動作act1が開始され、その基本動作act1が終了すると、対応するアクチュエータによって基本動作act2と、基本動作act3と、基本動作act4とが開始される。それらの基本動作が終了すると、今度は基本動作act5と基本動作act6とが開始される。それらの基本動作が終了すると今度は基本動作act7が開始され、基本動作act7が終了すると、基本動作act8および基本動作act9が開始されるというような一連の動作を記述することができる。このように、YOGOチャートでは、自動製造機械の動作を、その自動製造機械に搭載された複数のアクチュエータの基本動作に分解して、それらの基本動作を何れかの部分期間に割り当てることによって、自動製造機械の動作を記述する。
【0046】
尚、以上の説明から明らかなように、部分期間は、割り当てられたアクチュエータが動作する期間を示しており、時間の長さを示しているわけではない。例えば、部分期間1の時間の長さは基本動作act1の実行に要する時間であり、部分期間2の時間の長さは基本動作act2,act3,act4の実行に要する時間の中で長い方の時間となっている。従って、それぞれの部分期間の時間の長さは、互いに異なっていることが通常である。
【0047】
また、部分期間に割り当てられるアクチュエータの基本動作は、例えばモータを一定量だけ回転させたり、あるいはシリンダを一定量だけ進退動させたりするといった単純な動作である。従って、アクチュエータに基本動作させるためのプログラム(プログラム要素)を予め作成しておくことができる。例えば、あるアクチュエータに基本動作act1を行わせるためのプログラム要素prog1を予め作成しておくことができる。同様に、基本動作act2~act9についても、それらの基本動作を行わせるためのプログラム要素prog2~prog9を予め作成しておくことができる。
【0048】
そこで、これらのプログラム要素を、図5(a)に示した原始的なYOGOチャートに記述された通りに連結してやれば、自動製造機械を動作させるための制御プログラムを自動で生成することが可能となる。すなわち、図5(b)に示したように、初めにプログラム要素prog1を起動させ、プログラム要素prog1が終了したらプログラム要素prog2~prog4を起動させる。それらのプログラム要素prog2~prog4が終了したら、プログラム要素prog5およびプログラム要素prog6を起動させ、それらのプログラム要素prog5、prog6が終了したら、プログラム要素prog7を起動させる。そして、プログラム要素prog7が終了したら、今度はプログラム要素prog8およびプログラム要素prog9を起動させる。このように、アクチュエータに基本動作を行わせるプログラム要素を予め作成しておき、それらのプログラム要素がYOGOチャートに記述された順序で次々に起動するように、複数のプログラム要素を組み合わせてやる。こうすれば、自動製造機械を動作させるための制御プログラムを、YOGOチャートから自動で生成することが可能となる。
【0049】
B-2.制御プログラムを実行するための処理能力を抑制可能な原理 :
上述したように、YOGOチャートは、アクチュエータの基本動作を部分期間に割り当てることによって記述されており(図5(a)参照)、YOGOチャートから生成された制御プログラムは、基本動作に対応するプログラム要素を、基本動作が割り当てられた部分期間の順番で実行するものとなっている(図5(b)参照)。このため、自動製造機械に搭載されているアクチュエータの数が多い場合でも、現在実行中の部分期間に対して基本動作が割り当てられたアクチュエータについて制御しておけば良い。従って、同時に制御するアクチュエータの数を抑制することが可能である。
【0050】
もちろん、YOGOチャート中の、ある部分期間に割り当てられた基本動作の数が、他の部分期間に対して大幅に増加する事態は起こり得る。例えば、図6(a)に示した例では、部分期間6に対して9つもの基本動作act10~act18が割り当てられている。このようなことが生じると、多くの基本動作が割り当てられた部分期間(例えば図6(a)中の部分期間6)では、他の部分期間に比べて、動作を制御すべきアクチュエータの数が大幅に増加することになる。
【0051】
しかし、図6(a)中の部分期間6に割り当てられた基本動作act10~act18は、必ずしもこれらを同時に実行する必要があるわけではない。すなわち、YOGOチャートが記載している内容は、これら9つの基本動作act10~act18は部分期間5に割り当てられた基本動作の終了後に実行する必要があることと、部分期間7に割り当てられた基本動作の開始前に実行する必要があることである。従って、これら9つの基本動作act10~act18を同時に実行する必要があるという内容が記載されているわけではない。
【0052】
このことから、これら9つの基本動作act10~act18が割り当てられた部分期間を、複数の部分期間に分割することができる。図6(b)に例示したYOGOチャートでは、図6(a)中の部分期間6が、部分期間6および部分期間7の2つの部分期間に分割されている。そして、図6(a)中の部分期間6に割り当てられていた9つの基本動作act10~act18が、図6(b)では部分期間6または部分期間7の何れかに適宜、振り分けられている。
【0053】
このように、YOGOチャートを用いれば、部分期間毎に動作させるアクチュエータの数を予め分散させておくことができる。そして、YOGOチャートから生成された制御プログラムは、部分期間毎に、アクチュエータの動作を制御するプログラム要素を実行するので、同時に実行するプログラム要素の数を抑制することができる。加えて、プログラム要素は、アクチュエータの基本的な動作である基本動作を実現させるものなので、個々のプログラム要素を実行するために必要な処理能力は小さくて良い。このような理由から、動作制御装置120がそれほど高い処理能力を有していない場合でも、多数のアクチュエータを搭載した自動制御機械の制御プログラムを、十分に実用的な速度で実行することが可能となる。
【0054】
尚、以上の説明では、YOGOチャートの部分期間の中に、割り当てられた基本動作の数が大幅に多い部分期間が存在していた場合には、YOGOチャートの作成者がその部分期間を複数の部分期間に分割するものとして説明した。しかし、1つの部分期間に割り当てることが可能な基本動作の数(許容割当数)を予め設定しておき、YOGOチャートの作成者によって作成されたYOGOチャート中に、許容割当数を超える基本動作が割り当てられた部分期間が存在していた場合には、自動的に部分期間を分割するようにしても良い。
【0055】
例えば、図7(a)に示した例では、許容割当数が「4」に設定されており、部分期間6に割り当てられた基本動作の数が許容割当数を超えている。そこで、部分期間6を、部分期間6-1および部分期間6-2の2つの部分期間に分割する。そして、部分期間6に割り当てられていた先頭から許容割当数までの基本動作act10~act13は部分期間6-1に割り当てて、それ以外の基本動作act14~act18については部分期間6-2に割り当てる。
【0056】
図7(b)には、このようにして部分期間6を部分期間6-1と部分期間6-2とに分割した状態が示されている。図7(b)に示すように、部分期間6-1に割り当てられた基本動作は許容割当数以下に収まっているが、部分期間6-2に割り当てられた基本動作は許容割当数を超えている。そこで、部分期間6-2を2つの部分期間(部分期間6-2および部分期間6-3)に分割する。従って、図7(a)の部分期間6が3つの部分期間に分割されたことになる。そして、部分期間6-2に割り当てられていた先頭から許容割当数までの基本動作act14~act17は、分割後の部分期間6-2に割り当てて、それ以外の基本動作act18については部分期間6-3に割り当てる。その結果、図7(c)に示したように、部分期間6が分割された3つの部分期間6-1~6-3の何れについても、割り当てられた基本動作の数を許容割当数以下に収めることができる。
【0057】
以上のような方法を用いれば、人間が作成したYOGOチャートに対して、コンピュータが自動的に修正を加えることで、部分期間に割り当てられた基本動作の数が許容割当数以下に収まったYOGOチャートを生成することも可能となる。その結果、動作制御装置120がそれほど高い処理能力を有していない場合でも、YOGOチャートから生成された制御プログラムを迅速に実行することが可能となる。
【0058】
C.YOGOチャートから制御プログラムを自動生成する方法 :
以下では、YOGOチャートから制御プログラムを自動生成する方法について説明するが、その準備として、YOGOチャートについて具体的に説明しておく。以下に説明するYOGOチャートは、図5(a)を用いて前述した原始的なYOGOチャートに対して各種の改良を加えることによって得られたものである。
【0059】
C-1.YOGOチャートの概要 :
図8は、本実施例のYOGOチャート200の概要を説明するための説明図である。図8に示したYOGOチャートは、図3に示したパイプベンダ10の動作を記述したYOGOチャートであるが、図2に示したアームロボット20やアームロボット30についても同様なYOGOチャートを作成することができる。尚、YOGOチャート200の全体が図に収まるように縮尺すると、潰れて判読不能となってしまうので、図8ではYOGOチャート200の一部分(左上隅の部分)を表示している。図8に示されるように、YOGOチャート200は、複数本の横線と複数本の縦線とが交差した大きな表のような形状となっている。以下では、交差する複数本の線の内、横線については「仕切線」201と称し、縦線については「トリガ線」202と称することにする。
【0060】
トリガ線202には、1番から始まる通し番号が付けられている。図8に示した例では、YOGOチャート200の上端の欄内に、その下のトリガ線202の通し番号が記載されている。また、互いに隣接するトリガ線202の間の領域は、図5を用いて前述した部分期間となっており、部分期間にも1番から始まる通し番号(以下、部分期間番号と称する)が付けられている。尚、図8に例示したYOGOチャート200では、トリガ線202が縦方向に引かれており、従って、トリガ線202とトリガ線202とに挟まれた部分期間は横方向に並んでいる。しかし、トリガ線202は横方向に引いても良く、この場合は、複数の部分期間が縦方向に並ぶことになる。
【0061】
また、本実施例のYOGOチャート200は、複数の仕切線201によって複数の横長の領域に分割されており、これらの横長の領域には1番から始まる通し番号(以下、アクチュエータ番号と称する)が付けられている。パイプベンダ10に搭載されたアクチュエータは、複数の横長の領域の何れかに割り当てられている。図8に示した例では、アクチュエータ番号が1番の領域には、アクチュエータAc10(図3参照)が割り当てられており、アクチュエータ番号が2番の領域にはアクチュエータAc11(図3参照)が割り当てられ、アクチュエータ番号が3番の領域にはアクチュエータAc12(図3参照)が割り当てられている。本実施例のパイプベンダ10にはアクチュエータAc10~Ac19の10個のアクチュエータが搭載されているから、これら全てのアクチュエータについて、このように横長の領域が1つずつ割り当てられることになる。
【0062】
そして、アクチュエータAc10~Ac19の基本動作は、そのアクチュエータAc10~Ac19が割り当てられた横長の領域上の適切な位置に記載されるようになっている。例えば、アクチュエータAc10を部分期間4で基本動作させるのであれば、YOGOチャート200上で、アクチュエータ番号が1番の横長の領域上で、部分期間番号が4番で特定されるマス目状の座標位置に、アクチュエータAc10にさせたい基本動作を記載する。また、部分期間4と部分期間8とでアクチュエータAc10に基本動作させるのであれば、アクチュエータ番号が1番の横長の領域上で、部分期間番号が4番のマス目状の座標位置と、同じ横長の領域上で、部分期間番号が8番の座標位置とに、アクチュエータAc10にさせたい基本動作を記載することになる。このように、アクチュエータAc10の基本動作は、YOGOチャート200上でアクチュエータ番号が1番の横長の領域上に記載され、アクチュエータAc11の基本動作は、アクチュエータ番号が2番の横長の領域上に記載されるというように、アクチュエータAc10~Ac19の基本動作は、YOGOチャート200上でそのアクチュエータAc10~Ac19が割り当てられた横長の領域上に記載されるようになっている。
【0063】
このため、アクチュエータAc10~Ac19に対応する横長の領域上に視線を走らせれば、それぞれのアクチュエータAc10~Ac19が、どの部分期間で動作しているのかを容易にイメージすることができ、各アクチュエータの動作回数を容易に認識することができる。このため、例えば、元の位置に復帰していないアクチュエータが存在していたり、動作を記述し忘れているアクチュエータが存在していたりした場合でも、そのことを容易に認識することができるので、YOGOチャート200の記載ミスを防止することが可能となる。
【0064】
また、本実施例のYOGOチャート200には、次のような形態で基本動作が記述される。一例として、図8のYOGOチャート200で最初に動作するアクチュエータAc13の基本動作について説明する。動作するアクチュエータはアクチュエータAc13であり、且つ、最初に動作するのであるから、YOGOチャート200上で基本動作が記載される位置は、アクチュエータ番号が4番で、部分期間番号が1番のマス目状の座標位置となる。部分期間番号が1番のマス目は、1番のトリガ線202と、2番のトリガ線202とに挟まれているから、左側に存在する1番のトリガ線202から、右側に存在する2番のトリガ線202に向かって、アクチュエータの動作を示す動作線203を記入する。そして、動作線203の左端(従って1番のトリガ線202上)には動作の開始を示す始点204を記入し、動作線203の右端(従って2番のトリガ線202上)には動作の終了を示す終点205を記入する。図8に示した例では、動作線203は太い実線で示されており、始点204は白抜きの丸印で示されて、終点205は黒い丸印で示されている。
【0065】
更に、動作線203の上には、アクチュエータにさせようとする基本動作を記入する。ここで、本実施例のYOGOチャート200では、基本動作を「動作記述」と「数値テーブル」の2つの要素を用いて記入する。図8に示した例では、アクチュエータ番号が4番で、部分期間番号が1番の動作線203の上には、「Ω-AC」と「AC-B11」という2つの表示が記入されているが、「Ω-AC」という表示が動作記述206aであり、「AC-B11」という表示が数値テーブル206bである。動作記述206aおよび数値テーブル206bの詳細については後述するが、大まかにいうと、動作記述206aとは、基本動作の定性的な内容(例えば、前進、後退、回転など)を記述した表示である。また、数値テーブル206bとは、基本動作の定量的な内容(例えば、移動量や、速度や、トルクなど)を示す数値が設定されたテーブルである。
【0066】
従って、図8のYOGOチャート200上で、アクチュエータ番号が4番、部分期間番号が1番の座標位置に記入された「Ω-AC」、「AC-B01」という表示は、以下のような内容、すなわち、アクチュエータ番号が4番のアクチュエータ(図8の例ではアクチュエータAc13)を、部分期間番号が1番のタイミングで、「Ω-AC」という動作記述206aに従って基本動作させ、且つ、基本動作させる際に使用する具体的な数値は、「AC-B01」という数値テーブル206bに設定された数値を用いることを表している。
【0067】
また、図8のYOGOチャート200に示されるように、アクチュエータAc10に対しては「Ω-AA」という動作記述206aが記入されているが、アクチュエータAc11に対しては「Ω-AB」という動作記述206aが記入されている。この理由は、図3を用いて前述したように、アクチュエータAc10はチャック12bを開閉させるためのアクチュエータであり、アクチュエータAc11は把持軸12aを旋回(すなわち、捻り動作)させるためのアクチュエータであるからである。アクチュエータAc10の基本動作の動作記述206aは「開閉動作」となり、アクチュエータAc11の基本動作の動作記述206aは「回転動作」となるため、アクチュエータAc10とアクチュエータAc11とでは、異なる動作記述206aが使用される。同様な理由から、アクチュエータAc11とアクチュエータAc12とも、異なる動作記述206aが使用される。
【0068】
これに対して、アクチュエータAc12およびアクチュエータAc13は「Ω-AC」という同じ動作記述206aが使用される。図3を用いて前述したように、アクチュエータAc12は把持軸12aを軸方向に進退動させるためのアクチュエータであり、アクチュエータAc13は送出ユニット12の全体を進退動させるためのアクチュエータであって、移動させる対象物の大きさや重量や移動量などは大きく異なるが、対象物を進退動させる点では同じである。このため、アクチュエータAc12およびアクチュエータAc13は、同じ動作記述206aを使用することができる。また、アクチュエータAc16は加工ユニット13の全体を上下動させるためのアクチュエータであるが、上下動は進退動の一種と考えることができるから、アクチュエータAc16も、アクチュエータAc12やアクチュエータAc13と同じく「Ω-AC」という動作記述206aを使用することができる。更に、アクチュエータAc14、Ac15は、何れもエアシリンダを進退動させるアクチュエータであるから、これらは何れも「Ω-CA」という動作記述206aが使用されている。
【0069】
このように、本実施例のYOGOチャート200では、アクチュエータの基本動作を、(原則として)動作記述206aと数値テーブル206bとを用いて記述する。こうすれば、多くのアクチュエータについて、動作記述206aを共通化することが可能となる。図3に示したように、本実施例のパイプベンダ10にはアクチュエータAc10~Ac19の10個のアクチュエータが搭載されているが、パイプベンダ10の動作を記述するYOGOチャート200で用いられる動作記述206aは4種類となっている。
【0070】
図9は、本実施例のYOGOチャート200で用いられる動作記述206aの詳細についての説明図である。「Ω-AA」という動作記述206aは、アクチュエータに開閉動作させることを表す動作記述206aであり、この動作記述206aはACサーボモータにチャック機構を組み合わせたアクチュエータを想定している。逆に言えば、ACサーボモータにチャック機構を組み合わせたアクチュエータでない場合は、たとえ、そのアクチュエータの動作が開閉動作である場合でも、「Ω-AA」という動作記述206aを使用することはできない。
【0071】
また、「Ω-AA」という動作記述206aは、ACサーボモータにチャック機構を組み合わせたアクチュエータに開閉動作させるという単純な動作内容を記述したものであるから、その動作内容を実現するためのプログラム(すなわち、プログラム要素)を予め作成しておくことができる。このことから、動作記述206aには、その動作内容を実現させるプログラム要素を特定するための通し番号(以下、プログラム要素番号)が対応付けて記憶されている。尚、同じように開閉動作するアクチュエータであっても、ACサーボモータにチャック機構を組み合わせたアクチュエータでない場合は、「Ω-AA」という動作記述206aを使用することができない理由は、動作記述206aにプログラム要素番号が対応付けて記憶されるからである。すなわち、アクチュエータの構造が異なれば、アクチュエータを動作させるためのプログラム要素は異なると考えられるので、対応付けられるプログラム要素が異なる以上、動作記述206aも異ならせておく必要があるためである。
【0072】
また、図9に示すように、「Ω-AB」という動作記述206aは、ACサーボモータに減速機構を組み合わせたアクチュエータを想定して、そのアクチュエータに回転動作させることを表す動作記述206aであり、プログラム要素番号は7番が対応付けて記憶されている。同様に、「Ω-AC」という動作記述206aは、ACサーボモータにボールねじ機構を組み合わせたアクチュエータを想定して、そのアクチュエータに進退動作させることを表す動作記述206aであり、プログラム要素番号は4番が対応付けて記憶されている。更に、「Ω-CA」という動作記述206aは、エアシリンダによるアクチュエータを想定して、そのアクチュエータに進退動作させることを表す動作記述206aであり、プログラム要素番号は2番が対応付けて記憶されている。尚、2番のプログラム要素は、エアシリンダのポートの開閉状態を切り換えるだけの単純なものであるため、本来であれば、より単純な方法(例えばリレーや、論理回路、シーケンス制御など)によって実現することが可能である。しかし、その単純な内容を、プログラム要素を用いて実現することで、エアシリンダを想定した単純な制御を、ACサーボモータを想定した他の複雑な制御と同様に取り扱うことが可能となる。
【0073】
また、動作記述206aは、開閉動作や、回転動作、進退動作などのように、動作の内容を定性的に記述したものに過ぎないので、動作記述206aは原則として数値テーブル206bと組み合わせて使用される。例えば、図8を用いて前述したYOGOチャート200では、アクチュエータ番号が1番のアクチュエータAc10に対して用いられる動作記述206aは「Ω-AA」であるが、部分期間番号が4番のタイミングでは「AA-B01」という数値テーブル206bが使用され、部分期間番号が6番のタイミングでは「AA-B01」という数値テーブル206bが、部分期間番号が10番のタイミングでは「AA-B01」という数値テーブル206bが使用されている。ここで、「AA-B01」という名称は、「Ω-AA」という動作記述206aと組み合わせて使用される「B01」という数値テーブル206bであることを表している。同様に、「AA-B02」という名称は、「Ω-AA」という動作記述206aと組み合わせて使用される「B02」という数値テーブル206bであることを表している。
【0074】
図10は「Ω-AA」という動作記述206aと組み合わせて使用される数値テーブル206bを例示した説明図である。図10(a)には「AA-B01」という数値テーブル206bが示されており、図10(b)には「AA-B02」という数値テーブル206bが示されている。尚、図10では2つの数値テーブル206bが例示されているが、必要に応じてより多くの数値テーブル206bを設定することができる。図10に例示した数値テーブル206bには、「数値テーブル番号」、「開閉速度」、「開閉荷重」の3つの項目が設定されている。このうちの「数値テーブル番号」は数値テーブル206bの通し番号である。例えば、数値テーブル番号を5番と指定すると、図10(a)の「AA-B01」という数値テーブル206bが特定され、数値テーブル番号を6番と指定すると、図10(b)の「AA-B02」という数値テーブル206bが特定されるようになっている。
【0075】
また、図10に例示した数値テーブル206bには3つの項目が設定されているが、動作記述206aと組み合わせて、基本動作を記述するために用いられるのは、「開閉速度」と「開閉荷重」という2つの項目である。ここで、「開閉速度」と「開閉荷重」という2つの項目が設定されている理由は、この数値テーブル206bが、開閉動作を表す「Ω-AA」という動作記述206aと組み合わせて使用されるためである。すなわち、「Ω-AA」という動作記述206aだけでは、開閉動作させるという定性的な内容しか分からず、開閉動作させる速度や開閉時の荷重といった定量的な内容については分からない。そこで、数値テーブル206bに「開閉速度」および「開閉荷重」という項目を設けて、これらの数値を設定しておくようになっている。尚、数値テーブル206bの「開閉速度」にはプラスの数値が設定されているのは、閉動作させることを表しており(図10(a)参照)、マイナスの数値が設定されているのは開動作させることを表している(図10(b)参照)。
【0076】
また、図8を用いて前述したYOGOチャート200では、アクチュエータ番号が2番のアクチュエータAc11に対しては「Ω-AB」という動作記述206aが使用されるが、部分期間番号が2番のタイミングでは「AB-B01」という数値テーブル206bが組み合わせて用いられ、部分期間番号が8番のタイミングでは「AB-B02」という数値テーブル206bが組み合わせて用いられている。「AB-B01」および「AB-B02」という名称は、それぞれ「Ω-AB」という動作記述206aと組み合わせて使用される「B01」および「B02」という数値テーブル206bであることを表している。
【0077】
図11は「Ω-AB」という動作記述206aと組み合わせて使用される数値テーブル206bを例示した説明図である。図11(a)には「AB-B01」という数値テーブル206bが示されており、図11(b)には「AB-B02」という数値テーブル206bが示されている。尚、図11では2つの数値テーブル206bが例示されているが、必要に応じてより多くの数値テーブル206bを設定することができる。図11に例示した数値テーブル206bには、「数値テーブル番号」に加えて、「回転角度」、「回転速度」、「回転トルク」の全部で4つの項目が設定されている。これらの内で「回転角度」、「回転速度」、「回転トルク」の項目が、動作記述206aと組み合わせて、基本動作を記述するために用いられる項目である。また、図11の数値テーブル206bに「回転角度」、「回転速度」、「回転トルク」の項目が設定されている理由は、この数値テーブル206bが、回転動作を表す「Ω-AB」という動作記述206aと組み合わせて使用されるためである。すなわち、「Ω-AB」という動作記述206aだけでは回転動作させることしか分からないので、回転させる角度や、回転させる速度、回転させるトルクについては、「回転角度」、「回転速度」、「回転トルク」という項目で数値テーブル206bに数値を設定しておくようになっている。尚、数値テーブル206bの「回転角度」にプラスの数値が設定される場合と、マイナスの数値が設定される場合とが存在するのは、回転方向が逆であることを表している。
【0078】
更に、図8のYOGOチャート200では、アクチュエータ番号が3番のアクチュエータAc12、4番のアクチュエータAc13、および7番のアクチュエータAc16に対しては、何れも「Ω-AC」という動作記述206aが使用されている。その一方で、数値テーブル206bについては、アクチュエータ番号が3番のアクチュエータAc12と4番のアクチュエータAc13と7番のアクチュエータAc16とで、異なる数値テーブル206bが使用されている。すなわち、アクチュエータ番号が3番のアクチュエータAc12に対しては、「AC-B01」あるいは「AC-B02」という数値テーブル206bが組み合わせて用いられ、アクチュエータ番号が4番のアクチュエータAc13に対しては、「AC-B11」あるいは「AC-B12」という数値テーブル206bが、アクチュエータ番号が7番のアクチュエータAc16に対しては、「AC-B21」あるいは「AC-B22」という数値テーブル206bが組み合わせて用いられている。ここで、「AC-B01」、「AC-B02」、「AC-B11」、「AC-B12」、「AC-B21」、「AC-B22」という名称は、それぞれ「Ω-AC」という動作記述206aと組み合わせて使用される「B01」、「B02」、「B11」、「B12」、「B21」、「B22」という数値テーブル206bであることを表している。これらの数値テーブル206bについても、図10あるいは図11を用いて説明した数値テーブル206bと同様に、動作記述206aに応じた項目が設定された数値テーブル206bが予め設定されている。
【0079】
また、8番のアクチュエータAc17に対しては、「Ω-AD」という動作記述206aが使用されており、数値テーブル206bについては、「AD-B01」あるいは「AD-B02」という数値テーブル206bが使用されている。これらの数値テーブル206bについても、動作記述206aに応じた項目が設定された数値テーブル206bが予め設定されている。
【0080】
更に、図8のYOGOチャート200で、アクチュエータ番号が5番のアクチュエータAc14、および6番のアクチュエータ15に対しては、何れも「Ω-CA」という動作記述206aが使用されている。これは、アクチュエータAc14、Ac15が何れもエアシリンダであり、基本動作の内容が「進退動作」であることに対応している。また、「Ω-CA」という動作記述206aに対しては、数値テーブル206bが組み合わされていない。この理由は、アクチュエータAc14、Ac15がエアシリンダであり、このエアシリンダは、2つの動作ポートの内で空気圧を加える動作ポートを切り換えることで動作するため、定量的な数値を用いて動作の内容を記述する必要が無いためである。
【0081】
以上に詳しく説明したように、本実施例のYOGOチャート200では、部分期間番号とアクチュエータ番号との組み合わせで規定される座標位置に、基本動作を記入することによって、基本動作させるアクチュエータと基本動作させるタイミングとを特定する。更に、基本動作は、原則として、動作記述206aと数値テーブル206bとの組み合わせによって表現することとしている。こうすれば、YOGOチャート200を作成する際には動作記述206aを記入することに集中し、数値テーブル206bについては取りあえず記入しておくことができる。YOGOチャート200に動作記述206aを記入する作業は、実質的には、人間が考えた内容を素直に表現する作業と同じになるので、YOGOチャート200に誤った内容を記入してしまう可能性を大幅に減少させることができる。
【0082】
C-2.制御プログラム生成装置110の概要 :
以上に説明したYOGOチャートを作成しておけば、中央制御装置100に搭載されている制御プログラム生成装置110(図1参照)を用いて、YOGOチャートから制御プログラムを自動で生成することができる。
【0083】
図12は、中央制御装置100に搭載されている制御プログラム生成装置110についての説明図である。図示されるように、制御プログラム生成装置110は、YOGOチャート作成部111や、基本動作記憶部112や、YOGOチャート解析部113や、制御プログラム生成部114などを備えている。尚、これらの「部」は、制御プログラム生成装置110が、YOGOチャート200を作成して、制御プログラムを生成するために備える複数の機能を表した抽象的な概念である。従って、制御プログラム生成装置110が、これらの「部」に相当する部品を組み合わせて形成されていることを表しているわけではない。実際には、これらの「部」は、CPUで実行されるプログラムの形態で実現することもできるし、ICチップやLSIなどを組み合わせた電子回路の形態で実現することもできるし、更には、これらが混在した形態など、様々な形態で実現することができる。
【0084】
YOGOチャート作成部111は、モニター画面100mや、操作入力ボタン100sなどに接続されており、自動製造機械(パイプベンダ10や、アームロボット20、30など)について十分な知識を有する機械技術者などが、モニター画面100mを見ながら操作入力ボタン100sを操作することによって、図8に例示したようなYOGOチャート200を作成する。自動製造機械の動作について十分な知識を有する技術者であれば、YOGOチャート200を簡単に作成することができる。
【0085】
また、本実施例では、YOGOチャートに基本動作を記入する際には、原則として動作記述206aと数値テーブル206bとを用いて基本動作を記入するが、アクチュエータに応じて、使用可能な動作記述206aは決まっている(図9参照)。そこで、基本動作記憶部112には、アクチュエータの名称と、そのアクチュエータで使用可能な動作記述206aとが対応付けて予め記憶されている。
【0086】
図13は、アクチュエータの名称と、使用可能な動作記述206aとが対応付けられて基本動作記憶部112に記憶されている様子を示した説明図である。図示されるように基本動作記憶部112には、アクチュエータ毎に使用可能な動作記述206aが記憶されており、更に、それぞれの動作記述206aにはプログラム要素番号が記憶されている。前述したようにプログラム要素番号とは、アクチュエータを用いて動作記述206aの動作を実現するためのプログラム要素を特定する番号である。例えば、図13に示したアクチュエータAc17やアクチュエータAc18には、動作の態様が異なる2つの動作記述206aが選択可能となっているが、それぞれの動作記述206aに対してプログラム要素番号が記憶されている。また、それぞれのアクチュエータには、アクチュエータの構造や、アクチュエータの基本動作の内容も併せて記憶されている。更に、図10図11に例示した数値テーブル206bも、基本動作記憶部112に記憶されている。
【0087】
上述した基本動作記憶部112は、YOGOチャート作成部111に接続されている。このため機械技術者は、YOGOチャート200を作成するに際して基本動作記憶部112を参照することができる。そして、パイプベンダ10について十分な知識を有する機械技術者であれば、どのようなアクチュエータをどのように動作させるかは十分に分かっているので、アクチュエータに応じて使用可能な動作記述206aの中から適切な動作記述206aを選択することができる。また、数値テーブル206bについては、仮の数値テーブル206bを設定しておけば良い。すなわち、図10あるいは図11を用いて前述したように、数値テーブル206bの名称は、組み合わせて用いる動作記述206aの名称中の所定部分と通し番号とが組み合わされたものとなっているから、取りあえず数値テーブル206bの名称を決定してYOGOチャート200に記入しておき、そして、後から数値テーブル206bの数値を修正したり、数値テーブル206bを変更したりすることができる。また、新たな名称の数値テーブル206bを作成すると、その数値テーブル206bには新たな数値テーブル番号(図10図11参照)が自動的に付番されるようになっている。
【0088】
YOGOチャート解析部113は、YOGOチャート作成部111で作成されたYOGOチャート200を読み込んで解析することによって、中間データを生成した後、中間データを制御プログラム生成部114に出力する。YOGOチャートから中間データを生成する処理については、後ほど詳しく説明する。尚、制御プログラム生成装置110内のYOGOチャート作成部111でYOGOチャート200を作成する代わりに、中央制御装置100とは別体に設けたコンピュータ50でYOGOチャート200を作成しておき、そのYOGOチャートをYOGOチャート解析部113が読み込んで解析しても良い。
【0089】
制御プログラム生成部114は、中間データを受け取ると、基本動作記憶部112を参照することによって、中間データから制御プログラムを生成する。中間データから制御プログラムを生成する方法については、後ほど詳しく説明する。そして、得られた制御プログラムは、後述する動作制御装置120に出力する。
【0090】
図14は、上述した制御プログラム生成装置110が実行する制御プログラム生成処理の概要を示したフローチャートである。図示されるように、制御プログラム生成処理では、先ず初めにYOGOチャートを読み込む(STEP1)。続いて、読み込んだYOGOチャートを解析して中間データを生成する(STEP2)。
【0091】
図15は、制御プログラム生成装置110内のYOGOチャート解析部113が、YOGOチャートを解析して中間データを生成する処理(YOGOチャート解析処理)のフローチャートである。図示したように、YOGOチャート解析処理では、先ず初めに、部分期間番号Nおよびアクチュエータ番号Mを「1」に初期化する(STEP10)。続いて、YOGOチャート上での座標(N,M)の位置に、基本動作が記入されているか否かを判断する(STEP11)。ここで、YOGOチャート上での座標(N,M)とは、YOGOチャート上で、部分期間番号Nとアクチュエータ番号Mとの組み合わせで特定されるマス目状の座標位置を表している。STEP10で部分期間番号Nおよびアクチュエータ番号Mを初期化した直後は、NおよびMは何れも「1」であるから、YOGOチャート上の座標(1,1)の位置に基本動作が記入されているか否かを判断することになる。
【0092】
図8に例示したYOGOチャートの場合では、座標(1,1)には基本動作は記入されていないから、STEP11では「no」と判断して、アクチュエータ番号Mが最終値に達したか否かを判断する(STEP14)。本実施例のパイプベンダ10には10個のアクチュエータAc10~Ac19が搭載されているから、アクチュエータ番号Mの最終値は10となる。従って、座標(1,1)の基本動作の有無を確認した後のSTEP14の判断では、「no」と判断されるので、アクチュエータ番号Mを1つ増加させる(STEP15)。そして、増加させたアクチュエータ番号Mを用いて、再び、座標位置(N,M)に基本動作が記入されているか否かを判断する(STEP11)。
【0093】
このように、部分期間番号Nは「1」のまま、アクチュエータ番号Mを1つずつ増加させながら、座標(1,M)に基本動作が記入されているか否かを判断して行き、基本動作が記入されている座標(1,M)に達すると、STEP11で「yes」と判断されることになる。
【0094】
そして、STEP11で「yes」と判断された場合は、その座標に記入されている基本動作の動作記述206aを読み込み、更に、基本動作の数値テーブル206bも記入されている場合は数値テーブル206bを読み込む(STEP12)。図8に例示したYOGOチャートでは、座標(1,4)に達すると、STEP11で「yes」と判断されて、「Ω-AC」という動作記述206aと、「AC-B11」という数値テーブル206bとを、基本動作として読み込むことになる。
【0095】
続いて、基本動作を読み込んだ座標(N,M)と、読み込んだ動作記述206aおよび数値テーブル206bを含んだデータ(以下、中間データ(N,M,動作記述,数値テーブル))をメモリに記憶する(STEP13)。図8に例示したYOGOチャートの座標(1,4)の場合であれば、(1,4,Ω-AC,AC-B11)という中間データをメモリに記憶することになる。従って、この中間データは、YOGOチャート上で部分期間番号が1番、アクチュエータ番号Mが4番の位置に、「Ω-AC」という動作記述206aと「AC-B11」という数値テーブル206bとによって規定される基本動作が記入されていることを表している。
【0096】
こうして、YOGOチャートから読み出した中間データをメモリに記憶した後は(STEP13)、アクチュエータ番号Mが最終値(ここでは、10)に達したか否かを判断する(STEP14)。その結果、最終値に達していない場合は(STEP14:no)、アクチュエータ番号Mを1つ増加させた後(STEP15)、STEP11に戻って、再び、YOGOチャート上の座標(N,M)に基本動作が記入されているか否かを判断する。
【0097】
これに対して、アクチュエータ番号Mが最終値に達していた場合は(STEP14:yes)、今度は、部分期間番号Nが最終値に達したか否かを判断する(STEP16)。例えば、YOGOチャート上で、パイプベンダ10の動作が100個の部分期間を用いて記述されているのであれば、部分期間番号Nの最終値は100となる。
【0098】
その結果、部分期間番号Nが最終値に達していない場合は(STEP16:no)、部分期間番号Nを1つ増加させると共に(STEP17)、アクチュエータ番号Mを「1」に初期化した後(STEP18)、STEP11に戻って、再び、YOGOチャート上の座標(N,M)に基本動作が記入されているか否かを判断する。すなわち、YOGOチャート上で(図8参照)、部分期間番号Nが1番の部分期間を上から順番に確認して行き、一番下まで確認したら、今度は、部分期間番号Nが2番の部分期間を上から順番に確認して行き、2番の部分期間を確認し終わったら、部分期間番号Nが3番の部分期間というように、部分期間番号Nが小さな部分期間から大きな部分期間に向かって順番に、YOGOチャートに記入されている基本動作を読み出して、中間データをメモリに記憶して行くのである。
【0099】
そして、このような操作を繰り返していき、最終的に、部分期間番号Nが最終値に達したと判断したら(STEP16:yes)、YOGOチャートに記入された全ての基本動作を読み出したことになる。そこで、メモリに記憶しておいた中間データを読み出して、制御プログラム生成部114に出力する(STEP19)。
【0100】
図16には、図8に例示したYOGOチャートを解析した場合に得られる中間データが例示されている。図示されるように中間データは、部分期間番号Nと、アクチュエータ番号Mと、動作記述206aと、数値テーブル206bとが、この順序で並んだ一組のデータ(以下、「データレコード」と呼ぶ)が集まったものとなっている。また、各データレコードの部分期間番号Nは、1~YOGOチャート上の部分期間番号Nの最終値までの何れかの値を取り、アクチュエータ番号Mは、YOGOチャートに記載されたアクチュエータ番号Mの何れかの値を取る。また、YOGOチャート上の全ての部分期間番号Nは、必ず何れかのデータレコードに記載されており、YOGOチャートに記載された全てのアクチュエータ番号Mは、必ず何れかのデータレコードに記載されている。このような中間データを出力したら、図16のYOGOチャート解析処理を終了して、図15の制御プログラム生成処理に復帰する。
【0101】
図15に示した制御プログラム生成処理では、このようにして得られた中間データに基づいて、制御プログラムを生成する(STEP3)。図17には、図16に例示した中間データから生成された制御プログラムが示されている。図示されるように制御プログラムは、部分期間番号Nと、アクチュエータ番号Mと、プログラム要素番号Pと、数値テーブル番号Tとが、この順序で並んだ一組のデータ(すなわち、データレコード)が集まったものとなっている。図16に示した中間データのデータレコードと、図17に示した制御プログラムのデータレコードとを比較すれば明らかなように、制御プログラムのデータレコードは、中間データのデータレコード中の動作記述206aが、その動作記述206aに対応するプログラム要素番号Pに置き換えられ(図13参照)、中間データのデータレコード中の数値テーブル206bが、その数値テーブル206bに対応する数値テーブル番号Tに置き換えられたものとなっている(図10図11参照)。
【0102】
中間データ中の動作記述206aおよび数値テーブル206bを、それぞれプログラム要素番号および数値テーブル番号に置き換える操作は、図12中の制御プログラム生成部114が、基本動作記憶部112を参照することによって実行される。すなわち、基本動作記憶部112には、動作記述206aがプログラム要素番号と対応付けて記憶されている(図13参照)。更に、基本動作記憶部112には、図10図11に例示した数値テーブル206bが記憶されており、それぞれの数値テーブル206bには数値テーブル番号が設定されている。そこで、制御プログラム生成部114は、基本動作記憶部112に記憶されている図13の対応関係や、図10図11に例示した数値テーブル206bを参照することによって、中間データ中の動作記述206aや数値テーブル206bを、プログラム要素番号および数値テーブル番号に置き換えて行く。
【0103】
以上のようにして、中間データから制御プログラムを生成したら(図15のSTEP3)、生成した制御プログラムを、中央制御装置100に搭載された動作制御装置120に出力して(STEP4)、図15の制御プログラム生成処理を終了する。そして、本実施例の動作制御装置120は、このような制御プログラムに従って、自動製造機械(パイプベンダ10や、アームロボット20、30など)の動作を制御する。
【0104】
D.動作制御装置120が自動製造機械の動作を制御する方法 :
D-1.動作制御装置120の内部構造 :
図18は、本実施例の動作制御装置120についての説明図である。図示されるように、動作制御装置120は、制御プログラム記憶部121や、起動検知部122や、制御対象期間選択部123や、制御内容抽出部124や、コマンド生成部125や、コマンド記憶部126や、制御実行部127などを備えている。尚、これらの「部」は、動作制御装置120が制御プログラムに従って複数のアクチュエータの動作を制御するために備える複数の機能を表した抽象的な概念である。従って、動作制御装置120が、これらの「部」に相当する部品を組み合わせて形成されていることを表しているわけではない。実際には、これらの「部」は、CPUで実行されるプログラムの形態で実現することもできるし、ICチップやLSIなどを組み合わせた電子回路の形態で実現することもできるし、更には、これらが混在した形態など、様々な形態で実現することができる。
【0105】
制御プログラム記憶部121は、制御プログラム生成装置110で生成された制御プログラムを予め記憶している。また、起動検知部122は、中央制御装置100に設けられた起動スイッチ120aに接続されており、起動スイッチ120aが押されたことを検知すると、その旨を制御対象期間選択部123に出力する。
【0106】
制御対象期間選択部123は、起動スイッチ120aが押された旨の情報を受け取ると、制御対象となる部分期間(以下、制御対象期間)として、YOGOチャートに記載された先頭の部分期間を選択して、その部分期間の部分期間番号を制御内容抽出部124に出力する。
【0107】
制御内容抽出部124は制御プログラム記憶部121に接続されており、制御対象期間の部分期間番号を受け取ると、制御プログラム記憶部121に記憶されている制御プログラムの中から、制御対象期間の部分期間番号を有するデータレコードを抽出する。前述したようにデータレコードには、部分期間番号Nと共に、アクチュエータ番号Mや、プログラム要素番号Pや、数値テーブル番号Tが記憶されている。アクチュエータ番号Mは、制御対象となるアクチュエータを表している。また、プログラム要素番号Pはアクチュエータの制御に用いるプログラム要素を表し、数値テーブル番号Tは、アクチュエータの制御に用いる数値が設定された数値テーブルを表している。そして、プログラム要素および数値テーブルの組み合わせは具体的な制御内容(すなわち、制御しようとする動作内容)を表している。従って、制御プログラム中から制御対象期間の部分期間番号を有するデータレコードを抽出するということは、制御対象のアクチュエータと、そのアクチュエータに対する制御内容とを抽出していることになる。制御内容抽出部124は、こうして抽出したアクチュエータおよび制御内容を、コマンド生成部125に出力する。また、複数のデータレコードが抽出された場合には、それぞれのデータレコードに対応するアクチュエータおよび制御内容が、コマンド生成部125に出力されることになる。
【0108】
コマンド生成部125は、制御対象期間で制御するアクチュエータと、アクチュエータの制御内容とを受け取ると、その内容に応じたコマンドを生成して、アクチュエータが指定された状態で制御実行部127にコマンドを出力する。コマンドを生成する方法については後ほど詳しく説明するが、コマンド記憶部126には、プログラム要素番号Pとコマンドとが対応付けて記憶されており、コマンド生成部125は制御内容を受け取ると、その制御内容に含まれるプログラム要素番号Pを用いてコマンド記憶部126を参照することによってコマンドを生成する。尚、制御対象期間で制御するアクチュエータが複数存在する場合には、それぞれのアクチュエータに対してコマンドが生成されて、制御実行部127に出力される。
【0109】
制御実行部127は、ドライバアンプDA10~DA19や、ドライバアンプDA21~DA27や、ドライバアンプDA31~DA37に接続されている。そして、ドライバアンプDA10~DA19には、パイプベンダ10のアクチュエータAc10~Ac19が接続されており、ドライバアンプDA21~DA27には、アームロボット20のアクチュエータAc21~Ac27が接続され、ドライバアンプDA31~DA37には、アームロボット30のアクチュエータAc31~Ac37が接続されている。制御実行部127は、アクチュエータが指定された状態でコマンドを受け取ると、指定されたアクチュエータに対応するドライバアンプを駆動することによって、アクチュエータがコマンドに対応する基本動作を行うようにフィードバック制御を実行する。この点についても後ほど詳しく説明する。また、制御対象のアクチュエータが複数存在する場合には、それぞれのアクチュエータについてフィードバック制御を実行する。
【0110】
その結果、全てのアクチュエータで基本動作が完了したことを検知したら、制御実行部127は、制御対象期間での制御が終了した旨を、制御対象期間選択部123に出力する。すると、制御対象期間選択部123は、前回に制御対象期間として選択した部分期間の次の部分期間を、新たな制御対象期間として選択して、その新たな制御対象期間の部分期間番号Nを制御内容抽出部124に出力する。制御内容抽出部124は新たな制御対象期間について、前述したように制御内容を抽出して、その結果をコマンド生成部125に出力し、それを受けてコマンド生成部125がコマンドを生成して制御実行部127に出力する。そして、そのコマンドに従って、制御実行部127が新たな制御対象期間でのアクチュエータの制御を開始する。また、こうした制御の実行中であっても、中央制御装置100に設けられた停止スイッチ120bを押すことによって、制御実行部127に制御を停止させることもできる。上述したように、本実施例の動作制御装置120は、先頭の部分期間から最終の部分期間まで、1つずつ部分期間を選択することによって、自動製造機械に搭載された各アクチュエータの動作を制御する。
【0111】
D-2.動作制御装置120が実行する動作制御処理 :
図19は、本実施例の動作制御装置120が、自動製造機械に搭載された各アクチュエータの動作を制御するために実行する動作制御処理のフローチャートである。図19に示すように、動作制御処理を開始すると、先ず初めに、制御プログラム記憶部121に記憶されている制御プログラムを読み出す(STEP50)。続いて、部分期間番号Nを「1」に設定して(STEP51)、設定された部分期間番号Nを有すデータレコードを、制御プログラムの中から抽出する(STEP52)。尚、設定された部分期間番号Nのデータレコードが、制御プログラム中に複数存在する場合は、全てのデータレコードを抽出する。動作制御処理を開始した直後であれば、部分期間番号Nは「1」に設定されているから、図17に例示した制御プログラムから、(1,4,4,19)というデータレコードを抽出することになる。
【0112】
続いて、抽出したデータレコード中のアクチュエータ番号Mに基づいて、制御対象となるアクチュエータを特定する(STEP53)。STEP52で読み出したデータレコードを(1,4,4,19)とすれば、データレコード中で2番目に記載されている「4」がアクチュエータ番号Mであり、アクチュエータ番号Mが「4」のアクチュエータが制御対象のアクチュエータとなる。また、STEP52で複数のデータレコードを読み出していた場合には、それぞれのデータレコードに記憶されているアクチュエータ番号Mに基づいて、制御対象となるそれぞれのアクチュエータを特定する。
【0113】
更に、読み出したデータレコード中のプログラム要素番号Pを読み出して、そのプログラム要素番号Pに対応するコマンドを取得する(STEP54)。図18に示した動作制御装置120のコマンド記憶部126には、プログラム要素番号Pとコマンドとの対応関係が予め記憶されており、この対応関係を参照することによってコマンドを取得する。
【0114】
図21は、動作制御装置120のコマンド記憶部126に記憶されているプログラム要素番号Pとコマンドとの対応関係を例示した説明図である。例えば、プログラム要素番号1番には、「ACMTR_OC_wT」というコマンド名が対応付けられているが、このコマンドは、ACサーボモータを用いて開閉動作させるためのコマンドである。また、プログラム要素番号3番には、「ACMTR_OC_woT」というコマンド名が対応付けられているが、このコマンドも、ACサーボモータを用いて開閉動作させるためのコマンドである。「ACMTR_OC_wT」というコマンドと、「ACMTR_OC_woT」というコマンドとの違いは、開閉動作を行うための所要時間が指定されるか否かの違いである。すなわち、「ACMTR_OC_wT」というコマンドは、所要時間で開閉動作させるためのコマンドであるのに対して、「ACMTR_OC_woT」というコマンドは、所要時間を限定せずに開閉動作させるためのコマンドとなっている。また、プログラム要素番号2番には、「ARCYL_OC」というコマンド名が対応付けられているが、このコマンドは、エアシリンダを用いて開閉動作させるためのコマンドである。図19に示した動作制御処理のSTEP54では、図21に示すような対応関係を参照することによって、プログラム要素番号Pに対応するコマンドを取得する。
【0115】
また、図21に示したように、コマンドには、コマンド名に応じた引数を設定するようになっている。例えば、プログラム要素番号1番に対応する「ACMTR_OC_wT」というコマンドには3つの引数を設定する必要があり、第1引数には、「0」または「1」の何れかの値を設定する。ここで「0」は開動作させることを示し、「1」は閉動作させることを示している。また、第2引数には、開閉動作させる際の開閉量を設定し、第3引数には、開閉動作させる際の所要時間を設定するようになっている。逆に言えば、コマンド名を取得しただけではコマンドを生成することはできず、コマンドを生成するには、コマンドに応じた引数を設定する必要がある。
【0116】
そこで、図19の動作制御処理では、データレコードに記憶されている数値テーブル番号Tを取得して、その数値テーブル番号Tに対応する数値テーブル206bを読み出す(STEP55)。数値テーブル206bも、動作制御装置120のコマンド記憶部126に予め記憶されている。また、図10あるいは図11を用いて前述したように、数値テーブル206bには予め各種の値が設定されている。そして、読み出した数値テーブル206bに設定されている値を、先に取得したコマンドの引数に設定することによって、コマンドを生成する(STEP56)。
【0117】
尚、コマンドの中には、引数が不要なコマンドも存在する。例えば、図21に示したように、プログラム要素番号2番に対応する「ARCYL_OC」というコマンドには、引数が不要となっている。このことに対応して、データレコードの中には数値テーブル番号Tが設定されていないデータレコードも存在する。例えば、プログラム要素番号Pとして「2」が設定されているデータレコードには、数値テーブル番号Tが設定されていない。図19のSTEP52で抽出したデータレコードがこのようなデータレコードであった場合は、STEP55で数値テーブル206bを読み出したり、STEP56でコマンドに引数を設定したりする操作は不要となる。
【0118】
続いて、生成したコマンドに対応する経過目標値の数値列を生成する(STEP57)。図22は、コマンドに対応する経過目標値の数値列を生成する様子を例示した説明図である。図22に示した例では、コマンド名が「ACMTR_FR_woT」というコマンド(すなわち、アクチュエータを指定された移動量だけ進退動作させるが、移動に要する所要時間は決められていないコマンド(図21参照))で、移動量Dtが指定された場合が示されている。所要時間が指定されていないので、図22(a)に示した標準的な駆動パターン、すなわち、所定の加速時間Tacをかけて、アクチュエータが停止した状態から所定の標準速度Ssまで加速させ、その後は一定の標準速度Ssで移動(前進あるいは後退)させる。そして、移動量が引数で指定された移動量Dtに近付くと、所定の減速時間Tdcをかけて、標準速度Ssから速度0まで減速させる。この時のアクチュエータの駆動時間は、引数で指定された移動量Dtに応じて定まる時間Ttとなる。
【0119】
図22(b)には、図22(a)に示した駆動パターンで駆動した時に、時間の経過と共にアクチュエータが移動する様子が示されている。図22(b)に示されるように、アクチュエータの駆動を開始してから時間Ttが経過すると、アクチュエータの移動量が、引数で指定された移動量Dtに達する。従って、コマンド名が「ACMTR_FR_woT」で、移動量Dtが指定されたコマンド(所要時間の指定は無し)を受け取った場合には、アクチュエータの位置を図22(b)に示すように制御すれば良い。
【0120】
そこで、所定の時間間隔dTでアクチュエータの位置の変化を予め算出しておく。すなわち、駆動を開始してから時間dTが経過した時点での移動量D1を算出し、更に時間dTが経過した時点での移動量D2を算出し、更に時間dTが経過した時点での移動量D3を算出するというように、所定時間dT毎のアクチュエータの位置を算出する。このようにすることで、図22(c)に示すような数値列を得ることができる。この数値列が、コマンドに対応する経過目標値の数値列であり、時間の経過と共にアクチュエータを移動させる目標の位置を表している。
【0121】
上述した経過目標の数値列は、図19のSTEP56で生成されたコマンドに応じて生成される。例えば、図22では、コマンド名が「ACMTR_FR_woT」というコマンドであった場合に生成される数値列について説明した。しかし、コマンド名が「ACMTR_FR_wT」というコマンド(すなわち、アクチュエータを指定された移動量だけ、指定された所要時間で進退動作させるコマンド(図21参照))であった場合は、図23に示すような数値列が生成される。
【0122】
例えば、コマンドの引数として指定された所要時間が、図22で移動に要した時間Ttよりも短い時間Tcであったとする。尚、引数で指定された移動量は図22と同じ移動量Dtとする。この場合、図22(a)に示した標準速度Ssで移動させたのでは、移動に要する所要時間が時間Tcに収まらない。そこで、図23(a)に示すように、アクチュエータを標準速度Ssよりも大きな移動速度Scまで加速させる。この時の加速度は、図22(a)に示した標準的な駆動パターンと同じ加速度とすることができる。その後は一定の移動速度Scでアクチュエータを移動(前進あるいは後退)させ、そして、移動量が指定された移動量Dtに近付くと、移動速度Scを速度0まで減速させる。この時の減速度も、図22(a)の標準的な駆動パターンと同じ減速度とすることができる。
【0123】
図23(b)には、図23(a)に示した駆動パターンで駆動した時に、時間の経過と共にアクチュエータが移動する様子が示されている。このようなアクチュエータの位置の変化を、所定の時間間隔dTで算出することによって、図23(c)に示すような経過目標値の数値列を求めることができる。尚、上述した移動量Dtは、本発明における「動作目標値」に対応し、経過目標値の数値列は、本発明における「経過動作」に対応する。そして、経過目標値の数値列は、移動量Dtおよびコマンドに基づいて生成されており、そのコマンドは、YOGOチャート200に記載された動作記述206aによって決定されている。従って、本実施例では動作記述206aが、本発明における「経過動作を生成するための情報」に対応する。
【0124】
図19のSTEP57では、以上のようにして、コマンドに対応する経過目標値の数値列を生成する。尚、経過目標値の数値列を生成する処理は、図18に示した動作制御装置120内の制御実行部127によって実行される。
【0125】
続いて、動作制御装置120内の制御実行部127は、制御対象のアクチュエータの状態量を検出する(図20のSTEP58)。アクチュエータの状態量とは、アクチュエータにさせる動作に応じて決まる物理量であり、例えば、アクチュエータにさせる動作が進退動作の場合は移動量となり、アクチュエータにさせる動作が回転動作の場合は回転量となる。更に、アクチュエータにさせる動作が開閉動作の場合は開閉量となる。アクチュエータの状態量は、移動速度や回転速度などとすることもできる。また、図2あるいは図4を用いて前述したように、アクチュエータAc10~Ac19、Ac21~Ac27、Ac31~Ac37には、エンコーダなどのセンサー類が内蔵されており、動作制御装置120の制御実行部127は、DA10~DA19、DA21~DA27、DA31~DA37を介してセンサー類の出力を取得することにより、アクチュエータの状態量を検出することができる。
【0126】
そして、検出したアクチュエータの状態量が、経過目標値の数値列に従って変化するように、アクチュエータのドライバアンプDAに出力する駆動量をフィードバック制御する(STEP59)。すなわち、アクチュエータの駆動開始後、所定の時間dTが経過すると、数値列中の先頭の経過目標値を読み出して、アクチュエータの状態量と比較し、経過目標値とアクチュエータの状態量との偏差が小さくなるように、ドライバアンプDAに出力する駆動量を変更する。
【0127】
その後、数値列に含まれる全ての経過目標値に対してフィードバック制御を終了したか否かを判断する(STEP60)。数値列中の先頭の経過目標値を読み出してフィードバック制御しただけでは、まだ全ての経過目標値に対してフィードバック制御を終了してはいないので、STEP60では「no」と判断して、STEP58に戻って、所定の時間dTが経過後のアクチュエータの状態量を検出する。そして、数値列中の先頭から2番目の経過目標値を読み出して、アクチュエータの状態量と比較し、経過目標値とアクチュエータの状態量との偏差が小さくなるように、ドライバアンプDAに出力する駆動量を変更した後(STEP59)、数値列中の全ての経過目標値に対してフィードバック制御を終了したか否かを判断する(STEP60)。また、制御対象のアクチュエータが複数存在する場合には、全てのアクチュエータに対して上述した操作(STEP58~STEP60)を並行して実施する。
【0128】
こうした操作を繰り返しているうちに、数値列中の最後の経過目標値に対してフィードバック制御を終了したら(STEP59)、STEP60では「yes」と判断される。続いて、全てのアクチュエータに対して上述したフィードバック制御が終了したか否かを判断し(STEP61)、まだ終了していないアクチュエータが残っていた場合は(STEP61:no)、STEP58に戻って、まだ制御が終了していないアクチュエータに対して、上述した一連の操作(STEP58~STEP60)を繰り返す。
【0129】
その結果、全てのアクチュエータに対して上述した制御が終了したと判断した場合は(STEP61:yes)、今度は、部分期間番号Nが最終値に達したか否かを判断する(STEP62)。ここで、部分期間番号Nとは、YOGOチャートの部分期間に付された通し番号であり、YOGOチャートに100個の部分期間が存在する場合は、部分期間番号Nの最終値は「100」となる。そして、部分期間番号が最終値に達していないと判断した場合は(STEP62:no)、制御プログラム中で未だ処理していないデータレコードが残っていることになるので、部分期間番号Nを1つ増加させる(STEP63)。その後、図19のSTEP52に戻って、制御プログラムの中から新たな部分期間番号Nのデータレコードを抽出した後、続く上述した一連の操作(STEP53~STEP62)を繰り返す。このような操作を繰り返すうちに、やがては部分期間番号Nが最終値に達する。すると、STEP62で「yes」と判断して、図19および図20に示した動作制御処理を終了する。
【0130】
以上に詳しく説明したように、本実施例の動作制御装置120は、部分期間番号Nを有する複数のデータレコードの形式で記述された制御プログラムを読み込むと、同じ部分期間番号Nのデータレコードを抽出して(図19のSTEP52参照)、抽出したデータレコードの内容に応じたコマンドを生成する(STEP56参照)。そして、コマンドに応じた経過目標値の数値列を生成して(STEP57参照)、アクチュエータの動作をフィードバック制御する(図20のSTEP58~STEP60参照)。その結果、制御プログラムのデータレコードを、インタープリタ形式で(すなわち、同じ部分期間番号Nのデータレコード毎に内容を解釈して)、制御を実行していることになる。このため、自動製造機械の多数のアクチュエータが搭載されている場合や、複数の自動製造機械を制御する場合でも、同時に制御するアクチュエータの数を抑制することができる。その結果、高い処理能力の動作制御装置120を用意しなくても、十分に実用的な速度で制御プログラムを実行することが可能となる。
【0131】
また、YOGOチャートは、動作するアクチュエータの数が多い部分期間が生じた場合でも、図6あるいは図7を用いて前述したように、動作するアクチュエータの数が一定数より少なくなるように簡単に修正することができる。そして、このように修正したYOGOチャートから生成した制御プログラムでは、部分期間番号Nが同じデータレコードの数も一定数よりも少なくなるので、同時に制御するアクチュエータの数も一定数以下とすることができる。その結果、一般的な処理速度の動作制御装置120を用いても、制御プログラムを十分に実用的な速度で実行することが可能となる。
【0132】
E.変形例 :
上述した本実施例の動作制御装置120には、複数の変形例が存在する。以下では、これらの変形例について説明する。尚、以下に説明する変形例は、上述した本実施例と共通する部分が多く存在する。そこで、本実施例と変形例とで共通する構成については、変形例でも同じ符号を付することによって説明を省略し、変形例では本実施例との相違点を中心として説明する。
【0133】
E-1.第1変形例 :
上述した本実施例の動作制御装置120では、複数の部分期間の中から1つの部分期間を制御対象期間として選択し、制御対象期間に割り当てられた全てのアクチュエータの基本動作206が終了したら(図20のSTEP61:yes)、次の部分期間を新たな制御対象期間として選択するものとして説明した。しかし、製造システム1(あるいは自動製造機械)の制御では、製造効率(時間あたりの製造数)を出来るだけ高めることが要請される場合がある。このような場合は、アクチュエータの基本動作206が終了したものとみなすための条件を設定しておき、その条件が満足されたら基本動作206が終了したものとみなして(図20のSTEP61:yes)、次の部分期間を新たな制御対象期間として選択するようにしてもよい。
【0134】
例えば、図8に例示したYOGOチャート200では、部分期間番号が2番の部分期間にはアクチュエータAc11の基本動作206だけが割り当てられており、アクチュエータAc11の基本動作206が終了したら、部分期間番号が3番の部分期間に割り当てられたアクチュエータAc12の基本動作206が開始されるようになっている。ここで、アクチュエータAc11の基本動作206の動作記述206aは「Ω-AB」であり、数値テーブル206bは「AB-B01」となっている。「Ω-AB」という動作記述206aは回転動作を表している(図9参照)。また、図11(a)に示した例では、「AB-B01」という数値テーブル206bには、回転動作させる目標の回転角度として「90」度が設定されている。従って、アクチュエータAc11の回転角度が90度に達したら、アクチュエータAc11の基本動作206が終了して、次のアクチュエータAc12の基本動作206が開始されることになる。
【0135】
これに対して、図24に例示した第1変形例の数値テーブル206bには、図11(a)の数値テーブル206bに対して、「次動作許可位置」という項目が追加されている。この項目は、数値テーブル206bの「回転角度」という項目に設定された数値に対して、「次動作許可位置」という項目に設定された数値だけ手前の位置で、基本動作206が終了したとみなせることを表している。図24に示した例では、「回転角度」という項目には「90」度が設定されており、「次動作許可位置」という項目には「-5」度が設定されているから、アクチュエータAc11の回転角度が85度(=90-5)に達したら、アクチュエータAc11の基本動作206が終了したものとみなして、次のアクチュエータAc12の基本動作206を開始することが可能となる。
【0136】
以上では、制御対象期間として選択された部分期間に、1つのアクチュエータの基本動作206だけが割り当てられている場合について説明した。しかし、制御対象期間として選択された部分期間に、複数のアクチュエータの基本動作206が割り当てられている場合も起こり得る。例えば、図8に例示したYOGOチャート200では、部分期間番号が6番の部分期間には、アクチュエータAc10と、アクチュエータAc16と、アクチュエータAc17の3つの基本動作206が割り当てられている。このような場合は、これら3つの基本動作206の数値テーブル206bに、基本動作が終了したものとみなすための条件を示す項目(すなわち、次動作許可位置)を追加することができる。そして、すべての基本動作206について、基本動作206が終了するか、あるいは終了したとみなせたら、次の部分期間(ここでは部分期間番号が7番の部分期間)に割り当てられた基本動作206(ここではアクチュエータAc12の基本動作206)を開始する。
【0137】
こうすれば、次の部分期間に割り当てられた基本動作206の開始時期を早めることができるので、全ての部分期間を終了するまでに要する時間を短縮することができる。その結果、製造システム1の製造効率を向上させることが可能となる。
【0138】
E-2.第2変形例 :
前述した本実施例の動作制御装置120では、動作制御装置120内の制御実行部127が、コマンドに対応する経過目標値の数値列を生成して、アクチュエータのドライバアンプに対して駆動量を出力するものとして説明した。ここで、アクチュエータを駆動するためのドライバアンプは、アクチュエータを購入する際に、アクチュエータのメーカからアクチュエータと一緒に供給されることが一般的である。しかしドライバアンプだけでなく、コマンドを受け取って前述した経過目標値に対応する数値列を生成してドライバアンプに出力するコントローラ(モーションコントローラと呼ばれることがある)も、アクチュエータのメーカから供給される場合もある。更には、アームロボット20,30については、搭載されたアクチュエータを駆動する専用コントローラが供給される場合もある。このようなコントローラが供給される場合は、次のような動作制御装置120とすることもできる。
【0139】
図25は、第2変形例の動作制御装置120についての説明図である。図25に示した第2変形例の動作制御装置120は、図18を用いて前述した本実施例の動作制御装置120に対して、制御実行部127の代わりに、コントローラMC10~MC19や、コントローラCN20,CN30を備えている点が異なっている。第2変形例のコマンド生成部125は、コマンドを生成すると、そのコマンドをコントローラMC10~MC19に出力し、コントローラMC10~MC19がドライバアンプDA10~DA19を介してアクチュエータAc10~Ac19の動作を制御する。また、アームロボット20、30に搭載されたアクチュエータAc21~Ac27、Ac31~Ac37ついては、コマンド生成部125がコマンドを生成すると、そのコマンドをコントローラCN20,CN30に対して出力する。すると、コントローラCN20,CN30が、ドライバアンプDA21~DA27、DA31~DA37を介してアクチュエータAc21~Ac27、Ac31~Ac37の動作を制御する。
【0140】
また、コマンド生成部125は、アクチュエータAc10~Ac19の制御が終了すると、コントローラMC10~MC19を介してその旨を検知し、アクチュエータAc21~Ac27、Ac31~Ac37の制御が終了すると、コントローラCN20、CN30を介してその旨を検知する。そしてコマンド生成部125、動作中の全てのアクチュエータの制御が終了したことを検知したら、その旨を制御対象期間選択部123に出力し、それを受けて、制御対象期間選択部123が新たな制御対象期間を選択するようになっている。更に、図25に示した第2変形例では、停止スイッチ120bが押されると、そのことをコマンド生成部125が検知して、コントローラMC10~MC19、CN20、CN30に対して制御を中止するコマンドを出力するようになっている。
【0141】
図25に示した第2変形例の動作制御装置120は、以上の点で、図18を用いて前述した本実施例の動作制御装置120と異なるが、その他の点については本実施例の動作制御装置120と同様である。このような第2変形例の動作制御装置120でも、本実施例の動作制御装置120と同様な効果を得ることが可能となる。
【0142】
以上、本実施例および各種の変形例の動作制御装置120について説明したが、本発明は上記の実施例および各種の変形例に限られるものではなく、その要旨を逸脱しない範囲において種々の態様で実施することが可能である。
【符号の説明】
【0143】
1…製造システム、 10…パイプベンダ、 11…レール、
12…送出ユニット、 12a…把持軸、 12b…チャック、
13…加工ユニット、 15…アクチュエータ、 20…アームロボット、
21…基台、 22…本体部、 23…第1アーム部、
24…第2アーム部、 25…第3アーム部、 26…第4アーム部、
27…掌部、 28…把持部、 30…アームロボット、 31…基台、
32…本体部、 33…第1アーム部、 34…第2アーム部、
35…第3アーム部、 36…第4アーム部、 37…掌部、
38…把持部、 50…コンピュータ、 100…中央制御装置、
100m…モニター画面、 100s…操作入力ボタン、
110…制御プログラム生成装置、 112…基本動作記憶部、
114…制御プログラム生成部、 120…動作制御装置、
120a…起動スイッチ、 120b…停止スイッチ、
121…制御プログラム記憶部、 122…起動検知部、
123…制御対象期間選択部、 124…制御内容抽出部、
125…コマンド生成部、 126…コマンド記憶部、 127…制御実行部、
201…仕切線、 202…トリガ線、 203…動作線、 204…始点、
205…終点、 206a…動作記述、 206b…数値テーブル、
Ac10~AC19、AC21~Ac27、Ac31~Ac37…アクチュエータ、
CN20、CN30…コントローラ、
DA10~DA19、DA21~DA27、DA31~DA37…ドライバアンプ、
MC10~MC19…コントローラ。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25