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

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

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

<>
  • 特許-制御プログラム生成装置 図1
  • 特許-制御プログラム生成装置 図2
  • 特許-制御プログラム生成装置 図3
  • 特許-制御プログラム生成装置 図4
  • 特許-制御プログラム生成装置 図5
  • 特許-制御プログラム生成装置 図6
  • 特許-制御プログラム生成装置 図7
  • 特許-制御プログラム生成装置 図8
  • 特許-制御プログラム生成装置 図9
  • 特許-制御プログラム生成装置 図10
  • 特許-制御プログラム生成装置 図11
  • 特許-制御プログラム生成装置 図12
  • 特許-制御プログラム生成装置 図13
  • 特許-制御プログラム生成装置 図14
  • 特許-制御プログラム生成装置 図15
  • 特許-制御プログラム生成装置 図16
  • 特許-制御プログラム生成装置 図17
  • 特許-制御プログラム生成装置 図18
  • 特許-制御プログラム生成装置 図19
  • 特許-制御プログラム生成装置 図20
  • 特許-制御プログラム生成装置 図21
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-18
(45)【発行日】2024-07-26
(54)【発明の名称】制御プログラム生成装置
(51)【国際特許分類】
   G05B 19/05 20060101AFI20240719BHJP
【FI】
G05B19/05 A
【請求項の数】 4
(21)【出願番号】P 2020129779
(22)【出願日】2020-07-30
(65)【公開番号】P2022026361
(43)【公開日】2022-02-10
【審査請求日】2023-06-08
(73)【特許権者】
【識別番号】000150213
【氏名又は名称】株式会社オプトン
(74)【代理人】
【識別番号】100111970
【弁理士】
【氏名又は名称】三林 大介
(72)【発明者】
【氏名】尾崎 秀典
(72)【発明者】
【氏名】可兒 利弘
(72)【発明者】
【氏名】與語 照明
【審査官】渡邊 捷太郎
(56)【参考文献】
【文献】特開平06-067709(JP,A)
【文献】特開2005-327263(JP,A)
【文献】国際公開第2015/075790(WO,A1)
【文献】特開2019-016037(JP,A)
【文献】特開2013-054650(JP,A)
【文献】特開平10-222209(JP,A)
【文献】国際公開第2015/063925(WO,A1)
【文献】特開2019-016095(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
(57)【特許請求の範囲】
【請求項1】
複数のアクチュエータ(10~20)を備えた自動製造機械(1)の制御プログラムを生成する制御プログラム生成装置(110)であって、
前記アクチュエータの自由度毎の動作を表す基本動作(206)を、前記基本動作を実現するプログラム要素と対応付けて記憶している基本動作記憶部(102)と、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、前記自動製造機械の動作が複数の前記基本動作に分解されると共に、前記基本動作が前記複数の部分期間の中から前記基本動作毎に選択された何れか1つの前記部分期間に割り当てられることによって前記自動製造機械の動作が記述された動作チャート(200)を読み込む動作チャート読込部(103)と、
前記動作チャートに記載された前記基本動作が、所定の記載要件を満足するか否かを判断する記載要件判断部(104)と、
前記動作チャート中の前記基本動作が前記記載要件を満足していた場合には、前記動作チャート上の複数の前記部分期間に割り当てられた複数の前記基本動作の前記プログラム要素を、前記動作チャート上での前記部分期間の順序に従って結合することにより、前記自動製造機械を動作させる前記制御プログラムを生成する制御プログラム生成部(105)と
を備え、
前記動作チャート読込部が読み込む前記動作チャートは、表形式の一軸側に前記複数の部分期間が割り当てられ、前記表形式の他軸側に前記複数のアクチュエータが割り当てられ、尚且つ、前記一軸側の座標値と前記他軸側の座標値とによって決まる座標位置に前記基本動作が記載された前記動作チャートであり、
前記基本動作記憶部は、前記アクチュエータと、前記アクチュエータが実行可能な前記基本動作との対応関係を、前記記載要件判断部から参照される前記記載要件として記憶しており、
前記記載要件判断部は、前記基本動作が記載された前記座標位置を取得して、前記座標位置の中の前記他軸側の座標値に割り当てられた前記アクチュエータが、前記基本動作に対して前記対応関係で対応付けられた前記アクチュエータでなかった場合には、前記記載要件を満足しないものと判断して、前記記載要件を満足しない前記基本動作が記載された前記座標位置を、問題座標位置として出力する
ことを特徴とする制御プログラム生成装置。
【請求項2】
請求項1に記載の制御プログラム生成装置であって、
前記動作チャート読込部は、前記基本動作の定性的な内容を記述した動作記述(206a)と、前記基本動作の定量的な内容を数値によって記述した数値記述との組み合わせによって、前記基本動作が記載された前記動作チャートを読み込んでおり、
前記基本動作記憶部は、
前記基本動作の前記動作記述に対応する前記プログラム要素と、前記数値記述に対応する数値テーブル(206b)とを記憶していると共に、
前記記載要件として、前記動作記述と、前記動作記述に組み合わせて用いられる前記数値記述とを対応付けた組合せ対応関係を記憶しており、
前記記載要件判断部は、前記座標位置に前記基本動作として記載された前記動作記述と前記数値記述との組み合わせが、前記組合せ対応関係を満足しなかった場合には、前記記載要件を満足しないものと判断して、前記問題座標位置を出力する
ことを特徴とする制御プログラム生成装置。
【請求項3】
請求項2に記載の制御プログラム生成装置であって、
前記基本動作記憶部は、前記記載要件として、前記数値記述に対応する前記数値テーブルに設定可能な数値範囲を前記数値記述毎に記憶しており、
前記記載要件判断部は、前記数値テーブルに設定された数値が、前記数値範囲内になかった場合には、前記記載要件を満足しないものと判断して、前記問題座標位置を出力する
ことを特徴とする制御プログラム生成装置。
【請求項4】
請求項1ないし請求項3の何れか一項に記載の制御プログラム生成装置であって、
前記記載要件判断部は、前記問題座標位置を出力する際に、満足しないと判断した前記記載要件を示すエラーコードも出力する
ことを特徴とする制御プログラム生成装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のアクチュエータを備えた自動製造機械の動作を制御プログラムに従って制御する技術に関する。
【背景技術】
【0002】
工場などの製造現場の生産性を向上させるためには、自動製造機械を利用した製造工程の自動化が不可欠と考えられる。製造工程には、加工あるいは製造しようとする対象物や、加工の内容(例えば、切削加工や、曲げ加工)などに応じて様々な工程が存在するので、自動化しようとする製造工程に応じて、様々なタイプの自動製造機械が開発されている(例えば、特許文献1、特許文献2)。
【0003】
また、同じような製造工程であっても、具体的な内容については製造現場毎に異なっている。このため、他の製造現場に導入されている自動製造機械を流用することは困難であり、製造現場毎に専用の自動製造機械を開発しなければならないことが一般的である。そして、専用の自動製造機械を開発すると、その自動製造機械を制御するための制御プログラムも、新たに開発する必要が生じる。
【0004】
ところが、制御プログラムを開発するためには多大な労力が必要となる。そこで本願の発明者らは、自動製造機械の動作を特殊な動作チャートに記述することで、動作チャートから制御プログラムを自動生成することが可能な技術を開発して既に出願済みである(特願2020-075017)。尚、この特殊な動作チャートは、本願の発明者が開発した動作チャートであって、従来には存在しないものであるため、以下では、この動作チャートのことを「YOGOチャート」と称することにする。この動作チャート(YOGOチャート)は、自動製造機械の動作を理解していれば容易に作成することが可能であり、しかも、この動作チャートから自動で制御プログラムを生成することができる。このため、自動製造機械の開発に要する期間を大幅に短縮することができ、加えて、プログラマを確保する必要もないので製造コストも抑制することが可能である。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2011-245602号公報
【文献】特開2018-192570号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、上述した出願中の技術であっても、動作チャート(YOGOチャート)に自動製造機械の動作を記述する際に間違えてしまうことがあり、間違えを含んだ動作チャート(YOGOチャート)から制御プログラムを生成しても、自動製造機械を意図した通りに動作させることができない。このため、動作チャート(YOGOチャート)の記述を間違えたままで、制御プログラムを生成してしまう事態を抑制することが可能な技術の開発が要請されている。
【0007】
この発明は、従来の技術が有する上述した課題を解決するために成されたものであり、動作チャート(YOGOチャート)の記述を間違えたことに気づかないまま、制御プログラムを生成してしまう事態を抑制することが可能な技術の提供を目的とする。
【課題を解決するための手段】
【0008】
上述した課題を解決するために、本発明の制御プログラム生成装置は次の構成を採用した。すなわち、
複数のアクチュエータ(10~20)を備えた自動製造機械(1)の制御プログラムを生成する制御プログラム生成装置(110)であって、
前記アクチュエータの自由度毎の動作を表す基本動作(206)を、前記基本動作を実現するプログラム要素と対応付けて記憶している基本動作記憶部(102)と、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、前記自動製造機械の動作が複数の前記基本動作に分解されると共に、前記基本動作が前記複数の部分期間の中から前記基本動作毎に選択された何れか1つの前記部分期間に割り当てられることによって前記自動製造機械の動作が記述された動作チャート(200)を読み込む動作チャート読込部(103)と、
前記動作チャートに記載された前記基本動作が、所定の記載要件を満足するか否かを判断する記載要件判断部(104)と、
前記動作チャート中の前記基本動作が前記記載要件を満足していた場合には、前記動作チャート上の複数の前記部分期間に割り当てられた複数の前記基本動作の前記プログラム要素を、前記動作チャート上での前記部分期間の順序に従って結合することにより、前記自動製造機械を動作させる前記制御プログラムを生成する制御プログラム生成部(105)と
を備え、
前記動作チャート読込部が読み込む前記動作チャートは、表形式の一軸側に前記複数の部分期間が割り当てられ、前記表形式の他軸側に前記複数のアクチュエータが割り当てられ、尚且つ、前記一軸側の座標値と前記他軸側の座標値とによって決まる座標位置に前記基本動作が記載された前記動作チャートであり、
前記基本動作記憶部は、前記アクチュエータと、前記アクチュエータが実行可能な前記基本動作との対応関係を、前記記載要件判断部から参照される前記記載要件として記憶しており、
前記記載要件判断部は、前記基本動作が記載された前記座標位置を取得して、前記座標位置の中の前記他軸側の座標値に割り当てられた前記アクチュエータが、前記基本動作に対して前記対応関係で対応付けられた前記アクチュエータでなかった場合には、前記記載要件を満足しないものと判断して、前記記載要件を満足しない前記基本動作が記載された前記座標位置を、問題座標位置として出力する
ことを特徴とする。
【0009】
かかる本発明の制御プログラム生成装置では、自動製造機械の動作が、表形式の動作チャートに記述されている。表形式の動作チャートの一軸側には、自動製造機械が動作を開始してから終了するまでの動作期間を分割した複数の部分期間が割り当てられており、表形式の動作チャートの他軸側には、自動製造機械に搭載された複数のアクチュエータが割り当てられている。また、自動製造機械の動作は、アクチュエータの自由度毎の動作を表す複数の基本動作に分解されており、それらの基本動作に対しては、複数の部分期間の中から、その基本動作を実行する部分期間が1つ割り当てられている。そして、表形式の動作チャートは、一軸側の座標値と他軸側の座標値とによって決まる座標位置に基本動作が記載されることによって自動製造機械の動作が記述された動作チャートとなっている。このような動作チャートを読み込むと、動作チャートに記載された基本動作が、所定の記載要件を満足するか否かを判断する。記載要件としては、アクチュエータと、アクチュエータが実行可能な基本動作との対応関係を記憶している。そして、読み込んだ動作チャートの中から基本動作と、その基本動作が記載された座標位置とを取得して、座標位置の他軸側の座標値に割り当てられたアクチュエータが、基本動作に対して対応関係で対応付けられたアクチュエータであるか否かを判断する。その結果、基本動作が記載された座標位置から決まるアクチュエータと、基本動作から決まるアクチュエータとが一致している場合は、動作チャート中の基本動作が記載要件を満足するものと判断して、動作チャートから制御プログラムを生成する。これに対して、基本動作が記載された座標位置から決まるアクチュエータと、基本動作から決まるアクチュエータとが一致していない場合は、動作チャート中の基本動作が記載要件を満足していないものと判断して、基本動作の座標位置を問題座標位置として出力する
【0010】
動作チャートは表形式で記載されており、基本動作が記載された座標位置の一軸側の座標値によって部分期間を指定し、座標位置の他軸側の座標値によってアクチュエータを指定するようになっている。更に、アクチュエータによって実行可能な基本動作は制限されている。その結果、座標位置の他軸側の座標値に応じて、動作チャートに記載可能な基本動作は制限されることになり、動作チャート上の任意の座標位置に任意の基本動作を記載できるわけではない。従って、動作チャートから制御プログラムを生成する際に、動作チャート上で基本動作が記載された座標位置を取得して、基本動作の座標位置から決まるアクチュエータと、基本動作から決まるアクチュエータとが一致している場合に、制御プログラムを生成することとすれば、記載ミスのある動作チャートから制御プログラムを生成する事態を抑制することが可能となる。また、動作チャートに記載ミスが見つかった場合には、記載ミスが見つかった座標位置が問題座標位置として出力されるので、記載ミスを容易に修正することも可能となる。
【0011】
また、上述した本発明の制御プログラム生成装置においては、動作チャートの基本動作が、基本動作の定性的な内容を記述した動作記述(206a)と、基本動作の定量的な内容を数値によって記述した数値記述との組み合わせによって記載された動作チャートを読み込むようにしても良い。更に、動作記述と、動作記述に組み合わせて用いられる数値記述とを対応付けた組合せ対応関係を、所定の記載要件として記憶しておく。そして、座標位置に基本動作として記載された動作記述と数値記述との組み合わせが、組合せ対応関係を満足しなかった場合には、記載要件を満足しないものと判断して、問題座標位置を出力するようにしても良い。
【0012】
こうすれば、動作チャート上で基本動作として記載された動作記述と数値記述との組み合わせが正しくなかった場合も、記載要件を満足しないと判断されるので、記載ミスのある動作チャートから制御プログラムを生成する事態を抑制することが可能となる。加えて、動作記述と数値記述との組み合わせが正しくない座標位置が問題座標位置として出力されるので、動作チャートの記載を容易に修正することが可能となる。
【0013】
また、上述した本発明の制御プログラム生成装置においては、数値記述に対応する数値テーブルに設定可能な数値範囲を、数値記述毎に、記載要件として記憶しておいても良い。そして、数値テーブルに設定された数値が数値範囲内になかった場合には、記載要件を満足しないものと判断して問題座標位置を出力するようにしても良い。
【0014】
こうすれば、数値テーブルに設定された数値が適切でなかった場合も、記載要件を満足しないと判断されるので、記載ミスのある動作チャートから制御プログラムを生成する事態を抑制することが可能となる。加えて、数値テーブルに不適切な数値が設定された座標位置が問題座標位置として出力されるので、動作チャートの記載を容易に修正することが可能となる。
【0015】
また、上述した本発明の制御プログラム生成装置においては、問題座標位置を出力する際に、満足しないと判断した記載要件を示すエラーコードも出力するようにしても良い。
【0016】
こうすれば、動作チャートの中で記載要件を満たしていない座標位置に加えて、記載要件を満たしていない内容も分かるので、動作チャートの記載を容易に修正することが可能となる。
【図面の簡単な説明】
【0017】
図1】本実施例の自動製造機械制御装置100によって制御される自動製造機械1の外観形状を示した説明図である。
図2】自動製造機械制御装置100が、自動製造機械1に搭載された各種のアクチュエータ10~20の動作を制御する様子を概念的に示したブロック図である。
図3】本実施例の自動製造機械制御装置100が自動製造機械1を動作チャート(YOGOチャート)から自動製造機械1の制御プログラムを自動で生成する基本原理についての説明図である。
図4】本実施例の自動製造機械制御装置100が読み込む自動製造機械1の動作チャート(YOGOチャート)の一部を例示した説明図である。
図5】基本動作の動作記述206aについての説明図である。
図6】「Ω-AA」という動作記述206aに組み合わされる数値テーブル206bを例示した説明図である。
図7】「Ω-AB」という動作記述206aに組み合わされる数値テーブル206bを例示した説明図である。
図8】「Ω-AA」という動作記述206aに組み合わされる数値テーブル206bの参照テーブルを例示した説明図である。
図9】「Ω-AB」という動作記述206aに組み合わされる数値テーブル206bの参照テーブルを例示した説明図である。
図10】本実施例の自動製造機械制御装置100の大まかな内部構造を示した説明図である。
図11】本実施例の基本動作記憶部102に記憶されているアクチュエータと動作記述206aとの対応関係を例示した説明図である。
図12】本実施例の基本動作記憶部102に記憶されている動作記述206aと数値テーブル206bとの対応関係を例示した説明図である。
図13】本実施例の基本動作記憶部102に記憶されている動作記述206aとプログラム要素番号との対応関係を例示した説明図である。
図14】本実施例の自動製造機械制御装置100が動作チャート(YOGOチャート)から制御プログラムを生成する制御プログラム生成処理のフローチャートである。
図15】YOGOチャート解析処理によって生成される中間データを例示した説明図である。
図16】中間データを変換することによって生成された制御プログラムを例示した説明図である。
図17】制御プログラム生成処理の中で実行されるYOGOチャート解析処理の前半部分のフローチャートである。
図18】制御プログラム生成処理の中で実行されるYOGOチャート解析処理の中間部分のフローチャートである。
図19】制御プログラム生成処理の中で実行されるYOGOチャート解析処理の後半部分のフローチャートである。
図20】YOGOチャートの記載に問題が見つかった場合に出力されるメッセージを例示した説明図である。
図21】本実施例の自動製造機械制御装置100が制御プログラムデータに基づいて各アクチュエータの動作を制御する動作制御処理のフローチャートである。
【発明を実施するための形態】
【0018】
A.装置構成 :
図1は、本実施例の自動製造機械1の大まかな外観形状を示した説明図である。本実施例の自動製造機械1は、長尺のパイプ材に対して自動で曲げ加工を施すことによって、所望の形状に加工する工作機械(いわゆるパイプベンダ)である。もちろん、本実施例の自動製造機械1は、複数のアクチュエータを搭載して、対象物に対して把持、搬送、加工、加熱などの複数の動作を自動で実行することができれば、パイプベンダ以外の製造機械であっても良い。例えば、食料品を自動で製造するための製造機械であっても良い。あるいは、複数の関節を有するアームロボットと搬送装置とを組み合わせた製造システムであっても良い。
【0019】
図1に示したように、本実施例の自動製造機械1は、大まかには横長の直方体形状となっており、直方体の上面側には長手方向に2本のレール2が架設され、レール2上の一端側(図1では左側)には、加工対象の図示しないパイプ材を把持して搬送する搬送ユニット3が搭載されている。また、搬送ユニット3が搭載されている側に対して反対側には、図示しないパイプ材に曲げなどの加工を施す加工ユニット4が搭載されている。搬送ユニット3には、円柱形状の把持軸3aが突設されており、把持軸3aの先端には、図示しないパイプ材を把持するチャック3bが取り付けられている。このため、チャック3bでパイプ材を把持した状態で搬送ユニット3をレール2上で移動させることによって、パイプ材を加工ユニット4に供給し、そのパイプ材に対して加工ユニット4で曲げ加工などを施すことが可能となっている。
【0020】
本実施例の自動製造機械1は、搬送ユニット3の移動量によってパイプ材の送り量を制御することができるので、パイプ材に曲げ加工などを施す位置を自由に制御することができる。また、チャック3bが取り付けられた把持軸3aを軸回りに回転(いわゆる捻り動作)させることによって、所望の方向にパイプ材を曲げることも可能となっている。こうしたことを実現するために、搬送ユニット3の内部には、チャック3bを開閉させるためのアクチュエータ10や、把持軸3aを軸回りに回転させるためのアクチュエータ11や、把持軸3aを軸方向に進退動させるためのアクチュエータ12や、レール2上で搬送ユニット3を進退動させるためのアクチュエータ13などが搭載されている。本実施例の自動製造機械1では、これらのアクチュエータ10~13は何れも交流電源で動作するサーボモータが用いられているが、アクチュエータに要求される性能に応じて、他の駆動方式のアクチュエータ(例えば、油圧シリンダや、ソレノイドや、ステッピングモータなど)を採用することができる。尚、搬送ユニット3には、把持軸3aの回転位置や、搬送ユニット3の移動位置を検出するためのエンコーダや、リミットスイッチなどのセンサー類も搭載されているが、図面が煩雑となることを回避する目的で、図1では図示が省略されている。
【0021】
加工ユニット4の内部には、パイプ材を曲げるためのアクチュエータ19や、パイプ材を曲げる際に、パイプ材に力を加える位置を移動させるためのアクチュエータ18や、加工ユニット4全体を上下方向に移動させるためのアクチュエータ17や、パイプ材に対してフランジと呼ばれる平端面を形成したり、バルジと呼ばれる環状の凸部を形成したりするためのアクチュエータ20などが搭載されている。尚、加工ユニット4にも、エンコーダや、接点スイッチなどのセンサー類が搭載されているが、図面が煩雑となることを避けるため、これらについては図示が省略されている。
【0022】
また、加工ユニット4の内部には、上述した各種のアクチュエータ10~13、17~20を駆動するための複数のドライバ回路(図示は省略)が搭載されている。ここで、ドライバ回路とは、次のような機能を有する電気部品である。アクチュエータ10~13、17~20に所望の動作をさせるためには、アクチュエータ10~13、17~20に適切な波形の駆動電流を供給する必要がある。しかし、アクチュエータ10~13、17~20に供給するべき駆動電流は、アクチュエータ10~13、17~20の駆動方式によって異なっており、更に同じ方式のアクチュエータであっても、駆動電流の電流値はアクチュエータによって異なっている。そこで、アクチュエータ10~13、17~20にはドライバ回路と呼ばれる専用の電気部品が用意されており、ドライバ回路に対して駆動量を指定すると、ドライバ回路がアクチュエータ10~13、17~20に対して適切な駆動電流を出力し、その結果、アクチュエータ10~13、17~20が駆動されるようになっている。
【0023】
更に、図1に示されるように、2本のレール2の下方の空間にも各種の機械部品が搭載されているが、この空間は、加工ユニット4内に搭載された複数のドライバ回路(図示は省略)から、搬送ユニット3内の各種のアクチュエータ10~13に向かって駆動電流を供給する電気ケーブル(図示は省略)や、搬送ユニット3に搭載された各種のセンサー類からの信号を、加工ユニット4に伝達するための信号ケーブル(図示は省略)などが配線される空間となっている。レール2上で搬送ユニット3が進退動する動きに伴って、これらの電気ケーブルや信号ケーブルが空間内で移動すると、互いに絡まったり、何かに引っ掛かったりする虞が生じる。そこで、こうした事態が発生することを避けるため、レール2の下方の空間には、電気ケーブルや信号ケーブルに不要な遊びがある場合はケーブルを手繰ることによって不要な遊びを解消し、電気ケーブルや信号ケーブルが引っ張られる場合は、手繰ったケーブルを送り出すことによって、ケーブルに適度な遊びを持たせるためのアクチュエータ14~16も搭載されている。本実施例の自動製造機械1では、アクチュエータ14~16としてエアシリンダが採用されており、これらのエアシリンダの動作も、図示しないドライバ回路によって制御されている。
【0024】
以上に説明したように、自動製造機械1には多数のアクチュエータ10~20が搭載されている。そして、加工しようとする対象物(ここではパイプ材)を目的とする形状に自動で加工するためには、これらのアクチュエータ10~20を適切なタイミングで、適切に動作させる必要がある。これらのアクチュエータ10~20を駆動するのは、それぞれのアクチュエータ10~20のドライバ回路であるが、ドライバ回路がそれぞれのアクチュエータ10~20を駆動する動作は、後述する自動製造機械制御装置100が、予め読み込んでおいた制御プログラムに従って制御している。
【0025】
図2は、本実施例の自動製造機械制御装置100が、自動製造機械1に搭載されたアクチュエータ10~20の動作を制御する様子を概念的に示したブロック図である。尚、図2においても、制御に必要なセンサー類については図示が省略されている。図示されるように、自動製造機械制御装置100とアクチュエータ10との間には、アクチュエータ10の駆動用のドライバ回路10dが設けられており、自動製造機械制御装置100は、直接的にはドライバ回路10dを制御している。アクチュエータ11~20についても同様に、自動製造機械制御装置100とアクチュエータ11~20との間には、アクチュエータ11~20を駆動するためのドライバ回路11d~20dが設けられている。このように、自動製造機械制御装置100は、ドライバ回路10d~20dを介して、間接的にアクチュエータ10~20を制御する。
【0026】
また、図1を用いて前述したように、本実施例の自動製造機械1では、アクチュエータ10~13、17~20にサーボモータが採用されており、アクチュエータ14~16にはエアシリンダが採用されている。ここで、サーボモータとは、サーボ制御されたモータのことであり、位置(あるいは角度や、速度など)が目標値となるように、モータに流れる電流値をフィードバック制御することによって駆動されるモータである。また、エアシリンダとは、空気圧を利用して可動部を直線移動させるアクチュエータであり、圧縮空気の供給源に接続されたポートを開閉することによって動作するようになっている。また、ポートの開閉にはシーケンス制御が用いられている。
【0027】
このように本実施例の自動製造機械制御装置100には、サーボ制御されるアクチュエータ10~13、17~20と、シーケンス制御されるアクチュエータ14~16とが接続されている。図中で、自動製造機械制御装置100とアクチュエータ10~13、17~20とが実線で結ばれているのは、これらのアクチュエータ10~13、17~20がサーボ制御されていることを表している。また、自動製造機械制御装置100とアクチュエータ14~16とが破線で結ばれているのは、これらのアクチュエータ14~16がシーケンス制御されることを表している。もちろん、サーボ制御やシーケンス制御以外の方式で制御されるアクチュエータを接続することも可能である。
【0028】
自動製造機械制御装置100は制御プログラムに従って、ドライバ回路10d~20dを介してアクチュエータ10~20を制御しており、その制御プログラムは、予め作成して自動製造機械制御装置100に読み込ませておく必要がある。ここで、図2に示したように多数のアクチュエータ10~20を、適切なタイミングで適切に動作させるための制御プログラムを作成するのは容易なことではない。特に、サーボ制御やシーケンス制御のように、異なる制御方式のアクチュエータが混在している場合は、制御プログラムの作成に長い期間が必要となる。このため、新たな自動製造機械1の開発期間の中で、半分以上の期間は制御プログラムの作成に費やされてしまうのが現状となっている。
【0029】
そこで、本願の出願人らは、自動製造機械1の動作を特殊な動作チャート(YOGOチャート)に記述することで、自動製造機械1の制御プログラムを自動で生成する技術を開発した。YOGOチャートは、自動製造機械1の動作を理解していれば簡単に作成することが可能であり、YOGOチャートを作成しておけば自動で制御プログラムを生成することができるので、新たな自動製造機械1の開発期間を半分以下に短縮することが可能となる。
【0030】
B.YOGOチャート :
B-1.YOGOチャートから制御プログラムを自動で生成する原理 :
YOGOチャートについて説明する準備として、YOGOチャートから自動製造機械1の制御プログラムを自動で生成する原理について説明しておく。図3(a)には、各種の改良を施す前の原始的なYOGOチャートが示されている。後述する本実施例のYOGOチャートは、図3(a)に示した原始的なYOGOチャートを発展させて改良したものとなっているが、制御プログラムを自動で生成する原理は原始的なYOGOチャートと同じである。そこで、理解を容易とするために、図3(a)に示した原始的なYOGOチャートを用いて、制御プログラムを自動で生成する原理について説明する。
【0031】
YOGOチャートでは、自動製造機械1に搭載されたアクチュエータの基本的な動作を組み合わせることによって、自動製造機械1の動作を表現する。ここで、アクチュエータの基本的な動作とは、アクチュエータが有する自由度方向への動作(以下、基本動作)のことである。例えば、モータのような回転するアクチュエータであれば、回転動作が基本動作となり、シリンダのような進退動するアクチュエータであれば、進退動する動作が基本動作となる。また、モータによってボールねじを回転させることによって、ボールねじに噛み合う部材を進退動させるようなアクチュエータの場合は、モータの回転動作、あるいは部材が進退動する動作の何れかが基本動作となる。
【0032】
また、YOGOチャートでは、自動製造機械1が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、個々のアクチュエータの基本動作は、これらの部分期間の何れかに割り当てられている。図3(a)に示した例では、自動製造機械1が動作を開始した最初の部分期間1には、act1という基本動作が割り当てられている。図3(a)に示した原始的なYOGOチャートでいう基本動作とは、動作するアクチュエータと動作の内容とを表している。従って、部分期間1にactという基本動作を割り当てるということは、自動製造機械1が動作を開始すると、まず初めに動作するアクチュエータと、動作の内容とを指定していることになる。
【0033】
部分期間1の次の部分期間2には、act2,act3,act4の3つの基本動作が割り当てられている。上述したように原始的なYOGOチャートでいう基本動作とは、動作するアクチュエータと動作の内容とを表しているから、部分期間2に3つの基本動作が割り当てられているということは、自動製造機械1の動作開始後、最初に動作するアクチュエータの動作が終了したら、指定された3つのアクチュエータが、それぞれに指定された動作を開始することを表している。その次の部分期間3には、act5,act6の2つの基本動作が割り当てられている。このことは、部分期間2に割り当てられた3つのアクチュエータの動作が終了したら、部分期間3に割り当てられた2つのアクチュエータが指定された動作を開始することを表している。次の部分期間4には、act7の基本動作が割り当てられており、その次の部分期間5には、act8,act9の2つの基本動作が割り当てられている。このように、部分期間に基本動作を割り当てることによって、自動製造機械1が実行する一連の動作を記述することができる。尚、以上の説明から明らかなように、部分期間は、割り当てられたアクチュエータが動作する期間を示しており、時間の長さを示しているわけではない。それぞれの部分期間の時間の長さは、互いに異なっていることが通常である。
【0034】
また、部分期間に割り当てられるアクチュエータの基本動作は、例えばモータを一定量だけ回転させたり、あるいはシリンダを一定量だけ進退動させたりするといった単純な動作である。従って、アクチュエータに基本動作させるための小さなプログラム(プログラム要素)を予め作成しておくことができる。例えば、部分期間1に割り当てられたact1という基本動作については、動作するアクチュエータおよび動作の内容が指定されているから、基本動作を実現するためのプログラム要素prog1を作成しておくことができる。同様に、act2~act9という基本動作についても、プログラム要素prog2~prog9を作成しておくことができる。
【0035】
そこで、これらのプログラム要素を、図3(a)に示した原始的なYOGOチャートに記述された通りに連結してやれば、自動製造機械1を動作させるための制御プログラムを自動で生成することが可能となる。すなわち、図3(b)に示したように、初めにプログラム要素prog1を起動させ、プログラム要素prog1が終了したらプログラム要素prog2~prog4を起動させ、プログラム要素prog2~prog4が全て終了したら、プログラム要素prog5およびプログラム要素prog6を起動させる。プログラム要素prog5およびprog6が終了したら、プログラム要素prog7を起動させ、プログラム要素prog7が終了したら、プログラム要素prog8およびプログラム要素prog9を起動させる。このように、あらかじめ作成しておいたプログラム要素を、YOGOチャートに記載された通りに結合していけば、自動製造機械1の動作を制御する制御プログラムを作成することができる。
【0036】
以上、YOGOチャートから自動製造機械1の制御プログラムを自動で生成する原理について説明した。自動製造機械1の動作をYOGOチャートに記述しておけば、自動製造機械1の制御プログラムを自動で生成することができる。もっとも、自動製造機械1が正しく動作する制御プログラムを生成するためには、YOGOチャートが正しく作成されている必要がある。以下に説明する本実施例のYOGOチャートは、こうした観点から、図3(a)に例示した原始的なYOGOチャートに対して様々な改良を加えた結果として得られたものである。
【0037】
B-2.YOGOチャートの概要 :
図4は、本実施例のYOGOチャート200の概要を説明するための説明図である。尚、YOGOチャート200の全体を表示するために縮尺すると、潰れて判読不能となってしまうので、図4ではYOGOチャート200の一部分(左上隅の部分)が表示されている。図4に示されるように、YOGOチャート200は、複数本の横線と複数本の縦線とが交差した大きな表のような形状となっている。以下では、交差する複数本の線の内、横線については「仕切線」201と称し、縦線については「トリガー線」202と称することにする。
【0038】
トリガー線202には、1番から始まる通し番号が付けられている。図4に示した例では、YOGOチャート200の上端の欄内に、その下のトリガー線202の通し番号が記載されている。また、互いに隣接するトリガー線202の間の領域は、図3を用いて前述した部分期間となっており、部分期間にも1番から始まる通し番号(以下、部分期間番号と称する)が付けられている。尚、図4に例示したYOGOチャート200では、トリガー線202が縦方向に引かれており、従って、トリガー線202とトリガー線202とに挟まれた部分期間は横方向に並んでいる。しかし、トリガー線202は横方向に引いても良く、この場合は、複数の部分期間が縦方向に並ぶことになる。
【0039】
また、本実施例のYOGOチャート200は、複数の仕切線201によって複数の横長の領域に分割されており、これらの横長の領域には1番から始まる通し番号(以下、アクチュエータ番号と称する)が付けられている。自動製造機械1に搭載されたアクチュエータは、何れかの領域に割り当てられている。図4に示した例では、アクチュエータ番号が1番の領域には、アクチュエータ10(図1参照)が割り当てられており、アクチュエータ番号が2番の領域にはアクチュエータ11(図1参照)が割り当てられ、アクチュエータ番号が3番の領域にはアクチュエータ12(図1参照)が、アクチュエータ番号が4番の領域にはアクチュエータ13(図1参照)が割り当てられている。本実施例の自動製造機械1にはアクチュエータ10~20の11個のアクチュエータが搭載されているから、これらすべてのアクチュエータについて、このように横長の領域が1つずつ割り当てられることになる。
【0040】
そして、アクチュエータ10~20の基本動作は、そのアクチュエータ10~20が割り当てられた領域上に記載されるようになっている。例えば、アクチュエータ10を部分期間4で基本動作させるのであれば、YOGOチャート200上で、アクチュエータ番号が1番、部分期間番号が4番で特定されるマス目状の座標位置に、アクチュエータ10にさせたい基本動作を記載する。また、部分期間4と部分期間8とでアクチュエータ10に基本動作させるのであれば、アクチュエータ番号が1番で部分期間番号が4番のマス目状の座標位置と、アクチュエータ番号が1番で部分期間番号が8番の座標位置とに、アクチュエータ10にさせたい基本動作を記載することになる。このように、アクチュエータ10の基本動作は、YOGOチャート200上でアクチュエータ番号が1番の横長の領域上に記載され、アクチュエータ11の基本動作は、アクチュエータ番号が2番の横長の領域上に記載されるというように、アクチュエータ10~20の基本動作は、YOGOチャート200上でそのアクチュエータ10~20が割り当てられた領域上に記載されるようになっている。
【0041】
また、本実施例のYOGOチャート200では、次のようにして基本動作を記述する。一例として、図4のYOGOチャート200で最初に動作するアクチュエータ13の基本動作について説明する。動作するアクチュエータはアクチュエータ13であり、且つ、最初に動作するのであるから、YOGOチャート200上で基本動作が記載される位置は、アクチュエータ番号が4番で、部分期間番号が1番のマス目状の座標位置となる。部分期間番号が1番のマス目は、1番のトリガー線202と、2番のトリガー線202とに挟まれているから、左側に存在する1番のトリガー線202から、右側に存在する2番のトリガー線202に向かって、アクチュエータの動作を示す動作線203を記載する。そして、動作線203の左端(従って1番のトリガー線202上)には動作の開始を示す始点204を記載し、動作線203の右端(従って2番のトリガー線202上)には動作の終了を示す終点205を記載する。図4に示した例では、動作線203は太い実線で示されており、始点204は白抜きの丸印で示されて、終点205は黒い丸印で示されている。
【0042】
更に、動作線203の上には、アクチュエータにさせようとする基本動作を記載する。ここで、本実施例のYOGOチャート200では、基本動作を「動作記述」と「数値テーブル」の2つの要素を用いて記載する。図4に示した例では、アクチュエータ番号が4番で、部分期間番号が1番の動作線203の上には、「Ω-AC」と「AC-B11」という2つの表示が記載されているが、「Ω-AC」という表示が動作記述206aであり、「AC-B11」という表示が数値テーブル206bである。そして、動作記述206aと数値テーブル206bとによって一つの基本動作206を表している。ここで、動作記述206aとは、大まかにいうと、基本動作206の定性的な内容(例えば、前進、後退、回転など)を記述した表示である。また、数値テーブル206bとは、大まかにいうと、基本動作206の定量的な内容(例えば、移動量や、速度や、トルクなど)を示す数値が設定されたテーブルである。動作記述206aおよび数値テーブル206bの詳細については後述する。
【0043】
従って、図4のYOGOチャート200上で、アクチュエータ番号が4番、部分期間番号が1番の座標位置に記載された「Ω-AC」、「AC-B01」という表示は、以下のような内容、すなわち、アクチュエータ番号が4番のアクチュエータ(図4の例ではアクチュエータ13)を、部分期間番号が1番のタイミングで、「Ω-AC」という動作記述206aに従って基本動作させ、且つ、基本動作させる際に使用する具体的な数値は、「AC-B01」という数値テーブル206bに設定された数値を用いることを表している。
【0044】
また、図4のYOGOチャート200に示されるように、アクチュエータ10に対しては「Ω-AA」という動作記述206aが記載されているが、アクチュエータ11に対しては「Ω-AB」という動作記述206aが記載されている。この理由は、図1を用いて前述したように、アクチュエータ10はチャック3bを開閉させるためのアクチュエータであり、アクチュエータ11は把持軸3aを軸回りに回転させるためのアクチュエータであるためである。アクチュエータ10の基本動作206の動作記述206aは「開閉動作」となり、アクチュエータ11の基本動作206の動作記述206aは「回転動作」となるため、アクチュエータ10とアクチュエータ11とでは、異なる動作記述206aが使用される。同様な理由から、アクチュエータ11とアクチュエータ12とも、異なる動作記述206aが使用される。
【0045】
これに対して、アクチュエータ12およびアクチュエータ13は「Ω-AC」という同じ動作記述206aが使用される。図1を用いて前述したように、アクチュエータ12は把持軸3aを軸方向に進退動させるためのアクチュエータであり、アクチュエータ13は搬送ユニット3の全体を進退動させるためのアクチュエータであって、移動させる対象物の大きさや重量や移動量などは大きく異なるが、対象物を進退動させる点では同じである。このため、アクチュエータ12およびアクチュエータ13は、同じ動作記述206aを使用することができる。また、アクチュエータ17は加工ユニット4の全体を上下動させるためのアクチュエータであるが、上下動は進退動の一種と考えることができるから、アクチュエータ17も、アクチュエータ12やアクチュエータ13と同じく「Ω-AC」という動作記述206aを使用することができる。更に、アクチュエータ14~16は、何れもエアシリンダを進退動させるアクチュエータであるから、これらは何れも「Ω-CA」という動作記述206aが使用されている。
【0046】
このように、本実施例のYOGOチャート200では、アクチュエータの基本動作206を、原則として、動作記述206aと数値テーブル206bとを用いて記述する。こうすれば、多くのアクチュエータについて、動作記述206aを共通化することが可能となる。図1に示したように、本実施例の自動製造機械1にはアクチュエータ10~20の11個のアクチュエータが搭載されているが、YOGOチャート200で用いられる動作記述206aは4種類となっている。
【0047】
B-3.動作記述 :
図5は、本実施例のYOGOチャート200で用いられる動作記述206aの詳細についての説明図である。「Ω-AA」という動作記述206aは、アクチュエータに開閉動作させることを表す動作記述206aであり、この動作記述206aはACサーボモータにチャック機構を組み合わせたアクチュエータを想定している。逆に言えば、ACサーボモータにチャック機構を組み合わせたアクチュエータでない場合は、たとえ、そのアクチュエータの動作が開閉動作である場合でも、「Ω-AA」という動作記述206aを使用することはできない。
【0048】
また、「Ω-AA」という動作記述206aは、ACサーボモータにチャック機構を組み合わせたアクチュエータに開閉動作させるという単純な動作内容を記述したものであるから、その動作内容を実現するための小さなプログラム(すなわち、プログラム要素)を予め作成しておくことができる。このことから、動作記述206aには、その動作内容を実現させるプログラム要素を特定するための通し番号(以下、プログラム要素番号)が対応付けて記憶されている。尚、同じように開閉動作するアクチュエータであっても、ACサーボモータにチャック機構を組み合わせたアクチュエータでない場合は、「Ω-AA」という動作記述206aを使用することができない理由は、動作記述206aにプログラム要素番号が対応付けて記憶されるからである。すなわち、アクチュエータの構造が異なれば、アクチュエータを動作させるためのプログラム要素は異なると考えられるので、対応付けられるプログラム要素が異なる以上、動作記述206aも異ならせておく必要があるためである。
【0049】
また、図5に示すように、「Ω-AB」という動作記述206aは、ACサーボモータに減速機構を組み合わせたアクチュエータを想定して、そのアクチュエータに回転動作させることを表す動作記述206aであり、プログラム要素番号は7番が対応付けて記憶されている。同様に、「Ω-AC」という動作記述206aは、ACサーボモータにボールねじ機構を組み合わせたアクチュエータを想定して、そのアクチュエータに進退動作させることを表す動作記述206aであり、プログラム要素番号は4番が対応付けて記憶されている。更に、「Ω-CA」という動作記述206aは、エアシリンダによるアクチュエータを想定して、そのアクチュエータに進退動作させることを表す動作記述206aであり、プログラム要素番号は2番が対応付けて記憶されている。
【0050】
B-4.数値テーブル :
また、動作記述206aは、開閉動作や、回転動作、進退動作などのように、動作の内容を定性的に記述したものに過ぎず、動作量についての情報は含まれていない。このため動作記述206aは、原則として数値テーブル206bと組み合わせて使用される。例えば、図4に示したYOGOチャート200では、アクチュエータ番号が1番のアクチュエータ10に対して用いられる動作記述206aは「Ω-AA」であるが、部分期間番号が4番のタイミングでは「AA-B01」という数値テーブル206bが使用され、部分期間番号が6番のタイミングでは「AA-B02」という数値テーブル206bが、部分期間番号が10番のタイミングでは「AA-B01」という数値テーブル206bが使用されている。ここで、「AA-B01」という名称は、「Ω-AA」という動作記述206aと組み合わせて使用される「B01」という数値テーブル206bであることを表している。同様に、「AA-B02」という名称は、「Ω-AA」という動作記述206aと組み合わせて使用される「B02」という数値テーブル206bであることを表している。
【0051】
図6は「Ω-AA」という動作記述206aと組み合わせて使用される数値テーブル206bを例示した説明図である。図6(a)には「AA-B01」という数値テーブル206bが示されており、図6(b)には「AA-B02」という数値テーブル206bが示されている。尚、図6では2つの数値テーブル206bが例示されているが、必要に応じてより多くの数値テーブル206bを設定することができる。図6に例示した数値テーブル206bには、「数値テーブル番号」、「開閉速度」、「開閉荷重」、「参照テーブル」の4つの項目が設定されている。このうちの「数値テーブル番号」は数値テーブル206bの通し番号である。例えば、数値テーブル番号を5番と指定すると、図6(a)の「AA-B01」という数値テーブル206bが特定され、数値テーブル番号を6番と指定すると、図6(b)の「AA-B02」という数値テーブル206bが特定されるようになっている。「参照テーブル」については後ほど説明する。
【0052】
また、図6に例示した数値テーブル206bには4つの項目が設定されているが、動作記述206aと組み合わせて、基本動作を記述するために用いられるのは、「開閉速度」と「開閉荷重」という2つの項目である。ここで、「開閉速度」と「開閉荷重」という2つの項目が設定されている理由は、この数値テーブル206bが、開閉動作を表す「Ω-AA」という動作記述206aと組み合わせて使用されるためである。すなわち、「Ω-AA」という動作記述206aだけでは、開閉動作させるという定性的な内容しか分からず、開閉動作させる速度や開閉時の荷重といった定量的な内容については分からない。そこで、数値テーブル206bに「開閉速度」および「開閉荷重」という項目を設けて、これらの数値を設定しておくようになっている。尚、数値テーブル206bの「開閉速度」にはプラスの数値が設定されているのは、閉動作させることを表しており(図6(a)参照)、マイナスの数値が設定されているのは開動作させることを表している(図6(b)参照)。
【0053】
また、図4のYOGOチャート200では、アクチュエータ番号が2番のアクチュエータ11に対しては「Ω-AB」という動作記述206aが使用されるが、部分期間番号が2番のタイミングでは「AB-B01」という数値テーブル206bが組み合わせて用いられ、部分期間番号が8番のタイミングでは「AB-B02」という数値テーブル206bが組み合わせて用いられている。「AB-B01」および「AB-B02」という名称は、それぞれ「Ω-AB」という動作記述206aと組み合わせて使用される「B01」および「B02」という数値テーブル206bであることを表している。
【0054】
図7は「Ω-AB」という動作記述206aと組み合わせて使用される数値テーブル206bを例示した説明図である。図7(a)には「AB-B01」という数値テーブル206bが示されており、図7(b)には「AB-B02」という数値テーブル206bが示されている。尚、図7では2つの数値テーブル206bが例示されているが、必要に応じてより多くの数値テーブル206bを設定することができる。図7に例示した数値テーブル206bには、「数値テーブル番号」および「参照テーブル」に加えて、「回転角度」、「回転速度」、「回転トルク」の全部で5つの項目が設定されている。これらの内で「回転角度」、「回転速度」、「回転トルク」の項目が、動作記述206aと組み合わせて、基本動作を記述するために用いられる項目である。また、図7の数値テーブル206bに「回転角度」、「回転速度」、「回転トルク」の項目が設定されている理由は、この数値テーブル206bが、回転動作を表す「Ω-AB」という動作記述206aと組み合わせて使用されるためである。すなわち、「Ω-AB」という動作記述206aだけでは回転動作させることしか分からないので、回転させる角度や、回転させる速度、回転させるトルクについては、「回転角度」、「回転速度」、「回転トルク」という項目で数値テーブル206bに数値を設定しておくようになっている。尚、数値テーブル206bの「回転角度」にプラスの数値が設定される場合と、マイナスの数値が設定される場合とが存在するのは、回転方向が逆であることを表している。
【0055】
更に、図4のYOGOチャート200では、アクチュエータ番号が3番のアクチュエータ12、4番のアクチュエータ13、および8番のアクチュエータ17に対しては、何れも「Ω-AC」という動作記述206aが使用されている。その一方で、数値テーブル206bについては、アクチュエータ番号が3番のアクチュエータ12と4番のアクチュエータ13と8番のアクチュエータ17とで、異なる数値テーブル206bが使用されている。すなわち、アクチュエータ番号が3番のアクチュエータ12に対しては、「AC-B01」あるいは「AC-B02」という数値テーブル206bが組み合わせて用いられ、アクチュエータ番号が4番のアクチュエータ13に対しては、「AC-B11」あるいは「AC-B12」という数値テーブル206bが、アクチュエータ番号が8番のアクチュエータ17に対しては、「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であることを表している。
【0056】
更に、図4のYOGOチャート200で、アクチュエータ番号が5番のアクチュエータ14、6番のアクチュエータ15、および7番のアクチュエータ16に対しては、何れも「Ω-CA」という動作記述206aが使用されている。これは、アクチュエータ14~16が何れもエアシリンダであり、基本動作の内容が「進退動作」であることに対応している。また、「Ω-CA」という動作記述206aに対しては、数値テーブル206bが組み合わされていない。この理由は、アクチュエータ14~16が、2つの動作ポートの内で空気圧を加える動作ポートを切り換えることで動作するエアシリンダであるため、動作の内容を記述するために定量的な数値を用いる必要が無いためである。
【0057】
以上に詳しく説明したように、本実施例のYOGOチャート200では、部分期間番号とアクチュエータ番号との組み合わせで規定される座標位置に、基本動作を記載することによって、基本動作させるアクチュエータと基本動作させるタイミングとを特定する。更に、基本動作は、原則として、動作記述206aと数値テーブル206bとの組み合わせによって表現することとしている。
【0058】
B-5.参照テーブル :
図6および図7に例示したように、本実施例の数値テーブル206bには「参照テーブル」という項目も設定されている。この参照テーブルは、数値テーブル206bに誤った数値を設定することを防止するためのものである。
【0059】
図8は、図6に示した数値テーブル206bに設定されている参照テーブルを例示した説明図である。図8(a)には、図6(a)の数値テーブル206b(AA-B01)に設定された参照テーブル(AA-A01)が示されている。また、図8(b)には、図6(b)の数値テーブル206b(AA-B02)に設定された参照テーブル(AA-A02)が示されている。図8に示したこれらの参照テーブルには、「最大速度」、「最大荷重」、「チャック機構減速比」、「チェック機構対応直径範囲」という4つの項目が設定されている。
【0060】
これらの項目は、図8の参照テーブル(AA-A01、AA-A02)が、図6に示した数値テーブル206b(AA-B01、AA-B02)から参照されることに対応している。すなわち、数値テーブル206b(AA-B01、AA-B02)は「開閉速度」および「開閉荷重」の数値が設定されるテーブルであるが(図6参照)、設定可能な開閉速度の最大値および開閉荷重の最大値が、それぞれ「最大速度」および「最大荷重」として参照テーブルに設定されている。
【0061】
そして、図6(a)の数値テーブル206b(AA-B01)を作成する際には、「参照テーブル」という項目に「AA-A01」と設定しておく。同様に、図6(b)の数値テーブル206b(AA-B02)を作成する際には、「参照テーブル」という項目に「AA-A02」と設定しておく。こうすれば、数値テーブル206b(AA-B01、AA-B02)の「開閉速度」あるいは「開閉荷重」という項目の数値を設定する際に、図8(a)あるいは図8(b)の参照テーブルの「最大速度」あるいは「最大荷重」の項目が参照されて、最大速度や最大荷重を超える不適切な数値が設定されないようにすることができる。
【0062】
また、図8(a)および図8(b)の参照テーブルには、「チャック機構減速比」や「チャック機構対応直径範囲」という項目も設定されている。これらは、アクチュエータの機械的な特性を記述したものである。すなわち、参照テーブルは数値テーブル206bから参照されており、数値テーブル206bは具体的なアクチュエータを想定して設定されるものである。従って、参照テーブルも具体的なアクチュエータを想定して設定されていることになる。例えば、図8(a)や図8(b)の参照テーブルは図6(a)や図6(b)の数値テーブル206bから参照されており、これらの数値テーブル206bはアクチュエータ10に対して用いられるから、図8(a)や図8(b)の参照テーブルもアクチュエータ10に対して用いられることになる。
【0063】
このように、参照テーブルはそれぞれに固有のアクチュエータに適用される。そこで、そのアクチュエータの機械的な特性を参照テーブルに設定しておく。図8に例示した参照テーブルは、ACサーボモータにチャック機構を組み合わせてチャック3bを開閉させるアクチュエータ10に適用される。このことに対応して、チャック機構の減速比や、チャック機構で把持可能な部材の直径範囲などの機械的な特性が、参照テーブルに設定されている。こうして参照テーブルに特性値を設定しておけば、ACサーボモータを制御する際にこれらの機械的な特性が必要となった場合でも、参照テーブルを参照して特性値を読み出すことができるので、誤った特性値がモータの制御に用いられて、アクチュエータが誤って制御されてしまう事態を回避することが可能となる。
【0064】
図9は、図7に示した2つの数値テーブル206bに設定されている参照テーブルを例示した説明図である。図9(a)は、図7(a)の数値テーブル206b(AB-B01)に設定された参照テーブル(AB-A01)を示しており、図9(b)は、図7(b)の数値テーブル206b(AB-B02)に設定された参照テーブル(AB-A02)を示している。これらの参照テーブルには、「角度範囲」、「最大回転速度」、「最大回転トルク」、「減速比」という4つの項目が設定されている。
【0065】
この内で「角度範囲」、「最大回転速度」、「最大回転トルク」という項目は、これらの参照テーブル(AB-A01、AB-A02)が、図7に示した数値テーブル206b(AB-B01、AB-B02)から参照されることに対応する。すなわち、数値テーブル206b(AB-B01、AB-B02)は「回転角度」、「回転速度」、および「回転トルク」の数値が設定されるテーブルであり(図7参照)、これに対応して、実際に取り得る最大の角度範囲や、最大回転速度、最大回転トルクが、それぞれ参照テーブルに設定されている。
【0066】
図7(a)や図7(b)の数値テーブル206b(AB-B01、AB-B02)を作成する際には、「参照テーブル」という項目に「AB-A01」あるいは「AB-A02」と設定しておく。こうすれば、数値テーブル206b(AB-B01、AB-B02)の「回転角度」の数値を設定する際に、参照テーブルの「角度範囲」という項目が参照されて、回転後の角度が±180度を超える数値が設定できないようにすることができる。また、数値テーブル206b(AB-B01、AB-B02)の「回転速度」や「回転トルク」の数値を設定する際にも、参照テーブルの「最大回転速度」や「最大回転トルク」という項目が参照されて、最大回転速度や最大回転トルクを超える不適切な数値が設定されないようにすることができる。加えて、図9に例示した参照テーブルにも、参照テーブルが用いられるアクチュエータ(ここでは、アクチュエータ11)の機械的な特性値として、減速機構の「減速比」が設定されている。
【0067】
その他の数値テーブル206b(例えば、図4中に記載されたAC-B01、AC-B02、AC-B11、AC-B12、AC-B21、AC-B22など)についても、同様の参照テーブルが設定されている。数値テーブル206bを作成する際には、それぞれの数値テーブル206bの「参照テーブル」という項目に、適切な参照テーブルを設定しておくことで、数値テーブル206bに不適切な数値が設定されないようにすることができる。
【0068】
以上に詳しく説明したように、本実施例のYOGOチャートでは、アクチュエータ番号と、部分期間番号とによって特定されるマス目状の座標位置に、動作記述206aおよび数値テーブル206bを用いてアクチュエータの基本動作を記載する。そして、自動製造機械1に搭載された全てのアクチュエータ10~20の基本動作を、このようにしてYOGOチャート上に記載することによって、自動製造機械1の動作を記述する。そして、自動製造機械制御装置100は、このようなYOGOチャートから制御プログラムを生成して、自動製造機械1の動作を制御する。
【0069】
C.本実施例の自動製造機械制御装置100 :
図10は、本実施例の自動製造機械制御装置100の内部構造を示した説明図である。図10に示されるように、本実施例の自動製造機械制御装置100は、YOGOチャート作成部101や、基本動作記憶部102や、YOGOチャート読込部103や、YOGOチャート解析部104や、制御プログラム生成部105や、制御実行部106などを備えている。尚、これらの「部」は、自動製造機械制御装置100を用いてYOGOチャート200を作成し、そのYOGOチャート200から制御プログラムを生成して自動製造機械1の動作を制御するために、自動製造機械制御装置100が備える複数の機能を表した抽象的な概念である。従って、自動製造機械制御装置100が、これらの「部」に相当する部品を組み合わせて形成されていることを表しているわけではない。実際には、これらの「部」は、CPUで実行されるプログラムの形態で実現することもできるし、ICチップやLSIなどを組み合わせた電子回路の形態で実現することもできるし、更には、これらが混在した形態など、様々な形態で実現することができる。また、自動製造機械制御装置100中の基本動作記憶部102、YOGOチャート解析部104、および制御プログラム生成部105をまとめて、制御プログラム生成装置110として把握することができる。
【0070】
YOGOチャート作成部101は、モニター画面100mや、操作入力ボタン100sなどに接続されており、自動製造機械1について十分な知識を有する機械技術者などが、モニター画面100mを見ながら操作入力ボタン100sを操作することによって、図4に例示したようなYOGOチャート200を作成する。前述したように、YOGOチャート200は自動製造機械1に搭載されている複数のアクチュエータの基本動作を、部分期間の何れかに割り当てることによって、自動製造機械1の動作を記述したものである。自動製造機械1の機械設計を行った機械設計技術者や、自動製造機械1の構造や動作について十分な知識を有する技術者であれば、簡単にYOGOチャート200を作成することができる。
【0071】
また、本実施例では、YOGOチャートに基本動作を記載する際には、原則として動作記述206aと数値テーブル206bとを用いて基本動作を記載することになっているが、アクチュエータに応じて、使用可能な動作記述206aは決まっている(図5参照)。そこで、基本動作記憶部102には、アクチュエータの名称と、そのアクチュエータで使用可能な動作記述206aとが対応付けて予め記憶されている。
【0072】
図11は、アクチュエータの名称と、使用可能な動作記述206aとが対応付けられて基本動作記憶部102に記憶されている様子を示した説明図である。図示されるように基本動作記憶部102には、アクチュエータ毎に使用可能な動作記述206aが記憶されている。例えば、アクチュエータ10に対しては、使用可能な動作記述206aとして「Q-AA」が記憶されている。また、アクチュエータ18に対しては、使用可能な動作記述206aとして、「Q-AB」および「Q-AD」の2つの動作記述206aが記憶されている。また、それぞれのアクチュエータには、アクチュエータの構造や、アクチュエータの基本動作の内容も併せて記憶されている。
【0073】
また、前述したように動作記述206aは原則として数値テーブル206bと組み合わせて用いられるが、動作記述206aに対して組み合わせることが可能な数値テーブル206bは予め決まっている。そこで、基本動作記憶部102には、動作記述206a毎に、組み合わせることが可能な数値テーブル206bも記憶されている。
【0074】
図12は、動作記述206aと、その動作記述206aに組み合わせることが可能な数値テーブル206bとが対応付けて記憶されている様子を示した説明図である。例えば、「Q-AA」という動作記述206aに対しては、組み合わせ可能な数値テーブル206bとして、「AA-B01」および「AA-B02」という2つの数値テーブル206bが記憶されている。更に、「AA-B01」という数値テーブル206bに対しては、その数値テーブル206bから参照される参照テーブルとして、「AA-A01」が記憶されている。同様に、「AA-B01」という数値テーブル206bに対しては、「AA-A01」という参照テーブルが記憶されている。このように、本実施例の基本動作記憶部102には、数値テーブル206bから参照される参照テーブルも、数値テーブル206bに対応付けて記憶されている。
【0075】
更に、基本動作記憶部102には、図13に示すように、動作記述206aと、動作記述206aに対応するプログラム要素番号も記憶されている。図5を用いて前述したように、ブログラム要素とは、動作記述206aを実現するための小さなプログラムのことである。また、ブログラム要素番号とは、プログラム要素を特定するための通し番号のことである。
【0076】
上述した基本動作記憶部102は、YOGOチャート作成部101に接続されており、YOGOチャート200を作成するに際しては基本動作記憶部102を参照することができる。そして、自動製造機械1について十分な知識を有する機械技術者であれば、どのようなアクチュエータをどのように動作させるかは十分に分かっているので、アクチュエータに応じて使用可能な動作記述206aの中から適切な動作記述206aを選択し、更に動作記述206aに組み合わせる数値テーブル206bも選択することができる。
【0077】
YOGOチャート読込部103は、YOGOチャート作成部101で作成したYOGOチャート200を読み込んで、後述するYOGOチャート解析部104に出力する。尚、本実施例では、自動製造機械制御装置100でYOGOチャート200を作成するものとしているが、自動製造機械1とは別体に設けたコンピュータ50でYOGOチャート200を作成しておき、そのYOGOチャート200をYOGOチャート読込部103が読み込むようにしても良い。また、本実施例のYOGOチャート読込部103は、本発明における「動作チャート読込部」に対応する。
【0078】
YOGOチャート解析部104は、YOGOチャート読込部103から受け取ったYOGOチャート200を解析することによって、YOGOチャート200の記載が所定の記載要件を満足しているか否かを判断する。そして、YOGOチャート200が記載要件を満足していた場合は、基本動作記憶部102を参照しながら、YOGOチャート200から中間データを生成して制御プログラム生成部105に出力する。YOGOチャート200から中間データを生成する処理については、後ほど詳しく説明する。尚、本実施例のYOGOチャート解析部104は、YOGOチャート200が所定の記載要件を満足するか否かを判断していることから、本発明における「記載要件判断部」に対応する。
【0079】
制御プログラム生成部105は、中間データを受け取ると、基本動作記憶部102を参照することによって、中間データから制御プログラムを生成する。中間データから制御プログラムを生成する方法については、後ほど詳しく説明する。そして、得られた制御プログラムを制御実行部106に出力する。
【0080】
制御実行部106は、制御プログラム生成部105から制御プログラムを受け取ると、その制御プログラムに従って、アクチュエータ10~20の動作を制御する。その結果、自動製造機械1に搭載されたアクチュエータ10~20が、YOGOチャート200に記述された通りに動作することになる。
【0081】
D.制御プログラム生成処理 :
図14は、本実施例の自動製造機械制御装置100の中で実行される制御プログラム生成処理の概要を示したフローチャートである。図示されるように、制御プログラム生成処理では、先ず初めにYOGOチャート200を読み込む(STEP1)。本実施例では、自動製造機械制御装置100がYOGOチャート200を作成しているから、作成したYOGOチャート200のデータを読み込むことになる。もちろん、他のコンピュータ50で作成したYOGOチャート200のデータを読み込んでも良い。
【0082】
続いて、読み込んだYOGOチャート200を解析して中間データを出力する(STEP2)。このとき、YOGOチャート200が所定の記載要件を満足しているか否かを判断して、記載要件を満足していると判断した場合に、中間データを生成するようになっている。YOGOチャート200を解析して中間データを出力する処理(YOGOチャート解析処理)の詳細については後述する。
【0083】
図15は、YOGOチャート200から生成された中間データを例示した説明図である。図示されるように中間データは、部分期間番号Nと、アクチュエータ番号Mと、動作記述206aと、数値テーブル206bとが、この順序で並んだ一組のデータ(以下、「データレコード」と呼ぶ)が集まったものとなっている。また、各データレコードの部分期間番号Nは、「1」~部分期間番号Nの最終値までの何れかの値を取り、アクチュエータ番号Mは、YOGOチャート200に記載されたアクチュエータ番号Mの何れかの値を取る。また、YOGOチャート200上の全ての部分期間番号Nは、必ず何れかのデータレコードに記載されており、YOGOチャート200に記載された全てのアクチュエータ番号Mは、必ず何れかのデータレコードに記載されている。図14のSTEP2の処理では、図4に例示したYOGOチャート200から、図15に例示するような中間データを生成する。
【0084】
続いて、図14の制御プログラム生成処理では、中間データから制御プログラムを生成する(STEP3)。図16には、図15に例示した中間データから生成された制御プログラムが示されている。図15に示した中間データのデータレコードと、図16に示した制御プログラムのデータレコードとを比較すれば明らかなように、制御プログラムのデータレコードは、中間データのデータレコード中の動作記述206aが、その動作記述206aに対応するプログラム要素番号Pに置き換えられ(図13参照)、中間データのデータレコード中の数値テーブル206bが、その数値テーブル206bに対応する数値テーブル番号Tに置き換えられたものとなっている(図6図7参照)。
【0085】
中間データ中の動作記述206aおよび数値テーブル206bを、それぞれプログラム要素番号および数値テーブル番号に置き換える操作は、図10中の制御プログラム生成部105が、基本動作記憶部102を参照することによって実行される。すなわち、基本動作記憶部102には、動作記述206aがプログラム要素番号と対応付けて記憶されている(図13参照)。更に、基本動作記憶部102には、図6図7に例示した数値テーブル206bが記憶されており、それぞれの数値テーブル206bには数値テーブル番号が設定されている。そこで、制御プログラム生成部105は、基本動作記憶部102に記憶されている図13の対応関係や、図6図7に例示した数値テーブル206bを参照することによって、中間データ中の動作記述206aや数値テーブル206bを、プログラム要素番号および数値テーブル番号に置き換えて行く。
【0086】
以上のようにして、中間データから制御プログラムを生成したら(図14のSTEP3)、生成した制御プログラムを、自動製造機械制御装置100の制御実行部106に出力して(STEP4)、図14の制御プログラム生成処理を終了する。そして、本実施例の制御実行部106は、このような制御プログラムに従って、自動製造機械1に搭載されたアクチュエータ10~20の動作を制御する。制御実行部106が図16に例示した制御プログラムに従って、アクチュエータ10~20の動作を制御する処理については後述する。
【0087】
E.YOGOチャート解析処理 :
図17は、本実施例の自動製造機械制御装置100が、YOGOチャートを解析して中間データを出力する処理(YOGOチャート解析処理)のフローチャートである。この処理は、図14に示した制御プログラム生成処理のSTEP2で、YOGOチャート解析部104(図10参照)によって実行される処理である。
【0088】
図17に示したように、YOGOチャート解析処理(STEP2)を開始すると、先ず初めに、部分期間番号Nおよびアクチュエータ番号Mを「1」に初期化する(STEP10)。部分期間番号NとはYOGOチャート200の複数の部分期間に付けられた通し番号である(図4参照)。また、アクチュエータ番号Mとは、YOGOチャート200の上で仕切線201によって区分された複数の横長の領域に付けられた通し番号である(図4参照)。YOGOチャート200上の横長の領域には、1つずつアクチュエータが割り当てられるので、アクチュエータ番号Mを指定することによってアクチュエータを特定することができる。
【0089】
続いて、YOGOチャート200上での座標(N,M)の位置に、動作線203の始点204が記載されているか否かを判断する(STEP11)。STEP10で部分期間番号Nおよびアクチュエータ番号Mを初期化した直後は、NおよびMは何れも「1」であるから、YOGOチャート200上の座標位置(1,1)に始点204が記載されているか否かを判断することになる。ここで、座標位置(N,M)に始点204が記載されている状態とは、次のような状態を指している。
【0090】
先ず、YOGOチャート200上の座標位置(N,M)とは、YOGOチャート200上で、部分期間番号Nとアクチュエータ番号Mとの組み合わせで特定されるマス目状の座標位置を表している。また、図4を用いて前述したように、部分期間番号Nの部分期間(すなわち、先頭からN番目の部分期間)は、先頭からN番目のトリガー線202と、N+1番目のトリガー線202との間に形成されている。更に、本実施例のYOGOチャート200では、トリガー線202の上に動作線203の始点204を記載することになっている。従って、座標位置(N,M)に始点204が記載されている状態とは、部分期間番号Nとアクチュエータ番号Mとの組み合わせで特定されるマス目に着目して、そのマス目の一辺を形成するN番目のトリガー線202に始点204が記載されている状態を指している。
【0091】
また、YOGOチャート解析処理のSTEP11で、座標位置(N,M)に始点204が記載されているか否かを判断している理由は、次のようなものである。先ず、図4を用いて前述したように、YOGOチャート200は部分期間に基本動作206を割り当てることによって記述されており、基本動作206は、動作の始まりを示す始点204と、動作の終わりを示す終点205との間に引かれた動作線203上に記載されることになっている。従って、YOGOチャート200上に始点204が記載されていれば、その始点204から動作線203が引かれて、動作線203の上に基本動作206が記載されているものと考えられる。そこで、YOGOチャート200から基本動作206を抽出するための手掛かりとして、YOGOチャート200上に記載された始点204を探索するのである。
【0092】
図4に例示したYOGOチャート200の場合では、座標位置(1,1)には始点204は記載されていないから、STEP11では「no」と判断して、アクチュエータ番号Mが最終値に達したか否かを判断する(図18のSTEP28)。本実施例の自動製造機械1には11個のアクチュエータ10~20が搭載されているから、アクチュエータ番号Mの最終値は11となる。従って、座標位置(1,1)での始点204の有無を確認した後のSTEP28の判断では、「no」と判断されるので、アクチュエータ番号Mに1を加算する(STEP29)。そして、加算後の新たなアクチュエータ番号Mを用いて、再び、座標位置(N,M)に始点204が記載されているか否かを判断する(図17のSTEP11)。
【0093】
このように、部分期間番号Nは「1」のまま、アクチュエータ番号Mを1つずつ増加させながら、座標位置(1,M)に始点204が記載されているか否かを判断していくと、やがては、始点204が記載されている座標位置(1,M)に到達して、STEP11で「yes」と判断されることになる。
【0094】
そして、STEP11で「yes」と判断された場合は、始点204が記載された座標位置(N,M)が見つかったことになるので、その座標位置(N,M)に記載されている内容が、以下のような記載要件、
[記載要件1]:始点204に対応する終点205が存在すること、
[記載要件2]:始点204と終点205との間に基本動作206が記載されていること、
[記載要件3]:基本動作206中の動作記述206aが座標位置(N,M)のアクチュエータ番号Mに対応すること
を満足するか否かを判断して行く。
【0095】
先ず初めは、上述した記載要件1を満足するか否か、すなわち、始点204に対応する終点205が存在するか否かを判断する(STEP12)。図4を用いて前述したように、始点204は動作線203の始まりを示しているから、始点204が存在する以上、動作線203の終わりを示す終点205が存在する筈である。また、本実施例では終点205もトリガー線202の上に記載することになっている。そこで、始点204が見つかった座標位置(N,M)から、YOGOチャート200上で視線を右方向(すなわち、トリガー線202の番号が増加する方向)に移動させることによって、トリガー線202上の終点205を探索する。終点205が見つからなかった場合や、終点205が見つかる前に新たな始点204が見つかった場合は、STEP12では「no」と判断されるが(STEP12:no)、YOGOチャート200が正しく記載されていれば、始点204に対応する終点205が見つかるので、STEP12では「yes」と判断される。
【0096】
続いて、上述した記載要件2を満足するか否か、すなわち、始点204と終点205とを結ぶ動作線203の上に基本動作206が記載されているか否かを判断する(STEP14)。始点204と終点205とを結ぶ動作線203が見つからなかった場合や、動作線203は見つかったが基本動作206が記載されていない場合、あるいは動作線203の上に記載されている内容が、基本動作記憶部102に記憶されている基本動作206ではなかった場合は、STEP14では「no」と判断されるが、YOGOチャート200が正しく記載されていれば、STEP14では「yes」と判断される。
【0097】
上述した記載要件2も満足していた場合は、動作線203の上に記載されていた基本動作206を読み込んだ後(STEP16)、今度は、上述した記載要件3を満足するか否か、すなわち、読み込んだ基本動作206の動作記述206aが、座標位置(N,M)のアクチュエータ番号Mに割り当てられたアクチュエータに対応するか否かを判断する(STEP17)。これは、次のような判断である。
【0098】
先ず、図4に示したように、座標位置(N,M)のアクチュエータ番号Mには、自動製造機械1に搭載された複数のアクチュエータ10~20の何れかが割り当てられている。更に、図11に示したように、それぞれのアクチュエータ10~20には、設定可能な動作記述206aが予め決まっている。従って、座標位置(N,M)に記載できる動作記述206aは、座標位置(N,M)のアクチュエータ番号Mに割り当てられたアクチュエータに対して設定可能な動作記述206aに限られる。例えば、アクチュエータ番号が2番に対してはアクチュエータ11が割り当てられており(図4参照)、アクチュエータ11に対して設定可能な動作記述206aは「Q-AB」という動作記述206aに限られる(図11参照)。従って、アクチュエータ番号が2番の座標位置(N,2)に対しては「Q-AB」という基本動作206しか設定することができない。また、アクチュエータによっては複数の動作記述206aを設定可能な場合もあるが、何れにしても座標位置(N,M)のアクチュエータ番号Mに応じて設定可能な動作記述206aは決まってしまう。そこで、STEP17では、STEP16で読み込んだ動作記述206aが、座標位置(N,M)のアクチュエータ番号Mが示すアクチュエータに対して設定可能な動作記述206aであるか否かを判断する。
【0099】
YOGOチャート200が正しく記載されていれば、STEP17では「yes」と判断されるので、続いて、動作記述206aが、数値テーブル206bを必要とする動作記述206aか否かを判断する(STEP19)。前述したように、大部分の動作記述206aは数値テーブル206bと組み合わせて用いられることが前提となっているが、一部の動作記述206a(例えば、図12に示した「Q-CA」という動作記述206a)については、数値テーブル206bと組み合わされることなく単独で用いられる。そこで、STEP19では、STEP16で読み込んだ動作記述206aが、数値テーブル206bを必要とする動作記述206aであるか否かを判断する。
【0100】
そして、動作記述206aが数値テーブル206bを必要とする動作記述206aであった場合は(STEP19:yes)は、座標位置(N,M)に記載されている内容に対して、更に以下のような記載要件、
[記載要件4]:基本動作206中に数値テーブル206bが記載されていること、
[記載要件5]:基本動作206の動作記述206aと数値テーブル206bとが対応すること、
[記載要件6]:基本動作206の動作記述206aと数値テーブル206bとが対応すること
についても、満足するか否かを判断して行く。
【0101】
すなわち、STEP16で読み込んだ基本動作206中の動作記述206aが、数値テーブル206bを必要とする動作記述206aであった場合は(図17のSTEP19:yes)、まず初めに、上述した記載要件4(読み込んだ基本動作206中に数値テーブル206bが含まれているか否か)を判断する(図18のSTEP21)。
【0102】
YOGOチャート200が正しく記載されていれば、STEP21では「yes」と判断されるので、次は、上述した記載要件5、すなわち、基本動作206中の動作記述206aと数値テーブル206bとが対応するか否かを判断する(STEP23)。図12を用いて前述したように、基本動作記憶部102には、動作記述206aと、その動作記述206aに対して組み合わせることが可能な数値テーブル206bとが、対応付けて予め記憶されている。そこで、STEP23では、図12に例示した対応関係を参照することによって、動作記述206aと数値テーブル206bとが対応するか否かを判断する。
【0103】
YOGOチャート200が正しく記載されていれば、STEP23でも「yes」と判断されるので、今度は、上述した記載要件6、すなわち、数値テーブル206bに設定されている数値が、参照テーブルと整合するか否かを判断する(STEP25)。図6および図7を用いて前述したように、数値テーブル206bには参照テーブルが設定されている。更に、図8および図9を用いて前述したように、参照テーブルには、参照する数値テーブル206bに設定可能な数値範囲が設定されている。そこで、STEP25では、数値テーブル206bに設定されている数値が、数値テーブル206bから参照する参照テーブルに設定された数値範囲内で設定されているか否かを判断する。
【0104】
YOGOチャート200が正しく記載されていれば、STEP25でも「yes」と判断される。そして、この場合(STEP25:yes)は、始点204が見つかった座標位置(N,M)に記載されている内容が、上述した記載要件1~6を全て満足したことになる。そこで、その座標位置(N,M)と、STEP16で読み込んだ基本動作206中の動作記述206aと、基本動作206中の数値テーブル206bとを、1つの中間レコード(N,M,動作記述206a,数値テーブル206b)にまとめて、メモリに記憶する(STEP27)。また、STEP16で読み込んだ基本動作206中の動作記述206aが、数値テーブル206bを必要としない動作記述206aであった場合は(STEP19:no)、座標位置(N,M)と、STEP16で読み込んだ基本動作206中の動作記述206aとを、1つの中間レコード(N,M,動作記述206a)にまとめて、メモリに記憶する(STEP20)。
【0105】
以上では、YOGOチャート200が正しく記載されていた場合について説明したが、YOGOチャート200が正しく記載されていない場合も起こり得る。例えば、上述した記載要件1を満足しない場合、すなわち、始点204に対応する終点205が記載されていない場合は、図17のSTEP12で「no」と判断される。そして、記載要件を満たしていないと判断した問題の座標位置(N,M)と、記載要件1に違反することを示すエラーコード(エラーコード1)とをメモリに記憶する(STEP13)。
【0106】
また、上述した記載要件2を満足しない場合、すなわち、始点204と終点205との間に基本動作206が記載されていない場合は、STEP14で「no」と判断して、問題が発生した座標位置(N,M)と、記載要件2に違反することを示すエラーコード(エラーコード2)とをメモリに記憶する(STEP15)。更に、上述した記載要件3を満足しない場合、すなわち、基本動作206中の動作記述206aが座標位置(N,M)のアクチュエータ番号Mに対応していなかった場合は、STEP17で「no」と判断して、記載要件を満たさない問題の座標位置(N,M)と、記載要件3に違反することを示すエラーコード(エラーコード3)とをメモリに記憶する(STEP18)。
【0107】
基本動作206中の動作記述206aが数値テーブル206bを必須とする動作記述206aであった場合には(図17のSTEP19:yes)、上述した記載要件4、すなわち、基本動作206中に数値テーブル206bが記載されているか否かを判断する。そして、数値テーブル206bが記載されていなかった場合は、図18のSTEP21で「no」と判断して、記載要件を満たさない問題の座標位置(N,M)と、記載要件4に違反することを示すエラーコード(エラーコード4)とをメモリに記憶する(STEP22)。
【0108】
また、上述した記載要件5を満足しない場合、すなわち、基本動作206中の動作記述206aと数値テーブル206bとが対応していない場合は、STEP23で「no」と判断して、記載要件を満たさない問題の座標位置(N,M)と、記載要件5に違反することを示すエラーコード(エラーコード5)とをメモリに記憶する(STEP24)。更に、上述した記載要件6を満足しない場合、すなわち、数値テーブル206bに設定されている数値が参照テーブルと整合していない場合は、STEP25で「no」と判断して、記載要件を満たさない問題の座標位置(N,M)と、記載要件6に違反することを示すエラーコード(エラーコード6)とをメモリに記憶する(STEP26)。
【0109】
このように、YOGOチャート解析処理のSTEP11~STEP27では、YOGOチャート200上で始点204が記載された座標位置(N,M)を探索し、見つかった座標位置(N,M)に記載されている内容が、上述した記載要件1~3、あるいは記載要件1~6を満足するか否かを判断する。そして、満足している場合は、座標位置(N,M)を含む中間レコードをメモリに記憶する(図17のSTEP20、または図18のSTEP27)。これに対して、満足していない場合は、問題のあった座標位置(N,M)と、満足していない記載要件を示すエラーコードとをメモリに記憶する(STEP13,STEP15,STEP18,STEP22,STEP24,STEP26)。
【0110】
こうして、始点204が見つかった座標位置(N,M)に対する操作が終了したら、アクチュエータ番号Mが最終値に達したか否かを判断する(図18のSTEP28)。そして、アクチュエータ番号Mの最終値に達していない場合は(STEP28:no)、アクチュエータ番号Mに1を加算した後(STEP29)、加算後の新たなアクチュエータ番号Mを用いて、再び、座標位置(N,M)に始点204が記載されているか否かを判断する(図17のSTEP11)。
【0111】
このように、部分期間番号Nは変更せずに、アクチュエータ番号Mを1つずつ増加させながら、始点204が記載された座標位置(N,M)を探索することによって、STEP11~STEP28の操作を繰り返す。そして、アクチュエータ番号Mが最終値に達したら(STEP28:yes)、今度は、部分期間番号Nが最終値に達したか否かを判断する(STEP30)。例えば、YOGOチャート200上で、自動製造機械1の動作が100個の部分期間を用いて記述されているのであれば、部分期間番号Nの最終値は100となる。
【0112】
その結果、部分期間番号Nが最終値に達していない場合は(STEP30:no)、部分期間番号Nに1を加算すると共に(STEP31)、アクチュエータ番号Mを「1」に初期化した後(STEP32)、STEP11に戻って、再び、YOGOチャート上の座標(N,M)に始点204が記載されているか否かを判断する。すなわち、YOGOチャート200上で、部分期間番号Nが「n」の部分期間に含まれる複数の座標位置(n,M)を上から順番に確認して行き、一番下まで確認したら、今度は、部分期間番号Nが「n+1」の部分期間に含まれる複数の座標位置(n+1,M)を上から順番に確認して行きく。そして、始点204が記載され且つ記載要件を満たす座標位置(N,M)については中間レコードをメモリに記憶し、記載要件を満たさない問題の座標位置(N,M)については、その問題の座標位置(N,M)とエラーコードとをメモリに記憶していく。そして、このような操作を繰り返していき、最終的に、部分期間番号Nが最終値に達したら(図18のSTEP30:yes)、YOGOチャート200上の全ての座標位置(N,M)についての操作が終了したことになる。
【0113】
こうして、YOGOチャート200上の全ての座標位置(N,M)についての操作が終了したら、今度は、エラーコードが記憶されているか否かを判断する(図19のSTEP33)。YOGOチャート200中に上述した記載要件を満足さない問題の座標位置(N,M)が存在していれば、エラーコードが記憶されている筈である。逆に言えば、エラーコードが記憶されていなければ、YOGOチャート200は正しく記載されていると考えてよい。そこで、エラーコードが記憶されていない場合は(STEP33:no)、記憶しておいた全ての中間レコードを出力する(STEP34)。図15に例示した中間データは、こうして全ての中間レコードが出力されたものである。こうして全ての中間レコードを中間データとして出力したら(STEP34)、図17図19に示したYOGOチャート解析処理(STEP2)を終了して、図14の制御プログラム生成処理に復帰する。そして、制御プログラム生成処理に復帰した後は、中間データから制御プログラムを生成する操作(STEP3)を開始することになる。
【0114】
一方、図19のSTEP33で、エラーコードが記憶されていると判断した場合は(STEP33:yes)、YOGOチャート200の中に、上述した記載要件1~6の何れかを満たさない問題の座標位置(N,M)が存在することになる。そして、そのような場合は、問題の座標位置(N,M)と、該当する記載要件を示すエラーコードが記憶されている(STEP13,STEP15,STEP18,STEP22,STEP24,STEP26参照)。そこで、記憶しておいた問題の座標位置(N,M)と、エラーコードとを出力する(STEP35)。
【0115】
図20は、問題の座標位置(N,M)と、エラーコードとが出力された様子を例示した説明図である。図示した例では、問題の座標位置として、(4,12)、(8,2)、(25,15)、(42,6)の4つの座標位置(N,M)が出力され、それぞれについてエラーコード4、エラーコード1、エラーコード6、エラーコード5が出力されている。これらの記載から、YOGOチャート200中のどの座標位置(N,M)に、どのような記載ミスが存在するのかを直ちに認識することが可能となる。
【0116】
また、問題の座標位置(N,M)およびエラーコードが出力された場合は(図19のSTEP35)、YOGOチャート200が正しく記載されていないことになるので、図14の制御プログラム生成処理に復帰することなく、図17図19に示したYOGOチャート解析処理を終了する。
【0117】
F.動作制御処理 :
図14を用いて前述した制御プログラム生成処理では、図15に例示した中間データから図16に例示した制御プログラムを生成して(STEP3)、図10の制御実行部106に出力する(STEP4)。そして、制御実行部106は、制御プログラムに従って、自動製造機械制御装置100のアクチュエータ10~20の動作を制御する。しかし、図16に示されるように、本実施例の制御プログラムは、データレコードと呼ぶ数値の組が、連続したものに過ぎない。そこで、最後に、本実施例の自動製造機械制御装置100の制御実行部106が、制御プログラムに基づいてアクチュエータ10~20の動作を制御する処理について説明しておく。
【0118】
図21は、自動製造機械制御装置100の制御実行部106が、制御プログラムに従って自動製造機械1の動作を制御する動作制御処理のフローチャートである。図21に示すように、動作制御処理を開始すると、先ず初めに、部分期間番号Nを「1」に初期化する(STEP50)。続いて、制御プログラムの複数のデータレコードの中から、先頭の要素がNのデータレコードを抽出する(STEP51)。該当するデータレコードが複数存在する場合は、それら全てのデータレコードを抽出する。尚、動作制御処理を開始した直後であれば、部分期間番号Nは「1」に設定されているから、図16に例示した制御プログラムから、(1,4,4,19)というデータレコードを読み出すことになる。
【0119】
続いて、読み出したデータレコードの中から2番目の要素(すなわち、アクチュエータ番号M)を読み出して、制御対象となるアクチュエータを特定する(STEP52)。STEP51で読み出したデータレコードを(1,4,4,19)とすれば2番目の要素は「4」であるから、アクチュエータ番号Mが「4」のアクチュエータが制御対象のアクチュエータとなる。また、STEP51で複数のデータレコードを読み出していた場合には、それぞれのデータレコードの2番目の要素に基づいて、制御対象となるそれぞれのアクチュエータを特定する。
【0120】
更に、読み出したデータレコードの中から3番目の要素を用いて、基本動作記憶部102に記憶されているプログラム要素番号を検索することによって(図13参照)、アクチュエータに基本動作させるためのプログラム要素を取得する(STEP53)。STEP51で読み出したデータレコードを(1,4,4,19)とすれば3番目の要素は「4」であるから、基本動作させるためのプログラム要素は、プログラム要素番号が「4」番のプログラム要素となる。
【0121】
最後に、データレコードに4番目の要素が存在している場合は、その要素は、図6および図7を用いて前述した数値テーブル206bを特定する数値テーブル番号を示しており、数値テーブル206bに設定されている数値は、プログラム要素に設定する引数となる。そこで、基本動作記憶部102に記憶されている数値テーブル206bを検索することによって、数値テーブル番号を有する数値テーブル206bを特定した後、数値テーブル206bに設定されている数値を、プログラム要素に引数として設定する(STEP54)。
【0122】
以上のSTEP51~STEP54の操作を行うことによって、YOGOチャート上のある部分期間(動作制御処理が開始された直後は、部分期間番号Nが「1」番の部分期間)に記載された基本動作を、それぞれのアクチュエータに行わせる準備が整ったことになる。すなわち、制御対象となるアクチュエータが特定され(STEP52)、制御に用いるプログラム要素が取得され(STEP53)、プログラム要素に対して引数が設定された(STEP54)ことになるので、そのプログラム要素を実行する(STEP55)。例えば、アクチュエータがサーボモータであり、基本動作の内容がモータを正方向に180度回転させるという内容であった場合は、モータの回転角度を検出しながら、回転角度が180度になるまでモータを駆動する動作を、所定の制御周期で繰り返すようなプログラム要素を実行する。また、複数のプログラム要素が存在する場合は、それらのプログラム要素が並行して実行されることになる。
【0123】
続いて、全てのプログラム要素の実行が終了したか否かを判断する(STEP56)。すなわち、STEP55で複数のプログラム要素を実行した場合は、それらのプログラム要素の実行が同時に終了するとは限らないので、全てのプログラム要素の実行が終了したか否かを判断する。もちろん、STEP55で1つのプログラム要素しか実行していない場合は、そのプログラム要素の実行が終了したか否かを判断することになる。
【0124】
その結果、実行中のプログラム要素が残っている場合は、STEP56では「no」と判断して、再び同じ判断(STEP56)を繰り返す。こうすることによって、全てのプログラム要素の実行が終了するまで待機状態となる。そして、全てのプログラム要素の実行が終了したら(STEP56:yes)、部分期間番号Nが最終値に達したか否かを判断する(STEP57)。例えば、YOGOチャート上で自動製造機械1の動作を記述するために、100個の部分期間が用いられていた場合は、部分期間番号Nが「100」に達したか否かを判断する。
【0125】
その結果、部分期間番号Nがまだ最終値に達していない場合は(STEP57:no)、部分期間番号Nを1つ増加させる(STEP58)。そして、STEP51に戻って、制御プログラムのデータレコードの中から、先頭の要素が新たな部分期間番号Nに一致するデータレコードを読み出した後、読み出したデータレコードに対して上述したSTEP52~STEP55の操作を行う。こうすることにより、先に基本動作を実行した部分期間から1つ部分期間を進めて、新たな部分期間に記載された全ての基本動作が実行されることになる。そして、新たな部分期間の全ての基本動作が終了して、STEP56で「yes」と判断したら、その部分期間の部分期間番号Nが最終値に達しているか否かを判断する(STEP57)。その結果、部分期間番号Nが最終値に達していない場合は(STEP57:no)、部分期間番号Nを1つ増加させた後(STEP58)、STEP51に戻って、新たな部分期間番号Nについて、上述したSTEP51~STEP57の操作を繰り返す。
【0126】
このように、図21の動作制御処理では、YOGOチャートの先頭の部分期間(すなわち、部分期間番号Nが1番の部分期間)から最後の部分期間(部分期間番号Nが最終値の部分期間)に向かって、部分期間を1つずつ選択して、その部分期間に記載された基本動作を実行する動作を繰り返す。そして、最後の部分期間の基本動作が終了したら、STEP57で「yes」と判断して、動作制御処理を終了する。
【0127】
以上に詳しく説明したように、本実施例の自動製造機械制御装置100では、自動製造機械1の動作をYOGOチャート200で記述することによって、そのYOGOチャート200から制御プログラムを自動で生成して、自動製造機械制御装置100を動作させることができる。また、YOGOチャートは、自動製造機械1の構造や動作が分かっていれば、プログラムに関する知識が無くても簡単に作成することができるので、プログラマが制御プログラムを作成する必要が無い。このため、新たな自動製造機械1を開発するために要する時間を、大幅に(少なくとも半分以下に)短縮することができ、加えて、プログラマを確保しておく必要も無くなる。その結果、製造現場に新たな自動製造機械を導入することが容易になって、産業界での省力化に対する要請に十分に対応することが可能となる。
【0128】
加えて、本実施例の自動製造機械制御装置100では、YOGOチャート200から制御プログラムを生成する際に、YOGOチャート200に記載された内容が所定の記載要件を満足するか否かを判断して、満足していなければ制御プログラムが生成されないようになっている。このため、記載ミスのあるYOGOチャート200に基づいて、不適切な制御プログラムが生成されてしまう事態を回避することが可能となる。
【0129】
更に、YOGOチャート200に記載ミスが見つかった場合には、記載ミスが存在する問題の座標位置(すなわち、問題座標位置)と、記載ミスの内容を示すエラーコードとが出力される。このため、YOGOチャート200上で記載ミスが存在する個所と、記載ミスの内容とが分かるので、記載ミスを容易に修正して正しいYOGOチャート200を作成することが可能となる。
【0130】
以上、本実施例の制御プログラム生成装置110について説明したが、本発明は上記の実施例に限られるものではなく、その要旨を逸脱しない範囲において種々の態様で実施することが可能である。
【符号の説明】
【0131】
1…自動製造機械、 2…レール、 3…搬送ユニット、 3a…把持軸、
3b…チャック、 4…加工ユニット、 10~20…アクチュエータ、
10d~20d…ドライバ回路、 50…コンピュータ、
100…自動製造機械制御装置、 100m…モニター画面、
100s…操作入力ボタン、 101…YOGOチャート作成部、
102…基本動作記憶部、 103…YOGOチャート読込部、
104…YOGOチャート解析部、 105…制御プログラム生成部、
106…制御実行部、 110…制御プログラム生成装置、 201…仕切線、
202…トリガー線、 203…動作線、 204…始点、 205…終点、
206…基本動作、 206a…動作記述、 206b…数値テーブル。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21