(57)【特許請求の範囲】
【請求項１】
複数のノードを収容する通信媒体に接続された通信コントローラと端末との間に、その間でデータの交換を行う共有メモリが接続されるとともに、上記通信コントローラを介して上記通信媒体からサイクリックに受信した受信データを上記共有メモリにコピーし、該共有メモリにコピーした受信データを上記端末からの読み出し命令に対応して読み出して該端末に引き渡す、サイクリック型通信を用いたデータ交換方法であって、
上記通信コントローラは、上記受信データを上記ノード単位で格納するための受信データバッファを備えるとともに、この受信データバッファに、上記通信媒体からサイクリックに受信した受信データを上記ノード単位で格納し、
上記共有メモリは、上記ノード単位で受信データを格納するための通信データバッファと、上記ノード毎に設けられるとともに上記通信データバッファに上記受信データが上記ノード単位で格納されたか否かを示す受信フラグとを、備えるとともに、その通信データバッファに、上記通信コントローラの受信データバッファに格納した受信データを上記複数のノード毎にコピーし、
上記端末に引き渡す新規受信データが上記共有メモリの通信データバッファに格納され上記受信フラグが受信データの格納を示している場合にのみ、その共有メモリの通信データバッファから該端末に対する受信データの引き渡しを可能にすることを特徴とするデータ交換方法。
【請求項２】
上記共有メモリにコピーされた受信データを読み出して上記端末に引き渡す動作は、
上記端末に設けられたキャッシュメモリを介して行われることを特徴とする請求項１記載のデータ交換方法。
【請求項３】
上記端末は、
ユーザプログラムと通信ドライバとを有するプログラマブルコントローラからなることを特徴とする請求項１記載のデータ交換方法。
【請求項４】
上記端末は、
ユーザプログラムと通信ドライバとを有するプログラマブルコントローラからなり、
上記キャッシュメモリは、
上記通信ドライバに設けられることを特徴とする請求項２記載のデータ交換方法。
【請求項５】
複数のノードを収容する通信媒体に接続された通信コントローラとプログラマブルコントローラとの間に、その間でデータの交換を行う共有メモリが接続されるとともに、上記通信コントローラを介して上記通信媒体からサイクリックに受信した受信データを上記共有メモリにコピーし、該共有メモリにコピーした受信データを上記プログラマブルコントローラからの読み出し命令に対応して読み出して該プログラマブルコントローラに引き渡す、サイクリック型通信を用いたデータ交換装置であって、
上記通信コントローラは、
上記通信媒体からサイクリックに受信した受信データを上記ノード単位で格納する受信データバッファを備え、
上記共有メモリは、
上記交換するデータを上記ノード単位で格納する通信データバッファと、
上記通信データバッファに格納された上記交換するデータの排他処理を上記ノード単位で管理する管理手段と、を具備し、
上記管理手段は、
上記ノード毎に設けられるとともに上記交換するデータが上記ノード単位で上記通信データバッファに格納されたか否かを示す受信フラグを具備する
ことを特徴とするデータ交換装置。
【請求項６】
上記プログラマブルコントローラは、
ユーザプログラムを格納するユーザプログラム部と、
上記共有メモリとの間で通信を行う通信ドライバと、
を具備することを特徴とする請求項５記載のデータ交換装置。
【請求項７】
上記通信ドライバは、
上記共有メモリにコピーされた受信データを一旦読み出して格納するキャッシュメモリ、
を具備することを特徴とする請求項６記載のデータ交換装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、サイクリック型通信（データリンク）を用いたデータ交換方法および装置に関する。
【０００２】
【従来の技術】
従来、サイクリック型通信（データリンク）を用いてデータ交換を行う通信システムとしては図１０に示す構成が知られている。この図１０に示す通信システムは、通信媒体４０、通信コントローラ３０、共有メモリ２０を介してプログラマブルコントローラ１０のユーザプログラム１１に対する通信データの読み出し／書き込みを行うもので、共有メモリ２０には、通信データバッファ２１、排他フラグ２２、完了フラグ２３が設けられ、通信コントローラ３０には複数の受信データバッファ３１および送信データバッファ３２が設けられている。
【０００３】
図１０において、通信コントローラ３０は、図１１のタイムチャートに示すように、プログラマブルコントローラ１０のユーザプログラム１１からの命令にかかわらず、通信媒体４０から定期的に他局の通信データを受信し（Ｒ- Ａ）、この受信した通信データを受信データバッファ３１に格納し、また、送信データバッファ３２に格納されている送信データを自局の送信タイミングに合わせて通信媒体４０に送信する（Ｗ- Ｂ）。
【０００４】
また、通信コントローラ３０は、プログラマブルコントローラ１０からの命令がない限り、受信データバッファ３１に格納された受信データを共有メモリ２０の通信データバッファ２１にコピーし（Ｒ- Ｂ）、また、共有メモリ２０の通信データバッファ２１に格納されている送信データを送信データバッファ３２にコピーする（Ｗ- Ａ）。
【０００５】
プログラマブルコントローラ１０の通信ドライバ１２は、ユーザプログラム１１から読み出し命令が発行されると（Ｒ−１）、上記手順で共有メモリ２０の通信データバッファ２１にコピーされた受信データを通信データバッファ２１から読み出し（Ｒ- ２）、これをユーザプログラム１１に引き渡す（Ｒ−３）。
【０００６】
ところで、共有メモリ２０の通信データバッファ２１から受信データを読み出し、これをプログラマブルコントローラ１０のユーザプログラム１１に引き渡している途中で、通信コントローラ３０の受信データバッファ３１に格納された受信データの共有メモリ２０の通信データバッファ２１に対するコピーが発生すると、プログラマブルコントローラ１０のユーザプログラム１１に引き渡される受信データが途中から新たな受信データに変化してしまい、この結果データの一貫性が破壊され、データの信頼性が失われる。
【０００７】
そこで、図１０に示した通信システムにおいてはプログラマブルコントローラ１０と通信コントローラ３０の間に設けられた共有メモリ２０に、排他フラグ２２および完了フラグ２３を設け、上記共有メモリ２０の通信データバッファ２１からプログラマブルコントローラ１０のユーザプログラム１１への受信データの引き渡し処理と、通信コントローラ３０の受信データバッファ３１から共有メモリ２０の通信データバッファ２１への受信データのコピー処理の排他制御を行うように構成されている。
【０００８】
図１２および図１３は上記排他制御をフローチャートで示したもので、図１２は、プログラマブルコントローラ１０の通信ドライバ１２の通信処理を示し、図１３は、通信コントローラ３０の通信処理を示す。
【０００９】
すなわち、図１２において、プログラマブルコントローラ１０の通信ドライバ１２は、まず、共有メモリ２０の排他フラグ２２をＯＮにし（ステップ１０１）、次に、共有メモリ２０の完了フラグ２３がＯＮであるか否かを調べる（ステップ１０２）。
【００１０】
ここで、共有メモリ２０の完了フラグ２３がＯＮでない場合は（ステップ１０２でＮＯ）、ステップ１０２に戻り、完了フラグ２３がＯＮになるまで待ち、共有メモリ２０の完了フラグ２３がＯＮであると（ステップ１０２でＹＥＳ）、共有メモリ２０の通信データバッファ２１からプログラマブルコントローラ１０のユーザプログラム１１への受信データの引き渡し処理を実行する（ステップ１０３）。
【００１１】
そして、この共有メモリ２０の通信データバッファ２１からプログラマブルコントローラ１０のユーザプログラム１１への受信データの引き渡し処理が終了すると、共有メモリ２０の排他フラグ２２をＯＦＦにし（ステップ１０４）、完了フラグ２３をＯＦＦにして（ステップ１０５）、この処理を終了する。
【００１２】
また、図１３において、通信コントローラ３０は、まず、共有メモリ２０の排他フラグ２２がＯＮであるか否かを調べ（ステップ２０１）、ここで、共有メモリ２０の排他フラグ２２がＯＮでないと（ステップ２０１でＮＯ）、通信コントローラ３０の受信データバッファ３１から共有メモリ２０の通信データバッファ２１への受信データのコピー処理を実行し（ステップ２０２）、続いて、共有メモリ２０の通信データバッファ２１から通信コントローラ３０の送信データバッファ３２への送信データのコピー処理を実行し（ステップ２０３）、ステップ２０１に戻る。
【００１３】
また、ステップ２０１で、共有メモリ２０の排他フラグ２２がＯＮであると判断されると（ステップ２０１でＹＥＳ）、次に、共有メモリ２０の完了フラグ２３がＯＦＦであるか否かを調べる（ステップ２０４）。
【００１４】
ここで、共有メモリ２０の完了フラグ２３がＯＦＦでないと（ステップ２０４でＮＯ）、ステップ２０１に戻るが、共有メモリ２０の完了フラグ２３がＯＦＦであると（ステップ２０４でＹＥＳ）、次に、前回の排他処理からの間隔が１通信サイクル時間以上かを調べる（ステップ２０５）。
【００１５】
ここで、前回の排他処理からの間隔が１通信サイクル時間以上でないと（ステップ２０５でＮＯ）、ステップ２０２に進み、通信コントローラ３０の受信データバッファ３１から共有メモリ２０の通信データバッファ２１への受信データのコピー処理を実行し、続いて、共有メモリ２０の通信データバッファ２１から通信コントローラ３０の送信データバッファ３２への送信データのコピー処理を実行し（ステップ２０３）、ステップ２０１に戻る。
【００１６】
また、ステップ２０５で、前回の排他処理からの間隔が１通信サイクル時間以上であると判断されると（ステップ２０５でＹＥＳ）、共有メモリ２０の完了フラグ２３をＯＮにし（ステップ２０６）、ステップ２０１に戻る。
【００１７】
すなわち、通信コントローラ３０側には、プログラマブルコントローラ１０の通信ドライバ１２側の排他処理に対して、前回の排他処理からの時間間隔を１通信サイクル以上あけるように制限を設けている。これは、プログラマブルコントローラ１０の通信ドライバ１２側からの排他処理が頻繁に行われると、通信コントローラ３０側が共有メモリ２０の通信データバッファ２１を操作する時間がなくなるので、これを防ぐためである。
【００１８】
【発明が解決しようとする課題】
しかしながら、上記従来のサイクリック型通信（データリンク）を用いてデータ交換を行う通信システムにおいては、
１）排他制御が通信サイクルタイムに影響するため、ユーザプログラムが１通信サイクル時間分の停止を受ける
２）このため、信頼のおける通信データの読み出し／書き込みを連続して行うユーザプログラムの性能を通信サイクルタイムよりも高速にすることはできない３）通信サイクル時間は、通信媒体に伝送されるデータ量の増大や、伝送速度の低速使用に対して比例して遅くなる特性があるので、通信媒体の使用条件によりユーザプログラムの性能が大きく変動する
という問題があった。
【００１９】
そこで、この発明は、信頼のおける通信データの読み出し／書き込みを連続して行うユーザプログラムの性能に対する通信サイクルタイム時間の影響をなくすとともに、通信媒体の使用条件によるユーザプログラムの性能変動をなくしたデータ交換方法および装置を提供することを目的とする。
【００２０】
【課題を解決するための手段】
上記目的を達成するために、請求項１の発明は、複数のノードを収容する通信媒体に接続された通信コントローラと端末との間に、その間でデータの交換を行う共有メモリが接続されるとともに、上記通信コントローラを介して上記通信媒体からサイクリックに受信した受信データを上記共有メモリにコピーし、該共有メモリにコピーした受信データを上記端末からの読み出し命令に対応して読み出して該端末に引き渡す、サイクリック型通信を用いたデータ交換方法であって、上記通信コントローラは、上記受信データを上記ノード単位で格納するための受信データバッファを備えるとともに、この受信データバッファに、上記通信媒体からサイクリックに受信した受信データを上記ノード単位で格納し、上記共有メモリは、上記ノード単位で受信データを格納するための通信データバッファと、上記ノード毎に設けられるとともに上記通信データバッファに上記受信データが上記ノード単位で格納されたか否かを示す受信フラグとを、備えるとともに、その通信データバッファに、上記通信コントローラの受信データバッファに格納した受信データを上記複数のノード毎にコピーし、上記端末に引き渡す新規受信データが上記共有メモリの通信データバッファに格納され上記受信フラグが受信データの格納を示している場合にのみ、その共有メモリの通信データバッファから該端末に対する受信データの引き渡しを可能にすることを特徴とする。
【００２２】
また、請求項２の発明は、請求項１の発明において、
上記共有メモリにコピーされた受信データを読み出して上記端末に引き渡す動作は、
上記端末に設けられたキャッシュメモリを介して行われることを特徴とする。
【００２３】
また、請求項３の発明は、請求項１の発明において、
上記端末は、
ユーザプログラムと通信ドライバとを有するプログラマブルコントローラからなることを特徴とする。
【００２４】
また、請求項４の発明は、請求項２の発明において、
上記端末は、
ユーザプログラムと通信ドライバとを有するプログラマブルコントローラからなり、
上記キャッシュメモリは、
上記通信ドライバに設けられることを特徴とする。
【００２５】
また、請求項５の発明は、複数のノードを収容する通信媒体に接続された通信コントローラとプログラマブルコントローラとの間に、その間でデータの交換を行う共有メモリが接続されるとともに、上記通信コントローラを介して上記通信媒体からサイクリックに受信した受信データを上記共有メモリにコピーし、該共有メモリにコピーした受信データを上記プログラマブルコントローラからの読み出し命令に対応して読み出して該プログラマブルコントローラに引き渡す、サイクリック型通信を用いたデータ交換装置であって、上記通信コントローラは、上記通信媒体からサイクリックに受信した受信データを上記ノード単位で格納する受信データバッファを備え、上記共有メモリは、上記交換するデータを上記ノード単位で格納する通信データバッファと、上記通信データバッファに格納された上記交換するデータの排他処理を上記ノード単位で管理する管理手段と、を具備し、上記管理手段は、上記ノード毎に設けられるとともに上記交換するデータが上記ノード単位で上記通信データバッファに格納されたか否かを示す受信フラグを具備することを特徴とする。
【００２７】
また、請求項６の発明は、請求項５の発明において、
上記プログラマブルコントローラは、
ユーザプログラムを格納するユーザプログラム部と、
上記共有メモリとの間で通信を行う通信ドライバと、
を具備することを特徴とする。
【００２８】
また、請求項７の発明は、請求項６の発明において、
上記通信ドライバは、
上記共有メモリにコピーされた受信データを一旦読み出して格納するキャッシュメモリ、
を具備することを特徴とする。
【００２９】
【発明の実施の形態】
以下、この発明の実施の形態について添付図面を参照して詳細に説明する。
【００３０】
図１は、この発明に係わるデータ交換方法および装置を適用して構成した通信システムの一実施の形態を概略ブロック図で示したものである。
【００３１】
図１に示す通信システムは、図１０に示した従来の通信システムの共有メモリ２０に対して以下に示す構成を追加することにより構成することができる。
１）ノード単位の通信データバッファ２１−１〜２１−ｎ
２）ノード単位の受信フラグ２２−１〜２２−ｎ
３）ノード単位の排他フラグ２３−１〜２３−ｎ
４）排他処理の開始を示す開始フラグ２４
５）完了１を示す完了１フラグ２５
６）完了２を示す完了２フラグ２６
【００３２】
なお、ここで、４）の開始フラグ２４および５）の完了１フラグ２５および６）の完了２フラグ２６は、プログラマブルコントローラ１０の通信ドライバ１２および通信コントローラ３０に対する割り込み通知から構成することもできる。
【００３３】
通信コントローラ３０は、図２のタイムチャートに示すように、プログラマブルコントローラ１０のユーザプログラム１１からの命令にかかわらず、通信媒体４０から定期的に他局（他ノード）の通信データを受信し（Ｒｘ- Ａ）、この受信した通信データを受信データバッファ（ｘ）３１に格納し、また、送信データバッファ３２に格納されている送信データを自局の送信タイミングに合わせて通信媒体４０に送信する（Ｗ- Ｂ）。
【００３４】
また、通信コントローラ３０は、プログラマブルコントローラ１０からの命令がない限り、受信データバッファ３１に格納された受信データを共有メモリ２０の通信データバッファ２１- １〜２１−ｎにコピーし（Ｒｘ- Ｂ）、また、共有メモリ２０の通信データバッファ２１- １〜２１−ｎに格納されている送信データを送信データバッファ３２にコピーする（Ｗ- Ａ）。
【００３５】
プログラマブルコントローラ１０の通信ドライバ１２は、ユーザプログラム１１から読み出し命令が発行されると（Ｒ−１）、上記手順で共有メモリ２０の通信データバッファ２１にコピーされた受信データを対応する通信データバッファ２１- １〜２１−ｎから読み出し（Ｒｘ- ２）、これをユーザプログラム１１に引き渡す（Ｒ−３）。
【００３６】
ところで、この図１に示す通信システムにおいては、図２に示すように、共有メモリ２０の通信データバッファ２１−１〜２１−ｎに読み出すべき新規の受信データがある場合のみ、プログラマブルコントローラ１０の通信ドライバ１２による共有メモリ２０の通信データバッファ２１−１〜２１−ｎからの受信データの読み出しを可能にするように構成される。
【００３７】
また、共有メモリ２０の通信データバッファ２１−１〜２１−ｎに読み出すべき新規の受信データがない場合は、プログラマブルコントローラ１０の通信ドライバ１２が、プログラマブルコントローラ１０のユーザプログラムに対して読み出しの結果を失敗として通知する。
【００３８】
図３は、図１に示したプログラマブルコントローラ１０の通信ドライバ１２による特定ノードに対する受信処理をフローチャートで示したものである。
【００３９】
図３において、プログラマブルコントローラ１０の通信ドライバ１２は、まず、共有メモリ２０の特定ノード、例えば、ノード（２）に対応する受信フラグ２２−２（受信フラグ２）がＯＮであるか否かを調べる（ステップ３０１）。
【００４０】
ここで、受信フラグ２２−２（受信フラグ２）がＯＮでない場合は（ステップ３０１でＮＯ）、読み出すべき新規の受信データがないので、プログラマブルコントローラ１０のユーザプログラムに対して読み出しの結果を失敗として通知する（ステップ３１１）。
【００４１】
また、ステップ３０１で、受信フラグ２２−２（受信フラグ２）がＯＮであると判断されると（ステップ３０１でＹＥＳ）、次に、この受信フラグ２２−２（受信フラグ２）に対応する排他フラグ２３−２（排他フラグ２）をＯＮにし（ステップ３０２）、続いて、共有メモリ２０の開始フラグ２４をＯＮにする（ステップ３０３）。
【００４２】
次に、共有メモリ２０の完了１フラグ２５がＯＮかを調べ（ステップ３０４）、ここで、共有メモリ２０の完了１フラグ２５がＯＮでないと（ステップ３０４でＮＯ）、ステップ３０４に戻り、共有メモリ２０の完了１フラグ２５がＯＮになるまで待ち、共有メモリ２０の完了１フラグ２５がＯＮになると（ステップ３０４でＹＥＳ）、共有メモリ２０の通信データバッファ２１−２からプログラマブルコントローラ１０のユーザプログラム１１への受信データの引き渡し処理を実行する（ステップ３０５）。
【００４３】
そして、この共有メモリ２０の通信データバッファ２１−２からプログラマブルコントローラ１０のユーザプログラム１１への受信データの引き渡し処理が終了すると、共有メモリ２０の対応する受信フラグ２２−２をＯＦＦにし（ステップ３０６）、次に、対応する排他フラグ２３−２をＯＦＦにし（ステップ３０７）、次に、開始フラグ２４をＯＦＦにし（ステップ３０８）、その後、完了１フラグ２５をＯＦＦにして（ステップ３０９）、この処理が成功となる（ステップ３１０）。
【００４４】
図４は、図１に示した通信コントローラ３０による特定ノードに対する受信処理をフローチャートで示したものである。
【００４５】
図４において、通信コントローラ３０は、まず、共有メモリ２０の開始フラグ２４がＯＮであるか否かを調べる（ステップ４０１）。
【００４６】
ここで、共有メモリ２０の開始フラグ２４がＯＮでないと（ステップ４０１でＮＯ）、ステップ４０４に進み、共有メモリ２０の開始フラグ２４がＯＮであると（ステップ４０１でＹＥＳ）、次に、共有メモリ２０の完了１フラグ２５がＯＦＦかを調べる（ステップ４０２）。
【００４７】
ここで、完了１フラグ２５がＯＦＦでないと（ステップ４０２でＮＯ）、ステップ４０４に進み、完了１フラグ２５がＯＦＦであると（ステップ４０２でＹＥＳ）、共有メモリ２０の完了１フラグ２５をＯＮにして（ステップ４０３）、ステップ４０４に進む。
【００４８】
ステップ４０４では、通信媒体４０からノード（ｘ）に対応するノード（ｘ）分のデータを受信する。そして、ノード（ｘ）分のデータの受信を終了すると、次に、共有メモリ２０の対応する排他フラグ２３−ｘ（排他フラグｘ）がＯＦＦか否かを調べる（ステップ４０５）。
【００４９】
ここで、排他フラグ２３−ｘ（排他フラグｘ）がＯＦＦでないと（ステップ４０５でＮＯ）、ステップ４０１に戻る。
【００５０】
また、ステップ４０５で、排他フラグ２３−ｘ（排他フラグｘ）がＯＦＦであると判断された場合は（ステップ４０５でＹＥＳ）、通信コントローラ３０の受信データバッファ３１（ｘ）から共有メモリ２０の通信データバッファ２１−ｘへの受信データのコピー処理を実行し（ステップ４０６）、続いて、共有メモリ２０の対応する受信フラグ２２−ｘをＯＮにして（ステップ４０７）、ステップ４０１に戻る。
【００５１】
図５は、プログラマブルコントローラ１０のユーザプログラム１１から自ノードデータを送信する場合における通信ドライバ１２の送信処理をフローチャートで示したものである。
【００５２】
図５において、プログラマブルコントローラ１０の通信ドライバ１２は、まず、共有メモリ２０の完了２フラグ２６がＯＦＦかを調べる（ステップ５０１）。ここで、共有メモリ２０の完了２フラグ２６がＯＦＦでない場合は（ステップ５０１でＮＯ）、ステップ５０１に戻り、共有メモリ２０の完了２フラグ２６がＯＦＦになるまで待ち、共有メモリ２０の完了２フラグ２６がＯＦＦになると（ステップ５０１でＹＥＳ）、自ノードの排他フラグをＯＮにする（ステップ５０２）。
【００５３】
次に、開始フラグ２４をＯＮにし（ステップ５０３）、そして、共有メモリ２０の完了１フラグ２５がＯＮかを調べる（ステップ５０４）。
【００５４】
ここで、共有メモリ２０の完了１フラグ２５がＯＮでないと（ステップ５０４でＮＯ）、ステップ５０４に戻り、共有メモリ２０の完了１フラグ２５がＯＮになるのを待つ。
【００５５】
共有メモリ２０の完了１フラグ２５がＯＮになると（ステップ５０４でＹＥＳ）、プログラマブルコントローラ１０のユーザプログラム１１から送信する自ノードデータを共有メモリ２０の通信データバッファに書き込む処理を行う（ステップ５０５）。
【００５６】
そして、このステップ５０５の処理が終了すると、共有メモリ２０の自ノードの受信フラグをＯＮにし（ステップ５０６）、次に、自ノードの排他フラグをＯＦＦにし（ステップ５０７）、次に、完了２フラグ２６をＯＮにし（ステップ５０９）、最後に開始フラグ２４をＯＦＦにして（ステップ５１０）、この処理は成功になる（ステップ５１１）。
【００５７】
図６は、プログラマブルコントローラ１０のユーザプログラム１１から自ノードデータを送信する場合における通信コントローラ３０の送信処理をフローチャートで示したものである。
【００５８】
図６において、通信コントローラ３０は、まず、共有メモリ２０の開始フラグ２４がＯＮかを調べる（ステップ６０１）。
【００５９】
ここで、開始フラグ２４がＯＮでない場合は（ステップ６０１でＮＯ）、ステップ６０４に進む。
【００６０】
また、ステップ６０１で、開始フラグ２４がＯＮである場合は（ステップ６０１でＹＥＳ）、次に、共有メモリ２０の完了１フラグ２５がＯＦＦかを調べる（ステップ６０２）。
【００６１】
ここで、完了１フラグ２５がＯＦＦでない場合は（ステップ６０２でＮＯ）、ステップ６０４に進む。
【００６２】
また、ステップ６０２で、完了１フラグ２５がＯＦＦであると（ステップ６０２でＹＥＳ）、完了１フラグ２５をＯＮにセットしてステップ６０４に進む。
【００６３】
ステップ６０４では、自ノードの排他フラグがＯＦＦかを調べる。ここで、自ノードの排他フラグがＯＦＦでない場合は（ステップ６０４でＮＯ）、ステップ６０１に戻る。
【００６４】
また、ステップ６０４で、自ノードの排他フラグがＯＦＦである場合は（ステップ６０４でＹＥＳ）、次に自ノードの受信フラグがＯＮかを調べる（ステップ６０５）。
【００６５】
ここで、自ノードの受信フラグがＯＮでないと（ステップ６０５でＮＯ）、ステップ６０１に戻る。
【００６６】
また、ステップ６０５で、自ノードの受信フラグがＯＮであると（ステップ６０５でＹＥＳ）、共有メモリ２０の自ノードの通信データバッファに書き込まれている送信データを通信コントローラ３０の送信バッファ３２にコピーする処理を実行する（ステップ６０６）。
【００６７】
そして、ステップ６０６の処理が終了すると、自ノードの受信フラグをＯＦＦにし（ステップ６０７）、完了２フラグ２６をＯＦＦにして（ステップ６０８）、ステップ６０１に戻る。
【００６８】
図７は、この発明に係わるデータ交換方法および装置を適用して構成した通信システムの他の実施の形態を概略ブロック図で示したものである。
【００６９】
この図７に示す通信システムは、図１に示した通信システムのプログラマブルコントローラ１０の通信ドライバ１２内に全ノードエリア分の通信データバッファ（以下、これをキャッシュメモリと呼ぶ）１３を追加することにより構成することができる。
【００７０】
この図７に示す通信システムにおいては、共有メモリ２０の通信データバッファ２１上のデータを一旦プログラマブルコントローラ１０の通信ドライバ１２内のキャッシュメモリ１３に読み出し、プログラマブルコントローラ１０のユーザプログラム１１に対しては、このキャッシュメモリ１３の記憶内容を通知する。
【００７１】
また、この通信システムでは、共有メモリ２０の通信データバッファ２１上に受信すべき新規のデータ受信がない場合は、キャッシュメモリ１３に記憶されている前回の読み出し内容をプログラマブルコントローラ１０のユーザプログラム１１に対して通知する。
【００７２】
また、この通信システムでは、プログラマブルコントローラ１０のユーザプログラム１１からみて、一度に複数ノード分のデータを操作することができる。また、この操作の間は、排他制御されていないノード分のデータは、通信コントローラ３０からの新規データを共有メモリ２０の通信データバッファ２１に平行してコピーすることができる。
【００７３】
図８は、図７に示した通信システムにおける複数ノード分の排他制御をタイムチャートで示したものである。なお、図８においては、プログラマブルコントローラ１０のユーザプログラム１１からノード（１）、（２）を操作する場合の操作例が示される。なお、通信コントローラ３０、自ノードデータの送信処理については、図１乃至図６で説明した通信システムと同一である。
【００７４】
図９は、図７に示したプログラマブルコントローラ１０の通信ドライバ１２による複数ノードに対する受信処理をフローチャートで示したものである。なお、図９においては、図８と同じように、プログラマブルコントローラ１０のユーザプログラム１１からノード（１）、（２）を操作する場合の操作例が示される。
【００７５】
図９において、プログラマブルコントローラ１０の通信ドライバ１２は、まず、共有メモリ２０のノード（１）に対応する受信フラグ２２−１（受信フラグ１）がＯＮであるか否かを調べる（ステップ９０１）。
【００７６】
ここで、受信フラグ２２−１（受信フラグ１）がＯＮでない場合は（ステップ９０１でＮＯ）、ステップ９０３に進む。
【００７７】
また、ステップ９０１で、受信フラグ２２−１（受信フラグ１）がＯＮであると（ステップ９０１でＹＥＳ）、対応する排他フラグ２３−１（排他フラグ１）をＯＮにし（ステップ９０２）、ステップ９０３に進む。
【００７８】
ステップ９０３においては、共有メモリ２０のノード（２）に対応する受信フラグ２２−２（受信フラグ２）がＯＮであるか否かを調べる。
【００７９】
ここで、受信フラグ２２−２（受信フラグ２）がＯＮでない場合は（ステップ９０３でＮＯ）、ステップ９０５に進む。
【００８０】
また、ステップ９０３で、受信フラグ２２−２（受信フラグ２）がＯＮであると（ステップ９０３でＹＥＳ）、対応する排他フラグ２３−２（排他フラグ２）をＯＮにし（ステップ９０４）、ステップ９０５に進む。
【００８１】
ステップ９０５では、共有メモリ２０の開始フラグ２４をＯＮにセットし、次に完了１フラグ２５がＯＮかを調べ（ステップ９０６）、ここで、共有メモリ２０の完了１フラグ２５がＯＮでないと（ステップ９０６でＮＯ）、ステップ９０６に戻り、完了１フラグ２５がＯＮになるまで待ち、完了１フラグ２５がＯＮになると（ステップ９０６でＹＥＳ）、次に、排他フラグ２２−１（排他フラグ１）がＯＮかを調べる（ステップ９０７）。
【００８２】
ここで、排他フラグ２２−１（排他フラグ１）がＯＮでないと（ステップ９０７でＮＯ）、ステップ９１１に進む。
【００８３】
また、ステップ９０７で、排他フラグ２２−１（排他フラグ１）がＯＮであると（ステップ９０７でＹＥＳ）、共有メモリ２０の通信データバッファ２１−１からプログラマブルコントローラ１０の通信ドライバ１２のキャッシュメモリ１３へのデータの読み出し処理を実行する（ステップ９０８）。
【００８４】
そして、このステップ９０８の処理が終了すると、共有メモリ２０の対応する受信フラグ２２−１をＯＦＦにし（ステップ９１０）、ステップ９１１に進む。
【００８５】
ステップ９１１では、排他フラグ２２−１（排他フラグ１）がＯＮかを調べる。ここで、排他フラグ２２−１（排他フラグ１）がＯＮでないと（ステップ９１１でＮＯ）、ステップ９１３に進む。
【００８６】
また、ステップ９１１で、排他フラグ２２−２（排他フラグ２）がＯＮであると（ステップ９１１でＹＥＳ）、共有メモリ２０の通信データバッファ２１−２からプログラマブルコントローラ１０の通信ドライバ１２のキャッシュメモリ１３へのデータの読み出し処理を実行し（ステップ９１２）、ステップ９１３に進む。
【００８７】
ステップ９１３では、共有メモリ２０の対応する受信フラグ２２−２をＯＦＦにし、次に、対応する排他フラグ２３−２をＯＦＦにする（ステップ９１４）。
【００８８】
そして、キャッシュメモリ１３に読み出したデータをプログラマブルコントローラ１０のユーザプログラム１１に通知する処理を行う（ステップ９１５）。
【００８９】
その後、共有メモリ２０の開始フラグ２４をＯＦＦにし（ステップ９１６）、最後に、完了１フラグ２５をＯＦＦにして（ステップ９１７）、この処理を終了する。
【００９０】
【発明の効果】
以上説明したように請求項１の発明によれば、複数のノードから定期的に受信した受信データを共有メモリにコピーし、該共有メモリにコピーした受信データを端末からの読み出し命令に対応して読み出して該端末に引き渡すデータ交換方法において、上記共有メモリは、上記受信データをノード単位で管理し、上記端末に引き渡す新規受信データが上記共有メモリに格納されている場合のみ該端末に対する受信データの引き渡しを可能にするように構成したので、信頼のおける通信データの読み出し／書き込みを連続して行う場合に通信サイクルタイム時間の影響をなくすとともに、通信媒体の使用条件による性能変動をなくすことができるという効果を奏する。
【００９１】
また、請求項２の発明においては、請求項１の発明において、上記共有メモリは、上記受信データを各ノード毎にコピーする通信データバッファと、上記通信データバッファに対する上記各ノード単位のデータ受信を管理する受信フラグと、上記受信データを上記通信データバッファへコピーする第１の動作と上記端末からの読み出し命令に対応して上記通信データバッファから該受信データを読み出して該端末に引き渡す第２の動作との排他処理を上記ノード単位で管理する排他フラグと、上記排他処理の開始、完了を管理する開始、完了フラグと、を格納して構成したので、請求項１の発明の効果に加えて、必要な個所のみ排他機能が働くようにすることができ、排他処理完了を通信サイクルのどの部分でも行うことができる。
【００９２】
また、請求項３の発明においては、請求項１の発明において、上記共有メモリにコピーされた受信データを読み出して上記端末に引き渡す動作は、上記端末に設けられたキャッシュメモリを介して行われるように構成したので、端末側から見て一度に複数ノードのデータを操作することができる。また、この操作の間は、排他制御されていないノード分のデータのコピーを平行して行うことができる。
【００９３】
また、請求項４の発明においては、請求項１の発明において、上記端末は、ユーザプログラムと通信ドライバとを有するプログラマブルコントローラから構成し、また、請求項５の発明においては、請求項４の発明において、上記キャッシュメモリは、上記通信ドライバに設けるよう構成したので、プログラマブルコントローラ側から見て一度に複数ノードのデータを操作することができる。また、この操作の間は、排他制御されていないノード分のデータのコピーを平行して行うことができる。
【００９４】
また、請求項６の発明においては、複数のノードを収容する通信媒体に接続される通信コントローラと、プログラマブルコントローラと、上記通信コントローラと上記プログラマブルコントローラとの間に接続され、上記通信コントローラと上記プログラマブルコントローラとの間でデータの交換を行う共有メモリと、を具備するデータ交換装置において、上記共有メモリは、上記交換するデータを上記ノード単位で格納するデータ格納手段と、上記データ格納手段に格納された上記交換するデータの排他処理を上記ノード単位で管理する管理手段と、とを具備して構成したので、信頼のおける通信データの読み出し／書き込みを連続して行う場合に通信サイクルタイム時間の影響をなくすとともにし、通信媒体の使用条件による性能変動をなくすことができるデータ交換装置を提供することができるという効果を奏する。
【００９５】
また、請求項７の発明においては、請求項６の発明において、上記データ格納手段は、上記通信コントローラで受信した受信データを各ノード毎にコピーする複数の通信データバッファ、を具備し、上記管理手段は、上記通信データバッファに対する上記各ノード単位のデータ受信を管理する受信フラグと、上記通信コントローラで受信した受信データを上記通信データバッファへコピーする第１の動作と上記プログラマブルコントローラからの読み出し命令に対応して上記通信データバッファにコピーされた受信データを上記プログラマブルコントローラに読み出す第２の動作との排他処理を上記各ノード単位で管理する排他フラグと、上記排他処理の開始、完了を示す開始、完了フラグと、を具備して構成したので、請求項６の発明の効果に加えて、必要な個所のみ排他機能が働くようにすることができ、排他処理完了を通信サイクルのどの部分でも行うことができる。
【００９６】
また、請求項８の発明においては、請求項６の発明において、上記プログラマブルコントローラは、ユーザプログラムを格納するユーザプログラム部と、上記共有メモリとの間で通信を行う通信ドライバと、を具備することを特徴とし、また、請求項９の発明においては、請求項８の発明において、上記通信ドライバは、上記共有メモリにコピーされた受信データを一旦読み出して格納するキャッシュメモリ、を具備することを特徴とする。この構成によれば、プログラマブルコントローラ側から見て一度に複数ノードのデータを操作することができる。また、この操作の間は、排他制御されていないノード分のデータのコピーを平行して行うことができる。
【図面の簡単な説明】
【図１】この発明に係わるデータ交換方法および装置を適用して構成した通信システムの一実施の形態を示した概略ブロック図。
【図２】図１に示した通信システムの動作を説明するタイムチャート。
【図３】図１に示したプログラマブルコントローラの通信ドライバによる特定ノードに対する受信処理を示すフローチャート。
【図４】図１に示した通信コントローラによる特定ノードに対する受信処理を示すフローチャート。
【図５】図１に示したプログラマブルコントローラのユーザプログラムから自ノードデータを送信する場合における通信ドライバの送信処理を示すフローチャート。
【図６】図１に示したプログラマブルコントローラのユーザプログラムから自ノードデータを送信する場合における通信コントローラの送信処理を示すフローチャート。
【図７】この発明に係わるデータ交換方法および装置を適用して構成した通信システムの他の実施の形態を示す概略ブロック図。
【図８】図７に示した通信システムにおける複数ノード分の排他制御を示すタイムチャート。
【図９】図７に示したプログラマブルコントローラの通信ドライバによる複数ノードに対する受信処理を示すフローチャート。
【図１０】従来のサイクリック型通信（データリンク）を用いてデータ交換を行う通信システムの一例を示すブロック図。
【図１１】図１０に示した従来の通信システムの動作を示すタイムチャート。
【図１２】図１０に示した従来の通信システムにおけるプログラマブルコントローラの通信ドライバによる通信処理を示すフローチャート。
【図１３】図１０に示した従来の通信システムにおける通信コントローラによる通信処理を示すフローチャート。
【符号の説明】
１０    プログラマブルコントローラ
１１    ユーザプログラム
１２    通信ドライバ
１３    キャッシュメモリ
２０    共有メモリ
２１、２１−１〜２１−ｎ    通信データバッファ
２２−１〜２２−ｎ    受信フラグ
２３−１〜２３−ｎ    排他フラグ
２４    開始フラグ
２５    完了１フラグ
２６    完了２フラグ
３０    通信コントローラ
３１    受信バッファ
３２    送信バッファ
４０    通信媒体
【図１】
0003791563.tif 000002
【図２】
0003791563.tif 000003
【図３】
0003791563.tif 000004
【図４】
0003791563.tif 000005
【図５】
0003791563.tif 000006
【図６】
0003791563.tif 000007
【図７】
0003791563.tif 000008
【図８】
0003791563.tif 000009
【図９】
0003791563.tif 000010
【図１０】
0003791563.tif 000011
【図１１】
0003791563.tif 000012
【図１２】
0003791563.tif 000013
【図１３】
0003791563.tif 000014