(57)【要約】      （修正有）【課題】特殊なシーケンス記述形式や、高度な電気及びソフトウェアの知識を必要とすることなく、容易にシーケンス制御を実現する。【解決手段】複数の制御対象それぞれの動作の開始又は停止のタイミングを示す順序論理を特定する予め定められた形式のデータの入力を受入れるシーケンス入力部２０２と、複数の制御対象それぞれの少なくとも動作に対する設定入力を受入れる設定入力部２００と、シーケンス入力部が受入れたデータに基づいて順序論理を解釈し、順序論理に応じたタイミングで複数の制御対象それぞれの動作を開始又は停止させるシーケンス実行部３０４と、シーケンス実行部が動作を開始させたタイミングで、設定入力部が受入れた設定入力に応じて、複数の制御対象をそれぞれ駆動する駆動部３０６と、を有する。【選択図】図１
2017084321.tif 000002
【特許請求の範囲】
【請求項１】
複数の制御対象それぞれの動作の開始又は停止のタイミングを示す順序論理を特定する予め定められた形式のデータの入力を受入れるシーケンス入力部と、
前記複数の制御対象それぞれの少なくとも動作に対する設定入力を受入れる設定入力部と、
前記シーケンス入力部が受入れた前記データに基づいて前記順序論理を解釈し、前記順序論理に応じたタイミングで前記複数の制御対象それぞれの動作を開始又は停止させる処理をそれぞれイベントとして実行するシーケンス実行部と、
前記シーケンス実行部が動作を開始させたタイミングで、前記設定入力部が受入れた前記設定入力に応じて、前記複数の制御対象をそれぞれ駆動する駆動部と、
を有することを特徴とするシーケンス制御装置。
【請求項２】
前記シーケンス実行部は、
前記順序論理に応じたタイミングで実行条件を判断し、実行可能であれば前記複数の制御対象それぞれの動作を開始又は停止させる処理を実行すること
を特徴とする請求項１に記載のシーケンス制御装置。
【請求項３】
前記シーケンス入力部は、
イベントごとに任意の順序で配列された形式の前記データの入力を受入れること
を特徴とする請求項１又は２に記載のシーケンス制御装置。
【請求項４】
前記シーケンス入力部は、
イベントごとに少なくとも前記制御対象のいずれかを特定する情報、特定された前記制御対象の具体的動作を示す情報、前記具体的動作に対する時限制御及び条件制御の条件を示す情報を設定可能にされた形式の前記データの入力を受入れること
を特徴とする請求項３に記載のシーケンス制御装置。
【請求項５】
前記シーケンス入力部は、
イベントごとに設定可能な項目をリストにして表示し、ユーザに項目の選択を促して前記データの入力を受入れること
を特徴とする請求項３又は４に記載のシーケンス制御装置。
【請求項６】
前記シーケンス入力部は、
イベントごとに次のイベントの開始タイミングが当該イベントと同時であるか、当該イベントの実行後であるか、又は次のイベントを開始しないかを示す情報を設定可能にされた形式の前記データの入力を受入れ、
前記シーケンス実行部は、
前記シーケンス入力部が受入れた前記データが示す開始タイミングに応じて、次のイベントを開始すること
を特徴とする請求項５に記載のシーケンス制御装置。
【請求項７】
前記シーケンス入力部は、
呼び出されることによって複数のイベントを前記シーケンス実行部に実行させるサブルーチンを示す情報、及び前記サブルーチンからの復帰先を示す情報を設定可能にされた形式の前記データの入力を受入れ、
前記シーケンス実行部は、
前記サブルーチンをイベントとして実行すること
を特徴とする請求項６に記載のシーケンス制御装置。
【請求項８】
前記シーケンス実行部は、
前記サブルーチンから他のサブルーチンを呼び出す場合、前記他のサブルーチンに対して前記サブルーチンの復帰先を通知すること
を特徴とする請求項７に記載のシーケンス制御装置。
【請求項９】
前記シーケンス実行部は、
前記サブルーチンの復帰先をスタック構造の復帰先履歴として、そのサブルーチンを構成する個々の前記イベントが保持し、個々のイベントが保持する復帰先履歴は、あるイベントが次のイベントの開始に先立ち、次のイベントに自身の復帰先履歴を示し、次のイベントがこの復帰先履歴を複製して引き継がれること
を特徴とする請求項７又は８に記載のシーケンス制御装置。
【請求項１０】
前記シーケンス実行部は、
スタック構造の前記復帰先履歴を保持する領域を、前記サブルーチンからの復帰が実行された場合に解放されるヒープ領域から確保すること
を特徴とする請求項９に記載のシーケンス制御装置。
【請求項１１】
前記シーケンス入力部は、
前記サブルーチンからの復帰先をなしとする情報を設定可能にされており、復帰先なしの設定場合、サブルーチンとして呼ばれたイベントは、呼び出し元の復帰先履歴を引き継がないこと
を特徴とする請求項７乃至１０のいずれか１項に記載のシーケンス制御装置。
【請求項１２】
前記設定入力部は、
前記複数の制御対象それぞれに名称を付与する設定入力をさらに受入れ、
前記シーケンス入力部は、
前記設定入力部が受入れた設定入力により付与される名称を用いて、設定可能な項目を前記リストにして表示すること
を特徴とする請求項５乃至１１のいずれか１項に記載のシーケンス制御装置。
【請求項１３】
前記設定入力部は、
前記制御対象の種類に応じて、設定可能なパラメータが定義されていること
を特徴とする請求項１乃至１２のいずれか１項に記載のシーケンス制御装置。
【請求項１４】
前記複数の制御対象は、
ステッピングモータ、ＤＣサーボモータ、センサ、出力ポート及びタイマの少なくともいずれかを含むこと
を特徴とする請求項１乃至１３のいずれか１項に記載のシーケンス制御装置。
【請求項１５】
前記設定入力部は、
前記複数の制御対象それぞれに対し、前記シーケンス実行部が動作を開始させる対象であるか否かを示す設定入力を受入れ、
前記シーケンス実行部は、
動作を開始させる対象でないことを示す設定入力がなされた前記制御対象を前記リストに表示しないこと
を特徴とする請求項５乃至１２のいずれか１項に記載のシーケンス制御装置。
【請求項１６】
前記設定入力部が受入れた設定入力、及び前記シーケンス入力部が受入れた前記データを、前記シーケンス実行部又は前記駆動部が使用できる形式のデータに変換する変換部をさらに有すること
を特徴とする請求項１乃至１５のいずれか１項に記載のシーケンス制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シーケンス制御装置に関する。
【背景技術】
【０００２】
シーケンス制御を実現する手段として、ＰＬＣ（プログラマブル・ロジック・コントローラ）が広く知られている。従来、ＰＬＣを用いて機械的な機構の動作を確認するプロトタイプを作成する場合、モータの駆動制御の知識や、チャタリングなどによる誤動作を防止するための知識が必要であった。また、シーケンスを記述する場合、ラダー回路、ファンクションブロック図（ＦＢＤ）、又はシーケンシャルファンクションチャート（ＳＦＣ）などの記述形式の知識も必要であった。
【０００３】
シーケンスプログラムの作成を簡単化するものとして、例えば、特許文献１には、移行条件を表形式で記述した出力定義シートを作成し、インタロックが発生した時の異常処理の指定を表形式で記述したインタロック定義シートを作成して、コントローラが実行可能な形式のバイナリーデータに変換するプログラム仕様書作成装置が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来は、特殊なシーケンス記述形式が必要となる場合や、高度な電気及びソフトウェアの知識が必要となる場合があった。
【０００５】
本発明は、上記に鑑みてなされたものであって、特殊なシーケンス記述形式や、高度な電気及びソフトウェアの知識を必要とすることなく、容易にシーケンス制御を実現することができるシーケンス制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明は、複数の制御対象それぞれの動作の開始又は停止のタイミングを示す順序論理を特定する予め定められた形式のデータの入力を受入れるシーケンス入力部と、前記複数の制御対象それぞれの少なくとも動作に対する設定入力を受入れる設定入力部と、前記シーケンス入力部が受入れた前記データに基づいて前記順序論理を解釈し、前記順序論理に応じたタイミングで前記複数の制御対象それぞれの動作を開始又は停止させる処理をそれぞれイベントとして実行するシーケンス実行部と、前記シーケンス実行部が動作を開始させたタイミングで、前記設定入力部が受入れた前記設定入力に応じて、前記複数の制御対象をそれぞれ駆動する駆動部と、を有する。
【発明の効果】
【０００７】
本発明によれば、特殊なシーケンス記述形式や、高度な電気及びソフトウェアの知識を必要とすることなく、容易にシーケンス制御を実現することができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態にかかるシーケンス制御装置の構成例を示すブロック図である。
【図２】図２は、設定入力部が受入れる設定の種類を例示する図である。
【図３】図３は、タイマ設定の詳細設定例を示す図である。
【図４】図４は、ＳＴＭ設定の詳細設定例を示す図である。
【図５】図５は、ＳＴＭ設定に対するパルステーブルの詳細設定例を示す図である。
【図６】図６は、ＤＣＳＭ設定の詳細設定例を示す図である。
【図７】図７は、センサ設定の詳細設定例を示す図である。
【図８】図８は、出力ポート設定の詳細設定例を示す図である。
【図９】図９は、シーケンス入力部における入力の第１例を示す図である。
【図１０】図１０は、シーケンス入力部における実行条件の入力例を示す図である。
【図１１】図１１は、変換部及び通信部の機能を実行させるアプリケーションの表示例を示す図である。
【図１２】図１２は、シーケンス制御装置が行う制御の種類と、制御それぞれの機能の概要を示す図である。
【図１３】図１３は、サブモジュール関連のイベントと終端イベントのデータの内容を示す図である。
【図１４】図１４は、イベントごとに適用される次行開始タイミングの情報の定義を示す図である。
【図１５】図１５は、トリガの処理を示すフローチャートである。
【図１６】図１６は、トリガの状態遷移を示す図である。
【図１７】図１７は、サブモジュールトリガの処理を示すフローチャートである。
【図１８】図１８は、サブモジュールトリガの状態遷移を示す図である。
【図１９】図１９は、通常のイベントの処理を示すフローチャートである。
【図２０】図２０は、通常のイベントの状態遷移を示す図である。
【図２１】図２１は、サブモジュールイベントの処理を示すフローチャートである。
【図２２】図２２は、サブモジュールイベントの状態遷移を示す図である。
【図２３】図２３は、サブモジュール完了イベントの処理を示すフローチャートである。
【図２４】図２４は、サブモジュール完了イベントの状態遷移を示す図である。
【図２５】図２５は、終端イベントの処理を示す図である。
【図２６】図２６は、終端イベントの状態遷移を示す図である。
【図２７】図２７は、シーケンス入力部における入力の第２例を示す図である。
【図２８】図２８は、シーケンス入力部における入力の第３例を示す図である。
【図２９】図２９は、重ねた分岐から元の復帰先に戻る過程を示す図である。
【図３０】図３０は、図２９に示した分岐の処理においてシーケンス実行部が保持すべき復帰先の第１例を示す図である。
【図３１】図３１は、図２９に示した分岐の処理においてシーケンス実行部が保持すべき復帰先の第２例を示す図である。
【図３２】図３２は、シーケンス実行部が保持すべき復帰先の第２例における動作例示範囲を示す図である。
【図３３】図３３は、図３２に示した動作例示範囲に対してシーケンス実行部が行う記憶領域の制御を模式的に示す図である。
【図３４】図３４は、シーケンス制御装置の適用例を示す図である。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、シーケンス制御装置の実施形態を詳細に説明する。図１は、実施形態にかかるシーケンス制御装置１０の構成例を示すブロック図である。図１に示すように、シーケンス制御装置１０は、例えばＰＣ（Personal  Computer）２０及び制御装置３０を備え、機構部５０に対してシーケンス制御を行う。
【００１０】
機構部５０は、例えばステッピングモータ（ＳＴＭ）５００、ＤＣサーボモータ（ＤＣＳＭ）５０２、センサ（ＳＮ）５０４、入出力ポート（Ｉ／Ｏ：出力ポート）５０６、及びタイマ（Ｔｉｍｅｒ）５０８などの複数の制御対象を備え、機械的な動作を行う。機構部５０は、任意の種類と個数の制御対象が設けられる。図１においては、ステッピングモータ５００、ＤＣサーボモータ５０２、センサ５０４、入出力ポート５０６及びタイマ５０８の各制御対象がそれぞれ１つずつ記載されているが、機構部５０には同じ種類の制御対象がそれぞれ複数設けられているものとする。なお、タイマ５０８は、物理的には制御装置３０内に含まれてもよい。
【００１１】
ＰＣ２０は、ＣＰＵ、記憶装置、キーボード及びマウスなどの入力装置、及びＬＣＤパネルなどの表示装置を備えた汎用のコンピュータである。また、ＰＣ２０は、設定入力部２００、シーケンス入力部２０２、変換部２０４及び通信部２０６などの機能を有する。
【００１２】
設定入力部２００は、機構部５０が備える複数の制御対象それぞれに対し、ユーザ（利用者）によるパラメータなどの設定を表形式で受入れる。具体的には、設定入力部２００は、例えばＥｘｃｅｌ（登録商標）などの表計算ソフトを介して、機構部５０が備える複数の制御対象それぞれの少なくとも動作に対する設定入力を表形式で受入れる。設定入力部２００は、制御対象の種類に応じて、設定可能なパラメータが定義されている。また、設定入力部２００が受入れた設定の中で、制御対象に対する項目を示す設定はシーケンス入力部２０２において選択可能に表示され、制御対象に対する設定値などは駆動部３０６に反映される。
【００１３】
シーケンス入力部２０２は、機構部５０が備える複数の制御対象それぞれの動作の開始又は停止のタイミングを示す順序論理を特定する予め定められた形式のデータの入力を表形式で受入れる。具体的には、シーケンス入力部２０２は、図９を用いて後述するように、例えばＥｘｃｅｌ（登録商標）などの表計算ソフトを介して、イベントごとにユーザが任意の順序で配列させたデータの入力を受入れる。
【００１４】
シーケンス入力部２０２は、表計算ソフト上の行ごとに制御のイベントを示すデータを受入れる。ここで、上側の行のイベントから下側の行のイベントへ順次に動作させることが順序制御の基準となっている。また、表計算ソフト上の列では、イベントごとに時限制御（待ち条件）及び条件制御（実行条件）が設定可能にされている。例えば、シーケンス入力部２０２は、イベントごとに（表計算ソフト上の行ごとに）、イベント分類、制御対象、動作内容、待ち条件及び実行条件を示すデータを受入れる（図９参照）。
【００１５】
変換部２０４は、設定入力部２００が受入れた設定、及びシーケンス入力部２０２が受入れたデータを、制御装置３０が使用できる形式のデータに変換する。通信部２０６は、制御装置３０との間で通信を行うためのインターフェイスであり、変換部２０４が変換したデータを制御装置３０へ送信する。例えば、通信部２０６は、ケーブル４０を介して制御装置３０との間でＲＳ２３２Ｃなどのシリアル通信を行う。通信部２０６は、Ｂｌｕｅｔｏｏｔｈ（登録商標）などの無線通信や、ＳＤカード（登録商標）等の記憶メディアによって代替えされてもよい。
【００１６】
制御装置３０は、通信部３００、記憶部３０２、シーケンス実行部３０４及び駆動部３０６を有する。通信部３００は、ＰＣ２０との間で通信を行うためのインターフェイスであり、ＰＣ２０が送信したデータを受信する。例えば、通信部３００は、ケーブル４０を介してＰＣ２０との間でＲＳ２３２Ｃなどのシリアル通信を行う。記憶部３０２は、通信部３００が受信したデータ、及びシーケンス実行部３０４が処理に用いるデータなどを記憶する。記憶部３０２は、基板上のＲＡＭ領域や記憶メディアであってもよい。
【００１７】
シーケンス実行部３０４は、記憶部３０２が記憶したデータを読み出し、シーケンス入力部２０２が受入れたデータに基づいて順序論理を解釈（及び補完）し、解釈した順序論理に応じたタイミングで、機構部５０が備える複数の制御対象それぞれの動作を開始又は停止させる処理をそれぞれイベントとして実行する。また、シーケンス実行部３０４は、イベントを実行するときに用いるデータを保持又は記憶部３０２に記憶させるが、データを記憶部３０２に記憶させる制御を記憶制御部３０８に行わせるように構成されてもよい。
【００１８】
駆動部３０６は、シーケンス実行部３０４が動作を開始させたタイミングで、設定入力部２００が受入れた設定入力に応じて、機構部５０が備える複数の制御対象をそれぞれ駆動する。
【００１９】
次に、設定入力部２００についてさらに詳述する。図２は、設定入力部２００が受入れる設定の種類（設定項目）を例示する図である。設定入力部２００が受入れる設定には、例えばタイマ設定２００ａ、ＳＴＭ設定２００ｂ、パルステーブル設定２００ｃ、ＤＣＳＭ設定２００ｄ、センサ設定２００ｅ、及び出力ポート設定２００ｆがある。
【００２０】
タイマ設定２００ａは、タイマ５０８に対する表形式の設定である。ＳＴＭ設定２００ｂ及びパルステーブル設定２００ｃは、ステッピングモータ５００に対する表形式の設定である。ＤＣＳＭ設定２００ｄは、ＤＣサーボモータ５０２に対する表形式の設定である。センサ設定２００ｅは、センサ５０４に対する表形式の設定である。出力ポート設定２００ｆは、入出力ポート５０６に対する表形式の設定である。
【００２１】
図３は、タイマ設定２００ａの詳細設定例を示す図である。設定入力部２００は、シーケンスの実行タイミングやポーリング処理などを行うために必要となるタイマ５０８に対する設定を入力可能にされている。また、設定入力部２００は、シーケンス入力部２０２においてユーザがタイマ５０８を扱いやすくするために、タイマ５０８に対する名称（タイマ名）をユーザが付与して設定できるようにされている。
【００２２】
設定入力部２００において、機構部５０が備えるタイマ５０８の個数や周期は、制御装置３０が扱うことが可能な範囲であればユーザが任意に設定可能である。設定入力部２００が受入れたタイマ名や周期は、制御装置３０によってシーケンス制御に用いられる。
【００２３】
また、設定入力部２００がタイマ名のみや、周期のみの設定を受入れた場合、シーケンス入力部２０２及び制御装置３０は、未使用のタイマとして扱う。つまり、設定入力部２００は、複数の制御対象それぞれに対し、シーケンス入力部２０２が動作を開始させる対象であるか否かを示す設定入力を受入れる。すると、シーケンス入力部２０２は、動作を開始させる対象でないことを示す設定入力がなされた制御対象をリストに表示しない。よって、誤ったタイマの使用が防止される。また、設定入力部２００は、同名のタイマ名が設定された場合には、どちらのタイマを使用するのかをユーザに問い合わせるダイアログ（通知）を行うように構成されてもよい。この場合、同名によるタイマの誤使用を防止させることが可能である。
【００２４】
図４は、ＳＴＭ設定２００ｂの詳細設定例を示す図である。ユーザは、設定入力部２００に対してステッピングモータ５００の設定を入力することにより、シーケンス入力部２０２を介してステッピングモータ５００の励磁ＯＮ、励磁ＯＦＦ、駆動開始（速度指定）、駆動開始（ＰＰＳ指定）、及び停止などの指示を容易に行うことが可能になる。
【００２５】
また、設定入力部２００は、シーケンス入力部２０２においてユーザがステッピングモータ５００を扱いやすくするために、ステッピングモータ５００に対する名称（モータ名）をユーザが設定できるようにされている。
【００２６】
図４に示したＳＴＭ設定２００ｂの詳細設定例内の制御装置と信号内容は、制御装置３０に割り振られているコネクタ番号と、そのコネクタ内のピン毎の信号線を示している。これにより、ユーザは間違えることなく制御装置３０とステッピングモータ５００とを接続させることができる。
【００２７】
また、設定入力部２００は、複数のステッピングモータ５００それぞれに対して使用又は未使用をユーザが設定することができるようにされている。設定入力部２００において未使用と設定されたステッピングモータ５００、又はモータ名が無いステッピングモータ５００は、シーケンス入力部２０２において選択できないようにされ、制御装置３０においても使用できないこととなる。つまり、ステッピングモータ５００の誤使用が防止される。また、設定入力部２００は、機構部５０が備えているステッピングモータ５００の数を制御装置３０から取得し、各ステッピングモータ５００に対する表示を行うように構成されてもよい。
【００２８】
図５は、ＳＴＭ設定２００ｂに対するパルステーブルの詳細設定例を示す図である。設定入力部２００は、各ステッピングモータ５００に対する駆動パルステーブルも設定することができるようにされている。パルステーブルの設定では、ステッピングモータ５００の励磁方式を２相励磁、１−２相励磁、Ｗ１−２相励磁、２Ｗ１−２相励磁から選択して決定することができるようにされている。
【００２９】
また、設定入力部２００は、速度［ｍｍ／ｓ］からＰＰＳ［ｐｕｌｓｅ／ｓ］の変換を行うための変換定数を設定することが可能にされている。従って、ステッピングモータ５００に対して速度指定で駆動指示がなされても、シーケンス制御装置１０は、速度をＰＰＳに変換してステッピングモータ５００を駆動させることができる。
【００３０】
なお、図５（ａ）に示されたパルステーブルＮｏは、パルステーブル毎に設定されている通し番号であり、シーケンス入力部２０２においてステッピングモータ５００を動作させるためにどのテーブルを使用するかをパルステーブルＮｏの指定によって行うことを可能にしている。図５（ｂ）に示したパルステーブルは、ステップ数、時間、ＰＰＳ及び速度の項目が設けられており、少なくともステップ毎のＰＰＳの情報を含んでいる。
【００３１】
また、設定できるパルステーブル数及び各パルステーブルのステップ数は、制御装置３０の許容範囲内であればよく、ユーザが任意に設定可能にされている。なお、制御装置３０の記憶部３０２が記憶するデータ量を削減するために、例えばパルステーブル内に設定されていても、シーケンス入力部２０２によって使用を指示されていないパルステーブルは、例えば変換部２０４が未使用と判断し、制御装置３０へは送信されない。
【００３２】
図６は、ＤＣＳＭ設定２００ｄの詳細設定例を示す図である。ユーザは、設定入力部２００に対してＤＣサーボモータ５０２の設定を入力することにより、シーケンス入力部２０２を介してＤＣサーボモータ５０２の回転開始、速度変更、停止（フリー）、停止（位置ホールド）、停止（ブレーキ）、即断などの指示を容易に行うことが可能になる。
【００３３】
また、設定入力部２００は、シーケンス入力部２０２においてユーザがＤＣサーボモータ５０２を扱いやすくするために、ＤＣサーボモータ５０２に対する名称（モータ名）をユーザが設定できるようにされている。
【００３４】
図６に示したＤＣＳＭ設定２００ｄの詳細設定例内の制御装置と信号内容は、制御装置３０に割り振られているコネクタ番号と、そのコネクタ内のピン毎の信号線を示している。これにより、ユーザは間違えることなく制御装置３０とＤＣサーボモータ５０２とを接続させることができる。
【００３５】
また、設定入力部２００は、複数のＤＣサーボモータ５０２それぞれに対して使用又は未使用をユーザが設定することができるようにされている。設定入力部２００において未使用と設定されたＤＣサーボモータ５０２、又はモータ名が無いＤＣサーボモータ５０２は、シーケンス入力部２０２において選択できないようにされ、制御装置３０においても使用できないこととなる。つまり、ＤＣサーボモータ５０２の誤使用が防止される。
【００３６】
また、設定入力部２００は、シーケンス入力部２０２によってＤＣサーボモータ５０２の動作指示が出されたときに、加速度［ｐｐｓ＾２］が指示されていない場合に使用するデフォルトの加速度をＣＷ回転とＣＣＷ回転それぞれに設定可能にされている。また、設定入力部２００は、シーケンス入力部２０２におけるＤＣサーボモータ５０２の回転指示を速度［ｍｍ／ｓ］指定かＰＰＳ［ｐｕｌｓｅ／ｓ］のいずれかを選択することを可能にする。ここで、設定入力部２００は、速度を指定された場合にＰＰＳへ変換するための変換定数を設定することを可能にされている。この変換定数は、回転方向毎に違う機構を動作させることにも対応させるため、回転方向毎に設定できるようにされている。また、設定入力部２００は、機構部５０が備えているＤＣサーボモータ５０２の数を制御装置３０から取得し、各ＤＣサーボモータ５０２に対する表示を行うように構成されてもよい。
【００３７】
図７は、センサ設定２００ｅの詳細設定例を示す図である。設定入力部２００は、センサ５０４に対する設定を受入れる。そして、ユーザは、シーケンス入力部２０２を介してセンサ５０４のＯＮ／ＯＦＦのイベントトリガや、センサ５０４のＯＮ／ＯＦＦ待ちを入力することが可能になる。
【００３８】
特に、センサ５０４は、チャタリングに起因する誤動作を防止する処理が必要となる場合が多い。そこで、設定入力部２００は、タイマ設定でユーザが指定した周期のタイマの指定と、センサ信号のＨｉｇｈを確定とする読取回数、及びセンサ信号のＬｏｗを確定とする読取回数と、センサ５０４がＯＮの状態の定義（Ｈｉｇｈ信号でＯＮの場合はＨ、Ｌｏｗ信号でＯＮの場合はＬを設定）を行うことが可能にされている。これにより、ユーザは、チャタリングの影響を意識することなく、シーケンス入力部２０２を介して容易にセンサ５０４のＯＮ／ＯＦＦを指示することが可能になっている。
【００３９】
また、設定入力部２００は、シーケンス入力部２０２においてユーザがセンサ５０４を扱いやすくするために、センサ５０４に対する名称（センサ名）をユーザが設定できるようにされている。
【００４０】
図７に示したセンサ設定２００ｅの詳細設定例内の制御装置と信号内容は、制御装置３０に割り振られているコネクタ番号と、そのコネクタ内のピン毎の信号線を示している。これにより、ユーザは間違えることなく制御装置３０とセンサ５０４とを接続させることができる。
【００４１】
また、設定入力部２００は、複数のセンサ５０４それぞれに対して使用又は未使用をユーザが設定することができるようにされている。設定入力部２００において未使用と設定されたセンサ５０４、又はセンサ名が無いセンサ５０４は、シーケンス入力部２０２において選択できないようにされ、制御装置３０においても使用できないこととなる。つまり、センサ５０４の誤使用が防止される。また、設定入力部２００は、機構部５０が備えているセンサ５０４の数を制御装置３０から取得し、各センサ５０４に対する表示を行うように構成されてもよい。
【００４２】
図８は、出力ポート設定２００ｆの詳細設定例を示す図である。機構部５０には、モータなどのほかに、ソレノイドなどの駆動装置や、現在の状態を表示するなどの目的でＬＥＤなどの機器が設けられる場合がある。これらは、入出力ポート５０６から出力されるＯＮ／ＯＦＦ信号で動作する。ユーザは、設定入力部２００に対して入出力ポート５０６の設定を入力することにより、シーケンス入力部２０２を介して入出力ポート５０６に接続された機器（構成）に対する指示を容易に行うことが可能になる。
【００４３】
特に、入出力ポート５０６に接続される機器（ソレノイド、ＬＥＤ）などは、アクティブ方向（ＯＮ）の状態を示す信号がＨｉｇｈの状態の場合（アクティブＨｉｇｈ）と、Ｌｏｗの状態の場合（アクティブＬｏｗ）とがある。設定入力部２００によって入出力ポート５０６に接続された機器ごとにアクティブ方向が設定されると、ユーザは、シーケンス入力部２０２において信号の状態を意識することなく機器の動作を指示することが可能となる。また、シーケンス入力部２０２によって初期状態が指定されると、入出力ポート５０６に接続された機器をシーケンス開始時に同じ状態へ戻すように設定することも可能である。
【００４４】
また、設定入力部２００は、シーケンス入力部２０２においてユーザが入出力ポート５０６を扱いやすくするために、入出力ポート５０６に対する名称（機器の機能名）をユーザが設定できるようにされている。
【００４５】
図８に示した出力ポート設定２００ｆの詳細設定例内の制御装置と信号内容は、制御装置３０に割り振られているコネクタ番号と、そのコネクタ内のピン毎の信号線を示している。これにより、ユーザは間違えることなく制御装置３０と入出力ポート５０６に接続された機器とを接続させることができる。
【００４６】
また、設定入力部２００は、複数の入出力ポート５０６それぞれに対して使用又は未使用をユーザが設定することができるようにされている。設定入力部２００において未使用と設定された入出力ポート５０６、又は機能名が無い入出力ポート５０６は、シーケンス入力部２０２において選択できないようにされ、制御装置３０においても使用できないこととなる。つまり、入出力ポート５０６の誤使用が防止される。また、設定入力部２００は、機構部５０が備えている入出力ポート５０６に接続された機器の数を制御装置３０から取得し、各入出力ポート５０６に対する表示を行うように構成されてもよい。
【００４７】
次に、シーケンス入力部２０２における入力の第１例について説明する。図９は、シーケンス入力部２０２における入力の第１例を示す図である。シーケンス入力部２０２は、表計算ソフトのスプレッドシート（Spreadsheet）６０の行ごとに制御のイベントを示すデータを受入れる。
【００４８】
シーケンス入力部２０２に入力される各イベントは、イベント分類６１、制御対象６２、動作内容６３、待ち条件６４及び実行条件６５がスプレッドシート６０の列に入力されるようになっている。イベント分類６１は、各イベントがどの種類に分類されるかを示す。制御対象６２は、機構部５０が備える制御対象の１つを示す。動作内容６３は、制御対象の具体的動作を示す。待ち条件６４は、時限制御の条件を示す。実行条件６５は、条件制御の条件を示す。
【００４９】
シーケンスは、イベント（行）の組み合わせで表現されている。よって、トリガから順次下の行に向かってイベントが実行されることにより、シーケンス制御が実現される。トリガを含む各イベントは、ユーザが任意に順序を設定可能にされている。
【００５０】
シーケンス入力部２０２は、左側の列から順に入力するようにされている。シーケンス入力部２０２は、表の中の入力マスがクリックされると、入力マス内で選択可能な項目がリスト化されるようになっている。具体的には、シーケンス入力部２０２は、設定入力部２００が受入れた設定入力により付与される名称を用いて、設定可能な項目をリストにして表示する。ユーザが入力マス内で項目を選択すると、選択された項目の入力（設定）が決定される。
【００５１】
具体的には、イベント分類６１において、予め定められたイベントの種類の中から１つのイベントの分類が選択されると、制御対象６２に対する選択による入力が可能になるようにされている。イベント分類６１において選択可能な項目は、シーケンス開始のきっかけとなるトリガとしてのタイマトリガ、センサトリガ、サブモジュールトリガなどと、ステッピングモータ５００の制御、ＤＣサーボモータ５０２の制御、センサ５０４の制御、入出力ポート５０６の制御、タイマ５０８の制御、サブモジュール制御、変数制御などがある。選択可能な項目は、設定に応じて追加されてもよい。
【００５２】
続いて制御対象６２のマスがクリックされると、イベント分類６１で選択された項目に応じて選択可能（設定可能）となる項目がリスト化されて表示される。ユーザがリストによって項目の選択を促されて入力マス内で項目を選択すると、選択された項目の制御対象が決定される。例えば、イベント分類６１でステッピングモータ５００の制御が選択された場合、設定入力部２００のＳＴＭ設定２００ｂの詳細設定例のように設定されたモータ名がリストに表示される。
【００５３】
次に、動作内容６３のマスがクリックされると、イベント分類６１及び制御対象６２の組合せで選択可能な動作の一覧がリストとして表示される。ユーザが入力マス内で項目を選択すると、選択された項目の動作内容が決定される。
【００５４】
なお、設定入力部２００は、モータの駆動速度を直接入力して指定する場合など、一部の設定入力については手入力を促すようにマスに色と表示を行い、ユーザの入力を促すように構成されている。この手入力を促す機能は、手入力が必要な全てのマスに適用される。また、入力が必要ない部分は、グレーアウトされて入力できない状態とされており、ユーザの誤入力が防止されている。
【００５５】
次に、シーケンス入力部２０２は、動作内容６３を行うタイミングとして、待ち条件６４において待ち条件の設定を受入れる。待ち条件は、時間待ちとセンサ変化待ちとが設定可能にされている。また、シーケンス入力部２０２は、イベントを実行する条件を実行条件６５において選択されると、実行条件を設定するデータの入力を受入れる。実行条件を満たさない場合には、そこでシーケンスが停止することとなる。なお、実行条件は複数設定することが可能にされている。
【００５６】
図１０は、シーケンス入力部２０２における実行条件の入力例（定義例）を示す図である。シーケンス入力部２０２の実行条件６５において選択可能に表示される条件は、図１０に示したように別途定義されている。ここでは、同じ条件を複数のイベントで指定することが可能になっている。
【００５７】
実行条件６５において実行条件を作成する場合、例えば比較内容が「センサの比較」や「変数の比較」などから選択されることにより、条件の対象が選択される。次に、比較内容として例えば「〜より大きい：＞＝」などが選択肢中から選択され、比較値が定義されると、シーケンス入力部２０２は、実行条件を生成する。
【００５８】
図１１は、変換部２０４及び通信部２０６の機能を実行させるアプリケーション７０の表示例を示す図である。図１１に示したアプリケーション７０の表示例は、設定入力部２００とシーケンス入力部２０２が受入れたデータを制御装置３０が使用できるデータへ変換する機能と、変換したデータを制御装置３０へ送信する機能を実行させるＵＩ（ユーザインターフェイス）である。
【００５９】
アプリケーション７０は、シーケンス入力部２０２が作成したシーケンスファイルと、設定入力部２００が作成したパラメータファイルを読み込み、シーケンスデータ作成ボタンが押下されると、データ変換を実行する。また、アプリケーション７０上でＰＣ２０上のＣＯＭＰＯＲＴが操作されて通信接続が行われると、データが制御装置３０へ送信される。また、アプリケーション７０は、イベントを指定し、イベント分類６１、制御対象６２、動作内容６３、待ち条件６４及び実行条件６５からなる一連のイベントを後から差し替えることができるようにされてもよい。
【００６０】
次に、シーケンス制御装置１０が有する機能について、さらに詳細に説明する。図１２は、シーケンス制御装置１０が行う制御の種類と、制御それぞれの機能の概要を示す図である。ここで、シーケンス制御装置１０が行う制御は、図９に示した表の構成要素である行（イベント）に相当する。
【００６１】
トリガ（各種）は、一連のシーケンスを始めるきっかけの発生を待つ機能であり、図９に示した形式の表の下行以降に書かれた一連のシーケンスを開始するトリガを指定する機能である。アクチュエータ（各種）操作は、制御対象のアクチュエータに対して行う出力指示であり、例えばステッピングモータ制御、ＤＣＳＭ制御、出力ポート制御などの機械部品の出力を行うためのイベントである。
【００６２】
タイマ操作は、タイマの計時開始、停止、時間のクリア等を行うイベントである。変数操作は、指定した変数に対して、代入、加算、減算を行うイベントである。
【００６３】
数行のイベントをまとめてサブルーチン化したシーケンスを定義することを可能にしている。このサブルーチン化したシーケンスをサブモジュール（又は単にサブルーチン）と呼ぶ。サブモジュールトリガは、サブモジュールの先頭となる特殊なイベントであり、サブモジュールを利用するシーケンスは、このサブモジュールトリガを指定することによって呼び出される。サブモジュールイベントは、サブモジュールトリガを指定して呼び出すイベントである。サブモジュール完了イベント（Ｅ）は、サブモジュールを終えて、本シーケンスに復帰するイベントである。終端イベント（Ｔ）は、何も処理を行わず、そこまで進んだシーケンスを終了させるイベントである。
【００６４】
図１３は、サブモジュール関連のイベントと終端イベントのデータの内容を示す図である。サブモジュールトリガ、サブモジュールイベント、サブモジュール完了イベントは、実行条件を持つことができる。また、サブモジュールイベントは、制御対象として分岐先のサブモジュールトリガを利用者が指定できる。また、サブモジュールイベントは、操作内容にサブモジュールから復帰したときに、処理を続けるイベントを指定できる。サブモジュールイベントは、開始から指定されたサブモジュールへの分岐を実行するまで、利用者が指定した待ちを行うことができる。
【００６５】
図１４は、イベントごとに適用される次行開始タイミングの情報の定義を示す図である。特殊なイベントを除き、イベントは開始されると、準備、待ち、そして実行と状態を進める。それぞれのイベントのフローと状態遷移については後述する。次行（次イベント）は、状態遷移の中の二つの開始タイミングのいずれかに開始できるものと定義される。「同時開始」は、あるイベントが開始されたタイミングで次の行を開始する指定である。「実行内容実施後」は、あるイベントが指定された内容を実行した後に次の行を開始する指定である。「開始しない」は次の行があってもそれを開始しない指定であり、タイミングの選択ではない。
【００６６】
図１５は、トリガの処理を示すフローチャートである。トリガは、指定されたきっかけの待ちを行い常に常駐する。トリガは、きっかけが発生する毎に通知をもらい、指定された実行条件が真であるか否かを判定し（Ｓ１０）、真である場合には次イベントを開始（登録）し（Ｓ１２）、偽である場合には処理を終了する。
【００６７】
次イベントを開始（登録）とは、次の行のイベントを開始することである。登録により、ソフトウェア上「次イベントを開始（登録）」の処理を完全に終えてから登録したイベントを開始することができる。よって、ネストで開始される可能性がある次イベントの開始と終了の順番を期待通りに揃えることができる。
【００６８】
図１６は、トリガの状態遷移を示す図である。トリガは常駐するため、準備状態（Ｓ２０）から準備完了すると、実行待ち状態（Ｓ２２）と実行中（Ｓ２４）の間を行き来する。
【００６９】
図１７は、サブモジュールトリガの処理を示すフローチャートである。サブモジュールトリガは、常駐ではなく、サブモジュールイベントから呼び出された時に生成されて処理を行う。サブモジュールトリガは、その他はトリガと同様に、指定された実行条件が真であるか否かを判定し（Ｓ３０）、真である場合には次イベントを開始（登録）し（Ｓ３２）、偽である場合には処理を終了する。
【００７０】
サブモジュールトリガは、復帰先と復帰先履歴（後述）を渡される。サブモモジュールトリガは、この復帰先履歴に復帰先を追加する。また、サブモモジュールトリガは、次の行のイベントを生成してこの復帰先履歴を通知し、次の行のイベントを開始する。
【００７１】
図１８は、サブモジュールトリガの状態遷移を示す図である。サブモジュールイベントから呼び出されて生成され開始指示を受けると、準備状態（Ｓ４０）から実行中（Ｓ４２）に遷移し、実行条件を判断して真であれば次の行のイベントを開始する。サブモジュールトリガは、常駐ではないので生成と消滅がある。
【００７２】
図１９は、通常のイベントの処理を示すフローチャートである。なお、通常のイベントとは、この実施例では「トリガ」、「サブモジュールトリガ」、「サブモジュールイベント」、「サブモジュール完了イベント」、「終端イベント」以外のイベントであり、図１４に示した「次行開始タイミング」が選択可能にされている。
【００７３】
シーケンス実行部３０４は、図１９に示すように、通常のイベントに対して、同時に次イベント開始の設定があるか否かを判定する（Ｓ５０）。シーケンス実行部３０４は、同時に次イベント開始の設定がある場合には、次イベントを開始（登録）し（Ｓ５１）する。また、シーケンス実行部３０４は、同時に次イベント開始の設定がない場合には、指定された待ちが終了したか否かを判定する（Ｓ５２）。
【００７４】
シーケンス実行部３０４は、指定された待ちが終了すると、指定された実行条件が真であるか否かを判定する（Ｓ５３）。シーケンス実行部３０４は、指定された実行条件が真である場合には指定実行内容を実施し（Ｓ５４）、偽である場合には処理を終了する。
【００７５】
次に、シーケンス実行部３０４は、実行後に次イベント開始の設定があるか否かを判定する（Ｓ５５）。シーケンス実行部３０４は、実行後に次イベント開始の設定がある場合には次イベントを開始（登録）し（Ｓ５６）、実行後に次イベント開始の設定がない場合には処理を終了する。
【００７６】
つまり、あるイベントが「同時開始」に設定されている場合、自身の開始と同時に無条件に次の行のイベントが開始される。あるイベントが「実行内容実施後」に設定されている場合、自身に指定された実行内容を実施した直後に次の行イベントが開始される。このイベントは、次の行の開始前に自身が持つ復帰先履歴を次ぎの行に通知する。
【００７７】
図２０は、通常のイベントの状態遷移を示す図である。通常のイベントは、準備状態（Ｓ６０）から準備完了すると、実行待ち状態（Ｓ６２）に遷移し、待ちが終了すると実行中（Ｓ６４）に遷移する。通常のイベントは、常駐しないので、実行を終えたら終了する。また、通常のイベントは、実行条件が偽となった場合には、何も実行しない。また、通常のイベントは、実行条件が偽となった場合で「実行内容実施後」の設定の場合には、次の行も開始せずに終了して消滅する。
【００７８】
図２１は、サブモジュールイベントの処理を示すフローチャートである。シーケンス実行部３０４は、図２１に示すように、サブモジュールイベントに対して、同時に次イベント開始の設定があるか否かを判定する（Ｓ７０）。シーケンス実行部３０４は、同時に次イベント開始の設定がある場合には、次イベントを開始（登録）し（Ｓ７１）する。また、シーケンス実行部３０４は、同時に次イベント開始の設定がない場合には、指定された待ちが終了したか否かを判定する（Ｓ７２）。
【００７９】
シーケンス実行部３０４は、指定された待ちが終了すると、指定された実行条件が真であるか否かを判定する（Ｓ７３）。シーケンス実行部３０４は、指定された実行条件が真である場合には指定実行内容を実施し（Ｓ７４）、偽である場合には処理を終了する。
【００８０】
次に、シーケンス実行部３０４は、実行後に次イベント開始の設定があるか否かを判定する（Ｓ７５）。シーケンス実行部３０４は、実行後に次イベント開始の設定がある場合には次イベントを開始（登録）し（Ｓ７６）、実行後に次イベント開始の設定がない場合には処理を終了する。
【００８１】
図２２は、サブモジュールイベントの状態遷移を示す図である。サブモジュールイベントは、準備状態（Ｓ８０）から準備完了すると、実行待ち状態（Ｓ８２）に遷移し、待ちが終了すると実行中（Ｓ８４）に遷移する。
【００８２】
サブモジュールイベントは、通常のイベントと処理は同じであるが、指定されている実行内容が、指定されたサブモジュールへの分岐である。サブモジュールを呼び出すときに、該当するサブモジュールトリガを生成するが、その時にそのサブモジュールがサブモジュール完了イベントで復帰するイベントを通知してからサブモジュールトリガを開始する。サブモジュールイベントは、復帰先を通知するのと同時に、自身が持つ復帰先履歴の列もサブモジュールトリガに渡す。復帰先履歴については後述する。
【００８３】
図２３は、サブモジュール完了イベントの処理を示すフローチャートである。サブモジュール完了イベントは、指定された実行条件が真であるか否かを判定し（Ｓ９０）、真である場合には指定実行内容を実施し（Ｓ９２）、偽である場合には処理を終了する。サブモジュール完了の実行内容は、通知されている復帰先のイベントを生成して開始することである。同時に、サブモジュール完了イベントは、持っている復帰先履歴から、復帰を行う復帰先の情報を削除して、復帰先イベントに復帰先履歴を渡す。
【００８４】
図２４は、サブモジュール完了イベントの状態遷移を示す図である。サブモジュール完了イベントは、待ちを行わずに準備完了となって準備状態（Ｓ１００）から実行中（Ｓ１０２）に遷移し、実行条件判断を行って、真ならば復帰を行ってから終了消滅し、偽ならば何もしないで終了消滅する。
【００８５】
図２５は、終端イベントの処理を示す図である。図２５に示すように、終端イベントは何もしない。次の行の開始もしないので、ここに辿りついたシーケンスはこの経路の処理は終了となる。終端イベントも復帰先履歴は渡されるが、不要な情報なので扱わない。
【００８６】
図２６は、終端イベントの状態遷移を示す図である。終端イベントは、開始直後に終了して消滅する。
【００８７】
次に、シーケンス制御装置１０におけるサブモジュールを利用したシーケンスの並行動作について説明する。図２７は、シーケンス入力部２０２における入力の第２例を示す図である。シーケンス入力部２０２は、イベントごとに次のイベントの開始タイミングが当該イベントと同時であるか、当該イベントの実行後であるか、又は次のイベントを開始しないかを示す情報を設定可能にされた形式のデータの入力を受入れる。また、シーケンス入力部２０２は、呼び出されることによって複数のイベントをシーケンス実行部３０４に実行させるサブルーチンを示す情報、及びサブルーチンからの復帰先を示す情報を設定可能にされた形式のデータの入力を受入れる。
【００８８】
シーケンス実行部３０４は、シーケンス入力部２０２が受入れたデータが示す開始タイミングに応じて、次のイベントが示す制御対象に対する処理の実行を開始する。また、シーケンス実行部３０４は、サブルーチンをイベントとして実行する。
【００８９】
具体的には、シーケンス実行部３０４は、図２７に示したシーケンス入力部２０２における入力の第２例に基づいて、「サブモジュールイベント０−７」を「同時開始」することにより、「サブモジュールトリガ１」を開始するのと同時に、「サブモジュールイベント０−８」を開始する（Ａ）。
【００９０】
同時に開始された「サブモジュールイベント０−８」は、「サブモジュールトリガ２」を開始する。この時、「サブモジュールトリガ１」を先頭に持つサブモジュールと、「サブモジュールトリガ２」を先頭に持つサブモジュールは、並行して実行されていることになる（Ａ）。「サブモジュールイベント０−８」は、更に「同時開始」指定であるため、これらの並行処理に加えて、更に「イベント０−９」の処理も開始されて並行動作が行われる。
【００９１】
「サブモジュールイベント０−７」が「サブモジュールトリガ１」を開始すると、「サブモジュールイベント１−６」が実行されたときに（Ｂ）、「サブモジュールトリガ３」が実行されて完了後に復帰する（Ｃ）。「サブモジュールイベント０−７」が完了すると、指定された復帰先に復帰する（Ｄ）。
【００９２】
次に、シーケンス制御装置１０におけるサブモジュールを利用したシーケンスの逐次動作について説明する。図２８は、シーケンス入力部２０２における入力の第３例を示す図である。シーケンス入力部２０２における入力の第３例では、「サブモジュールイベント０−７」が同時開始しない設定にされており、更に次の行のイベントを実行しない設定であると同時に、復帰先イベントに「サブモジュールイベント０−８」が指定されている。これにより、「サブモジュールトリガ１」が開始された時には、まだ「サブモジュールイベント０−８」は開始されていない。「サブモジュールトリガ１」を先頭に持つサブモジュールが「サブモジュール完了イベント１−ｈ」で復帰するとき（Ｄ）に、指定されていた「サブモジュールイベント０−８」が呼び出されることにより、「サブモジュールトリガ１」を先頭にもつサブモジュールと、「サブモジュールイベント０−８」から呼び出される「サブモジュールトリガ２」を先頭に持つサブモジュールが逐次的に処理される。
【００９３】
図２９は、重ねた分岐から元の復帰先に戻る過程を示す図である。Ｂで始まる位置は、「サブモジュールイベント」がある箇所である。Ｓで始まる位置は、「トリガ」又は「サブモジュールトリガ」の位置である。Ｅで始まる位置は、「サブモジュール完了イベント」の位置である。Ｒで始まる位置は、復帰先に指定されたイベントの位置である。Ｔで始まる位置は、「終端イベント」の位置である。
【００９４】
Ｂ１−１で分岐先Ｓ２、復帰先Ｒ１−１を指定されたシーケンスは、Ｂ２−１−１で更にＳ３に分岐するが、Ｔ３でこの経路のシーケンスは終了する。Ｂ２−１−１で並行に開始された経路は、Ｂ２−１−２で更に分岐先Ｓ４、復帰先Ｒ２−２を指定され、Ｓ４からＥ４を経て復帰先Ｒ２−２に戻るが、更にＥ２−２で、一番初めのＢ１−１で指定された復帰先のＲ１−１に戻る。この様に、復帰先は、復帰する都度更に前の復帰先を知ることができる様になっている必要がある。シーケンス実行部３０４は、サブモジュール（サブルーチン）から他のサブモジュールを呼び出す場合、他のサブモジュールに対して自身のサブモジュールへの復帰先を通知する。
【００９５】
図３０は、図２９に示した分岐の処理においてシーケンス実行部３０４が保持すべき復帰先（復帰先履歴）の第１例を示す図である。図３０においては、図２９に示したＢ１−１からＳ２に分岐し、Ｂ２−１−２でＳ４に分岐し、Ｅ４でＲ２−２に復帰し、Ｅ２−２でＲ１−１に復帰する経路の各位置で保持しておくべき復帰先の情報を示している。
【００９６】
復帰先は、スタック（ＬＩＦＯ）の列に格納されて管理される。シーケンス実行部３０４は、分岐が発生する都度新しい復帰先をスタック領域に積み、復帰が起こる都度スタックから復帰先を取り出して、取り出した先の復帰先に復帰する処理を実行する。スタックは、取り出しが起こると、最も新しく格納された情報を破棄する。イベントは、各行単位で次の行を開始することによりシーケンスが継続するが、復帰先のスタックはシーケンスが進んでも継続して保持されねばならない。このため、次の行を開始するイベントは次の行に、自身が持つ復帰先履歴を通知し、次の行は通知された復帰先履歴を自身が消滅するまで保持する必要がある。
【００９７】
また、「サブモジュールトリガ」イベントを開始する場合には、これを開始する「サブモジュールイベント」が自身のもつ復帰先履歴を「サブモジュールトリガ」に通知する他に、「サブモジュール」が復帰する先も通知する。「サブモジュールトリガ」は、この復帰先履歴を自身で保持した上で、更に通知されサブモジュールの復帰先をこの復帰先履歴のスタックの最新情報として格納する。逆に「サブモジュール完了イベント」は、自身が開始時に通知されて保持している復帰先履歴から最新の復帰先を一つ取り出して、その復帰先に復帰すると共に、この一つ復帰先を取り出した後の復帰先履歴を、復帰先のイベントに通知する。
【００９８】
図３１は、図２９に示した分岐の処理においてシーケンス実行部３０４が保持すべき復帰先（復帰先履歴）の第２例を示す図である。図３０においては、図２９に示したＢ１−１からＳ２に分岐して、Ｂ２−１−３からＳ５に分岐して、Ｂ５からＳ８に分岐して、Ｅ８からＲ５に復帰して、Ｅ５からＲ２−３に復帰して、Ｂ２−３からＳ６に分岐して、Ｅ６からＲ２−４に復帰して、Ｅ２−４からＢ１−１に復帰する経路の復帰先履歴が示されている。
【００９９】
次に、シーケンス実行部３０４が復帰先履歴を保持するために確保する記憶領域について説明する。図３２には、シーケンス実行部３０４が保持すべき復帰先（復帰先履歴）の上述した第２例における動作例示範囲が枠で囲まれて示されている。図３３は、図３２に示した動作例示範囲に対してシーケンス実行部３０４が行う記憶領域の制御を模式的に示す図である。
【０１００】
通常のソフトウェアのように、固定サイズのスタックをコンテキストごとに割当てると、任意の数のイベントが並列動作となる場合に、並列動作それぞれの復帰先を保持するために十分な領域をそれぞれ確保しておく必要があり、メモリ効率が悪くなってしまう。
【０１０１】
シーケンス実行部３０４は、保持すべき復帰先が発生するたびに、新しく保持する復帰先の分の記憶領域をヒープ領域から確保し、それをスタック情報（スタック領域）の最後の要素としてリストに加える。要素は、リスト化できるように最後から最初に向かって要素同士が序列情報を持つ。１つのスタックを所有する情報は、リストが空か、リストの最後の要素を記憶する。
【０１０２】
具体的には、シーケンス実行部３０４は、Ｓ１において復帰先の要素なしであった状態から、戻り先（Ｒ１−１）をヒープ領域から確保したスタック領域（スタック用メモリ）に書き込み、リストの最初の要素に繋ぐ（Ｓ２）。
【０１０３】
Ｓ５では、シーケンス実行部３０４は、戻り先（Ｒ２−３）をヒープ領域から確保したスタック領域に書き込み、リストの２番目の要素に繋ぐ。
【０１０４】
Ｓ８では、シーケンス実行部３０４は、戻り先（Ｒ５）をヒープ領域から確保したスタック領域に書き込み、リストの３番目の要素に繋ぐ。
【０１０５】
Ｒ５では、シーケンス実行部３０４は、最後（３番目）の前（２番目）の要素をスタック最後の要素として憶え直し、元の最後（３番目）の要素を外してヒープ領域に記憶領域を返却する。
【０１０６】
このように、シーケンス実行部３０４は、一度復帰が発生すると、リストから最後の要素を取り外し、最後の前にあった要素を最後の要素に記憶し直して、元の最後の要素を記憶していた記憶領域をヒープ領域に返却（解放）する。また、シーケンス実行部３０４は、外した要素でスタックが空になる場合には、スタックを所有する情報として要素なしを保持する。よって、シーケンス実行部３０４は、復帰先履歴を保持する記憶領域を必要な分のみとすることができ、効率化できる。
【０１０７】
図３４は、シーケンス制御装置１０の適用例を示す図である。機構部５０は、例えば少なくとも３軸の回転とアームの開閉を可能にされたロボットアームである。シーケンス制御装置１０は、ＰＣ２０において生成されて変換されたデータがケーブル４０を介して制御装置３０へ送信され、機構部５０が備える制御対象を制御装置３０がシーケンス動作させている。
【符号の説明】
【０１０８】
１０  シーケンス制御装置
２０  ＰＣ
３０  制御装置
５０  機構部
６０  スプレッドシート
７０  アプリケーション
２００  設定入力部
２０２  シーケンス入力部
２０４  変換部
２０６  通信部
３００  通信部
３０２  記憶部
３０４  シーケンス実行部
３０６  駆動部
５００  ステッピングモータ
５０２  ＤＣサーボモータ
５０４  センサ
５０６  入出力ポート
５０８  タイマ
【先行技術文献】
【特許文献】
【０１０９】
【特許文献１】特開２００２−３２３９１２号公報
【図１】
2017084321.tif 000003
【図２】
2017084321.tif 000004
【図３】
2017084321.tif 000005
【図４】
2017084321.tif 000006
【図５】
2017084321.tif 000007
【図６】
2017084321.tif 000008
【図７】
2017084321.tif 000009
【図８】
2017084321.tif 000010
【図９】
2017084321.tif 000011
【図１０】
2017084321.tif 000012
【図１１】
2017084321.tif 000013
【図１２】
2017084321.tif 000014
【図１３】
2017084321.tif 000015
【図１４】
2017084321.tif 000016
【図１５】
2017084321.tif 000017
【図１６】
2017084321.tif 000018
【図１７】
2017084321.tif 000019
【図１８】
2017084321.tif 000020
【図１９】
2017084321.tif 000021
【図２０】
2017084321.tif 000022
【図２１】
2017084321.tif 000023
【図２２】
2017084321.tif 000024
【図２３】
2017084321.tif 000025
【図２４】
2017084321.tif 000026
【図２５】
2017084321.tif 000027
【図２６】
2017084321.tif 000028
【図２７】
2017084321.tif 000029
【図２８】
2017084321.tif 000030
【図２９】
2017084321.tif 000031
【図３０】
2017084321.tif 000032
【図３１】
2017084321.tif 000033
【図３２】
2017084321.tif 000034
【図３３】
2017084321.tif 000035
【図３４】
2017084321.tif 000036