(57)【要約】【課題】  複雑なプログラムも簡易に記述できるプログラム作成装置を得る。【解決手段】  ＰＬＣと外部システムの連携を行うプログラム作成装置１０において、１つ以上のイベントの起動パターンを生成し、起動パターンテーブル１５１に格納する起動パターン定義部１１１と、アクションの内容と引数を含むアクション情報をアクションテーブル１５２に格納するアクション定義部１１２と、起動条件と、その起動条件によって実行するアクション情報と、利用する起動パターンを含むジョブ情報を、ジョブテーブル１６１に格納するジョブ登録部１１３と、起動条件に用いるデータと、その起動条件を含むジョブ情報を含むトリガ情報をトリガテーブル１６２に格納するトリガ生成部１２１と、ある起動条件が成立したら、その起動条件を含むジョブ情報に定義された起動パターンに従って、アクションを実行するジョブ実行部１２２を備える。【選択図】        図１
2006243936.tif 000002
【特許請求の範囲】
【請求項１】
ＰＬＣと外部システムの間のデータ連携を行うプログラム作成装置において、
１つ以上のイベントの起動パターンを生成し、起動パターンテーブルに格納する起動パターン定義部と、
アクションの内容とそのアクションの実行に用いる引数を含むアクション情報を生成し、アクションテーブルに格納するアクション定義部と、
起動条件と、その起動条件が成立したら実行する１つ以上のアクションに関する上記アクション情報と、利用する上記起動パターンと、利用する上記起動パターン内のイベントと実行するアクションの対応付けを含むジョブ情報を生成し、ジョブテーブルに格納するジョブ登録部と、
起動条件に用いられるデータと、そのデータを起動条件として含む上記ジョブ情報を含むトリガ情報を生成し、トリガテーブルに格納するトリガ生成部と、
上記トリガ情報に基づいて、ある起動条件を含む上記ジョブ情報を取得し、当該起動条件が成立した場合には、各々のジョブ情報に含まれる上記起動パターンに従って、アクションを実行するジョブ実行部を備えたことを特徴とするプログラム作成装置。
【請求項２】
起動パターン定義部は、各々のイベントの実行タイミングを定義することを特徴とする請求項１記載のプログラム作成装置。
【請求項３】
起動パターン定義部は、各々のイベントの実行の制限時間を定義することを特徴とする請求項１記載のプログラム作成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）と外部システムの間でデータ連携を行うプログラム作成装置に関するものである。
【背景技術】
【０００２】
ＰＬＣと、データベースシステムやビジネスアプリケーション等の外部システムの間でのデータ交換を行うプログラムの作成装置に関する従来技術は、例えば特許文献１に記載されている。特許文献１に記載の発明では、ＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）システムにおいて、あるイベントが発生したときに、特定の処理を実行するモデルが使用されている。ここではイベント発生に対応する条件をトリガ、イベント発生により実行される処理をアクションと定義している。トリガとそれに関連するアクションはジョブという単位で管理される。トリガ、アクション、およびジョブは予めデータベースに登録されている。トリガ起動部は、登録されているジョブの内容を参照し、あるトリガが成立している場合には関連するアクションを実行する。
【０００３】
【特許文献１】特許第３５８０３４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来の技術では、トリガとアクションの関係はジョブとして１対１で対応付けされているため、同一のトリガで起動されるアクションが複数ある場合、それぞれ別個に定義しなければならず、複雑な処理を実行するプログラムを作成する場合には、プログラム自体も複雑になり、その結果プログラムの品質にばらつきが出るという問題があった。
また、トリガとアクションの対応付けが単純なため、アクションの実行タイミングや実行時間に関する定義が必要な処理、すなわち、順序処理（あるアクションの処理終了を待って次のアクションを実行する処理。）や並列処理のような、ＦＡで多く使われる高度な処理プログラムを作成することが難しいという問題があった。
さらに、プログラム上でアクションの実行時間を考慮していないと、極度に処理時間の長いアクションが定義できてしまうため、機器の暴走、故障などにより処理が長くなってしまった場合に異常検出が行えないという問題があった。
【０００５】
この発明は上記のような課題を解決するためになされたもので、複雑な処理のプログラムも簡易に記述することが可能で、プログラムの品質を向上させることができるプログラム作成装置を得ることを目的とする。
【課題を解決するための手段】
【０００６】
この発明に係るプログラム作成装置は、１つ以上のイベントの起動パターンを生成し、起動パターンテーブルに格納する起動パターン定義部と、アクションの内容とそのアクションの実行に用いる引数を含むアクション情報を生成し、アクションテーブルに格納するアクション定義部と、起動条件と、その起動条件が成立したら実行する１つ以上のアクションに関するアクション情報と、利用する起動パターンと、利用する起動パターン内のイベントと実行するアクションの対応付けを含むジョブ情報を生成し、ジョブテーブルに格納するジョブ登録部と、起動条件に用いられるデータと、そのデータを起動条件として含むジョブ情報を含むトリガ情報を生成し、トリガテーブルに格納するトリガ生成部と、トリガ情報に基づいて、ある起動条件を含むジョブ情報を取得し、当該起動条件が成立した場合には、各々のジョブ情報に含まれる起動パターンに従って、アクションを実行するジョブ実行部を備えたものである。
【発明の効果】
【０００７】
この発明によれば、ジョブ情報に、起動条件、その起動条件が成立したら起動するすべてのアクション、およびそれらのアクションの起動パターンを定義し、ジョブ実行部は、ジョブ情報に定義された起動パターンに従ってそれらのアクションを実行するようにしたので、同一の起動条件を持つ複数のアクションの管理が簡素化、効率化され、複雑な処理のプログラムも簡易に記述することが可能となり、プログラムの品質を向上させることができる。
【発明を実施するための最良の形態】
【０００８】
以下、この発明の実施の様々な形態を説明する。
実施の形態１．
図１は、この発明の実施の形態１によるプログラム作成装置１０の構成を示すブロック図である。プログラム作成装置１０は、ＰＬＣと外部システム２０の間のデータ交換を行うプログラムを作成する。プログラム作成装置１０は、外部システム２０と通信部１４を介して接続されている。外部システム２０は、例えばデータベース管理システムやビジネスアプリケーションなどであり、通信部１４はＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）やソケットなどにより外部システム２０と通信を行う。
【０００９】
図に示すように、プログラム作成装置１０は、エンジニアリングツール部１１、ジョブ実行部１２、ＰＬＣデータアクセス部１３、通信部１４、エンジニアリングデータベース１５、およびランタイムデータベース１６を備えている。
エンジニアリングツール部１１、ジョブ実行部１２、ＰＬＣデータアクセス部１３、および通信部１４は、プログラムに従ってコンピュータのプロセッサが行う動作のモジュールを表しており、これらは実際には一体としてプログラム作成装置１０のプロセッサを構成する。
エンジニアリングツール部１１は、起動パターン定義部１１１、アクション定義部１１２、およびジョブ登録部１１３を備えている。また、ジョブ実行部１２は、トリガ生成部１２１およびジョブ実行部１２２を備えている。
【００１０】
また、エンジニアリングデータベース１５およびランタイムデータベース１６は、プログラム作成装置１０のメモリ、あるいはプログラム作成装置１０と接続された外部の記憶装置等に格納される。エンジニアリングデータベース１５およびランタイムデータベース１６は同一の記憶装置に格納されていてもよい。
エンジニアリングデータベース１５には、起動パターンテーブル１５１およびアクションテーブル１５２が含まれる。また、ランタイムデータベース１６には、ジョブテーブル１６１およびトリガテーブル１６２が含まれている。
【００１１】
起動パターンテーブル１５１には、実行するアクションの個数や起動の順序などの情報を有する起動パターン情報が格納される。
アクションテーブル１５２には、アクションの内容とアクション実行時に用いる引数の情報を有するアクション情報が格納される。
ジョブテーブル１６１には、アクションの起動条件、その起動条件が成立したら起動するすべてのアクション、およびそれらのアクションの起動パターンを有するジョブ情報が格納される。
トリガテーブル１６２には、起動条件に用いられるデータと、そのデータを起動条件として用いるジョブの情報を有するトリガ情報が格納される。
【００１２】
次に、動作について説明する。
まず、起動パターン定義部１１１の動作について説明する。起動パターン定義部１１１は、起動パターン情報を生成し、起動パターンテーブル１５１に格納する。起動パターンテーブル１５１には起動パターン情報を複数格納することができる。
図２は、起動パターン情報の例を示す図である。実施の形態１では、起動パターン情報の記述方法としてＷ３Ｃ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ  Ｃｏｎｓｏｒｔｉｕｍ）により勧告されているＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）を使用する。すなわち、起動パターン情報のデータ構造は、開始タグ“＜×××＞”と終了タグ“＜／×××＞”の入れ子構造によって記述する。
ここでは、起動パターン情報のデータ構造名を「Ｐａｔｔｅｒｎｓ」とする。起動パターン情報は識別子となる属性「ｉｄ」と、実行される複数のイベント「Ｅｖｅｎｔｓ」を有する。Ｅｖｅｎｔｓは識別子となる属性ｉｄを持つ。各々のイベントには、後述するジョブ情報において１つのアクションが当てはめられる。
図２の例では、起動パターンｉｄは「Ｐｅｒｉｏｄｉｃａｌ」である。また、要素Ｉｎｔｅｒｖａｌにより、３つのＥｖｅｎｔｓ（ｉｄ＝１，２，３）が１０００ｍｓｅｃ毎に、合計１０回実行されることを示している。このように、この起動パターンは、定期的にイベント列を発生させるパターンになっている。
【００１３】
図３は、起動パターン定義部１１１の動作のフローチャートである。なお、起動パターン定義部１１１は、入力装置等を介して指定されるデータを用いて以下の処理を行う。
まず、ステップＳＴ２０１で起動パターンｉｄが指定される。
次に、ステップＳＴ２０２で、１つのＥｖｅｎｔｓを生成し、起動パターン情報に追加する。ステップＳＴ２０３ですべてのＥｖｅｎｔｓの生成が終了したと判断されるまでステップＳＴ２０２を繰り返す。次に、ステップＳＴ２０４で、生成した起動パターン情報を起動パターンテーブル１５１に登録する。
【００１４】
次に、アクション定義部１１２の動作について説明する。アクション定義部１１２は、アクション情報を生成し、アクションテーブル１５２に格納する。アクションテーブル１５２にはアクション情報を複数格納することができる。
図４は、アクション情報の例を示す図である。アクション情報も起動パターン情報と同様に、ＸＭＬを用いて記述する。
ここでは、アクション情報のデータ構造名を「Ａｃｔｉｏｎｓ」とする。アクション情報は識別子となる属性「ｉｄ」、アクションの起動引数を示す要素「Ａｒｇｕｍｅｎｔｓ」、処理の内容を示す要素「Ｂｏｄｙ」を有する。Ａｒｇｕｍｅｎｔｓは添え字を示す属性「ｉｎｄｅｘ」と引数の名前を示す属性「ｎａｍｅ」を持つ。Ｂｏｄｙの内容はスクリプト言語などの既存のプログラム言語を使って記述される。
図４の例では、Ａｃｔｉｏｎｓの内容をヨーロッパ電子計算機工業会（ＥＣＭＡ）で規格化されたスクリプト言語（ＥＣＭＡ−２６２、通称Ｊａｖａ（登録商標）Ｓｃｒｉｐｔ）を使って表記している。ここでは引数を２つ定義し、それぞれ引数名を「計上日」、「投入数」としている。
また、Ｂｏｄｙについては、０５行目は「ｓｙｓ０３１」という名前のホストと接続してデータベース「ＴｅｓｔＴａｂｌｅ」にアクセスすることを示し、０６行目は、ａｒｇｕｍｅｎｔｓ［０］で引数の１番目の値を連想配列ｄｂにキー「ｄａｔｅ」として格納することを示し、ａｒｇｕｍｅｎｔｓ［１］で引数２番目の値を連想配列ｄｂにキー「ｖａｌｕｅ」として格納する。さらに、０７行目でｄａｔｅ，ｖａｌｕｅの属性の値を設定し、０８行目でデータベースｄｂに設定した値を挿入（ｉｎｓｅｒｔ）する。
このように、アクション情報は、処理系に応じたプログラム言語を使って記述することができる。
【００１５】
図５は、アクション定義部１１２の動作のフローチャートである。なお、アクション定義部１１２は、入力装置等を介して指定されるデータを用いて以下の処理を行う。
まず、ステップＳＴ５０１で、アクションのＩＤが指定される。
次に、ステップＳＴ５０２で引数の数が指定される。続くステップＳＴ５０３で引数の名称、ステップＳＴ５０４で引数のインデックスが指定され、ステップＳＴ５０５で生成した引数データをＡｃｔｉｏｎｓに追加する。ステップＳＴ５０３〜ステップＳＴ５０５は、ステップＳＴ５０６ですべての引数の生成が終了したと判断されるまで繰り返される。
次に、ステップＳＴ５０７でＡｃｔｉｏｎｓの内容が指定される。次に、ステップＳＴ５０８で、生成したアクション情報をアクションテーブル１５２に登録する。
【００１６】
次に、ジョブ登録部１１３の動作について説明する。ジョブ登録部１１３は、ジョブ情報を生成し、ジョブテーブル１６１に格納する。ジョブテーブル１６１にはジョブ情報を複数格納することができる。
図６は、ジョブ情報の例を示す図である。ジョブ情報もＸＭＬを用いて記述する。
ここでは、ジョブ情報のデータ構造名を「Ｊｏｂｓ」とする。ジョブ情報は識別子となる属性ｉｄ、アクションの起動パターンｉｄ「ｐａｔｔｅｒｎ＿ｉｄ」、ジョブ実行の起動条件「Ｃｏｎｄｉｔｉｏｎ」、起動条件が成立した場合に、起動パターンに従って実行するアクション「Ａｃｔｉｏｎｓ」を有する。Ａｃｔｉｏｎｓは識別子となる属性「ｉｄ」と対応するイベントの識別子「ｅｖｅｎｔ＿ｉｄ」を持つ。
図６の例では、図２に示した起動パターン「Ｐｅｒｉｏｄｉｃａｌ」が指定されており、各々のＡｃｔｉｏｎｓのｅｖｅｎｔ＿ｉｄに指定された値は、起動パターンＰｅｒｉｏｄｉｃａｌ内のＥｖｅｎｔｓのｉｄに対応している。
【００１７】
Ｃｏｎｄｉｔｉｏｎには演算式や関数を使用することができる。
図７は、ジョブの起動条件としてＣｏｎｄｉｔｉｏｎに定義できる条件式の例を示す図である。０１行目は変数ＡＩ００１．ＰＶが１０より大きいことを示す。０２行目はシステムがもつ積算時刻（ｍｓｅｃ）を１００で割った余りが０、つまり１００ｍｓｅｃ毎に真になることを示す。０３行目は論理演算子「＆＆」を使って２つの式の論理積をとったことを示している。
【００１８】
図８は、ジョブ登録部１１３の動作のフローチャートである。なお、ジョブ登録部１１３は、入力装置等を介して指定されるデータを用いて以下の処理を行う。
まず、ステップＳＴ７０１でジョブのＩＤが指定される。
次に、ステップＳＴ７０２で起動パターンＩＤを指定する。ここで指定できる起動パターンのＩＤは、起動パターンテーブル１５１に登録されている起動パターンである。次に、ステップＳＴ７０３で、起動パターンテーブル１５１からステップＳＴ７０２で指定されたＩＤをもつ起動パターン情報を読み出し、その起動パターン情報に定義されているイベントの数を取得する。
次に、ステップＳＴ７０４でアクションＩＤを指定する。ここで指定できるアクションＩＤは、アクションテーブル１５２に登録されているアクションである。ステップＳＴ７０５において、ステップＳＴ７０４の処理回数を判定し、保持しているイベント数分だけ繰り返したらステップＳＴ７０６に進む。ステップＳＴ７０６で起動条件を指定し、ステップＳＴ７０７で生成したジョブ情報をジョブテーブル１６１に登録する。
【００１９】
次に、トリガ生成部１２１の動作について説明する。トリガ生成部１２１は、トリガ情報を生成し、トリガテーブル１６２に格納する。トリガテーブル１６２にはトリガ情報を複数格納することができる。
図９は、トリガ情報の例を示す図である。トリガ情報もＸＭＬを用いて記述する。
ここでは、トリガ情報のデータ構造名を「Ｔｒｉｇｇｅｒｓ」とする。トリガ情報はデータを識別する属性「ｄａｔａ＿ｉｄ」と、ｄａｔａ＿ｉｄで示されるデータを条件式として使用するジョブを記述した「Ｔａｒｇｅｔｓ」を有する。Ｔａｒｇｅｔｓは、ジョブテーブルに登録されたジョブの識別子ｊｏｂ＿ｉｄを持つ。図９の例では、ｊｏｂ＿ｉｄ００１，００２が、ＡＩ００１．ＰＶを起動条件式として使用している。
【００２０】
図１０は、トリガ生成部１２１の動作のフローチャートである。
まず、ステップＳＴ１００１でジョブテーブル１６１から全てのジョブ情報を読み出す。次に、ステップＳＴ１００２で読み込んだジョブ情報のうちの１つに記述された起動条件を抽出する。続くステップＳＴ１００３では、抽出した起動条件に含まれるｄａｔａ＿ｉｄを抽出する。
ステップＳＴ１００４では、取り出したｄａｔａ＿ｉｄを属性としてもつトリガ情報がトリガテーブル１６２内に登録されているか否か判定する。同じｄａｔａ＿ｉｄを持つトリガ情報が存在しなければ、ステップＳＴ１００５で新規にトリガ情報を生成する。ステップＳＴ１００６では、ステップＳＴ１００４で検索して取得したトリガ情報、あるいはステップＳＴ１００５で生成したトリガ情報に、ステップＳＴ１００２で起動条件を抽出したジョブの識別子ｊｏｂ＿ｉｄを追記する。
ステップＳＴ１００７では、ステップＳＴ１００６で更新したトリガ情報をトリガテーブル１６２に登録する。ステップＳＴ１００２〜ステップＳＴ１００７は、ステップＳＴ１００８で、読み込んだすべてのジョブに対する処理が終了したと判断されるまで繰り返される。
【００２１】
次に、ジョブ実行部１２２の動作について説明する。
図１１は、ジョブ実行部１２２の動作のフローチャートである。まず、ステップＳＴ１１０１で、トリガテーブル１６２内のトリガ情報を読み込む。次に、ステップＳＴ１１０２で、読み込んだトリガ情報のうち１つのトリガ情報からｄａｔａ＿ｉｄを抽出し、抽出したｄａｔａ＿ｉｄに該当するデータの最新値を取得する。
ステップＳＴ１１０３では、ステップＳＴ１１０２でｄａｔａ＿ｉｄを抽出したトリガ情報に指定されているｊｏｂ＿ｉｄに対応するジョブ情報をすべて読み込む。次に、ステップＳＴ１１０４で、読み込んだジョブ情報のうちの１つについて、ステップＳＴ１１０２で取得したデータの最新値を用いて条件式を評価する。
【００２２】
条件式の評価の結果、ステップＳＴ１１０５で条件が成立していると判断された場合には、ステップＳＴ１１０６へ進み、アクションを実行する。ステップＳＴ１１０７で、ステップＳＴ１１０３で読み込んだジョブ情報が他にあるか否かを判定し、ある場合にはステップＳＴ１１０４〜ステップＳＴ１１０６を繰り返す。
さらに、ステップＳＴ１１０７で、ステップＳＴ１１０３で読み込んだすべてのジョブ情報に対して処理が終了したと判定されたら、ステップＳＴ１１０８へ進み、ステップＳＴ１１０１で読み込んだすべてのトリガ情報について処理が終了するまで、ステップＳＴ１１０２〜ステップＳＴ１１０７を繰り返す。
【００２３】
ステップＳＴ１１０６のアクション実行について詳細に説明する。
ステップＳＴ１２０１で、ジョブ情報内にあるｐａｔｔｅｒｎ＿ｉｄに対応する起動パターン情報を取得する。ステップＳＴ１２０２で、取得した起動パターン情報に記述された１つのイベント情報に対応するイベントＩＤを取得する。ステップＳＴ１２０３で、取得したイベントＩＤを参照しているアクションＩＤを取得する。ステップＳＴ１２０４で、取得したアクションＩＤに対応するアクション情報をアクションテーブル１５２から読み込み、ステップＳＴ１２０５で、読み込んだアクションを実行する。具体的には、通信部１４を介して外部システム２０とのデータ交換や、ＰＬＣデータアクセス部１３を介してＰＬＣのデータにアクセスを行う。ステップＳＴ１２０６において、ステップＳＴ１２０１で読み込んだ起動パターン情報中に処理すべきイベントがなくなるまでステップＳＴ１２０２〜ステップＳＴ１２０５を繰り返す。
【００２４】
以上のように、実施の形態１によれば、ジョブ情報に、起動条件、その起動条件により実行されるすべてのアクション、およびそれらのアクションの起動パターンを定義し、ジョブ実行部１２２は、ある起動条件が成立したら、その起動条件に対応するジョブ情報に定義された起動パターンに従って、それらのアクションを実行するようにしたので、同一の起動条件を持つ複数のアクションの管理が簡素化、効率化され、複雑な処理のプログラムも簡易に記述することが可能となり、プログラムの品質を向上させることができる。
【００２５】
実施の形態２．
実施の形態２では、起動パターン情報に、実行するアクションの起動方法や起動時刻についての情報を記述する。
図１２および図１５は、アクションの起動方法を指定した起動パターン情報の例である。ここでＥｖｅｎｔの属性ｓｙｎｃは、アクションの起動方法を示しておりｔｒｕｅの場合は同期起動、ｆａｌｓｅの場合は非同期起動であることを示す。
図１２（パターン名ＢｒｏａｄＣａｓｔ）は、３つのイベントを非同期で起動する起動パターンの例を示す図である。また、図１３は、起動パターンとしてＢｒｏａｄＣａｓｔを指定したジョブ情報の例を示す図である。
【００２６】
図１４は、図１２に示す起動パターンを用いた場合のアクションの実行タイミングを示す例である。ａｃｔｉｏｎ＿０１からａｃｔｉｏｎ＿０３は起動されるアクションを示しており、ａｃｔｉｏｎ＿０１はｉｄ＝１のイベントに、ａｃｔｉｏｎ＿０２はｉｄ＝２のイベントに、ａｃｔｉｏｎ＿０３はｉｄ＝３のイベントに対応している。またＡＩ００１．ＰＶ＞１０は起動条件を示しており、データＡＩ００１．ＰＶが１０より大きい場合アクションを実行することを示している。
このように、非同期起動指定のパターンを使うことにより同じ起動条件で複数のアクションを同時に起動することが可能となり、並列処理のプログラムを容易に記述することができる。
【００２７】
図１５は、イベントを同期方式で起動するパターンの例である。ここではパターン名をＳｅｑｕｅｎｃｅとし、３つのイベントが定義されている。また、図１６は、起動パターンとしてＳｅｑｕｅｎｃｅを指定したジョブ情報の例を示す図である。
図１７は、図１５に示す起動パターンを用いた場合のアクションの実行タイミングを示したもので、図に示すように、図１４に示した非同期の場合と異なり、最初に実行したアクションの終了を待って、次のアクションが起動される。
このように、同期起動指定の起動パターンを使うことにより、順序処理のプログラムを容易に記述することができる。
【００２８】
次に、図１８は、アクションの起動時刻を指定した起動パターンの例を示す図である。ここではパターン名をＳｅｑｕｅｎｃｅＷｉｔｈＴｉｍｅｏｕｔとし、３つのイベントを連続して発生させるイベントが定義されている。属性「ｅｌａｐｓｅｄＴｉｍｅ」によって、１番目のイベントは条件が真になってから１００ｍｓｅｃ後、２番目のイベントは２００ｍｓｅｃ後、３番目のイベントは３００ｍｓｅｃ後に実行することが示されている。図１９は、起動パターンとしてＳｅｑｕｅｎｃｅＷｉｔｈＴｉｍｅｏｕｔを指定したジョブ情報の例を示した図である。
図２０は、図１８に示す起動パターンを用いた場合のアクションの実行タイミングを示したもので、図に示すように、起動条件成立後１００ミリ秒後にａｃｔｉｏｎ＿０１が、２００ミリ秒後にａｃｔｉｏｎ＿０２が、３００ミリ秒後にａｃｔｉｏｎ＿０３が起動される。
このように、起動時刻指定の起動パターンを用いることにより、各イベントの起動時刻を指定するプログラムを容易に記述することができる。
【００２９】
以上のように、実施の形態２によれば、起動パターン情報に各イベントの起動タイミングを指定するようにしたので、順序処理や並列処理のプログラムも容易に記述することができる。
【００３０】
実施の形態３．
実施の形態３では、起動パターン情報に、アクション実行の制限時刻（タイムアウト）情報を記述する。
図２１は、タイムアウトを指定した起動パターンの例を示す図である。ここではパターン名をＳｅｑｕｅｃｅＷｉｔｈＴｉｍｅｏｕｔとし、３つのイベントが定義されている。タイムアウトの指定は、Ｅｖｅｎｔｓの属性「ｔｉｍｅｏｕｔ」により指定する。ただしタイムアウトの指定ができるイベントは属性ｓｙｎｃがｔｒｕｅであるイベント、すなわち起動方法が同期方式であるものに限られる。図に示すように、ｉｄ＝１のイベントに１５０ｍｓｅｃのタイムアウトを設定している。
図２２は、図２１に示す起動パターンを指定したジョブ情報の例を示す図である。ａｃｔｉｏｎ＿０１にタイムアウトつきのイベントｉｄ＝１が対応し、ａｃｔｉｏｎ＿０２、ａｃｔｉｏｎ＿０３には非同期のイベントｉｄ＝２、３がそれぞれ対応している。
【００３１】
図２３は、図２１に示す起動パターンを用いた場合のアクションの実行タイミングを示したもので、図に示すように、ａｃｔｉｏｎ＿０１は実際の実行時間が３００ｍｓｅｃであるが、タイムアウト時間で指定された１５０ｍｓｅｃで同期起動がタイムアウトし、これと同時にａｃｔｉｏｎ＿０２、ａｃｔｉｏｎ＿０３が起動されている。
【００３２】
以上のように、実施の形態３によれば、起動パターン情報にタイムアウトを指定するようにしたので、プログラムの実行時間を定量的に見積もることが可能となり、リアルタイム処理が必要なシステムへの適用が可能になる。また、実行時間を定量的に見積もることができるためシステムの異常検出を容易に行うことが可能となり、システムの品質を向上させることができる。
【図面の簡単な説明】
【００３３】
【図１】この発明の実施の形態１による、プログラム作成装置の構成を示すブロック図である。
【図２】この発明の実施の形態１による、起動パターンテーブルに格納される起動パターン情報の例を示す図である。
【図３】この発明の実施の形態１による、起動パターン定義部の動作のフローチャートである。
【図４】この発明の実施の形態１による、アクションテーブルに格納されるアクション情報の例を示す図である。
【図５】この発明の実施の形態１による、アクション定義部の動作のフローチャートである。
【図６】この発明の実施の形態１による、ジョブテーブルに格納されるジョブ情報の例を示す図である。
【図７】この発明の実施の形態１による、ジョブの起動条件として定義できる条件式の例を示す図である。
【図８】この発明の実施の形態１による、ジョブ登録部の動作のフローチャートである。
【図９】この発明の実施の形態１による、トリガテーブルに格納されるトリガ情報の例を示す図である。
【図１０】この発明の実施の形態１による、トリガ生成部の動作のフローチャートである。
【図１１】この発明の実施の形態１による、ジョブ実行部の動作のフローチャートである。
【図１２】この発明の実施の形態２による、起動パターンテーブルに格納される起動パターン情報の例を示す図である。
【図１３】この発明の実施の形態２による、ジョブテーブルに格納されるジョブ情報の例を示す図である。
【図１４】この発明の実施の形態２による、アクションの実行タイミングを示す図である。
【図１５】この発明の実施の形態２の他の例による、起動パターンテーブルに格納される起動パターン情報の例を示す図である。
【図１６】この発明の実施の形態２の他の例による、ジョブテーブルに格納されるジョブ情報の例を示す図である。
【図１７】この発明の実施の形態２の他の例による、アクションの実行タイミングを示す図である。
【図１８】この発明の実施の形態２の他の例による、起動パターンテーブルに格納される起動パターン情報の例を示す図である。
【図１９】この発明の実施の形態２の他の例による、ジョブテーブルに格納されるジョブ情報の例を示す図である。
【図２０】この発明の実施の形態２の他の例による、アクションの実行タイミングを示す図である。
【図２１】この発明の実施の形態３による、起動パターンテーブルに格納される起動パターン情報の例を示す図である。
【図２２】この発明の実施の形態３による、ジョブテーブルに格納されるジョブ情報の例を示す図である。
【図２３】この発明の実施の形態３による、アクションの実行タイミングを示す図である。
【符号の説明】
【００３４】
１０  プログラム作成装置、１１  エンジニアリングツール部、１２  ジョブ実行部、１３  ＰＬＣデータアクセス部、１４  通信部、１５  エンジニアリングデータベース、１６  ランタイムデータベース、２０  外部システム、１１１  起動パターン定義部、１１２  アクション定義部、１１３  ジョブ登録部、１２１  トリガ生成部、１２２  ジョブ実行部、１５１  起動パターンテーブル、１５２  アクションテーブル、１６１  ジョブテーブル、１６２  トリガテーブル。
【図１】
2006243936.tif 000003
【図２】
2006243936.tif 000004
【図３】
2006243936.tif 000005
【図４】
2006243936.tif 000006
【図５】
2006243936.tif 000007
【図６】
2006243936.tif 000008
【図７】
2006243936.tif 000009
【図８】
2006243936.tif 000010
【図９】
2006243936.tif 000011
【図１０】
2006243936.tif 000012
【図１１】
2006243936.tif 000013
【図１２】
2006243936.tif 000014
【図１３】
2006243936.tif 000015
【図１４】
2006243936.tif 000016
【図１５】
2006243936.tif 000017
【図１６】
2006243936.tif 000018
【図１７】
2006243936.tif 000019
【図１８】
2006243936.tif 000020
【図１９】
2006243936.tif 000021
【図２０】
2006243936.tif 000022
【図２１】
2006243936.tif 000023
【図２２】
2006243936.tif 000024
【図２３】
2006243936.tif 000025