(57)【特許請求の範囲】
【請求項１】
入出力手段を介して少なくとも１つの制御対象との間で信号の送受を行うとともに、ユーザが作成した複数の周期タスクからなるプログラムを命令実行手段が実行することで上記制御対象を制御する制御装置において、
当該制御装置の状態が遷移する場合として、上記制御対象を監視した結果当該制御対象の状態が遷移した場合、当該制御装置の内部のプログラムを実行した場合、当該制御装置の外部からのコマンドを実行した場合、があり、これらの各場合に当該制御装置の状態が遷移した際に、それぞれの状態に遷移したことを示すシステムイベントを発生するシステムイベント発生手段と、
上記システムイベント発生手段により発生するそれぞれのユーザ選択のシステムイベントと、これらのシステムイベントにそれぞれ対応するユーザ定義のイベントタスクを、ユーザ定義により関連付けるユーザ定義関連付け手段と、
上記システムイベント発生手段によりシステムイベントが発生したとき、上記関連付け手段により該システムイベントと関連付けされたユーザ定義のイベントタスクを実行するユーザ定義イベントタスク実行手段と、
を具備する
ことを特徴とする制御装置。
【請求項２】
請求項１記載の制御装置において、
無停電電源装置を具備し、
上記イベントタスク実行手段は、
上記システムイベント発生手段が
上記無停電電源装置の異常発生時にシステムイベントを発生して上記制御対象の状態が遷移した場合に、当該異常発生内容を表示するとともに、システム状態を示す変数を保存し、ソフトロジックランタイムにその旨を通知するイベントタスクを実行する
ことを特徴とする制御装置。
【請求項３】
請求項１記載の制御装置において、
上記システムイベントに関連付けされたイベントタスクがリスト化されて開発ツールとして格納された各種モジュールをダウンロードするモジュールダウンロード手段を具備する
ことを特徴とする制御装置。
【請求項４】
請求項１記載の制御装置において、
上記命令実行手段が実行する周期タスクに対し、当該制御装置の状態名に対応して周期タスクとプログラムとの組み合わせによる状態定義を行い、その状態定義の結果を中間言語に変換若しくはコンパイルすることで当該制御装置の状態を定義する状態定義手段を具備する
ことを特徴とする制御装置。
【請求項５】
請求項４記載の制御装置において、
上記命令実行手段は、
上記状態定義手段により定義された当該制御装置の状態名に対応した周期タスクのプログラムのみを実行する
ことを特徴とする制御装置。
【請求項６】
入出力手段を介して少なくとも１つの制御対象との間で信号の送受を行うとともに、ユーザが作成した複数の周期タスクからなるプログラムを命令実行手段が実行することで上記制御対象を制御する制御装置の制御方法において、
選択したシステムイベントに対応するイベントタスクの定義、および、システムイベントと対応するイベントタスクとの関連付けの定義を、ユーザが設定しておき、
上記制御対象を監視した結果当該制御対象の状態が遷移し、上記制御装置の内部のプログラムを実行し、または、上記制御装置の外部からのコマンドを実行して、上記制御装置の状態が遷移した際に、それぞれの状態に遷移したことを示すシステムイベントを発生し、
発生したシステムイベントに上記関連付けにより関連付けされたユーザ定義のイベントタスクを実行することにより上記制御装置を制御する
ことを特徴とする制御装置の制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、プログラマブルロジックコントローラ（以下、ＰＬＣという）等の制御装置およびその制御方法に関し、特に、各種アプリケーションに対して容易に適合でき、かつ、その状態遷移時における処理の不整合の防止および新たな処理の追加を容易に行うことができるようにした制御装置およびその制御方法に関する。
【０００２】
【従来の技術】
従来、ＰＬＣ等の制御装置においては、入出力回路（Ｉ／Ｏ）とのデータの送受信といった基本機能、すなわちコア機能についてはアプリケーション依存でないシステムの処理としてユーザが任意に定義可能である。
【０００３】
ところが、制御装置の状態、あるいは状態遷移の処理、異常処理といったアダプテーション機能については、この種のアダプテーション機能がアプリケーション依存である場合が多いにも関わらず、基本的にはメーカ側が定義するように構成されていた。
【０００４】
【発明が解決しようとする課題】
このため、従来の制御装置においては、
１）制御装置の状態遷移時の処理および異常時の処理をユーザが容易にカスタマイズすることができない
２）アプリケーションの状態（モード）に対応して制御装置の状態をユーザ側で定義できないため、ユーザはあらゆるアプリケーションの状態に対する処理を１つのプログラムに定義し、判定文等で実行する処理、実行しない処理を分類する必要があり、この場合、プログラムの独立性が悪くなり、スキャンタイムが長くなる
３）メーカ側においてあらゆるアプリケーションを考慮した機能を定義することは現実的には困難であり、そのためメーカ側によって定義される機能は、様々なユーザの最大公約数的な機能とならざるを得ず、この結果、どのユーザにも満足してもらえない
という事態が生じ、アプリケーションに適合した制御装置を容易に構築することができないという問題があった。
【０００５】
そこで、この発明は、制御装置の状態の定義および状態遷移時の処理、異常時の処理等を容易にカスタマイズすることができ、かつ、処理の不整合の防止および新たな処理の追加を容易に行うことができるようにした制御装置およびその制御方法を提供することを目的とする。
【０００６】
【課題を解決するための手段】
上記目的を達成するため、請求項１記載の発明は、
入出力手段を介して少なくとも１つの制御対象との間で信号の送受を行うとともに、ユーザが作成した複数の周期タスクからなるプログラムを命令実行手段が実行することで上記制御対象を制御する制御装置において、
当該制御装置の状態が遷移する場合として、上記制御対象を監視した結果当該制御対象の状態が遷移した場合、当該制御装置の内部のプログラムを実行した場合、当該制御装置の外部からのコマンドを実行した場合、があり、これらの各場合に当該制御装置の状態が遷移した際に、それぞれの状態に遷移したことを示すシステムイベントを発生するシステムイベント発生手段と、
上記システムイベント発生手段により発生するそれぞれのユーザ選択のシステムイベントと、これらのシステムイベントにそれぞれ対応するユーザ定義のイベントタスクを、ユーザ定義により関連付けるユーザ定義関連付け手段と、
上記システムイベント発生手段によりシステムイベントが発生したとき、上記関連付け手段により該システムイベントと関連付けされたユーザ定義のイベントタスクを実行するユーザ定義イベントタスク実行手段と、
を具備する
ことを特徴とする。
【０００７】
また、請求項２記載の発明は、請求項１記載の発明において、
無停電電源装置を具備し、
上記イベントタスク実行手段は、
上記システムイベント発生手段が
上記無停電電源装置の異常発生時にシステムイベントを発生して上記制御対象の状態が遷移した場合に、当該異常発生内容を表示するとともに、システム状態を示す変数を保存し、ソフトロジックランタイムにその旨を通知するイベントタスクを実行する
ことを特徴とする。
【０００８】
また、請求項３記載の発明は、請求項１記載の発明において、
上記システムイベントに関連付けされたイベントタスクがリスト化されて開発ツールとして格納された各種モジュールをダウンロードするモジュールダウンロード手段を具備する
ことを特徴とする。
【０００９】
また、請求項４記載の発明は、請求項１記載の発明において、
上記命令実行手段が実行する周期タスクに対し、当該制御装置の状態名に対応して周期タスクとプログラムとの組み合わせによる状態定義を行い、その状態定義の結果を中間言語に変換若しくはコンパイルすることで当該制御装置の状態を定義する状態定義手段を具備する
ことを特徴とする。
【００１０】
また、請求項５記載の発明は、請求項４記載の発明において、
上記命令実行手段は、
上記状態定義手段により定義された当該制御装置の状態名に対応した周期タスクのプログラムのみを実行する
ことを特徴とする。
【００１４】
また、請求項６記載の発明は、
入出力手段を介して少なくとも１つの制御対象との間で信号の送受を行うとともに、ユーザが作成した複数の周期タスクからなるプログラムを命令実行手段が実行することで上記制御対象を制御する制御装置の制御方法において、
選択したシステムイベントに対応するイベントタスクの定義、および、システムイベントと対応するイベントタスクとの関連付けの定義を、ユーザが設定しておき、
上記制御対象を監視した結果当該制御対象の状態が遷移し、上記制御装置の内部のプログラムを実行し、または、上記制御装置の外部からのコマンドを実行して、上記制御装置の状態が遷移した際に、それぞれの状態に遷移したことを示すシステムイベントを発生し、
発生したシステムイベントに上記関連付けにより関連付けされたユーザ定義のイベントタスクを実行することにより上記制御装置を制御する
ことを特徴とする。
【００１５】
【発明の実施の形態】
以下、この発明に係る制御装置およびその制御方法の一実施の形態を添付図面を参照して詳細に説明する。
【００１６】
図１は、この発明に係る制御装置の概略構成を示すブロック図である。
【００１７】
図１において、この制御装置は、例えばＰＬＣを構成するもので、制御部１００と、この制御部１００に対して電源を供給する無停電電源装置（ＵＰＳ）２０と、この制御部１００と各種外部機器との間で信号の送受を行う入出力回路（Ｉ／Ｏ）３０を具備して構成される。
【００１８】
ここで、制御部１００は、この制御装置の制御スケジュールを管理するスケジューラ１０１、Ｉ／Ｏ３０のＯＵＴリフレッシュ用に使用されるメモリ１０２、Ｉ／Ｏ３０のＩＮリフレッシュ用に使用されるメモリ１０３、ユーザプログラムをツールからダウンロードするために用いられるメモリ１０４、ＯＵＴリフレッシュを実行するＯＵＴリフレッシュ部１０５、ＩＮリフレッシュを実行するＩＮリフレッシュ部１０６、複数の周期タスクの命令を実行する命令実行部１０７、外部コマンドを実行する外部コマンド実行部１０８、イベントタスクを実行するイベントタスク実行部１０９、ＵＰＳ２０の電源の断を検出処理する電断検出処理部１１０を具備して構成される。
【００１９】
ここで、スケジューラ１０１は、ＯＵＴリフレッシュ部１０５、ＩＮリフレッシュ部１０６、命令実行部１０７、外部コマンド実行部１０８に対して、ＯＵＴリフレッシュ、ＩＮリフレッシュ、命令実行、外部コマンド実行を指示する。そして、上記ＯＵＴリフレッシュ部１０５、ＩＮリフレッシュ部１０６、命令実行部１０７、外部コマンド実行部１０８、すなわちサイクル構成要素は、その処理が完了すると、スケジューラに処理を戻す。
【００２０】
ここで、ＯＵＴリフレッシュとは、ＯＵＴリフレッシュ用に使用されるメモリ１０２の値をＩ／Ｏ３０に出力する処理である。
【００２１】
また、ＩＮリフレッシュとは、Ｉ／Ｏ３０の値をＩＮリフレッシュ用に使用されるメモリ１０３にコピーする処理である。
【００２２】
また、命令実行は、あらかじめツールでユーザが作成したプログラムを解釈し、その命令を実行する処理である。この命令実行は、ユーザプログラムでは、ＩＮリフレッシュでメモリＩＮ１０３に取得された値を演算し、その演算結果をＯＵＴリフレッシュされるメモリ１０２に格納することにより行われる。
【００２３】
また、外部コマンド実行は、この制御装置外のアプリケーションからの命令を受信してその命令を実行する。この制御装置外のアプリケーションから受信する命令としては、「制御装置の状態を変更する」、「データトレースを行う」等がある。
【００２４】
電断検出処理部１１０は、電源が断したことをＵＰＳから受け付けると、そのイベントをスケジューラ１０１に伝える。この場合、スケジューラ１０１は、現在処理中のサイクル構成要素を中断して、イベントタスク実行部１０９を指示し、イベントタスク実行部１０９は、ユーザが定義したイベントタスクを実行する。
【００２５】
図２は、図１に示した制御装置の具体的構成例を示した図である。
【００２６】
図２において、図１に示した制御部１０は、パーソナルコンピュータ１００にインストールされたソフトウエアから構成される。
【００２７】
ここで、パーソナルコンピュータ１００には、ＵＰＳ２０が接続され、さらに、Ｉ／Ｏ（リモートＩ／Ｏ）３０を介してボード、デバイス等の各種機器が接続される。
【００２８】
すなわち、図１に示した制御装置は、ＰＬＣのような独自のハードウエアとしても構成することもできるが、図２に示すように、パーソナルコンピュータ上で動作するソフトウエアエンジンから構成することもできる。
【００２９】
図３は、図１に示した制御装置の基本的処理を示すフローチャートである。
【００３０】
図１に示した制御装置の処理は、スケジューラ１０１により制御される。
【００３１】
図３において、まず、図１に示したＩ／Ｏ３０のＯＵＴリフレッシュが行われる（ステップ２０１）。このＯＵＴリフレッシュは、図１に示したＯＵＴリフレッシュ部１０５により行われる。具体的には、ＯＵＴリフレッシュ部１０５がＯＵＴリフレッシュ用に使用されるメモリ１０２のＯＵＴリフレッシのデータをＩ／Ｏメモリ３０に記憶するようになっている。
【００３２】
次に、図１に示したＩ／Ｏ３０のＩＮリフレッシュが行われる（ステップ２０２）。このＩＮリフレッシュは、図１に示したＩＮリフレッシュ部１０６により行われる。具体的には、Ｉ／Ｏ３０のデータをＩＮリフレッシュ用に使用されるメモリ１０３上に反映させることにより行われる。
【００３３】
次に、命令実行が行われる（ステップ２０３）。この命令実行は、図１に示した命令実行部１０７により行われる。この命令実行は、ユーザが作成した複数の周期タスクからなるプログラムを実行することにより行われる。
【００３４】
次に、外部コマンド実行が行われる。この外部コマンド実行は、図１に示した外部コマンド実行部１０８で行われる。すなわち、この制御装置以外の外部装置、すなわち外部アプリケーションからの命令を受け付けることができ、この外部アプリケーションからの命令、すなわち外部コマンドの一例を示すと「制御装置の状態をＸＸ状態にせよ」等がある。
【００３５】
図４は、図１に示した制御装置の状態遷移を示す状態遷移図である。
【００３６】
図１に示した制御装置の取り得る状態としては以下に示す状態Ｓ１からＳ４がある。
【００３７】
１）状態Ｓ１は「Ｉｎｉｔｉａｌ」状態である。この「Ｉｎｉｔｉａｌ」状態は、変数の初期化等、制御装置の初期化処理を行う状態である。
【００３８】
２）状態Ｓ２は、「Ｒｕｎ」状態である。この「Ｒｕｎ」状態は、サイクル動作を実行する状態である。
【００３９】
３）状態Ｓ３は、「Ｐａｕｓｅ」状態である。この「Ｐａｕｓｅ」状態は、デバック等を実行する状態である。
【００４０】
４）状態Ｓ４は、「Ｓｅｔｔｌｅ」状態である。この「Ｓｅｔｔｌｅ」状態は、変数の値の保存等の制御装置の終了処理を実行する状態である。
【００４１】
図４に示すように、この制御装置は、起動されると、まず、状態Ｓ１、すなわち、「Ｉｎｉｔｉａｌ」状態になり、この状態で、変数の初期化等、制御装置の初期化処理を行う。
【００４２】
次に、状態Ｓ２の「Ｒｕｎ」状態または状態Ｓ３の「Ｐａｕｓｅ」状態に遷移する。そして、状態Ｓ２からは、状態Ｓ１若しくは状態Ｓ３若しくは状態Ｓ４の状態に遷移する。
【００４３】
また、状態Ｓ３からは、状態Ｓ１若しくは状態Ｓ２若しくは状態Ｓ４に遷移する。
【００４４】
また、状態Ｓ４からは状態Ｓ１に遷移するか若しくはこの制御装置の処理を終了する。
【００４５】
上記図４に示す状態Ｓ１からＳ４の間の遷移は、ユーザの指示若しくは制御装置自体の指示で行われる。
【００４６】
ユーザの指示あるいは制御装置自体の指示で、制御装置の状態が遷移した場合、この制御装置は、それぞれの状態に遷移したことを示すシステムイベントを発生する。例えば、状態Ｓ２の「Ｒｕｎ」状態から状態Ｓ３の「Ｐａｕｓｅ」状態に遷移すると、システムイベントとしては「Ｐａｕｓｅ」イベントが発生する。
【００４７】
ユーザは、あらかじめＩＥＣ１１３１（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｅｌｅｃｔｒｏｔｅｃｈｎｉｃａｌ  Ｃｏｍｉｓｓｉｏｎ  １１３１）の言語仕様に基づくタスクの定義とこのタスクにコントロールされるプログラムを定義し、制御装置にダウンロードしておく。
【００４８】
したがって、「Ｐａｕｓｅ」のシステムイベントが発生した場合に実行されるプログラムのユーザカスタマイズが可能になり、また、メーカ側は、同一の構造でデフォルトの機能をユーザに提供可能になる。また、メーカ提供のイベントタスクをユーザ側が編集し、再定義することも可能になる。
【００４９】
図５は、図１に示した制御装置における状態遷移イベントタスクの定義処理を示すフローチャートである。
【００５０】
図５において、まず、状態遷移システムイベントを選択する（ステップ３０１）。そして上記選択された状態遷移システムイベントに対するイベントタスクを定義する（ステップ３０２）。
【００５１】
次に、上記イベントタスクで実行されるプログラム（ＰＯＵ）を定義する（ステップ３０３）。そして、上記プログラムで使用される変数の宣言を行い（ステップ３０４）、ＰＯＵ内の命令を定義する（ステップ３０５）。
【００５２】
次に、ＰＯＵの編集は終了したかを調べ（ステップ３０６）、終了していない場合は（ステップ３０６でＮＯ）、ステップ３０３に戻るが、終了している場合は（ステップ３０６でＹＥＳ）、次に、タスクの編集は終了したかを調べる（ステップ３０７）。ここで、タスクの編集が終了していない場合は（ステップ３０７でＮＯ）、ステップ３０１に戻るが、終了している場合は（ステップ３０７でＹＥＳ）、上記プログラムをランタイムがリードする中間言語に変換して制御装置にダウンロードし（ステップ３０８）、この状態遷移イベントタスクの定義処理を終了する。
【００５３】
図６は、図１に示した制御装置において「Ｐａｕｓｅ」状態遷移時に起動されるイベントタスクの一例を示した図である。
【００５４】
ここでは、「Ｐａｕｓｅ」状態に遷移した場合に制御装置内で使用される変数の値を指定されたメディア、例えば、ハードディスクに保存するシステムコールがプログラムで記述されるていることを示している。なお、システムコールは、この他に制御装置の状態を遷移させるシステムコール等が存在する。
【００５５】
また、制御装置の状態を遷移させるトリガとしては、以下のようなものが存在する。
【００５６】
１）制御装置の状態を遷移させるシステムコールを発行した場合
２）制御装置に対して他のプロセスあるいは装置から状態遷移命令を発行した場合
３）制御装置内の決められた処理が実行された場合、例えば、「Ｉｎｉｔｉａｌ」状態の処理が完了した場合、システムで「Ｒｕｎ」状態に遷移することが定義されている場合
【００５７】
また、図１に示す制御装置において、ＵＰＳ３０の電源断、電源解除、若しくはＩ／Ｏ３０の異常等の異常が発生した場合は、制御装置はシステムイベントを発生する。
【００５８】
ここで、ユーザは、あらかじめ、ＩＥＣ１１３１の言語仕様に基づく、タスクの定義とこのタスクにコントロールされるプログラムを定義して制御装置にダウンロードしておく。
【００５９】
図７は、図１に示した制御装置における異常システムイベントタスクの定義処理を示すフローチャートである。
【００６０】
図７において、まず、システム異常システムイベントを選択する（ステップ３１１）。そして上記選択されたシステム異常システムイベントに対するイベントタスクを定義する（ステップ３１２）。
【００６１】
次に、上記イベントタスクで実行されるプログラム（ＰＯＵ）を定義する（ステップ３１３）。そして、上記プログラムで使用される変数の宣言を行い（ステップ３１４）、ＰＯＵ内の命令を定義する（ステップ３１５）。
【００６２】
次に、ＰＯＵの編集は終了したかを調べ（ステップ３１６）、終了していない場合は（ステップ３１６でＮＯ）、ステップ３１３に戻るが、終了している場合は（ステップ３１６でＹＥＳ）、次に、タスクの編集は終了したかを調べる（ステップ３１７）。ここで、タスクの編集が終了していない場合は（ステップ３１７でＮＯ）、ステップ３１１に戻るが、終了している場合は（ステップ３１７でＹＥＳ）、上記プログラムをランタイムがリードする中間言語に変換して制御装置にダウンロードし（ステップ３０８）、この異常システムイベントタスクの定義処理を終了する。
【００６３】
このような構成により、異常時の処理の定義、カスタマイズが可能になる。
【００６４】
図８は、図１に示した制御装置において電断異常が発生した場合に実行される処理を示した図である。
【００６５】
図８では、
１）電断異常発生
２）制御装置の状態を「Ｐａｕｓｅ」状態に遷移させる
３）「Ｐａｕｓｅ」状態に遷移した時点で、制御装置の変数の値をユーザ指定のメディアに保存する
という一連の処理が示されている。
【００６６】
すなわち、図８に示すように、この制御装置が状態Ｓ２の「Ｒｕｎ」状態において、電源異常が発生すると、まず、電源異常システムイベントが起動され（ステップ▲１▼）。これにより、制御装置の状態は、状態Ｓ３の「Ｐａｕｓｅ」状態に遷移し（ステップ▲２▼）、この状態Ｓ３の「Ｐａｕｓｅ」状態に遷移した際に、状態遷移を示すシステムイベントが発行される（ステップ▲３▼）。
【００６７】
そして、この状態Ｓ３の「Ｐａｕｓｅ」状態に遷移したことを示すシステムイベントによって起動されるイベントタスク上のプログラムで、「制御装置内で使用される変数の値を指定されたメディア（ハードディスク）に保存する処理」が実行される（ステップ▲４▼）。
【００６８】
図９は、図１に示した制御装置において電断異常が発生したときに発生するイベントで起動されるイベントタスクの設定の仕方と、このイベントタスク内のプログラムについて説明する図である。
【００６９】
制御装置において電断異常が発生したときこのまま稼働をし続けると、システムの誤動作を誘発するおそれがあるため、電断異常が発生したときには、電源異常用の処理が実行する必要がある。
【００７０】
そこで、予め、電断異常が発生したときに起動するイベントタスクの設定を、図９に示すようにして行う。
【００７１】
すなわち、図９（ａ）に示すように、表示部（図示せず）に表示されたＲｕｎＴａｓｋをクリックし、図９（ｂ）に示すようなタスクプロパティ画面を表示させる。
【００７２】
表示部にこのタスクプロパテ画面が表示されると、起動するイベントタスクの種別、例えば「Ｐｏｗｅｒ  Ｏｆｆ」を入力することで、電断異常が発生したときに起動するイベントタスクが設定される。
【００７３】
このようにしてイベントタスクが設定されたのち、電断異常が発生した場合には、図９（ｃ）に示すように、まず、表示用ソフト（プログラム）を実行し、次に、データ保存用ソフト（プログラム）を行い、続いて、ソフトロジックランタイムを実行して、イベントタスクを実行を終了する。
【００７４】
ここで、図１に示した制御装置の無停電電源装置に電源断が発生した場合に実行される処理を、図８に示した処理内容を、図１０を参照して更に具体的に説明する。
【００７５】
パーソナルコンピュータからなる制御装置１００を構成する電断検出処理部１１０は、ＵＰＳ２０に電源断が発生したことを検知すると、その旨をスケジューラ１０１に通知する。
【００７６】
すると、スケジューラ１０１は、イベントタスク実行部１０９に、予め設定されているイベントタスクを実行するようにイベントタスク実行部１０９に指示を出す（図１０中の▲１▼参照）。
【００７７】
イベントタスク実行部１０９は、ランタイム（ソフトウェアロジックランタイム）の制御のもと、スケジューラ１０１から指示を受けると、スケジューラ１０１で実行するように指示されたイベントタスクを実行する（図１０中の▲２▼参照）。
【００７８】
すなわち、イベントタスク実行部１０９は、まず始めに、メモリ１０４に記憶されているイベントタスクをなす表示用ソフトを実行し、表示部に，例えば“「ＵＰＳに電源断が発生しました」という内容を表示する（図１０中の▲３▼ー１参照）。
【００７９】
イベントタスク実行部１０９は、表示用ソフトを実行すると、次に、イベントタスクをなすデータ保存用ソフトを実行し、この制御装置の状態を示す変数をハードディスクに保存する（図１０中の▲３▼ー２参照）。
【００８０】
イベントタスク実行部１０９は、前記変数をハードディスクに保存すると、ランタイムにその旨を通知して処理を終了する（図１０中の▲３▼ー３参照）。
【００８１】
上記構成において、システムイベントに関連付けされたイベントタスクという形式で処理をモジュール化することが可能である。すなわち、開発ツールによりモジュールをリスト化、あるいはインターネット、イントラネットによりモジュールを管理し、必要に応じてモジュールを制御装置にオンライン、オフラインでダウンロードすることで柔軟な制御装置を構築することが可能になる。
【００８２】
図１１は、開発ツールによりモジュールをリスト化し、インターネットまたはイントラネットによりモジュールを管理して必要に応じてモジュールを制御装置にオンライン、オフラインでダウンロードすることが可能な柔軟な制御装置のシステム構成を示した図である。
【００８３】
図１１に示すシステムは、メーカサービスマシン１０−１、ユーザマシン１０−２、開発マシン（ユーザ）１０−３、実行環境マシン（制御装置）１０−４が、インターネットまたはイントラネット等のネットワークにより接続されており、開発マシン（ユーザ）１０−３には、開発ツールとして
１）メーカサービスモジュール群
２）ユーザ管理モジュール群
がメーカサービスマシン１０−１若しくはユーザマシン１０−２により格納されており、この開発マシン（ユーザ）１０−３から実行環境マシン（制御装置）１０−４に、必要に応じて、この各種モジュールのダウンロードが可能なように構成されている。
【００８４】
図１２は、図１１に示したシステムの動作を示すフローチャートである。
【００８５】
図１２において、まず、ネットワークを通じて、状態遷移またはシステム異常イベントタスクを獲得する（ステップ３２１）。
【００８６】
次に、この獲得した状態遷移またはシステム異常イベントタスクの変数情報を編集する必要があるかを調べる（ステップ３２２）。ここで、変数情報を編集する必要があると判断されると（ステップ３２２でＹＥＳ）、ダウンロードしたプログラムの変数情報を編集し（ステップ３２３）、上記プログラムをランタイムがリードする中間言語に変換して（ステップ３２４）、制御装置にダウンロードし（ステップ３２５）、この処理を終了する。
【００８７】
なお、ステップ３２２で、変数情報を編集する必要がないと判断された場合は（ステップ３２２でＮＯ）、ステップ３２３の変数の編集を行うことなく、上記プログラムをランタイムがリードする中間言語に変換して（ステップ３２４）、制御装置にダウンロードし（ステップ３２５）、この処理を終了する。
【００８８】
すなわち、ダウンロードしたプログラムの変数名、型を変更しないでそのまま使用できる場合は、変数情報の編集を行うことなく、上記プログラムをランタイムがリードする中間言語に変換する。
【００８９】
ところで、制御装置は、状態Ｓ２の「Ｒｕｎ」状態において、複数のＩＥＣ１１３１における周期タスクを実行する。ここで、ユーザは、あらかじめツールで周期タスクとＰＯＵの組み合わせで状態を定義することが可能である。
【００９０】
図１３は、ユーザにより、あらかじめツールで周期タスクとＰＯＵの組み合わせで状態を定義する処理を示すフローチャートである。
【００９１】
図１３において、まず、周期タスクとＰＯＵの定義を行う（ステップ４０１）。図１３のステップ４０１では、状態Ｓ１で、周期ｎの周期タスク１のＰＯＵ１とＰＯＵ２とを指定し、周期ｍの周期タスク２のＰＯＵ１を指定したことが示されている。
【００９２】
次に、状態の定義を行う（ステップ４０２）。ここでは、状態名、状態１に対応して、「（周期タスク１，ＰＯＵ１），（周期タスク１，ＰＯＵ２），（周期タスク２，ＰＯＵ１），・・・」の状態定義が行われ、状態名、状態２に対応して、「（周期タスク２，ＰＯＵ２），（周期タスク１，ＰＯＵ３），（周期タスク２，ＰＯＵ３），・・・」の状態定義が行われたことが示されている。
【００９３】
次に、上記状態定義の結果を中間言語に変換若しくはコンパイルし（ステップ４０３）、この処理を終了する。
【００９４】
なお、上記処理において、周期タスクだけを指定した場合は、その周期タスクにリンクしている全てのＰＯＵは、同一状態と解釈される。また、ある周期タスク、ＰＯＵに対して複数の状態定義も可能である。
【００９５】
図１４は、図１３に示した定義により実行される状態とＰＯＵとの関係を示した図である。
【００９６】
すなわち、状態１では、図１４の（ａ）に示すように、周期タスク１のＰＯＵ１およびＰＯＵ２、周期タスク２のＰＯＵ１だけが実行される。
【００９７】
また、状態２では、図１４の（ｂ）に示すように、周期タスク１のＰＯＵ３、周期タスク２のＰＯＵ２、ＰＯＵ３だけが実行される。
【００９８】
また、このシステムにおいて、外部のアプリケーションからあるいは制御装置内のプログラムから状態を変更した場合、状態遷移のシステムイベントを発生する。したがって、上記システムイベントにより起動されるイベントタスクを、図５に示したフローチャートのようにして、ユーザが定義することにより状態遷移時の処理を記述することが可能である。
【００９９】
また、制御装置が制御対象がいくつかの状態（モード）を持ち、その状態においてユーザが定義した状態を変更させるトリガは他のアプリケーションからの状態変更指示と、制御装置が直接状態監視を行った制御装置内のプログラムで状態変更を指示する場合がある。
【０１００】
図１５は、制御装置に対する状態変更指示の環境例を示したブロック図である。
【０１０１】
図１５においては、このシステムは、制御装置１００が、Ｉ／Ｏ３０を介して複数の制御対象を含む制御対象群４０を制御するように構成されており、このシステムにおいて、制御対象群４０は、他のアプリケーションを含む状態監視装置５０で監視するように構成されている。
【０１０２】
この構成において、制御装置１００のユーザが定義した状態を変更させるトリガとしては、状態監視装置５０内のアプリケーションからの状態変更指示と、制御装置１００が直接状態監視を行った制御装置１００内のプログラムで状態変更を指示する場合が存在する。
【０１０３】
上述したように、この発明においては、制御装置が持つ状態が遷移した場合、異常が発生した場合、制御装置は、システムイベントを発生させる。そして、このシステムイベントにより起動されるタスクをＩＥＣ１１３１タスクとし、このタスクをメーカ／ユーザが定義可能とする。また、上記タスクでコントロールされるプログラムをメーカ側／ユーザ側が定義、カスタマイズ可能とすることにより、制御装置の状態遷移時、異常時の処理を同一構造でカスタマイズ、定義可能となる。制御装置のサイクル動作で実行される周期タスク、ＰＯＵをユーザが定義する状態としてカテゴライズすることが可能であるように構成されている。
【０１０４】
この発明では、上記のように、アプリケーションに適合した制御装置を構築することを容易にする。つまり、制御装置の状態の定義、また状態遷移時、異常時の処理をユーザにより容易にカスタマイズすることを可能にし、また、メーカが提供する制御装置の状態遷移時、異常の処理実現方法とユーザが定義する処理実現方法を同一構造とすることによる処理の不制御の防止、新たな処理の追加を容易にするように構成したので、
１）制御装置の状態遷移時の処理をユーザ、メーカが定義、カスタマイズ可能であることから柔軟な制御装置を構築することが可能である
２）アプリケーションに応じてユーザが任意に状態を定義することが可能であることにより、処理のモジュール化、スキャンタイムの短縮化が図れる
３）制御装置の状態遷移時、異常時の処理のモジュール化が容易であるだけでなく、上記処理の実現方法がユーザ側、メーカ側とも同一であるため、ユーザ側は保守性、拡張性が向上し、またメーカ側は新たな処理の定義が容易になる。
【０１０５】
【発明の効果】
以上説明したように、本発明によれば、アプリケーションに適合した制御装置を構築することを容易にする。つまり、制御装置の状態の定義、また状態遷移時、異常時の処理をユーザにより容易にカスタマイズすることを可能にし、また、メーカが提供する制御装置の状態遷移時、異常の処理実現方法とユーザが定義する処理実現方法を同一構造とすることによる処理の不制御の防止、新たな処理の追加を容易にするように構成したので、以下に示す効果を奏する。
【０１０６】
１）制御装置の状態遷移時の処理をユーザ、メーカが定義、カスタマイズ可能であることから柔軟な制御装置を構築することが可能である。
２）アプリケーションに応じてユーザが任意に状態を定義することが可能であることにより、処理のモジュール化、スキャンタイムの短縮化が図れる。
３）制御装置の状態遷移時、異常時の処理のモジュール化が容易であるだけでなく、上記処理の実現方法がユーザ側、メーカ側とも同一であるため、ユーザ側は保守性、拡張性が向上し、またメーカ側は新たな処理の定義が容易になる。
【図面の簡単な説明】
【図１】この発明に係る制御装置の概略構成を示すブロック図。
【図２】図１に示した制御装置の具体的構成例を示した図。
【図３】図１に示した制御装置の基本的処理を示すフローチャート。
【図４】図１に示した制御装置の状態遷移を示す状態遷移図。
【図５】図１に示した制御装置における状態遷移イベントタスクの定義処理を示すフローチャート。
【図６】図１に示した制御装置において「Ｐａｕｓｅ」状態遷移時に起動されるイベントタスクの一例を示した図。
【図７】図１に示した制御装置における異常システムイベントタスクの定義処理を示すフローチャート。
【図８】図１に示した制御装置において電断異常が発生した場合に実行される処理を示した図。
【図９】図１に示した制御装置において電断異常が発生したときに発生するイベントで起動されるイベントタスクの設定の仕方と、このイベントタスク内のプログラムについて説明する図。
【図１０】図１に示した制御装置において電断異常が発生した場合に実行される処理を示した図。
【図１１】開発ツールによりモジュールをリスト化し、インターネットまたはイントラネットによりモジュールを管理して必要に応じてモジュールを制御装置にオンライン、オフラインでダウンロードすることが可能な柔軟な制御装置のシステム構成を示した図。
【図１２】図９に示したシステムの動作を示すフローチャート。
【図１３】ユーザにより、あらかじめツールで周期タスクとＰＯＵの組み合わせで状態を定義する処理を示すフローチャート。
【図１４】図１１に示した定義により実行される状態とＰＯＵとの関係を示した図。
【図１５】制御装置に対する状態変更指示の環境例を示したブロック図。
【符号の説明】
２０  無停電電源装置
３０  入出力回路（Ｉ／Ｏ）
１００  制御装置
１０１  スケジューラ
１０２  メモリ（ＯＵＴリフレッシュに使用）
１０３  メモリ（ＩＮリフレッシュに使用）
１０４  メモリ（ユーザ定義プログラム→ツールからダウンロード）
１０５  ＯＵＴリフレッシュ部
１０６  ＩＮリフレッシュ部
１０７  命令実行部（複数の周期タスク）
１０８  外部コマンド実行部
１０９  イベントタスク実行部
１１０  電断検出部
【図１】
0003597396.tif 000002
【図２】
0003597396.tif 000003
【図３】
0003597396.tif 000004
【図４】
0003597396.tif 000005
【図５】
0003597396.tif 000006
【図６】
0003597396.tif 000007
【図７】
0003597396.tif 000008
【図８】
0003597396.tif 000009
【図９】
0003597396.tif 000010
【図１０】
0003597396.tif 000011
【図１１】
0003597396.tif 000012
【図１２】
0003597396.tif 000013
【図１３】
0003597396.tif 000014
【図１４】
0003597396.tif 000015
【図１５】
0003597396.tif 000016