(57)【特許請求の範囲】
【請求項１】
ネットワークを介して接続された複数台の制御装置が制御に用いるデータを通信して協調動作するシステムを構成するための１台の制御装置であって、
入力データ及び出力データをリフレッシュする処理と、プログラムを演算実行する実行処理と、前記ネットワークに接続された他の制御装置と通信する周辺処理とを含むサイクリック処理を繰り返し実行する制御手段と、
通常のメッセージの通信パケットについては前記制御手段のサイクリック処理中の周辺処理によって、前記ネットワークに接続された他の制御装置に向けて通信する通信手段と、を有し、
前記制御手段は、他の制御装置にイベントタスクを実行させるべきある事象の発生を検知する検知手段と、前記事象を検出すると、前記サイクリック処理を中止し、前記事象の発生を通知するための事象通信パケットを生成し、サイクリック処理中の周辺処理の順番を待たずにその事象通信パケットを前記通信手段に渡す通知手段と、を備え、
前記通信手段は、前記通知手段からの事象通信パケットを受けると、サイクリック処理中の周辺処理の順番を待たずにその事象通信パケットを前記ネットワークに接続された他の制御装置に向けて通信する
ことを特徴とする制御装置。
【請求項２】
前記事象通信パケットに、少なくとも、通信先の他の制御装置に向けた処理の優先度情報を付加する機能を備えたことを特徴とする請求項１に記載の制御装置。
【請求項３】
ネットワークを介して接続された複数台の制御装置が制御に用いるデータを通信して協調動作するシステムであって、
前記複数の制御装置の少なくとも１台が請求項２に記載の制御装置であり、その制御装置が送信する事象通信パケットはイベントＩＤを含むものであり、
その制御装置から送信される事象通信パケットを、前記ネットワークを介して受信する他の制御装置は、
自己宛ての事象通信パケットの通知の有無を監視する監視手段と、
予めイベントＩＤとタスクＩＤと優先度の対応を記憶したイベントタスク管理テーブルと、
監視手段にて事象通信パケットの受信を検知すると、その事象通信パケットに含まれたイベントＩＤをキーにイベントタスク管理テーブルをアクセスし、タスクＩＤと優先度との情報を取得し、取得したタスクＩＤと優先度とに応じたイベントタスクを実行するイベントタスク実行手段と、を持つ
ことを特徴とするシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、制御装置及びシステムに関するものである。
【０００２】
【発明の背景】
ファクトリオートメーションでは、複数台のプログラマブルコントローラ（ＰＬＣ）等の制御装置をネットワークに接続し、それら複数の制御装置が制御に用いる入出力データを共有しながら協調制御等を実行することがある。その場合、例えばデータリンク方式を用いて入出力データを共有することにより、ある制御装置▲１▼に接続された入力機器の検出信号を、ネットワークを介して他の制御装置▲２▼に与え、その制御装置▲２▼にて共有化した入出力信号としての検出信号に基づいて演算実行処理がなされ、制御装置▲２▼に接続された出力機器を制御することができる。なお、制御装置▲１▼での演算処理結果を制御装置▲２▼に与え、その制御装置▲２▼にて共有化した出力信号としての演算結果にて制御装置▲２▼に接続された出力機器を制御することもできる。
【０００３】
つまり、データリンク方式は、複数の制御装置それぞれにメモリを備え、そのメモリ間で、サイクリックにデータを連鎖させて交換（リンク）することにより、全ての制御装置が共通した内容のメモリテーブルを持つようにし、各制御機器が各自に備わった自分のメモリテーブルを参照することによりデータの共有ができる。従って、制御装置▲２▼も、制御装置▲１▼が管理する入力機器のデータを自己のデータリンクエリアに保持することができ、制御装置▲２▼は、係る入力機器のデータを監視し、出力機器の動作を制御できるのである。
【０００４】
ところで、制御装置は、ラダープログラム言語を用いて作成されるユーザプログラムをサイクリックに実行することにより動作する。より具体的には、「ＩＮリフレッシュ処理→演算実行処理→ＯＵＴリフレッシュ処理→周辺処理」を繰り返し実行することになり、他の制御装置との通信は、周辺処理の際に行うようになる。
【０００５】
その結果、まず、入力機器の検出信号の変化が他の制御装置に伝達されるまでに遅延が発生し、しかもその遅延時間は検出信号の変化の発生時期により最大１サイクル分ばらつく。つまり、「ＩＮリフレッシュ」の直前に検出信号の変化が発生すると、その直後の「ＩＮリフレッシュ」によってデータを取り込むことができるので、そのサイクルの周辺処理の際に他の制御装置に伝達できるため、遅延は１サイクル分となる。しかし、あるサイクルの「演算実行処理中」に検出信号の変化が発生すると、その変化したデータを取り込むのは、次のサイクルの「ＩＮリフレッシュ」となり、係る次のサイクルの周辺処理で上記検出信号の変化を伝達することになり、前者のものに比べてさらに１サイクル分だけ伝達が遅れる。
【０００６】
さらに、係るデータ（メッセージ）を受信した制御装置側でも、サイクリックに処理されるため、受信してからその受信したデータに基づく処理を実施するのに、遅延が発生する。その結果、周辺処理におけるデータ交換方式では、緊急性の高い事象や、複数の制御装置間で同期が必要な処理には適さなかった。
【０００７】
この発明は、ネットワークや制御装置内の処理における遅延を少なくし、緊急性の高い処理や、高い精度の同期処理を可能とし、さらに、係るシステムを構築するためのプログラミングも容易に行える制御装置及びシステムを提供することを目的とする。
【０００８】
【課題を解決するための手段】
この発明によるコントローラは、ネットワークを介して接続された複数台の制御装置が制御に用いるデータを通信して協調動作するシステムを構成するための１台の制御装置である。本制御装置は、入力データ及び出力データをリフレッシュする処理と、プログラムを演算実行する実行処理と、前記ネットワークに接続された他の制御装置と通信する周辺処理とを含むサイクリック処理を繰り返し実行する制御手段と、通常のメッセージの通信パケットについては前記制御手段のサイクリック処理中の周辺処理によって、前記ネットワークに接続された他の制御装置に向けて通信する通信手段と、を有する。そして、前記制御手段は、他の制御装置にイベントタスクを実行させるべきある事象の発生を検知する検知手段と、前記事象を検出すると、前記サイクリック処理を中止し、前記事象の発生を通知するための事象通信パケットを生成し、サイクリック処理中の周辺処理の順番を待たずにその事象通信パケットを前記通信手段に渡す通知手段と、を備え、前記通信手段は、前記通知手段からの事象通信パケットを受けると、サイクリック処理中の周辺処理の順番を待たずにその事象通信パケットを前記ネットワークに接続された他の制御装置に向けて通信するようにした。この発明は、送信側の制御装置の実施の形態により実現されており、実施の形態では、検知手段と通知手段が、１つのイベント発行手段により実現されている。そして、前記事象通信パケットに、少なくとも、通信先の他の制御装置に向けた処理の優先度情報を付加する機能を備えるとよい。もちろん、係る優先度情報は付加しない構成を採っても良い。
【０００９】
また、上記した制御装置から送信される通信パケットを受信し、所定の動作を行う本発明に係る制御装置としては、例えば他の制御装置から送られてくる通信パケットを受信する通信手段と、イベントタスクを記憶する記憶手段と、前記通信手段を介して受信した前記通信パケットが、所定の事象の発生を通知するものの場合に、その事象の発生に対応する前記イベントタスクを実行するイベントタスク実行手段を備えて構成される。この発明は、受信側の制御装置の実施の形態により実現されている。そして、受信した前記通信パケットに、処理の優先度情報が付加されている場合に、その優先度情報に従って前記イベントタスクの実行順を制御する機能を備えるとよい。
【００１０】
この発明によれば、ある事象の発生を検出する制御装置と、その事象発生に基づいて動作するイベントタスクが制御装置が別々に構成され、ネットワークを介して接続されているような場合に、検出した制御装置から他の制御装置に向けて事象の発生を通知するイベント（通信パケット）を送り、係るイベントを受信した制御装置は、対応するタスクを実行するようにしたため、係る他の制御装置側では、サイクリックな演算処理に対して割り込み処理で係るイベントタスクを実行することができるので、事象の発生からイベントタスクの実行までに要する時間を短縮することができる。
【００１１】
なお、検知手段は、実施の形態では、ユーザプログラムを実行中に、そのプログラム中に記述された所定の命令を検知するようにしているが、本発明はこれに限ることはなく制御装置に直接または間接的に接続された外部機器からの入力情報に基づいて事象の発生を検知するようにしても良い。つまり、後者の場合、ネットワークを利用したハードウェア割り込みが可能となる。また、前者の場合、例えば送信側では、ファンクションブロック若しくは高級言語ＡＰＩを実行するだけで、リモートの制御装置のタスクをネットワークを介して起動することができ、簡単なプログラミングによって制御装置間の協調動作を実現できる。
【００１２】
そして、処理の優先度情報を付加することにより、受信側の他の制御装置がタスクを実行する場合に、優先順位を付け、優先度の高いものほど先に実行するようにすることができる。よって、緊急性に応じて適切な処理を実行することができる。
【００１３】
さらに、送信側の制御装置としては、前記通信手段は、１回の事象の発生につき、同一の通信パケットを連続して複数回送信する機能を備えるとよい。このようにすると、一定の時間内で受信側に通信パケットを伝送できる。
【００１４】
さらに、送信側の制御装置としては、前記通信パケットに、ユーザデータを添付する機能を備えるとよい。また、受信側の制御装置としては、受信した前記通信パケットに、ユーザデータが添付されている場合に、そのユーザデータを共有メモリに格納し、起動した前記イベントタスクからそのユーザデータを参照できる機能を備えるとよい。事象の発生の要因となったユーザデータを併せて送信することにより、受信側のイベントタスクも最新の情報に基づいて迅速に実行することができる。
【００１５】
本発明に係るシステムは、ネットワークを介して接続された複数台の制御装置が制御に用いるデータを通信して協調動作するシステムであって、前記複数の制御装置の少なくとも１台が請求項２に記載の制御装置であり、その制御装置が送信する事象通信パケットはイベントＩＤを含むものであり、その制御装置から送信される事象通信パケットを、前記ネットワークを介して受信する他の制御装置は、自己宛ての事象通信パケットの通知の有無を監視する監視手段と、予めイベントＩＤとタスクＩＤと優先度の対応を記憶したイベントタスク管理テーブルと、監視手段にて事象通信パケットの受信を検知すると、その事象通信パケットに含まれたイベントＩＤをキーにイベントタスク管理テーブルをアクセスし、タスクＩＤと優先度との情報を取得し、取得したタスクＩＤと優先度とに応じたイベントタスクを実行するイベントタスク実行手段と、を持つように構成することである。
【００１６】
また、送信側の制御装置からの通信パケットの送信は、ネットワーク機能である高優先度メッセージを利用して行うと、優先して送信されるので、相手にイベントが到達する時間が予測できるので好ましい。
【００１７】
【発明の実施の形態】
図１は、本発明が適用されるネットワークシステムの一例を示す図である。図１に示すように、ＰＬＣ（ＳＬＣ）等の制御装置１０がネットワーク１に接続し、相互にメッセージ，データを送受するネットワークシステムが構築されている。そして、送信側の制御装置▲１▼からネットワーク１を介して受信側の制御装置▲２▼に伝達されるデータに基づき受信側の制御装置▲２▼では所定の演算処理を実行するようにしている。
【００１８】
ここで、本実施の形態では、ネットワークイベント機能を実装し、送信側の制御装置▲１▼で発生した事象に基づくイベント（ネットワークイベント）を他の制御装置▲２▼へ通知し、ユーザが作成した制御プログラム（イベントタスク）を起動，実行するようになっている。さらに、ネットワークの高優先度パケットを活用することにより、事象発生からイベントタスク起動までを約１［ｍｓ］で実行することができる。通常のサイクルタイムは、例えば１０［ｍｓ］程度であるので、非常に迅速に行える。
【００１９】
すなわち、例えば制御装置▲１▼でエラーが生じた場合、そのエラーに連鎖して別の制御装置▲２▼を停止したり、実行プログラムの内容を切り替えたことがある。そのとき、制御装置▲１▼のメモリの所定エリアのエラーフラグを立てて、そのフラグを周辺処理の際に行うデータリンク処理で制御装置▲２▼へ渡そうとすると、サイクリック処理で周辺処理の順番が来るまで送信できず、遅延が生じてしまう。
【００２０】
そこで、早く渡すためには、ネットワークイベントを利用する。つまり、制御装置▲１▼でエラーが生じる（事象発生）と、サイクリック処理を中止して割り込み処理としてネットワークイベントを生成し、制御装置▲２▼へ送信する。こうすることで、サイクリック処理中の周辺処理の順番を待たなくても、すぐに制御装置▲２▼へ制御装置▲１▼でのエラー発生が伝わり、制御装置▲２▼にてエラー連鎖の必要な処理をすることができ、迅速な対処ができる。この時、エラーフラグの情報をユーザデータに含めて送信しても良いし、ユーザデータに含めず、イベントタスクとして「エラー連鎖処理」をイベントＩＤを通じて送信することでもたりる。これはエラー処理に限らず、制御装置▲１▼と制御装置▲２▼との間で同期制御したい場合に、同期をとるためのタイミングフラグを送信する場合等についても同様のことが言える。
【００２１】
なお、このネットワークイベントの送信先は、特定の１台の制御装置でも良いし、全制御装置でもよい。そして、係る処理を実行するための制御装置１０の構成は、以下のようになっている。
【００２２】
制御装置１０は、図２に示すように、制御部１１と通信部１２を備えている。制御部１１は、ラダーシステムを実行し、制御装置本来の制御を行う。通信部１２は、ネットワークに接続され、他の制御装置と通信する機能を持つ。具体的には、ネットワーク接続し、所定の通信プロトコルによりデータの送受（本発明との関係で言えば、ネットワークイベントの送受等）を行う通信コントローラ１２ａと、その通信コントローラ１２ａで通信制御する際のプロトコル変換をする際にデータを一時記憶したり、プロトコル変換したり、送受信先を特定する際の情報（データベース）を記憶保持するＲＡＭ１２ｂを有している。
【００２３】
一方、制御部１１は、接続された機器への制御プログラムや、ネットワーク接続された別の制御装置と協調動作する際の制御プログラムなどを格納したＲＯＭ１１ａと、そのＲＯＭ１１ａに格納されたプログラムを実行するＭＰＵ１１ｂ及びＭＰＵ１１ｂにて各種処理を実行する際に必要なデータ（管理データ）を記憶するＲＡＭ１１ｃを有している。このハードウェア構成自体は基本的に従来と同様である。
【００２４】
ここで本発明では、送信側の制御装置の制御部１１は、図３に示すように、ＲＯＭ１１ａにネットワークイベント発行部２０を備えている。このネットワークイベント発行部２０は、制御装置１０の稼働中はＭＰＵ１１ｂに展開されて実行されるもので、例えば図１中に示したように、ユーザプログラム中に存在するネットワークイベントを発行するＩＥＣ６１１３１−３のファンクションブロック（ＮｅｔＥｖｅｎｔ＿１）を実行するもので、具体的には図４に示すフローチャートを実行する機能を有する。
【００２５】
すなわち、パラメータ（引数）を取得し（ＳＴ１）、通信方法（ユニキャスト／マルチキャスト／ブロードキャスト）を特定する（ＳＴ２）。そして、ネットワークイベントであることを規定するためのコマンド種別，受信側の制御装置１０で実行させるイベントタスクを特定するイベントＩＤ，パケット通信の優先度並びに受信先の制御装置における処理（イベントタスクの実行）の優先度，受信先の制御装置に渡すユーザデータを順次取得し指定する（ＳＴ３からＳＴ６）。
【００２６】
そして、それら指定した各情報に基づいて通信パケットを生成し、高優先度パケット送信処理を実行する（ＳＴ７）。つまり、図５に示すような通信パケットを生成し、通信部１２を介して送信する。すなわち、ステップ５で指定したパケット通信の優先度は、ヘッダ部に格納され、この優先度にしたがって優先度が高いパケットを優先して送信する。この優先送信自体は従来のネットワーク通信におけるものと同様である。さらに、本発明ではステップ５で指定した処理の優先度情報をデータ部に格納するようにしたため、優先度を適宜に設定することにより、受信した制御装置１０側で優先度の高いものを優先して処理するようになる。従って、緊急性の高い事象に基づくイベントタスクを実行させるためには、パケット通信の優先度と処理の優先度を共に高くしておくことによって、より速く相手先に伝達することができるとともに、相手先で優先して処理される。なお、送信先アドレスや送信元アドレスその他のヘッド部情報を付加する処理は、従来と同様であるのでその詳細な説明を省略する。
【００２７】
そして、送信処理が終了すると、送信相手先からのレスポンスを受信するのを待ち、受信したレスポンスに基づき送信結果を設定する（ＳＴ８）。つまり、相手先が正常に受信できたか否かの情報や、その通信時間などを記憶する。また、受信側の制御装置１０が実行したイベントタスクの実行結果を取得する場合もある。
【００２８】
このように送信側の制御装置１０（制御部１１）は、イベントタスクを実行させるべきある事象が発生したのを検知し、それに基づいてその事象に対応するイベントタスク（イベント）を実行する制御装置に対してネットワークイベントを発行する機能を備えている。そして、それ以外の構成は基本的に従来のものと同様であるので、その詳細な説明を省略する。
【００２９】
一方、受信側の制御装置１０の要部である制御部１１のハードウェア構成は、図６に示すようになっており、イベントの伝達経路を考慮したソフトウェア構成は図７に示すようになる。
【００３０】
すなわち、通信部１２の通信コントローラ１２ａを介して取得した自己宛のネットワークイベントの通知の有無を監視するネットワークイベント監視部２１を備え、このネットワークイベント監視部２１にてネットワークイベントの受信を検知すると、イベントタスク起動部２２により、予め用意された所望のイベントタスク実行部２７を起動させて、イベントタスクを実行させる。また、このイベントタスク実行部２７の起動／管理は、制御実行部２３のイベントタスク管理部２５により実行される。さらに、周期タスク実行部２６とその動作（スケジュール）を管理する周期タスク管理部２４を備えている。そして、各処理部の具体的な機能は以下のようになっている。
【００３１】
まず、ネットワークイベント監視部２１は、図８に示すフローチャートを実行するようになっている。すなわち、通信部１２を介して受信した自己宛の通信パケットのデータ部を取得し（ＳＴ１１）、コマンド種別をチェックする（ＳＴ１２，ＳＴ３）。そして、ネットワークイベントでない場合には、ネットワークイベント監視部２１で処理すべきメッセージでなかったので、ステップ１に戻り、次の受信に備える。
【００３２】
また、コマンド種別がネットワークイベントの場合には、送られてきたイベントＩＤ，処理の優先度並びにユーザデータを取得し（ＳＴ４からＳＴ６）、それら取得した情報をイベントタスク起動部２２に渡す。これにより、今回の処理を終了し、ステップ１１に戻り次の受信に備える。
【００３３】
イベントタスク起動部２２は、図９に示すフローチャートを実行するようになっている。すなわち、まず、ネットワークイベント監視部２１から受け取ったイベントＩＤをキーとして、イベントタスク管理テーブルをアクセスし、対応するタスクＩＤを取得する（ＳＴ２１）。すなわち、後述するようにイベントタスク管理部２５により、図１０に示すようなイベントタスク管理テーブルが作成されるので、図から明らかなように、係るテーブルを参照することにより対応付けられたタスクＩＤを簡単に取得できる。なお、イベントタスク管理テーブルは、具体的には図１０に示すようなデータ構造で管理されており、イベントＩＤとタスクＩＤとともに、そのタスクＩＤで規定されるイベントタスク名称と、そのイベントタスクが格納された共有メモリ（図示省略）のアドレスが関連付けられて登録されている。
【００３４】
次いで、ネットワークイベントに付加されて送られてきたユーザデータを該当する共有メモリに登録する（ＳＴ２２）。このユーザデータは、例えばイベントタスクを実行する際に利用されることもあるが、イベントタスクの実行とは関係無いものでも良い。つまり、本実施の形態では、ネットワークイベントを利用して優先的に共有するデータを送信することができる。
【００３５】
そして、データ部に格納された処理の優先度が指定されているか否かを判断し（ＳＴ２３）、優先度が指定されいてる場合にはステップ２１で取得したタスクＩＤに対応するタスクのプライオリティを変更する（ＳＴ２４）。つまり、指定された優先度に変更する。この優先度は、例えば「高い／低い」のように２段階としても良いし、複数段に設定しても良い。
【００３６】
そして、プライオリティの変更後、或いは優先度が指定されていない場合にはプライオリティを変更することなく該当タスクにイベントを通知する（ＳＴ２５）。これにより、対応するイベントタスク実行部２７は、自己宛のイベントが発生したことを知る。
【００３７】
イベントタスク実行部２７は、図１１に示すフローチャートを実行するようになっている。すなわち、まず、各イベントタスク実行部２７は、それぞれ自己のユーザ定義プログラムをロードする（ＳＴ３１）。つまり、各タスクに割り付けられたプログラムをロードする。
【００３８】
次いで、イベントを受信するのを待つ（ＳＴ３２，ＳＴ３３）。そして、イベントタスク起動部２２から送られてきたイベントを受信すると、共有メモリをオープンし（ＳＴ３４）、イベントタスクであるユーザ定義プログラムを実行する（ＳＴ３５）。このとき、必要に応じて、ファンクションブロックの実行により、共有メモリ上のユーザデータを取得し、演算実行する。また、ユーザ実行定義プログラムの実行結果を図示省略する制御部１１内の共有メモリに格納する。そして、ユーザ定義プログラムの実行が終了したならば、共有メモリをクローズし、今回のイベントタスクの実行を完了する（ＳＴ３６）。その後、ステップ３２に戻り、次のイベントの受信を待つ。
【００３９】
一方、イベントタスク管理部２５は、図１２に示すフローチャートを実行する機能を有する。すなわち、まず、図示省略するユーザ定義情報を読み込む（ＳＴ４１）。このユーザ定義情報は、図示省略するが、予めツールを用いて作成し、制御装置１０の記憶部に格納しておく。そして、イベントＩＤとユーザ定義プログラム（ファイル名：共有メモリ名）の対応情報などから構成される。
【００４０】
このユーザ定義情報は、その制御装置１０で実行すべく用意されたタスク（ユーザ定義プログラム）の数だけ存在するので、１番目から順番にステップ４３，４４の処理を実行する。つまり、イベントタスク管理テーブルの先頭からｉ番目に、読み取ったユーザ定義情報に基づいてイベントＩＤと共有メモリ名と共有メモリアドレスを関連付けて格納し（ＳＴ４３）、さらに、イベントＩＤとタスクＩＤの対応を、イベントタスク管理テーブルに格納する（ＳＴ４４）。つまり、ステップ３３で作成したテーブルに追加する。
【００４１】
そして、全てのユーザ定義について実行したならば、ステップ４２の分岐判断は「終わり」になるので、ステップ３５に進み停止命令を受けるのを待機する。そして、停止命令を受ける、全てのイベントタスクを停止し、共有メモリを開放する（ＳＴ４６，ＳＴ４７）。
【００４２】
なお、周期タスク実行部２６は、通常のサイクリックにタスクを実行するものである。また、周期タスク管理部２４は、サイクリックに実行するタスクの管理、つまり、例えば、サイクルタイムを設定したり、実行するタスクの順番などを定義する。なお、係る周期タスク管理部２４と周期タスク実行部２６は従来公知のものであるので、その詳細な説明を省略する。
【００４３】
ところで、送信側の制御装置１０が事象発生に伴う通知を行うに際し、通常は図５に示すような通信パケットを生成し、送信する。次いで、送信先（受信側）からのＡＣＫ待ちをし、受信側からＡＣＫが返送されてくると通信が成功したと判断し、ＡＣＫを受信できない場合には、相手が受信できなかったと判断し、同一データを再度送ることになる。
【００４４】
従って、仮に１回目の送信で通信パケットが送れなかった場合には、上記ＡＣＫ待ちでタイムアウトした後に再度通信パケットを送信するので、係るタイムアウトするまで時間だけさらに遅延してしまう。よって、事象の発生を別の制御装置１０に伝達（ネットワークイベントを通知）するのに遅延を生じてしまうばかりでなく、係る通知をするのに要する時間として短時間を保証できない。
【００４５】
そこで、本実施の形態では、図１３に示すように、ある制御装置がネットワークイベントに対応するを通信パケットを送信するに際し、相手が受信したか否かを問わず、同一内容の通信パケット（ネットワークイベント）を複数回（実施の形態では３個）連続して送信する。そして、これを受けた受信側の制御装置では、受信待機し、最初に正常に受信した通信パケットを取得し、それ以降に受信する通信パケットは廃棄する。これにより、ノイズなどによって通信パケットが破損されるなどの伝送トラブルが発生した場合でも、予測できる時間内に事象の発生を通知することができる。
【００４６】
そして、係る処理を実施するための送信側の通信部１２の通信コントローラ１２ａとしては、図１４，図１５に示すフローチャートを実施する機能を有する。すなわち、まずＳＩＤを生成する（ＳＴ５１）。このＳＩＤ生成処理は、図１５に示すフローチャートに示すように、まず自局のネットワークアドレスＡと、現在時刻Ｔと、送信回数Ｎ（本実施の形態では３）を取得する（ＳＴ６１からＳＴ６３）。そして、取得したＮ，Ａ，Ｔを要素とする番号（ＳＩＤ）を生成し（ＳＴ６４）、Ｎをインクリメント（本実施の形態では４になる）した後、保存する（ＳＴ６５）。
【００４７】
上記のようにして生成され保存されたＳＩＤを通信パケットのヘッダ部（図５参照）に格納する（ＳＴ５２）。そして、送信カウンタとしてＮを設定する（ＳＴ５３）。
【００４８】
次いで、送信先アドレスに向けて通信パケットを送信するとともに、送信カウンタをデクリメントする（ＳＴ５４，ＳＴ５５）。この時点で、送信カウンタは１減算されるので、本実施の形態では、１回目の送信後の送信カウンタは３となる。
【００４９】
そして、送信カウンタの値をチェックし、カウンタ値が０になるまで上記ステップ５４，５５の処理を繰り返し実行する。これにより、本実施の形態では、３回連続して同一の通信パケットを送信することができる。
【００５０】
一方、受信側の制御装置１０の通信部１２の通信コントローラ１２ａは、図１６に示すフローチャートを実施する機能を有する。すなわち、受信待機し（ＳＴ７１）、受信した場合にはヘッダが正常か否かを判断する（ＳＴ７２）。そして、正常な場合には、保存しているＳＩＤと比較し、同じか否かを判断する（ＳＴ７３，ＳＴ７４）。そして、同じでない場合には、初めての受信であるので、受信した通信パケットを受信バッファに格納するとともに、ＳＩＤを保存する（ＳＴ７５，ＳＴ７６）。
【００５１】
一方、ヘッダが壊れている場合には、ステップ７２の分岐判断でＮｏとなるので、受信した通信パケットを廃棄し（ＳＴ７７）、次の受信に備える。また、一旦正常に受信した通信パケットに付されているＳＩＤは、ステップ７６で保存されるので、正常受信したものと同一の通信パケットをその後受信した場合には、ステップ７４の分岐判断でＹｅｓとなるので、ステップ７７に進み、やはり受信したパケットを廃棄する。
【００５２】
【発明の効果】
以上のように、この発明では、ある制御装置から他の制御装置に向けてネットワークを介してイベント（通信パケット）を発行し、それを受信した他の制御装置が対応するイベントタスクを必要に応じて割り込みで実行するので、ネットワークや制御装置内の処理における遅延を少なくし、高い精度の同期処理が可能となる。
【図面の簡単な説明】
【図１】本発明のシステムの一実施の形態を示す図である。
【図２】制御装置の内部構成の一例を示す図である。
【図３】送信側の制御装置の内部構成の一例を示す図である。
【図４】ネットワークイベント発行部の機能を示すフローチャートである。
【図５】生成される通信パケットのデータ構造の一例を示す図である。
【図６】受信側の制御装置の内部構成の一例を示す図である。
【図７】受信側の制御装置のソフトウェア構成の一例を示す図である。
【図８】イベント監視部の機能を示すフローチャートである。
【図９】イベントタスク起動部の機能を示すフローチャートである。
【図１０】イベントタスク管理テーブルのデータ構造の一例を示す図である。
【図１１】イベントタスク実行部の機能を示すフローチャートである。
【図１２】イベントタスク管理部の機能を示すフローチャートである。
【図１３】到達保証をするための機能を説明する図である。
【図１４】到達保証をするための送信側の通信コントローラの機能を示すフローチャートである。
【図１５】到達保証をするための送信側の通信コントローラの機能を示すフローチャートである。
【図１６】到達保証をするための受信側の通信コントローラの機能を示すフローチャートである。
【符号の説明】
１  ネットワーク
１０  制御装置
１１  制御部
１１ａ  ＲＯＭ
１１ｂ  ＭＰＵ
１１ｃ  ＲＡＭ
１２  通信部
１２ａ  通信コントローラ
１２ｂ  ＲＡＭ
２０  ネットワークイベント発行部
２１  ネットワークイベント監視部
２２  イベントタスク起動部
２３  制御実行部
２４  周期タスク管理部
２５  イベントタスク管理部
２６  周期タスク実行部
２７  イベントタスク実行部
【図１】
0004147379.tif 000002
【図２】
0004147379.tif 000003
【図３】
0004147379.tif 000004
【図４】
0004147379.tif 000005
【図５】
0004147379.tif 000006
【図６】
0004147379.tif 000007
【図７】
0004147379.tif 000008
【図８】
0004147379.tif 000009
【図９】
0004147379.tif 000010
【図１０】
0004147379.tif 000011
【図１１】
0004147379.tif 000012
【図１２】
0004147379.tif 000013
【図１３】
0004147379.tif 000014
【図１４】
0004147379.tif 000015
【図１５】
0004147379.tif 000016
【図１６】
0004147379.tif 000017