(57)【特許請求の範囲】
【請求項１】
複数のアクチュエータ（１０〜２０）を備えた自動製造機械（１）の制御プログラムを生成する制御プログラム生成装置（１００ａ、１１０）であって、
前記アクチュエータが指定された動作量で該アクチュエータの自由度方向に動作する基本動作を、前記基本動作を実現するプログラム要素と対応付けて記憶している基本動作記憶部（１０２）と、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、前記自動製造機械の動作が複数の前記基本動作に分解されると共に、前記基本動作が、前記複数の部分期間の中から前記基本動作毎に選択された何れか１つの前記部分期間に割り当てられることによって前記自動製造機械の動作が記述された動作チャート（２００）を読み込む動作チャート読込部（１０３）と、
前記動作チャート上の複数の前記部分期間に割り当てられた複数の前記基本動作の前記プログラム要素を、前記動作チャート上での前記部分期間の順序に従って結合することにより、前記自動製造機械を動作させる前記制御プログラムを生成する制御プログラム生成部（１０５）と
を備えることを特徴とする制御プログラム生成装置。
【請求項２】
請求項１に記載の制御プログラム生成装置であって、
前記動作チャート読込部は、複数の前記部分期間が横方向または縦方向の何れか一方に並んで配置され、前記横方向または縦方向の何れか他方には、複数の前記アクチュエータが並んで割り当てられた表形式の動作チャート上で、対応する座標位置に前記基本動作が記入されることによって、前記自動製造機械の動作が記述された前記動作チャートを読み込む
ことを特徴とする制御プログラム生成装置。
【請求項３】
請求項１または請求項２に記載の制御プログラム生成装置であって、
前記基本動作記憶部は、前記基本動作に加えて、タイマによる計時動作または計数器による計数動作の少なくとも一方を、前記計時動作または前記計数動作を実現する前記プログラム要素と対応付けて記憶しており、
前記動作チャート読込部は、前記計時動作または前記計数動作の少なくとも一方が、前記複数の部分期間の何れかに割り当てられた前記動作チャートを読込可能となっている
ことを特徴とする制御プログラム生成装置。
【請求項４】
請求項１ないし請求項３の何れか一項に記載の制御プログラム生成装置であって、
前記基本動作記憶部は、前記基本動作に加えて、スイッチの状態を監視することによってスイッチが切り換わったことを検知するスイッチ検知動作と、前記スイッチ検知動作を実現する前記プログラム要素と対応付けて記憶しており、
前記動作チャート読込部は、前記スイッチ検知動作が前記複数の部分期間の何れかに割り当てられた前記動作チャートを読込可能となっている
ことを特徴とする制御プログラム生成装置。
【請求項５】
請求項１ないし請求項４の何れか一項に記載の制御プログラム生成装置であって、
前記基本動作記憶部は、前記基本動作に加えて、スピーカーによる音声出力動作またはライトによる発光動作の少なくとも一方を、前記音声出力動作または前記発光動作を実現するための前記プログラム要素と対応付けて記憶しており、
前記動作チャート読込部は、前記音声出力動作または前記発光動作の少なくとも一方を含んだ前記動作チャートを読込可能となっている
ことを特徴とする制御プログラム生成装置。
【請求項６】
請求項１ないし請求項５の何れか一項に記載の制御プログラム生成装置であって、
前記基本動作記憶部は、前記基本動作に加えて、ヒーターによる加熱動作を、前記加熱動作を実現するための前記プログラム要素と対応付けて記憶しており、
前記動作チャート読込部は、前記加熱動作を含んだ前記動作チャートを読込可能となっている
ことを特徴とする制御プログラム生成装置。
【請求項７】
複数のアクチュエータ（１０〜２０）を備えた自動製造機械（１）の制御プログラムをコンピュータに生成させる制御プログラム生成方法であって、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、前記自動製造機械の動作が、前記アクチュエータが指定された動作量で該アクチュエータの自由度方向に動作する複数の基本動作に分解されると共に、前記基本動作が、前記複数の部分期間の中から前記基本動作毎に選択された何れか１つの前記部分期間に割り当てられることによって前記自動製造機械の動作が記述された動作チャート（２００）を読み込む動作チャート読込工程（ＳＴＥＰ１）と、
前記動作チャートを解析することによって、前記動作チャートに含まれる複数の前記基本動作と、複数の前記基本動作が割り当てられた前記部分期間とを抽出する動作チャート解析工程（ＳＴＥＰ２）と、
前記基本動作と、前記基本動作を実現するためのプログラム要素とが対応付けて記憶された対応関係を参照することによって、前記動作チャートに記載された前記基本動作を前記プログラム要素に変換すると共に、前記プログラム要素を前記部分期間の順番に従って結合することによって、前記自動製造機械を動作させる前記制御プログラムを生成する制御プログラム生成工程（ＳＴＥＰ３）と
を備えることを特徴とする制御プログラム生成方法。
【請求項８】
複数のアクチュエータ（１０〜２０）を備えた自動製造機械（１）の制御プログラムを生成する方法を、コンピュータを用いて実現するプログラムであって、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、前記自動製造機械の動作が、前記アクチュエータが指定された動作量で該アクチュエータの自由度方向に動作する複数の基本動作に分解されると共に、前記基本動作が、前記複数の部分期間の中から前記基本動作毎に選択された何れか１つの前記部分期間に割り当てられることによって前記自動製造機械の動作が記述された動作チャート（２００）を読み込む動作チャート読込機能（ＳＴＥＰ１）と、
前記動作チャートを解析することによって、前記動作チャートに含まれる複数の前記基本動作と、複数の前記基本動作が割り当てられた前記部分期間とを抽出する動作チャート解析機能（ＳＴＥＰ２）と、
前記基本動作と、前記基本動作を実現するためのプログラム要素とが対応付けて記憶された対応関係を参照することによって、前記動作チャートに記載された前記基本動作を前記プログラム要素に変換すると共に、前記プログラム要素を前記部分期間の順番に従って結合することによって、前記自動製造機械を動作させる前記制御プログラムを生成する制御プログラム生成機能（ＳＴＥＰ３）と
を、コンピュータを用いて実現するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のアクチュエータを備えた自動製造機械の制御プログラムを生成する技術に関する。
【背景技術】
【０００２】
今日では、あらゆる業種に亘って、工場などの製造現場で省力化が強く要請されるようになっており、この傾向は今後も益々強まるものと予想されている。製造現場の省力化を推進するためには、加工あるいは製造しようとする対象物を把持したり、対象物を搬送したり、対象物に対して各種の加工を施したり、加熱したりする動作を自動で行う自動製造機械を活用することが必須となる。
【０００３】
そこで、加工あるいは製造しようとする対象物や、加工の内容（例えば、切削加工や、曲げ加工）や、食品の場合は加熱の程度などに応じて、様々なタイプの自動製造機械が開発されている（例えば、特許文献１、特許文献２）。
【０００４】
また、加工あるいは製造する対象物の大きさや形状や材質などは製造現場毎に異なっており、更に、加工の内容や加熱の程度なども製造現場によって異なっている。このため、製造現場に自動製造機械を導入する際には、他の製造現場で用いられている自動製造機械を流用することは困難であり、製造現場毎に専用の自動製造機械を新たに開発しなければならないことが一般的である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−２４５６０２号公報
【特許文献２】特開２０１８−１９２５７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、新たな自動製造機械を開発するには、その自動製造機械を制御するための制御プログラムも新たに作成する必要があり、このことが、製造現場に新たな自動製造機械を導入する際の大きな障害になっているという問題があった。この理由は次のようなものである。
【０００７】
新たな自動製造機械を開発する際には、先ず始めに機械設計技術者が、自動製造機械に要求される各種の機能を把握した上で、要求される機能を実現可能な自動製造機械の図面を作成する。続いて、プログラムを作成するための技術を有する技術者（いわゆるプログラマ）が、図面に記載された各種のアクチュエータや機械部品の動作を理解した上で、各種のアクチュエータが協調しながら動作することによって、要求される機能を実現するような制御プログラムを作成する必要がある。
【０００８】
このように、制御プログラムを作成するには、自動製造機械の設計が終わった後に、専門的な技能を有するプログラマが取り掛かる必要があるため、制御プログラムの作成に取り掛かる時期が遅くなる。加えて、プログラマが各種のアクチュエータや機械部品の動作を理解する時間も必要となる。その結果、自動製造機械の開発に取り掛かってから、製造現場に納品するまでに長い時間が必要となっており、このことが、製造現場に新たな自動製造機械を導入する際の大きな障害になっていた。
【０００９】
この発明は、従来の技術が有する上述した課題を解決するために成されたものであり、自動製造機械の制御プログラムを自動で生成することによって、新たな自動製造機械を開発するために要する時間を大幅に短縮することが可能な技術の提供を目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決するために、本発明の制御プログラム生成装置は次の構成を採用した。すなわち、
複数のアクチュエータ（１０〜２０）を備えた自動製造機械（１）の制御プログラムを生成する制御プログラム生成装置（１００ａ、１１０）であって、
前記アクチュエータが指定された動作量で該アクチュエータの自由度方向に動作する基本動作を、前記基本動作を実現するプログラム要素と対応付けて記憶している基本動作記憶部（１０２）と、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、前記自動製造機械の動作が複数の前記基本動作に分解されると共に、前記基本動作が、前記複数の部分期間の中から前記基本動作毎に選択された何れか１つの前記部分期間に割り当てられることによって前記自動製造機械の動作が記述された動作チャート（２００）を読み込む動作チャート読込部（１０３）と、
前記動作チャート上の複数の前記部分期間に割り当てられた複数の前記基本動作の前記プログラム要素を、前記動作チャート上での前記部分期間の順序に従って結合することにより、前記自動製造機械を動作させる前記制御プログラムを生成する制御プログラム生成部（１０５）と
を備えることを特徴とする。
【００１１】
また、上述した制御プログラム生成装置に対応する本発明の制御プログラム生成方法は次の構成を採用した。すなわち、
複数のアクチュエータ（１０〜２０）を備えた自動製造機械（１）の制御プログラムをコンピュータに生成させる制御プログラム生成方法であって、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、前記自動製造機械の動作が、前記アクチュエータが指定された動作量で該アクチュエータの自由度方向に動作する複数の基本動作に分解されると共に、前記基本動作が、前記複数の部分期間の中から前記基本動作毎に選択された何れか１つの前記部分期間に割り当てられることによって前記自動製造機械の動作が記述された動作チャート（２００）を読み込む動作チャート読込工程（ＳＴＥＰ１）と、
前記動作チャートを解析することによって、前記動作チャートに含まれる複数の前記基本動作と、複数の前記基本動作が割り当てられた前記部分期間とを抽出する動作チャート解析工程（ＳＴＥＰ２）と、
前記基本動作と、前記基本動作を実現するためのプログラム要素とが対応付けて記憶された対応関係を参照することによって、前記動作チャートに記載された前記基本動作を前記プログラム要素に変換すると共に、前記プログラム要素を前記部分期間の順番に従って結合することによって、前記自動製造機械を動作させる前記制御プログラムを生成する制御プログラム生成工程（ＳＴＥＰ３）と
を備えることを特徴とする。
【００１２】
かかる本発明の制御プログラム生成装置および制御プログラム生成方法では、自動製造機械に搭載されている複数のアクチュエータの基本動作と、基本動作を実現するためのプログラム要素とが対応付けて予め記憶されている。また、自動製造機械の動作が、次のような動作チャートによって予め記述されている。すなわち、自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、自動製造機械の動作が複数の基本動作に分解されている。そして、それぞれの基本動作毎に、複数の部分期間の中から何れか1つの部分期間が選択されて、その部分期間に基本動作が割り当てられることによって、自動製造機械の動作が記述された動作チャートが予め作成されている。そして、自動製造機械の制御プログラムを生成するに際しては、自動製造機械の動作が記述された動作チャートを読み込んで、動作チャートに記載された基本動作をプログラム要素に変換すると共に、それらのプログラム要素を、部分期間の順番に従って結合することによって、制御プログラムを生成する。
【００１３】
アクチュエータの基本動作は単純な動作であるため、アクチュエータに基本動作を行わせるためのプログラム要素を予め作成しておくことができる。また、機械設計技術者は自動製造機械を設計する際に、アクチュエータの基本動作を組み合わせることによって、自動製造機械の動作を実現しているから、自動製造機械を設計した機械設計技術者や、自動製造機械の構造について十分な知識を有する技術者であれば、自動製造機械の動作を記述した動作チャートを容易に作成することができる。従って、動作チャートを読み込んで、動作チャート中の基本動作をプログラム要素に変換し、動作チャートに従ってプログラム要素を結合してやれば、自動製造機械の動作を制御する制御プログラムを自動で生成することが可能となる。
【００１４】
また、上述した本発明の制御プログラム生成装置においては、次のような動作チャートを用いて、自動製造機械の動作を記述するようにしても良い。すなわち、動作チャートを、複数の部分期間が横方向または縦方向の何れか一方に並んで配置され、更に、横方向または縦方向の何れか他方には、複数のアクチュエータが並んで割り当てられた表形式の動作チャートとする。そして、表形式の動作チャート上で、対応する座標位置に基本動作を記入することによって、自動製造機械の動作を記述するようにしても良い。
【００１５】
こうすれば、基本動作させるアクチュエータを動作チャート上の座標位置で特定することができるので、基本動作をアクチュエータに固有の動作とする必要が無い。このため、同じ基本動作を異なるアクチュエータに割り当てられるので、プログラム要素の種類を減らすことができる。また、動作チャート中に、基本動作が割り当てられていない部分期間が存在することや、基本動作が割り当てられていないアクチュエータが存在することを、容易に認識することができるので、動作チャートに記入ミスがあった場合でも、そのことに気づいて修正することで、適切な制御プログラムを生成することが可能となる。
【００１６】
また、上述した本発明の制御プログラム生成装置においては、自動製造機械の動作を記述する動作チャートに、タイマによる計時動作または計数器による計数動作の少なくとも一方を、基準動作に準じた動作として記述しても良い。
【００１７】
こうすれば、例えば、一定時間が経過するまで動作の開始を遅らせたり、所定のボタンが押された回数が所定回数に達するまで動作の開始を遅らせたりする動作を、動作チャートに記述することが可能となる。
【００１８】
また、上述した本発明の制御プログラム生成装置においては、自動製造機械の動作を記述する動作チャートに、スイッチの状態を監視することによってスイッチが切り換わったことを検知するスイッチ検知動作を、基準動作に準じた動作として記述しても良い。
【００１９】
こうすれば、例えば、部品が通過したことを確認できていなければアクチュエータを動作させないような動作を、動作チャートに記述することが可能となる。
【００２０】
また、上述した本発明の制御プログラム生成装置においては、自動製造機械の動作を記述する動作チャートに、スピーカーによる音声出力動作またはライトによる発光動作の少なくとも一方を、基準動作に準じた動作として記述しても良い。
【００２１】
こうすれば、例えば、スピーカーから効果音などの音声を出力した後にアクチュエータを動作させたり、ライトを点灯あるいは点滅してからアクチュエータを動作させたりする動作を、動作チャートに記述することが可能となる。
【００２２】
また、上述した本発明の制御プログラム生成装置においては、自動製造機械の動作を記述する動作チャートに、ヒーターによる加熱動作を、基準動作に準じた動作として記述しても良い。
【００２３】
こうすれば、例えば、金属材料に熱処理を行う自動製造機械の動作や、食材を加熱調理する動作を、動作チャートに記述することが可能となる。
【００２４】
また、前述した本発明の制御プログラム生成方法は、コンピュータを用いて制御プログラム生成方法を実現するためのプログラムとして把握することも可能である。すなわち、本発明のプログラムは、
複数のアクチュエータ（１０〜２０）を備えた自動製造機械（１）の制御プログラムを生成する方法を、コンピュータを用いて実現するプログラムであって、
前記自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、前記自動製造機械の動作が、前記アクチュエータが指定された動作量で該アクチュエータの自由度方向に動作する複数の基本動作に分解されると共に、前記基本動作が、前記複数の部分期間の中から前記基本動作毎に選択された何れか１つの前記部分期間に割り当てられることによって前記自動製造機械の動作が記述された動作チャート（２００）を読み込む動作チャート読込機能（ＳＴＥＰ１）と、
前記動作チャートを解析することによって、前記動作チャートに含まれる複数の前記基本動作と、複数の前記基本動作が割り当てられた前記部分期間とを抽出する動作チャート解析機能（ＳＴＥＰ２）と、
前記基本動作と、前記基本動作を実現するためのプログラム要素とが対応付けて記憶された対応関係を参照することによって、前記動作チャートに記載された前記基本動作を前記プログラム要素に変換すると共に、前記プログラム要素を前記部分期間の順番に従って結合することによって、前記自動製造機械を動作させる前記制御プログラムを生成する制御プログラム生成機能（ＳＴＥＰ３）と
を、コンピュータを用いて実現することを特徴とする。
【００２５】
このようなプログラムをコンピュータに読み込ませて実行させれば、自動製造機械の動作を制御する制御プログラムを動作チャートから自動で生成することが可能となる。
【図面の簡単な説明】
【００２６】
【図１】本実施例の自動製造機械制御装置１００によって制御される自動製造機械１の外観形状を示した説明図である。
【図２】自動製造機械制御装置１００が、自動製造機械１に搭載された各種のアクチュエータ１０〜２０の動作を制御する様子を概念的に示したブロック図である。
【図３】新たな自動製造機械１を開発するための大まかな工程を概念的に示した説明図である。
【図４】本実施例の自動製造機械制御装置１００が自動製造機械１を動作チャート（ＹＯＧＯチャート）から自動製造機械１の制御プログラムを自動で生成する基本原理についての説明図である。
【図５】本実施例の自動製造機械制御装置１００が読み込む自動製造機械１の動作チャート（ＹＯＧＯチャート）の一部を例示した説明図である。
【図６】繰り返し動作や条件分岐動作を有する動作チャート（ＹＯＧＯチャート）を例示した説明図である。
【図７】動作チャート（ＹＯＧＯチャート）上で基本動作と同様に取り扱うことが可能な動作を例示した説明図である。
【図８】本実施例の自動製造機械制御装置１００が備える機能を示した説明図である。
【図９】本実施例の基本動作記憶部１０２に記憶されている対応関係を例示した説明図である。
【図１０】本実施例の自動製造機械制御装置１００が動作チャート（ＹＯＧＯチャート）から制御プログラムを生成するために実行する制御プログラム生成処理のフローチャートである。
【図１１】制御プログラム生成処理の中で実行されるＹＯＧＯチャート解析処理のフローチャートである。
【図１２】ＹＯＧＯチャート解析処理によって生成される中間データを例示した説明図である。
【図１３】中間データを変換することによって生成された制御プログラムを例示した説明図である。
【図１４】本実施例の自動製造機械制御装置１００が制御プログラムデータに基づいて各アクチュエータの動作を制御する動作制御処理のフローチャートである。
【図１５】制御プログラム生成部１０５と制御実行部１０６とが異なる記憶部を参照する変形例の自動製造機械制御装置１００についての説明図である。
【図１６】自動製造機械制御装置１００がＹＯＧＯチャート処理装置１００ａと制御実行装置１００ｂとによって形成された変形例についての説明図である。
【発明を実施するための形態】
【００２７】
Ａ．装置構成  ：
図１は、本実施例の自動製造機械１の大まかな外観形状を示した説明図である。本実施例の自動製造機械１は、長尺のパイプ材に対して自動で曲げ加工を施すことによって、所望の形状に加工する工作機械（いわゆるパイプベンダ）である。もちろん、本実施例の自動製造機械１は、複数のアクチュエータを搭載して、対象物に対して把持、搬送、加工、加熱などの複数の動作を自動で実行することができれば、パイプベンダ以外の製造機械であっても良い。例えば、食料品を自動で製造するための製造機械であっても良い。あるいは、複数の関節を有するアームロボットと搬送装置とを組み合わせた製造システムであっても良い。
【００２８】
図１に示したように、本実施例の自動製造機械１は、大まかには横長の直方体形状となっており、直方体の上面側には長手方向に２本のレール２が架設され、レール２上の一端側（図１では左側）には、加工対象の図示しないパイプ材を把持して搬送する搬送ユニット３が搭載されている。また、搬送ユニット３が搭載されている側に対して反対側には、図示しないパイプ材に曲げなどの加工を施す加工ユニット４が搭載されている。搬送ユニット３には、円柱形状の把持軸３ａが突設されており、把持軸３ａの先端には、図示しないパイプ材を把持するチャック３ｂが取り付けられている。このため、チャック３ｂでパイプ材を把持した状態で搬送ユニット３をレール２上で移動させることによって、パイプ材を加工ユニット４に供給し、そのパイプ材に対して加工ユニット４で曲げ加工などを施すことが可能となっている。
【００２９】
本実施例の自動製造機械１は、搬送ユニット３の移動量によってパイプ材の送り量を制御することができるので、パイプ材に曲げ加工などを施す位置を自由に制御することができる。また、チャック３ｂが取り付けられた把持軸３ａを軸回りに回転（いわゆる捻り動作）させることによって、所望の方向にパイプ材を曲げることも可能となっている。こうしたことを実現するために、搬送ユニット３の内部には、チャック３ｂを開閉させるためのアクチュエータ１０や、把持軸３ａを軸回りに回転させるためのアクチュエータ１１や、把持軸３ａを軸方向に進退動させるためのアクチュエータ１２や、レール２上で搬送ユニット３を進退動させるためのアクチュエータ１３などが搭載されている。本実施例の自動製造機械１では、これらのアクチュエータ１０〜１３は何れも交流電源で動作するサーボモータが用いられているが、アクチュエータに要求される性能に応じて、他の駆動方式のアクチュエータ（例えば、油圧シリンダや、ソレノイドや、ステッピングモータなど）を採用することができる。尚、搬送ユニット３には、把持軸３ａの回転位置や、搬送ユニット３の移動位置を検出するためのエンコーダや、リミットスイッチなどのセンサー類も搭載されているが、図面が煩雑となることを回避する目的で、図１では図示が省略されている。
【００３０】
加工ユニット４の内部には、パイプ材を曲げるためのアクチュエータ１７や、パイプ材を曲げる際に、パイプ材に力を加える位置を移動させるためのアクチュエータ１８や、加工ユニット４全体を上下方向に移動させるためのアクチュエータ１９や、パイプ材に対してフランジと呼ばれる平端面を形成したり、バルジと呼ばれる環状の凸部を形成したりするためのアクチュエータ２０などが搭載されている。尚、加工ユニット４にも、エンコーダや、接点スイッチなどのスイッチ・センサー類が搭載されているが、図面が煩雑となることを避けるため、これらについては図示が省略されている。
【００３１】
また、加工ユニット４の内部には、上述した各種のアクチュエータ１０〜１３、１７〜２０を駆動するための複数のドライバ回路（図示は省略）が搭載されている。ここで、ドライバ回路とは、次のような機能を有する電気部品である。アクチュエータ１０〜１３、１７〜２０に所望の動作をさせるためには、アクチュエータ１０〜１３、１７〜２０に適切な波形の駆動電流を供給する必要がある。しかし、アクチュエータ１０〜１３、１７〜２０に供給するべき駆動電流は、アクチュエータ１０〜１３、１７〜２０の駆動方式によって異なっており、更に同じ方式のアクチュエータであっても、駆動電流の電流値はアクチュエータによって異なっている。そこで、アクチュエータ１０〜１３、１７〜２０にはドライバ回路と呼ばれる専用の電気部品が用意されており、ドライバ回路に対して駆動量を指定すると、ドライバ回路がアクチュエータ１０〜１３、１７〜２０に対して適切な駆動電流を出力し、その結果、アクチュエータ１０〜１３、１７〜２０が駆動されるようになっている。
【００３２】
更に、図１に示されるように、２本のレール２の下方の空間にも各種の機械部品が搭載されているが、この空間は、加工ユニット４内に搭載された複数のドライバ回路（図示は省略）から、搬送ユニット３内の各種のアクチュエータ１０〜１３に向かって駆動電流を供給する電気ケーブル（図示は省略）や、搬送ユニット３に搭載された各種のスイッチ・センサー類からの信号を、加工ユニット４に伝達するための信号ケーブル（図示は省略）などが配線される空間となっている。レール２上で搬送ユニット３が進退動する動きに伴って、これらの電気ケーブルや信号ケーブルが空間内で移動すると、互いに絡まったり、何かに引っ掛かったりする虞が生じる。そこで、こうした事態が発生することを避けるため、レール２の下方の空間には、電気ケーブルや信号ケーブルに不要な遊びがある場合はケーブルを手繰ることによって不要な遊びを解消し、電気ケーブルや信号ケーブルが強い力で引っ張られる場合は、手繰ったケーブルを送り出すことによって、ケーブルに適度な遊びを持たせるためのアクチュエータ１４〜１６も搭載されている。本実施例の自動製造機械１では、アクチュエータ１４〜１６としてエアシリンダが採用されており、これらのエアシリンダの動作も、図示しないドライバ回路によって制御されている。
【００３３】
以上に説明したように、自動製造機械１には多数のアクチュエータ１０〜２０が搭載されている。そして、加工しようとする対象物（ここではパイプ材）を目的とする形状に自動で加工するためには、これらのアクチュエータ１０〜２０を適切なタイミングで、適切に動作させる必要がある。これらのアクチュエータ１０〜２０を駆動するのは、それぞれのアクチュエータ１０〜２０のドライバ回路であるが、ドライバ回路がそれぞれのアクチュエータ１０〜２０を駆動する動作は、後述する自動製造機械制御装置１００が、予め読み込んでおいた制御プログラムに従って制御している。
【００３４】
図２は、本実施例の自動製造機械制御装置１００が、自動製造機械１に搭載されたアクチュエータ１０〜２０の動作を制御する様子を概念的に示したブロック図である。尚、図２においても、制御に必要なスイッチ・センサー類については図示が省略されている。図示されるように、自動製造機械制御装置１００とアクチュエータ１０との間には、アクチュエータ１０の駆動用のドライバ回路１０ｄが設けられており、自動製造機械制御装置１００は、直接的にはドライバ回路１０ｄを制御している。アクチュエータ１１〜２０についても同様に、自動製造機械制御装置１００とアクチュエータ１１〜２０との間には、アクチュエータ１１〜２０を駆動するためのドライバ回路１１ｄ〜２０ｄが設けられており、自動製造機械制御装置１００は、ドライバ回路１１ｄ〜２０ｄを介して、間接的にアクチュエータ１０〜２０を制御している。
【００３５】
また、図１を用いて前述したように、本実施例の自動製造機械１では、アクチュエータ１０〜１３、１７〜２０にサーボモータが採用されており、アクチュエータ１４〜１６にはエアシリンダが採用されている。ここで、サーボモータとは、サーボ制御されたモータのことであり、代表的には、位置（あるいは角度や、速度など）が目標値となるようにモータに流れる電流値をフィードバック制御するモータである。また、エアシリンダとは、空気圧を利用して可動部を直線移動させるアクチュエータであり、圧縮空気の供給源に接続されたポートを開閉することによって動作するようになっている。また、ポートの開閉にはシーケンス制御が用いられている。
【００３６】
このように本実施例の自動製造機械制御装置１００には、サーボ制御されるアクチュエータ１０〜１３、１７〜２０と、シーケンス制御されるアクチュエータ１４〜１６とが接続されている。図中で、自動製造機械制御装置１００とアクチュエータ１０〜１３、１７〜２０とが実線で接続されているのは、これらのアクチュエータ１０〜１３、１７〜２０がサーボ制御されていることを表している。また、自動製造機械制御装置１００とアクチュエータ１４〜１６とが破線で接続されているのは、これらのアクチュエータ１４〜１６がシーケンス制御されることを表している。もちろん、サーボ制御やシーケンス制御以外の方式で制御されるアクチュエータを接続することも可能である。
【００３７】
自動製造機械制御装置１００は制御プログラムに従って、ドライバ回路１０ｄ〜２０ｄを介してアクチュエータ１０〜２０を制御しており、その制御プログラムは、予め作成して自動製造機械制御装置１００に読み込ませておく必要がある。ここで、図２に示したように多数のアクチュエータ１０〜２０を、適切なタイミングで適切に動作させるための制御プログラムを作成するのは容易なことではない。特に、サーボ制御やシーケンス制御のように、異なる制御方式のアクチュエータが混在している場合は、制御プログラムの作成に長い期間が必要となる。このため、新たな自動製造機械１の開発期間の中で、半分以上の期間が制御プログラムの作成に費やされてしまうのが現状となっている。
【００３８】
Ｂ．制御プログラムの作成方法  ：
Ｂ−１．概要  ：
図３は、新たな自動製造機械１を開発するための大まかな工程を概念的に示した説明図である。図３（ａ）には、従来から行われてきた開発工程が示されている。また、図３（ｂ）には、本願の発明者が提案する新たな開発工程が示されている。
【００３９】
従来の開発工程では、図３（ａ）に示すように、先ず初めに機械設計技術者が、自動製造機械１に要求される各種の機能を把握した上で、それらの機能を実現するための機構が組み込まれた自動製造機械１の図面を作成する。図面を作成するに際して機械設計技術者は、どのような可動部分が必要なのか、それら可動部分がどのような動作をしなければならないのか、その動作をさせるためには、どれくらいのトルクや可動量や精度を有するアクチュエータが、何処に、どれだけ必要なのかといった内容を、一つ一つ検討して決定して行くことになる。そして、実際に搭載するアクチュエータを決定して、アクチュエータの搭載性や整備性なども考慮した上で、最終的に図面を完成させる。
【００４０】
こうして自動製造機械１の機械設計が完了したら、今度は、その自動製造機械１を制御するための制御プログラムの作成に移行する。制御プログラムの作成には、機械設計とは異なる専門技術が必要となるため、専門技術を有する技術者（すなわちプログラマ）が作成しなければならない。そこで、機械技術者は機械設計が終了すると、自らが考えた自動製造機械１の動作を表現するフローチャートを作成した上で、プログラマと打ち合わせをして自動製造機械１の動作を説明する。ここまでが、機械設計技術者による作業となる。
【００４１】
一方、機械設計技術者と打ち合わせたプログラマは、機械設計技術者が作成したフローチャートや、必要に応じて図面や、その他の資料を熟読することによって自動製造機械１の動作を理解した上で、自動製造機械１に搭載された各種のアクチュエータの動作を制御するための制御プログラムの作成を開始する。プログラマは、人間が判読可能な高級プログラム言語を用いて制御プログラムを作成することが普通であるが、コンピュータは高級プログラム言語のままでは制御プログラムを実行することはできない。そこで、プログラマは、制御プログラムが完成したら、高級プログラム言語で記述された制御プログラムを、コンピュータが実行可能な機械語の制御プログラムに変換することによって、最終的に制御プログラムを完成させる。尚、高級プログラム言語の制御プログラムを機械語の制御プログラムに変換する作業は、コンパイルと呼ばれており、この作業は、コンパイラと呼ばれる専用プログラムを用いることによって短時間で終了する。
【００４２】
図３（ａ）に例示されるように、従来から行われてきた開発工程では、機械設計に要する期間の１．５倍〜２．５倍程度の期間が、制御プログラムの作成に費やされるのが通常である。しかも、機械設計と制御プログラムの作成とは、原則的にはオーバーラップさせて進行させることが困難であるため、自動製造機械１の開発期間が長くなってしまう。加えて、機械設計技術者およびプログラマという異なる技術を有する専門家を確保する必要があり、このことも、新たな自動製造機械１を開発する際の大きな障害となっている。
【００４３】
一方、図３（ｂ）には、本願の発明者が提案する新たな方法を用いて、自動製造機械１を開発する工程が示されている。新たな方法を用いた場合でも、機械設計自体は、従来の方法と同様である。すなわち、機械設計技術者が、自動製造機械１に要求される各種の機能を把握した上で、それらの機能を実現するための機構が組み込まれた自動製造機械１の図面を作成する。その際には、機能の実現に必要な可動部分や、可動部分の動作内容や、可動部分を動かすためのアクチュエータの性能などを検討して、アクチュエータを決定した上で、アクチュエータの搭載性や整備性なども考慮して最終的に図面を完成させる。
【００４４】
図面が完成すると、新たな開発工程では、機械設計技術者は、フローチャートの代わりに動作チャートを作成する（図３（ｂ）参照）。この動作チャートについては、後ほど詳しく説明するが、機械設計技術者が機械設計する際に考えた各アクチュエータの動作を、チャートの形式で記述したものである。この動作チャートは、本願の発明者が独自に発案したもので、世の中には存在しないチャートであるため、「ＹＯＧＯチャート」と名付けることにした。そこで以下では、この新たな動作チャートのことを、ＹＯＧＯチャートと表記する。従って、本実施例のＹＯＧＯチャートは、本発明における「動作チャート」に対応する。
【００４５】
後述するようにＹＯＧＯチャートは、機械設計する際に、機械設計技術者が考えた各アクチュエータの動作を、考えた通りに書き表したものに過ぎない。このため、機械設計した機械設計技術者であれば、フローチャートを作成する半分程度の期間で作成することができる（図３（ｂ）参照）。加えて、ＹＯＧＯチャートは、専用のコンパイラに掛けることによって、コンピュータのＣＰＵが実行可能な制御プログラムに変換することができる。ＹＯＧＯチャートを制御プログラムに変換可能な理由についても後述する。このように、自動製造機械１の動作をＹＯＧＯチャートに記述するようにすれば、ＹＯＧＯチャートから機械語の制御プログラムを生成することができるので、図３に示したように、従来の方法に比べて、新たな自動製造機械１の開発期間を、少なくとも半分以下（代表的には１／３程度）に短縮することができる。加えて、ＹＯＧＯチャートは機械設計技術者が簡単に作成することができ、プログラマを確保しておく必要もない。このため、新たな自動製造機械１を開発する際に大きな障害となっていた様々な事柄を、ほとんど完全に解消することが可能となる。加えて、自動製造機械１の動作を変更する場合や、自動製造機械１に新たなアクチュエータを追加する場合でも、ＹＯＧＯチャートを書き直して専用のコンパイラに掛けてやれば、直ちに制御プログラムを生成することが可能となる。以下では、こうしたことが可能となる理由について説明する。
【００４６】
Ｂ−２．ＹＯＧＯチャートから制御プログラムを自動で生成する原理  ：
図４は、動作チャート（ＹＯＧＯチャート）から自動製造機械１の制御プログラムを自動で生成する原理についての説明図である。図４（ａ）には、各種改良を施す前の原始的なＹＯＧＯチャートが示されている。後述する本実施例のＹＯＧＯチャートは、図４（ａ）に示した原始的なＹＯＧＯチャートを発展させて改良したものとなっているが、制御プログラムを自動で生成する原理は原始的なＹＯＧＯチャートと同じである。そこで、理解を容易とするために、図４（ａ）に示した原始的なＹＯＧＯチャートを用いて、ＹＯＧＯチャートから制御プログラムを自動で生成する原理について説明する。また、説明が複雑化することを避けるため、自動製造機械１に搭載されているアクチュエータは、２つのモータＡ，Ｂ、および２つのシリンダＡ，Ｂのみであるとする。
【００４７】
図４（ａ）に示したように、ＹＯＧＯチャートでは、これらのアクチュエータ（ここでは、モータＡ，Ｂ、およびシリンダＡ，Ｂ）の基本的な動作を組み合わせることによって、自動製造機械１の動作を表現する。ここで、アクチュエータの基本的な動作とは、アクチュエータが有する自由度方向への動作（以下、基本動作）のことである。例えば、モータのような回転するアクチュエータであれば、回転動作が基本動作となり、シリンダのような進退動するアクチュエータであれば、進退動する動作が基本動作となる。また、モータによってボールねじを回転させることによって、ボールねじに噛み合う部材を進退動させるようなアクチュエータの場合は、モータの回転動作、あるいは部材が進退動する動作の何れかが基本動作となる。
【００４８】
また、ＹＯＧＯチャートでは、自動製造機械１が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、個々のアクチュエータの基本動作は、これらの部分期間の何れかに割り当てられている。図４（ａ）に示した例では、自動製造機械１の動作期間が５つの部分期間１〜５に分割されており、部分期間１には、シリンダＡが動作量（ａ）で進退動する動作が割り当てられている。また、部分期間２には、モータＡが動作量（ｂ）で回転する動作が割り当てられている。部分期間には複数の動作を割り当てることもできる。すなわち、部分期間３には、モータＢが動作量（ｃ）で回転する動作と、シリンダＢが動作量（ｄ）で進退動する動作の２つの動作が割り当てられており、部分期間４には、モータＡが動作量（−ｂ）で回転する動作と、モータＢが動作量（−ｃ）で回転する動作と、シリンダＢが動作量（−ｄ）で進退動する動作の３つの動作が割り当てられている。そして、最後の部分期間５には、シリンダＡが動作量（−ａ）で進退動する動作が割り当てられている。
【００４９】
このように、部分期間にアクチュエータの基本動作を割り当てることによって、自動製造機械１が実行する次のような動作を記述することができる。先ず、シリンダＡを動作量（ａ）だけ進退動させて、シリンダＡの動作が終了したら、モータＡを動作量（ｂ）だけ回転させる。そして、モータＡの動作が終了したら、モータＢを動作量（ｃ）だけ回転させると共に、シリンダＢを動作量（ｄ）だけ進退動させる。モータＢおよびシリンダＢの動作が終了したら、モータＡおよびモータＢをそれぞれ動作量（−ａ）および動作量（−ｃ）だけ回転させると共に、シリンダＢを動作量（−ｄ）だけ進退動させる。そして、モータＡ、モータＢ、およびシリンダＢの全ての動作が終了したら、最後にシリンダＡを動作量（−ａ）だけ進退動させて、全ての動作を終了する。このように、自動製造機械１に搭載されているアクチュエータの基本動作を何れかの部分期間に割り当ててやれば、自動製造機械１の動作を記述することが可能となる。
【００５０】
尚、以上の説明から明らかなように、部分期間は、割り当てられたアクチュエータが動作する期間を示しており、時間の長さを示しているわけではない。例えば、部分期間１の時間の長さはシリンダＡが動作に要する時間となり、部分期間２の時間の長さはモータＡが動作に要する時間となり、部分期間３の時間の長さは、モータＢが動作に要する時間、およびシリンダＢが動作に要する時間の長い方の時間となる。従って、それぞれの部分期間の時間の長さは、互いに異なっていることが通常である。
【００５１】
また、部分期間に割り当てられるアクチュエータの基本動作は、例えばモータを一定量だけ回転させたり、あるいはシリンダを一定量だけ進退動させたりするといった単純な動作である。従って、アクチュエータに基本動作させるための小さなプログラム（以下、ブログラム要素と呼ぶ）を予め作成しておくことができる。ここでは自動製造機械１に搭載されているアクチュエータは、シリンダＡ，Ｂ、およびモータＡ，Ｂの４つであるとしているから、図４（ｂ）に示すように、モータＡを動作させるためのプログラム要素ｐｒｏｇ１と、モータＢを動作させるためのプログラム要素ｐｒｏｇ２と、シリンダＡを動作させるためのプログラム要素ｐｒｏｇ３と、シリンダＢを動作させるためのプログラム要素ｐｒｏｇ４とを予め作成しておくことができる。
【００５２】
そこで、これらのプログラム要素を、図４（ａ）に示した原始的なＹＯＧＯチャートに記述された通りに連結してやれば、自動製造機械１を動作させるための制御プログラムを自動で生成することが可能となる。すなわち、図４（ｃ）に示したように、初めにプログラム要素ｐｒｏｇ３が起動し、プログラム要素ｐｒｏｇ３が終了したらプログラム要素ｐｒｏｇ１が起動し、プログラム要素ｐｒｏｇ１が終了したら、プログラム要素ｐｒｏｇ２およびプログラム要素ｐｒｏｇ４が起動する。プログラム要素ｐｒｏｇ３、プログラム要素ｐｒｏｇ１、プログラム要素ｐｒｏｇ２、プログラム要素ｐｒｏｇ４の動作量は、ＹＯＧＯチャート上での指定に従って、それぞれ（ａ）、（ｂ）、（ｃ）、（ｄ）を使用する。更に、プログラム要素ｐｒｏｇ２およびプログラム要素ｐｒｏｇ４が何れも終了したら、今度は、プログラム要素ｐｒｏｇ１と、プログラム要素ｐｒｏｇ２と、プログラム要素ｐｒｏｇ４とを起動する。この時の動作量は、ＹＯＧＯチャート上での指定に従って、それぞれ（−ｂ）、（−ｃ）、（−ｄ）を使用する。これらのプログラム要素ｐｒｏｇ１、ｐｒｏｇ２、ｐｒｏｇ４が何れも終了したら、最後にプログラム要素ｐｒｏｇ３を起動する。この時の動作量は、ＹＯＧＯチャート上での指定に従って（−ａ）を使用する。そして、プログラム要素ｐｒｏｇ３が終了したら、図４（ａ）のＹＯＧＯチャートに記述した自動製造機械１の動作が終了したことになる。
【００５３】
以上に説明したように、自動製造機械１の動作を、図４（ａ）に示したＹＯＧＯチャートの態様で記述しておけば、図４（ｃ）に示した制御プログラムを生成して、自動製造機械１を動作させることができる。もっとも、自動製造機械１が意図した通りに動作するためには、ＹＯＧＯチャートが正しく作成されている必要がある。以下に説明する本実施例のＹＯＧＯチャートは、こうした観点から、図４（ａ）に例示した原始的なＹＯＧＯチャートに対して様々な改良を加えた結果として得られたものである。
【００５４】
Ｂ−３．ＹＯＧＯチャート２００  ：
図５は、ＹＯＧＯチャート２００の概要を説明するための説明図である。尚、ＹＯＧＯチャート２００の全体を表示するために縮尺すると、潰れて判読不能となってしまうので、図５ではＹＯＧＯチャート２００の一部分（左上隅の部分）が表示されている。図５に示されるように、ＹＯＧＯチャート２００は、複数本の横線と複数本の縦線とが交差した大きな表のような形状となっている。以下では、交差する複数本の線の内、横線については「仕切線」２０１と称し、縦線については「トリガー線」２０２と称することにする。
【００５５】
トリガー線２０２には、１番から始まる通し番号が付けられている。図５に示した例では、ＹＯＧＯチャート２００の上端の欄内に、その下のトリガー線２０２の通し番号が記載されている。また、互いに隣接するトリガー線２０２の間の領域は、図４を用いて前述した部分期間となっており、部分期間にも１番から始まる通し番号（以下、部分期間番号と称する）が付けられている。尚、図５に例示したＹＯＧＯチャートでは、トリガー線２０２が縦方向に引かれており、従って、トリガー線２０２とトリガー線２０２とに挟まれた部分期間は横方向に並んでいる。しかし、トリガー線２０２は横方向に引いても良く、この場合は、複数の部分期間が縦方向に並ぶことになる。
【００５６】
また、本実施例のＹＯＧＯチャートは、複数の仕切線２０１によって複数の横長の領域に分割されており、これらの横長の領域には１番から始まる通し番号（以下、アクチュエータ番号と称する）が付けられている。自動製造機械１に搭載されたアクチュエータは、何れかの領域に割り当てられている。図５に示した例では、アクチュエータ番号が１番の領域には、アクチュエータ１０（図２参照）が割り当てられており、アクチュエータ番号が２番の領域にはアクチュエータ１１（図２参照）が割り当てられ、アクチュエータ番号が３番の領域にはアクチュエータ１２（図２参照）が、アクチュエータ番号が４番の領域にはアクチュエータ１３（図２参照）が割り当てられている。本実施例の自動製造機械１にはアクチュエータ１０〜２０の１１個のアクチュエータが搭載されているから、これらすべてのアクチュエータについて、このように横長の領域が１つずつ割り当てられることになる。
【００５７】
そして、アクチュエータ１０〜２０の基本動作は、そのアクチュエータ１０〜２０が割り当てられた領域上に記載されるようになっている。例えば、アクチュエータ１０を部分期間４で基本動作させるのであれば、ＹＯＧＯチャート上で、アクチュエータ番号が１番、部分期間番号が４番で特定されるマス目状の座標位置に、アクチュエータ１０にさせたい基本動作を記載する。また、部分期間４と部分期間８とでアクチュエータ１０に基本動作させるのであれば、アクチュエータ番号が１番、部分期間番号が４番のマス目状の座標位置と、部分期間番号が８番の座標位置とに、アクチュエータ１０にさせたい基本動作を記載することになる。このように、アクチュエータ１０の基本動作は、ＹＯＧＯチャート上でアクチュエータ番号が１番の横長の領域上に記載され、アクチュエータ１１の基本動作は、アクチュエータ番号が２番の横長の領域上に記載されるというように、アクチュエータ１０〜２０の基本動作は、ＹＯＧＯチャート上でそのアクチュエータ１０〜２０が割り当てられた領域上に記載されるようになっている。本実施例のＹＯＧＯチャートが、このようにして基本動作を記載しているのは、次のような理由による。
【００５８】
初めに、図４（ａ）に例示した原始的なＹＯＧＯチャートについて説明すると、原始的なＹＯＧＯチャートでは、複数のアクチュエータの動作が混在して記述されており、例えば、部分期間１で動作したシリンダＡが、次にどの動作期間で動作するのかを、直ちに認識することが難しい。このため、それぞれのアクチュエータが動作する様子をイメージすることが難しく、更には、各アクチュエータの動作回数を判読することも難しい。その結果、例えば、元の位置に復帰していないアクチュエータが存在することに気づかなかったり、動作を記述し忘れているアクチュエータが存在することに気づかなかったりする虞がある。
【００５９】
これに対して、本実施例のＹＯＧＯチャートは、図５に示されるように、アクチュエータ毎に動作が記述される領域が分離されているので、どのアクチュエータが、どの部分期間で動作しているのかを視覚によって把握して容易にイメージすることができ、各アクチュエータの動作回数を容易に判読することができる。このため、元の位置に復帰していないアクチュエータが存在していたり、動作を記述し忘れているアクチュエータが存在していたりした場合でも、そのことを容易に認識することができる。その結果、自動製造機械１を意図した通りに動作させるＹＯＧＯチャートを容易に作成することが可能となる。
【００６０】
尚、後述するように、ＹＯＧＯチャート２００には、アクチュエータ以外の機器の動作も記述することが可能であり、それらの機器についても、横長の領域が１つずつ割り当てられている。
【００６１】
また、本実施例のＹＯＧＯチャートでは、次のようにして基本動作を記載する。例えば、図５に例示したＹＯＧＯチャートで、最初に開始されるアクチュエータ１３の基本動作について説明すると、この基本動作が記載される位置は、アクチュエータ番号が４番で、部分期間番号が１番のマス目状の座標位置となる。部分期間番号が１番のマス目は、１番のトリガー線２０２と、２番のトリガー線２０２とに挟まれているから、左側に存在する１番のトリガー線２０２から、右側に存在する２番のトリガー線２０２に向かって、アクチュエータの動作を示す動作線２０３を記入する。そして、動作線２０３の左端（従って１番のトリガー線２０２上）には動作の開始を示す始点２０４を記入し、動作線２０３の右端（従って２番のトリガー線２０２上）には動作の終了を示す終点２０５を記入する。図５に示した例では、動作線２０３は太い実線で示されており、始点２０４は白抜きの丸印で示されて、終点２０５は黒い丸印で示されている。
【００６２】
更に、動作線２０３の上には、アクチュエータにさせようとする基本動作の名称（以下、基本動作名２０６）を記入する。図５に示した例では、アクチュエータ番号が４番で、部分期間番号が１番の基本動作には「Ω−ＡＡ」という基本動作名２０６が記入されている。後述するように基本動作名２０６は、アクチュエータに基本動作を行わせるためのコンピュータで実行可能なプログラム要素に対応付けられている。従って、動作線２０３の上に基本動作名２０６を記入することによって、コンピュータが実行可能なプログラム要素を特定することができる。更に、動作線２０３および基本動作名２０６が記入された座標位置のアクチュエータ番号から、プログラム要素を用いて動作させるアクチュエータを特定することができる。そして、座標位置の部分期間番号からは、アクチュエータを動作させる部分期間を特定することができる。
【００６３】
また、基本動作に対しては、回転速度あるいは移動速度や、動作時間などのパラメータを指定することによって、より詳細な動作を指定することができる。図５に示した例では、アクチュエータ番号が４番で、部分期間番号が１番の座標位置に、「Ω−ＡＡ」という基本動作名２０６の下に記載されている「Ａ−１００」という表示は、「Ω−ＡＡ」という基本動作名２０６の基本動作に指定されたパラメータを表している。もちろん、基本動作に対して複数のパラメータを指定することによって、より一層詳細に動作を指定することもできる。例えば、アクチュエータがモータの場合は、回転速度と回転角度とを指定するようにしても良いし、アクチュエータがリニアモータであった場合は、移動速度と移動距離とを指定するようにしても良い。このように複数種類のパラメータが指定される場合を考慮して、パラメータの先頭には、パラメータの種類を表すアルファベットが記載されている。尚、パラメータによって指定する内容は、速度や位置などを表す数値に限らず、例えばモータの加速や減速の程度や、加減速の仕方を表す駆動パターンなどを指定するようにしても良い。
【００６４】
また、アクチュエータが、例えばエアシリンダのように、ストローク限界まで前進あるいは後退させるというような単純な動作のアクチュエータである場合は、プログラム要素によって実現される基本動作は、一定時間が経過するまで単に前進あるいは後退させる動作、若しくは、接点スイッチがＯＮになるまで前進あるいは後退させる動作となる。このような単純な動作であればパラメータは不要なので、動作線２０３の上には、パラメータを伴わない基本動作名２０６が記入されることになる。
【００６５】
図５に例示したＹＯＧＯチャート上で、２番目に動作するアクチュエータ１１の基本動作についても同様にして記載される。以下簡単に説明すると、この基本動作は、アクチュエータ１１が２番目の部分期間で実行する動作であるから、基本動画が記載される位置は、アクチュエータ番号が２番で、部分期間番号が２番の座標位置となる。そこで、左側に存在する２番のトリガー線２０２から、右側に存在する３番のトリガー線２０２まで動作線２０３を引いて、動作線２０３の左端には始点２０４を、動作線２０３の右端には終点２０５を記入する。そして、動作線２０３の上には、アクチュエータ１１に行わせたい基本動作を特定するために基本動作名２０６（ここでは、Ω−ＡＢ）を記入し、その下の位置には、パラメータ（ここでは、Ａ−１０）を記入する。この結果、２番目の部分期間では、アクチュエータ１１に対して、「Ａ−１０」というパラメータを指定して「Ω−ＡＢ」という基本動作を行わせるという内容が記載されることになる。
【００６６】
以上が、ＹＯＧＯチャート２００を用いて自動製造機械１の動作を記述する基本的な方法であるが、動作の記述をより一層容易にする目的で、ＹＯＧＯチャート２００には、様々な記述方法が用意されている。
【００６７】
例えば、図６に示したＹＯＧＯチャートは、上述した図５のＹＯＧＯチャートに対して、５番のトリガー線２０２および７番のトリガー線２０２が、破線のトリガー線２０２に変更されている。これは、５番〜７番のトリガー線２０２に挟まれた部分期間（すなわち、部分期間番号が５番および６番の部分期間）に割り当てられた動作を繰り返して行うことを表している。これら２本のトリガー線２０２の内、初めに登場する５番のトリガー線２０２の下方には、破線の矩形２０８の中に繰返条件が記入されている。図６中に示した例では、ＶＣという変数の値が０になるまで、５番のトリガー線２０２から７番のトリガー線２０２までの部分期間に割り当てられた動作が繰り返して実行される。そして、５番のトリガー線２０２の下方に記入された繰返条件（ここでは、変数ＶＣ＝０）が成立すると、９番のトリガー線２０２上に始点２０４が記入された動作（すなわち、部分期間番号が９番の部分期間に割り当てられた動作）が開始されることになる。
【００６８】
また、図６に示したＹＯＧＯチャートは、上述した図５のＹＯＧＯチャートに対して、９番のトリガー線２０２および１３番のトリガー線２０２が、一点鎖線のトリガー線２０２に変更されている。これらは条件分岐することを表している。また、９番のトリガー線２０２の下方、および１３番のトリガー線２０２の下方には、それぞれ一点鎖線の矩形２０８が表示されているが、これらは分岐条件を表している。図６に示した例では、９番のトリガー線２０２の下方の矩形２０８の中には「Ａ＞Ｂ」と記入されており、１３番のトリガー線２０２の下方の矩形２０８の中には「ＥＬＳＥ」と記入されているが、これらは、「Ａ＞Ｂ」の条件が成立していれば、９番のトリガー線２０２上に始点２０４が記入された動作（すなわち、部分期間番号が９番の部分期間に割り当てられた動作）を開始し、「Ａ＞Ｂ」の条件が成立していない場合（ＥＬＳＥの場合）は、１３番のトリガー線２０２上に始点２０４が記入された動作（すなわち、部分期間番号が１３番の部分期間に割り当てられた動作）を開始することを表している。
【００６９】
また、自動製造機械１では、アクチュエータの動作の開始前に一定時間の間隔を空けたり、例えば一定個数の部品が供給されたことを確認してからアクチュエータを動作させたりする場合がある。更には、アクチュエータの動作の開始前に音声（効果音を含む）を出力して周囲の作業者に注意を促したり、一定時間に亘ってライトを点灯させたり点滅させたりすることがある。このように、タイマを用いて一定時間を計時する動作や、計数器を用いて一定数を計数する動作や、スピーカーから音声を出力する動作や、ライトを発光させて点灯あるいは点滅させる動作は、アクチュエータによる動作ではないが、それに準じた動作として基本動作と同様に取り扱うことができる。ＹＯＧＯチャート２００には、アクチュエータによる動作ではないが基本動作と同様に取り扱うことが可能な動作も記述することができる。
【００７０】
図７は、ＹＯＧＯチャート２００上で、基本動作と同様に取り扱うことが可能な動作を記述する態様を例示した説明図である。図７（ａ）には、所定時間の経過したことを計時する動作（計時動作）が記述されている。ＹＯＧＯチャート２００では、タイマによる計時動作も、左端に始点２０４を有し右端に終点２０５を有する動作線２０３の上に、タイマによる計時を示す基本動作名２０６（ここでは、Ω−ＴＭ１）を記入することによって記述する。タイマで計時する経過時間は、パラメータを用いて指定することができる。
【００７１】
図７（ｂ）には、所定個数（あるいは所定回数）を計数する動作（計数動作）が記述されている。計数器による計数動作も、左端に始点２０４を有し右端に終点２０５を有する動作線２０３の上に、計数器による計数動作を示す基本動作名２０６（ここでは、Ω−ＣＴ１）を記入することによって記述する。計数器で計数する計数値は、パラメータを用いて指定することができる。
【００７２】
図７（ｃ）には、所定時間の間、スイッチの状態を監視して、スイッチが切り換わったことを検知する動作（スイッチ検知動作）が記述されている。ここで、スイッチとは、操作ボタンのようなスイッチでも良いし、近接スイッチでも良いし、フォトカプラのような光学的なスイッチであっても構わない。このようなスイッチ検知動作も、左端に始点２０４を有し右端に終点２０５を有する動作線２０３の上に、スイッチ検知動作を示す基本動作名２０６（ここでは、Ω−ＳＷ１）を記入することによって記述する。スイッチの状態を監視する時間は、パラメータを用いて指定することができる。
【００７３】
図７（ｄ）には、スピーカーから音声を出力する動作（音声出力動作）が記述されている。ＹＯＧＯチャート２００では、スピーカーによる音声出力動作も、左端に始点２０４を有し右端に終点２０５を有する動作線２０３の上に、スピーカーの駆動を示す基本動作名２０６（ここでは、Ω−ＳＰ１）を記入することによって記述する。スピーカーから出力する音声データは、パラメータを用いて指定することができる。
【００７４】
図７（ｅ）には、ライトを発光させる発光動作が記述されている。ライトによる発光動作も、左端に始点２０４を有し右端に終点２０５を有する動作線２０３の上に、ライトの発光動作を示す基本動作名２０６（ここでは、Ω−ＬＬ１）を記入することによって記述する。ライトを発光させる態様（例えば、点灯あるいは点滅させる態様）は、パラメータを用いて指定することができる。
【００７５】
図７（ｆ）には、ヒーターを用いて対象物を加熱したり、食材を加熱調理したりする加熱動作が記述されている。ヒーターによる加熱動作も、左端に始点２０４を有し右端に終点２０５を有する動作線２０３の上に、ヒーターによる加熱動作を示す基本動作名２０６（ここでは、Ω−ＨＴ１）を記入することによって記述する。加熱温度や加熱時間は、パラメータを用いて指定することができる。
【００７６】
以上のように、本実施例のＹＯＧＯチャートでは、アクチュエータ番号と、部分期間番号とによって特定されるマス目状の座標位置に、動作線２０３と、始点２０４と、終点２０５と、基本動作名２０６と、必要な場合はパラメータとを記入することによって基本動作を記載する。そして、自動製造機械１に搭載された全てのアクチュエータ１０〜２０の基本動作を、このようにしてＹＯＧＯチャート上に記載することによって、自動製造機械１の動作を記述する。そして、自動製造機械制御装置１００は、このようなＹＯＧＯチャートから制御プログラムを生成して、自動製造機械１の動作を制御する。
【００７７】
Ｃ．本実施例の自動製造機械制御装置１００  ：
図８は、本実施例の自動製造機械制御装置１００が備える機能を示した説明図である。図８に示されるように、本実施例の自動製造機械制御装置１００は、ＹＯＧＯチャート作成部１０１や、基本動作記憶部１０２や、ＹＯＧＯチャート読込部１０３や、ＹＯＧＯチャート解析部１０４や、制御プログラム生成部１０５や、制御実行部１０６などを備えている。尚、これらの「部」は、自動製造機械制御装置１００を用いてＹＯＧＯチャート２００を作成し、そのＹＯＧＯチャート２００から制御プログラムを生成して自動製造機械１の動作を制御するために、自動製造機械制御装置１００に備えておくべき複数の機能を表した抽象的な概念である。従って、自動製造機械制御装置１００が、これらの「部」に相当する部品を組み合わせて形成されていることを表しているわけではない。実際には、これらの「部」は、ＣＰＵで実行されるプログラムの形態で実現することもできるし、ＩＣチップやＬＳＩなどを組み合わせた電子回路の形態で実現することもできるし、更には、これらが混在した形態など、様々な形態で実現することができる。
【００７８】
ＹＯＧＯチャート作成部１０１は、モニター画面１００ｍや、操作入力ボタン１００ｓなどに接続されており、自動製造機械１について十分な知識を有する機械技術者などが、モニター画面１００ｍを見ながら操作入力ボタン１００ｓを操作することによって、図５に例示したようなＹＯＧＯチャート２００を作成する。前述したように、ＹＯＧＯチャート２００は自動製造機械１に搭載されている複数のアクチュエータの基本動作を、部分期間の何れかに割り当てることによって、自動製造機械１の動作を記述したものである。機械設計に際して機械設計技術者は、自動製造機械１の動作を実現するためには、複数のアクチュエータの基本動作をどのように組み合わせれば良いかについて、十分に検討しているので、機械設計を行った機械設計技術者であれば、自動製造機械１の動作を記述したＹＯＧＯチャート２００を簡単に作成することができる。もちろん、自動製造機械１の構造や動作について十分な知識を有する機械技術者であれば、自動製造機械１を設計した技術者でなくても、簡単にＹＯＧＯチャート２００を作成することができる。
【００７９】
また、図５〜図７を用いて前述したように、ＹＯＧＯチャート２００には、基本動作（あるいは基本動作に準じた動作）を特定するための基本動作名２０６を記入する必要がある。そこで、基本動作記憶部１０２には、アクチュエータ（あるいは、スピーカー、ライト、スイッチなど）の名称と、そのアクチュエータなどで実行可能な基本動作などの基本動作名２０６とが対応付けて記憶されている。
【００８０】
図９は、アクチュエータなどの名称と、基本動作名２０６とが対応付けられている様子を示した説明図である。このような対応関係は、基本動作記憶部１０２に記憶されている。図示されるように、アクチュエータなどに対して基本動作（計時動作などの基本動作に準じた動作も含む）などの基本動作名２０６が対応付けて記憶されている。複数種類の基本動作が実行可能なアクチュエータなどに対しては、実行可能なそれぞれの基本動作に対して基本動作名２０６が記憶されることになる。更に、それぞれの基本動作名２０６に対しては、プログラム要素番号や、プログラム要素を格納した先頭アドレス値も記憶されている。プログラム要素番号とは、基本動作（あるいは基本動作に準じた動作）を実現するためのプログラム要素を特定する番号である。また、プログラム要素はＣＰＵが実行可能な形式でメモリに格納されており、メモリ上でプログラム要素が格納されているアドレスの先頭のアドレス値も、基本動作記憶部１０２に対応付けて記憶されている。
【００８１】
図８に示すように、ＹＯＧＯチャート作成部１０１は基本動作記憶部１０２に接続されている。このため、機械設計技術者（あるいは機械技術者）は、ＹＯＧＯチャート２００を作成するに際して、基本動作記憶部１０２に記憶されている図９のデータを参照することができる。そして、自動製造機械１について十分な知識を有する機械技術者であれば、どのようなアクチュエータをどのように動作させるかは十分に分かっているので、アクチュエータなどの名称から基本動作名２０６を知ることができ、更に、パラメータに指定する内容も容易に決めることができる。このため、ＹＯＧＯチャート２００を簡単に作成することができる。
【００８２】
ＹＯＧＯチャート読込部１０３は、ＹＯＧＯチャート作成部１０１で作成したＹＯＧＯチャート２００を読み込んで、ＹＯＧＯチャート解析部１０４に出力する。尚、本実施例では、自動製造機械制御装置１００でＹＯＧＯチャート２００を作成するものとしており、このことに対応して、ＹＯＧＯチャート読込部１０３は、ＹＯＧＯチャート作成部１０１からＹＯＧＯチャート２００を読み込んでいる。これに対して、自動製造機械１とは別体に設けたコンピュータ５０でＹＯＧＯチャート２００を作成しておき、そのＹＯＧＯチャートをＹＯＧＯチャート読込部１０３が読み込むようにしても良い。
【００８３】
ＹＯＧＯチャート解析部１０４は、ＹＯＧＯチャート読込部１０３から受け取ったＹＯＧＯチャート２００を解析することによって、中間データを生成した後、中間データを制御プログラム生成部１０５に出力する。ＹＯＧＯチャートから中間データを生成する処理については、後ほど詳しく説明する。
【００８４】
制御プログラム生成部１０５は、中間データを受け取ると、基本動作記憶部１０２に記憶されている基本動作名２０６とプログラム要素番号との対応関係を参照することによって、中間データから制御プログラムを生成する。中間データから制御プログラムを生成する方法については、後ほど詳しく説明する。そして、得られた制御プログラムを制御実行部１０６に出力する。
【００８５】
制御実行部１０６は、制御プログラム生成部１０５から制御プログラムを受け取ると、基本動作記憶部１０２を参照することによって、制御プログラム中のプログラム要素番号に対応するプログラム要素を取得する。すなわち、図９を用いて前述したように、基本動作記憶部１０２には、プログラム要素番号に対応付けて、プログラム要素が格納されている先頭アドレス値が記憶されているので、プログラム要素番号に対応するプログラム要素を読み込むことができる。そして、読み込んだプログラム要素を実行することによって、ドライバ回路１０ｄ〜２０ｄを介してアクチュエータ１０〜２０を制御する。こうすることによって、ＹＯＧＯチャートに記載された通りに、自動製造機械１が動作することになる。
【００８６】
尚、本実施例のＹＯＧＯチャート読込部１０３は、本発明の「動作チャート読込部」に対応している。また、図８を用いて前述したＹＯＧＯチャート読込部１０３と、ＹＯＧＯチャート解析部１０４と、制御プログラム生成部１０５とは、これらが一体となって、ＹＯＧＯチャート２００から制御プログラムを生成する機能を実現している。従って、本実施例の自動製造機械制御装置１００では、ＹＯＧＯチャート読込部１０３と、ＹＯＧＯチャート解析部１０４と、および制御プログラム生成部１０５とが、本発明の「制御プログラム生成装置１１０」に対応する。
【００８７】
Ｄ．制御プログラム生成処理  ：
図１０は、本実施例の自動製造機械制御装置１００の中で、制御プログラム生成装置１１０に対応する部分が実行する制御プログラム生成処理の概要を示したフローチャートである。図示されるように、制御プログラム生成処理では、先ず初めにＹＯＧＯチャートを読み込む（ＳＴＥＰ１）。本実施例では、自動製造機械制御装置１００がＹＯＧＯチャートを作成しているから、作成したＹＯＧＯチャートのデータを読み込むことになる。もちろん、他のコンピュータ５０で作成したＹＯＧＯチャートのデータを読み込んでも良い。
【００８８】
続いて、読み込んだＹＯＧＯチャートを解析して中間データを出力する（ＳＴＥＰ２）。これは次のような処理である。図１１は、本実施例の自動製造機械制御装置１００が、ＹＯＧＯチャートを解析して中間データを出力する処理（ＹＯＧＯチャート解析処理）のフローチャートである。この処理は、図８中に示したＹＯＧＯチャート解析部１０４が実行する処理である。
【００８９】
図１１に示したように、ＹＯＧＯチャートに解析処理を開始すると、先ず初めに、部分期間番号Ｎおよびアクチュエータ番号Ｍを「１」に初期化する（ＳＴＥＰ１０）。続いて、ＹＯＧＯチャート上での座標（Ｎ，Ｍ）の位置に、基本動作が記入されているか否かを判断する（ＳＴＥＰ１１）。ここで、ＹＯＧＯチャート上での座標（Ｎ，Ｍ）とは、ＹＯＧＯチャート上で、部分期間番号Ｎとアクチュエータ番号Ｍとの組み合わせで特定されるマス目状の座標位置を表している。ＳＴＥＰ１０で部分期間番号Ｎおよびアクチュエータ番号Ｍを初期化した直後は、ＮおよびＭは何れも「１」であるから、ＹＯＧＯチャート上の座標（１，１）の位置に基本動作が記入されているか否かを判断することになる。
【００９０】
図５に例示したＹＯＧＯチャートの場合では、座標（１，１）には基本動作は記入されていないから、ＳＴＥＰ１１では「ｎｏ」と判断して、アクチュエータ番号Ｍが最終値に達したか否かを判断する（ＳＴＥＰ１４）。本実施例の自動製造機械１には１１個のアクチュエータ１０〜２０が搭載されているから、アクチュエータ番号Ｍの最終値は１１となる。従って、座標（１，１）の基本動作の有無を確認した後のＳＴＥＰ１４の判断では、「ｎｏ」と判断されるので、アクチュエータ番号Ｍを１つ増加させる（ＳＴＥＰ１５）。そして、増加させたアクチュエータ番号Ｍを用いて、再び、座標位置（Ｎ，Ｍ）に基本動作が記入されているか否かを判断する（ＳＴＥＰ１１）。
【００９１】
このように、部分期間番号Ｎは「１」のまま、アクチュエータ番号Ｍを１つずつ増加させながら、座標（１，Ｍ）に基本動作が記入されているか否かを判断していくと、やがては、基本動作が記入されている座標（１，Ｍ）になった時に、ＳＴＥＰ１１で「ｙｅｓ」と判断されることになる。
【００９２】
そして、ＳＴＥＰ１１で「ｙｅｓ」と判断された場合は、その座標に記入されている基本動作名２０６、およびパラメータが記入されている場合はパラメータを読み込む（ＳＴＥＰ１２）。図５に例示したＹＯＧＯチャートでは、座標（１，４）に達した時に、ＳＴＥＰ１１で「ｙｅｓ」と判断されて、「Ω−ＡＡ」という基本動作名２０６と、「Ａ−１００」というパラメータとを読み込むことになる。
【００９３】
続いて、（Ｎ，Ｍ，基本動作名，パラメータ）という中間データをメモリに記憶する（ＳＴＥＰ１）。図５に例示したＹＯＧＯチャートの座標（１，４）の場合であれば、（１，４，Ω−ＡＡ，Ａ−１００）という中間データをメモリに記憶することになる。従って、この中間データは、ＹＯＧＯチャート上で部分期間番号が１番、アクチュエータ番号Ｍが４番の位置に、「Ω−ＡＡ」という名前の基本動作が記入されており、その基本動作には「Ａ−１００」というパラメータが設定されていることを表している。
【００９４】
こうして、ＹＯＧＯチャートから読み出したデータをメモリに記憶した後は（ＳＴＥＰ１３）、アクチュエータ番号Ｍが最終値（ここでは、１１）に達したか否かを判断する（ＳＴＥＰ１４）。その結果、最終値に達していない場合は（ＳＴＥＰ１４：ｎｏ）、アクチュエータ番号Ｍを１つ増加させた後（ＳＴＥＰ１５）、ＳＴＥＰ１１に戻って、再び、ＹＯＧＯチャート上の座標（Ｎ，Ｍ）に基本動作が記入されているか否かを判断する。
【００９５】
これに対して、アクチュエータ番号Ｍが最終値に達していた場合は（ＳＴＥＰ１４：ｙｅｓ）、今度は、部分期間番号Ｎが最終値に達したか否かを判断する（ＳＴＥＰ１６）。例えば、ＹＯＧＯチャート上で、自動製造機械１の動作が１００個の部分期間を用いて記述されているのであれば、部分期間番号Ｎの最終値は１００となる。
【００９６】
その結果、部分期間番号Ｎが最終値に達していない場合は（ＳＴＥＰ１６：ｎｏ）、部分期間番号Ｎを１つ増加させると共に（ＳＴＥＰ１７）、アクチュエータ番号Ｍを「１」に初期化した後（ＳＴＥＰ１８）、ＳＴＥＰ１１に戻って、再び、ＹＯＧＯチャート上の座標（Ｎ，Ｍ）に基本動作が記入されているか否かを判断する。すなわち、ＹＯＧＯチャート上で（図５参照）、部分期間番号Ｎが１番の部分期間を上から順番に確認して行き、一番下まで確認したら、今度は、部分期間番号Ｎが２番の部分期間を上から順番に確認して行き、２番の部分期間を確認し終わったら、部分期間番号Ｎが３番の部分期間というように、部分期間番号Ｎが小さな部分期間から大きな部分期間に向かって順番に、ＹＯＧＯチャートに記入されている基本動作名およびパラメータを読みだして、中間データをメモリに記憶して行くのである。
【００９７】
そして、このような操作を繰り返していき、最終的に、部分期間番号Ｎが最終値に達したと判断したら（ＳＴＥＰ１６：ｙｅｓ）、ＹＯＧＯチャートに記入された全ての基本動作を読み出したことになる。そこで、メモリに記憶しておいた中間データを読み出して、制御プログラム生成部１０５に出力する（ＳＴＥＰ１９）。図１２には、図５に例示したＹＯＧＯチャートを解析した場合に得られる中間データが例示されている。このような中間データを出力したら、図１１のＹＯＧＯチャート解析処理を終了して、図１０の制御プログラム生成処理に復帰する。
【００９８】
図１０の制御プログラム生成処理では、このようにして得られた中間データに基づいて、制御プログラムを生成する（ＳＴＥＰ３）。図１３には、図１２に例示した中間データから生成された制御プログラムが示されている。図１２の中間データと、図１３の制御プログラムとを比較すれば明らかなように、制御プログラムでは、中間データの基本動作名２０６およびパラメータが、数値に置き換えられたものとなっている。すなわち、制御プログラムは、中間データの基本動作名２０６を、その基本動作を実現するプログラム要素番号に置き換えると共に、中間データのパラメータを、そのバラメータが表す具体的な数値に置き換えることによって生成されている。
【００９９】
中間データの基本動作名２０６およびパラメータを数値に置き換える操作は、図８中の制御プログラム生成部１０５が、基本動作記憶部１０２を参照することによって実行される。すなわち、基本動作記憶部１０２には、図９を用いて前述したように、基本動作名と、その基本動作名の基本動作を実現させるプログラム要素番号とが対応付けて記憶されている。また、パラメータについても、基本動作記憶部１０２には、パラメータと具体的な数値とを対応付ける図示しない対応関係が記憶されている。そこで、制御プログラム生成部１０５は、中間データに記載されている基本動作名２０６やパラメータを、プログラム要素番号や具体的な数値に置き換えることによって、制御実行部１０６が実行可能な制御プログラムに変換する。
【０１００】
このように、本実施例の自動製造機械制御装置１００では、基本動作記憶部１０２を参照して、基本動作名２０６やパラメータを、プログラム要素番号や具体的な数値に置き換えることとしているので、ＹＯＧＯチャートに記入する基本動作名２０６やパラメータは、人間が分かり易い表記とすることができる。このため、ＹＯＧＯチャートに誤った基本動作名２０６やパラメータを記入してしまい、自動製造機械１が意図しない動作をしてしまう事態を防止することができる。
【０１０１】
以上のようにして、中間データから制御プログラムを生成したら（図１０のＳＴＥＰ３）、生成した制御プログラムを制御実行部１０６に出力して（ＳＴＥＰ４）、図１０の制御プログラム生成処理を終了する。
【０１０２】
尚、図１３に示すように、本実施例の制御プログラムは、部分期間番号Ｎ、アクチュエータ番号Ｍ、プログラム要素番号、パラメータ値が、この順序で並んだ一組のデータ（以下、「データ組」と呼ぶ）が集まったものとなっている。そこで、データ組の中で、部分期間番号Ｎを表す１番目のデータを「第１要素」と呼び、アクチュエータ番号Ｍを表す２番目のデータを「第２要素」と呼び、プログラム要素番号を表す３番目のデータを「第３要素」と呼ぶことにする。
【０１０３】
Ｅ．動作制御処理  ：
上述した制御プログラム生成処理によって生成される制御プログラムは、図１３に例示するように、複数のデータ組が連続したデータに過ぎない。しかし、自動製造機械制御装置１００の制御実行部１０６は、このような制御プログラムに基づいて、以下のようにして、自動製造機械制御装置１００のアクチュエータ１０〜２０の動作を制御する。
【０１０４】
図１４は、自動製造機械制御装置１００の制御実行部１０６が、制御プログラムに従って自動製造機械１の動作を制御する動作制御処理のフローチャートである。図１４に示すように、動作制御処理を開始すると、先ず初めに、部分期間番号Ｎを「１」に初期化する（ＳＴＥＰ５０）。続いて、制御プログラムの中から、第１要素がＮのデータ組を取得する（ＳＴＥＰ５１）。動作制御処理を開始した直後であれば、部分期間番号Ｎは「１」に設定されているから、図１３に例示した制御プログラムから、（１，４，１，１２０）というデータ組を読み出すことになる。
【０１０５】
続いて、読み出したデータ組の第２要素の値に基づいて、制御対象となるアクチュエータを特定する（ＳＴＥＰ５２）。ＳＴＥＰ５１で読み出したデータ組を（１，４，１，１２０）とすれば第２要素の値は「４」であるから、アクチュエータ番号Ｍが「２」のアクチュエータが制御対象のアクチュエータとなる。また、ＳＴＥＰ５１で複数のデータ組を読み出していた場合には、それぞれのデータ組の第２要素の値に基づいて、制御対象となるそれぞれのアクチュエータを特定する。
【０１０６】
更に、読み出したデータ組の第３要素の値に基づいて、アクチュエータに基本動作させるためのプログラム要素を取得する（ＳＴＥＰ５３）。ＳＴＥＰ５１で読み出したデータ組を（１，４，１，１２０）とすれば第３要素の値は「１」であるから、基本動作させるためのプログラム要素は、プログラム要素番号が「１」番のプログラム要素となる。そこで、基本動作記憶部１０２に記憶されている対応関係（図９参照）を参照して、プログラム要素番号に対応する先頭アドレス値を取得することによって、ＣＰＵが実行可能なプログラム要素を読み出す。もちろん、ＳＴＥＰ５１で複数のデータ組を読み出していた場合には、それぞれのデータ組の第３要素の値に基づいて、それぞれのプログラム要素を読み出すことになる。
【０１０７】
また、データ組中に第１要素〜第３要素以外の要素が存在している場合は、それは（あるいは、それらは）プログラム要素に指定するパラメータなので、それ（あるいは、それら）を読み出して、プログラム要素に引数として設定する（ＳＴＥＰ５４）。
【０１０８】
以上のＳＴＥＰ５１〜ＳＴＥＰ５４の操作を行うことによって、ＹＯＧＯチャート上のある部分期間（動作制御処理が開始された直後は、部分期間番号Ｎが「１」番の部分期間）に記入された基本動作を、それぞれのアクチュエータに行わせる準備が整ったことになる。すなわち、制御対象となるアクチュエータが特定され（ＳＴＥＰ５２）、制御に用いるプログラム要素が取得され（ＳＴＥＰ５３）、プログラム要素に対して引数が設定された（ＳＴＥＰ５４）ことになるので、そのプログラム要素を実行する（ＳＴＥＰ５５）。例えば、アクチュエータがサーボモータであり、基本動作の内容がモータを正方向に１８０度回転させるという内容であった場合は、モータの回転角度を検出しながら、回転角度が１８０度になるまでモータを駆動する動作を、所定の制御周期で繰り返すようなプログラム要素を実行する。また、複数のプログラム要素が存在する場合は、それらのプログラム要素が並行して実行されることになる。
【０１０９】
続いて、全てのプログラム要素の実行が終了したか否かを判断する（ＳＴＥＰ５６）。すなわち、ＳＴＥＰ５５で複数のプログラム要素を実行した場合は、それらのプログラム要素の実行が同時に終了するとは限らないので、全てのプログラム要素の実行が終了したか否かを判断する。もちろん、ＳＴＥＰ５５で１つのプログラム要素しか実行していない場合は、そのプログラム要素の実行が終了したか否かを判断することになる。
【０１１０】
その結果、実行中のプログラム要素が残っている場合は、ＳＴＥＰ５６では「ｎｏ」と判断して、再び同じ判断（ＳＴＥＰ５６）を繰り返す。こうすることによって、全てのプログラム要素の実行が終了するまで待機状態となる。そして、全てのプログラム要素の実行が終了したら（ＳＴＥＰ５６：ｙｅｓ）、部分期間番号Ｎが最終値に達したか否かを判断する（ＳＴＥＰ５７）。例えば、ＹＯＧＯチャート上で自動製造機械１の動作を記述するために、１００個の部分期間が用いられていた場合は、部分期間番号Ｎが「１００」に達したか否かを判断する。
【０１１１】
その結果、部分期間番号Ｎがまだ最終値に達していない場合は（ＳＴＥＰ５７：ｎｏ）、部分期間番号Ｎを１つ増加させる（ＳＴＥＰ５８）。そして、ＳＴＥＰ５１に戻って、制御プログラムの中から、第１要素が新たな部分期間番号Ｎに一致するデータ組を読み出した後、読み出したデータ組に対して上述したＳＴＥＰ５２〜ＳＴＥＰ５５の操作を行う。こうすることにより、先に基本動作を実行した部分期間から１つ部分期間を進めて、新たな部分期間に記入された全ての基本動作が実行されることになる。そして、新たな部分期間の全ての基本動作が終了して、ＳＴＥＰ５６で「ｙｅｓ」と判断したら、その部分期間の部分期間番号Ｎが最終値に達しているか否かを判断する（ＳＴＥＰ５７）。その結果、部分期間番号Ｎが最終値に達していない場合は（ＳＴＥＰ５７：ｎｏ）、部分期間番号Ｎを１つ増加させた後（ＳＴＥＰ５８）、ＳＴＥＰ５１に戻って、新たな部分期間番号Ｎについて、上述したＳＴＥＰ５１〜ＳＴＥＰ５７の操作を繰り返す。
【０１１２】
このように、図１４の動作制御処理では、ＹＯＧＯチャートの先頭の部分期間（すなわち、部分期間番号Ｎが１番の部分期間）から最後の部分期間（部分期間番号Ｎが最終値の部分期間）に向かって、部分期間を１つずつ選択して、その部分期間に記載された基本動作を実行する動作を繰り返す。そして、最後の部分期間の基本動作が終了したら、ＳＴＥＰ５７で「ｙｅｓ」と判断して、動作制御処理を終了する。
【０１１３】
以上に詳しく説明したように、本実施例の自動製造機械制御装置１００では、自動製造機械１の動作をＹＯＧＯチャート２００で記述することによって、そのＹＯＧＯチャート２００から制御プログラムを自動で生成して、自動製造機械制御装置１００を動作させることができる。また、ＹＯＧＯチャートは、自動製造機械１の構造や動作が分かっていれば、プログラムに関する知識が無くても簡単に作成することができるので、プログラマが制御プログラムを作成する必要が無い。このため、新たな自動製造機械１を開発するために要する時間を、大幅に（少なくとも半分以下に）短縮することができ、加えて、プログラマを確保しておく必要も無くなる。その結果、製造現場に新たな自動製造機械を導入することが容易になって、産業界での省力化に対する要請に十分に対応することが可能となる。
【０１１４】
以上、本実施例の自動製造機械制御装置１００について説明したが、本発明は上記の実施例に限られるものではなく、その要旨を逸脱しない範囲において種々の態様で実施することが可能である。
【０１１５】
例えば、上述した実施例の自動製造機械制御装置１００では、図８に示したように、制御プログラム生成部１０５および制御実行部１０６の何れも、基本動作記憶部１０２を参照するものとして説明した。これは、制御プログラム生成部１０５が制御プログラムを生成する際に参照する対応関係（すなわち、基本動作名２０６（およびパラメータ）とプログラム要素番号（および具体的な数値）との対応関係）と、制御実行部１０６が制御プログラムを実行する際に参照する対応関係（すなわち、プログラム要素番号とプログラム要素を格納した先頭アドレス値との対応関係）とが、何れも基本動作記憶部１０２に記憶されているためである。従って、基本動作記憶部１０２に記憶されている対応関係を、制御プログラム生成部１０５が参照する対応関係と、制御実行部１０６が参照する対応関係とに分割して、制御実行部１０６が参照する対応関係については、基本動作記憶部１０２とは別の記憶部で記憶するようにしても良い。
【０１１６】
図１５は、制御プログラム生成部１０５が参照する対応関係と、制御実行部１０６が参照する対応関係を分割することにより、制御プログラム生成部１０５と制御実行部１０６とが異なる記憶部を参照するようにした変形例の自動製造機械制御装置１００についての説明図である。図１５に示した変形例の自動製造機械制御装置１００は、図８を用いて前述した本実施例の自動製造機械制御装置１００に対して、制御実行部１０６が、基本動作記憶部１０２ではなくブログラム要素記憶部１０７を参照している点が異なっている。このブログラム要素記憶部１０７には、図９を用いて前述した対応関係の中で、プログラム要素番号と、プログラム要素が格納された先頭アドレス値とを対応付けた部分が記憶されている。また、このことに伴って、変形例の基本動作記憶部１０２に記憶されている対応関係からは、プログラム要素番号に対して先頭アドレス値を対応付けた部分が除かれている。このような変形例の自動製造機械制御装置１００では、制御実行部１０６が制御プログラムを実行する際に、ブログラム要素記憶部１０７を参照して読み出したプログラム要素を実行することになる。
【０１１７】
尚、上述した変形例の基本動作記憶部１０２が記憶している対応関係について、疑義を招かないように補足説明しておく。前述した本実施例の自動製造機械制御装置１００では、図９に例示したように、プログラム要素を格納した先頭アドレス値と、基本動作名２０６との対応関係が基本動作記憶部１０２に記憶されていた。これに対して、上述した変形例では、基本動作記憶部１０２に対応付けて記憶されているのは、基本動作名２０６とプログラム要素番号との対応関係に過ぎず、基本動作名２０６とプログラム要素の先頭アドレス値との対応関係が記憶されているわけではない。従って、変形例の基本動作記憶部１０２を参照しても、基本動作を実現するプログラム要素が直ちに読み出せるわけではない。しかし、プログラム要素番号を特定すれば、プログラム要素は決まってしまう。このことから、変形例の基本動作記憶部１０２が記憶している対応関係も、実質的には、基本動作名２０６とプログラム要素とを対応付けた対応関係に該当している。
【０１１８】
また、前述した本実施例の自動製造機械制御装置１００は、ＹＯＧＯチャートを作成して、そのＹＯＧＯチャートから制御プログラムを生成する機能（図８のＹＯＧＯチャート作成部１０１、基本動作記憶部１０２、ＹＯＧＯチャート読込部１０３、ＹＯＧＯチャート解析部１０４、制御プログラム生成部１０５に対応）に加えて、制御プログラムに従って制御を実行する機能（図８の制御実行部１０６に対応）も備えているものとして説明した。しかし、これらの複数の機能の一部を搭載した複数の装置を組み合わせることによって、全体として自動製造機械制御装置１００を形成するようにしても良い。
【０１１９】
例えば、図１６に例示したように、自動製造機械制御装置１００を、ＹＯＧＯチャート処理装置１００ａと、制御実行装置１００ｂとに分割してもよい。そして、自動製造機械制御装置１００には、ＹＯＧＯチャートの作成から制御プログラムの生成までの一連の機能（すなわち、ＹＯＧＯチャート作成部１０１、基本動作記憶部１０２、ＹＯＧＯチャート読込部１０３、ＹＯＧＯチャート解析部１０４、制御プログラム生成部１０５）を搭載する。また、制御実行装置１００ｂには、制御プログラムに従ってプログラム要素を実行する機能（すなわち、制御実行部１０６、ブログラム要素記憶部１０７）を搭載する。
【０１２０】
こうすれば、ＹＯＧＯチャートを作成したり、制御プログラムを生成したりする作業は事務室に設置しておいたＹＯＧＯチャート処理装置１００ａで行い、自動製造機械１の傍に設置しておいた制御実行装置１００ｂに、生成した制御プログラムを読み込ませることによって、自動製造機械１を動作させることが可能となる。尚、図１６に示した例では、ＹＯＧＯチャート処理装置１００ａが、本発明における「制御プログラム生成装置」に対応する。
【０１２１】
また、前述した本実施例では、ＹＯＧＯチャート２００に記入される動作は、基本動作（あるいは基本動作に準じた動作）であるものとして説明した。しかし、他自由度の複雑な動作をする部品を購入して、その部品に所定の動作を行わせることによって、自動製造機械１のアクチュエータとして利用する場合もある。このような場合は、その部品に行わせる所定の動作を、基本動作に準じた動作として取り扱って基本動作名２０６を付与した上でＹＯＧＯチャート２００に記入するようにしても良い。このような場合でも、基本動作名２０６に対応するプログラム要素を予め作成しておけば、自動製造機械制御装置１００を用いて制御プログラムを自動で生成することが可能となる。
【符号の説明】
【０１２２】
１…自動製造機械、    ２…レール、      ３…搬送ユニット、    ３ａ…把持軸、
３ｂ…チャック、      ４…加工ユニット、      １０〜２０…アクチュエータ、
１０ｄ〜２０ｄ…ドライバ回路、      ５０…コンピュータ、
１００…自動製造機械制御装置、      １００ａ…ＹＯＧＯチャート処理装置、
１００ｂ…制御実行装置、            １００ｍ…モニター画面、
１００ｓ…操作入力ボタン、          １０２…基本動作記憶部、
１０５…制御プログラム生成部、      １０６…制御実行部、
１０７…ブログラム要素記憶部、      １１０…制御プログラム生成装置、
２０１…仕切線、      ２０２…トリガー線、      ２０３…動作線、
２０４…始点、        ２０５…終点、            ２０６…基本動作名。
【要約】
【課題】自動製造機械の動作を制御する制御プログラムを自動で生成する。
【解決手段】自動製造機械（１）に搭載されている複数のアクチュエータの基本動作と、基本動作を実現するためのプログラム要素とを対応付けて記憶しておく。また、自動製造機械の動作を、自動製造機械が動作を開始してから終了するまでの動作期間が複数の部分期間に分割されており、自動製造機械の動作が複数の基本動作に分解されると共に、基本動作が複数の部分期間の何れかに割り当てられた動作チャート（２００）によって記述しておく。そして、自動製造機械の動作が記述された動作チャートを読み込んで、動作チャート中の基本動作をプログラム要素に変換すると共に、動作チャート中での部分期間の順番に従ってプログラム要素を結合する。こうすれば、自動製造機械の動作を制御する制御プログラムを自動で生成することが可能となる。
【選択図】図４【図１】
0006829505.tif 000002
【図２】
0006829505.tif 000003
【図３】
0006829505.tif 000004
【図４】
0006829505.tif 000005
【図５】
0006829505.tif 000006
【図６】
0006829505.tif 000007
【図７】
0006829505.tif 000008
【図８】
0006829505.tif 000009
【図９】
0006829505.tif 000010
【図１０】
0006829505.tif 000011
【図１１】
0006829505.tif 000012
【図１２】
0006829505.tif 000013
【図１３】
0006829505.tif 000014
【図１４】
0006829505.tif 000015
【図１５】
0006829505.tif 000016
【図１６】
0006829505.tif 000017