(57)【特許請求の範囲】
【請求項１】
所定の工程を実行するための工程プログラムを実行し、自身に記憶され、前記工程プログラムごとに用意される開始変数及び終了変数を含む装置変数の参照及び変更の少なくとも一方を行う複数の産業装置と、
複数の前記工程に対して指定された実行順で各産業装置を動作させるためのシステムプログラムを実行し、各産業装置の前記装置変数と定期的に整合性が取られる、自身に記憶された開始変数及び終了変数を含むシステム変数の参照及び変更の少なくとも一方を行うコントローラと、
を有し、
前記コントローラは、
各産業装置に記憶された前記装置変数と、自身に記憶された前記システム変数と、を互いに変換するための変換データを記憶する変換データ記憶部と、
前記コントローラの通信相手となり、前記工程を開始させる前記産業装置の前記変換データに基づいて、前記システム変数の開始変数を当該産業装置の前記装置変数の開始変数に変換して、当該産業装置に、当該開始変数を所定の値に変更する旨の指示を送信する変換部と、
を有し、
前記複数の産業装置の各々は、自身に記憶された前記装置変数の開始変数が所定の値に変更されたか否かを監視し、
前記指示を受信した前記産業装置は、前記コントローラから受信した前記指示に基づいて前記装置変数の開始変数を所定の値に変更して前記工程を開始し、当該工程が終了した場合に、前記装置変数の終了変数を所定の値に変更して当該終了変数が所定の値に変更された旨の通知を、前記コントローラに送信し、
前記変換部は、前記産業装置から前記通知を受信した場合に、前記通知を送信した前記産業装置の前記変換データに基づいて、前記通知が示す前記装置変数の終了変数を前記システム変数の終了変数に変換して所定の値に変更し、
前記コントローラは、自身に記憶された前記システム変数の終了変数が所定の値に変更されたか否かを監視し、所定の値に変更された場合に、次の前記工程を実行する産業装置に、当該次の工程を開始させるための前記指示を送信する、
生産システム。
【請求項２】
前記変換データ記憶部は、前記変換データとして、前記産業装置ごとに異なる変換テーブルを記憶し、
前記変換部は、各産業装置の前記変換テーブルに基づいて、当該産業装置の前記装置変数と前記システム変数との変換を行う、
請求項１に記載の生産システム。
【請求項３】
前記変換データ記憶部は、各産業装置の前記変換データが格納された変換データベースを記憶し、
前記変換部は、前記変換データベースに格納された各産業装置の前記変換データに基づいて、当該産業装置の前記装置変数と前記システム変数との変換を行う、
請求項１又は２に記載の生産システム。
【請求項４】
各産業装置の前記装置変数の名称は、当該装置変数に対応する工程を一意に識別する文字列と、他の工程と共通の文字列と、を含む、
請求項１〜３の何れか１項に記載の生産システム。
【請求項５】
所定の工程を実行するための工程プログラムを実行し、装置変数の参照及び変更の少なくとも一方を行う複数の産業装置と、
複数の前記工程に対して指定された実行順で各産業装置を動作させるためのシステムプログラムを実行し、システム変数の参照及び変更の少なくとも一方を行うコントローラと、
各産業装置の前記装置変数と前記システム変数とを互いに変換するための変換データを記憶する変換データ記憶部と、
前記コントローラと各産業装置とが通信する場合に、当該産業装置の前記変換データに基づいて、当該産業装置の前記装置変数と前記システム変数との変換を行う変換部と、
前記複数の工程それぞれに対して、少なくとも、工程の名称と、前記装置変数及び前記システム変数の少なくとも一方と、が関連付けられ、工程情報として保存される工程データベースから取得した複数の前記工程の名称を含み、当該複数の工程の実行順を指定可能なスケジュール画面を表示させる表示制御部と、
前記表示制御部が表示させた前記スケジュール画面において、前記実行順の指定を受け付ける受付部と、
前記受付部が受け付けた前記実行順と、各工程の前記装置変数及び前記システム変数の少なくとも一方と、に基づいて、前記システムプログラムを作成するシステムプログラム作成部と、
を有する生産システム。
【請求項６】
前記複数の工程それぞれの装置変数には、当該工程の実行開始を表す開始装置変数が含まれており、
前記システムプログラム作成部は、前記実行順に従った工程が順次実行されるように、前記実行順において、少なくとも一の工程で変更される変更装置変数に対応する変更システム変数と、前記一の工程に連動して実行される１以上の他の工程の前記開始装置変数に対応する開始システム変数と、を関連付けて前記システムプログラムを作成する、
請求項５に記載の生産システム。
【請求項７】
各産業装置に発生した異常を検出する検出部と、
前記検出部が前記異常を検出した場合に、前記複数の工程それぞれに対して、少なくとも、工程の名称と、前記装置変数及び前記システム変数の少なくとも一方と、が関連付けられた工程情報に基づいて、復旧のために実行する１以上の前記工程の指定を受け付ける受付部と、
前記受付部が受け付けた前記１以上の工程を示す復旧工程情報を記録する記録部と、
を有する請求項１〜６の何れか１項に記載の生産システム。
【請求項８】
前記生産システムは、前記検出部が前記異常を再び検出した場合に、前記記録部が記録した前記復旧工程情報が示す前記１以上の工程を取得し、当該取得した１以上の工程を実行して前記異常を復旧させる復旧部、
を更に有する請求項７に記載の生産システム。
【請求項９】
所定の工程を実行するための工程プログラムを実行し、自身に記憶され、前記工程プログラムごとに用意される開始変数及び終了変数を含む装置変数の参照及び変更の少なくとも一方を複数の産業装置がそれぞれ行い、
複数の前記工程に対して指定された実行順で各産業装置を動作させるためのシステムプログラムを実行し、各産業装置の前記装置変数と定期的に整合性が取られる、自身に記憶された開始変数及び終了変数を含むシステム変数の参照及び変更の少なくとも一方をコントローラが行い、
前記コントローラが、
各産業装置に記憶された前記装置変数と、自身に記憶された前記システム変数と、を互いに変換するための変換データを記憶する変換データ記憶部の前記変換データを取得し、
前記コントローラの通信相手となり、前記工程を開始させる前記産業装置の前記変換データに基づいて、前記システム変数の開始変数を当該産業装置の前記装置変数の開始変数に変換して、当該産業装置に、当該開始変数を所定の値に変更する旨の指示を送信し、
前記複数の産業装置の各々が、自身に記憶された前記装置変数の開始変数が所定の値に変更されたか否かを監視し、
前記指示を受信した前記産業装置は、前記コントローラから受信した前記指示に基づいて前記装置変数の開始変数を所定の値に変更して前記工程を開始し、当該工程が終了した場合に、前記装置変数の終了変数を所定の値に変更して当該終了変数が所定の値に変更された旨の通知を、前記コントローラに送信し、
前記コントローラは、前記産業装置から前記通知を受信した場合に、前記通知を送信した前記産業装置の前記変換データに基づいて、前記通知が示す前記装置変数の終了変数を前記システム変数の終了変数に変換して所定の値に変更し、
前記コントローラは、自身に記憶された前記システム変数の終了変数が所定の値に変更されたか否かを監視し、所定の値に変更された場合に、次の前記工程を実行する産業装置に、当該次の工程を開始させるための前記指示を送信する、
生産方法。
【請求項１０】
所定の工程を実行するための工程プログラムを実行し、自身に記憶され、前記工程プログラムごとに用意される開始変数及び終了変数を含む装置変数の参照及び変更の少なくとも一方を行う複数の産業装置が、複数の前記工程に対して指定された実行順で各産業装置を動作させるためのシステムプログラムを実行し、各産業装置の前記装置変数と定期的に整合性が取られる、自身に記憶された開始変数及び終了変数を含むシステム変数の参照及び変更の少なくとも一方を行うコントローラにより制御される場合に、前記コントローラを、
各産業装置に記憶された前記装置変数と、自身に記憶された前記システム変数と、を互いに変換するための変換データを記憶する変換データ記憶部の変換データを取得する変換データ取得部、
前記コントローラの通信相手となり、前記工程を開始させる前記産業装置の前記変換データに基づいて、前記システム変数の開始変数を当該産業装置の前記装置変数の開始変数に変換して、当該産業装置に、当該開始変数を所定の値に変更する旨の指示を送信する変換部、
として機能させるためのプログラムであって、
前記複数の産業装置の各々は、自身に記憶された前記装置変数の開始変数が所定の値に変更されたか否かを監視し、
前記指示を受信した前記産業装置は、前記コントローラから受信した前記指示に基づいて前記装置変数の開始変数を所定の値に変更して前記工程を開始し、当該工程が終了した場合に、前記装置変数の終了変数を所定の値に変更して当該終了変数が所定の値に変更された旨の通知を、前記コントローラに送信し、
前記変換部は、前記産業装置から前記通知を受信した場合に、前記通知を送信した前記産業装置の前記変換データに基づいて、前記通知が示す前記装置変数の終了変数を前記システム変数の終了変数に変換して所定の値に変更し、
前記コントローラに、自身に記憶された前記システム変数の終了変数が所定の値に変更されたか否かを監視させ、所定の値に変更された場合に、次の前記工程を実行する産業装置に、当該次の工程を開始させるための前記指示を送信させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、生産システム、生産方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、例えばＰＬＣ（Programmable Logic Controller）のように、複数の産業装置を備えたシステムにおいて複数の工程それぞれを実行させる技術が知られている。例えば、特許文献１には、ＰＬＣの動作をラダーチャートに記述してプログラムを作成する技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１９４６７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、複数の産業装置とコントローラがそれぞれ独自に管理する変数を変換し、所定の実行順で各産業装置を動作させることである。
【課題を解決するための手段】
【０００５】
本発明の一側面に係る生産システムは、所定の工程を実行するための工程プログラムを実行し、装置変数の参照及び変更の少なくとも一方を行う複数の産業装置と、複数の前記工程に対して指定された実行順で各産業装置を動作させるためのシステムプログラムを実行し、システム変数の参照及び変更の少なくとも一方を行うコントローラと、各産業装置の前記装置変数と前記システム変数との変換データを記憶する変換データ記憶部と、前記コントローラと各産業装置とが通信する場合に、当該産業装置の前記変換データに基づいて、当該産業装置の前記装置変数と前記システム変数との変換を行う変換部と、を有する。
【０００６】
本発明の一側面に係る生産方法は、所定の工程を実行するための工程プログラムを実行し、装置変数の参照及び変更の少なくとも一方を複数の産業装置がそれぞれ行い、複数の前記工程に対して指定された実行順で各産業装置を動作させるためのシステムプログラムを実行し、システム変数の参照及び変更の少なくとも一方をコントローラが行い、各産業装置の前記装置変数と前記システム変数との変換データを記憶する変換データ記憶部の前記変換データを取得し、前記コントローラと各産業装置とが通信する場合に、当該産業装置の前記変換データに基づいて、当該産業装置の前記装置変数と前記システム変数との変換を行う。
【０００７】
本発明の一側面に係るプログラムは、所定の工程を実行するための工程プログラムを実行し、装置変数の参照及び変更の少なくとも一方を行う複数の産業装置が、複数の前記工程に対して指定された実行順で各産業装置を動作させるためのシステムプログラムを実行し、システム変数の参照及び変更の少なくとも一方を行うコントローラにより制御される場合に、前記コントローラ又は他のコンピュータを、各産業装置の前記装置変数と前記システム変数との変換データを記憶する変換データ記憶部の変換データを取得する変換データ取得部、前記コントローラと各産業装置とが通信する場合に、当該産業装置の前記変換データに基づいて、当該産業装置の前記装置変数と前記システム変数との変換を行う変換部、として機能させる。
【０００８】
また、本発明の一側面に係る生産システムは、前記コントローラは、前記変換データ記憶部と前記変換部とを有し、前記変換部は、前記コントローラの通信相手となる前記産業装置の前記変換データに基づいて、前記システム変数を当該産業装置の前記装置変数に変換して送信し、前記変換部は、前記コントローラの通信相手となる前記産業装置の前記変換データに基づいて、当該産業装置から受信した前記装置変数を前記システム変数に変換する。
【０００９】
また、本発明の一側面に係る生産システムは、前記変換データ記憶部は、前記変換データとして、前記産業装置ごとに異なる変換テーブルを記憶し、前記変換部は、各産業装置の前記変換テーブルに基づいて、当該産業装置の前記装置変数と前記システム変数との変換を行う。
【００１０】
また、本発明の一側面に係る生産システムは、前記変換データ記憶部は、各産業装置の前記変換データが格納された変換データベースを記憶し、前記変換部は、前記変換データベースに格納された各産業装置の前記変換データに基づいて、当該産業装置の前記装置変数と前記システム変数との変換を行う。
【００１１】
また、本発明の一側面に係る生産システムは、各産業装置の前記装置変数の名称は、当該装置変数に対応する工程を一意に識別する文字列と、他の工程と共通の文字列と、を含む。
【００１２】
また、本発明の一側面に係る生産システムは、前記複数の工程それぞれに対して、少なくとも、工程の名称と、前記装置変数及び前記システム変数の少なくとも一方と、が関連付けられ、工程情報として保存される工程データベースから取得した複数の前記工程の名称を含み、当該複数の工程の実行順を指定可能なスケジュール画面を表示させる表示制御部と、前記表示制御部が表示させた前記スケジュール画面において、前記実行順の指定を受け付ける受付部と、前記受付部が受け付けた前記実行順と、各工程の前記装置変数及び前記システム変数の少なくとも一方と、に基づいて、前記システムプログラムを作成するシステムプログラム作成部と、を有する。
【００１３】
また、本発明の一側面に係る生産システムは、前記複数の工程それぞれの装置変数には、当該工程の実行開始を表す開始装置変数が含まれており、前記システムプログラム作成部は、前記実行順に従った工程が順次実行されるように、前記実行順において、少なくとも一の工程で変更される変更装置変数に対応する変更システム変数と、前記一の工程に連動して実行される１以上の他の工程の前記開始装置変数に対応する開始システム変数と、を関連付けて前記システムプログラムを作成する。
【００１４】
また、本発明の一側面に係る生産システムは、各産業装置に発生した異常を検出する検出部と、前記検出部が前記異常を検出した場合に、前記複数の工程それぞれに対して、少なくとも、工程の名称と、前記装置変数及び前記システム変数の少なくとも一方と、が関連付けられた工程情報に基づいて、復旧のために実行する１以上の前記工程の指定を受け付ける受付部と、前記受付部が受け付けた前記１以上の工程を示す復旧工程情報を記録する記録部と、を有する。
【００１５】
また、本発明の一側面に係る生産システムは、前記生産システムは、前記検出部が前記異常を再び検出した場合に、前記記録部が記録した前記復旧工程情報が示す前記１以上の工程を取得し、当該取得した１以上の工程を実行して前記異常を復旧させる復旧部、を更に有する。
【発明の効果】
【００１６】
上記発明によれば、複数の産業装置とコントローラがそれぞれ独自に管理する変数を変換し、所定の実行順で各産業装置を動作させることである。
【図面の簡単な説明】
【００１７】
【図１】実施形態に係る生産システムの全体構成を示す図である。
【図２】システムプログラムと工程プログラムの関係を示す図である。
【図３】工程プログラムの作成手順を示す説明図である。
【図４】生産システムで実現される機能を示す機能ブロック図である。
【図５】変換テーブルのデータ格納例を示す図である。
【図６】変換テーブルのデータ格納例を示す図である。
【図７】生産システムで実行される処理の一例を示すフロー図である。
【図８】生産システムで実行される処理の一例を示すフロー図である。
【図９】変換データベースのデータ格納例を示す図である。
【図１０】スケジュール画面の一例を示す図である。
【図１１】産業装置の名称がドラッグアンドドロップされた場合のタイミングチャートの一例を示す図である。
【図１２】産業装置の名称がドラッグアンドドロップされた場合のタイミングチャートの一例を示す図である。
【図１３】工程の実行順が指定された場合のタイミングチャートの一例を示す図である。
【図１４】２サイクル目の開始タイミングが指定された場合のタイミングチャートの一例を示す図である。
【図１５】変形例（２）の機能ブロック図である。
【図１６】工程データベースのデータ格納例を示す図である。
【図１７】変形例（３）の生産システムの全体構成を示す図である。
【図１８】コントローラが産業装置を制御する様子を示す図である。
【図１９】復旧工程作成画面の一例を示す図である。
【図２０】ユーザが手動で異常を復旧させる様子を示す図である。
【図２１】復旧工程情報によって異常が復旧する様子を示す図である。
【図２２】変形例（３）の機能ブロック図である。
【図２３】復旧工程データベースのデータ格納例を示す図である。
【図２４】変形例（３）の工程データベースのデータ格納例を示す図である。
【発明を実施するための形態】
【００１８】
本発明の発明者の見地によれば、所定の実行順で工程を実行する複数の産業装置の各々をコントローラに制御させる場合、各産業装置の変数を把握したうえでプログラミングをする必要があった。この点、各産業装置とコントローラがそれぞれ独自の変数を管理すれば、コントローラのプログラミング時に各産業装置特有の変数を意識する必要がなくなり、プログラミングが効率化する。そこで本発明の発明者は、複数の産業装置とコントローラがそれぞれ独自に管理する変数を変換し、所定の実行順で各産業装置を動作させるために鋭意研究開発を行った結果、新規かつ独創的なプログラム作成装置等に想到した。以降、本実施形態に係るプログラム作成装置等を詳細に説明する。
【００１９】
［１．生産システムの全体構成］
図１は、実施形態に係る生産システムの全体構成を示す図である。図１に示すように、生産システム１は、プログラム作成装置１０、コントローラ２０、産業装置３０Ａ，３０Ｂ、及びサーバ４０を含む。を含む。これら各装置は、Ｅｔｈｅｒｎｅｔ（登録商標）又は産業装置専用の通信規格等の任意のネットワークを利用して通信可能に接続される。なお、以降の説明で産業装置３０Ａ，３０Ｂを特に区別する必要のないときは、単に産業装置３０と記載する。同様に、ＣＰＵ３１Ａ，３１Ｂ、記憶部３２Ａ，３２Ｂ、及び通信部３３Ａ，３３Ｂを特に区別する必要のないときは、単にＣＰＵ３１、記憶部３２、及び通信部３３と記載する。
【００２０】
プログラム作成装置１０は、プログラムを作成するコンピュータである。例えば、プログラム作成装置１０は、パーソナルコンピュータ、携帯端末（タブレット型端末を含む）、又は携帯電話（スマートフォンを含む）である。プログラム作成装置１０は、ＣＰＵ１１、記憶部１２、通信部１３、操作部１４、及び表示部１５を含む。なお、図１では線を省略しているが、プログラム作成装置１０は、産業装置３０及びサーバ４０とも接続可能である。
【００２１】
ＣＰＵ１１は、少なくとも１つのプロセッサを含む。記憶部１２は、ＲＡＭやハードディスクを含み、各種プログラムやデータを記憶する。ＣＰＵ１１は、これらプログラムやデータに基づいて各種処理を実行する。通信部１３は、ネットワークカードや各種通信コネクタ等の通信インタフェースを含み、他の装置との通信を行う。操作部１４は、マウスやキーボード等の入力デバイスである。表示部１５は、液晶ディスプレイ又は有機ＥＬディスプレイ等であり、ＣＰＵ１１の指示により各種画面を表示する。
【００２２】
コントローラ２０は、複数の産業装置３０を制御するコンピュータである。例えば、コントローラ２０は、ＰＬＣと呼ばれるコンピュータであってもよいし、ＰＬＣと同等の機能を有する他の名称のコンピュータであってもよい。例えば、コントローラ２０と産業装置３０の全体は、ラインよりも小さな単位であるセルと呼ばれることがあり、この場合には、コントローラ２０は、セルコントローラと呼ばれることもある。
【００２３】
コントローラ２０は、ＣＰＵ２１、記憶部２２、及び通信部２３を含む。ＣＰＵ２１、記憶部２２、及び通信部２３の物理的構成は、それぞれＣＰＵ１１、記憶部１２、及び通信部１３と同様であってよい。なお、コントローラ２０は、産業装置３０の制御だけではなく、自身の直下に接続されたロボットやモータ等の機器を直接的に制御してもよいし、産業装置３０の動作結果を示すデータの解析をサーバ４０に依頼してもよい。
【００２４】
産業装置３０は、工程を実行する装置である。産業装置３０は、任意の種類の装置を適用可能であり、例えば、ロボットコントローラ、ロボットコントローラの下位装置、産業用ロボット、モータコントローラ、モータコントローラの下位装置、工作機械、プレス加工機、又は搬送機器などである。ＰＬＣも産業装置の一種である。産業装置３０は、ＣＰＵ３１、記憶部３２、及び通信部３３を含む。ＣＰＵ３１、記憶部３２、及び通信部３３の物理的構成は、それぞれＣＰＵ１１、記憶部１２、及び通信部１３と同様であってよい。
【００２５】
なお、産業装置３０は、他の物理的構成が含まれもよく、例えば、ＡＳＩＣと呼ばれる特定用途向けの集積回路が含まれてもよい。また、産業装置３０には、任意の物理的構成が接続されてよく、例えば、モータ等の制御対象の機器、モータ等の動作を検出するためのセンサ、加工対象となるワークの状態を撮影するカメラ、入出力機器、又は他の産業装置などが接続されていてもよい。また、本実施形態では、コントローラ２０が２台の産業装置３０を制御する場合を説明するが、コントローラ２０が制御する産業装置３０の台数は、任意の台数であってよく、例えば、１台であってもよいし、３台以上であってもよい。
【００２６】
サーバ４０は、サーバコンピュータである。サーバ４０は、ＣＰＵ４１、記憶部４２、及び通信部４３を含む。ＣＰＵ４１、記憶部４２、及び通信部４３の物理的構成は、それぞれＣＰＵ１１、記憶部１２、及び通信部１３と同様であってよい。サーバ４０は、コントローラ２０及び産業装置３０の動作結果を示すデータを収集したり、収集したデータ基づいて動作解析を行ったりする。なお、データの収集や解析を実行するコンピュータは、サーバ４０に限られず、他のコンピュータであってもよい。例えば、プログラム作成装置１０、ユーザが操作する他の装置、又は他のサーバコンピュータによってデータが収集されたり解析されたりしてもよい。
【００２７】
なお、記憶部１２，２２，３２，４２の各々に記憶されるものとして説明するプログラム及びデータは、ネットワークを介して供給されるようにしてもよい。また、各装置のハードウェア構成は、上記の例に限られず、種々のハードウェアを適用可能である。例えば、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部（例えば、光ディスクドライブやメモリカードスロット）や外部機器と直接的に接続するための入出力部（例えば、ＵＳＢ端子）が含まれていてもよい。この場合、情報記憶媒体に記憶されたプログラムやデータが、読取部又は入出力部を介して供給されるようにしてもよい。
【００２８】
［２．生産システムの概要］
まず、生産システム１の概要を説明する。プログラム作成装置１０は、コントローラ２０が複数の産業装置３０を制御するためのシステムプログラムを作成する。コントローラ２０と産業装置３０の全体をセルと呼ぶ場合には、システムプログラムはセルプログラムと呼ばれることもある。システムプログラムは、変数を利用して工程の実行順を制御するためのプログラムである。実行順とは工程が実行される順序である。
【００２９】
変数は、工程が実行される場合に参照及び変更の少なくとも一方が行われる情報である。本実施形態では、産業装置３０の記憶部３２に、工程を実行するための工程プログラムが記憶されており、変数は、工程プログラムにおいて参照及び変更の少なくとも一方が行われる。参照は、変数に対応するレジスタが読み出されることである。変更は、変数に対応するレジスタの値を書き換えることである。
【００３０】
変数は、工程の実行条件となり、工程ごとに用意される。変数は、産業装置３０の動作を示す情報ということもできる。例えば、工程には、工程の開始条件となる開始変数、中断条件（一時停止条件）となる中断変数、又は、終了条件となる終了変数が用意される。これらの変数以外にも、任意の変数が存在してよく、例えば、工程がビジー状態であることを示す変数、工程の実行結果を示す変数、途中計算を示す変数、産業装置３０の設定を示す変数、又はセンサの検出結果を示す変数があってもよい。変数は、入出力変数と呼ばれることもある。変数は、産業装置３０のレジスタに対応する。変数は、産業装置３０又は他の機器（コントローラ２０等）によって参照される。
【００３１】
本実施形態では、コントローラ２０と産業装置３０がそれぞれ独自に変数を管理する。このため、同じ変数であったとしても、コントローラ２０が管理する名称と、産業装置３０が管理する名称と、が異なる。以降、コントローラ２０が管理する変数をシステム変数と記載し、産業装置３０が管理する変数を装置変数と記載する。システム変数は、コントローラ２０が識別する変数である。システム変数は、システムプログラムにより参照及び変更の少なくとも一方が行われる。一方、装置変数は、産業装置３０が識別する変数である。装置変数は、工程プログラムにより参照及び変更の少なくとも一方が行われる。各産業装置３０の装置変数の名称は、当該装置変数に対応する工程を一意に識別する文字列と、他の工程と共通の文字列と、を含むものとする。
【００３２】
例えば、コントローラ２０のユーザと、産業装置３０のユーザと、が互いに異なる場合には、各ユーザは、独自の変数を設定する。コントローラ２０のユーザは、産業装置３０のユーザが設定した装置変数を意識せずに、独自のシステム変数を設定可能である。産業装置３０のユーザは、コントローラ２０のユーザが設定したシステム変数を意識せずに、独自の装置変数を設定可能である。なお、コントローラ２０のユーザと、産業装置３０のユーザと、は同じであってもよい。
【００３３】
工程とは、産業装置３０が行う作業又は動作である。工程は、１つの作業又は動作だけから構成されてもよいし、複数の作業又は動作の組み合わせから構成されてもよい。産業装置３０は、任意の用途に応じた工程を実行可能であり、例えば、ワークの認識、ワークの把持、扉の開閉、ワークのセット、工作機械にワークを固定する動作、又は工作機械を利用した加工などを工程として実行する。産業装置３０は、少なくとも１つの工程を実行する。産業装置３０は、１つの工程だけを実行してもよいし、複数の工程を実行してもよい。
【００３４】
工程プログラムは、工程における個々の手順が定義されたプログラムである。工程プログラムは、産業装置３０の動作を定義したプログラムということもできる。工程プログラムは、任意の言語で作成可能であり、例えば、ラダー言語又はロボット言語によって作成される。産業装置３０によって工程プログラムの言語が異なってもよく、例えば、産業装置３０Ａの工程プログラムがラダー言語であり、産業装置３０Ｂの工程プログラムがロボット言語であってもよい。例えば、工程プログラムは、開始変数が実行開始の条件となるように、ラダーチャートにおける起動スイッチやコイルが記述されていたり、ソースコードにおける条件分岐が記述されていたりする。また例えば、工程プログラムは、工程の最後の処理が終了した場合に、終了変数を変更するように命令が記述されている。また例えば、工程プログラムは、工程の実行中に異常が発生した場合に、中断変数を変更するように命令が記述されている。
【００３５】
本実施形態では、工程ごとに工程プログラムが用意されており、工程と工程プログラムは、１対１の関係にある。このため、ある産業装置３０がｎ個（ｎは自然数）の工程を行うとすると、当該産業装置３０は、少なくともｎ個の工程プログラムを記憶する。なお、工程と工程プログラムは、１対１の関係になくてもよく、例えば、１つの工程プログラムにより複数の工程が実行されてもよいし、１つの工程を実行するために複数の工程プログラムが用意されていてもよい。
【００３６】
図２は、システムプログラムと工程プログラムの関係を示す図である。本実施形態では、産業装置３０Ａが工程Ａ１，Ａ２，Ａ３の３つの工程を実行し、その後に、産業装置３０Ｂが工程Ｂ１，Ｂ２の２つの工程を実行する場合を例に挙げる。図２に示すように、産業装置３０Ａは、工程Ａ１，Ａ２，Ａ３にそれぞれ対応する工程プログラムＰＡ１，ＰＡ２，ＰＡ３を記憶する。産業装置３０Ｂは、工程Ｂ１，Ｂ２にそれぞれ対応する工程プログラムＰＢ１，ＰＢ２を記憶する。以降、個々の工程プログラムを区別しないときは、単に工程プログラムＰと記載する。
【００３７】
図２の例では、工程プログラムＰのデフォルトの変数として、実行開始を示す開始変数「Ｓｔａｒｔ」、中断（一時停止）を示す中断変数「Ａｂｏｒｔ」、ビジー状態を示すビジー変数「Ｂｕｓｙ」、及び実行終了を示す終了変数「Ｅｎｄ」が用意されている。工程プログラムＰには、これらデフォルトの変数以外の変数も設定可能である。例えば、所定の信号の値を示す変数、又は、途中計算を示す変数が設定されてもよい。
【００３８】
本実施形態では、ユーザがプログラム作成装置１０を操作して工程プログラムＰを作成する場合を説明するが、工程プログラムＰは、他のコンピュータにより作成されてもよい。例えば、コントローラ２０のユーザと産業装置３０のユーザとが異なる場合には、工程プログラムＰは、プログラム作成装置１０以外の他のコンピュータにより作成される。システムプログラムＱは、工程の実行順を制御するためのプログラムなので、システムプログラムＱを作成する前に、工程プログラムＰが予め作成される。
【００３９】
図３は、工程プログラムＰの作成手順を示す説明図である。ここでは、工程プログラムＰＡ２の作成手順を例に挙げて説明する。図３に示すように、ユーザは、プログラム作成装置１０にインストールされたエンジニアリングツールを利用して、工程プロジェクトを作成する（図３の手順１）。工程プロジェクトは、工程プログラムＰＡ２の管理単位であり、産業装置３０の名称や工程の名称等の任意のプロジェクト名を設定可能である。
【００４０】
ユーザは、工程プロジェクトを作成すると、工程プログラムＰＡ２の初期設定を行う（図３の手順２）。初期設定では、工程プログラムＰＡ２の基本的な情報が設定され、例えば、工程を実行させる産業装置３０Ａの名称、工程プログラムＰＡ２の種類、及び工程の名称等が指定される。工程の名称は、産業装置３０の中で工程を一意に識別する情報である。工程の名称は、ユーザにより入力された任意の文字列であってよく、他の工程とは重複しないように設定される。なお、後述する想定実行時間についても、手順２で指定されるものとする。
【００４１】
図３の手順２において、作成中の工程プログラムＰＡ２に対してデフォルトの変数が設定される。例えば、工程プログラムＰＡ２のデフォルトの変数として、開始変数「Ｓｔａｒｔ」、中断変数「Ａｂｏｒｔ」、ビジー変数「Ｂｕｓｙ」、及び終了変数「Ｅｎｄ」が設定される。例えば、工程Ａ２の開始変数「Ｓｔａｒｔ」が所定の値に変更されると、工程プログラムＰＡ２が実行されて工程Ａ２が開始される。また例えば、工程プログラムＰＡ２に記述された全ての命令が実行されて工程が終了すると、工程Ａ２の終了変数「Ｅｎｄ」が所定の値に変更される。
【００４２】
本実施形態では、他の工程Ａ１，Ａ３でもデフォルトの変数が用意されている。このため、工程Ａ２の変数であることを識別できるように、工程Ａ２を識別する「Ａ２」の文字列が工程の名称に付与される。例えば、工程Ａ２の開始変数の名称は「Ａ２．Ｓｔａｒｔ」となり、工程Ａ２の終了変数の名称は「Ａ２．Ｅｎｄ」となる。図２及び図３では省略しているが、中断変数「Ａｂｏｒｔ」及びビジー変数「Ｂｕｓｙ」についても、「Ａ２」の文字列が付与される。工程プログラムＰＡ２の作成時に設定される変数は、装置変数である。図３に示すように、本実施形態では、装置変数の名称は、工程の名称と、デフォルトの変数の名称と、を含む。
【００４３】
ユーザは、デフォルトの変数以外の他の変数も設定可能である。例えば、ユーザは、他の変数を設定する場合、産業装置３０Ａ内の所定の信号の名称を示す「Ｓ１」を入力する（図３の手順３）。他の変数の名称は、開始変数等と同様に、工程Ａ２を識別する「Ａ２」の文字列が付与されて「Ａ２．Ｓ１」となる。この変数も装置変数の一例である。
【００４４】
変数の設定が終了すると、工程プログラムＰＡ２のプログラミングを行い（図３の手順４）、工程プログラムＰＡ２の作成が完了する。工程プログラムＰＡ２のプログラミング自体は、公知の種々の手法を適用可能であり、例えば、ラダー言語又はロボット言語を利用可能である。なお、プログラミングや変数設定の際に、ユーザが補足説明のコメントを入力するようにしてもよい。
【００４５】
工程プログラムＰＡ２が作成されると、工程プログラムＰＡ２の実データが、産業装置３０Ａに記録される。更に、ユーザが指定した工程の名称や変数の名称等が格納された工程情報が、コントローラ２０の工程データベースに登録される。工程情報及び工程データベースの詳細については後述する。ユーザは、工程の数だけ上記作成手順を繰り返し、各工程の工程プログラムＰと工程情報を作成する。
【００４６】
なお、本実施形態では、工程プログラムＰＡ１，ＰＡ２，ＰＡ３の作成時に、産業装置３０Ａの中での実行順が指定され、工程情報に格納されるものとする。工程プログラムＰＢ１，ＰＢ２についても同様であり、これらの作成時に産業装置３０Ｂの中での実行順が指定され、工程情報に格納されるものとする。ただし、産業装置３０Ａが実行する工程と、産業装置３０Ｂが実行する工程と、の何れが先に実行させるかについては、工程プログラムＰの作成時点で指定されてもよいし、この時点では指定されないようにしてもよい。
【００４７】
ユーザは、工程プログラムＰの作成及び工程情報の登録を完了すると、システムプログラムＱを作成する。本実施形態では、工程Ａ１，Ａ２，Ａ３，Ｂ１，Ｂ２の順序で実行されるので、ユーザは、この順番で工程プログラムＰＡ１，ＰＡ２，ＰＡ３，ＰＢ１，ＰＢ２が実行されるように、システムプログラムＱを作成する。
【００４８】
図２の例であれば、工程Ａ１は、所定の入出力信号が入力されると開始する。例えば、入出力信号は、コントローラ２０又は産業装置３０Ａに備えられたボタン等の外部機器から入力される。システムプログラムＱは、入出力信号が入力された場合に、工程Ａの装置変数「Ａ１．Ｓｔａｒｔ」を所定の値に変更する。この装置変数をシステム変数で記述すると「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ１．ＳＴ」となる。このように、本実施形態のシステム変数は、産業装置３０Ａの名称を示す「Ｅｑｕｉｐ３０Ａ」、工程の実行順を示す「Ｓｔｅｐ１」、及び変数の種類を示す「ＳＴ」を含み、装置変数とは異なるルールで名称が付与される。図２に示すように、他の変数についても同様のルールでシステム変数の名称が付与される。
【００４９】
例えば、ユーザは、システムプログラムＱの作成時に、システム変数と装置変数とを互いに変換する変換テーブルを作成してコントローラ２０に記憶させる。変換テーブルは、産業装置３０ごとに作成される。システムプログラムＱは、産業装置３０Ａの変換テーブルに基づいて、システム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ１．ＳＴ」を装置変数「Ａ１．Ｓｔａｒｔ」に変換し、この装置変数を所定の値に変更する。装置変数「Ａ１．Ｓｔａｒｔ」が所定の値になると、工程プログラムＰＡ１が実行されて工程Ａ１が開始する。
【００５０】
工程Ａ１が正常に終了すると、工程Ａ１の装置変数「Ａ１．Ｅｎｄ」が所定の値になり、コントローラ２０にその旨が通知される。システムプログラムＱは、産業装置３０Ａの変換テーブルに基づいて、装置変数「Ａ１．Ｅｎｄ」をシステム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ１．ＥＮ」に変換し、このシステム変数が所定の値になったことを検出する。システムプログラムＱは、産業装置３０Ａの変換テーブルに基づいて、システム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ２．ＳＴ」を装置変数「Ａ２．Ｓｔａｒｔ」に変換し、この装置変数を所定の値に変更する。装置変数「Ａ２．Ｓｔａｒｔ」が所定の値になると、工程プログラムＰＡ２が実行されて工程Ａ２が開始する。
【００５１】
工程Ａ２が正常に終了すると、工程Ａ２の装置変数「Ａ２．Ｓ１」と「Ａ２．Ｅｎｄ」が所定の値になり、コントローラ２０にその旨が通知される。システムプログラムＱは、産業装置３０Ａの変換テーブルに基づいて、装置変数「Ａ２．Ｓ１」と「Ａ２．Ｅｎｄ」を、それぞれシステム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ２．Ｓ−１」と「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ２．ＥＮ」に変換し、これらのシステム変数が所定の値になったことを検出する。システムプログラムＱは、産業装置３０Ａの変換テーブルに基づいて、システム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ３．ＳＴ」を装置変数「Ａ３．Ｓｔａｒｔ」に変換し、この装置変数「Ａ３．Ｓｔａｒｔ」を所定の値に変更する。装置変数「Ａ３．Ｓｔａｒｔ」が所定の値になると、工程プログラムＰＡ３が実行されて工程Ａ３が開始する。
【００５２】
工程Ａ３が正常に終了すると、工程Ａ３の装置変数「Ａ３．Ｅｎｄ」が所定の値になり、コントローラ２０にその旨が通知される。システムプログラムＱは、産業装置３０Ａの変換テーブルに基づいて、装置変数「Ａ３．Ｅｎｄ」をシステム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ３．ＥＮ」に変換し、このシステム変数が所定の値になったことを検出する。システムプログラムＱは、産業装置３０Ｂの変換テーブルに基づいて、システム変数「Ｅｑｕｉｐ３０Ｂ．Ｓｔｅｐ４．ＳＴ」を装置変数「Ｂ１．Ｓｔａｒｔ」に変換し、この装置変数を所定の値に変更する。装置変数「Ｂ１．Ｓｔａｒｔ」が所定の値になると、工程プログラムＰＢ１が実行されて工程Ｂ１が開始する。
【００５３】
工程Ｂ１が正常に終了すると、工程Ｂ１の終了変数「Ｂ１．Ｅｎｄ」が所定の値になり、コントローラ２０にその旨が通知される。システムプログラムＱは、産業装置３０Ｂの変換テーブルに基づいて、装置変数「Ｂ１．Ｅｎｄ」をシステム変数「Ｅｑｕｉｐ３０Ｂ．Ｓｔｅｐ４．ＥＮ」に変換し、このシステム変数が所定の値になったことを検出する。システムプログラムＱは、産業装置３０Ｂの変換テーブルに基づいて、システム変数「Ｅｑｕｉｐ３０Ｂ．Ｓｔｅｐ５．ＳＴ」を装置変数「Ｂ２．Ｓｔａｒｔ」に変換し、この装置変数を所定の値に変更する。装置変数「Ｂ２．Ｓｔａｒｔ」が所定の値になると、工程プログラムＰＢ２が実行されて工程Ｂ２が開始する。
【００５４】
工程Ｂ２が正常に終了すると、工程Ｂ２の終了変数「Ｂ２．Ｅｎｄ」が所定の値になり、コントローラ２０にその旨が通知される。システムプログラムＱは、産業装置３０Ｂの変換テーブルに基づいて、装置変数「Ｂ２．Ｅｎｄ」をシステム変数「Ｅｑｕｉｐ３０Ｂ．Ｓｔｅｐ５．ＥＮ」に変換し、このシステム変数が所定の値になったことを検出する。システムプログラムＱは、所定の出力信号を出力させ、１サイクル目の全工程が終了する。出力信号は、コントローラ２０又は産業装置３０に対する信号であってもよいし、外部のセンサやＬＥＤライト等の機器に対する信号であってもよい。
【００５５】
システム変数と装置変数は、サイクルの終了時又は各工程の終了後等の任意のタイミングで初期値に変更される。２サイクル目は、１サイクル目の終了後に開始されてもよいし、１サイクル目の途中で開始されてもよい。２サイクル目の開始タイミングが訪れると、システムプログラムＱは、産業装置３０Ａの変更テーブルに基づいて、工程Ａ１の装置変数「Ａ１．Ｓｔａｒｔ」を所定の値に変更させ、２サイクル目の各工程が開始する。以降、１サイクル目と同様にして各工程が周期的に実行される。
【００５６】
以上のように、本実施形態の生産システム１は、複数の産業装置３０とコントローラ２０がそれぞれ独自に管理する変数を変換し、所定の実行順で各産業装置３０を動作させる構成を有する。以降、当該構成の詳細を説明する。
【００５７】
［３．生産システムで実現される機能］
図４は、生産システム１で実現される機能を示す機能ブロック図である。本実施形態では、コントローラ２０と産業装置３０の各々で実現される機能について説明する。なお、産業装置３０Ａ，３０Ｂの各々では、同様の機能が実現されるため、図４では、１つの産業装置３０として記載する。
【００５８】
［３−１．コントローラで実現される機能］
図４に示すように、コントローラ２０では、データ記憶部２００、システムプログラム実行部２０１、及び変換部２０２が実現される。コントローラ２０は、複数の工程に対して指定された実行順で各産業装置３０を動作させるためのシステムプログラムＱを実行し、システム変数の参照及び変更の少なくとも一方を行う。
【００５９】
［データ記憶部］
データ記憶部２００は、記憶部２２を主として実現される。データ記憶部２００は、産業装置３０を制御するために必要なデータを記憶する。例えば、データ記憶部２００は、システムプログラムＱを記憶する。データ記憶部２００に記憶されたシステムプログラムＱは、プログラム作成装置１０によって作成される。また例えば、データ記憶部２００は、コントローラ２０の制御対象となる産業装置３０Ａ，３０Ｂの各々の名称やＩＰアドレス等の情報を記憶してもよい。
【００６０】
また例えば、データ記憶部２００は、各産業装置３０の装置変数に対応するシステム変数の値を記憶してもよい。システム変数と装置変数とは定期的に整合性が取られており、装置変数が変更されると、対応するシステム変数も変更されるものとする。その際には、後述する変換部２０２により装置変数がシステム変数に変換される。なお、システム変数が先に変更されてもよく、この場合には、変換部２０２によりシステム変数が装置変数に変換され、装置変数が変更される。
【００６１】
また例えば、データ記憶部２００は、産業装置３０Ａの変換テーブルＴＡと、産業装置３０Ｂの変換テーブルＴＢと、を記憶する。以降、これらの変換テーブルＴＡ，ＴＢを特に区別しないときは、単に変換テーブルＴと記載する。
【００６２】
図５は、変換テーブルＴＡのデータ格納例を示す図であり、図６は、変換テーブルＴＢのデータ格納例を示す図である。図５及び図６に示すように、変換テーブルＴＡには、システム変数と産業装置３０Ａの装置変数とが関連付けられており、変換テーブルＴＢには、システム変数と、産業装置３０Ｂの装置変数と、が関連付けられている。例えば、変換テーブルＴＡ，ＴＢは、システムプログラムＱの作成時にユーザによって作成されてもよいし、工程プログラムＰの作成時にユーザによって作成されてもよい。
【００６３】
変換テーブルＴは、各産業装置３０の装置変数とシステム変数との変換データの一例である。本実施形態では、データ記憶部２００は、変換データとして、産業装置３０ごとに異なる変換テーブルＴを記憶する。変換テーブルＴは、産業装置３０の数だけ用意される。即ち、変換テーブルＴと産業装置３０とは、１対１で対応する。本実施形態で変換テーブルＴと記載した箇所は、変換データと読み替えることができる。変換データは、各産業装置３０の装置変数とシステム変数とを互いに変換するためのデータである。別の言い方をすれば、変換データは、各産業装置３０の装置変数とシステム変数とが関連付けられたデータである。変換データは、装置変数とシステム変数の対応関係を示すデータということもできる。変換データにより、装置変数に対応するシステム変数と、システム変数に対応する装置変数と、が検索可能になる。
【００６４】
なお、変換データは、テーブル形式のデータに限られず、任意の形式のデータであってもよい。例えば、後述する変形例のように、産業装置３０ごとに別々のテーブルに分けるのではなく、複数の産業装置３０の装置変数とシステム変数の関係を１つにまとめたデータベースであってもよい。また例えば、装置変数とシステム変数の関係をプログラムコードの一部として記述する場合には、変換データは、これらの変換プログラムであってもよい。また例えば、変換データは、ＣＳＶ形式やテキスト形式等の任意のデータであってよい。データ記憶部２００は、変換テーブルＴを記憶することによって、変換データ記憶部として機能する。
【００６５】
［システムプログラム実行部］
システムプログラム実行部２０１は、ＣＰＵ２１を主として実現される。システムプログラム実行部２０１は、システムプログラムＱに基づいて、工程の実行順を制御する。例えば、システムプログラム実行部２０１は、ユーザにより指定された実行順で産業装置３０が動作するように、各産業装置３０に対して各工程の開始指示を送る。
【００６６】
本実施形態では、開始変数によって工程の実行開始が制御されるので、システムプログラム実行部２０１は、後述する変換部２０２に、システム変数で記述された開始変数を装置変数に変換させ、当該変換された装置変数の変更指示を産業装置３０に送る。また、本実施形態では、終了変数によって工程の終了が検出されるので、システムプログラム実行部は、後述する変換部２０２に、装置変数で記述された終了変数をシステム変数に変換させ、当該変換されたシステム変数の値によって工程の終了を検出する。システムプログラム実行部２０１は、次の工程を開始するために、変換部２０２を利用して当該次の工程の開始変数を変更する。以降、同様の処理によって、工程の実行順が制御される。工程の異常の検出やビジー状態の検出についても同様であり、装置変数として記述された中断変数やビジー変数がシステム変数に変換されることによって、これらの検出が可能となる。
【００６７】
［変換部］
変換部２０２は、ＣＰＵ２１を主として実現される。変換部２０２は、コントローラ２０と各産業装置３０とが通信する場合に、当該産業装置３０の変換テーブルＴに基づいて、当該産業装置３０の装置変数とシステム変数との変換を行う。本実施形態では、産業装置３０ごとに変換テーブルＴが用意されているので、変換部は、各産業装置３０の変換テーブルＴに基づいて、当該産業装置３０の装置変数とシステム変数との変換を行うことになる。
【００６８】
コントローラ２０と各産業装置３０とが通信する場合とは、コントローラ２０が産業装置３０に情報を送信する場合、又は、産業装置３０がコントローラ２０に情報を送信する場合である。装置変数とシステム変数との変換とは、装置変数をシステム変数に変換すること、又は、システム変数を装置変数に変換することである。ここでの変換とは、関連付けられた他の変数を特定することである。変数を特定するとは、変数の名称を特定すること、又は、変数に対応するレジスタを特定することである。
【００６９】
例えば、変換部２０２は、コントローラ２０の通信相手となる産業装置３０の変換テーブルＴに基づいて、システム変数を当該産業装置３０の装置変数に変換して送信する。ここでのコントローラ２０の通信相手とは、情報の送信先の産業装置３０である。変換部２０２は、コントローラ２０が何らかの指示を産業装置３０に送る場合に、データ記憶部２００に記憶された変換テーブルＴのうち、当該産業装置３０の変換テーブルＴを参照し、システム変数を装置変数に変換して送信する。
【００７０】
また例えば、変換部２０２は、コントローラ２０の通信相手となる産業装置３０の変換テーブルＴに基づいて、当該産業装置３０から受信した装置変数をシステム変数に変換する。ここでのコントローラ２０の通信相手とは、応答を送信する産業装置３０である。変換部２０２は、コントローラ２０が何らかの応答を産業装置３０から受け取る場合に、データ記憶部２００に記憶された変換テーブルＴのうち、当該産業装置３０の変換テーブルＴを参照し、装置変数をシステム変数に変換して送信する。
【００７１】
［３−２．産業装置で実現される機能］
図４に示すように、産業装置３０では、データ記憶部３００と、工程プログラム実行部３０１と、が実現される。複数の産業装置３０の各々は、所定の工程を実行するための工程プログラムＰを実行し、装置変数の参照及び変更の少なくとも一方を行う。
【００７２】
［データ記憶部］
データ記憶部３００は、記憶部３２を主として実現される。データ記憶部３００は、産業装置３０が工程を実行するために必要なデータを記憶する。例えば、データ記憶部３００は、工程プログラムＰを記憶する。本実施形態では、工程プログラムＰごとに工程情報が用意されるので、データ記憶部３００は、工程プログラムＰと工程情報を互いに関連付けて記憶してもよい。また、データ記憶部３００は、各工程の装置変数の値を記憶する。先述したように、データ記憶部３００の装置変数と、データ記憶部２００のシステム変数と、は整合性が取られる。また、データ記憶部３００は、モータを制御する際のパラメータやロボットのティーチングデータ等を記憶してもよい。
【００７３】
［工程プログラム実行部］
工程プログラム実行部３０１は、ＣＰＵ３１を主として実現される。工程プログラム実行部３０１は、データ記憶部３００に記憶された工程プログラムＰと変数に基づいて、各工程を実行する。例えば、コントローラ２０から受信した指示により、装置変数で記述された開始変数が所定の値に変化し、工程プログラム実行部３０１は、その旨を検知した場合に工程を開始する。また例えば、工程プログラム実行部３０１は、工程プログラムＰに記述された最後の処理が終了した場合に、装置変数で記述された終了変数を所定の値に変化させる。装置変数で記述された終了変数は、変換部２０２によってシステム変数に変換され、システムプログラム実行部２０１は工程が終了したことを検知する。その後、次の工程の開始変数（装置変数で記述された開始変数）が所定の値に変化し、工程プログラム実行部３０１は、次の工程の工程プログラムＰの実行を開始する。以降、同様の処理によって、各工程が順次実行される。
【００７４】
［４．生産システムで実行される処理］
図７及び図８は、生産システム１で実行される処理の一例を示すフロー図である。図７及び図８に示す処理は、ＣＰＵ２１が記憶部２２に記憶されたシステムプログラムＱに従って動作し、ＣＰＵ３１が記憶部３２に記憶された工程プログラムＰに従って動作することによって実行される。図７及び図８に示す処理は、図４に示す機能ブロックにより実行される処理の一例である。本実施形態では、図２に示す工程が実行される場合の処理を例に挙げる。なお、コントローラ２０の記憶部２２に記憶されたシステム変数と、産業装置３０の記憶部３２に記憶された装置変数と、は互いに初期値が設定されているものとする。
【００７５】
図７に示すように、コントローラ２０は、１サイクル目の開始条件となる入出力信号を受け付けると（Ｓ１）、産業装置３０Ａの変換テーブルＴＡに基づいて、システム変数で記述された工程Ａ１の開始変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ１．ＳＴ」を装置変数「Ａ１．Ｓｔａｒｔ」に変換し、装置変数「Ａ１．Ｓｔａｒｔ」を所定の値に変更する（Ｓ２）。Ｓ２においては、コントローラ２０は、システム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ１．ＳＴ」を装置変数「Ａ１．Ｓｔａｒｔ」に変換し、この装置変数を所定の値に変更する旨の指示を送る。
【００７６】
産業装置３０Ａは、コントローラ２０からの指示を受信すると、装置変数で記述された工程Ａ１の開始変数「Ａ１．Ｓｔａｒｔ」を所定の値に変更して工程Ａ１を開始する（Ｓ３）。Ｓ３においては、工程プログラムＰＡ１は、装置変数「Ａ１．Ｓｔａｒｔ」を監視し、所定の値になったことを検出すると、最初に記述された命令を実行し、工程Ａ１を開始する。
【００７７】
産業装置３０Ａは、工程Ａ１が終了すると、装置変数で記述された工程Ａ１の終了変数「Ａ１．Ｅｎｄ」を所定の値に変更する（Ｓ４）。Ｓ４においては、産業装置３０Ａは、コントローラ２０に対し、装置変数「Ａ１．Ｅｎｄ」が所定の値に変更されたことを通知する。
【００７８】
コントローラ２０は、産業装置３０Ａの変換テーブルＴＡに基づいて、装置変数で記述された工程Ａ１の終了変数「Ａ１．Ｅｎｄ」をシステム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ１．ＥＮ」に変換して所定の値に変更されたこと（工程Ａ１が終了したこと）を検出する（Ｓ５）。
【００７９】
コントローラ２０は、産業装置３０Ａの変換テーブルＴＡに基づいて、システム変数で記述された工程Ａ１の開始変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ２．ＳＴ」を装置変数「Ａ２．Ｓｔａｒｔ」に変換し、装置変数「Ａ２．Ｓｔａｒｔ」を所定の値に変更する（Ｓ６）。Ｓ６においては、コントローラ２０は、システム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ２．ＳＴ」を装置変数「Ａ２．Ｓｔａｒｔ」に変換し、この装置変数を所定の値に変更する旨の指示を送る。
【００８０】
産業装置３０Ａは、コントローラ２０からの指示を受信すると、装置変数で記述された工程Ａ２の開始変数「Ａ２．Ｓｔａｒｔ」を所定の値に変更して工程Ａ２を開始する（Ｓ７）。Ｓ７においては、工程プログラムＰＡ２は、装置変数「Ａ２．Ｓｔａｒｔ」を監視し、所定の値になったことを検出すると、最初に記述された命令を実行し、工程Ａ２を開始する。
【００８１】
産業装置３０Ａは、工程Ａ２が終了すると、装置変数で記述された工程Ａ２の変数「Ａ２．Ｓ１」と終了変数「Ａ２．Ｅｎｄ」を所定の値に変更する（Ｓ８）。なお、装置変数「Ａ２．Ｓ１」は、工程Ａ２の終了前に所定の値に変更されてもよい。Ｓ８においては、産業装置３０Ａは、コントローラ２０に対し、装置変数「Ａ２．Ｓ１」と「Ａ２．Ｅｎｄ」が所定の値に変更されたことを通知する。
【００８２】
コントローラ２０は、産業装置３０Ａの変換テーブルＴＡに基づいて、装置変数で記述された工程Ａ２の変数「Ａ２．Ｓ１」と終了変数「Ａ２．Ｅｎｄ」をシステム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ２．Ｓ−１」と「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ２．ＥＮ」に変換して所定の値に変更されたこと（工程Ａ２が終了したこと）を検出する（Ｓ９）。
【００８３】
コントローラ２０は、産業装置３０Ａの変換テーブルＴＡに基づいて、システム変数で記述された工程Ａ３の開始変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ３．ＳＴ」を装置変数「Ａ３．Ｓｔａｒｔ」に変換し、装置変数「Ａ３．Ｓｔａｒｔ」を所定の値に変更する（Ｓ１０）。Ｓ１０においては、コントローラ２０は、システム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ３．ＳＴ」を装置変数「Ａ３．Ｓｔａｒｔ」に変換し、この装置変数を所定の値に変更する旨の指示を送る。
【００８４】
産業装置３０Ａは、コントローラ２０からの指示を受信すると、装置変数で記述された工程Ａ３の開始変数「Ａ３．Ｓｔａｒｔ」を所定の値に変更して工程Ａ３を開始する（Ｓ１１）。Ｓ１１においては、工程プログラムＰＡ３は、装置変数「Ａ３．Ｓｔａｒｔ」を監視し、所定の値になったことを検出すると、最初に記述された命令を実行し、工程Ａ３を開始する。
【００８５】
産業装置３０Ａは、工程Ａ３が終了すると、装置変数で記述された工程Ａ３の終了変数「Ａ３．Ｅｎｄ」を所定の値に変更する（Ｓ１２）。Ｓ１２においては、産業装置３０Ａは、コントローラ２０に対し、装置変数「Ａ２．Ｅｎｄ」が所定の値に変更されたことを通知する。
【００８６】
コントローラ２０は、産業装置３０Ａの変換テーブルＴＡに基づいて、装置変数で記述された工程Ａ３の終了変数「Ａ３．Ｅｎｄ」をシステム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ３．ＥＮ」に変換して所定の値に変更されたこと（工程Ａ３が終了したこと）を検出する（Ｓ１３）。
【００８７】
図８に移り、コントローラ２０は、産業装置３０Ｂの変換テーブルＴＢに基づいて、システム変数で記述された工程Ｂ１の開始変数「Ｅｑｕｉｐ３０Ｂ．Ｓｔｅｐ４．ＳＴ」を装置変数「Ｂ１．Ｓｔａｒｔ」に変換し、装置変数「Ｂ１．Ｓｔａｒｔ」を所定の値に変更する（Ｓ１４）。Ｓ１４においては、コントローラ２０は、システム変数「Ｅｑｕｉｐ３０Ｂ．Ｓｔｅｐ４．ＳＴ」を装置変数「Ｂ１．Ｓｔａｒｔ」に変換し、この装置変数を所定の値に変更する旨の指示を送る。
【００８８】
産業装置３０Ｂは、コントローラ２０からの指示を受信すると、装置変数で記述された工程Ｂ１の開始変数「Ｂ１．Ｓｔａｒｔ」を所定の値に変更して工程Ｂ１を開始する（Ｓ１５）。Ｓ１５においては、工程プログラムＰＢ１は、装置変数「Ｂ１．Ｓｔａｒｔ」を監視し、所定の値になったことを検出すると、最初に記述された命令を実行し、工程Ｂ１を開始する。
【００８９】
産業装置３０Ｂは、工程Ｂ１が終了すると、装置変数で記述された工程Ｂ１の終了変数「Ｂ１．Ｅｎｄ」を所定の値に変更する（Ｓ１６）。Ｓ１６においては、産業装置３０Ｂは、コントローラ２０に対し、装置変数「Ｂ１．Ｅｎｄ」が所定の値に変更されたことを通知する。
【００９０】
コントローラ２０は、産業装置３０Ｂの変換テーブルＴＢに基づいて、装置変数で記述された工程Ｂ１の終了変数「Ｂ１．Ｅｎｄ」をシステム変数「Ｅｑｕｉｐ３０Ｂ．Ｓｔｅｐ４．ＥＮ」に変換して所定の値に変更されたこと（工程Ｂ１が終了したこと）を検出する（Ｓ１７）。
【００９１】
コントローラ２０は、産業装置３０Ｂの変換テーブルＴＢに基づいて、システム変数で記述された工程Ｂ２の開始変数「Ｅｑｕｉｐ３０Ｂ．Ｓｔｅｐ５．ＳＴ」を装置変数「Ｂ２．Ｓｔａｒｔ」に変換し、装置変数「Ｂ２．Ｓｔａｒｔ」を所定の値に変更する（Ｓ１８）。Ｓ１８においては、コントローラ２０は、システム変数「Ｅｑｕｉｐ３０Ｂ．Ｓｔｅｐ５．ＳＴ」を装置変数「Ｂ２．Ｓｔａｒｔ」に変換し、この装置変数を所定の値に変更する旨の指示を送る。
【００９２】
産業装置３０Ｂは、コントローラ２０からの指示を受信すると、装置変数で記述された工程Ｂ２の開始変数「Ｂ２．Ｓｔａｒｔ」を所定の値に変更して工程Ｂ２を開始する（Ｓ１９）。Ｓ１９においては、工程プログラムＰＢ２は、装置変数「Ｂ２．Ｓｔａｒｔ」を監視し、所定の値になったことを検出すると、最初に記述された命令を実行し、工程Ｂ２を開始する。
【００９３】
産業装置３０Ｂは、工程Ｂ２が終了すると、装置変数で記述された工程Ｂ２の終了変数「Ｂ２．Ｅｎｄ」を所定の値に変更する（Ｓ２０）。Ｓ２０においては、産業装置３０Ｂは、コントローラ２０に対し、装置変数「Ｂ２．Ｅｎｄ」が所定の値に変更されたことを通知する。
【００９４】
コントローラ２０は、産業装置３０Ｂの変換テーブルＴＢに基づいて、装置変数で記述された工程Ｂ２の終了変数「Ｂ２．Ｅｎｄ」をシステム変数「Ｅｑｕｉｐ３０Ｂ．Ｓｔｅｐ５．ＥＮ」に変換して所定の値に変更されたこと（工程Ｂ２が終了したこと）を検出する（Ｓ２１）。その後、所定の信号が出力される。
【００９５】
コントローラ２０は、所定の終了条件が満たされたか否かを判定する（Ｓ２２）。終了条件は、サイクルを終了するための条件であり、ユーザが所定の操作を行うことや所定の日時が訪れることといった任意の条件を設定可能である。終了条件が満たされたと判定されない場合（Ｓ２２；Ｎ）、Ｓ２の処理に戻り、次のサイクルが開始される。一方、終了条件が満たされたと判定された場合（Ｓ２２；Ｙ）、本処理は終了する。
【００９６】
本実施形態の生産システム１によれば、コントローラ２０と各産業装置３０とが通信する場合に、当該産業装置３０の変換テーブルＴに基づいて、当該産業装置３０の装置変数とシステム変数を変換することによって、産業装置３０とコントローラ２０がそれぞれ装置変数とシステム変数といった独自の変数を管理する場合であったとしても、複数の工程に対して指定された実行順で各産業装置３０を動作させることができる。例えば、システムプログラムＱの作成者と、工程プログラムＰの作成者と、が異なり、各作成者が独自の変数でプログラム設計をしたとしても、変換テーブルＴによって、変数の違いを吸収し、プログラムの設計を容易化することができる。
【００９７】
また、コントローラ２０側で変換テーブルＴの管理と変数の変換を行うことにより、既存の産業装置３０側に変更を加える必要をなくすことができる。また。既存の産業装置３０に変更を加える必要があったとしても、最低限の変更で済ませることができる。このため、産業装置３０側で作成された工程プログラムＰ等の資産を最大限流用することができる。また、産業装置３０側で変換テーブルＴの管理や変数の変換をする必要が無いので、産業装置３０の処理負荷を軽減し、メモリ消費量も削減することができる。このため、例えば低スペックの産業装置３０を利用した場合であったとしても、産業装置３０の動作に支障をきたす可能性を低減させることができる。
【００９８】
また、変換データとして、産業装置３０ごとに異なる変換テーブルＴを記憶することによって、変換データの管理を簡易化することができる。
【００９９】
また、各産業装置３０の装置変数の名称を、工程を一意に識別する文字列と、他の工程と共通の文字列と、を含むようにすることで、装置変数の名称の体系をパターン化して分かりやすくすることができ、プログラミングを簡易化することができる。
【０１００】
［５．変形例］
なお、本発明は、以上に説明した実施の形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
【０１０１】
（１）例えば、データ記憶部２００は、産業装置３０ごとに別々の変換テーブルＴを記憶するのではなく各産業装置３０の変換データが格納された変換データベースを記憶してもよい。図９は、変換データベースＤＢ１のデータ格納例を示す図である。図９に示すように、変換データベースＤＢ１は、個々の変換データを一括して管理するデータベースである。例えば、変換データベースＤＢ１には、システム変数と、各産業装置３０の装置変数と、が関連付けられている。変換データベースＤＢ１は、実施形態で説明した変換テーブルＴを統括して管理するデータということもできる。
【０１０２】
変換部２０２は、変換データベースＤＢ１に格納された各産業装置３０の変換データに基づいて、当該産業装置３０の装置変数とシステム変数との変換を行う。変換部２０２は、変換データベースＤＢ１を参照し、通信相手の産業装置３０に関連付けられた変換データに基づいて、産業装置３０の装置変数とシステム変数との変換を行う。変換データを取得した後の変数の変換方法については、実施形態で説明した通りである。
【０１０３】
変形例（１）によれば、各産業装置３０の変換データを、変換データベースＤＢ１で一括して管理することができる。
【０１０４】
（２）また例えば、プログラム作成装置１０には、システムプログラムＱの作成を簡易化するためのエンジニアリングツールが用意されているようにしてもよい。プログラム作成装置１０においてエンジニアリングツールが起動すると、工程の実行順を指定してシステムプログラムＱを作成するためのスケジュール画面が表示部１５に表示される。
【０１０５】
図１０は、スケジュール画面の一例を示す図である。図１０に示すように、スケジュール画面Ｇ１は、ユーザの作業を支援する種々のユーザインタフェースを有する画面である。スケジュール画面Ｇ１は、プログラムの作成以外にも変数の設定やシミュレーション等が可能であってもよい。例えば、スケジュール画面Ｇ１には、工程の実行順を指定するためのタイミングチャートＣが表示される。
【０１０６】
例えば、タイミングチャートＣには、右方向（横方向）にタイミング軸（時間軸）が設定されている。画面の右に行くほど、時間的に後であることを意味する。また、タイミングチャートＣには、一定時間（図１０の場合は５秒）ごとに数値が表示されており、単位時間（図１０の場合は１秒）を示すマス目が並べられている。図１０の例であれば、例えば、０〜５秒の間には、５つのマス目が並べられる。
【０１０７】
ユーザは、タイミングチャートＣにおいて、産業装置３０が実行する工程の実行順を指定し、システムプログラムＱを作成する。図１０の例では、ユーザがまだ産業装置３０を指定しておらず、タイミングチャートＣには、工程に関する情報は表示されていない。
【０１０８】
例えば、スケジュール画面Ｇ１には、コントローラ２０の制御対象となる産業装置３０の名称を示すリストＬ１が表示される。本変形例では、産業装置３０Ａ，３０Ｂが制御対象となるので、これら２台の名称がリストＬ１に表示される。例えば、ユーザが、リストＬ１からタイミングチャートＣに、産業装置３０Ａの名称をドラッグアンドドロップすると、タイミングチャートＣに、産業装置３０Ａが実行する工程Ａ１，Ａ２，Ａ３の情報が表示される。
【０１０９】
図１１は、産業装置３０Ａの名称がドラッグアンドドロップされた場合のタイミングチャートＣの一例を示す図である。図１１に示すように、タイミングチャートＣには、産業装置３０Ａの名称、工程Ａ１，Ａ２，Ａ３の各々の名称、及び各工程に設定された想定実行時間が表示される。なお、タイミングチャートＣには、工程情報に含まれる他の情報（例えば、変数の名称や産業装置３０Ａ内における実行順）が表示されてもよい。
【０１１０】
想定実行時間は、各工程の実行に要する想定時間である。本変形例では、想定実行時間が１秒単位で定義される場合を説明するが、２秒単位や０．５秒単位などの他の単位で定義されてもよい。図１１の例であれば、工程Ａ１，Ａ２，Ａ３の各々の想定実行時間は、３秒、４秒、３秒となっている。なお、図１１の例では、ある工程から次の工程に移行するのに要する時間を考慮していないが、後述するように、工程間の時間が考慮されてもよい。
【０１１１】
本変形例では、産業装置３０内での工程Ａ１，Ａ２，Ａ３の実行順が予め指定されているので、タイミングチャートＣには、これらの工程の名称が、上から下に向けて実行順に並べて表示される。各工程の名称が実行順に並ぶことにより、ユーザは、これらの実行順を直感的に把握できる。
【０１１２】
また、タイミングチャートＣでは、工程Ａ１，Ａ２，Ａ３をそれぞれ示す工程イメージＩ１，Ｉ２，Ｉ３が、タイミング軸上で実行順に並べて表示される。例えば、工程Ａ１の想定実行時間は３秒であり、工程Ａ１の行における１秒〜３秒の３つのマス目を所定の色で塗りつぶすように、工程イメージＩ１が表示される。工程Ａ２の想定実行時間は４秒であり、工程Ａ２の行における４秒〜７秒の４つのマス目を塗りつぶすように、工程イメージＩ２が表示される。工程Ａ３の想定実行時間は３秒であり、工程Ａ３の行における８秒〜１０秒の３つのマス目を塗りつぶすように、工程イメージＩ３が表示される。
【０１１３】
図１１に示すように、工程イメージＩ１，Ｉ２，Ｉ３は、想定実行時間に応じた長さになっており、ユーザは、工程Ａ１，Ａ２，Ａ３の各々の想定実行時間の長さを直感的に把握できる。更に、工程イメージＩ１，Ｉ２，Ｉ３がタイミング軸上で実行順に並ぶので、ユーザは、工程Ａ１，Ａ２，Ａ３の実行順を時系列的に把握できる。
【０１１４】
図１１の状態では、産業装置３０Ａしか選択されていないので、ユーザは、産業装置３０Ｂの名称も選択する。例えば、ユーザが、リストＬ１からタイミングチャートＣに、産業装置３０Ｂの名称をドラッグアンドドロップすると、タイミングチャートＣに、産業装置３０Ｂが実行する工程Ｂ１，Ｂ２の情報が表示される。
【０１１５】
図１２は、産業装置３０Ｂの名称がドラッグアンドドロップされた場合のタイミングチャートＣの一例を示す図である。図１２に示すように、タイミングチャートＣには、産業装置３０Ｂの名称、工程Ｂ１，Ｂ２の各々の名称、及び各工程に設定された想定実行時間が新たに表示される。図１２の例では、工程イメージＩ４，Ｉ５が示すように、工程Ｂ１，Ｂ２の各々の想定実行時間は、４秒、２秒となっている。
【０１１６】
図１２の状態では、産業装置３０Ｂの名称がタイミングチャートＣ上にドラッグアンドドロップされただけであり、工程Ａ１，Ａ２，Ａ３と、工程Ｂ１、Ｂ２と、の実行順は、まだ指定されていない。このため、タイミングチャートＣ上では、工程Ａ１，Ａ２，Ａ３と、工程Ｂ１，Ｂ２と、の時間的な前後関係は区別されておらず、工程Ａ１も０秒から開始し、工程Ｂ１も０秒から開始する状態となっている。
【０１１７】
本変形例では、タイミングチャートＣに表示された工程イメージＩを、ドラッグアンドドロップして移動させることによって、工程の実行順を指定できるようになっている。先述したように、工程Ｂ１は、工程Ａ３の次に実行されるので、ユーザは、工程Ａ３よりも後になるように（工程イメージＩ３よりも右の１１秒以降の位置に）、工程イメージＩ４をドラッグアンドドロップすることによって、工程の実行順を指定する。
【０１１８】
図１３は、工程の実行順が指定された場合のタイミングチャートＣの一例を示す図である。図１３に示すように、工程の実行順が指定されると、工程イメージＩ４は、工程イメージＩ３の後に移動し、工程Ｂ１の行における１１秒〜１４秒の位置に移動する。工程イメージＩ５も同様に移動し、工程Ｂ２の行における１５秒〜１６秒の位置に移動する。このように、ユーザは、工程イメージＩをドラッグアンドドロップすることによって、工程の実行順を指定する。
【０１１９】
なお、工程の実行順の指定方法は、上記の例に限られず、他の操作を利用してもよい。例えば、図１２の状態で、ユーザは、工程イメージＩ５をドラッグアンドドロップすることによって、工程の実行順を指定してもよい。例えば、ユーザは、工程Ａ３よりも後になるように（工程イメージＩ３よりも右になるように）、工程イメージＩ５をドラッグアンドドロップしてもよい。この場合、タイミングチャートＣは、図１３と同じ状態になる。
【０１２０】
また例えば、図１２の状態で、ユーザは、工程Ｂ１よりも前になるように（工程イメージＩ４よりも左の０秒よりも前の位置に）、工程イメージＩ１をドラッグアンドドロップすることによって、工程の実行順を指定してもよい。この場合、ユーザは、工程Ａ１，Ａ２，Ａ３の実行順が工程Ｂ１，Ｂ２よりも前であることを指定したことになり、タイミングチャートＣは、図１３と同じ状態になる。また例えば、工程イメージＩのドラッグアンドドロップ以外にも、タイミングチャートＣ内の任意の位置（マス目）をクリック又はタップ等することによって、工程の実行順が指定されてもよい。
【０１２１】
以上の操作により、工程の実行順が指定される。本変形例では、タイミングチャートＣにおいて、２サイクル目の開始タイミングを指定できるようになっている。例えば、図１３の状態において、ユーザが、２サイクル目の開始タイミングとして工程Ａ１の行における任意の位置を選択すると、２サイクル目以降の工程が時系列的に表示される。
【０１２２】
図１４は、２サイクル目の開始タイミングが指定された場合のタイミングチャートＣの一例を示す図である。例えば、ユーザが２サイクル目の開始タイミングとして、工程Ａ１の行の１５秒目のマス目を選択したとすると、図１４に示すように、工程Ａ１行における１５秒目〜１７秒目に、２サイクル目の工程Ａ１を示す工程イメージＩ６が表示される。
【０１２３】
２サイクル目以降においても工程の実行順及び想定実行時間は変わらないので、図１４に示すように、２サイクル目以降の各工程は、１サイクル目の実行順を保つように、２サイクル目の工程Ａ２，Ａ３，Ｂ１，Ｂ２を示す工程イメージＩ７，Ｉ８，Ｉ９，Ｉ１０が表示される。３サイクル目以降も同様に、２サイクル目と同様の開始タイミングで開始されるように、工程イメージＩ１１，Ｉ１２，Ｉ１３，Ｉ１４が表示される。画面に入りきらない工程イメージＩについては、スクロール操作によって表示される。
【０１２４】
ユーザは、上記のようにして各工程の実行順を指定すると、システムプログラムＱを作成するためのビルド操作を行う。ビルド操作が行われると、各工程プログラムＰの工程情報と、タイミングチャートＣ上で指定された実行順と、に基づいてビルド作業が行われ、システムプログラムＱが作成される。
【０１２５】
なお、ビルド作業を行うプログラム自体は、公知の種々のプログラムを利用可能である。例えば、ラダー言語を利用する場合、ユーザが指定した実行順で各工程の開始変数等の値を変更するように起動スイッチやコイル等が配置され、システムプログラムＱが作成される。また例えば、ロボット言語を利用する場合、ユーザが指定した実行順で各工程の開始変数等の値を変更するように条件分岐の命令等が記述され、システムプログラムＱが作成される。システムプログラムＱが作成されると、コントローラ２０に記録される。
【０１２６】
以上のように、本変形例のプログラム作成装置１０は、システムプログラムＱの作成を簡易化する構成を有する。以降、当該構成の詳細を説明する。なお、変形例（２）では、システム変数と装置変数が区別されていなくてもよく、コントローラ２０と産業装置３０との間で共通の変数が利用されてもよい。この点は、変形例（３）も同様である。
【０１２７】
図１５は、変形例（２）の機能ブロック図である。図１５に示すように、変形例（２）では、プログラム作成装置１０において、データ記憶部１００、表示制御部１０１、受付部１０２、及びシステムプログラム作成部１０３が実現される。
【０１２８】
［データ記憶部］
データ記憶部１００は、記憶部１２を主として実現される。データ記憶部１００は、システムプログラムＱを作成するために必要なデータを記憶する。例えば、データ記憶部１００は、各工程の工程情報が格納された工程データベースＤＢ２を記憶する。
【０１２９】
図１６は、工程データベースＤＢ２のデータ格納例を示す図である。図１６に示すように、工程データベースＤＢ２には、産業装置３０の名称と、当該産業装置３０が実行する工程の工程情報と、が格納される。例えば、新たな工程の工程プログラムＰが作成されると、新たな工程の工程情報が工程データベースＤＢ２に登録される。工程情報は、工程データベースＤＢ２への登録後に編集可能であってもよい。本変形例では、コントローラ２０の制御対象となる全ての産業装置３０の工程情報が工程データベースＤＢ２に格納される場合を説明するが、一部の産業装置３０の工程情報だけが工程データベースＤＢ２に格納されてもよい。
【０１３０】
工程情報は、工程の基本的な情報を示し、その内容は後述する新たな工程の工程プログラムＰが作成された場合に設定される。工程情報には、スケジュール画面Ｇ１からシステムプログラムＱを作成するために必要な情報が格納される。例えば、工程情報には、工程の名称、想定実行時間、実行順、変数の名称、実行条件、及びコメントが格納される。
【０１３１】
工程の名称は、工程プログラムＰの作成時に指定された名称である。工程の名称は、産業装置３０の中で工程を一意に識別可能であればよく、他の産業装置３０の工程の名称と同じであってもよい。本変形例では、ユーザが工程の名称を指定する場合を説明するが、工程の名称は、所定のルールに基づいて自動的に付与されてもよい。また、工程の名称は、工程のＩＤ等のように工程を一意に特定できるものであってもよい。
【０１３２】
本変形例では、想定実行時間は、工程プログラムＰの作成時に指定された数値となる。なお、想定実行時間は、ユーザが指定するのではなく、シミュレーションによって計算された数値であってもよい。想定実行時間は、編集可能であってもよい。
【０１３３】
実行順は、生産システム１全体の中での工程の実行順である。本変形例では、工程プログラムＰの作成時に、産業装置３０内でのローカルな実行順が指定されるので、工程の登録時には、当該指定された実行順が格納される。工程が登録された後に、生産システム１全体における実行順が指定されるので、ローカルな実行順は、生産システム１全体における実行順に変更される。
【０１３４】
例えば、工程プログラムＰＡ１，ＰＡ２，ＰＡ３の作成時に、工程Ａ１，Ａ２，Ａ３の各々の実行順として「１」、「２」、「３」が指定される。また例えば、工程プログラムＰＢ１，ＰＢ２の作成時に、工程Ｂ１，Ｂ２の各々の実行順として「１」、「２」が指定される。この時点では、産業装置３０内での実行順が指定されているだけなので、工程Ａ１，Ａ２，Ａ３と、工程Ｂ１，Ｂ２と、の何れが先に実行されるかについては特定されない。ユーザがスケジュール画面Ｇ１からこれらの実行順を指定すると、工程Ｂ１，Ｂ２の実行順が「４」、「５」に変更される。
【０１３５】
なお、工程プログラムＰの作成時に、産業装置３０内でのローカルな実行順が指定されなくてもよい。この場合、工程の登録時には実行順が格納されず、ユーザがスケジュール画面Ｇ１から実行順を指定した場合に、当該指定された実行順が工程情報に格納されるようにすればよい。例えば、ユーザは、スケジュール画面Ｇ１から、工程Ａ１，Ａ２，Ａ３，Ｂ１，Ｂ２の各々の実行順として、「１」、「２」、「３」、「４」、「５」を指定し、これらの実行順が工程情報に格納される。
【０１３６】
変数の名称は、装置変数及びシステム変数の少なくとも一方の名称である。本変形例では、装置変数の名称が格納される場合を説明する。この名称は、工程プログラムＰの作成時に設定される。実施形態で説明したように、システム変数と装置変数が区別される場合には、装置変数の名称が格納される。本変形例では、デフォルトの変数だけでなく、ユーザが任意の変数を指定可能なので、ユーザが指定した変数の名称が格納されることもある。本変形例の変数の名称は、工程の名称（「Ａ１」等の文字列）と、変数の種類を示す文字列（「Ｓｔａｒｔ」等の文字列）と、を含み、工程間で変数の名称が重複しないようになっている。
【０１３７】
なお、変数の名称は、任意のルールで設定可能であり、本変形例の例に限られない。例えば、変数の名称は、産業装置３０の名称（「Ｅｑｕｉｐ３０Ａ」等の文字列）を含み、どの産業装置３０の変数であるかを識別可能であってもよい。また例えば、変数の名称は、産業装置３０の名称や工程の名称を特に含まずに、生産システム１又は産業装置３０内で変数を一意に識別できるような文字列で定められていてもよい。工程の名称と同様、変数の名称についても、変数のＩＤ等のように変数を一意に特定できるものであってもよい。
【０１３８】
実行条件は、変数を変更するか否かを示す条件である。開始変数の実行条件としては、工程を開始する条件が設定される。中断変数の実行条件としては、工程を中断する条件が設定される。ビジー変数の実行条件としては、工程をビジー状態とする条件が設定される。終了変数の実行条件としては、工程を終了する条件が設定される。
【０１３９】
本変形例では、工程プログラムＰの作成時に、産業装置３０内でのローカルな実行順が指定されるので、工程の登録時には、当該指定された実行順となるように、実行条件が格納される。工程が登録された後に、生産システム１全体における実行順が指定されるので、実行条件は、生産システム１全体における実行順となるように変更される。
【０１４０】
例えば、工程プログラムＰＡ１の作成時に、入出力信号が入力された場合に工程Ａ１が開始することが指定される。工程Ａ１の実行条件は、入出力信号を示す変数「ＩＯ１．Ｉｎｐｕｔ１」になる。変数「ＩＯ１．Ｉｎｐｕｔ１」が所定の値になった場合に、開始変数「Ａ１．Ｓｔａｒｔ」が所定の値になり、工程Ａ１が開始する。
【０１４１】
また例えば、工程プログラムＰＡ２の作成時に、工程Ａ１の次に工程Ａ２が実行されることが指定される。工程Ａ２の実行条件は、工程Ａ１の終了変数「Ａ１．Ｅｎｄ」になる。終了変数「Ａ１．Ｅｎｄ」が所定の値になった場合に、開始変数「Ａ２．Ｓｔａｒｔ」が所定の値になり、工程Ａ２が開始する。
【０１４２】
また例えば、工程プログラムＰＡ３の作成時に、工程Ａ２の次に工程Ａ３が実行されることが指定される。更に、工程Ａ２の変数「Ａ２．Ｓ１」も工程Ａ３の開始の条件になることが指定される。このため、工程Ａ３の実行条件は、工程Ａ２の終了変数「Ａ２．Ｅｎｄ」になる。変数「Ａ２．Ｓ１」と終了変数「Ａ２．Ｅｎｄ」の各々が所定の値になった場合に、開始変数「Ａ３．Ｓｔａｒｔ」が所定の値になり、工程Ａ３が開始する。
【０１４３】
本変形例では、工程プログラムＰＢ１の作成時には、工程Ｂ１を開始する条件については指定されない。工程Ｂ１が工程Ａ３の次に実行されることは、スケジュール画面Ｇ１から指定されるので、この指定を受け付けた場合に、工程Ｂ１の実行条件は、工程Ａ３の終了変数「Ａ３．Ｅｎｄ」になる。終了変数「Ａ３．Ｅｎｄ」が所定の値になった場合に、開始変数「Ｂ１．Ｓｔａｒｔ」が所定の値になり、工程Ｂ１が開始する。
【０１４４】
例えば、工程プログラムＰＢ２の作成時に、工程Ｂ１の次に工程Ｂ２が実行されることが指定される。工程Ｂ２の実行条件は、工程Ｂ１の終了変数「Ｂ１．Ｅｎｄ」になる。終了変数「Ｂ１．Ｅｎｄ」が所定の値になった場合に、開始変数「Ｂ２．Ｓｔａｒｔ」が所定の値になり、工程Ｂ２が開始する。
【０１４５】
なお、データ記憶部１００が記憶するデータは、上記の例に限られない。例えば、データ記憶部１００は、システムプログラムＱのビルド作業を実行するためのプログラムを記憶する。また例えば、データ記憶部１００は、スケジュール画面Ｇ１に表示される画像の画像データを記憶してもよいし、エンジニアリングツールを記憶してもよい。また例えば、データ記憶部１００は、作成済みの工程プログラムＰとシステムプログラムＱとを記憶してもよい。
【０１４６】
［表示制御部］
表示制御部１０１は、複数の工程それぞれに対して、少なくとも、工程の名称と、装置変数及びシステム変数の少なくとも一方と、が関連付けられ、工程情報として保存される工程データベースＤＢ２から取得した複数の工程の名称を含み、当該複数の工程の実行順を指定可能なスケジュール画面Ｇ１を表示させる。
【０１４７】
本変形例では、装置変数は、工程プログラムＰにより参照及び変更の両方が行われる場合を説明するが、参照又は変更の何れか一方のみが行われてもよい。各工程の装置変数は、当該工程の工程プログラムＰにより参照及び変更が行われてもよいし、他の工程プログラムＰ又はシステムプログラムＱにより参照及び変更が行われてもよい。工程の名称と変数が関連付けられるとは、これらが同じ工程情報の中に含まれること、又は、これらが互いに紐付けられることである。
【０１４８】
実行順を指定可能なスケジュール画面Ｇ１とは、実行順を指定可能なユーザインタフェースを有する画面である。実行順は、任意の方法によって指定可能であり、スケジュール画面Ｇ１のレイアウトは、図１０−図１４の例に限られない。例えば、スケジュール画面Ｇ１は、タイミングチャート形式ではなくテーブル形式のレイアウトであってもよい。また例えば、スケジュール画面Ｇ１は、フローチャート形式等の他のレイアウトであってもよい。
【０１４９】
本変形例では、表示制御部１０１は、受付部１０２が受け付けた実行順と、当該実行順に含まれる各工程の名称及び装置変数とに基づいて、タイミングチャートＣをスケジュール画面Ｇ１として表示させる。本変形例では、実行順、工程の名称、及び装置変数が工程情報として工程データベースＤＢ２に格納されるので、表示制御部１０１は、工程データベースＤＢ２の工程情報に基づいて、タイミングチャートＣを表示させる。
【０１５０】
タイミングチャートＣは、工程の実行順を示すチャートであるである。別の言い方をすれば、タイミングチャートＣは、工程の実行タイミングを時系列的に示すチャートである。タイミングチャートＣには、工程を識別する情報が時系列的に並べられる。例えば、タイミングチャートＣには、工程の名称が時系列的に並べられる。また例えば、タイミングチャートＣには、工程の実行タイミングを示す工程イメージＩが時系列的に並べられる。なお、工程の名称や工程イメージＩ以外の画像（アイコン等）が、工程を識別する情報として用いられてもよい。工程の実行順は、工程情報に格納された実行順の数値によって特定されてもよいし、工程情報に格納された変数及び実行条件によって特定されてもよい。
【０１５１】
工程を識別する情報が並べられる方向は、任意の方向であってよく、例えば、上から下、左から右、下から上、又は右から左の何れかである。本変形例では、工程の名称については、上から下に向けて時系列的に並べられる。工程イメージＩについては、左から右に向けて時系列的に並べられる。例えば、表示制御部１０１は、工程データベースＤＢ２に格納された工程情報を参照して工程の名称と実行順を特定し、上から下に向けて工程の名称が実行順に並び、かつ、左から右に向けて工程イメージＩが実行順に並ぶタイミングチャートＣを表示させる。
【０１５２】
タイミングチャートＣには、実行順に含まれる複数の工程それぞれの名称が工程軸上に並べて配置される。工程軸とは、工程の名称が並ぶ方向である。本変形例では、工程軸が上から下に向けた方向であるが、工程軸は、予め定められた方向であればよく、例えば、左から右、下から上、又は右から左であってもよい。工程の名称は、工程軸上において時系列的に並ぶように配置される。本変形例では、工程Ａ１，Ａ２，Ａ３，Ｂ１，Ｂ２の順序で実行されるように実行順が指定されるので、工程軸である上から下に向けて、これらの名称が並べられる。
【０１５３】
また例えば、タイミングチャートＣには、工程軸と直交するタイミング軸上の長さで複数の工程それぞれの実行を示す工程イメージＩが、各名称の工程軸上ほぼ同じ位置、かつ、タイミング軸上において実行順になるように配置されている。タイミング軸は、時間軸ということもできる。本変形例では、タイミング軸が左から右に向けた方向であるが、タイミング軸は、工程軸とのなす角度が９０°であればよく、例えば、右から左であってもよい。また例えば、工程軸が左から右であれば、タイミング軸は、上から下であってもよい。
【０１５４】
各工程の工程イメージＩと名称は、工程軸上のほぼ同じ位置に配置される。工程軸上のほぼ同じ位置とは、工程軸方向のずれが無いこと、又は、ずれが無いとみなせるほど小さいことである。ずれが小さいとは、ずれが所定距離未満であることであり、例えば、１センチメートル未満、又は、１０ピクセル未満である。工程Ａ１，Ａ２，Ａ３，Ｂ１，Ｂ２の各々の工程イメージＩは、これらの工程の名称とほぼ同じ高さとなり、かつ、タイミング軸上において実行順になるように並べられる。表示制御部１０１は、タイミング軸方向に時系列的に並ぶように、各工程の工程イメージＩを配置する。本変形例のように、同じ工程が繰り返し実行される場合には、同じ工程軸上の異なるタイミング軸上に、工程イメージＩが配置される。
【０１５５】
本変形例では、各工程の工程情報は、その工程の想定実行時間を含む。表示制御部１０１は、工程イメージＩのタイミング軸上の長さ（タイミング軸方向の長さ）を、想定実行時間に対応する長さに設定する。想定実行時間に対応する長さとは、想定実行時間に比例する長さであってもよいし、想定実行時間の長短を概念的に捉えられる長さであってもよい。例えば、想定実行時間が長いほど、工程イメージＩがタイミング軸方向に長くなる。表示制御部１０１は、工程ごとに、当該工程の工程情報に含まれる想定実行時間に基づいて、当該工程の工程イメージＩの長さを決定する。
【０１５６】
なお、想定実行時間と工程イメージＩの長さとの関係は、上記の例に限られない。例えば、ある工程の想定実行時間が１０秒であり、他の２つの工程がそれぞれ２秒、１秒であったとすると、１秒と２秒の工程の工程イメージＩはその長さを比例させ、１０秒の工程はその長さを比例させずに短縮して表示させてもよい。これにより、実行順を概念的に捉えやすく、かつ、実行順の一覧性を向上させることができる。更に、工程イメージＩは、想定実行時間に応じた長さでなくてもよい。例えば、想定実行時間を省略する場合には、工程イメージＩは、固定長であってもよい。他にも例えば、固定長の工程イメージＩの中に想定実行時間を示す数値が表示されていてもよい。
【０１５７】
例えば、表示制御部１０１は、移動指示に基づいて、タイミングチャートＣにおける工程イメージＩを移動させる。移動指示は、工程イメージＩを移動させるための指示である。本変形例では、移動指示の一例としてドラッグアンドドロップを説明するが、移動指示は、他の任意の操作であってよく、例えば、クリック又はタップ等であってもよい。また例えば、移動指示は、工程イメージＩに対する操作でなくてもよく、例えば、工程イメージＩの移動先の位置をクリック又はタップ等する操作であってもよい。他にも例えば、移動指示は、キーボードの矢印ボタンを押下する操作であってもよい。
【０１５８】
本変形例では、工程イメージＩが移動することによって、工程の実行順が指定されるので、移動指示は、実行順を指定するための操作ということができる。表示制御部１０１は、移動指示により指定された移動先に、工程イメージＩを移動させる。工程の実行順も工程イメージＩの並び順に応じて変更される。タイミング軸上の工程イメージＩの並び順と実行順とが一致するように、各工程の実行順が変更される。実行順は、システムプログラム作成部１０３によって変更されてもよいし、表示制御部１０１によって変更されてもよい。
【０１５９】
本変形例では、工程データベースＤＢ２には、複数の産業装置３０の名称がその産業装置３０で実行される複数の工程の工程情報が関連付けられて保存され、表示制御部１０１は、スケジュール画面Ｇ１に、複数の産業装置３０の名称のリストＬ１を表示させる。リストＬ１に載る産業装置３０は、コントローラ２０の制御対象となる産業装置３０の全部又は一部である。本変形例では、工程データベースＤＢ２に制御対象の産業装置３０が定義されているので、表示制御部１０１は、工程データベースＤＢ２を参照し、産業装置３０のリストＬ１を表示させる。なお、リストＬ１は、産業装置３０の名称の一覧であり、その並び順は任意であってよい。例えば、リストＬ１には、産業装置３０の名称が語順（例えば、アルファベット順）の通りに並んでもよいし、工程データベースＤＢ２への登録順に並んでもよい。
【０１６０】
ユーザはリストＬ１から産業装置３０の名称を選択可能であり、表示制御部１０１は、更に、選択された産業装置３０に関連付けられた複数の工程それぞれの工程イメージＩを、タイミングチャートＣの工程軸上に並べて配置する。表示制御部１０１は、工程データベースＤＢ２からユーザが選択した産業装置３０に関連付けられた工程情報を取得し、当該産業装置３０が実行する工程とその実行順を特定する。表示制御部１０１は、当該特定した工程の工程イメージＩが当該特性した実行順で並ぶように、タイミングチャートＣの工程軸上に配置する。
【０１６１】
例えば、図１０の状態からユーザがリストＬ１上の産業装置３０Ａを選択した場合、表示制御部１０１は、産業装置３０Ａの工程情報に基づいて、工程Ａ１，Ａ２，Ａ３の各々の工程イメージＩ１，Ｉ２，Ｉ３をタイミングチャートＣの工程軸上に並べて配置する。この場合、タイミングチャートＣは、図１１の状態となり、工程イメージＩ１，Ｉ２，Ｉ３の各々は、工程軸上に上から下に向けて並ぶ。その後、ユーザがリストＬ１上の産業装置３０Ｂを選択した場合、表示制御部１０１は、産業装置３０Ｂの工程情報に基づいて、工程Ｂ１，Ｂ２の各々の工程イメージＩ４，Ｉ５をタイミングチャートＣの工程軸上に並べて配置する。この場合、タイミングチャートＣは、図１２の状態となり、工程イメージＩ４，Ｉ５の各々は、工程軸上に上から下に向けて並ぶ。
【０１６２】
［受付部］
受付部１０２は、表示制御部１０１が表示させたスケジュール画面Ｇ１において、実行順の指定を受け付ける。本変形例では、受付部１０２は、タイミングチャートＣにおける工程イメージＩをタイミング軸上で移動させるための移動指示を、実行順の指定として受け付ける。なお、実行順は、任意の操作によって指定可能であり、移動指示以外の操作によって実行順が指定されてもよい。例えば、入力フォームに実行順を示す数値を入力する操作、又は、プルダウンメニューから実行順を選択する操作によって実行順が指定されてもよい。
【０１６３】
受付部１０２は、リストＬ１の中から産業装置３０の名称の選択を受け付ける。受付部１０２は、リストＬ１の中から選択された産業装置３０の工程の実行順の指定を受け付ける。本変形例では、リストＬ１に産業装置３０の名称が表示されていたとしてもユーザが選択しなければ、当該産業装置３０については、システムプログラムＱの制御対象とはならない。受付部１０２は、リストＬ１中の全部の産業装置３０の名称の選択を受け付けてもよいし、一部の産業装置３０についてのみ選択を受け付けてもよい。本変形例では、ドラッグアンドドロップによってリストＬ１上の名称が選択される場合を説明するが、他の任意の操作で名称が選択されてもよい。例えば、リストＬ１上の名称がクリック又はタップされることによって、産業装置３０の名称が選択されてもよい。
【０１６４】
受付部１０２は、スケジュール画面Ｇ１において、複数の産業装置３０それぞれの繰り返し動作の指定を受け付ける。繰り返し動作とは、産業装置３０の周期的な動作である。繰り返し動作の指定とは、繰り返し動作の実行タイミングの指定である。本変形例では、２サイクル目の開始タイミングの指定が繰り返し動作の指定に相当する場合を説明するが、繰り返し動作の指定は、３サイクル目以降の任意の開始タイミングの指定であってもよい。
【０１６５】
また、本変形例では、タイミングチャートＣ上の任意の位置を指定することによって繰り返し動作が指定される場合を説明するが、他の任意の操作によって繰り返し動作が指定されてもよい。例えば、２サイクル目の最初の工程の開始条件となる他の工程（図１２の例であれば、工程イメージＩ４が示す工程Ｂ１）を指定することによって、繰り返し動作が指定されてもよい。また例えば、２サイクル目の開始タイミングの数値を入力することによって、繰り返し動作が指定されてもよい。
【０１６６】
［システムプログラム作成部］
システムプログラム作成部１０３は、受付部１０２が受け付けた実行順と、各工程の装置変数及びシステム変数の少なくとも一方と、に基づいて、システムプログラムＱを作成する。システムプログラム作成部１０３は、指定された実行順で各工程が実行されるように、各工程の変数を制御するシステムプログラムＱを作成する。
【０１６７】
複数の工程それぞれの装置変数には、当該工程の実行開始を表す開始装置変数（装置変数で記述された開始変数）が含まれており、システムプログラム作成部１０３は、実行順に従った工程が順次実行されるように、実行順において、少なくとも一の工程で変更される変更装置変数（装置変数で記述された変更変数）に対応する変更システム変数（システム変数で記述された変更変数）と、一の工程に連動して実行される１以上の他の工程の開始装置変数に対応する開始システム変数（システム変数で記述された開始変数）と、を関連付けてシステムプログラムＱを作成する。
【０１６８】
変更システム変数と開始システム変数を関連付けるとは、変更システム変数の値が開始システム変数の値を変更するための条件になることである。例えば、工程Ａ１の終了システム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ１．ＥＮ」は、工程Ａ２の開始システム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ２．ＳＴ」を変更するための条件になるので、システムプログラムＱでは、これらの変数が関連付けられていることになる。
【０１６９】
例えば、システムプログラム作成部１０３は、表示制御部１０１により移動された工程イメージＩに対応した他の工程の開始システム変数と、他の工程のタイミング軸上の直前に存在する工程イメージＩに対応した一の工程の変更システム変数と、を関連付けてシステムプログラムＱを作成する。タイミング軸上の直前に存在するとは、時間的に直近の工程イメージＩである。図１３の例であれば、工程イメージＩ１，Ｉ２，Ｉ３，Ｉ４は、それぞれ工程イメージＩ２，Ｉ３，Ｉ４，Ｉ５の直前に存在する。
【０１７０】
本変形例では、工程Ａ１については、１番最初に実行される工程のため、１サイクル目においては、他の工程の終了システム変数が開始の条件とはならない。例えば、システムプログラム作成部１０３は、所定の入出力信号を示すシステム変数「ＩＯ１．Ｉｎｐｕｔ１」が所定の値になった場合に、工程Ａ１の開始システム変数を所定の値とするように、システムプログラムＱを作成する。なお、システム変数「ＩＯ１．Ｉｎｐｕｔ１」についても、対応する装置変数が変換テーブルＴに定義されていてもよい。
【０１７１】
また例えば、工程Ａ２の工程イメージＩ２は、工程Ａ１の工程イメージＩ１の直後に存在するので、システムプログラム作成部１０３は、工程Ａ１の終了システム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ１．ＥＮ」が所定の値になった場合に、工程Ａ２の開始システム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ２．ＳＴ」を所定の値とするように、システムプログラムＱを作成する。また例えば、工程Ａ３の工程イメージＩ３は、工程Ａ２の工程イメージＩ２の直後に存在するので、システムプログラム作成部１０３は、工程Ａ２の変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ２．Ｓ−１」が所定の値になり、かつ、工程Ａ２の終了システム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ２．ＥＮ」が所定の値になった場合に、工程Ａ３の開始システム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ３．ＳＴ」を所定の値とするように、システムプログラムＱを作成する。
【０１７２】
また例えば、工程Ｂ１の工程イメージＩ４は、工程Ａ３の工程イメージＩ３の直後に存在するので、システムプログラム作成部１０３は、工程Ａ３の終了システム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ３．ＥＮ」が所定の値になった場合に、工程Ｂ１の開始変数「Ｅｑｕｉｐ３０Ｂ．Ｓｔｅｐ４．ＳＴ」を所定の値とするように、システムプログラムＱを作成する。また例えば、工程Ｂ２の工程イメージＩ５は、工程Ｂ１の工程イメージＩ４の直後に存在するので、システムプログラム作成部１０３は、工程Ｂ１の終了システム変数「Ｅｑｕｉｐ３０Ｂ．Ｓｔｅｐ４．ＥＮ」が所定の値になった場合に、工程Ｂ２の開始システム変数「Ｅｑｕｉｐ３０Ｂ．Ｓｔｅｐ５．ＳＴ」を所定の値とするように、システムプログラムＱを作成する。
【０１７３】
なお、システムプログラムＱを生成するためのプログラムは、データ記憶部１００に記憶されているものとする。例えば、システムプログラム作成部１０３は、ビルド作業を実行してシステムプログラムＱを作成する。上記の処理を実現するための命令は、例えば、ラダー言語における起動スイッチ又はコイルによって記述されてもよいし、ロボット言語における条件分岐の命令によって記述されてもよい。システムプログラム作成部１０３は、ビルド以外にも、コンパイラ等を利用してシステムプログラムＱを作成してもよい。また、開始システム変数と関連付けられる変更システム変数は、終了変数に限られない。例えば、工程Ａ３の開始システム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ３．ＳＴ」のように、工程Ａ２の終了システム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ２．ＥＮ」だけではなく、工程Ａ２の信号の変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ２．Ｓ−１」も関連付けられるようにしてもよい。
【０１７４】
システムプログラム作成部１０３は、受付部１０２が受け付けた繰り返し動作に基づいて、指定された繰り返し動作で各産業装置３０を動作させるシステムプログラムＱを作成する。例えば、システムプログラム作成部１０３は、ユーザにより指定された繰り返し動作をするように、２サイクル目以降の開始タイミングを決定する。
【０１７５】
図１４の例であれば、システムプログラム作成部１０３は、２サイクル目以降の工程Ａ１の開始システム変数に、工程Ｂ１の終了システム変数を関連付ける。これにより、２サイクル目以降の工程Ａ１は、１つ前のサイクルの工程Ｂ１が終了した場合に開始され、図１４のタイミングチャートＣのような実行順で各工程が実行される。システムプログラム作成部１０３は、２サイクル目の工程Ａ１の開始システム変数「Ｅｑｕｉｐ３０Ａ．Ｓｔｅｐ１．ＳＴ」については、入出力信号の変数「ＩＯ１．Ｉｎｐｕｔ１」ではなく、工程Ｂ１の終了システム変数「Ｅｑｕｉｐ３０Ｂ．Ｓｔｅｐ４．ＥＮ」が所定の値になった場合に変化するように、システムプログラムＱを作成する。システムプログラム作成部１０３は、以降の処理については、１サイクル目と同様の処理をするように、システムプログラムＱを作成する。
【０１７６】
変形例（２）によれば、スケジュール画面Ｇ１から工程の実行順を指定すればシステムプログラムＱを作成することができるので、システムプログラムＱの作成を簡易化することができる。従来の技術では、ユーザがいちいちＰＬＣのラダーチャートなどを作成しなければならなかったが、本願発明によれば、ユーザがスケジュール画面Ｇ１上で工程の実行順を指定すればよいので、より簡易な操作でプログラムを作成することができる。
【０１７７】
また、スケジュール画面Ｇ１において指定された実行順に従った工程が順次実行されるように、一の工程と他の工程を連動して実行させるシステムプログラムＱを作成することができる。例えば、その前に実行される一の工程で変更される変更変数を、他の工程を開始させる条件とすることができる。
【０１７８】
（３）また例えば、産業装置３０が工程を実行中に異常が発生することがある。この場合に、ユーザによる復旧手順をサーバ４０に記録しておき、再び異常が発生したときに、当該記録された復旧手順が呼び出されて、自動的に復旧が行われるようにしてもよい。
【０１７９】
図１７は、変形例（３）の生産システム１の全体構成を示す図である。図１７に示すように、変形例（３）の生産システム１は、コントローラ２０、産業装置３０Ａ，３０Ｂ、サーバ４０、及びユーザ端末５０を含む。なお、本変形例では、プログラム作成装置１０は省略する。
【０１８０】
ユーザ端末５０は、ユーザが操作するコンピュータである。例えば、ユーザ端末５０は、パーソナルコンピュータ、携帯端末（タブレット型端末を含む）、又は携帯電話（スマートフォンを含む）である。また、ユーザ端末５０は、これらに限られず、オペレータ端末、プログラミングペンダント、又はパネルコントローラ等のＨＭＩ（Human Machine Interface）であってもよい。ユーザ端末５０は、ＣＰＵ５１、記憶部５２、通信部５３、操作部５４、及び表示部５５を含む。なお、図１７では線を省略しているが、ユーザ端末５０は、コントローラ２０及びサーバ４０の各々とも接続可能である。ユーザ端末５０は、ＣＰＵ５１、記憶部５２、通信部５３、操作部５４、及び表示部５５を含む。ＣＰＵ５１、記憶部５２、通信部５３、操作部５４、及び表示部５５の物理的構成は、それぞれＣＰＵ１１、記憶部１２、通信部１３、操作部１４、及び表示部１５と同様であってよい。
【０１８１】
図１８は、コントローラ２０が産業装置３０を制御する様子を示す図である。本変形例では、産業装置３０Ａが工作機械であり、産業装置３０Ｂが産業用ロボットである場合を例に挙げて説明する。例えば、工程は、周期的に繰り返される。図１８では、１サイクル内に実行される工程が示されている。コントローラ２０は、システムプログラムを実行し、サイクルの最初の工程として、産業装置３０Ｂに認識工程を実行させる。認識工程は、センサを利用してワークを認識する工程である。
【０１８２】
先述したように、本変形例では、工程ごとに変数が用意されており、変数によって工程の開始が制御される。実施形態で説明したように、システム変数と装置変数が変換されてもよいし、システム変数と装置変数に区別されておらずコントローラ２０と産業装置３０とで共通の変数が用いられてもよい。システム変数と装置変数を区別する場合、以降説明する工程が実行される場合には、実施形態で説明したようにこれらの変数が変換される。変数の変換については、実施形態で説明した通りなので、本変形例では、変換の詳細については省略する。
【０１８３】
まず、コントローラ２０は、認識工程を開始するための開始変数を所定の値に変更する。この値は、工程を開始するための値であり、例えば、１である。開始変数には、初期値（例えば、０）が設定されており、開始変数が初期値から所定の値になった場合に工程が開始される。
【０１８４】
産業装置３０Ｂは、認識工程の開始変数が所定の値に変更されたことを検出すると、認識工程の工程プログラムＰを実行し、認識工程を開始する。認識工程が正常に終了すると、産業装置３０Ｂは、認識工程の終了変数を所定の値に変更する。この値は、工程の終了を示す値であり、例えば、１である。終了変数には、初期値（例えば、０）が設定されており、工程が終了すると初期値から所定の値になる。
【０１８５】
コントローラ２０は、認識工程の終了変数が所定の値に変更されたことを検出すると、次の把持工程の開始変数を所定の値に変更する。把持工程は、認識されたワークをロボットハンドで把持して所定の位置に搬送する工程である。産業装置３０Ｂは、把持工程の開始変数が所定の値に変更されたことを検出すると、把持工程の工程プログラムＰを実行し、把持工程を開始する。把持工程が正常に終了すると、産業装置３０Ｂは、把持工程の終了変数を所定の値に変更する。
【０１８６】
コントローラ２０は、把持工程の終了変数が所定の値に変更されたことを検出すると、次の扉開け工程の開始変数を所定の値に変更する。扉開け工程は、ワークを入れるために産業装置３０Ａの扉を開く工程である。産業装置３０Ａは、扉開け工程の開始変数が所定の値に変更されたことを検出すると、扉開け工程の工程プログラムＰを実行し、扉開け工程を開始する。扉開け工程が正常に終了すると、産業装置３０Ａは、扉開け工程の終了変数を所定の値に変更する。
【０１８７】
コントローラ２０は、扉開け工程の終了変数が所定の値に変更されたことを検出すると、次のセット工程の開始変数を所定の値に変更する。セット工程は、開けられた扉の中にワークをセットする工程である。産業装置３０Ｂは、セット工程の開始変数が所定の値に変更されたことを検出すると、セット工程の工程プログラムＰを実行し、セット工程を開始する。セット工程が正常に終了すると、産業装置３０Ｂは、セット工程の終了変数を所定の値に変更する。
【０１８８】
コントローラ２０は、セット工程の終了変数が所定の値に変更されたことを検出すると、次のチャック工程の開始変数を所定の値に変更する。チャック工程は、加工を行うためにワークを固定する工程である。産業装置３０Ａは、チャック工程の開始変数が所定の値に変更されたことを検出すると、チャック工程の工程プログラムＰを実行し、チャック工程を開始する。チャック工程が正常に終了すると、産業装置３０Ａは、チャック工程の終了変数を所定の値に変更する。
【０１８９】
コントローラ２０は、チャック工程の終了変数が所定の値に変更されたことを検出すると、次の加工工程の開始変数を所定の値に変更する。加工工程は、ワークを加工する工程である。産業装置３０Ａは、加工工程の開始変数が所定の値に変更されたことを検出すると、加工工程の工程プログラムＰを実行し、加工工程を開始する。加工工程が正常に終了すると、産業装置３０Ａは、加工工程の終了変数を所定の値に変更する。
【０１９０】
以上により、１サイクル内の全ての工程が完了する。コントローラ２０は、加工工程の終了変数が所定の値に変更されたことを検出すると、次のサイクルを開始するために、認識工程の開始変数を所定の値に変更する。以降、１サイクル目と同様にして、次のサイクルが開始される。なお、各工程の開始変数と終了変数は、サイクル終了時等の所定のタイミングで初期値に戻るものとする。
【０１９１】
各産業装置３０は、自身が実行する工程で異常が発生した場合に、工程の実行を中断し、中断変数を所定の値に変更する。異常発生を検出する処理は、工程プログラムＰに記述されているものとする。例えば、産業装置３０Ａは、扉開け工程において扉が開かなかった場合には、扉開く工程の中断変数を所定の値に変更する。また例えば、産業装置３０Ｂは、把持工程においてワークを把持できなかった場合には、把持工程の中断変数を所定の値に変更する。
【０１９２】
コントローラ２０は、何れかの工程の中断変数が所定の値に変更されたことを検出すると、ユーザ端末５０に対し、異常が発生したことを示す異常発生通知を送信する。本変形例では、電子メールを利用して異常発生通知が送信される場合を説明するが、他の媒体を利用して通知が行われてもよい。例えば、プッシュ通知、エンジニアリングツール内の通知、又はメッセージアプリを利用して異常発生通知が行われてもよい。
【０１９３】
また例えば、異常発生通知は、ユーザ端末５０に対する情報の出力に限られず、他の方法で行われるようにしてもよい。例えば、コントローラ２０にＬＥＤライト等の発光部を設けておき、発光部を発光させることによって、異常発生通知が行われてもよい。また例えば、異常発生通知は、視覚的な通知に限られず、聴覚的又は触覚的な通知であってもよい。例えば、スピーカから出力されるアラーム音、又は、バイブレータの振動によって異常発生通知が行われてもよい。
【０１９４】
ユーザは、異常発生通知を確認すると、産業装置３０にユーザ端末５０を接続して異常を復旧させる。ユーザ端末５０と産業装置３０とは、有線接続されてもよいし、無線接続されてもよい。本変形例では、産業装置３０Ａの加工工程で発生した異常を復旧させる手順を例に挙げて説明する。例えば、ユーザが、ユーザ端末５０にインストールされたエンジニアリングツールを起動させると、異常を復旧させるための復旧工程作成画面が表示される。
【０１９５】
図１９は、復旧工程作成画面の一例を示す図である。図１９に示すように、復旧工程作成画面Ｇ２には、産業装置３０が実行可能な工程のリストＬ２が表示される。例えば、リストＬ２には、産業装置３０Ａ及び産業装置３０Ｂの各々が実行可能な全ての工程の名称が表示される。リストＬ２には、サイクル内で実行される工程の名称に限られず、他の工程の名称も表示される。例えば、リストＬ２には、異常復旧のために実行される工程の名称に限られず、異常復旧で特に利用されない工程の名称も表示される。
【０１９６】
ユーザは、復旧工程作成画面Ｇ２から少なくとも１つの工程を指定し、産業装置３０に発生した異常を復旧させる。ユーザは、リストＬ２中の任意の工程を指定可能である。例えば、ユーザは、産業装置３０Ａ及び産業装置３０Ｂの両方の工程を指定してもよいし、産業装置３０Ａ又は産業装置３０Ｂの何れか一方の工程を指定してもよい。産業装置３０Ａ及び産業装置３０Ｂの各々は、ユーザが選択した工程を実行する。
【０１９７】
図２０は、ユーザが手動で異常を復旧させる様子を示す図である。図２０に示すように、例えば、ユーザは、復旧工程作成画面Ｇ２から、産業装置３０Ａの扉開け工程、工具逃げ工程、工具退避工程、及びチャックＯＦＦ工程を選択する。工具逃げ工程及び工具退避工程の各々は、産業装置３０Ａに備えられた加工用の工具を移動させる工程である。チャックＯＦＦ工程は、チャック状態を解除する工程である。産業装置３０Ａは、ユーザが指定した順番に各工程を実行する。
【０１９８】
その後、ユーザは、復旧工程作成画面Ｇ２から、産業装置３０Ｂの移動工程を選択する。移動工程は、ロボットハンドを移動させる工程である。産業装置３０Ｂは、ユーザの指示に沿って移動工程を実行する。ユーザは、異常が復旧したことを確認すると、復旧工程作成画面Ｇ２から復旧完了ボタンＢを選択する。ユーザが復旧完了ボタンＢを選択すると、加工工程の中断変数が初期値に戻り、サイクルが再開される。図２０の例では、異常が発生した加工工程の１つ前のチャック工程から再開される場合を示している。
【０１９９】
本変形例では、ユーザが手動で異常を復旧させると、その時に指定した工程が復旧工程情報としてサーバ４０に記録される。詳細は後述するが、本変形例の復旧工程情報は、ユーザが指定した工程をその実行順に実行するためのマクロである。サーバ４０に記録された復旧工程情報は、産業装置３０で再び異常が発生した場合に、コントローラ２０によって呼び出される。コントローラ２０は、呼び出した復旧工程情報に基づいて、過去にユーザが指定した手順で工程を実行し、異常を復旧させる。なお、自動的に復旧が実行されるのではなく、ユーザに対して復旧するか否かを問い合わせたうえで、復旧が実行されてもよい。
【０２００】
図２１は、復旧工程情報によって異常が復旧する様子を示す図である。図２１に示すように、産業装置３０Ａの加工工程で再び異常が発生すると、コントローラ２０は、サーバ４０に対し、復旧工程情報を要求する。サーバ４０は、コントローラ２０に対し、過去に登録された復旧工程情報を送信する。コントローラ２０は、サーバ４０から受信した復旧手順に基づいて、産業装置３０Ａに扉開け工程、工具逃げ工程、工具退避工程、及びチャックＯＦＦ工程を実行させ、産業装置３０Ｂに移動工程を実行させる。その後、コントローラ２０は、加工工程の中断変数が初期値に戻ったことを検出すると、チャック工程の開始変数を所定の値に変更し、サイクルを再開させる。
【０２０１】
以上のように、本変形例の生産システム１では、サーバ４０に復旧工程情報を記録しておき、産業装置３０で再び異常が発生した場合にコントローラ２０が復旧工程情報を呼び出すことによって、産業装置３０に発生した異常を復旧させる際の手間を軽減するようにしている。以降、本変形例の生産システム１の詳細を説明する。
【０２０２】
図２２は、変形例（３）の機能ブロック図である。図２２に示すように、変形例（３）では、コントローラ２０において、検出部２０３及び復旧部２０４が実現される。また、ユーザ端末５０において、データ記憶部５００、表示制御部５０１、受付部５０２、及び記録部５０３が実現される。
【０２０３】
［検出部］
検出部２０３は、ＣＰＵ２１を主として実現される。検出部２０３は、各産業装置３０に発生した異常を検出する。本変形例では、各工程で異常が発生すると、工程プログラムＰは、当該工程の中断変数を所定の値に変更する。検出部２０３は、各工程の中断変数の値を参照し、所定の値になったか否かを判定する。検出部２０３は、中断変数が所定の値になった工程に異常が発生したと判定する。実施形態で説明したように、システム変数と装置変数を区別する場合には、装置変数の中断変数がシステム変数に変換されたうえで、検出部２０３は、このシステム変数の中断変数の値を参照する。
【０２０４】
なお、異常の検出方法は、変数を利用した方法に限られない。異常の検出方法自体は、公知の手法を適用可能であり、例えば、検出部２０３は、ある工程が一定時間の間終了しなかった場合に異常が発生したと判定してもよいし、コントローラ２０又は産業装置３０に接続されたセンサの検出信号が異常値を示す場合に異常が発生したと判定してもよい。
【０２０５】
また例えば、産業装置３０は、異常が発生した場合に、コントローラ２０に対し、所定の異常発生通知を送信してもよい。異常発生通知には、任意の情報が含まれてよく、例えば、異常が発生した産業装置３０の名称、異常が発生した工程の名称、発生した異常の種類、及び異常が発生した日時等が含まれていてもよい。検出部２０３は、産業装置３０から異常発生通知を受信したか否かを判定する。検出部２０３は、異常発生通知を受信した場合に異常が発生したと判定する。
【０２０６】
［復旧部］
復旧部２０４は、ＣＰＵ２１を主として実現される。復旧部２０４は、検出部２０３が異常を再び検出した場合に、記録部５０３が記録した復旧工程情報が示す１以上の工程を取得し、当該取得した１以上の工程を実行して異常を復旧させる。本変形例では、過去の異常発生時にユーザが指定した工程が復旧工程情報に示されているので、復旧部２０４は、復旧工程情報に記述された手順に沿って工程を実行し、異常を復旧させる。復旧時の工程は、通常の工程と同様、工程プログラムＰ及び変数によって実行が制御されるので、復旧部２０４は、復旧工程情報に示された工程の変数に基づいて、工程を実行する。
【０２０７】
例えば、複数の工程が所定の順序で実行された場合、復旧部２０４は、１番目の工程の開始変数を所定の値に変更するように、産業装置３０に指示を送る。産業装置３０は、変数の変化を検知すると１番目の工程を実行する。１番目の工程が正常に終了すると、産業装置３０は、当該工程の終了変数を所定の値に変更する。復旧部２０４は、１番目の工程の終了変数が所定の値になったことを検出すると、２番目の復旧工程の開始変数を所定の値に変更するように、産業装置３０に指示を送る。以降同様にして、復旧工程情報に示された最後まで順番に工程が実行される。
【０２０８】
［データ記憶部］
データ記憶部４００は、記憶部４２を主として実現される。データ記憶部４００は、復旧工程情報を記憶する。例えば、データ記憶部４００は、少なくとも１つの復旧工程情報を格納された復旧工程データベースＤＢ３を記憶する。サーバ４０は、ユーザ端末５０から復旧工程情報を受信すると、復旧工程データベースＤＢ３に格納する。
【０２０９】
図２３は、復旧工程データベースＤＢ３のデータ格納例を示す図である。図２３に示すように、復旧工程データベースＤＢ３には、復旧工程情報の名称ごとに、復旧工程情報が格納される。例えば、復旧工程情報には、工程の実行順、工程を実行する産業装置３０の名称、及び工程の名称が格納される。図２３では復旧工程情報の内容をテーブルで示しているが、本変形例では、復旧工程情報はマクロ化されているので、これらの関係は、マクロの命令として記述されている。即ち、復旧工程情報には、扉開け工程、工具逃げ工程、工具退避工程、チャックＯＦＦ工程、移動工程の順番で開始変数を所定の値に変更するように命令が記述されている。
【０２１０】
［データ記憶部］
データ記憶部５００は、記憶部５２を主として実現される。データ記憶部５００は、サーバ４０に復旧工程情報を記録するために必要なデータを記憶する。例えば、データ記憶部１００は、工程データベースＤＢ２を記憶する。工程データベースＤＢ２は、変形例（２）と同様であってもよいが、本変形例では、他のデータ格納例について説明する。
【０２１１】
図２４は、変形例（３）の工程データベースＤＢ２のデータ格納例を示す図である。図２４に示すように、工程データベースＤＢ２は、各工程の工程情報が格納されたデータベースである。例えば、工程データベースＤＢ２には、産業装置３０の名称と、当該産業装置３０が実行する工程の工程情報と、が格納される。工程情報には、工程の名称と変数の名称とが格納される。本変形例では、装置変数の名称が工程情報に格納される場合を説明するが、システム変数の名称が工程情報に格納されてもよい。
【０２１２】
なお、データ記憶部５００が記憶するデータは、上記の例に限られない。例えば、データ記憶部５００は、復旧工程作成画面Ｇ２に表示される画像の画像データを記憶してもよいし、エンジニアリングツールを記憶してもよい。また例えば、データ記憶部５００は、作成済みの工程プログラムＰとシステムプログラムＱとを記憶してもよい。また例えば、データ記憶部５００は、サーバ４０に登録済みの復旧工程情報を記憶してもよい。
【０２１３】
［表示制御部］
表示制御部５０１は、ＣＰＵ５１を主として実現される。表示制御部５０１は、検出部２０２が異常を検出した場合に、復旧工程作成画面Ｇ２を表示させる。本変形例では、工程データベースに各工程の工程情報が格納されているので、表示制御部５０１は、工程データベースに基づいて、復旧工程作成画面Ｇ２を表示させる。
【０２１４】
復旧工程作成画面Ｇ２は、少なくとも１つの工程の指定を受け付けるユーザインタフェースを有する。別の言い方をすれば、復旧工程作成画面Ｇ２は、復旧時に実行する少なくとも１つの工程の指定を受け付ける。本変形例の復旧工程作成画面Ｇ２は、図１９のようなレイアウトを有し、例えば、表示制御部５０１は、工程データベースＤＢ２を参照し、全ての工程の名称を示すリストＬ２を復旧工程作成画面Ｇ２に表示させる。なお、リストＬ２には、工程データベースに工程情報が格納された全ての工程の名称が表示されなくてもよく、一部の工程の名称だけが表示されてもよい。
【０２１５】
なお、復旧工程作成画面Ｇ２は、図１９のレイアウトに限られず、任意のレイアウトであってよい。例えば、復旧工程作成画面Ｇ２は、プルダウン形式又はドラムロール形式で工程の選択を受け付けてもよい。また例えば、復旧工程作成画面Ｇ２は、フローチャート形式で工程を時系列的に並べるようなレイアウトであってもよいし、表形式で工程の名称の入力を受け付けるようなレイアウトであってもよい。また例えば、復旧工程作成画面Ｇ２は、実工程の名称を入力するための入力フォームが並べられていてもよい。
【０２１６】
［受付部］
受付部５０２は、ＣＰＵ５２を主として実現される。受付部５０２は、検出部が異常を検出した場合に、複数の工程それぞれに対して、少なくとも、工程の名称と、装置変数及びシステム変数の少なくとも一方と、が関連付けられた工程情報に基づいて、復旧のために実行する１以上の工程の指定を受け付ける。
【０２１７】
受付部５０２は、検出部２０３が異常を検出した場合に、複数の工程それぞれに対して、少なくとも、工程の名称と、産業装置３０の動作を表して工程で実行される工程プログラムＰにおいて参照及び変更の少なくとも一方が行われる変数と、が関連付けられた工程情報に基づいて、復旧のために実行する１以上の工程の指定を受け付ける。
【０２１８】
復旧のために実行する工程とは、検出部２０３が検出した異常の復旧に必要な工程である。別の言い方をすれば、復旧のために実行する工程は、ユーザが手動で異常を復旧させた際に指定された工程である。復旧のために実行する工程は、１つであってもよいし、複数であってもよい。復旧のために実行する工程は、上限数があってもよいし、特に上限数がなくてもよい。受付部５０２は、操作部１４の検出信号に基づいて、工程の指定を受け付ける。
【０２１９】
本変形例では、復旧工程作成画面Ｇ２の中から工程が指定されるので、受付部５０２は、復旧工程作成画面Ｇ２において、１以上の工程の指定を受け付ける。例えば、受付部５０２は、復旧工程作成画面Ｇ２のリストＬ２に表示された工程の中から、１以上の工程の指定を受け付ける。受付部５０２は、同じ工程の指定を繰り返し受け付けてもよい。また例えば、受付部５０２は、１つの産業装置３０の工程の指定だけを受け付けてもよいし、複数の産業装置３０の各々の工程の指定を受け付けてもよい。
【０２２０】
例えば、ユーザが複数の工程を指定する場合、受付部５０２は、複数の工程の実行順の指定を受け付ける。本変形例では、ユーザがリストＬ２中の工程を繰り返し指定するので、工程を指定した順序が実行順に相当する。即ち、受付部５０２は、リストＬ２中の工程の指定を繰り返し受け付けることによって、実行順の指定を受け付ける。工程の指定を受け付けた順番がそのまま実行順となる。
【０２２１】
なお、実行順の指定は、本変形例の例に限られず、任意の操作によって行われてよい。例えば、受付部５０２は、実行順を示す数値の入力を受け付けることによって、実行順の指定を受け付けてもよい。また例えば、受付部５０２は、フローチャート形式の復旧工程作成画面Ｇ２であれば、工程の並び順を指定する操作を受け付けることによって、実行順の指定を受け付けてもよい。
【０２２２】
本変形例では、異常が発生した産業装置３０以外の他の産業装置３０についても、復旧時の工程を指定可能である。例えば、復旧工程作成画面Ｇ２では、異常が発生した産業装置３０Ａの加工工程よりも前の工程を担当する産業装置３０Ｂの工程も指定可能である。受付部５０２は、検出部２０３が異常を検出した産業装置３０Ａと、当該産業装置３０Ａの前工程を実行する他の産業装置３０Ｂと、のそれぞれの工程情報に基づいて、産業装置３０Ａ及び他の産業装置３０Ｂの少なくとも一方により実行される１以上の工程の指定を受け付ける。受付部５０２は、産業装置３０Ａ及び産業装置３０Ｂの両方の工程の指定を受け付けてもよいし、産業装置３０Ａ又は産業装置３０Ｂの何れか一方のみの工程の指定を受け付けてもよい。
【０２２３】
［記録部］
記録部５０３は、ＣＰＵ５２を主として実現される。記録部５０３は、受付部５０２が受け付けた１以上の工程を示す復旧工程情報を記録する。復旧工程情報は、異常復旧時にユーザが指定した工程を識別する情報である。別の言い方をすれば、復旧工程情報は、異常を復旧させるための工程の実行結果を示す情報である。本変形例では、復旧工程情報がマクロ形式のデータである場合を説明するが、復旧工程情報は、任意のデータ形式であってよい。例えば、復旧工程情報は、テキスト形式、ドキュメント形式、又はＣＳＶ形式等であってもよい。他にも例えば、ユーザが指定した工程の開始変数を次々と変更するようなプログラムが自動的に生成され、当該プログラムが復旧工程情報として記録されてもよい。
【０２２４】
本変形例では、記録部５０３が、産業装置３０を制御するコントローラ２０と通信可能なサーバ４０に、復旧工程情報を記録する場合を説明するが、記録部５０３は、他のコンピュータ又は情報記憶媒体に復旧工程情報を記録してもよい。例えば、記録部５０３は、ユーザ端末５０、コントローラ２０、又は産業装置３０に復旧工程情報を記録してもよいし、図示しないデータベースサーバ又はシミュレーションサーバ等の他のコンピュータに復旧工程情報を記録してもよい。
【０２２５】
例えば、ユーザが複数の工程を指定する場合、記録部５０３は、受付部５０２が受け付けた実行順に基づいて、復旧工程情報を記録する。この場合、復旧工程情報には、ユーザが指定した実行順と、各工程の名称と、が関連付けられて格納される。即ち、記録部５０３は、ユーザが指定した各工程を、ユーザが指定した実行順で実行可能なように、復旧工程情報を記録する。
【０２２６】
本変形例では、変数によって工程の実行が制御されるので、記録部５０３は、ユーザが指定した実行順で各工程の開始変数が所定の値となるように、復旧工程情報を生成する。例えば、記録部５０３は、扉開け工程の開始変数を所定の値とするように、復旧工程情報を作成する。また、記録部５０３は、扉開け工程の終了変数が所定の値になった場合に、次の工具逃げ工程の開始変数を所定の値とするように、復旧工程情報を作成する。以降同様に、記録部５０３は、ある工程の終了変数が所定の値になった場合に、次の工程の開始変数を所定の値に変更するように、復旧工程情報を作成する。本変形例では、これら変数の値の変更をするための命令がマクロとして記述された復旧工程情報が生成される。
【０２２７】
また例えば、記録部５０３は、産業装置３０Ａ及び他の産業装置３０Ｂの少なくとも一方により実行される１以上の工程を示す復旧工程情報を記録する。即ち、ユーザが複数の産業装置３０の各々の工程を指定した場合には、記録部５０３は、ユーザが指定した工程を各産業装置３０が実行するように、復旧工程情報を生成する。例えば、記録部５０３は、産業装置３０Ａが扉開け工程等の４つの工程を実行した後に、産業装置３０Ｂが移動工程を実行するように、復旧工程情報を生成する。先述したように、復旧工程情報には、各工程の開始変数を変更するための命令がマクロとして記述される。
【０２２８】
なお、本変形例では、記録部５０３によって復旧工程情報が記録されると、ユーザ端末５０は、異常発生時に当該復旧工程情報を呼び出すように、システムプログラムＱを変更する。例えば、ユーザ端末５０は、異常が発生した場合に、サーバ４０に復旧工程情報を要求するための軌道スイッチ又はコイル等をシステムプログラムＱのラダーチャートに追加したり、当該要求を示す命令をシステムプログラムＱのソースコードに追加したりする。システムプログラムＱが変更されることによって、再び異常が発生した場合に、復旧工程情報が呼び出されるようになる。
【０２２９】
変形例（３）によれば、産業装置３０に発生した異常が検出された場合に、工程情報に基づいて、復旧のために実行する１以上の工程の指定を受け付けて、復旧工程情報として記録することにより、ラダーチャートなどを利用して復旧プログラムを作成する必要がなくなり、産業装置に発生した異常を復旧させるための手間を軽減することができる。例えば、産業装置には、種々の異常が発生することがあり、異常ごとに復旧プログラムを作成するのは非常に手間がかかるが、異常の復旧のために実行させる工程を指定して実行結果を記録することにより、このような手間を省くことができる。例えば、工程を任意の順序で組み合わせることによって、種々の異常に対応することができる。
【０２３０】
また、異常が再び検出された場合に、復旧工程情報が示す１以上の工程を取得し、当該取得した１以上の工程を実行して異常を復旧させることで、産業装置３０に発生した異常を容易に復旧させることができる。
【０２３１】
（４）また例えば、上記変形例を組み合わせてもよい。
【０２３２】
また例えば、コントローラ２０は、直下の機器の動作を制御するための工程プログラムＰを記憶してもよい。また例えば、コントローラ２０に変換データが記憶される場合を説明したが、変換データは、産業装置３０に記憶されていてもよいし、サーバ４０等の他のコンピュータ又は外部情報記憶媒体に記憶されていてもよい。また例えば、変換部２０２がコントローラ２０によって実現される場合を説明したが、変換部２０２は、産業装置３０によって実現されてもよいし、サーバ４０等の他のコンピュータによって実現されてもよい。
【０２３３】
また例えば、以上説明した実施形態は具体例として示したものであり、本明細書にて開示される発明をこれら具体例の構成やデータ格納例そのものに限定するものではない。当業者はこれら開示された実施形態に種々の変形、例えば、物理的構成の形状や数、データ構造、処理の実行順を変更したりしてもよい。本明細書にて開示される発明の技術的範囲は、そのようになされた変形をも含むものと理解すべきである。
【符号の説明】
【０２３４】
１  生産システム、Ｂ  復旧完了ボタン、Ｃ  タイミングチャート、Ｉ  工程イメージ、Ｐ  工程プログラム、Ｑ  システムプログラム、Ｔ  変換テーブル、１０  プログラム作成装置、２０  コントローラ、３０  産業装置、４０  サーバ、５０  ユーザ端末、１１，２１，３１，４１，５１  ＣＰＵ、１２，２２，３２，４２，５２  記憶部、１３，２３，３３，４３,  通信部、１４，５４  操作部、１５，５５  表示部、Ｇ１  スケジュール画面、Ｇ２  復旧工程作成画面、Ｉ  工程イメージ、Ｌ１，Ｌ２  リスト、Ｔ，ＴＡ，ＴＢ  変換テーブル、１００  データ記憶部、１０１  表示制御部、１０２  工程登録部、１０２  受付部、１０３  システムプログラム作成部、２００  データ記憶部、２０１  システムプログラム実行部、２０２  検出部、２０２  変換部、２０３  検出部、２０４  復旧部、３００  データ記憶部、３０１  工程プログラム実行部、４００  データ記憶部、５００  データ記憶部、５０１  表示制御部、５０２  受付部、５０３  記録部、ＤＢ１  変換データベース、ＤＢ２  工程データベース、ＤＢ３  復旧工程データベース。
【要約】
【課題】複数の産業装置とコントローラがそれぞれ独自に管理する変数を変換し、所定の実行順で各産業装置を動作させる。
【解決手段】生産システム（１）は、所定の工程を実行するための工程プログラムを実行し、装置変数の参照及び変更の少なくとも一方を行う複数の産業装置（３０）と、複数の工程に対して指定された実行順で各産業装置（３０）を動作させるためのシステムプログラムを実行し、システム変数の参照及び変更の少なくとも一方を行うコントローラ（２０）と、を有する。変換データ記憶部（２００）は、各産業装置（３０）の装置変数とシステム変数との変換データを記憶する。変換部（２０２）は、コントローラと各産業装置（３０）とが通信する場合に、当該産業装置（３０）の変換データに基づいて、当該産業装置（３０）の装置変数とシステム変数との変換を行う。
【選択図】図４【図１】
0006881557.tif 000002
【図２】
0006881557.tif 000003
【図３】
0006881557.tif 000004
【図４】
0006881557.tif 000005
【図５】
0006881557.tif 000006
【図６】
0006881557.tif 000007
【図７】
0006881557.tif 000008
【図８】
0006881557.tif 000009
【図９】
0006881557.tif 000010
【図１０】
0006881557.tif 000011
【図１１】
0006881557.tif 000012
【図１２】
0006881557.tif 000013
【図１３】
0006881557.tif 000014
【図１４】
0006881557.tif 000015
【図１５】
0006881557.tif 000016
【図１６】
0006881557.tif 000017
【図１７】
0006881557.tif 000018
【図１８】
0006881557.tif 000019
【図１９】
0006881557.tif 000020
【図２０】
0006881557.tif 000021
【図２１】
0006881557.tif 000022
【図２２】
0006881557.tif 000023
【図２３】
0006881557.tif 000024
【図２４】
0006881557.tif 000025