以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態におけるプログラム生成装置の機能構成例を示す図である。図1において、プログラム生成装置10は、制御プログラム生成ソフト11によって実現される、GUI(Graphical User Interface)部111、ワークスペース管理部112、プロジェクト管理部113、デバイス処理部114、チャート処理部115、CADデータ処理部116、及びプログラム生成部117等より構成される。プログラム生成装置10は、これら各部によって生産設備又は機械設備(以下「生産設備」で統一する。)の動作を制御するためのプログラム、例えば、PLC(Programmable Logic Controller)やモーションコントローラに記述される制御プログラムの開発環境を提供し、当該開発環境において入力された情報に基づいて制御プログラムを自動生成する。なお、制御プログラム生成ソフト11は、XML(eXtensible Markup Language)、SOAP(Simple Object Access Protocol)、WSDL(Web Services Description Language)、UDDI(Universal Description, Discovery, and Integration)、ASP(Active Server Pages)、サーブレット、Ajax(Asynchronous Java(登録商標)Script + XML)等の技術を利用した、サーバとクライアントが密接に関わりあって動作するWebアプリケーションとして実装してもよい。
図2は、本発明の実施の形態におけるプログラム生成装置のハードウェア構成例を示す図である。図2のプログラム生成装置10は、それぞれバスBで相互に接続されているドライブ装置100と、補助記憶装置102と、メモリ装置103と、演算処理装置104と、インタフェース装置105と、表示装置106と、入力装置107とを有するように構成される。
プログラム生成装置10での処理を実現する制御プログラム生成ソフト11は、CD−ROM等の記録媒体101によって提供される。制御プログラム生成ソフト11を記録した記録媒体101がドライブ装置100にセットされると、制御プログラム生成ソフト11が記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。補助記憶装置102は、インストールされた制御プログラム生成ソフト11を格納すると共に、必要なファイルやデータ等を格納する。
メモリ装置103は、制御プログラム生成ソフト11の起動指示があった場合に、補助記憶装置102から制御プログラム生成ソフト11を読み出して格納する。演算処理装置104は、メモリ装置103に格納された制御プログラム生成ソフト11に従ってプログラム生成装置10に係る機能を実現する。インタフェース装置105は、LAN(Local Area Network)又はインターネット等のネットワークに接続するためのインタフェースとして用いられる。表示装置106は制御プログラム生成ソフト11に係るGUI等を表示する。入力装置107はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
なお、制御プログラム生成ソフト11のインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。
また、制御プログラム生成ソフト11がWebアプリケーションとして提供される場合は、サーバ側の記憶装置に制御プログラム生成ソフト11がインストールされる。サーバ側の記憶装置には、インストールされた制御プログラム生成ソフト11が格納されると共に、必要なファイルやデータ等が格納される。
クライアント側の入力装置107から制御プログラム生成ソフト11の起動指示がLAN又はインターネット等のネットワークを介して通知された場合に、サーバ側に格納された制御プログラム生成ソフト11が読み出され、制御プログラム生成ソフト11に係るGUI等の情報(プログラム)がLAN又はインターネット等のネットワークを介してクライアント側のメモリ装置103に格納され、GUIが表示装置106に表示される。
クライアント側の入力装置107からの様々な操作指示の入力の情報は、サーバ側の処理が必要な場合にはその必要に応じてネットワークを介してサーバ側に送られ、サーバ側の演算処理装置により制御プログラム生成ソフト11に従って制御プログラム生成装置10に係る機能を実現する。
このように構成することで、サーバに対して複数のクライアントが制御プログラム生成ソフト11を利用することが可能となり、様々なファイルやデータを複数のクライアントで共有することも可能となる。
また、図1に示す制御プログラム生成ソフト11の構成全てを同一の記録媒体に格納する必要はない。例えば、プログラム生成部117をPLCやモーションコントローラに実装し、処理したデータやファイル等を送信することで、PLCやモーションコントローラの内部で制御プログラムを生成することも可能である。すなわち、データやファイルを処理するコンピュータと、PLCやモーションコントローラとを含めてプログラム生成装置10を構成してもよい。
以下、図1のプログラム生成装置の処理手順について説明する。図3は、プログラム生成装置において実行される処理手順の概要を説明するためのフローチャートである。
制御プログラム生成ソフト11が起動されると、GUI部111は、表示装置106にメイン画面を表示させる(S10)。
図4は、メイン画面の表示例を示す図である。図4において、メイン画面500は、メニュー510、領域520、領域530、領域540、及び領域550等より構成される。
続いて、ワークスペース管理部112は、ユーザによる対話的な入力に応じてワークスペース作成処理を実行する(S20)。ここでワークスペースとは、一つ以上のプロジェクトを管理するための単位をいう。すなわち、一つのワークスペースには複数のプロジェクトが含まれうる。関連する複数のプロジェクトが一つのワークスペースにまとめられることにより、ユーザは、プロジェクトごとにメイン画面500を表示させる必要がなくなるといった利便性を享受することができる。ワークスペース作成処理の結果、作成されたワークスペースに関する属性情報がメモリ装置103に保持されると共に、ワークスペース管理ファイル21として補助記憶装置102に保存される。
続いて、プロジェクト管理部113は、ユーザによる対話的な入力に応じてプロジェクト作成処理を実行する(S30)。ここでプロジェクトとは、一つの制御プログラムを生成するために必要な情報が管理される単位をいう。すなわち、一つのプロジェクトからは一つの制御プログラムが生成される。プロジェクト作成処理の結果、作成されたプロジェクトに関する属性情報と当該プロジェクトに対応したデバイスリストとがメモリ装置103に保持されると共に、プロジェクト管理ファイル22又はデバイスリストファイル23として補助記憶装置102に保存される。ここで、デバイスリストとは、制御の対象となる設備(以下、「対象設備」という。)を構成する各設備要素(又は各機械要素)を駆動させるためのデバイス(例えば、モータ、アクチュエータ、センサ等。以下「駆動デバイス」という。)の一覧情報をいい、駆動デバイスごとにその属性情報を含む。なお、センサは、厳密には、ワークの検出や設備要素の動作の検出等に用いられ、直接的に設備要素を駆動させるものではないが、本実施の形態においては、設備要素の駆動のトリガーを生成するという観点より、駆動デバイスに含めて説明する。また、本実施の形態においては、対象設備として、ガラス板の搬入、ガラス板の曲げ成形、ガラス板の搬出という作業を実行するガラス板の曲げ成形装置を例として説明する。但し、このことは、本実施の形態における発明の適用範囲がガラス板の曲げ成形装置に限定されることを意味するものではない。なお、ガラス板の曲げ成形装置については、例えば、特開2005−206458号公報等に詳しい。
続いて、デバイス処理部114は、ユーザによる対話的な入力によって、デバイスリスト編集処理を実行する(S40)。デバイスリスト編集処理では、メモリ装置103上に展開されているデバイスリストが更新され、また、その更新は、必要に応じてデバイスリストファイル23に反映される。
続いて、チャート処理部115は、ユーザによる対話的な入力によって、デバイスリストに含まれる各駆動デバイスが駆動させる設備要素の動作をチャート(グラフ)によって定義させるための処理(チャート作成処理)を実行する(S50)。チャート作成処理の結果、駆動デバイスごとに入力されたチャートに関する情報(チャート情報)が、メモリ装置103上に生成される。チャート情報は、ユーザからの指示に応じてチャートファイル24として補助記憶装置102に保存される。
続いて、プログラム生成部117は、ワークスペース管理ファイル21、プロジェクト管理ファイル22、デバイスリストファイル23、チャートファイル24及びプログラムテンプレート26に基づいて、対象設備の制御プログラム30を生成し、出力する処理(制御プログラム生成処理)を実行する(S60)。制御プログラム生成処理によって生成される制御プログラム30をPLC等に処理させることにより、対象設備の制御を実現することができる。
ここで、プログラムテンプレート26とは、制御プログラムの雛形をいい、制御プログラムに基づいて生産設備を制御するPLC等の制御装置(コントローラ)の種類や、当該生産設備の構成、当該生産設備に属する各設備要素に対して具体的に定義される動作(チャート情報)等に応じて変化する部分が変数化(パラメータ化)されているプログラムである。換言すれば、これらの項目によって変化しない共通ロジックが予め定義されたプログラムである。
以下、図3の各ステップについて更に詳しく説明する。
まず、ステップS20のワークスペース作成処理について説明する。図5は、ワークスペース作成処理を説明するためのフローチャートである。
ユーザが、メイン画面500のメニュー510を選択することによって表示されるメニュー項目の中で、ワークスペースの作成に関するメニュー項目を選択すると、GUI部111は、ワークスペースの作成指示を検知する(S21)。
ユーザによって新規作成が指示された場合(S22でYes)、GUI部111は、ワークスペースの属性情報をユーザに設定させる(S23)。ワークスペースの属性情報の設定としては、ワークスペースの種類(MES(Manufacturing Execution System))の選択、選択されたワークスペースの種類に応じたワークスペーステンプレートの選択、作成するワークスペースの名前(ワークスペース名)の入力、作成するワークスペースの保存場所の選択等が行われる。ここで、ワークスペーステンプレートとは、ワークスペースの雛形をいい、予め作成されている。
ワークスペースの属性情報の設定に応じ、ワークスペース管理部112は、設定された属性情報に基づいてワークスペースを作成し、当該ワークスペースに係るワークスペース管理ファイル21を補助記憶装置102に生成する(S24)。ワークスペース管理ファイル21には、例えば、MESプロジェクトに関する情報が保存される。MESは、制御プログラムに基づいて動作するPLC等の複数のコントローラを管理するシステムであり、主にコントローラにおけるデータ管理や稼働実績情報を扱う。したがって、ワークスペース管理ファイル21に保存される情報は、制御プログラムのデータ管理や稼働実績情報に関する部分に対して影響を与える。
一方、ユーザによって既存のワークスペースの編集が指示された場合、すなわち、「ワークスペースを開く」のメニュー項目が選択された場合(S22でNo)、GUI部111は、既存のワークスペースを選択させるための画面を表示させ、当該画面を介して既存のワークスペースの選択を受け付ける(S25)。続いて、ワークスペース管理部112は、選択された既存ワークスペースに係るワークスペース管理ファイル21を読み込み、その内容をメモリ装置103に展開する(S26)。
なお、ワークスペースが新規に作成された後、又は既存のワークスペースが読み込まれた後、ワークスペース管理部112は、当該ワークスペースの表示をGUI部111に実行させる。
図6は、ワークスペースが表示されたときの表示内容を詳細に示す図である。図6では、メイン画面500の領域520及び領域530のみが表示されている。領域520は、タブによって表示内容が切り替えられるように構成されている。すなわち、WorkSpaceタブ521、Deviceタブ522、Chartタブ523、及びCADタブ524が設けられている。新規のワークスペースが生成されたとき又は既存のワークスペースが開かれたときは、WorkSpaceタブ521が自動的に選択され、当該ワークスペースを構成する項目をノードとするツリー部品が領域520に表示される。
領域530には、領域520において選択されたアイテム(項目)に対する属性情報が表示される。
次に、ステップS30のプロジェクト作成処理について説明する。図7は、プロジェクト作成処理を説明するためのフローチャートである。
メイン画面500の領域520においてWorkSpaceタブ521が選択されている状態において、ユーザがワークスペースに対応するアイテムを選択すると、プロジェクト管理部113は、選択されたワークスペースをプロジェクトの作成対象のワークスペース(以下「対象ワークスペース」という。)として認識する(S31)。ワークスペースが選択された状態において、GUI部111は、プロジェクトの追加指示をユーザより受け付ける(S32)。
ユーザによる追加指示が新規作成だった場合(S33でYes)、GUI部111は、プロジェクトの属性情報をユーザに設定させる(S34)。プロジェクトの属性情報の設定としては、プロジェクトの種類(コントローラの種類)の選択、選択されたプロジェクトの種類に応じたプロジェクトテンプレートの選択、作成するプロジェクトの名前(プロジェクト名)の入力等が行われる。なお、一つのプロジェクトは、一つの制御盤(コントローラの集合)に対応する(但し、必ずしも一対一でない場合もある。)。この一つの制御盤で制御される駆動デバイスが、対応するプロジェクトに属することになる。このプロジェクト単位で制御プログラムが生成される。
また、プロジェクトテンプレートとは、プロジェクトの雛形をいい、予め作成されている。図8は、プロジェクトテンプレートの定義例を示す図である。
図8に示されるように、プロジェクトテンプレートには、制御プログラムの構成パターンが定義されている。
プロジェクトの属性情報の設定に応じ、プロジェクト管理部113は、設定された属性情報に基づいてプロジェクトを作成し、当該プロジェクトに係るプロジェクト管理ファイル22を補助記憶装置102に生成する(S35)。プロジェクト管理ファイル22には、制御プログラムによって制御されるコントローラの構成や、制御プログラムのプログラム構成及びパターンに関する情報が保存される。
一方、ユーザによって既存のプロジェクトの編集が指示された場合(S33でNo)、GUI部111は、既存のプロジェクトを選択させるための画面を表示させ、当該画面を介して既存のプロジェクトの選択を受け付ける(S36)。続いて、プロジェクト管理部113は、選択された既存プロジェクトに係るプロジェクト管理ファイル22を読み込み、その内容をメモリ装置103に展開する(S37)。
なお、プロジェクトが新規に作成された後、又は既存のプロジェクトが読み込まれた後、プロジェクト管理部113は、当該プロジェクトの表示をGUI部111に実行させる。これによって、領域520のツリー部品には、対象ワークスペースに対応するアイテムに子アイテムとして追加されたプロジェクトに対応するアイテムが表示される。追加された直後は、当該アイテムは選択状態とされている。したがって、領域530には追加されたプロジェクトの属性情報が表示される。
次に、ステップS40のデバイスリスト編集処理について説明する。図9は、デバイスリスト編集処理を説明するためのフローチャートである。
ユーザが、メイン画面500の領域520においてDeviceタブ522を選択すると、GUI部111は、対象設備の駆動デバイスを編集させるための画面(以下「デバイスリスト編集画面」という。)を領域520に表示させる(S401)。
図10は、デバイスリスト編集画面の表示例を示す図である。図10に示されるように、デバイスリスト編集画面は、各アイテムが駆動デバイスに対応したツリー部品によって構成されている。駆動デバイスは、制御区分(電源の異同に基づく区分)によって分類され、更に、制御区分ごとに入力デバイスか出力デバイスかによって分類される。デバイスリスト編集画面のツリー部品ではかかる分類の階層関係が表現されている。
したがって、GUI部111は、ツリー部品のアイテムを選択させることにより、編集対象となる駆動デバイス(以下、「対象デバイス」という。)が入力デバイス(Input Device)であるのか出力デバイス(Output Device)であるのかの選択を受け付ける(S402)。図中では、出力デバイスが選択された例が示されている。
続いて、ユーザによる入力に応じて処理が分岐する(S403)。駆動デバイスの追加指示が入力された場合(S403で「新規追加」)、デバイス処理部114は、新たな駆動デバイスのエントリをメモリ装置103上に展開されているデバイスリスト(以下、単に「デバイスリスト」という。)に追加する(S404)。新たに追加される駆動デバイスは、GUI部111が表示する駆動デバイスの一覧の中から選択される。駆動デバイスの一覧は、デバイス処理部114が、例えば非図示のデバイス管理DBより取得し、GUI部111に出力する。駆動デバイスの追加に応じて、GUI部111は、追加された駆動デバイスを現在選択されているアイテム(例えば、Output Deviceアイテム)の子アイテムとして表示させる。
駆動デバイスが追加されると、GUI部111は、当該駆動デバイスに対応するアイテムを選択状態にすると共に、領域530に当該駆動デバイスの属性情報(デバイスリストに登録されている属性情報)を表示させる。
デバイスリストにおける駆動デバイスの属性情報は、図10の領域530に示されるように、名前、タイプ、制御方法、制御方法詳細、原点復帰方法、速度上限、加速度上限、位置上限、及び位置下限等の項目より構成される。すなわち、デバイスリスト及びデバイスリストファイル23には、駆動デバイスごとにこれらの情報が管理されている。
名前は、駆動デバイスの名前である。制御方法は、駆動デバイスの制御方法である。制御方法は、駆動デバイスに応じて選択肢が限定される。例えば、ACサーボモータについては、位置決め制御、補間制御、速度制御、速度位置切替制御、トルク制御、又はCAM(Computer Aided Manufacturing)制御等の選択が可能である。また、インバータについては、ON/OFF制御又は速度制御等の選択が可能である。また、電磁弁については、シングル制御又はダブル制御等の選択が可能である。制御方法詳細は、制御方法が更に詳細に分類される場合にその分類を特定するための情報である。例えば、位置決め制御であれば、速度の切り替えが1段又は2段の選択が可能である。また、CAM制御であれば、往復CAM、送りCAM等の選択が可能である。
したがって、ユーザは必要に応じて、領域530において、選択されている駆動デバイスの属性情報の編集(変更)を行う。ユーザが属性情報の編集を行うと、デバイス処理部114は、編集結果をデバイスリストに反映する(S405)。
ステップS403において、領域520に表示されているいずれかの駆動デバイスに対応するアイテムが選択された場合(S403で「アイテム選択」)、GUI部111は、選択された駆動デバイスの属性情報を領域530に表示させる(S406)。なお、駆動デバイスの属性情報は、GUI部111からの要求に応じてデバイス処理部114が、デバイスリストより取得する。
ユーザが、領域530において属性情報の編集を行うと(S407で「属性編集」)、デバイス処理部114は、編集結果をデバイスリストに反映する(S408)。
一方、アイテムの選択後、削除指示が入力された場合(S407で「削除指示」)、デバイス処理部114は、選択されている駆動デバイスのエントリをデバイスリストより削除する(S409)。
なお、ステップS403以降は、その後もユーザの入力応じて継続的に実行され得る。以上の処理によって、デバイスリストの内容は対象設備に対応したものに更新される。また、デバイスリストの内容は、メニュー500等を介したユーザによる指示に応じて適宜デバイスリストファイル23に反映(保存)される。
図11は、デバイスリストファイルの内容の例を示す図である。図11のデバイスリストファイル23の内容は、図10の領域520のツリー部品によって表現されているデバイスリストに対応する。例えば、図11において、InputDeviceタグ231以下には、各入力デバイス(PH1、PH2、Sensor1、PH3)の情報がそれぞれについて一行ずつ記述されている。また、OutputDeviceタグ232以下には、各出力デバイス(Solenoid1、Solenoid2、搬入ホイスト走行、Inv1、搬入ホイスト上下、Servo3)の情報がそれぞれについて一行ずつ記述されている。
次に、ステップS50のチャート作成処理について説明する。図12は、チャート作成処理を説明するためのフローチャートである。
ユーザが、メイン画面500の領域520においてChartタブ523を選択すると、GUI部111は、シーケンスの構成を編集させるための画面(以下「シーケンス構成編集画面」という。)を領域520に表示させる(S501)。
図13は、シーケンス構成編集画面の表示例を示す図である。図13に示されるように、シーケンス構成編集画面は、各アイテムがシーケンスに対応したツリー部品によって構成されている。ツリー部品によって表現されるツリーは制御区分によって構成されている。ここで、シーケンスとは、対象設備における各作業単位をいう。例えば、図中では、制御区分1のシーケンスとして、出口CVシーケンス、搬出シーケンス、及び搬入シーケンスが追加された例が示されている。
シーケンスの追加は、GUI部111がシーケンスの追加指示の入力を受け付けることによって行われる(S503)。追加されたシーケンスに対応するアイテムは、選択状態とされる。
続いて、GUI部111は、領域520で選択されているアイテムに対応するシーケンスに対する属性情報の入力を領域530において受け付ける(S504)。図13に示されるように、領域520においてChartタブ523が選択されているときは、領域530は、Propertyタブ531及びChartタブ532によって表示内容が切り替えられるように構成される。Propertyタブ531が選択されているときは、領域520で選択されているアイテムに対応するシーケンスに対する属性情報の入力が可能となる。したがって、ユーザは、例えば新たに追加したシーケンスの名前等を入力したり、既存のシーケンスの名前等を変更したりすることができる。シーケンスの編集内容は、チャート情報の一部としてメモリ装置103上に保持される。
シーケンスの構成の編集に続いて、GUI部111は、ユーザによる対話的な入力に応じて、選択中のシーケンスに属するチャートの作成を行う。以降の処理は、図14も参照しつつ説明する。図14は、チャートの作成処理の概要を説明するための図である。図14では、メイン画面500における領域530及び領域550が表示されている。
図14に示されるように、領域550は、複数の行に分割されている。例えば、図中では、一部の行として行551、552、553及び554が表示されている。各行は、一つのステップに対応する。ステップとは、シーケンス内において、一つの駆動デバイスの一連の動作に対応した工程をいう。駆動デバイスが、往復動作や上下動作を行う場合、一つの駆動デバイスに対して複数のステップ(例えば、行きのステップ及び戻りのステップ、又は上昇のステップ及び下降のステップ)が定義され得る。表示対象とする行(ステップ)はスクロールによって変更可能である。これらの行ごとに、駆動デバイスが関連付けられ、その駆動デバイスに対するチャートが入力される。なお、図中では、行551に既にチャート551cが入力された状態が示されているが、これは、以降に説明する処理の結果が示されたものである。
ユーザが、領域550においていずれかの行を選択すると、GUI部111は、選択された行を編集対象の行として選択する(S505)。ここでは、行551が選択されたこととする。続いて、GUI部111は、チャートの編集方法の選択を受け付ける(S506)。
チャートの編集方法の選択は、領域530においてChartタブ532が選択されることにより表示される画面(以下「画面532」という。)において行われる。図14では、Chartタブ532が選択された状態が示されている。図中に示されるように、画面532は、領域533及び領域534より構成される。領域533には、現在編集対象とされているシーケンスのシーケンス名が表示され(533a)、また、編集方法を選択させるためのラジオボタン533bが配置されている。ラジオボタン533bにおいては、「Position」又は「Timing」の選択が可能とされている。「Position」は、ポジションチャートによる編集方法を示す。「Timing」は、タイミングチャートによる編集方法を示す。
タイミングチャートとは、従来より用いられているチャートであり、時間と速度との関係によって設備要素の動作を定義するものである。すなわち、水平方向に移動する設備要素であれば、横軸に時間、縦軸に速度をとり、時間の推移に応じて設備要素の移動速度を定義する。
一方、ポジションチャートは、位置と速度との関係によって設備要素の動作を定義するものである。すなわち、水平方向に移動する設備要素であれば、横軸に位置、縦軸に速度をとり、位置の推移に応じて設備要素の移動速度を定義する。なお、ポジションチャートという言葉は、タイミングチャートに対する言葉として本実施の形態において定義されたものである。ポジションチャートによる定義は、位置を基準に設備要素の動作が定義されるため、設備要素間の相対的な位置関係を把握し易いというメリットがある。また、相対的な位置関係で設備要素間の関係が定義されるため、一つの設備要素の動作(ポジションチャート)について変更が生じた場合、他の設備要素のポジションチャートは、単に相対的な位置関係を考慮して平行移動させることで修正することができる。したがって、本実施の形態では、編集方法として視覚的に動作が把握し易いポジションチャートによる編集が選択された場合を説明する。
続いて、GUI部111は、編集コマンドの入力を受け付ける(S507)。編集コマンドの入力は、領域534において行われる。領域534には、各アイテムが編集コマンドに対応するツリー部品(以下「コマンドツリー」という。)が表示されている。したがって、ユーザは、所望の編集コマンドに対応したアイテムを選択することによって編集コマンドを入力する。なお、コマンドツリーは、コマンドの分類に応じて階層化されている。
編集コマンドとして追加コマンドが選択されると、チャート処理部115は、ユーザによる対話的な入力に応じてチャートの追加処理を実行する(S509)。この結果、例えば、行551は、図13に示されるような状態となる。なお、チャートの追加処理の詳細については後述する。
また、編集コマンドとして削除コマンドが選択されると、チャート処理部115は、選択されているチャートを削除する(S510)。また、編集コマンドとして移動コマンドが選択されると、チャート処理部115は、ユーザによる入力に応じて、チャートの位置の移動させる(S511)。
なお、図12の処理は、作成するチャートの数に応じて繰り返される。
ステップS509のチャートの追加処理の詳細について説明する。図15は、ポジションチャートの追加処理を説明するためのフローチャートである。
チャート処理部115は、ユーザによる対話的な入力応じて、デバイスリストに登録されている駆動デバイスの中から、ポジションチャートの作成対象とする駆動デバイス(以下「対象デバイス」という。)を選択し、選択された駆動デバイスを対象デバイスとする(S591)。
なお、行551において、l1は、仮想原点を示す。また、l2は、移動下限点を示し、l3は、移動上限点を示す。移動下限点及び移動上限点については、デバイスリストに登録されている対象デバイスの属性値に基づいて表示される。
続いて、チャート処理部115は、GUI部111を介して、領域550において選択されている行に対象デバイスを関連付ける(S592)。図14では、行551に「搬入ホイスト走行」が関連付けられた例が示されている。続いて、ユーザが、行551においてポジションチャートを入力する位置を選択すると、チャート処理部115は、選択された位置をポジションチャートの位置として決定すると共に、選択された位置にポジションチャートを表示させる(S593)。図14には、ポジションチャート551cが表示された例が示されている。
ここで表示されるポジションチャート551cは、ポジションチャートパターンテーブルに登録されているポジションチャートのパターンデータ(ポジションチャートパターンデータ)が表示されたものである。
図16は、ポジションチャートパターンテーブルの構成例を示す図である。図16に示されるように、ポジションチャートパターンテーブル240には、駆動デバイスのタイプや制御方法及び制御方法詳細等(駆動パターン)に応じて、ポジションチャートパターンデータ(設備要素の動作パターン)が登録されている。すなわち、ポジションチャートのパターンは、駆動デバイスのタイプ、制御方法及び制御方法詳細によってある程度特定されため、予めこれらの属性の組み合わせに応じてポジションチャートパターンデータの候補が登録されているのである。したがって、ステップS593において、チャート処理部115は、対象デバイスのタイプ、制御方法及び制御方法詳細に基づいて、対象デバイスに対応するポジションチャートパターンデータをポジションチャートパターンテーブル240より取得し、当該ポジションチャートパターンデータの表示をGUI部111に実行させる。
なお、各ポジションチャートパターンデータは、当該ポジションパターンデータに示される動作を駆動デバイスに実行させるためのプログラム(以下「単体要素プログラム」という。)と関連付けられている。但し、ポジションチャートパターンデータは、各駆動デバイスの具体的な動作に応じて編集(変形)され得る。したがって、単体要素プログラムにおいて、当該編集に応じて変化する部分については変数化されている。
続いて、チャート処理部115は、ユーザによる入力に応じてポジションチャート551cに対して起動条件(インターロック)を設定する(S594)。なお、請求項における動作情報には、インターロックも含まれる。
図17は、ポジションチャートに対して起動条件(インターロック)を設定させるためのGUIの例を示す図である。まず、図17に示されるように、ポジションチャート551cにおいて起動条件を設定する位置(通常はポジションチャートの端点)を選択して、「起動条件」メニュー項目と「トリガー生成」メニュー項目と含むコンテキストメニュー551cmを表示させる。「起動条件」メニュー項目が選択されると、GUI部111は、起動条件に関連する駆動デバイスを選択させる。駆動デバイスの選択は、例えば、駆動デバイスの一覧を表示するダイアログにおいて行われる。駆動デバイスとして入力デバイスが選択されると、チャート処理部115は、ポジションチャート551cの起動条件として選択された入力デバイスを設定する。これは、選択された入力デバイスに何らかの入力があったときにポジションチャート551cによって定義された動作が起動されることを意味する。ポジションチャート551cに起動条件が設定されると、GUI部111は、起動条件が設定されたことを示す記号m1を表示させる(S595)。
続いて、チャート処理部115は、ユーザによる入力に応じてポジションチャート551cに対してトリガーを生成する(S596)。
図18は、ポジションチャートに対してトリガーを生成させるためのGUIの例を示す図である。まず、図18(A)に示されるように、ポジションチャート551cにおいてトリガーを生成する位置が右クリックされると、GUI部111は、コンテキストメニュー551cmを表示させる。コンテキストメニュー551cmにおいて「トリガー」メニュー項目が選択されると、GUI部111は、トリガーの名称及びトリガーの種類(位置データ又は時間)(以下「トリガー情報」という。)を入力させるためのダイアログを表示させる。当該ダイアログにおいてトリガー情報が入力されると、チャート処理部115は、トリガー情報に基づくトリガーをポジションチャート551cに対して生成する。ポジションチャート551cにトリガーが生成されると、GUI部111は、図18(B)に示されるようにトリガーが生成されたことを示す記号m2を表示させる(S597)。なお、位置データによるトリガーとは、設備要素の移動距離に基づくトリガーをいい、時間によるトリガーとは、設備要素の移動時間に基づくトリガーをいう。
なお、ポジションチャートに対して起動条件やトリガーが設定又は生成されると、チャート処理部115は、当該ポジションチャートに対応する単体要素プログラムにおいて起動条件やトリガーに応じて値が変化する変数(パラメータ)に対して、設定又は生成された起動条件又はトリガーに応じた値を設定する。
図12及び図15において説明した処理が、各駆動デバイスについて行われることにより、領域550の各行には、各駆動デバイスに対するポジションチャートが入力される。図19は、各駆動デバイスに対してポジションチャートが入力された状態を示す図である。図19には、行551、行552,行553、及び行554において、搬入ホイスト走行、及び搬入ホイスト上下のポジションチャートが入力された例が示されている。なお、各駆動デバイス名の下に表示されている矢印は、動作の方向を示す。すなわち、行551には、搬入ホイスト走行の行き動作のポジションチャートが入力されている。また、行552には、搬入ホイスト上下の下降動作のポジションチャートが入力されている。また、行553には、搬入ホイスト上下の上昇動作のポジションチャートが入力されている。また、行554には、搬入ホイスト走行の戻り動作のポジションチャートが入力されている。
ところで、ポジションチャートパターンデータは、ポリラインや曲線で構成されている。したがって、ユーザは、簡易な操作でポジションチャートの形状を変更することができる。ポジションチャートの形状が変更されると、チャート処理部115は、当該ポジションチャートに対応する単体要素プログラムにおいてポジションチャートの形状に応じて値が変化する変数に対して、変更された形状に応じた値を設定する。
なお、ポジションチャートの形状の変更は、デバイスリストにおいて設定された当該駆動デバイスの属性情報の範囲内に限られる。例えば、制御方法が位置決め制御の2段として設定されている駆動デバイスのポジションチャートの形状を1段に変更しようとすると、チャート処理部115は、その変更を禁止し、エラーメッセージを表示させる。
ポジションチャートの編集後、メニュー500等を介した入力により、ポジションチャートの保存が指示されると、チャート処理部115は、メモリ装置103上に保持されているポジションチャートの情報(チャート情報)をチャートファイル24に出力する。
図20は、チャートファイルの内容の例を示す図である。図20のチャートファイル24の内容は、図19のポジションチャートに対応する。チャートファイル24には、ステップごとにStepの内訳が記述され、Stepの内訳ごとに、当該ステップのポジションチャートの形状データ、開始条件、トリガー等が記述されている。例えば、図20においてStep241、242,243、244は、図19における行551、552,553,554に順番に対応する。Step241には、Sequence2411、StartTriger2412、及びTrigerCreate2413が属している。Sequence2411では、その下の行にポジションチャート551cの形状データが格納されているファイル(ポジションチャート形状ファイル241pd)のファイル名が記述されている。すなわち、ポジションチャートの形状データは、ポジションチャートごとに別個に作成され、チャートファイル24にはその参照情報が記述される。また、StartTriger2413の下の行には設定された開始条件に関する情報が記述され、TrigerCreate2412の下には、生成されたトリガーに関する情報が記述されている。
ところで、領域533のラジオボタン533bにおいてタイミングチャート(「Timing」)が選択されると、チャート処理部115は、ポジションチャートをタイミングチャートに変換する。GUI部111は、変換されたタイミングチャートを表示させる。
図21は、タイミングチャートの表示例を示す図である。図21では、各駆動デバイスの動作がタイミングチャートによって表現されている。
次に、ステップS60の制御プログラム生成処理について説明する。図22は、制御プログラム生成処理を説明するためのフローチャートである。
ユーザによって制御プログラム30の出力指示が入力されると、GUI部111は、制御プログラムのオプション情報、制御プログラムの名称、及び制御プログラム30の出力先等の情報をユーザに設定させる(S61)。当該情報の設定は、例えば、ダイアログを介して行われる。
続いて、プログラム生成部117は、ワークスペース管理ファイル21、プロジェクト管理ファイル22、デバイスリストファイル23、チャートファイル24及びプログラムテンプレート26に格納されている情報を読み込み(S62)、これらの情報と、ステップS61において設定された情報とに基づいて、制御プログラム30を自動生成する(S63)。より詳しくは、プログラム生成部117は、プログラムテンプレート26において変数化されている部分である、制御対象となるコントローラ等に関する情報、生産設備の構成等に関する情報、生産設備に属する各設備要素の動作に関する情報等に対して具体的な値を設定する。制御対象となるコントローラ等に関する情報は、ワークスペース管理ファイル21やプロジェクト管理ファイル22より取得される。生産設備の構成等に関する情報については、デバイスリストファイル23より取得される。また、各設備要素の動作に関する情報については、チャートファイル24より取得される各ポジションチャートに関連付けられている単位要素プログラムが組み込まれる(当てはめられる)。
続いて、プログラム生成部117は、ステップS61において設定された出力先に、生成した制御プログラム30を出力する(S64)。
上述したように、本実施の形態におけるプログラム生成装置10によれば、プログラムの作成者は、デバイスリストを定義したり、ポジションチャートを入力したりすることで効率的に生産設備の制御プログラムを作成することができる。また、プログラムテンプレート26が予め定義され、制御対象等に応じて変更される部分に対して定義を行うような形で制御プログラムが作成されるため、作成される制御プログラム30の品質が均質化される。したがって、各プログラマーの熟練度の違いに基づくプログラムミスや、独自のプログラミングスタイルが実装されることによるメンテナンス性の低下等を防止することができる。
ところで、メイン画面500の領域540は、CADデータを表示させるためのビューアである。領域540に対象設備のCADデータを表示させることにより、制御プログラム生成プログラム11は、その処理過程において、CADデータとの連携によってユーザに対してより高い操作性を提供することができる。
図23は、CADデータの取り込み処理を説明するためのフローチャートである。図23の処理は、プロジェクトの作成後、任意のタイミングで行うことができる。
CADデータ処理部116は、GUI部111は、ユーザによって選択されたCADデータを取り込む(S701)。GUI部111は、CADデータ処理部116によって取り込まれたCADデータ25を領域540に表示させる(S702)。なお、更に別のCADデータ25を組み合わせて表示させる場合は(S703でYes)、ステップS701及びS702の処理が繰り返される。
必要なCADデータ25の全てが取り込まれると(S703でNo)、CADデータ処理部116は、ユーザによる入力に応じて、領域540において表示されているCADデータに含まれている設備要素の中から、プロジェクトに取り込む設備要素を選択する(S704)。
続いて、CADデータ処理部116は、プロジェクトに取り込まれた設備要素のみを領域540に表示させる(S705)。図24は、プロジェクトに取り込まれた設備要素のみが表示された状態を示す図である。
次に、取り込まれたCADデータとデバイスリストとを関連付けるための処理について説明する。図25は、CADデータとデバイスリストとを関連付けるための処理を説明するためのフローチャートである。図25の処理は、デバイスリストの作成後、任意のタイミングで行うことができる。
まず、CADデータ処理部116は、ユーザによる入力に応じて、CADデータを操作するためのコマンドを入力させるための画面(以下「CAD操作画面」という。)を領域530に表示させる(S711)。CAD操作画面は、例えば、各アイテムがCADの操作コマンドに対応したツリー部品によって構成されている。CAD操作コマンドとしては、例えば、表示方法に関するコマンド、ブロック化に関するコマンド、座標系の設定に関するコマンド、デバイスリストとの紐付け(関連付け)に関するコマンドに分類されている。
続いて、CADデータ処理部116は、ユーザによる入力に応じて、CADデータを構成する設備要素を、同一の駆動デバイスによって駆動される単位でブロック化する(S712)。より詳しくは、ユーザは、領域540において、同一の駆動デバイスによって駆動される設備要素を一つ以上選択する。設備要素が選択された状態において、CAD操作画面においてブロックの生成が指示されると、CADデータ処理部116は、選択されている設備要素をブロック化すると共に、ブロックに対する駆動デバイスを示すマーク(以下「デバイスマーク」という。)を当該ブロックに表示させる。
図26は、デバイスマークの表示例等を説明するための図である。図中において、各ブロックに関連付けられたバルーン記号Bがデバイスマークに相当する。但し、この時点では、ブロックに対して特定の駆動デバイスは関連付けられていないため、デバイスマークには特定の駆動デバイスを示す情報は表示されない。また、ブロック化は、駆動デバイスごとに行われる。したがって、各ブロックを識別するために、それぞれのブロックに属する設備要素の表示色を設定可能としてもよい。なお、図26には、後述の処理によって表示される記号や図形等も含まれている。
続いて、CADデータ処理部116は、CAD操作画面におけるユーザによる入力に応じて、各ブロックと、デバイスリストに含まれている駆動デバイスとの関連付けを行う(S713)。例えば、デバイスリスト処理部114は、デバイスリストに登録されている駆動デバイスの一覧を表示させる。ユーザが一覧の中から一つの駆動デバイスを選択し、続けて領域540におけるブロックを選択すると、CADデータ処理部116は、当該ブロックに当該駆動デバイスを関連付ける。GUI部111は、駆動デバイスが関連付けられたブロックのデバイスマークに、当該駆動デバイスを識別するための番号又は名称を表示させる。
続いて、CADデータ処理部116は、CAD操作画面におけるユーザによる入力に応じて、ブロックごとに座標系及び動作方向と、対象設備の動作のシミュレーション処理の際における各ブロックのアニメーションの表示のさせ方とを設定し、各ブロックの座標系を識別するための座標記号C1(図26参照)を表示させる(S714)。
続いて、CADデータ処理部116は、ユーザによる入力に応じ、各ブロックの動作方法の設定を行う(S715)。ブロックの動作方法としては、例えば、コンベヤータイプ、単純移動、回転移動等がある。続いて、CADデータ処理部116は、ユーザによる入力に応じ、アニメーション表示の際のブロック間の関係を設定する(S716)。続いて、CADデータ処理部116は、ユーザによる入力に応じ、ワーク(ガラス板)のCADデータ(ワークW(図26参照))を取り込む(S717)。
続いて、CADデータ処理部116は、ユーザによる入力に応じ、アニメーション表示の際のワークWと設備要素のブロックとの関係を設定する(S718)。より、詳しくは、ワークWの動きを駆動デバイスの動きと関連付けて設定する。例えば、ワークWのハンドリングや搬送方法等が設定される。続いて、CADデータ処理部116は、ユーザによる入力に応じ、センサに関する設定を行う(S719)。具体的には、領域540においてブロックと関連付けられている駆動デバイスのうち、センサとしての駆動デバイスについて、アニメーション内で各種の検出を行う方法等が設定される。例えば、センサとブロックとの接触を検知するための関係や、センサがワークWを検知するための関係等が設定される。
次に、CADデータを用いた、対象設備の動作のシミュレーション処理について説明する。図27は、対象設備の動作のシミュレーション処理を説明するためのフローチャートである。図27の処理は、CADデータ(ブロック)とデバイスリストとの関連付けが行われ、更に、チャート作成処理が行われた後、任意に実行することができる。
例えば、CAD操作画面において動作確認の実行指示が入力されると、CADデータ処理部116は、選択されたシーケンスをシミュレーションの対象として選択する(S721)。
続いて、CAD操作画面の動作確認操作部721において、再生ボタンがクリックされると(S722)、CADデータ処理部116は、選択されたシーケンスに属するチャート情報、CADデータとデバイスリストとの関連付け、及び図25において説明した処理によって設定された情報等に基づいて、対象設備の動作のシミュレーションを実行し、その動作のアニメーションを領域540に表示させる(S723)。
ところで、領域550においてポジションチャートを作成する際、領域540に対象設備のCADデータを表示させておき、そのCADデータを参照させながら、ポジションチャートを入力させてもよい。
図28は、CADデータとの連携によるポジションチャートの入力の様子を示す図である。図28は、ガラス板を搬入するホイストのブロックを表示させている。図28では、メイン画面500における領域540及び領域550のみが表示されている。図28における領域540と領域550との座標系は同期がとられている。二つの領域における座標系の同期は、例えば、CAD操作画面におけるユーザによる入力に応じて、CADデータ処理部116が実行する。
図28に示されるように、領域540及び領域550の座標系の同期がとられている状態では、ユーザは、領域540に表示されている対象設備のCADデータを参照しつつ、より直感的にポジションチャートを入力することができる。なお、CADデータとブロックとの関連付けが行われている状態においては、ポジションチャートの作成対象とする駆動デバイスは、領域540に表示されているCADデータ上において当該ブロックが存在する位置をクリックすることにより選択することができる。
以上、本発明の実施例について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。