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