(57)【特許請求の範囲】
【請求項１】
リモートＩ／Ｏ通信サイクル実行中にユーザプログラムを実行し、リモートＩ／Ｏ通信サイクル休止中にリモートＩ／Ｏデータリフレッシュを行なうＰＬＣリモートＩ／Ｏシステムにおいて、
ユーザプログラム実行中のリモートＩ／Ｏ通信サイクルの繰り返し回数を設定する通信サイクル回数設定手段を有し、
上記通信サイクル回数設定手段が、
リモートＩ／Ｏ通信サイクルのサイクルタイムの１００％未満の待ち時間許容値および空き時間許容値を設け、
ユーザプログラムの実行終了後のリモートＩ／Ｏ通信サイクル継続によるリモートＩ／Ｏデータリフレッシュの待ち時間が上記待ち時間許容値以上の場合、ユーザプログラムの実行中のリモートＩ／Ｏ通信サイクルの繰り返し回数を減らすとともに、
リモートＩ／Ｏ通信サイクル終了後のユーザプログラムの実行継続による空き時間が上記空き時間許容値以上の場合、ユーザプログラムの実行中のリモートＩ／Ｏ通信サイクルの繰り返し回数を増やすように
リモートＩ／Ｏ通信サイクルの繰り返し回数を設定することを特徴とするＰＬＣリモートＩ／Ｏシステム。
【請求項２】
上記リモートＩ／Ｏ通信サイクルのサイクルタイムの整数分の１を上記待ち時間許容値および空き時間許容値としたことを特徴とする請求項１記載のＰＬＣリモートＩ／Ｏシステム。
【請求項３】
上記通信サイクル回数設定手段が、
ユーザプログラムの実行時間の長短によりユーザプログラムを分類し、
上記分類毎にリモートＩ／Ｏ通信サイクルの繰り返し回数を定め、
ユーザプログラムが起動されるとき対応する分類のリモートＩ／Ｏ通信サイクルの繰り返し回数を選択するようにしたことを特徴とする請求項１記載のＰＬＣリモートＩ／Ｏシステム。
【請求項４】
リモートＯＵＴ通信サイクルおよびリモートＩＮ通信サイクルの実行中にユーザプログラムを実行し、リモートＯＵＴ通信サイクルおよびリモートＩＮ通信サイクルの休止中にリモートＩ／Ｏデータリフレッシュを行なうＰＬＣリモートＩ／Ｏシステムにおいて、
ユーザプログラムの起動からリモートＩＮ通信サイクルの起動までの時間を設定する通信サイクル起動時間設定手段を有し、
上記通信サイクル起動時間設定手段が、
ユーザプログラム終了後のリモートＩＮ通信サイクル継続によるリモートＩ／Ｏデータリフレッシュの待ち時間、または、リモートＩＮ通信サイクル終了後のユーザプログラムの実行継続による空き時間を減少させるように、
上記ユーザプログラムの実行時間に応じてリモートＩＮ通信サイクルの起動時間を設定することを特徴とするＰＬＣリモートＩ／Ｏシステム。
【請求項５】
リモートＯＵＴ通信サイクルおよびリモートＩＮ通信サイクルの実行中にユーザプログラムを実行し、リモートＯＵＴ通信サイクルおよびリモートＩＮ通信サイクルの休止中にリモートＩ／Ｏデータリフレッシュを行なうＰＬＣリモートＩ／Ｏシステムにおいて、
ユーザプログラムの起動からリモートＩＮ通信サイクルの起動までの時間を設定する通信サイクル起動時間設定手段を有し、
上記通信サイクル起動時間設定手段が、
ユーザプログラムの実行終了後のリモートＩＮ通信サイクル継続によるリモートＩ／Ｏデータリフレッシュの待ち時間がある場合、上記待ち時間分だけリモートＩＮ通信サイクルの起動時間を早めるとともに、
リモートＩＮ通信サイクル終了後のユーザプログラムの実行継続による空き時間がある場合、上記空き時間分だけリモートＩＮ通信サイクルの起動時間を遅らせるように、
リモートＩＮ通信サイクルの起動時間を設定することを特徴とするＰＬＣリモートＩ／Ｏシステム。
【請求項６】
リモートＯＵＴ通信サイクルおよびリモートＩＮ通信サイクルの実行中にユーザプログラムを実行し、リモートＯＵＴ通信サイクルおよびリモートＩＮ通信サイクルの休止中にリモートＩ／Ｏデータリフレッシュを行なうＰＬＣリモートＩ／Ｏシステムにおいて、
ユーザプログラムの起動からリモートＩＮ通信サイクルの起動までの時間を設定する通信サイクル起動時間設定手段を有し、
上記通信サイクル起動時間設定手段が、
ユーザプログラムの起動からリモートＩＮ通信サイクルの起動までの時間を、ユーザプログラムの実行時間の平均値からリモートＩＮ通信サイクルのサイクルタイム分減じた値に近い値になるように、
リモートＩＮ通信サイクルの起動時間を設定することを特徴とするＰＬＣリモートＩ／Ｏシステム。
【請求項７】
リモートＯＵＴ通信サイクルおよびリモートＩＮ通信サイクルの実行中にユーザプログラムを実行し、リモートＯＵＴ通信サイクルおよびリモートＩＮ通信サイクルの休止中にリモートＩ／Ｏデータリフレッシュを行なうＰＬＣリモートＩ／Ｏシステムにおいて、
ユーザプログラムの起動からリモートＩＮ通信サイクルの起動までの時間を設定する通信サイクル起動時間設定手段を有し、
上記通信サイクル起動時間設定手段が、
ユーザプログラムの実行終了後のリモートＩＮ通信サイクル継続によるリモートＩ／Ｏデータリフレッシュの待ち時間がある場合、上記待ち時間の１００％以下の時間だけリモートＩＮ通信サイクルの起動時間を早めるとともに、
上記リモートＩＮ通信サイクル終了後のユーザプログラムの実行継続による空き時間がある場合、上記空き時間の１００％以下の時間だけリモートＩＮ通信サイクルの起動時間を遅らせるように、
リモートＩＮ通信サイクルの起動時間をシフトさせて設定することを特徴とするＰＬＣリモートＩ／Ｏシステム。
【請求項８】
リモートＩＮ通信サイクルのサイクルタイムの整数分の１を上記シフトの量としたことを特徴とする請求項７記載のＰＬＣリモートＩ／Ｏシステム。
【請求項９】
上記通信サイクル起動時間設定手段が、
ユーザプログラムの実行時間の長短によりユーザプログラムを分類し、
上記分類毎にリモートＩＮ通信サイクルの起動時間を定め、
ユーザプログラムが起動されるとき対応する分類のリモートＩＮ通信サイクルの起動時間を選択するようにしたことを特徴とする請求項４乃至７のいずれかに記載のＰＬＣリモートＩ／Ｏシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、通信機能を有するＰＬＣリモートＩ／Ｏシステムに関し、特に、リモートＩ／Ｏ通信サイクル実行中にユーザプログラムを実行し、リモートＩ／Ｏ通信サイクル休止中にリモートＩ／Ｏデータリフレッシュを行なうＰＬＣリモートＩ／Ｏシステムに関するものである。
【０００２】
【従来の技術】
従来、この種のＰＬＣリモートＩ／Ｏシステムにおいては、図１４に示すように、プログラマブルコントローラ（以下ＰＬＣという）本体側６０に備えたリモートＩ／Ｏ親局ユニット６１とリモートＩＮ子局６２、リモートＯＵＴ子局６３とを光ケーブル等の通信回線６４で結び、リモートＩＮ子局６２にはスイッチ、センサ等の入力装置６５が、リモートＯＵＴ子局６３にはリレー、バルブ等の出力装置６６がそれぞれ接続されている。また、リモートＩ／Ｏ親局６１とＰＬＣ本体６７との間はバックプレーンバス６８により結ばれている。
【０００３】
図１５にその詳細を示したように、ＰＬＣ本体側６０のリモートＩ／Ｏ親局ユニット６１は、ＭＰＵ６１−１、リモートＩ／Ｏ通信コントローラ（リモートＩ／Ｏ親局）６１−２、バスＩ／Ｆ共有メモリ６１−３を有し、ＰＬＣ本体６７は、ＭＰＵ６７−１、メモリ６７−２、バスＩ／Ｆロジック６７−３を有する。
【０００４】
ＭＰＵ６７−１で実行されるユーザプログラム（以下、単にプログラムという）の実行結果はメモリ６７−２に一旦格納され、バスＩ／Ｆロジック６７−３、バックプレーンバス６８を経てリモートＩ／Ｏ親局６１のバスＩ／Ｆ共有メモリ６１−３に格納され、リモートＩ／Ｏ通信コントローラ６１−２によるリモートＯＵＴ通信サイクル実行により通信回線６４経由でリモートＯＵＴ子局６３、６３に転送される。また、リモートＩＮ子局６２、６２からの入力データは、リモートＩＮ通信サイクル実行により通信回線６４経由でリモートＩ／Ｏ親局ユニット６１のバスＩ／Ｆ共有メモリ６１−３に一旦格納され、ＭＰＵ６７−１で次のプログラムが起動される前に、そのプログラムのパラメータとしてバックプレーンバス６８、バスＩ／Ｆロジック６７−３を経てＰＬＣ本体のメモリ６７−２に送られる。
【０００５】
プログラムの実行結果はできるだけ早くリモートＯＵＴ子局６３に送って出力装置を作動させること、および、リモートＩＮ子局６２からのデータは最新の入力データが次に実行するプログラムに供されることが、システムの応答性を良くするために必要である。このために、従来からプログラムの実行とリモートＩ／Ｏ通信サイクル（入力データ更新のためのリモートＩＮ通信サイクルサイクルおよび出力データ更新のためのリモートＯＵＴ通信サイクル）との同期をとることが行なわれている。
【０００６】
図１６は、従来のＰＬＣリモートＩ／Ｏシステムの第１の例を示し、プログラム実行（６９）終了してＩ／Ｏリフレッシュフェーズ（７０）に移った時に、プログラムの実行結果をリモートＩ／Ｏ親局ユニット６１のＯＵＴ通信サイクル出力用領域にセットしてリモートＩ／Ｏ通信サイクル（７１）を行ない、そのリモートＩ／Ｏ通信サイクル（７１）直後に、通信サイクル実行により新たに格納された入力データのＰＬＣ本体６７への転送を行なう（リモートＩ／Ｏデータリフレッシュ）（７２）。
【０００７】
図１７は、従来のＰＬＣリモートＩ／Ｏシステムの第２の例を示し、この場合は、プログラム実行（６９）とリモートＩ／Ｏ通信サイクル（７１）が並列に実行され、Ｉ／Ｏリフレッシュフェーズ（７０）に入った後、リモートＩ／Ｏ通信サイクル（７１）の終了を待って、リモートＩ／Ｏデータリフレッシュ（７２）を実行する。プログラムの実行結果のセットもこのリモートＩ／Ｏデータリフレッシュ（７２）で行なう。
【０００８】
【発明が解決しようとする課題】
しかしながら、従来のＰＬＣリモートＩ／Ｏシステムの上記第１の例では、プログラム実行（６９）とリモートＩ／Ｏ通信サイクル（７１）とリモートＩ／Ｏデータリフレッシュ（７２）とがシリーズに実行されるため、ＭＰＵ６７−１には一ＰＬＣスキャン毎にリモートＩ／Ｏ通信サイクル（７１）に相当する待ち時間７３を生じ、Ｉ／Ｏの応答性が悪いという問題がある。
【０００９】
従来のＰＬＣリモートＩ／Ｏシステムの第２の例では、プログラム実行（６９）とリモートＩ／Ｏ通信サイクル（７１）とが並列に実行されてはいるが、Ｉ／Ｏの同期性をとるためにＩ／Ｏリフレッシュフェーズ（７０）に入ってからリモートＩ／Ｏ通信サイクル（７１）の終了を待ってリモートＩ／Ｏデータリフレッシュ（７２）を実行しなければならない。従って、待ち時間７４は少なくなく、やはりＩ／Ｏの応答性が悪いという問題がある。
【００１０】
この発明は、従来における上述のような問題点に着目してなされたものであり、プログラム実行とリモートＩ／Ｏ通信サイクルとの同期を効率的にとり、Ｉ／Ｏの応答性を向上させたＰＬＣリモートＩ／Ｏシステムを提供することを目的としている。
【００１１】
【課題を解決するための手段】
上述の目的を達成するために、請求項１の発明は、リモートＩ／Ｏ通信サイクル実行中にユーザプログラムを実行し、リモートＩ／Ｏ通信サイクル休止中にリモートＩ／Ｏデータリフレッシュを行なうＰＬＣリモートＩ／Ｏシステムにおいて、ユーザプログラム実行中のリモートＩ／Ｏ通信サイクルの繰り返し回数を設定する通信サイクル回数設定手段を有し、上記通信サイクル回数設定手段が、リモートＩ／Ｏ通信サイクルのサイクルタイムの１００％未満の待ち時間許容値および空き時間許容値を設け、ユーザプログラムの実行終了後のリモートＩ／Ｏ通信サイクル継続によるリモートＩ／Ｏデータリフレッシュの待ち時間が上記待ち時間許容値以上の場合、ユーザプログラムの実行中のリモートＩ／Ｏ通信サイクルの繰り返し回数を減らすとともに、リモートＩ／Ｏ通信サイクル終了後のユーザプログラムの実行継続による空き時間が上記空き時間許容値以上の場合、ユーザプログラムの実行中のリモートＩ／Ｏ通信サイクルの繰り返し回数を増やすようにリモートＩ／Ｏ通信サイクルの繰り返し回数を設定することを特徴とする。
【００１２】
本発明によれば、待ち時間、空き時間が減少してシステムのＩ／Ｏ効率が向上する。
【００１６】
また、請求項２の発明は、上記リモートＩ／Ｏ通信サイクルのサイクルタイムの整数分の１を上記待ち時間許容値および空き時間許容値としたことを特徴とする。
【００１７】
請求項１及び２の発明によれば、通信サイクル回数設定手段がプログラム実行時間を基に適正なリモートＩ／Ｏ通信サイクルの繰り返し回数を設定することにより、待ち時間、空き時間が減少し、システムのＩ／Ｏ効率が向上する。
【００１８】
また、請求項３の発明は、請求項１記載の発明において、上記通信サイクル回数設定手段が、ユーザプログラムの実行時間の長短によりユーザプログラムを分類し、上記分類毎にリモートＩ／Ｏ通信サイクルの繰り返し回数を定め、ユーザプログラムが起動されるとき対応する分類のリモートＩ／Ｏ通信サイクルの繰り返し回数を選択するようにしたことを特徴とする。
【００１９】
請求項３の発明によれば、プログラムによって実行時間のばらつきが大きい場合に、待ち時間、空き時間は減少する。
【００２０】
請求項４の発明は、リモートＯＵＴ通信サイクルおよびリモートＩＮ通信サイクルの実行中にユーザプログラムを実行し、リモートＯＵＴ通信サイクルおよびリモートＩＮ通信サイクルの休止中にリモートＩ／Ｏデータリフレッシュを行なうＰＬＣリモートＩ／Ｏシステムにおいて、ユーザプログラムの起動からリモートＩＮ通信サイクルの起動までの時間を設定する通信サイクル起動時間設定手段を有し、上記通信サイクル起動時間設定手段が、ユーザプログラム終了後のリモートＩＮ通信サイクル継続によるリモートＩ／Ｏデータリフレッシュの待ち時間、または、リモートＩＮ通信サイクル終了後のユーザプログラムの実行継続による空き時間を減少させるように、上記ユーザプログラムの実行時間に応じてリモートＩＮ通信サイクルの起動時間を設定することを特徴とする。
【００２１】
請求項４の発明によれば、リモートＩＮ通信サイクルの起動時間の適正な設定により、待ち時間、空き時間が減少し、システムのＩ／Ｏ効率が上がる。
【００２２】
請求項５の発明は、リモートＯＵＴ通信サイクルおよびリモートＩＮ通信サイクルの実行中にユーザプログラムを実行し、リモートＯＵＴ通信サイクルおよびリモートＩＮ通信サイクルの休止中にリモートＩ／Ｏデータリフレッシュを行なうＰＬＣリモートＩ／Ｏシステムにおいて、ユーザプログラムの起動からリモートＩＮ通信サイクルの起動までの時間を設定する通信サイクル起動時間設定手段を有し、上記通信サイクル起動時間設定手段が、ユーザプログラムの実行終了後のリモートＩＮ通信サイクル継続によるリモートＩ／Ｏデータリフレッシュの待ち時間がある場合、上記待ち時間分だけリモートＩＮ通信サイクルの起動時間を早めるとともに、リモートＩＮ通信サイクル終了後のユーザプログラムの実行継続による空き時間がある場合、上記空き時間分だけリモートＩＮ通信サイクルの起動時間を遅らせるように、リモートＩＮ通信サイクルの起動時間を設定することを特徴とする。
【００２３】
請求項６の発明は、リモートＯＵＴ通信サイクルおよびリモートＩＮ通信サイクルの実行中にユーザプログラムを実行し、リモートＯＵＴ通信サイクルおよびリモートＩＮ通信サイクルの休止中にリモートＩ／Ｏデータリフレッシュを行なうＰＬＣリモートＩ／Ｏシステムにおいて、ユーザプログラムの起動からリモートＩＮ通信サイクルの起動までの時間を設定する通信サイクル起動時間設定手段を有し、上記通信サイクル起動時間設定手段が、ユーザプログラムの起動からリモートＩＮ通信サイクルの起動までの時間を、ユーザプログラムの実行時間の平均値からリモートＩＮ通信サイクルのサイクルタイム分減じた値に近い値になるように、リモートＩＮ通信サイクルの起動時間を設定することを特徴とする。
【００２４】
請求項７の発明は、リモートＯＵＴ通信サイクルおよびリモートＩＮ通信サイクルの実行中にユーザプログラムを実行し、リモートＯＵＴ通信サイクルおよびリモートＩＮ通信サイクルの休止中にリモートＩ／Ｏデータリフレッシュを行なうＰＬＣリモートＩ／Ｏシステムにおいて、ユーザプログラムの起動からリモートＩＮ通信サイクルの起動までの時間を設定する通信サイクル起動時間設定手段を有し、上記通信サイクル起動時間設定手段が、ユーザプログラムの実行終了後のリモートＩＮ通信サイクル継続によるリモートＩ／Ｏデータリフレッシュの待ち時間がある場合、上記待ち時間の１００％以下の時間だけリモートＩＮ通信サイクルの起動時間を早めるとともに、上記リモートＩＮ通信サイクル終了後のユーザプログラムの実行継続による空き時間がある場合、上記空き時間の１００％以下の時間だけリモートＩＮ通信サイクルの起動時間を遅らせるように、リモートＩＮ通信サイクルの起動時間をシフトさせて設定することを特徴とする。
【００２５】
また、請求項８の発明は、請求項７の発明において、リモートＩＮ通信サイクルのサイクルタイムの整数分の１を上記シフトの量としたことを特徴とする。
【００２６】
請求項５〜８の発明によれば、通信サイクル起動時間設定手段がプログラム実行時間を基に適正なリモートＩＮ通信サイクルの起動時間を設定することにより、待ち時間、空き時間が減少し、システムのＩ／Ｏ効率が向上する。
【００２７】
また、請求項９の発明は、請求項４乃至７のいずれかに記載の発明において、上記通信サイクル起動時間設定手段が、ユーザプログラムの実行時間の長短によりユーザプログラムを分類し、上記分類毎にリモートＩＮ通信サイクルの起動時間を定め、ユーザプログラムが起動されるとき対応する分類のリモートＩＮ通信サイクルの起動時間を選択するようにしたことを特徴とする。
【００２８】
請求項９の発明によれば、プログラムによって実行時間のばらつきが大きい場合に、待ち時間、空き時間は大幅に減少する。
【００２９】
【発明の実施の形態】
以下に添付の図を参照してこの発明を実施の形態について詳細に説明する。
【００３０】
図１はこの発明ＰＬＣリモートＩ／Ｏシステムの一実施の形態を示すブロック図である。
【００３１】
図１において、このＰＬＣリモートＩ／Ｏシステムは、前述した図１５に示したシステムと異なり、リモートＩ／Ｏ親局（リモートＩ／Ｏ通信コントローラ）１３がＰＬＣと一体化されていて、このリモートＩ／Ｏ親局１３と、ＰＬＣ本体側１０のＭＰＵ１１とメモリ１２とが互いに接続されて構成されている。
【００３２】
ＭＰＵ１１においては、通信サイクル回数設定手段がプログラムの実行およびリモートＩ／Ｏデータリフレッシュ（ＰＬＣスキャン）。
【００３３】
上記のプログラムの実行中、リモートＩ／Ｏ親局１３ではリモートＩ／Ｏ通信サイクルを周期的に起動して通信回線を介してリモートＩ／Ｏ子局２０との間でデータのやりとりを行なう。リモートＩ／Ｏ子局２０は図では詳細を示していないがリモートＩＮ子局とリモートＯＵＴ子局で構成されている点は、図１４の従来例と同様である。メモリ１２にはリモートＩ／Ｏ通信コントローラ１３が得たリモートＩＮ子局からのデータやＭＰＵ１１でのプログラム実行結果が一時的に格納され、リモートＩ／Ｏデータリフレッシュの実行によって、リモートＩＮ子局から得たデータはＭＰＵ１１でのプログラム実行用領域に、プログラムの実行結果はリモートＩ／Ｏ親局１３からのＯＵＴ通信サイクル出力用領域にそれぞれセットされる。
【００３４】
そして、ＭＰＵ１１でのプログラム実行結果は、リモートＯＵＴ通信サイクルが起動されるとリモートＩ／Ｏ親局１３から通信回線を介してリモートＯＵＴ子局に送られ、更に、リレー、バルブ等の出力装置に作動指令を送る。また、リモートＩＮ通信サイクルが起動されるとリモートＩ／Ｏ親局１３はリモートＩＮ子局からデータを取り込んで、メモリ１２に格納するのである。
【００３５】
このリモートＩ／Ｏ通信サイクルとＰＬＣスキャン（プログラム実行とリモートＩ／Ｏデータリフレッシュ）とは同期をとって行なうのであるが、同期のとり方を大別すると２種になる。ひとつは、後述する第１〜第３の実施の形態におけるような、プログラム実行中にリモートＩ／Ｏ通信サイクルが一定周期で繰り返し起動されるもので、この場合は、１ＰＬＣスキャンにおけるリモートＩ／Ｏ通信サイクルの繰り返し回数設定を行なう通信サイクル回数設定手段がＭＰＵ１１に設けられる。他のひとつは、後述する第４〜第６の実施の形態におけるような、プログラム実行開始とともにリモートＯＵＴ通信サイクルが起動され、その後にリモートＩＮ通信サイクルが起動されもので、この場合は、１ＰＬＣスキャンにおけるプログラムの起動からリモートＩＮ通信サイクルの起動までの時間を設定する通信サイクル起動時間設定手段がＭＰＵ１１に設けられる。
【００３６】
この発明のＰＬＣリモートＩ／Ｏシステムの第１の実施の形態を図２に示す。
【００３７】
図２において、ＰＬＣスキャンではプログラム実行Ａ、Ｉ／Ｏリフレッシュフェーズａ、プログラム実行Ｂ、Ｉ／Ｏリフレッシュフェーズｂ、プログラム実行Ｃ、Ｉ／Ｏリフレッシュフェーズｃ、‥‥‥‥  のようにプログラム実行とＩ／Ｏリフレッシュフェーズとを交互に行ない、プログラム実行と並行してリモートＩ／Ｏ通信サイクル３０が実行される。Ｉ／ＯリフレッシュフェーズではリモートＩ／Ｏデータリフレッシュが行なわれる。
【００３８】
図２におけるプログラム実行とリモートＩ／Ｏ通信サイクルとの同期のとり方を、図３のフローチャートを参照して説明する。
【００３９】
プログラム実行（ステップ１０１）が終了するとＩ／Ｏリフレッシュフェーズ（ステップ１０２）に入る。このとき、リモートＩ／Ｏ子局との間のリモートＩ／Ｏ通信サイクル３０が終了しているかを調べる（ステップ１０３）。プログラム実行Ａの間にはリモートＩ／Ｏ通信サイクル３０は３回起動され、３回目のリモートＩ／Ｏ通信サイクル３０はプログラム実行Ａ終了後も残っているので、通信サイクル終了とは判断されず（ＮＯ）となり、このステップ１０３をループする。このループが続く間、Ｉ／Ｏリフレッシュフェーズａの最初に待ち時間３１が発生する。３回目のリモートＩ／Ｏ通信サイクル３０が終了すると、ステップ１０３は終了と判断して（ＹＥＳ）となり、リモートＩ／Ｏデータリフレッシュ４０が実行されて（ステップ１０４）、リモートＩＮ子局から得た最新のデータがＭＰＵ１１でのプログラム実行用領域に、プログラムの実行結果はリモートＩ／Ｏ親局１３からのＯＵＴ通信サイクル出力用領域にそれぞれセットされる。
【００４０】
次いで、プログラム実行時間Ｐx と（リモートＩ／Ｏ通信サイクル繰り返し回数Ｓx ×リモートＩ／Ｏ通信サイクルタイムＴ）とを比較して（ステップ１０５）、プログラム実行Ａの場合、プログラム実行時間Ｐx の方が小さい（ＹＥＳ）のでステップ１０６に移ってＳx+1 ＝Ｓx ＋（（Ｐx −Ｓx ×Ｔ）／Ｔ（小数部切り上げ））の演算が行なわれ、次ぎのリモートＩ／Ｏ通信サイクル３０の繰り返し回数Ｓx+1 は３から１減らして２とし、上記の待ち時間３１を無くして、Ｓx+1 回（ここでは２回）リモートＩ／Ｏ通信サイクルを繰り返すよう設定する（ステップ１０７）とともに、プログラム実行Ｂ（ステップ１０１）に移る。同時にリモートＩ／Ｏ通信サイクル３０も起動し、２回繰り返される。
【００４１】
プログラム実行Ａよりもやや時間のかかる次のプログラム実行Ｂでは、プログラム実行Ａの場合と同様ステップ１０３まで至ると、既に最終（２回目）のリモートＩ／Ｏ通信サイクル３０は終了しており、待ち時間なしで直ちに（ＹＥＳ）となってステップ１０４を実行し、次ぎのステップ１０５ではプログラム実行時間Ｐx が（リモートＩ／Ｏ通信サイクル繰り返し回数Ｓx ×リモートＩ／Ｏ通信サイクルタイムＴ）より大きいので（ＮＯ）となり、ステップ１０８でＳx+1 ＝Ｓx ＋（（Ｐx −Ｓx ×Ｔ）／Ｔ（小数部切り捨て））の演算が行なわれる。ここで、最終のリモートＩ／Ｏ通信サイクルから次のＩ／ＯリフレッシュフェーズｂまでにリモートＩ／Ｏ通信サイクル３０のサイクルタイム（Ｔ）以上の空き時間４１が発生しているので、次ぎのリモートＩ／Ｏ通信サイクル３０の繰り返し回数Ｓx+1 は１増やして３とし、次回の空き時間４１を減らして、Ｓx+1 回（ここでは３回）リモートＩ／Ｏ通信サイクルを繰り返すよう設定する（ステップ１０７）。
【００４２】
同様にして、次のプログラム実行Ｃのサイクルに移る。プログラム実行Ｃはプログラム実行Ｂよりも更に時間がかかり、プログラム実行Ｂと同じフローをたどるが、この時は空き時間４１はリモートＩ／Ｏ通信サイクルのサイクルタイムＴ未満であるのでステップ１０８での演算ではリモートＩ／Ｏ通信サイクル３０の繰り返し回数Ｓx+1 は増減されずに次のＰＬＣスキャンのサイクルに移る。
【００４３】
すなわち、ＰＬＣスキャンのサイクルでのプログラム実行終了後のリモートＩ／Ｏ通信サイクル継続によるリモートＩ／Ｏデータリフレッシュの待ち時間３１がある場合、プログラムの実行中のリモートＩ／Ｏ通信サイクルの繰り返し回数を減らし、逆に、リモートＩ／Ｏ通信サイクル終了後のプログラムの実行継続による空き時間がリモートＩ／Ｏ通信サイクルの一サイクルタイム以上の場合、プログラムの実行中のリモートＩ／Ｏ通信サイクルの繰り返し回数を増やすことにより、プログラム実行とリモートＩ／Ｏ通信サイクルとの同期をとるのである。通常、プログラム実行時間はプログラムによるばらつきがあまり大きくないから、この方式により、プログラムの実行終了後のリモートＩ／Ｏ通信サイクル継続によるリモートＩ／Ｏデータリフレッシュの待ち時間と、リモートＩ／Ｏ通信サイクル終了後のプログラムの実行継続による空き時間とが少なくなってＩ／Ｏの応答性能が向上する。
【００４４】
図４は、この発明のＰＬＣリモートＩ／Ｏシステムの第２の実施の形態を示す。
【００４５】
図４においても図２と同様に、ＰＬＣスキャンではプログラム実行とＩ／Ｏリフレッシュフェーズとを交互に行ない、これと並行してリモートＩ／Ｏ通信サイクル３０が実行される。Ｉ／ＯリフレッシュフェーズではリモートＩ／Ｏデータリフレッシュが行なわれる。
【００４６】
図４におけるプログラム実行とリモートＩ／Ｏ通信サイクルとの同期のとり方を、図５のフローチャートを参照して説明する。なお、図３のフローチャートと同一のフロー部分には同一の符号を付し、その部分の説明を省略する。
【００４７】
この第２の実施の形態においては、ステップ１０１のプログラム実行時間を累積し、また、ステップ１０１の実行回数を記録してプログラム平均実行時間Ｂx を算出しておき、ステップ１０４終了後、ステップ２０５において、このプログラム平均実行時間Ｂx とリモートＩ／Ｏ通信サイクルタイムＴとから次ぎのＰＬＣスキャンのサイクルのためのリモートＩ／Ｏ通信サイクル繰り返し回数Ｓx+1 ＝Ｂx ／Ｔ（小数部切り捨て）（図４の場合、３回）を算出する。この算出したＳx+1 回だけリモートＩ／Ｏ通信サイクルを繰り返し起動するよう設定して（ステップ１０７）、次ぎのプログラム実行（ステップ１０１）に移る。なお、ステップ２０５において算出に使用されるステップ１０１の実行回数は、プログラム実行を重ねるごとに増加する。
【００４８】
図４においては、プログラム実行が既に相当回数繰り返され、平均実行時間Ｂx が安定した状態でのＰＬＣスキャン、リモートＩ／Ｏ通信サイクルを示しており、ステップ２０５の演算によってもリモートＩ／Ｏ通信サイクル繰り返し数＝３で安定している。そして、プログラム実行Ｂの実行時間＝平均実行時間Ｂx となって最適のタイミングとなっている。
【００４９】
この方式により、プログラムの実行終了後のリモートＩ／Ｏ通信サイクル継続によるリモートＩ／Ｏデータリフレッシュの待ち時間と、リモートＩ／Ｏ通信サイクル終了後のプログラムの実行継続による空き時間とが少なくなるが、プログラム実行回数が増すに従ってプログラム平均実行時間Ｂx の母数が大きくなり、上記待ち時間、空き時間は一層少なくなってＩ／Ｏの応答性能が向上する。
【００５０】
図６は、この発明のＰＬＣリモートＩ／Ｏシステムの第３の実施の形態を示す。
【００５１】
図６においても図２と同様に、ＰＬＣスキャンではプログラム実行とＩ／Ｏリフレッシュフェーズとを交互に行ない、これと並行してリモートＩ／Ｏ通信サイクル３０が実行される。Ｉ／ＯリフレッシュフェーズではリモートＩ／Ｏデータリフレッシュが行なわれる。
【００５２】
この第３の実施の形態は、第１の実施の形態と同様、ＰＬＣスキャン中のプログラム実行とリモートＩ／Ｏ通信サイクルとの待ち時間、空き時間の実績から、次のＰＬＣスキャンの待ち時間、空き時間を少なくするようにリモートＩ／Ｏ通信サイクルの繰り返し数を加減するのであるが、その加減の程度が過剰になるのを防ぐものである。
【００５３】
すなわち、第３の実施の形態においては、待ち時間修正、空き時間修正の基準を、リモートＩ／Ｏ通信サイクルのサイクルタイムＴよりも小さい値、例えばサイクルタイムＴの１／２と定め、この基準時間未満の待ち時間や空き時間があってもリモートＩ／Ｏ通信サイクルの繰り返し回数を変更せず、基準時間以上のとき初めて変更するのである。
【００５４】
図６におけるプログラム実行とリモートＩ／Ｏ通信サイクルとの同期のとり方を、図７のフローチャートを参照して説明する。なお、図３のフローチャートと同一のフロー部分には同一の符号を付し、その部分の説明を省略する。
【００５５】
この第３の実施の形態においては、ステップ１０１のプログラム実行時間Ｐx と（リモートＩ／Ｏ通信サイクル繰り返し回数Ｓx ×リモートＩ／Ｏ通信サイクルタイムＴ）とを比較して、その差からリモートＩ／Ｏ通信サイクルタイムＴの１／２以上の分は切り上げ、１／２未満の分は切り捨て（いずれも絶対値の切り上げ、切り捨て）て、次のＰＬＣスキャンでのリモートＩ／Ｏ通信サイクル繰り返し回数Ｓx+1 を算出し（ステップ３０５）、Ｓx+1 回リモートＩ／Ｏ通信サイクルを繰り返すよう設定する（ステップ１０７）。
【００５６】
この結果、プログラム実行Ａでの待ち時間３１、プログラム実行Ｂでの空き時間４１はＴ／２未満なので繰り返し数は変更されず、プログラム実行Ｃでの空き時間４１はＴ／２以上なので次のＰＬＣスキャンのためのリモートＩ／Ｏ通信サイクル繰り返し回数Ｓx+1 は１増加して４となる。
【００５７】
このように、第３の実施の形態においては、リモートＩ／Ｏ通信サイクルタイムＴの１／２を基準値として、リモートＩ／Ｏ通信サイクル繰り返し回数が過剰にならない程度に増減される。この第３の実施の形態における「Ｔ×１／２」はリモートＩ／Ｏ通信サイクルタイムＴよりも小さい適宜の値、例えば、Ｔの１００％未満の値、Ｔの整数分の１等の値に替えることができる。
【００５８】
以上の第１〜第３の実施の形態においては、実行する全てのプログラムについて、実行時間の長短に関係なく扱ったが、プログラムによっては実行時間が他のプログラムよりも遥かに長い場合がある。このようにプログラムによって実行時間のばらつきが大きい場合には、プログラムの実行時間の長短によりプログラムを分類し、この分類毎にリモートＩ／Ｏ通信サイクルの繰り返し回数を定め、プログラムが起動されるとき、対応する分類のリモートＩ／Ｏ通信サイクルの繰り返し回数を選択するようにすれば、待ち時間、空き時間は大幅に減少する。
【００５９】
以上の第１〜第３の実施の形態では、リモートＩ／Ｏ通信サイクル繰り返し回数を増減して同期をとったが、以下の実施の形態では、プログラム実行開始と同時にリモートＯＵＴ通信サイクルを起動し、通信サイクル起動時間設定手段がリモートＩＮ通信サイクルの起動時間を設定して、この起動時間でプログラム実行中にリモートＩＮ通信サイクルを実行する。
【００６０】
図８は、この発明のＰＬＣリモートＩ／Ｏシステムの第４の実施の形態を示す。
【００６１】
図８において、ＰＬＣスキャンではプログラム実行とＩ／Ｏリフレッシュフェーズとを交互に行ない、これと並行してリモートＯＵＴ通信サイクル３２およびリモートＩＮ通信サイクル３３が実行される。Ｉ／ＯリフレッシュフェーズではリモートＩ／Ｏデータリフレッシュが行なわれる。
【００６２】
図８におけるプログラム実行とリモートＩＮ通信サイクルとの同期のとり方を、図９のフローチャートを参照して説明する。
【００６３】
まず、プログラム実行開始とともにリモートＩＮ通信サイクル起動待ちタイマーをスタートさせる（ステップ４０１）。プログラム実行を終了するとＩ／Ｏリフレッシュフェーズ（ステップ４０２）に入る。このとき、タイマーが既にタイムアップしてリモートＩＮ通信サイクルが起動済みかどうか調べる（ステップ４０３）。もし起動済みでなければ（ＮＯ）、直ちにリモートＩＮ通信サイクルを起動させて（ステップ４０４）から、ステップ４０５に移る。起動済みならば（ＹＥＳ）、直接ステップ４０５に移る。ステップ４０５では、リモートＩＮ通信サイクルが終了したかどうか調べる。未了（ＮＯ）の間はステップ４０５をループして、その間Ｉ／Ｏリフレッシュフェーズに待ち時間３１が発生する。終了（ＹＥＳ）するとリモートＩ／Ｏデータリフレッシュ４０が実行されて（ステップ４０６）、リモートＩＮ子局から得た最新のデータがＭＰＵ１１でのプログラム実行用領域に、プログラムの実行結果はリモートＩ／Ｏ親局１３からのＯＵＴ通信サイクル出力用領域にそれぞれセットされる。
【００６４】
次いで、プログラム実行時間Ｐx と（リモートＩＮ通信サイクル起動時間ＴＳx ＋リモートＩＮ通信サイクルタイムＴIN）とを比較して（ステップ４０７）、その差だけ次ぎのリモートＩＮ通信サイクル起動時間ＴＳx+1 を補正する。即ち、通信サイクル起動時間設定手段が、プログラムの実行終了後のリモートＩＮ通信サイクル継続によるリモートＩ／Ｏデータリフレッシュの待ち時間がある場合、上記待ち時間分だけリモートＩＮ通信サイクルの起動時間を早め、逆に、リモートＩＮ通信サイクル終了後のプログラムの実行継続による空き時間がある場合、上記空き時間分だけリモートＩＮ通信サイクルの起動時間を遅らせるように、リモートＩＮ通信サイクルの起動時間を設定するのである。
【００６５】
次いで、リモートＯＵＴ通信サイクルもスタートして、リモートＯＵＴ子局にその前の実行プログラムのデータを送り（ステップ４０８）、ステップ４０１に戻る。
【００６６】
このフローに従って、図８のプログラム実行Ａでは待ち時間３１を生じたため、プログラム実行ＢではリモートＩＮ通信サイクルの起動時間を待ち時間分▲２▼だけ早めている。その結果、プログラム実行Ｂで空き時間４１を生じ、プログラム実行Ｃのために今度は空き時間分▲３▼だけ遅くしている。
【００６７】
通常、プログラム実行時間はプログラムによるばらつきがあまり大きくないから、この方式により、プログラムの実行終了後のリモートＩＮ通信サイクル継続によるリモートＩ／Ｏデータリフレッシュの待ち時間と、リモートＩＮ通信サイクル終了後のプログラムの実行継続による空き時間とが少なくなってＩ／Ｏの応答性能が向上する。
【００６８】
図１０は、この発明のＰＬＣリモートＩ／Ｏシステムの第５の実施の形態を示す。
【００６９】
図１０においても、図８の第４の実施の形態同様、ＰＬＣスキャンではプログラム実行とＩ／Ｏリフレッシュフェーズとを交互に行ない、これと並行してリモートＯＵＴ通信サイクル３２およびリモートＩＮ通信サイクル３３が実行される。Ｉ／ＯリフレッシュフェーズではリモートＩ／Ｏデータリフレッシュが行なわれる。
【００７０】
図１０におけるプログラム実行とリモートＩＮ通信サイクルとの同期のとり方を、図１１のフローチャートを参照して説明する。図１１において図９のフローチャートと共通の部分には同一の符号を付し、説明を省略する。
【００７１】
この第５の実施の形態においては、ステップ４０１のプログラム実行時間を累積し、また、ステップ４０１の実行回数を記録してプログラム平均実行時間Ｂx を算出しておき、ステップ４０６終了後、ステップ５０７において、このプログラム平均実行時間Ｂx とリモートＩＮ通信サイクルタイムＴINとから次ぎのＰＬＣスキャンのサイクルのためのリモートＩＮ通信サイクル起動時間ＴＳx+1 ＝Ｂx −ＴIN（図１０の▲１▼）を算出する。プログラム実行開始からこの算出したリモートＩＮ通信サイクル起動時間ＴＳx+1 後にリモートＩＮ通信サイクルを起動するよう設定して、次ぎのリモートＯＵＴ通信サイクル起動（ステップ４０８）に移る。なお、ステップ５０６において算出に使用されるステップ４０１の実行回数は、プログラム実行を重ねるごとに増加する。
【００７２】
図１０においては、プログラム実行が既に相当回数繰り返され、平均実行時間Ｂx が安定した状態でのＰＬＣスキャン、リモートＯＵＴ通信サイクル、リモートＩＮ通信サイクルを示しており、ステップ５０６の演算によってもリモートＩＮ通信サイクル起動時間▲１▼は一定値を維持している。そして、プログラム実行Ｂの実行時間＝平均実行時間Ｂx となって最適のタイミングとなっている。
【００７３】
この方式により、プログラムの実行終了後のリモートＩＮ通信サイクル継続によるリモートＩ／Ｏデータリフレッシュの待ち時間と、リモートＩＮ通信サイクル終了後のプログラムの実行継続による空き時間とが少なくなるが、プログラム実行回数が増すに従ってプログラム平均実行時間Ｂx の母数が大きくなり、上記待ち時間、空き時間は一層少なくなってＩ／Ｏの応答性能が向上する。
【００７４】
図１２は、この発明のＰＬＣリモートＩ／Ｏシステムの第６の実施の形態を示す。
【００７５】
図１２においても、図８の第４の実施の形態同様、ＰＬＣスキャンではプログラム実行とＩ／Ｏリフレッシュフェーズとを交互に行ない、これと並行してリモートＯＵＴ通信サイクル３２およびリモートＩＮ通信サイクル３３が実行される。Ｉ／ＯリフレッシュフェーズではリモートＩ／Ｏデータリフレッシュが行なわれる。
【００７６】
図１２におけるプログラム実行とリモートＩＮ通信サイクルとの同期のとり方を、図１３のフローチャートを参照して説明する。図１３において図９のフローチャートと共通の部分には同一の符号を付し、説明を省略する。
【００７７】
この第６の実施の形態においては、ステップ４０１のプログラム実行時間Ｐx と（リモートＩＮ通信サイクルタイムＴIN＋リモートＩＮ通信サイクル起動時間ＴＳx ）とを比較して（ステップ６０７）、その差がリモートＩＮ通信サイクルタイムＴINの１／２を越える場合（ＹＥＳ）、ＴIN×２／８だけリモートＩＮ通信サイクル起動時間ＴＳx を補正して（ステップ６０８）、また、１／２以下の場合（ＮＯ）、上記差がＴIN×１／８を越えているとき、ＴIN×１／８だけリモートＩＮ通信サイクル起動時間ＴＳx を補正する（ステップ６０９）。
【００７８】
この結果、プログラム実行Ａでの待ち時間３１（▲２▼）は、リモートＩＮ通信サイクルタイムＴINの１／８を越え、１／２以下なので、プログラム実行Ｂ用のリモートＩＮ通信サイクル起動時間ＴＳx は−１／８×ＴINだけ補正されて早められ、次ぎのプログラム実行Ｂでは、空き時間４１（▲３▼）がＴINの１／２以上なのでプログラム実行Ｃ用にはＴIN×２／８だけリモートＩＮ通信サイクル起動時間ＴＳx が補正されて遅くなる。
【００７９】
このように、第６の実施の形態においては、通信サイクル起動時間設定手段が、プログラムの実行終了後のリモートＩＮ通信サイクル継続によるリモートＩ／Ｏデータリフレッシュの待ち時間がある場合、リモートＩＮ通信サイクルタイムの１／８を単位として、上記待ち時間の１００％以下の時間だけリモートＩＮ通信サイクルの起動時間を早めるとともに、上記リモートＩＮ通信サイクル終了後のプログラムの実行継続による空き時間がある場合、リモートＩＮ通信サイクルタイムの１／８を単位として、上記空き時間の１００％以下の時間だけリモートＩＮ通信サイクルの起動時間を遅らせるように、リモートＩＮ通信サイクルの起動時間をシフトさせて設定する。この第６の実施の形態における「リモートＩＮ通信サイクルタイムの１／８」の単位は一つの選択例であって、他の任意の基準単位を用いることができる。
【００８０】
このように、第６の実施の形態においては、リモートＩＮ通信サイクルタイムＴINよりも小さい値を基準値として、リモートＩＮ通信サイクルの起動時間が過剰にならない程度に増減される。
【００８１】
以上の第４〜第６の実施の形態においては、実行する全てのプログラムについて、実行時間の長短に関係なく扱ったが、プログラムによっては実行時間が他のプログラムよりも遥かに長い場合がある。このようにプログラムによって実行時間のばらつきが大きい場合には、プログラムの実行時間の長短によりプログラムを分類し、この分類毎にリモートＩＮ通信サイクルの起動時間を定め、プログラムが起動されるとき対応する分類のリモートＩＮ通信サイクルの起動時間を選択するようにすれば、待ち時間、空き時間は大幅に減少する。
【００８２】
【発明の効果】
以上の説明から理解されるように、この発明によるＰＬＣリモートＩ／Ｏシステムによれば、リモートＩ／Ｏ通信サイクルのタイミングを制御することにより、プログラムの実行終了後のリモートＩ／Ｏ通信サイクル継続によるリモートＩ／Ｏデータリフレッシュの待ち時間が少なくなってＭＰＵが有効に使用でき、また、リモートＩ／Ｏ通信サイクル終了後のプログラムの実行継続による空き時間が少なくなってその分リモートＩ／Ｏ通信サイクルの休止間隔が減少し、より新しいＩＮデータをリモートＩＮ子局から取り入れることができ、システムの効率が向上するという効果を奏する。
【図面の簡単な説明】
【図１】この発明のＰＬＣリモートＩ／Ｏシステムの一実施の形態を示すブロック図。
【図２】この発明のＰＬＣリモートＩ／Ｏシステムの第１の実施の形態を示す説明図。
【図３】この発明のＰＬＣリモートＩ／Ｏシステムの第１の実施の形態における動作を示すフローチャート。
【図４】この発明のＰＬＣリモートＩ／Ｏシステムの第２の実施の形態を示す説明図。
【図５】この発明のＰＬＣリモートＩ／Ｏシステムの第２の実施の形態における動作を示すフローチャート。
【図６】この発明のＰＬＣリモートＩ／Ｏシステムの第３の実施の形態を示す説明図。
【図７】この発明のＰＬＣリモートＩ／Ｏシステムの第３の実施の形態における動作を示すフローチャート。
【図８】この発明のＰＬＣリモートＩ／Ｏシステムの第４の実施の形態を示す説明図。
【図９】この発明のＰＬＣリモートＩ／Ｏシステムの第４の実施の形態における動作を示すフローチャート。
【図１０】この発明のＰＬＣリモートＩ／Ｏシステムの第５の実施の形態を示す説明図。
【図１１】この発明のＰＬＣリモートＩ／Ｏシステムの第５の実施の形態における動作を示すフローチャート。
【図１２】この発明のＰＬＣリモートＩ／Ｏシステムの第６の実施の形態を示す説明図。
【図１３】この発明のＰＬＣリモートＩ／Ｏシステムの第６の実施の形態における動作を示すフローチャート。
【図１４】ＰＬＣリモートＩ／Ｏシステムを示すブロック図。
【図１５】ＰＬＣリモートＩ／ＯシステムのＰＬＣ本体を示すブロック図。
【図１６】従来のＰＬＣリモートＩ／Ｏシステムを示す説明図。
【図１７】従来のＰＬＣリモートＩ／Ｏシステムを示す説明図。
【符号の説明】
１０  ＰＬＣ本体側
１１  ＭＰＵ
１３  リモートＩ／Ｏ親局
２０  リモートＩ／Ｏ子局
３０  リモートＩ／Ｏ通信サイクル
３１  待ち時間
３２  リモートＯＵＴ通信サイクル
３３  リモートＩＮ通信サイクル
４０  リモートＩ／Ｏデータリフレッシュ
４１  空き時間
【図１】
0003742999.tif 000002
【図２】
0003742999.tif 000003
【図３】
0003742999.tif 000004
【図４】
0003742999.tif 000005
【図５】
0003742999.tif 000006
【図６】
0003742999.tif 000007
【図７】
0003742999.tif 000008
【図８】
0003742999.tif 000009
【図９】
0003742999.tif 000010
【図１０】
0003742999.tif 000011
【図１１】
0003742999.tif 000012
【図１２】
0003742999.tif 000013
【図１３】
0003742999.tif 000014
【図１４】
0003742999.tif 000015
【図１５】
0003742999.tif 000016
【図１６】
0003742999.tif 000017
【図１７】
0003742999.tif 000018