(57)【特許請求の範囲】
【請求項１】
ＣＰＵユニット部と、該ＣＰＵユニット部とユニット間通信することが可能に接続され、外部機器とフィールドネットワーク通信するために確立するコネクションごとに通信周期を設定可能な通信方式に基づいて、該外部機器とフィールドネットワーク通信することが可能な一又は複数の通信ユニット部とを含むプログラマブルコントローラにおいて、
前記ＣＰＵユニット部の１スキャン当たりの処理でユニット間通信することが可能なデータサイズの上限値に関する上限値情報の入力を受け付ける上限値情報入力受付部と、
前記コネクションごとにユニット間通信の優先度の入力を受け付ける優先度入力受付部と
を有し、
前記通信ユニット部は、
前記コネクションごとに、前記ＣＰＵユニット部の１スキャン当たりの処理でユニット間通信するためのユニット間通信要求を生成する要求生成部と、
前記要求生成部により生成されたユニット間通信要求を複数記憶することが可能な記憶部と、
前記ＣＰＵユニット部の１スキャン当たりの処理のうちユニット間通信するべきタイミングにて、前記記憶部に記憶された複数のユニット間通信要求に応じて前記ＣＰＵユニット部とユニット間通信するデータ通信部と
を備え、
前記要求生成部は、
前記記憶部に記憶されたユニット間通信要求に応じてユニット間通信するデータのデータサイズと、前記上限値情報入力受付部により入力を受け付けた上限値情報とに基づき、新たなユニット間通信要求を生成するか否かを判断する処理と、前記優先度入力受付部により入力を受け付けた優先度の高いコネクションに対応するユニット間通信が優先されるようにユニット間通信要求を新たに生成する処理とを実行することを特徴とするプログラマブルコントローラ。
【請求項２】
前記要求生成部は、前記データサイズが前記上限値情報入力受付部により入力を受け付けた上限値を超えている場合には、ユニット間通信要求の生成を行わず、前記データサイズが前記上限値情報入力受付部により入力を受け付けた上限値を超えていない場合には、新たなユニット間通信要求を生成することを特徴とする請求項１に記載のプログラマブルコントローラ。
【請求項３】
前記記憶部は、前記外部機器とフィールドネットワーク通信する対象となるデータを待ちデータとして一時記憶し、
前記要求生成部は、ユニット間通信要求を生成したコネクションのうち、一時記憶されている前記待ちデータが前記通信ユニット部から前記ＣＰＵユニット部へのユニット間通信により未だ転送されていない未完了コネクションに対応するデータの合計データサイズを算出し、
前記上限値情報入力受付部により入力を受け付けた上限値情報に基づいて、前記未完了コネクションに対応するデータの合計データサイズが、１スキャン当たりの処理で前記通信ユニット部から前記ＣＰＵユニット部へのユニット間通信することが可能なデータサイズの上限値以下である場合、前記優先度入力受付部により入力を受け付けた優先度の高いコネクションを優先して、１スキャン当たりの処理で前記ＣＰＵユニット部と前記通信ユニット部との間でユニット間通信すべきコネクションごとの前記ＣＰＵユニット部へのユニット間通信要求を生成することを特徴とする請求項１又は２に記載のプログラマブルコントローラ。
【請求項４】
前記要求生成部は、ユニット間通信要求を生成したコネクションのうち、送信するデータが前記ＣＰＵユニット部から前記通信ユニット部へのユニット間通信により未だ転送されていない未完了コネクションに対応するデータの合計データサイズを算出し、
前記上限値情報入力受付部により入力を受け付けた上限値情報に基づいて、前記未完了コネクションに対応するデータの合計データサイズが、１スキャン当たりの処理で前記ＣＰＵユニット部から前記通信ユニット部へのユニット間通信することが可能なデータサイズの上限値以下である場合、前記優先度入力受付部により入力を受け付けた優先度の高いコネクションを優先して、１スキャン当たりの処理で前記ＣＰＵユニット部と前記通信ユニット部との間でユニット間通信すべきコネクションごとの前記通信ユニット部へのユニット間通信要求を生成することを特徴とする請求項１又は２に記載のプログラマブルコントローラ。
【請求項５】
前記要求生成部は、優先度が最も低いコネクションのフィールドネットワーク通信が行われた場合、少なくとも所定回数後に、前記コネクションのユニット間通信要求を生成することを特徴とする請求項１乃至４のいずれか一項に記載のプログラマブルコントローラ。
【請求項６】
前記優先度入力受付部は、前記外部機器とフィールドネットワーク通信するために確立する所定のコネクションの待ちデータを毎スキャン、ユニット間通信するような優先度の入力を受け付けるようにしてあることを特徴とする請求項１乃至５のいずれか一項に記載のプログラマブルコントローラ。
【請求項７】
ＣＰＵユニット部と、該ＣＰＵユニット部とユニット間通信することが可能に接続され、外部機器とフィールドネットワーク通信するために確立するコネクションごとに通信周期を設定可能な通信方式に基づいて、該外部機器とフィールドネットワーク通信することが可能な一又は複数の通信ユニット部とを含むプログラマブルコントローラで実行することが可能なデータ通信方法において、
前記ＣＰＵユニット部又は前記通信ユニット部は、
前記ＣＰＵユニット部の１スキャン当たりの処理でユニット間通信することが可能なデータサイズの上限値に関する上限値情報の入力を受け付けるステップと、
前記コネクションごとにユニット間通信の優先度の入力を受け付けるステップと
を実行し、
前記通信ユニット部は、
前記コネクションごとに、前記ＣＰＵユニット部の１スキャン当たりの処理でユニット間通信するためのユニット間通信要求を生成するステップと、
生成されたユニット間通信要求を複数記憶するステップと、
前記ＣＰＵユニット部の１スキャン当たりの処理のうちユニット間通信するべきタイミングにて、記憶された複数のユニット間通信要求に応じて前記ＣＰＵユニット部とユニット間通信するステップと
を実行し、
記憶されたユニット間通信要求に応じてユニット間通信するデータのデータサイズと、入力を受け付けた上限値情報とに基づき、新たなユニット間通信要求を生成するか否かを判断する処理と、入力を受け付けた優先度の高いコネクションに対応するユニット間通信が優先されるようにユニット間通信要求を新たに生成する処理とを実行することを特徴とするデータ通信方法。
【請求項８】
ＣＰＵユニット部と、該ＣＰＵユニット部とユニット間通信することが可能に接続され、外部機器とフィールドネットワーク通信するために確立するコネクションごとに通信周期を設定可能な通信方式に基づいて、該外部機器とフィールドネットワーク通信することが可能な一又は複数の通信ユニット部とを含むプログラマブルコントローラで実行することが可能なコンピュータプログラムにおいて、
前記ＣＰＵユニット部又は通信ユニット部を、
前記コネクションごとに、前記ＣＰＵユニット部の１スキャン当たりの処理でユニット間通信することが可能なデータサイズの上限値に関する上限値情報の入力を受け付ける上限値情報入力受付手段、及び
前記コネクションごとにユニット間通信の優先度の入力を受け付ける優先度入力受付手段
として機能させ、
前記通信ユニット部を、
前記コネクションごとに、前記ＣＰＵユニット部の１スキャン当たりの処理でユニット間通信するためのユニット間通信要求を生成する要求生成手段、
前記要求生成手段により生成されたユニット間通信要求を複数記憶することが可能な記憶手段、及び
前記ＣＰＵユニット部の１スキャン当たりの処理のうちユニット間通信するべきタイミングにて、前記記憶手段に記憶された複数のユニット間通信要求に応じて前記ＣＰＵユニット部とユニット間通信するデータ通信手段
として機能させ、
前記要求生成手段を、
前記記憶手段に記憶されたユニット間通信要求に応じてユニット間通信するデータのデータサイズと、前記上限値情報入力受付手段により入力を受け付けた上限値情報とに基づき、新たなユニット間通信要求を生成するか否かを判断する処理と、前記優先度入力受付手段により入力を受け付けた優先度の高いコネクションに対応するユニット間通信が優先されるようにユニット間通信要求を新たに生成する処理とを実行する手段として機能させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信ユニット部でフィールドネットワークを介して送受信された通信データをＣＰＵユニット部で演算処理するプログラマブルコントローラ、データ通信方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
プログラマブルコントローラは、通信ユニットとセンサ、温度調節機器等の外部機器との間で、フィールドネットワークを介したデータ通信（フィールドネットワーク通信）を行い、通信ユニットが送受信した通信データは、ＣＰＵユニットとの間でユニット間通信を行っている。フィールドネットワークを介したデータ通信では、ネットワーク帯域の効率的な利用を図るために、外部機器ごとに、あるいは論理的に確立するコネクションごとに、データ通信の通信周期を個別に設定することができる通信方式を用いることがある。
【０００３】
ここで、コネクションとは、一連のデータ群を送受信するための論理的な通信路を意味しており、１台の外部機器に対して１つのコネクションを確立しても良いし、複数のコネクションを確立しても良い。例えば高速通信用のコネクションと低速通信用のコネクションとを確立しておき、データの特性に応じて使い分けることができる。
【０００４】
論理的に確立するコネクションごとに、データ通信の通信周期を個別に設定することができる場合、設定によっては、複数コネクションのフィールドネットワーク通信のタイミングが重なるおそれがある。複数コネクションのフィールドネットワーク通信のタイミングが重なった場合、ＣＰＵユニットと通信ユニットとの間のユニット間通信（特許文献１でいう「バス通信」に相当する）の負荷が一時的に上昇し、ＣＰＵユニットのスキャンタイムがばらつき、安定した制御を行うことができないという問題が生じる。そのため、スキャンタイムのばらつきを抑制し、スキャンタイムの定時性を維持しつつ、ＣＰＵユニットと通信ユニットとの間でユニット間通信を行うことが重要になる。なお、スキャンタイムとは、プログラマブルコントローラの基本動作である制御動作のうち少なくとも入力リフレッシュ処理、演算処理、出力リフレッシュ処理からなる１サイクル分の時間を意味する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−２２８４０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したスキャンタイムの定時性を維持するためには、入力リフレッシュ処理、出力リフレッシュ処理におけるユニット間通信のばらつきを抑えることが必要となる。そして、ユニット間通信に要する時間は通信データ量に依存しており、各コネクションのフィールドネットワーク通信のタイミングが重なった場合、例えば同一スキャンにおいてユニット間でフィールドネットワーク通信に必要なデータ通信を行ったときには、ユニット間通信に要する時間は定常時に比べて増大することになる。したがって、スキャンタイムの定時性を維持するという観点では、同一スキャンにおけるユニット間通信の通信データ量は、なるべく一定にすることが好ましい。
【０００７】
一方、フィールドネットワーク通信で送受信される通信データには、一連のデータ群の同時性を保って転送することが要求されるデータもあれば、同時性よりも入出力応答性が要求されるデータもある。例えば、前者の例としては、外部機器に対するパラメータ等の書き込み制御に関するデータと、書き込み制御により実際に書き込まれる内容を示すデータ等が挙げられる。これらのデータは互いに依存関係を有するため、一固まりの一連のデータ群として扱う必要がある。また、後者の例としては、センサ入力、アクチュエータ出力等に代表されるＩ／Ｏデータが挙げられる。
【０００８】
一連のデータ群の同時性を保ちつつ、ユニット間でデータ通信を行うためには、一方のユニットの処理が終わるまで、他方のユニットの処理が待ち状態となることが生じ得る。しかし、上述した同時性よりも入出力応答性が要求されるデータをデータ通信する場合には、待ち状態を生じさせることは好ましくない。
【０００９】
本発明は斯かる事情に鑑みてなされたものであり、スキャンタイムの定時性を維持しつつ、入出力応答性が要求されるデータを優先的にユニット間通信することができるプログラマブルコントローラ、データ通信方法及びコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために第１発明に係るプログラマブルコントローラは、ＣＰＵユニット部と、該ＣＰＵユニット部とユニット間通信することが可能に接続され、外部機器とフィールドネットワーク通信するために確立するコネクションごとに通信周期を設定可能な通信方式に基づいて、該外部機器とフィールドネットワーク通信することが可能な一又は複数の通信ユニット部とを含むプログラマブルコントローラにおいて、前記ＣＰＵユニット部の１スキャン当たりの処理でユニット間通信することが可能なデータサイズの上限値に関する上限値情報の入力を受け付ける上限値情報入力受付部と、前記コネクションごとにユニット間通信の優先度の入力を受け付ける優先度入力受付部とを有し、前記通信ユニット部は、前記コネクションごとに、前記ＣＰＵユニット部の１スキャン当たりの処理でユニット間通信するためのユニット間通信要求を生成する要求生成部と、前記要求生成部により生成されたユニット間通信要求を複数記憶することが可能な記憶部と、前記ＣＰＵユニット部の１スキャン当たりの処理のうちユニット間通信するべきタイミングにて、前記記憶部に記憶された複数のユニット間通信要求に応じて前記ＣＰＵユニット部とユニット間通信するデータ通信部とを備え、前記要求生成部は、前記記憶部に記憶されたユニット間通信要求に応じてユニット間通信するデータのデータサイズと、前記上限値情報入力受付部により入力を受け付けた上限値情報とに基づき、新たなユニット間通信要求を生成するか否かを判断する処理と、前記優先度入力受付部により入力を受け付けた優先度の高いコネクションに対応するユニット間通信が優先されるようにユニット間通信要求を新たに生成する処理とを実行することを特徴とする。
また、第２発明に係るプログラマブルコントローラは、第１発明において、前記要求生成部は、前記データサイズが前記上限値情報入力受付部により入力を受け付けた上限値を超えている場合には、ユニット間通信要求の生成を行わず、前記データサイズが前記上限値情報入力受付部により入力を受け付けた上限値を超えていない場合には、新たなユニット間通信要求を生成することを特徴とする。
【００１１】
また、第３発明に係るプログラマブルコントローラは、第１又は第２発明において、前記記憶部は、前記外部機器とフィールドネットワーク通信する対象となるデータを待ちデータとして一時記憶し、前記要求生成部は、ユニット間通信要求を生成したコネクションのうち、一時記憶されている前記待ちデータが前記通信ユニット部から前記ＣＰＵユニット部へのユニット間通信により未だ転送されていない未完了コネクションに対応するデータの合計データサイズを算出し、前記上限値情報入力受付部により入力を受け付けた上限値情報に基づいて、前記未完了コネクションに対応するデータの合計データサイズが、１スキャン当たりの処理で前記通信ユニット部から前記ＣＰＵユニット部へのユニット間通信することが可能なデータサイズの上限値以下である場合、前記優先度入力受付部により入力を受け付けた優先度の高いコネクションを優先して、１スキャン当たりの処理で前記ＣＰＵユニット部と前記通信ユニット部との間でユニット間通信すべきコネクションごとの前記ＣＰＵユニット部へのユニット間通信要求を生成することを特徴とする。
【００１２】
また、第４発明に係るプログラマブルコントローラは、第１又は第２発明において、前記要求生成部は、ユニット間通信要求を生成したコネクションのうち、送信するデータが前記ＣＰＵユニット部から前記通信ユニット部へのユニット間通信により未だ転送されていない未完了コネクションに対応するデータの合計データサイズを算出し、前記上限値情報入力受付部により入力を受け付けた上限値情報に基づいて、前記未完了コネクションに対応するデータの合計データサイズが、１スキャン当たりの処理で前記ＣＰＵユニット部から前記通信ユニット部へのユニット間通信することが可能なデータサイズの上限値以下である場合、前記優先度入力受付部により入力を受け付けた優先度の高いコネクションを優先して、１スキャン当たりの処理で前記ＣＰＵユニット部と前記通信ユニット部との間でユニット間通信すべきコネクションごとの前記通信ユニット部へのユニット間通信要求を生成することを特徴とする。
【００１３】
また、第５発明に係るプログラマブルコントローラは、第１乃至第４発明のいずれか１つにおいて、前記要求生成部は、優先度が最も低いコネクションのフィールドネットワーク通信が行われた場合、少なくとも所定回数後に、前記コネクションのユニット間通信要求を生成することを特徴とする。
【００１４】
また、第６発明に係るプログラマブルコントローラは、第１乃至第５発明のいずれか１つにおいて、前記優先度入力受付部は、前記外部機器とフィールドネットワーク通信するために確立する所定のコネクションの待ちデータを毎スキャン、ユニット間通信するような優先度の入力を受け付けるようにしてあることを特徴とする。
【００１６】
次に、上記目的を達成するために第７発明に係るデータ通信方法は、ＣＰＵユニット部と、該ＣＰＵユニット部とユニット間通信することが可能に接続され、外部機器とフィールドネットワーク通信するために確立するコネクションごとに通信周期を設定可能な通信方式に基づいて、該外部機器とフィールドネットワーク通信することが可能な一又は複数の通信ユニット部とを含むプログラマブルコントローラで実行することが可能なデータ通信方法において、前記ＣＰＵユニット部又は前記通信ユニット部は、前記ＣＰＵユニット部の１スキャン当たりの処理でユニット間通信することが可能なデータサイズの上限値に関する上限値情報の入力を受け付けるステップと、前記コネクションごとにユニット間通信の優先度の入力を受け付けるステップとを実行し、前記通信ユニット部は、前記コネクションごとに、前記ＣＰＵユニット部の１スキャン当たりの処理でユニット間通信するためのユニット間通信要求を生成するステップと、生成されたユニット間通信要求を複数記憶するステップと、前記ＣＰＵユニット部の１スキャン当たりの処理のうちユニット間通信するべきタイミングにて、記憶された複数のユニット間通信要求に応じて前記ＣＰＵユニット部とユニット間通信するステップとを実行し、記憶されたユニット間通信要求に応じてユニット間通信するデータのデータサイズと、入力を受け付けた上限値情報とに基づき、新たなユニット間通信要求を生成するか否かを判断する処理と、入力を受け付けた優先度の高いコネクションに対応するユニット間通信が優先されるようにユニット間通信要求を新たに生成する処理とを実行することを特徴とする。
【００１７】
次に、上記目的を達成するために第８発明に係るコンピュータプログラムは、ＣＰＵユニット部と、該ＣＰＵユニット部とユニット間通信することが可能に接続され、外部機器とフィールドネットワーク通信するために確立するコネクションごとに通信周期を設定可能な通信方式に基づいて、該外部機器とフィールドネットワーク通信することが可能な一又は複数の通信ユニット部とを含むプログラマブルコントローラで実行することが可能なコンピュータプログラムにおいて、前記ＣＰＵユニット部又は通信ユニット部を、前記ＣＰＵユニット部の１スキャン当たりの処理でユニット間通信することが可能なデータサイズの上限値に関する上限値情報の入力を受け付ける上限値情報入力受付手段、及び前記コネクションごとにユニット間通信の優先度の入力を受け付ける優先度入力受付手段として機能させ、前記通信ユニット部を、前記コネクションごとに、前記ＣＰＵユニット部の１スキャン当たりの処理でユニット間通信するためのユニット間通信要求を生成する要求生成手段、前記要求生成手段により生成されたユニット間通信要求を複数記憶することが可能な記憶手段、及び前記ＣＰＵユニット部の１スキャン当たりの処理のうちユニット間通信するべきタイミングにて、前記記憶手段に記憶された複数のユニット間通信要求に応じて前記ＣＰＵユニット部とユニット間通信するデータ通信手段として機能させ、前記要求生成手段を、前記記憶手段に記憶されたユニット間通信要求に応じてユニット間通信するデータのデータサイズと、前記上限値情報入力受付手段により入力を受け付けた上限値情報とに基づき、新たなユニット間通信要求を生成するか否かを判断する処理と、前記優先度入力受付手段により入力を受け付けた優先度の高いコネクションに対応するユニット間通信が優先されるようにユニット間通信要求を新たに生成する処理とを実行する手段として機能させることを特徴とする。
【００１８】
第１発明、第７発明及び第８発明では、ＣＰＵユニット部の１スキャン当たりの処理でユニット間通信することが可能なデータサイズの上限値に関する上限値情報の入力を受け付ける。また、コネクションごとにユニット間通信の優先度の入力を受け付ける。そして、通信ユニット部は、コネクションごとに、ＣＰＵユニット部の１スキャン当たりの処理でユニット間通信するためのユニット間通信要求を生成する。生成されたユニット間通信要求を複数記憶し、ＣＰＵユニット部の１スキャン当たりの処理のうちユニット間通信するべきタイミングにて、記憶された複数のユニット間通信要求に応じてＣＰＵユニット部とユニット間通信する。記憶されたユニット間通信要求に応じてユニット間通信するデータのデータサイズと、入力を受け付けた上限値情報とに基づき、新たなユニット間通信要求を生成するか否かを判断する処理と、入力を受け付けた優先度の高いコネクションに対応するユニット間通信が優先されるようにユニット間通信要求を新たに生成する処理とを実行する。これにより、スキャンタイムの定時性を維持しつつ、入出力応答性が要求されるデータを優先的にユニット間通信することができる。すなわち、ＣＰＵユニット部のスキャンタイムのばらつきをある程度抑えて、安定した制御処理を行うことができるとともに、同時性を保って転送することが要求されるデータについて通信レスポンスが劣化すること（入出力応答性の低下）を抑制することができる。
第２発明では、データサイズが入力を受け付けた上限値を超えている場合には、ユニット間通信要求の生成を行わず、データサイズが入力を受け付けた上限値を超えていない場合には、新たなユニット間通信要求を生成するので、上限値を超えたデータサイズである場合にはユニット間通信を行うことがなく、通信レスポンスを適正に維持することが可能となる。
【００１９】
第３発明では、外部機器とフィールドネットワーク通信する対象となるデータを待ちデータとして一時記憶し、ユニット間通信要求を生成したコネクションのうち、一時記憶されている待ちデータが通信ユニット部からＣＰＵユニット部へのユニット間通信により未だ転送されていない未完了コネクションに対応するデータの合計データサイズを算出する。入力を受け付けた上限値情報に基づいて、未完了コネクションに対応するデータの合計データサイズが、１スキャン当たりの処理で通信ユニット部からＣＰＵユニット部へのユニット間通信することが可能なデータサイズの上限値以下である場合、入力を受け付けた優先度の高いコネクションを優先して、１スキャン当たりの処理でＣＰＵユニット部と通信ユニット部との間でユニット間通信すべきコネクションごとのＣＰＵユニット部へのユニット間通信要求を生成することにより、同一スキャンにおけるユニット間通信に要する時間の急増を防ぐとともに、優先度の高いコネクションに対する入出力応答性の低下を抑制することができる。
【００２０】
第４発明では、ユニット間通信要求を生成したコネクションのうち、送信するデータがＣＰＵユニット部から通信ユニット部へのユニット間通信により未だ転送されていない未完了コネクションに対応するデータの合計データサイズを算出する。入力を受け付けた上限値情報に基づいて、未完了コネクションに対応するデータの合計データサイズが、１スキャン当たりの処理でＣＰＵユニット部から通信ユニット部へのユニット間通信することが可能なデータサイズの上限値以下である場合、入力を受け付けた優先度の高いコネクションを優先して、１スキャン当たりの処理でＣＰＵユニット部と通信ユニット部との間でユニット間通信すべきコネクションごとの通信ユニット部へのユニット間通信要求を生成することにより、同一スキャンにおけるユニット間通信に要する時間の急増を防ぐとともに、優先度の高いコネクションに対する入出力応答性の低下を抑制することができる。
【００２１】
第５発明では、優先度が最も低いコネクションのフィールドネットワーク通信が行われた場合、少なくとも所定回数後に、コネクションのユニット間通信要求を生成することにより、優先度が最も低いコネクション（例えばユニット間通信の優先度が「通常」であるコネクション）にて待ち状態のままユニット間通信が実行されない、という事態が発生することを未然に防止することができる。
【００２２】
第６発明では、外部機器とフィールドネットワーク通信するために確立する所定のコネクションの待ちデータを毎スキャン、ユニット間通信するような優先度の入力を受け付けることにより、入出力応答性が同時性よりも要求されるデータを、他の待ちデータの一時記憶状況によらず、最短でユニット間通信することができる。
【発明の効果】
【００２４】
上記構成によれば、スキャンタイムの定時性を維持して安定した制御処理を行いながら、入出力応答性が要求されるデータを優先的にユニット間通信することができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施の形態に係るプログラマブルコントローラの構成を示す模式図である。
【図２】本発明の実施の形態に係るプログラマブルコントローラのＣＰＵユニットでのスキャンタイムの構成を示す模式図である。
【図３】本発明の実施の形態に係るプログラマブルコントローラのフィールドネットワーク通信で受信したデータを入力リフレッシュでＣＰＵユニットへ転送する場合を示す機能ブロック図である。
【図４】本発明の実施の形態に係るプログラマブルコントローラのフィールドネットワーク通信での受信データ転送方法を示すシーケンス図である。
【図５】本発明の実施の形態に係るプログラマブルコントローラの通信ユニットの制御部の受信処理手順を示すフローチャートである。
【図６】本発明の実施の形態に係るプログラマブルコントローラの通信ユニットの制御部のリフレッシュ上限値チェック処理の手順を示すフローチャートである。
【図７】本発明の実施の形態に係るプログラマブルコントローラの通信ユニットの制御部のステップＳ６０４の詳細処理手順を示すフローチャートである。
【図８】本発明の実施の形態に係るプログラマブルコントローラのＣＰＵユニットの制御部の処理手順を示すフローチャートである。
【図９】本発明の実施の形態に係るプログラマブルコントローラのフィールドネットワーク通信で送信するデータを出力リフレッシュでＣＰＵユニットから転送する場合を示す機能ブロック図である。
【図１０】本発明の実施の形態に係るプログラマブルコントローラのフィールドネットワーク通信での送信データ転送方法を示すシーケンス図である。
【図１１】本発明の実施の形態に係るプログラマブルコントローラの通信ユニットの制御部の送信処理手順を示すフローチャートである。
【図１２】本発明の実施の形態に係るプログラマブルコントローラの通信ユニットの制御部のリフレッシュ上限値チェック処理の手順を示すフローチャートである。
【図１３】本発明の実施の形態に係るプログラマブルコントローラの通信ユニットの制御部のステップＳ１２０４の詳細処理手順を示すフローチャートである。
【図１４】本発明の実施の形態に係るプログラマブルコントローラのＣＰＵユニットの制御部の処理手順を示すフローチャートである。
【図１５】本発明の実施の形態に係るプログラマブルコントローラと接続してある演算表示装置の、ＣＰＵ等の制御部を用いた場合の構成を示すブロック図である。
【発明を実施するための形態】
【００２６】
以下、本発明の実施の形態に係るプログラマブルコントローラについて、図面に基づいて具体的に説明する。
【００２７】
図１は、本発明の実施の形態に係るプログラマブルコントローラの構成を示す模式図である。図１に示すように、プログラマブルコントローラ１は、ＣＰＵユニット２と、機能ごとに独立した複数の拡張ユニット３、３、・・・とで構成されている。拡張ユニット３、３、・・・には、機能ごとに動作を制御する対象となる外部機器５、５、・・・が接続してあり、ラダープログラム等の制御プログラムに従って、ＣＰＵユニット２からの指令により各外部機器５の動作を制御する。なお、本実施の形態では、ＣＰＵユニット２と拡張ユニット３とを別体で構成しているが、例えば拡張ユニット３の機能を、ＣＰＵユニット２の内部に内蔵させる構成であっても良い。
【００２８】
ＣＰＵユニット２は、内蔵するメモリ２１に記憶してある制御プログラムに従って、接続してある拡張ユニット３、３、・・・に対して指令を送出するＣＰＵを備えている。また、拡張ユニット３、３、・・・は、ＣＰＵユニット２からの指令に従って、接続してある外部機器５、５、・・・の動作を制御する。なお、外部機器５、５、・・・の動作を制御するためのパラメータ情報等は、拡張ユニット３、３、・・・が内蔵するメモリ３１、３１、・・・に記憶してある。また、パラメータ情報等をＣＰＵユニット２内のメモリ２１に記憶しておき、通信経路７を介してユニット間通信により読み出して参照しても良い。
【００２９】
図１の例では、拡張ユニット３ａは通信ユニットであり、フィールドネットワーク６を介して外部機器５、５、・・・とデータ通信することが可能に接続されている。ＣＰＵユニット２と通信ユニット３ａとの間は通信経路（バス）７を介したユニット間通信が行われている。
【００３０】
通信ユニット３ａは、フィールドネットワーク６を介したデータ通信機能を有する広義の入出力ユニットであり、フィールドネットワーク６を介して外部機器５から受信したデータは、通信経路７を介したユニット間通信によりＣＰＵユニット２へ転送され、ＣＰＵユニット２から通信経路７を介したユニット間通信により受け取った送信データは、フィールドネットワーク６を介して所望の外部機器５へ送信される。通信ユニット３ａの動作を制御する制御プログラムは、ユーザが、演算表示装置４にインストールされたラダーエディタなどのプログラム作成ソフトウェアを用いて自由に作成・編集できるようになっている。演算表示装置４において作成・編集され、演算表示装置４の記憶装置に記憶された制御プログラムは、ユーザの操作に基づいて、演算表示装置４からＣＰＵユニット２へダウンロードされる。
【００３１】
ＣＰＵユニット２は、１スキャンの間にデータの入出力リフレッシュ処理と演算処理とを実行する。図２は、本発明の実施の形態に係るプログラマブルコントローラ１のＣＰＵユニット２でのスキャンタイムの構成を示す模式図である。図２に示すように、ＣＰＵユニット２は、プログラムを実行する前のユニット間通信（入力リフレッシュ）２０１により、フィールドネットワーク６を介した受信データを含めた入力データをＣＰＵユニット２内のメモリ２１に取り込み、更新された入力データを用いてプログラムを実行（演算）する（２０２）。
【００３２】
プログラムの実行により演算処理した後、ユニット間通信（出力リフレッシュ）２０３により、フィールドネットワーク６を介した送信データを含めた出力データをＣＰＵユニット２内のメモリ２１から送信する。なお、ＥＮＤ処理２０４とは、演算表示装置４、ＣＰＵユニット２に接続された表示器（図示せず）等の外部機器とのデータ通信、システムのエラーチェック等の周辺サービスに関する処理全般を意味する。
【００３３】
ＣＰＵユニット２のスキャンタイムＴは、プログラムが同一である場合、ユニット間通信（入力リフレッシュ）２０１及びユニット間通信（出力リフレッシュ）２０３に要する時間の長短により増減する。ユニット間通信２０１及びユニット間通信２０３に要する時間は、データ通信の対象となるデータの１スキャン当たりに通信されるデータ量に依存する。したがって、フィールドネットワーク６を介したデータ通信における複数のコネクションの通信タイミングが重なった場合、ユニット間通信２０１及び／又はユニット間通信２０３にてデータ量が増加するので、ユニット間通信２０１及び／又はユニット間通信２０３に要する時間が長くなる。したがって、全体としてＣＰＵユニット２のスキャンタイムＴが長くなり、場合によっては、定時的にＣＰＵユニット２に取り込まなければ把握することができない高速の入力信号の変化を取りこぼす等の問題が生じるおそれがある。
【００３４】
また、フィールドネットワーク６を介して送受信されるデータには、例えば制御信号と計測結果のように一組でデータ通信されるべきデータもある。これらのデータは、データの同時性を維持するべく同一のコネクションにてデータ通信され、ユニット間通信においても同一のスキャンにてデータ通信される。なお、フィールドネットワーク６を介したデータ通信の通信周期に対してスキャンタイムＴが長い場合、どのデータからデータ通信するかリフレッシュ優先度を設定する必要がある。１スキャン内の通信では、データ通信するデータの順序は任意だからである。
【００３５】
例えばデータ送信を行う場合、ＣＰＵユニット２から通信ユニット３ａへユニット間通信するときに、通信ユニット３ａからフィールドネットワーク６を介して外部機器５への送信が終了するまで、通信ユニット３ａにて通信データが待ち状態となることがある。送信データの一部が書き換えられる等の障害の発生を回避するためである。しかし、センサ入力、アクチュエータ出力等の入出力データのように、入出力応答性が要求されるデータも存在する。これらの入出力データが通信ユニット３ａにて待ち状態となることは好ましくない。
【００３６】
そこで、本実施の形態では、スキャンタイムＴの定時性を可能な限り維持しつつ、同時性が要求されるデータのユニット間通信を行うとともに、入出力応答性が要求されるデータは優先的にユニット間通信を行うよう通信ユニット３ａの動作を制御する。図３は、本発明の実施の形態に係るプログラマブルコントローラ１のフィールドネットワーク通信で受信したデータを入力リフレッシュでＣＰＵユニット２へ転送する場合を示す機能ブロック図である。
【００３７】
図３において、ＣＰＵ等で構成されているＣＰＵユニット２の制御部２０は、上限値情報入力受付部２２、及び優先度入力受付部２３として機能する。上限値情報入力受付部２２は、１スキャン当たりに入出力（データ通信）することが可能なデータサイズの上限値（以下、リフレッシュ上限値）の入力を受け付ける。１スキャン当たりに入力することが可能な入力リフレッシュ上限値と出力することが可能な出力リフレッシュ上限値とを、別々に入力を受け付けても良いし、合算したリフレッシュ上限値として入力を受け付けても良い。また、上限値情報として上限値の入力を受け付けることに限定されるものではなく、デフォルト値を段階別に指定しておき、例えば「データサイズ大」、「データサイズ中」、「データサイズ小」というような選択の入力を受け付けても良い。
【００３８】
なお、入力リフレッシュ上限値と出力リフレッシュ上限値とを合算として上限値の入力を受け付ける場合、入力リフレッシュ上限値と出力リフレッシュ上限値とを所定の割合で割り振る。例えば１：１の割合で、入力を受け付けた上限値を入力リフレッシュ上限値と出力リフレッシュ上限値とに割り振っても良いし、入力によるデータ通信量の方が大きい場合には、２：１の割合で割り振る等、ユニット間通信をより効率良く実行することが可能となる。
【００３９】
リフレッシュ上限値の入力は、本実施の形態に係るプログラマブルコントローラ１に接続されている演算表示装置４を介して受け付ける。入力を受け付けたリフレッシュ上限値は、通信線を介してＣＰＵユニット２及び通信ユニット３ａへ送信され、ＣＰＵユニット２内のメモリ２１及び通信ユニット３ａ内のメモリ３１へ記憶される。また、通信線を介してＣＰＵユニット２へ送信してＣＰＵユニット２内のメモリ２１へ記憶した上で、ユニット間通信により通信ユニット３ａへ転送してメモリ３１に記憶しても良い。つまり、ＣＰＵユニット２と通信ユニット３ａとは、リフレッシュ上限値について情報共有している。
【００４０】
優先度入力受付部２３は、通信ユニット３ａがフィールドネットワーク６を介して外部機器５とデータ通信するために確立するコネクションごとに、少なくとも通信ユニット３ａがデータを送受信するコネクションを識別するコネクションＩＤ、データを送受信するために必要となる情報（例えば送受信の相手方のアドレス、送受信の区別等に関する情報、送受信するデータのデータサイズ、通信周期等）、そして入出力リフレッシュに対するコネクション間の相対的な優先度（以下、リフレッシュ優先度）の入力を受け付ける。また、送受信データを記憶する待ちデータ記憶部３５内のアドレスについては、静的に特定される場合には入力を受け付ける必要はない。しかし、メモリを有効に活用すること等を目的として動的に特定する場合には、別途入力を受け付けても良い。
【００４１】
リフレッシュ優先度は、例えば２段階の「通常」と「優先」とし、「優先」と入力を受け付けた場合、対応するコネクションに対するユニット間通信を優先して行う。もちろん、２段階に限定されるものではなく、多段階の優先順位の入力を受け付けても良いし、他のデータよりも最優先でデータ通信を行う「最優先」の入力を受け付けても良い。「最優先」の入力を、入出力応答性が特に要求されるデータのデータ通信を行うコネクションに対して受け付けることにより、例えば多くの待ちデータが一時記憶されている場合であっても、毎スキャン確実にデータ通信を行うことが可能となり、入出力応答性を損なうことを回避することができる。
【００４２】
リフレッシュ優先度の入力は、本実施の形態に係るプログラマブルコントローラ１に接続されている演算表示装置４を介して受け付ける。入力を受け付けたリフレッシュ優先度は、通信線を介してＣＰＵユニット２及び通信ユニット３ａへ送信され、ＣＰＵユニット２内のメモリ２１及び通信ユニット３ａ内のメモリ３１へ記憶される。また、通信線を介してＣＰＵユニット２へ送信してＣＰＵユニット２内のメモリ２１へ記憶した上で、ユニット間通信により通信ユニット３ａへ転送してメモリ３１に記憶しても良い。つまり、ＣＰＵユニット２と通信ユニット３ａとは、リフレッシュ優先度について情報共有している。なお、上述したコネクションＩＤ、データを送受信するために必要となる情報に関しても、同様に情報共有している。
【００４３】
フィールドネットワーク６を介して受信した受信データは、通信ユニット３ａの動作を制御する制御部３０のフィールドネットワーク通信制御部３４により、受信する場合に使用するコネクションを識別するコネクションＩＤと対応付けて、フィールドネットワーク通信用メモリ３８の受信バッファ３９に一時記憶される。受信データをＣＰＵユニット２へ転送する場合の優先度制御、リフレッシュ上限値に従った帯域制御、同時性を維持するためのＣＰＵユニット２と共用する待ちデータ記憶部３５の排他制御は、制御部３０が行う。
【００４４】
ＣＰＵユニット２とのユニット間通信のための待ちデータ記憶部３５はバッファメモリとして機能し、例えば２ポートメモリで構成される。待ちデータ記憶部３５は、受信データを一次記憶する受信データ領域３５２の他、ＣＰＵユニット２との間で同時性を維持するために使用するフラグ情報、排他制御で使用するセマフォを配置したハンドシェイク領域３５１を有する。
【００４５】
また、リフレッシュ優先度制御を行うために、優先受信ＦＩＦＯ３６と通常受信ＦＩＦＯ３７とを備えている。
【００４６】
通信ユニット３ａの制御部３０は、フィールドネットワーク通信制御部３４がデータを受信した場合、どのコネクション（コネクションＩＤ）を介して受信した受信データであるかを確認した上で、該コネクションＩＤに対応するリフレッシュ優先度と、待ちデータ記憶部（バッファメモリ）３５の受信データ領域３５２にて受信データを記憶するアドレスを確認し、該コネクションＩＤの受信データをＣＰＵユニット２が待ちデータ記憶部（バッファメモリ）３５から読み出し中でない場合には、受信バッファ３９から待ちデータ記憶部３５の受信データ領域３５２における該コネクションのアドレスへ受信データを転送して、受信バッファ３９を開放する。
【００４７】
なお、制御部３０は、例えばセマフォ等の仕組みを用いて、待ちデータ記憶部３５においてＣＰＵユニット２と通信ユニット３ａとの間でいずれか一方が書き込み中のデータを他方が読み出さないよう排他制御する。これにより、同一コネクションのデータの同時性を確保することができる。
【００４８】
フィールドネットワーク６を介して受信した受信データに対応するコネクションのリフレッシュ優先度が「優先」である場合は優先受信ＦＩＦＯ３６に、「通常」である場合は通常受信ＦＩＦＯ３７に、それぞれコネクションＩＤを書き込む。リフレッシュ優先度が「最優先」である場合には、無条件で毎スキャン、ユニット間通信で入出力リフレッシュされるので、受信データを待ちデータ記憶部３５の受信データ領域３５２における該コネクションのアドレスへ転送しておけば、以後特段の処理は不要となる。  
【００４９】
以下、受信データの同時性を維持して通信ユニット３ａからＣＰＵユニット２へ転送する方法について説明する。図４は、本発明の実施の形態に係るプログラマブルコントローラ１のフィールドネットワーク通信での受信データ転送方法を示すシーケンス図である。
【００５０】
図４において、受信データの同時性を維持して通信ユニット３ａからＣＰＵユニット２へ転送するために、ＣＰＵユニット２と通信ユニット３ａとは、待ちデータ記憶部３５のハンドシェイク領域３５１を用いてユニット間通信する。待ちデータ記憶部３５は、全てのコネクションが独立して通信を行ってもユニット間通信に支障が出ない十分なメモリ容量を確保しており、複数コネクションのユニット間通信を独立して要求することができる。
【００５１】
まず、通信ユニット３ａの制御部３０は、フィールドネットワーク６を介して所定のコネクションＩＤに対応する受信データを受信し（４０１）、受信バッファ３９に所定のコネクションＩＤに対応する受信データを一時記憶する（４０２）。そして、制御部３０は、受信データを受信バッファ３９から受信データ領域３５２へ転送した後、所定の条件を満たしている場合には、所定のコネクションＩＤの入力リフレッシュ要求（ユニット間通信要求）をＣＰＵユニット２へ通知する（４０３）。具体的には、待ちデータ記憶部３５のハンドシェイク領域３５１に、生成した入力リフレッシュ要求を記憶しておき、ＣＰＵユニット２が任意のタイミングで確認する。
【００５２】
ＣＰＵユニット２は、通信ユニット３ａの入力リフレッシュ要求を所定のタイミングで確認し（４０４）、所定のコネクションＩＤによる受信データを受信データ領域３５２から受け取る（４０５）。所定のタイミングとは、各スキャンのプログラム実行前の入力リフレッシュ処理の開始のタイミングである。ＣＰＵユニット２は、まずリフレッシュ優先度が「最優先」であるコネクションの受信データを、全て待ちデータ記憶部３５の受信データ領域３５２から受信する。次に、ハンドシェイク領域３５１の入力リフレッシュ要求を確認し、対応するコネクションＩＤの受信データを待ちデータ記憶部３５の受信データ領域３５２から受信した後、コネクションＩＤに対応する入力リフレッシュ完了を通信ユニット３ａへ通知する（４０６）。具体的には、待ちデータ記憶部３５のハンドシェイク領域３５１に、該コネクションＩＤに対応する入力リフレッシュ完了通知を記憶しておく。通信ユニット３ａの制御部３０は、所定のタイミングで入力リフレッシュ完了通知が記憶されていることを確認し、入力リフレッシュ完了通知が記憶されている場合には対応する入力リフレッシュ要求（ユニット間通信要求）をクリアするとともに、該入力リフレッシュ完了通知をクリアする（４０７）。
【００５３】
図３に戻って、制御部３０の要求生成部３３は、ＣＰＵユニット２に対して要求していて、しかも完了していない全ての入力リフレッシュ要求に対応する各コネクションの受信データ（未完了コネクション）のデータサイズを累計することにより、要求中であり未完了である入力リフレッシュの合計データサイズを算出する。算出した合計データサイズが、入力を受け付けたリフレッシュ上限値を超えている場合には、新たな入力リフレッシュ要求は行わない。
【００５４】
算出した合計データサイズが、入力を受け付けたリフレッシュ上限値以下である場合、要求生成部３３は、優先受信ＦＩＦＯ３６を確認する。入力リフレッシュ要求待ちのコネクションＩＤが存在する場合、該コネクションＩＤに対応する入力リフレッシュ要求を生成して、ＣＰＵユニット２へ通知する。
【００５５】
要求生成部３３は、入力リフレッシュ要求待ちのコネクションＩＤが見つからない場合、通常受信ＦＩＦＯ３７を確認する。入力リフレッシュ要求待ちのコネクションＩＤが存在する場合、該コネクションＩＤに対応する入力リフレッシュ要求を生成して、ＣＰＵユニット２へ通知する。
【００５６】
ただし、優先受信ＦＩＦＯ３６に入力リフレッシュ要求待ちのコネクションＩＤが存在する場合であっても、通常受信ＦＩＦＯ３７に入力リフレッシュ要求待ちのコネクションＩＤが存在し、しかも直近所定回数、例えば直近３回連続して優先受信ＦＩＦＯ３６のコネクションＩＤに対応する入力リフレッシュ要求を生成していたときには、通常受信ＦＩＦＯ３７の入力リフレッシュ要求待ちのコネクションＩＤに対応する入力リフレッシュ要求を生成して、ＣＰＵユニット２へ通知する。これにより、コネクションのリフレッシュ優先度が「優先」である受信データの割合が高い場合、コネクションのリフレッシュ優先度が「通常」であるコネクションが入力リフレッシュを行うことができない状態に陥ることを未然に回避することができる。
【００５７】
要求生成部３３は、入力リフレッシュ要求を生成して、ＣＰＵユニット２へ通知した後、現在ＣＰＵユニット２に対して要求していて、しかも完了していない全ての入力リフレッシュ要求に対応する各コネクションの受信データのデータサイズを再度累計し、要求中であり未完了である入力リフレッシュの合計データサイズを算出する。算出した合計データサイズが、入力を受け付けたリフレッシュ上限値を超えている場合には、処理を終了し、超えていない場合には上述した処理を繰り返す（以下、上述の処理を受信要求生成処理という）。
【００５８】
以下、リフレッシュ優先度に応じた受信ＦＩＦＯを用いたデータ受信処理について、フローチャートに基づいて詳細に説明する。なお、本実施の形態では、優先受信ＦＩＦＯ３６及び通常受信ＦＩＦＯ３７に、それぞれコネクションＩＤを書き込む都度、合計データサイズがリフレッシュ上限値を超えているか否かを確認して受信要求生成処理を行う。しかし、合計データサイズがリフレッシュ上限値を超えている場合、新たな入力リフレッシュ要求は行わないので、ＣＰＵユニット２が入力リフレッシュ処理を完了して合計データサイズがリフレッシュ上限値以下となり次第、入力リフレッシュ要求を行う必要がある。そのため、ＣＰＵユニット２からの入力リフレッシュ完了通知を確認するとともに、入力リフレッシュ完了が通知されていれば、対応する入力リフレッシュ要求(ユニット間通信要求)をクリアするとともに、該入力リフレッシュ完了通知をクリアする処理を行った上で、入力リフレッシュ要求中でありながら未完了であるコネクションの受信データの合計データサイズを再度累計し、合計データサイズとリフレッシュ上限値との比較結果に基づく受信要求生成処理を行う一連の処理フローを定期的に実行すれば良い。
【００５９】
図５は、本発明の実施の形態に係るプログラマブルコントローラ１の通信ユニット３ａの制御部３０の受信処理手順を示すフローチャートである。通信ユニット３ａの制御部３０は、ＣＰＵユニット２又は演算表示装置４から、１スキャン当たりに入出力することが可能なデータサイズのリフレッシュ上限値、及び通信ユニット３ａがデータを送受信する（データ通信するために確立する）コネクションごとのリフレッシュ優先度を取得し、メモリ３１に記憶する（ステップＳ５０１）。制御部３０は、フィールドネットワーク６を介して外部機器５から受信データを受信したか否かを判断し（ステップＳ５０２）、受信データを受信していないと判断した場合（ステップＳ５０２：ＮＯ）、制御部３０は、受信待ち状態となる。制御部３０が、受信データを受信したと判断した場合（ステップＳ５０２：ＹＥＳ）、制御部３０は、受信データをフィールドネットワーク通信用メモリ３８の受信バッファ３９に待ちデータとして記憶した後、待ちデータ記憶部３５の受信データ領域３５２へ転送する（ステップＳ５０３）。この時点で受信バッファ３９は開放される。
【００６０】
制御部３０は、受信データを受信したコネクションＩＤのリフレッシュ優先度をメモリ３１から読み出し（ステップＳ５０４）、読み出したリフレッシュ優先度が「優先」であるか否かを判断する（ステップＳ５０５）。制御部３０が、読み出したリフレッシュ優先度が「優先」であると判断した場合（ステップＳ５０５：ＹＥＳ）、制御部３０は、優先受信ＦＩＦＯ３６にコネクションＩＤを書き込む（ステップＳ５０６）。
【００６１】
制御部３０が、読み出したリフレッシュ優先度が「優先」ではないと判断した場合（ステップＳ５０５：ＮＯ）、制御部３０は、読み出したリフレッシュ優先度が「通常」であるか否かを判断する（ステップＳ５０７）。制御部３０が、読み出したリフレッシュ優先度が「通常」であると判断した場合（ステップＳ５０７：ＹＥＳ）、制御部３０は、通常受信ＦＩＦＯ３７にコネクションＩＤを書き込む（ステップＳ５０８）。
【００６２】
制御部３０が、読み出したリフレッシュ優先度が「通常」ではないと判断した場合（ステップＳ５０７：ＮＯ）、制御部３０は、受信ＦＩＦＯにコネクションＩＤを書き込まず、リフレッシュ上限値チェック結果に基づいて、入力リフレッシュ要求を生成する（ステップＳ５０９）。
【００６３】
リフレッシュ上限値チェックは、任意のタイミングで定期的に実行される。図６は、本発明の実施の形態に係るプログラマブルコントローラ１の通信ユニット３ａの制御部３０のリフレッシュ上限値チェック処理の手順を示すフローチャートである。
【００６４】
図６において、通信ユニット３ａの制御部３０は、受信している入力リフレッシュ完了通知及び対応する入力リフレッシュ要求をクリアし（ステップＳ６０１）、入力リフレッシュ要求中であり、未完了であるコネクションの受信データの合計データサイズを算出する（ステップＳ６０２）。制御部３０は、算出した合計データサイズが、入力を受け付けたリフレッシュ上限値（データサイズの上限値）以下であるか否かを判断する（ステップＳ６０３）。
【００６５】
制御部３０が、算出した合計データサイズが、入力を受け付けたリフレッシュ上限値を超えていると判断した場合（ステップＳ６０３：ＮＯ）、制御部３０は、処理を終了する。制御部３０が、算出した合計データサイズが、入力を受け付けたリフレッシュ上限値以下であると判断した場合（ステップＳ６０３：ＹＥＳ）、制御部３０は、入力リフレッシュ要求を生成する（ステップＳ６０４）。
【００６６】
図７は、本発明の実施の形態に係るプログラマブルコントローラ１の通信ユニット３ａの制御部３０のステップＳ６０４の詳細処理手順を示すフローチャートである。
【００６７】
通信ユニット３ａの制御部３０は、優先受信ＦＩＦＯ３６にコネクションＩＤが記憶されているか否かを判断する（ステップＳ７０１）。制御部３０が、優先受信ＦＩＦＯ３６にコネクションＩＤが記憶されていると判断した場合（ステップＳ７０１：ＹＥＳ）、制御部３０は、通常受信ＦＩＦＯ３７にコネクションＩＤが記憶されているか否かを判断する（ステップＳ７０２）。
【００６８】
制御部３０が、通常受信ＦＩＦＯ３７にコネクションＩＤが記憶されていると判断した場合（ステップＳ７０２：ＹＥＳ）、制御部３０は、直近３回は優先受信ＦＩＦＯ３６に記憶されているコネクションＩＤに対応する入力リフレッシュ要求を生成したか否かを判断する（ステップＳ７０３）。制御部３０が、直近３回は優先受信ＦＩＦＯ３６に記憶されているコネクションＩＤに対応する入力リフレッシュ要求を生成したと判断した場合（ステップＳ７０３：ＹＥＳ）、制御部３０は、通常受信ＦＩＦＯ３７から読み出したコネクションＩＤに対応する入力リフレッシュ要求を生成する（ステップＳ７０４）。
【００６９】
制御部３０が、優先受信ＦＩＦＯ３６にコネクションＩＤが記憶されていないと判断した場合（ステップＳ７０１：ＮＯ）、制御部３０は、通常受信ＦＩＦＯ３７にコネクションＩＤが記憶されているか否かを判断する（ステップＳ７０５）。制御部３０が、通常受信ＦＩＦＯ３７にコネクションＩＤが記憶されていると判断した場合（ステップＳ７０５：ＹＥＳ）、制御部３０は、通常受信ＦＩＦＯ３７から読み出したコネクションＩＤに対応する入力リフレッシュ要求を生成する（ステップＳ７０４）。生成した入力リフレッシュ要求はハンドシェイク領域３５１に記憶する。
【００７０】
制御部３０が、通常受信ＦＩＦＯ３７にコネクションＩＤが記憶されていないと判断した場合（ステップＳ７０２：ＮＯ）、及び直近３回のうち、少なくとも１回は通常受信ＦＩＦＯ３７に記憶されているコネクションＩＤに対応する入力リフレッシュ要求を生成したと判断した場合（ステップＳ７０３：ＮＯ）、制御部３０は、優先受信ＦＩＦＯ３６から読み出したコネクションＩＤに対応する入力リフレッシュ要求を生成する（ステップＳ７０６）。制御部３０が、通常受信ＦＩＦＯ３７にコネクションＩＤが記憶されていないと判断した場合（ステップＳ７０５：ＮＯ）、入力リフレッシュ要求を生成することなく処理を終了する。
【００７１】
図８は、本発明の実施の形態に係るプログラマブルコントローラ１のＣＰＵユニット２の制御部２０の処理手順を示すフローチャートである。図８において、ＣＰＵユニット２の制御部２０は、リフレッシュ優先度が「最優先」である全てのコネクションＩＤに対応する受信データを入力リフレッシュ処理によりＣＰＵユニット２へ転送し（ステップＳ８０１）、一のコネクションＩＤを選択し（ステップＳ８０２）、ハンドシェイク領域３５１に選択したコネクションＩＤに対応する入力リフレッシュ要求が存在するか否かを判断する（ステップＳ８０３）。
【００７２】
制御部２０が、入力リフレッシュ要求が存在すると判断した場合（ステップＳ８０３：ＹＥＳ）、制御部２０は、受信データ領域３５２から対応する受信データを読み出し（ステップＳ８０４）、入力リフレッシュ完了通知を送信する（ステップＳ８０５）。制御部２０が、入力リフレッシュ要求が存在しないと判断した場合（ステップＳ８０３：ＮＯ）、制御部２０は、ステップＳ８０４、ステップＳ８０５をスキップする。
【００７３】
制御部２０は、全てのコネクションＩＤを選択したか否かを判断し（ステップＳ８０６）、制御部２０が、まだ選択していないコネクションＩＤが存在すると判断した場合（ステップＳ８０６：ＮＯ）、制御部２０は、次のコネクションＩＤを選択し（ステップＳ８０７）、処理をステップＳ８０３へ戻して上述した処理を繰り返す。制御部２０が、全てのコネクションＩＤを選択したと判断した場合（ステップＳ８０６：ＹＥＳ）、制御部２０は、処理を終了する。
【００７４】
これにより、待ちデータのデータサイズが、入力を受け付けたリフレッシュ上限値以下である場合、入力を受け付けたリフレッシュ優先度の高いコネクションを優先して、１スキャン当たりでＣＰＵユニット２とユニット間通信すべきコネクションのユニット間通信要求を生成することにより、１スキャン当たりのユニット間通信に要する時間を平滑化するとともに、優先度の高いコネクションの入出力応答性の低下を抑制することができる。
【００７５】
同様に、図９は、本発明の実施の形態に係るプログラマブルコントローラ１のフィールドネットワーク通信で送信するデータを出力リフレッシュによりＣＰＵユニット２から転送する場合を示す機能ブロック図である。図９において、ＣＰＵ等で構成されているＣＰＵユニット２の構成は、入力リフレッシュ時と同様であることから詳細な説明は省略する。
【００７６】
図９において、ＣＰＵ等で構成されているＣＰＵユニット２の制御部２０は、上限値情報入力受付部２２、及び優先度入力受付部２３として機能する。上限値情報入力受付部２２は、１スキャン当たりに入出力（データ通信）することが可能なリフレッシュ上限値の入力を受け付ける。１スキャン当たりに入力することが可能な入力リフレッシュ上限値と出力することが可能な出力リフレッシュ上限値とを、別々に入力を受け付けても良いし、合算したリフレッシュ上限値として入力を受け付けても良い。
【００７７】
リフレッシュ上限値の入力は、本実施の形態に係るプログラマブルコントローラ１に接続されている演算表示装置４を介して受け付ける。入力を受け付けたリフレッシュ上限値は、通信線を介してＣＰＵユニット２及び通信ユニット３ａへ送信され、ＣＰＵユニット２内のメモリ２１及び通信ユニット３ａ内のメモリ３１へ記憶される。また、通信線を介してＣＰＵユニット２へ送信したリフレッシュ上限値をＣＰＵユニット２内のメモリ２１へ記憶した上で、ユニット間通信により通信ユニット３ａへ転送してメモリ３１に記憶しても良い。つまり、ＣＰＵユニット２と通信ユニット３ａとは、リフレッシュ上限値について情報共有している。
【００７８】
優先度入力受付部２３は、通信ユニット３ａがフィールドネットワーク６を介して外部機器５とデータ通信するために確立するコネクションごとに、少なくとも通信ユニット３ａがデータを送受信するコネクションを識別するコネクションＩＤ、データを送受信するために必要となる情報（例えば送受信の相手方のアドレス、送受信の区別等に関する情報、送受信するデータのデータサイズ、通信周期等）、そして入出力リフレッシュに対するコネクション間の相対的な優先度（リフレッシュ優先度）の入力を受け付ける。また、送受信データを記憶する待ちデータ記憶部３５内のアドレスについては、静的に特定される場合には入力を受け付ける必要はない。しかし、メモリを有効に活用すること等を目的として動的に特定する場合には、別途入力を受け付けても良い。
【００７９】
リフレッシュ優先度の入力は、本実施の形態に係るプログラマブルコントローラ１に接続されている演算表示装置４を介して受け付ける。入力を受け付けたリフレッシュ優先度は、通信線を介してＣＰＵユニット２及び通信ユニット３ａへ送信され、ＣＰＵユニット２内のメモリ２１及び通信ユニット３ａ内のメモリ３１へ記憶される。なお、通信線を介してＣＰＵユニット２へ送信してＣＰＵユニット２内のメモリ２１へ記憶した上で、ユニット間通信によって通信ユニット３ａへと転送し、メモリ３１に記憶しても良い。つまり、ＣＰＵユニット２と通信ユニット３ａとは、リフレッシュ優先度について情報共有している。
なお上述したコネクションＩＤ、データを送受信するために必要となる情報に関しても、同様に情報共有している。
【００８０】
ＣＰＵユニット２とのユニット間通信のための待ちデータ記憶部３５はバッファメモリとして機能し、例えば２ポートメモリで構成される。待ちデータ記憶部３５は、送信データを一次記憶する送信データ領域３５３の他、ＣＰＵユニット２との間で同時性を維持するために使用するフラグ情報、排他制御で使用するセマフォを配置したハンドシェイク領域３５１を有する。
【００８１】
また、リフレッシュ優先度制御を行うために、優先送信ＦＩＦＯ９２と通常送信ＦＩＦＯ９３とを備えている。
【００８２】
通信ユニット３ａの動作を制御する制御部３０のデータ通信部３２は、コネクションごとに設定している送信間隔を計時する、内蔵する送信タイマ４０がタイムアップした場合、待ちデータ記憶部３５の送信データ領域３５３に一時記憶してある、タイムアップしたコネクションに対応する送信データを、ＣＰＵユニット２が書き込み中でない場合には、フィールドネットワーク通信用メモリ３８の送信バッファ９１へ転送し、フィールドネットワーク通信制御部３４へデータ送信を依頼する。
【００８３】
なお、制御部３０は、例えばセマフォ等の仕組みを用いて、待ちデータ記憶部３５においてＣＰＵユニット２と通信ユニット３ａとの間でいずれか一方が書き込み中のデータを他方が読み出さないよう排他制御する。待ちデータ記憶部３５の送信データ領域３５３に記憶されている送信データをＣＰＵユニット２が書き込み中である場合、送信バッファ９１への転送を行うことなく、フィールドネットワーク通信制御部３４にデータ送信を依頼する。これは、スキャンタイムＴに比較して、コネクションの送信間隔が短い場合に生じうる現象であり、送信バッファ９１に残存しているコネクションに対応する前回の送信データを再送信することになる。これにより、同一コネクションのデータの同時性を確保することができる。
【００８４】
フィールドネットワーク通信制御部３４へデータ送信を依頼した後、依頼した送信データに対応するコネクションのリフレッシュ優先度が「優先」である場合は優先送信ＦＩＦＯ９２に、「通常」である場合は通常送信ＦＩＦＯ９３に、それぞれコネクションＩＤを書き込む。リフレッシュ優先度が「最優先」である場合には、無条件で毎スキャン、リフレッシュされるので、特段の処理は不要である。  
【００８５】
以下、送信データの同時性を維持してＣＰＵユニット２から送信データを受け取る方法について説明する。図１０は、本発明の実施の形態に係るプログラマブルコントローラ１のフィールドネットワーク通信での送信データ転送方法を示すシーケンス図である。
【００８６】
図１０において、送信データの同時性を維持してＣＰＵユニット２から通信ユニット３ａへ転送するために、ＣＰＵユニット２と通信ユニット３ａとは、待ちデータ記憶部３５のハンドシェイク領域３５１を用いてユニット間通信する。待ちデータ記憶部３５は、全てのコネクションが独立して通信を行ってもユニット間通信に支障が出ない十分なメモリ容量を確保しており、複数コネクションのユニット間通信を独立して要求することができる。
【００８７】
まず、通信ユニット３ａの制御部３０に内蔵する送信タイマ４０のタイムアップをトリガとして、所定のコネクションＩＤに対応する送信データの送信を開始する（１００１）。具体的には、所定のコネクションＩＤに対応する送信データを、待ちデータ記憶部３５の送信データ領域３５３から送信バッファ９１へ送信する（１００２）。そして、制御部３０は、所定の条件を満たしている場合には、所定のコネクションＩＤの出力リフレッシュ要求（ユニット間通信要求）をＣＰＵユニット２へ通知する（１００３）。具体的には、待ちデータ記憶部３５のハンドシェイク領域３５１に、生成した出力リフレッシュ要求を記憶しておき、ＣＰＵユニット２が任意のタイミングで確認する。
【００８８】
ＣＰＵユニット２は、通信ユニット３ａの出力リフレッシュ要求を所定のタイミングで確認し（１００４）、所定のコネクションＩＤによる送信データを送信データ領域３５３へ書き込む（１００５）。所定のタイミングとは、各スキャンのプログラム実行後の出力リフレッシュ処理開始のタイミングである。ＣＰＵユニット２は、まずリフレッシュ優先度が「最優先」であるコネクションの送信データを全て、待ちデータ記憶部３５の送信データ領域３５３へ送信する。次に、ハンドシェイク領域３５１の出力リフレッシュ要求を確認し、対応するコネクションＩＤの送信データを待ちデータ記憶部３５の送信データ領域３５３へ送信した後、コネクションＩＤに対応する出力リフレッシュ完了を通信ユニット３ａへ通知する（１００６）。具体的には、待ちデータ記憶部３５のハンドシェイク領域３５１に、該コネクションＩＤに対応する出力リフレッシュ完了通知を記憶しておく。通信ユニット３aの制御部３０は、所定のタイミングで出力リフレッシュ完了通知が記憶されていることを確認し、出力リフレッシュ完了通知が記憶されている場合には、対応する出力リフレッシュ要求(ユニット間通信要求)をクリアするとともに、該出力リフレッシュ完了通知をクリアする（１００７）。
【００８９】
図９に戻って、制御部３０の要求生成部３３は、ＣＰＵユニット２に対して要求していて、しかも完了していない全ての出力リフレッシュ要求に対応する各コネクションの送信データのデータサイズを累計することにより、要求中であり未完了である出力リフレッシュの合計データサイズを算出する。算出した合計データサイズが、入力を受け付けたリフレッシュ上限値を超えている場合には、新たな出力リフレッシュ要求は行わない。
【００９０】
算出した合計データサイズが、入力を受け付けたリフレッシュ上限値以下である場合、要求生成部３３は、優先送信ＦＩＦＯ９２を確認する。出力リフレッシュ要求待ちのコネクションＩＤが存在する場合、該コネクションＩＤに対応する出力リフレッシュ要求を生成して、ＣＰＵユニット２へ通知する。
【００９１】
要求生成部３３は、出力リフレッシュ要求待ちのコネクションＩＤが見つからない場合、通常送信ＦＩＦＯ９３を確認する。出力リフレッシュ要求待ちのコネクションＩＤが存在する場合、該コネクションＩＤに対応する出力リフレッシュ要求を生成して、ＣＰＵユニット２へ通知する。
【００９２】
ただし、優先送信ＦＩＦＯ９２に出力リフレッシュ要求待ちのコネクションＩＤが存在する場合であっても、通常送信ＦＩＦＯ９３に出力リフレッシュ要求待ちのコネクションＩＤが存在し、しかも直近所定回数、例えば直近３回連続して優先送信ＦＩＦＯ９２のコネクションＩＤに対応する出力リフレッシュ要求を生成していたときには、通常送信ＦＩＦＯ９３の出力リフレッシュ要求待ちのコネクションＩＤに対応する出力リフレッシュ要求を生成して、ＣＰＵユニット２へ通知する。これにより、コネクションのリフレッシュ優先度が「優先」である送信データの割合が高い場合、コネクションのリフレッシュ優先度が「通常」であるコネクションが出力リフレッシュを行うことができない状態に陥ることを未然に回避することができる。
【００９３】
要求生成部３３は、出力リフレッシュ要求を生成して、ＣＰＵユニット２へ通知した後、現在ＣＰＵユニット２に対して要求していて、しかも完了していない全ての出力リフレッシュ要求に対応する各コネクションの送信データのデータサイズを再度累計し、要求中であり未完了である出力リフレッシュの合計データサイズを算出する。算出した合計データサイズが、入力を受け付けたリフレッシュ上限値を超えている場合には、処理を終了し、超えていない場合には上述した処理を繰り返す（以下、上述した処理を送信要求生成処理という）。
【００９４】
以下、リフレッシュ優先度に応じた送信ＦＩＦＯを用いたデータ送信処理について、フローチャートに基づいて詳細に説明する。なお、本実施の形態では、優先送信ＦＩＦＯ９２及び通常送信ＦＩＦＯ９３に、それぞれコネクションＩＤを書き込む都度、合計データサイズがリフレッシュ上限値を超えているか否かを確認して、送信要求生成処理を実行する。しかし、合計データサイズがリフレッシュ上限値を超えている場合、新たな出力リフレッシュ要求は行わないので、ＣＰＵユニット２が出力リフレッシュ処理を完了して合計データサイズがリフレッシュ上限値以下となり次第、出力リフレッシュ要求を行う必要がある。そのため、ＣＰＵユニット２からの出力リフレッシュ完了通知を確認するとともに、出力リフレッシュ完了が通知されている場合、対応する出力リフレッシュ要求(ユニット間通信要求)をクリアするとともに、該出力リフレッシュ完了通知をクリアする処理を行った上で、出力リフレッシュ要求中でありながら未完了のコネクションの送信データの合計データサイズを再度累計し、合計データサイズの値とリフレッシュ上限値との比較結果に基づいて送信要求生成処理を行う一連の処理フローを定期的に実行すれば良い。
【００９５】
図１１は、本発明の実施の形態に係るプログラマブルコントローラ１の通信ユニット３ａの制御部３０の送信処理手順を示すフローチャートである。通信ユニット３ａの制御部３０は、ＣＰＵユニット２又は演算表示装置４から、１スキャン当たりに入出力することが可能なリフレッシュ上限値、及び通信ユニット３ａがデータを送受信する（データ通信するために確立する）コネクションごとのリフレッシュ優先度を取得し、メモリ３１に記憶する（ステップＳ１１０１）。なお、プログラマブルコントローラ１を運用する前に事前に取得して記憶してある場合、ステップＳ１１０１は省略することができる。制御部３０は、送信コネクションごとに送信タイミングを計時している送信タイマ４０がタイムアップしたか否かを判断し（ステップＳ１１０２）、制御部３０が、タイムアップしていないと判断した場合（ステップＳ１１０２：ＮＯ）、制御部３０は、タイムアップ待ち状態となる。制御部３０が、タイムアップしたと判断した場合（ステップＳ１１０２：ＹＥＳ）、制御部３０は、タイムアップした送信タイマ４０に対応するコネクションの送信データ領域３５３に対してＣＰＵユニット２が書き込み中でなければ、該コネクションの送信データを送信バッファ９１の所定領域に転送する（ステップＳ１１０３）。その後、フィールドネットワーク通信制御部３４にデータ送信を指示する。フィールドネットワーク通信制御部３４は指示を受けると直ちに送信を行う。
【００９６】
制御部３０は、送信データを送信したコネクションＩＤのリフレッシュ優先度をメモリ３１から読み出し（ステップＳ１１０４）、読み出したリフレッシュ優先度が「優先」であるか否かを判断する（ステップＳ１１０５）。制御部３０が、読み出したリフレッシュ優先度が「優先」であると判断した場合（ステップＳ１１０５：ＹＥＳ）、制御部３０は、優先送信ＦＩＦＯ９２にコネクションＩＤを書き込む（ステップＳ１１０６）。
【００９７】
制御部３０が、読み出したリフレッシュ優先度が「優先」ではないと判断した場合（ステップＳ１１０５：ＮＯ）、制御部３０は、読み出したリフレッシュ優先度が「通常」であるか否かを判断する（ステップＳ１１０７）。制御部３０が、読み出したリフレッシュ優先度が「通常」であると判断した場合（ステップＳ１１０７：ＹＥＳ）、制御部３０は、通常送信ＦＩＦＯ９３にコネクションＩＤを書き込む（ステップＳ１１０８）。
【００９８】
制御部３０が、読み出したリフレッシュ優先度が「通常」ではないと判断した場合（ステップＳ１１０７：ＮＯ）、制御部３０は、送信ＦＩＦＯにコネクションＩＤを書き込まず、リフレッシュ上限値チェック結果に基づいて、出力リフレッシュ要求を生成する（ステップＳ１１０９）。
【００９９】
リフレッシュ上限値チェックは、任意のタイミングで定期的に実行される。図１２は、本発明の実施の形態に係るプログラマブルコントローラ１の通信ユニット３ａの制御部３０のリフレッシュ上限値チェック処理の手順を示すフローチャートである。
【０１００】
図１２において、通信ユニット３ａの制御部３０は、受信している出力リフレッシュ完了通知及び対応する出力リフレッシュ要求をクリアし（ステップＳ１２０１）、出力リフレッシュ要求中であり、未完了であるコネクションの送信データの合計データサイズを算出する（ステップＳ１２０２）。制御部３０は、算出した合計データサイズが、入力を受け付けたリフレッシュ上限値（データサイズの上限値）以下であるか否かを判断する（ステップＳ１２０３）。
【０１０１】
制御部３０が、算出した合計データサイズが、入力を受け付けたリフレッシュ上限値を超えていると判断した場合（ステップＳ１２０３：ＮＯ）、制御部３０は、処理を終了する。制御部３０が、算出した合計データサイズが、入力を受け付けたリフレッシュ上限値以下であると判断した場合（ステップＳ１２０３：ＹＥＳ）、制御部３０は、出力リフレッシュ要求を生成する（ステップＳ１２０４）。
【０１０２】
図１３は、本発明の実施の形態に係るプログラマブルコントローラ１の通信ユニット３ａの制御部３０のステップＳ１２０４の詳細処理手順を示すフローチャートである。
【０１０３】
通信ユニット３ａの制御部３０は、優先送信ＦＩＦＯ９２にコネクションＩＤが記憶されているか否かを判断する（ステップＳ１３０１）。制御部３０が、優先送信ＦＩＦＯ９２にコネクションＩＤが記憶されていると判断した場合（ステップＳ１３０１：ＹＥＳ）、制御部３０は、通常送信ＦＩＦＯ９３にコネクションＩＤが記憶されているか否かを判断する（ステップＳ１３０２）。
【０１０４】
制御部３０が、通常送信ＦＩＦＯ９３にコネクションＩＤが記憶されていると判断した場合（ステップＳ１３０２：ＹＥＳ）、制御部３０は、直近３回は優先送信ＦＩＦＯ９２に記憶されているコネクションＩＤに対応する出力リフレッシュ要求を生成したか否かを判断する（ステップＳ１３０３）。制御部３０が、直近３回は優先送信ＦＩＦＯ９２に記憶されているコネクションＩＤに対応する出力リフレッシュ要求を生成したと判断した場合（ステップＳ１３０３：ＹＥＳ）、制御部３０は、通常送信ＦＩＦＯ９３から読み出したコネクションＩＤに対応する出力リフレッシュ要求を生成する（ステップＳ１３０４）。
【０１０５】
制御部３０が、優先送信ＦＩＦＯ９２にコネクションＩＤが記憶されていないと判断した場合（ステップＳ１３０１：ＮＯ）、制御部３０は、通常送信ＦＩＦＯ９３にコネクションＩＤが記憶されているか否かを判断する（ステップＳ１３０５）。制御部３０が、通常送信ＦＩＦＯ９３にコネクションＩＤが記憶されていると判断した場合（ステップＳ１３０５：ＹＥＳ）、制御部３０は、通常送信ＦＩＦＯ９３から読み出したコネクションＩＤに対応する出力リフレッシュ要求を生成する（ステップＳ１３０４）。生成した出力リフレッシュ要求はハンドシェイク領域３５１に記憶する。
【０１０６】
制御部３０が、通常送信ＦＩＦＯ９３にコネクションＩＤが記憶されていないと判断した場合（ステップＳ１３０２：ＮＯ）、及び直近３回のうち、少なくとも１回は通常送信ＦＩＦＯ９３に記憶されているコネクションＩＤに対応する出力リフレッシュ要求を生成したと判断した場合（ステップＳ１３０３：ＮＯ）、制御部３０は、優先送信ＦＩＦＯ９２から読み出したコネクションＩＤに対応する出力リフレッシュ要求を生成する（ステップＳ１３０６）。制御部３０が、通常送信ＦＩＦＯ９３にコネクションＩＤが記憶されていないと判断した場合（ステップＳ１３０５：ＮＯ）、出力リフレッシュ要求を生成することなく処理を終了する。
【０１０７】
図１４は、本発明の実施の形態に係るプログラマブルコントローラ１のＣＰＵユニット２の制御部２０の処理手順を示すフローチャートである。図１４において、ＣＰＵユニット２の制御部２０は、リフレッシュ優先度が「最優先」である全てのコネクションＩＤに対応する送信データを出力リフレッシュ処理によりＣＰＵユニット２から転送し（ステップＳ１４０１）、一のコネクションＩＤを選択し（ステップＳ１４０２）、ハンドシェイク領域３５１に選択したコネクションＩＤに対応する出力リフレッシュ要求が存在するか否かを判断する（ステップＳ１４０３）。
【０１０８】
制御部２０が、出力リフレッシュ要求が存在すると判断した場合（ステップＳ１４０３：ＹＥＳ）、制御部２０は、送信データ領域３５３へ対応する送信データを転送し（ステップＳ１４０４）、出力リフレッシュ完了通知を送信する（ステップＳ１４０５）。制御部２０が、出力リフレッシュ要求が存在しないと判断した場合（ステップＳ１４０３：ＮＯ）、制御部２０は、ステップＳ１４０４、ステップＳ１４０５をスキップする。
【０１０９】
制御部２０は、全てのコネクションＩＤを選択したか否かを判断し（ステップＳ１４０６）、制御部２０が、まだ選択していないコネクションＩＤが存在すると判断した場合（ステップＳ１４０６：ＮＯ）、制御部２０は、次のコネクションＩＤを選択し（ステップＳ１４０７）、処理をステップＳ１４０３へ戻して上述した処理を繰り返す。制御部２０が、全てのコネクションＩＤを選択したと判断した場合（ステップＳ１４０６：ＹＥＳ）、制御部２０は、処理を終了する。
【０１１０】
以上のように本実施の形態によれば、スキャンタイムＴの定時性を維持しつつ、入出力応答性が要求されるデータを優先的にユニット間通信することができる。すなわち、ＣＰＵユニット２のスキャンタイムのばらつきをある程度抑えて、安定した制御処理を行うことができるとともに、同時性よりも入出力応答性が要求されるデータを最優先で転送しつつ、同時性を保って転送することが要求されるデータについて通信レスポンスが劣化すること（入出力応答性の低下）を抑制することができる。
【０１１１】
なお、演算表示装置４は、ＣＰＵユニット２とデータ通信することが可能に接続してあり、作成した制御プログラムをＣＰＵユニット２へ送信する。図１５は、本発明の実施の形態に係るプログラマブルコントローラ１と接続してある演算表示装置４の、ＣＰＵ等の制御部を用いた場合の構成を示すブロック図である。
【０１１２】
図１５に示すように本実施の形態に係る演算表示装置４は、少なくとも制御部（ＣＰＵ）４１、メモリ４２、ハードディスク等の記憶装置４３、Ｉ／Ｏインタフェース４４、ビデオインタフェース４５、通信インタフェース４６、可搬型ディスクドライブ４７及び上述したハードウェアを接続する内部バス４８で構成されている。
【０１１３】
制御部４１は、内部バス４８を介して演算表示装置４の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、記憶装置４３に記憶しているコンピュータプログラム１００に従って、種々のソフトウェア的機能を実行する。メモリ４２は、ＳＲＡＭ、ＳＤＲＡＭ等の揮発性メモリで構成され、コンピュータプログラム１００の実行時にロードモジュールが展開され、コンピュータプログラム１００の実行時に発生する一時的なデータ等を記憶する。
【０１１４】
記憶装置４３は、内蔵される固定型記憶装置（ハードディスク）、ＲＯＭ等で構成されている。記憶装置４３に記憶しているコンピュータプログラム１００は、プログラム及びデータ等の情報を記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体９０から、可搬型ディスクドライブ４７によりダウンロードされ、実行時には記憶装置４３からメモリ４２へ展開して実行される。もちろん、通信インタフェース４６を介してネットワークに接続されている外部のコンピュータからダウンロードされたコンピュータプログラムであっても良い。
【０１１５】
Ｉ／Ｏインタフェース４４は、キーボード４４１、マウス４４２等の入力装置と接続され、データの入力を受け付ける。また、ビデオインタフェース４５は、ＣＲＴモニタ、ＬＣＤ等の表示装置４５１と接続され、所定の画像を表示する。
【０１１６】
通信インタフェース４６は内部バス４８に接続されており、インターネット、ＬＡＮ、ＷＡＮ等の外部のネットワークに接続されることにより、外部のコンピュータ等とデータ通信することが可能となっている。また、通信線を介してＣＰＵユニット２へデータ通信することが可能となっている。
【０１１７】
なお、本実施の形態では、演算表示装置４はＣＰＵユニット２と接続する構成としているが、拡張ユニット３と接続しても良い。すなわち、プログラマブルコントローラ１の通信ポートに接続することができれば、接続形態を問うものではない。
【０１１８】
また、本発明は上記実施の形態に限定されるものではなく、本発明の趣旨の範囲内であれば多種の変形、置換等が可能であることは言うまでもない。例えば、外部機器５を識別する情報に対応付けて、確立するべきコネクションに関する情報及び該コネクションに設定するべき優先度に関する情報を記憶しても良い。このようにすることで、データ通信する外部機器５を特定した時点でデータ通信するコネクションの優先度に関する情報を取得することができ、入力を受け付ける必要がない。
【符号の説明】
【０１１９】
１  プログラマブルコントローラ
２  ＣＰＵユニット
３  拡張ユニット
３ａ  通信ユニット
４  演算表示装置
５  外部機器
６  フィールドネットワーク
７  通信経路（バス）
２０、３０  制御部
２１、３１  メモリ
【図１】
0005508098.tif 000002
【図２】
0005508098.tif 000003
【図３】
0005508098.tif 000004
【図４】
0005508098.tif 000005
【図５】
0005508098.tif 000006
【図６】
0005508098.tif 000007
【図７】
0005508098.tif 000008
【図８】
0005508098.tif 000009
【図９】
0005508098.tif 000010
【図１０】
0005508098.tif 000011
【図１１】
0005508098.tif 000012
【図１２】
0005508098.tif 000013
【図１３】
0005508098.tif 000014
【図１４】
0005508098.tif 000015
【図１５】
0005508098.tif 000016