(57)【要約】      （修正有）【課題】通信の安定性を確保できるクライアント装置を提供すること。【解決手段】クライアント装置２０は、要求するデータ数を示す要求データ数を含む要求コマンドを生成して送信するコマンド生成部２４と、受信したデータが要求コマンドに対して返信されたデータであるか否かを判定する判定部２８と、を備える。要求コマンドは、前回要求したデータ数とは異なる要求データ数を含む。【選択図】図２
2017017505.tif 000002
【特許請求の範囲】
【請求項１】
要求するデータ数を示す要求データ数を含む要求コマンドを生成して送信するコマンド生成部と、
受信したデータが前記要求コマンドに対して返信されたデータであるか否かを判定する判定部と、を備え、
前記要求コマンドは、前回要求したデータ数とは異なる要求データ数を含む、
クライアント装置。
【請求項２】
前記判定部は、返信された前記データの数と前記要求データ数とを比較する、
請求項１に記載のクライアント装置。
【請求項３】
前記要求コマンドは、要求する前記データの先頭アドレスをさらに含む、
請求項１又は請求項２に記載のクライアント装置。
【請求項４】
前記要求コマンドは、要求する前記データのアドレス範囲の指定情報を含む、
請求項１又は請求項２に記載のクライアント装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信の安定性を確保できるクライアント装置に関する。
【背景技術】
【０００２】
従来、化学製造プラント、石油精製プラント、その他製造プラント等の処理プラント内において使用されるプロセス管理システムが知られている。
【０００３】
例えば、プロセス管理システムとして、特開２０１２−２０８７０６号公報には、ユニバーサルバス１の系統とローカルバス２の系統との間で情報を受け渡すためのゲートウェイとして機能する冗長コントローラ１０と、プログラマブルロジックコントローラ（ＰＬＣ）４２と、を備え、ＰＬＣ４２は、プロセスデータをローカルバス２に供給し、冗長コントローラ１０は、ローカルバス２を介して、ＰＬＣ４２から供給されたプロセスデータを受信する、プロセス管理システムが開示されている(特許文献１)。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−２０８７０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで、データを特定するための識別子が定義されている通信プロトコルを利用する場合、クライアント装置は、サーバ装置からクライアント装置に返信される応答データが、クライアント装置からサーバ装置に送信される要求コマンドに対する応答データであるか否かを、要求コマンド、応答データのそれぞれに含まれる識別子を比較することにより判断することができる。
【０００６】
しかしながら、古い規格の通信プロトコルには識別子が定義されていないものがあり、多くのプラントには、識別子が定義されていない時代の通信プロトコルにしか準拠していない装置が多数残っている。このため多くの装置と通信を可能とするためには、最新の装置であっても、識別子が定義されていない通信プロトコルを用いざるを得ない。ところが、このような識別子が定義されていない通信プロトコルを用いたデータの送受信では、次のような不都合が生じる可能性があった。
【０００７】
すなわち、クライアント装置はデータを要求する場合に要求コマンドをサーバ装置に送信し、サーバ装置は要求コマンドを受信したら自らのデータをクライアント装置に返信する。しかし、サーバ装置では、他の装置との通信処理を実行中であるなどの理由でクライアント装置から送信された要求コマンドに対し即時にデータを返信できない場合が頻繁に生じる。要求コマンド（第１の要求コマンド）をサーバ装置へ送信した後に一定期間経過してもサーバ装置からのデータを受信しない場合、クライアント装置はサーバ装置が第１の要求コマンドを受信できなかったものとして新たな要求コマンド（第２の要求コマンド）を送信する。このような場合において、サーバ装置が他の処理を終了させるまでに時間がかかると、サーバ装置が第１の要求コマンドに対してデータを返信するタイミングがクライアント装置による第２の要求コマンドの送信後になってしまう。クライアント装置では第２の要求コマンドを送信した後に先に送信していた第１の要求コマンドに対して返信されたデータを受信した場合、第１の要求コマンドに対して返信されたデータを第２の要求コマンドに対して返信されたデータとして処理してしまう。クライアント装置も複数のデータを取り扱うため、第２の要求コマンドは第１の要求コマンドとは異なるデータを要求するものであることが多く、第１の要求コマンドに対する返信データを第２の要求コマンドに対するものとして取り扱うというデータの取り違えは、時として致命的な判断ミスや制御不良をもたらす可能性がある。クライアント装置とサーバ装置との間の通信が正常に行われないことにより、通信の安定性を損なうおそれがあるのである。
【０００８】
そこで、本発明は、このような問題に鑑みて、通信の安定性を確保できるクライアント装置を提供することを目的の一つとしている。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明の一側面に係るクライアント装置は、要求するデータ数を示す要求データ数を含む要求コマンドを生成して送信するコマンド生成部と、受信したデータが前記要求コマンドに対して返信されたデータであるか否かを判定する判定部と、を備え、前記要求コマンドは、前回要求したデータ数とは異なる要求データ数を含む。
【発明の効果】
【００１０】
本発明によれば、前回要求したデータ数とは異なる要求データ数を含む要求コマンドが送信されるので、クライアント装置は返信されたデータが要求コマンドに対して返信されたデータであるか否かを正しく判定することができる。よって、要求コマンドに対して返信されたデータ以外のデータを要求コマンドに対して返信されたデータとして処理してしまうことを防止できるため、通信の安定性を確保できる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に係るプロセス管理システムの概略図である。
【図２】本発明の実施形態に係るプロセスコントローラおよびＰＬＣのブロック図である。
【図３】本発明の実施形態に係るプロセス管理システムにおける、プロセスデータの読み出し処理シーケンス図の一例である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付して表している。
【００１３】
＜定義＞
「プロセスデータ」：プロセス管理システムにおける装置・機器（主にフィールド機器）から送信される測定値、または、当該装置・機器に対する設定値・制御値等のデータをいう。
「要求データ数」：クライアント装置が要求するデータの数をいう。例えば、クライアント装置が、他装置に記録されているプロセスデータの読み出しを実行する場合において、要求データ数は、読み出されるデータの数をいう。「データ」は１バイト、２バイトといった単位でもよく、所定のバイト数で構成されるパケットといった単位でもよい。
「前回要求したデータ数」：クライアント装置が一つ前の回に（最後に）要求したデータの数をいう。
「アドレス範囲の指定情報」：一以上のデータのアドレスで規定される範囲を指定する情報をいう。例えば、要求するデータとしてアドレスＸＸＸ０から連続する５つのデータ要求する場合、アドレス範囲の指定情報として、開始アドレスＸＸＸ０と終了アドレスＸＸＸ４とを指定する。なお、データ数が一つの場合も含んでよい。例えば、アドレスＸＸＸ１のデータのみを要求する場合、アドレス範囲の指定情報は、開始アドレスおよび終了アドレスともにアドレスＸＸＸ１と指定する。
【００１４】
＜システム構成＞
図１に、本実施形態に係るプロセス管理システムの構成図を示す。図１に示すように、本実施形態のプロセス管理システム１００は、例示的に、スーパーバイザリステーション１０と、プロセスコントローラ２０と、プログラマブルロジックコントローラ（ＰＬＣ：Ｐｒｏｇｒａｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌ）３０と、フィールド機器４０と、を備えて構成されている。ユニバーサルバス１は、汎用のコンピュータネットワーク規格、例えばイーサネット（登録商標）(Ｅｔｈｅｒｎｅｔ)により装置間を相互に接続するバスである。また、ローカルバス２は、汎用のコンピュータネットワーク規格、例えばイーサネット（登録商標）により装置間を相互に接続するバスである。ローカルバス２は、例えば工場内のコンピュータ機器を相互に接続する工場ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）に相当する。
【００１５】
スーパーバイザリステーション１０は、ユニバーサルバス１に接続するプロセスコントローラ１０が管理する外部機器（フィールド機器４０など）等から供給される測定信号等に基づいて、プロセス管理システム１００全体の運転内容を監視し、各機器に対する制御信号を送信する管理装置である。スーパーバイザリステーション１０は、例えば、ユニバーサルバス１に接続されるプロセスコントローラ１０や、ローカルバス２に接続されるＰＬＣ３０、フィールド機器４０の運転内容をモニタに表示可能に構成されている。運用者は、表示内容を見ることにより、プロセス管理システム１００全体の運転内容を把握することが可能である。
【００１６】
プロセスコントローラ２０は、ローカルバス２に接続された各種機器を管理する管理装置であり、ユニバーサルバス１の系統とローカルバス２の系統との間で情報を受け渡すためのゲートウェイとして機能する。また、プロセスコントローラ２０は、プロセス管理システム１００における通信プロトコルにおいてクライアント装置として機能し、例えば、後述するＰＬＣ３０（サーバ装置として機能）に対して、ＰＬＣ３０が記録するプロセスデータの読み出し要求（要求コマンド）を送信し、ＰＬＣ３０から返信される応答（プロセスデータ）を受信する。プロセスコントローラ２０の詳細な構成については、図２を参照して後述する。
【００１７】
ＰＬＣ３０は、プロセス管理システム１００における通信プロトコルにおいてサーバ装置として機能する装置である。ＰＬＣ３０は、例えば、プロセスコントローラ２０から送信される、ＰＬＣ３０が記録するプロセスデータの読み出し要求（要求コマンド）に対して、応答（プロセスデータ）を返信する。また、ＰＬＣ３０は、後述するフィールド機器４０などを統合して制御するコントローラとして機能し、フィールド機器４０から、任意のタイミングでプロセスデータを受信し、記録する。ＰＬＣ３０の詳細な構成については、図２を参照して後述する。
【００１８】
フィールド機器４０は、流量、圧力、温度等の所定の物理量を測定する測定ポイント又は制御する制御ポイントとして機能可能に構成されている。フィールド機器４０は、例えば、流量センサや圧力センサ、温度センサ等の各種センサ、温度調節器や圧力・流量・開閉制御弁等の各種弁装置、ポンプやブロア、ファン等のモータ、アクチュエータ機器類である。
【００１９】
なお、図１において、プロセス管理システム１００は、フィールド機器４０を一台のみ備えているが、その数に制限はなく、二台以上を備えていてもよい。また、図１においては、ＰＬＣ３０とフィールド機器４０とは直接接続されているが、間接的に接続されてもよく、ＰＬＣ３０とフィールド機器４０との間にＩ／Ｏサーバ等のサーバ機能を有する機器が接続されてもよい。
【００２０】
図２に、本実施形態におけるプロセスコントローラ２０およびＰＬＣ３０のブロック図を示す。図２に示すように、プロセスコントローラ２０（クライアント装置）は、例示的に、コマンド生成部２４と、データ記録部２７と、判定部２８と、を備えて構成される。プロセスコントローラ２０の上記機能ブロックは、例えば、データ記録部２７又は不図示の記憶領域に格納されているソフトウェアプログラムを図示しないプロセッサが実行することにより機能的に実現される。また、図２に示すように、ＰＬＣ３０は、例示的に、データ記録部３２と、データ読み出し部３６と、を備えて構成される。ＰＬＣ３０の上記機能ブロックは、例えば、データ記録部３２又は不図示の記憶領域に格納されているソフトウェアプログラムをプロセッサが実行することにより機能的に実現される。
【００２１】
特に本実施形態では、プロセスコントローラ２０（クライアント装置）は、要求するデータ数を示す要求データ数を含む要求コマンドを生成して送信するコマンド生成部２４と、受信したデータが前記要求コマンドに対して返信されたデータであるか否かを判定する判定部２８と、を備え、要求コマンドは、前回要求したデータ数とは異なる要求データ数を含む点に特徴がある。要求コマンドの送信先は、ＰＬＣ３０（サーバ装置）であり、要求コマンドを受信してデータを返信するように構成されている。
【００２２】
プロセスコントローラ２０のコマンド生成部２４は、プロセスデータを要求するためのコマンド（要求コマンド）を生成し、送信するブロックである。要求コマンドには、例えば、読み出しコマンドが含まれており、読み出しコマンドとは、例えば、プロセスコントローラ２０がＰＬＣ３０に記録されているプロセスデータを読み出すことを要求するためのコマンドである。コマンド生成部２４は、例えば、要求データ数を含む読み出しコマンド（要求コマンド）を生成する。コマンド生成部２４は、例えば、読み出す（要求する）データ数を示す読み出しデータ数（要求データ数）を決定する。具体的には、ＰＬＣ３０に記録されているデータがアドレス０〜２００（以下数値は１０進数とする）に格納されている場合、コマンド生成部２４は、例えば、連続する読み出しデータとして、アドレス１０〜２５を指定する。そして、コマンド生成部２４は、読み出しデータのデータ数として、連続するアドレス１０〜２５のデータ数を１６と決定する。そして、コマンド生成部２４は、要求データ数１６を含む読み出しコマンド（要求コマンド）を生成し、送信する。
【００２３】
また、コマンド生成部２４は、例えば、ＰＬＣ３０に記録されているデータのうち、読み出しデータとして最初のデータのアドレスを示す先頭アドレス又は最後のデータのアドレスを示す終了アドレスと、読み出しデータ数と、を含む読み出しコマンドを生成し、送信する。具体的には、コマンド生成部２４は、例えば、連続する読み出しデータとして、アドレス１０〜２５を指定する。コマンド生成部２４は、読み出しデータのデータ数として、連続するアドレス１０〜２５のデータ数を１６と決定する。また、コマンド生成部２４は、ＰＬＣ３０のデータ記録部３２における、読み出しデータ１０のアドレス１０を先頭アドレスとして決定し、又は、読み出しデータ２５のアドレス２５を終了アドレスとして決定する。コマンド生成部２４は、先頭アドレス（アドレス１０）又は終了アドレス（アドレス２５）と、読み出しデータ数１６と、を含む読み出しコマンドを生成し送信する。
【００２４】
なお、コマンド生成部２４が指定するアドレスは、必ずしも、最初のデータのアドレスまたは最後のデータのアドレスである必要はなく、読み出しデータの中途のデータのアドレスであってもよい。具体的には、読み出しデータがアドレス１０〜２５である場合、中間に位置するデータのアドレス２０を決定するように構成されてもよい。一つのアドレスとデータ数とを指定する場合、指定したアドレスに対してどのような範囲のデータを読み出すかは予め定めておく。例えば、先頭アドレスを指定すると規定されていれば、指定されたアドレスのデータから数えてデータ数分のデータを読み取る。終了アドレスを指定すると規定されていれば、指定されたアドレスのデータからさかのぼって数えてデータ数分のデータを読み取る。中間アドレスを指定すると規定されていれば、指定されたアドレスのデータを中心に前後同数で合計がデータ数分のデータを読み取る。
【００２５】
さらに、コマンド生成部２４は、アドレス範囲の指定情報を含む読み出しコマンド（要求コマンド）を生成し、送信する。コマンド生成部２４は、例えば、ＰＬＣ３０に記録されているデータの最初のデータの先頭アドレスから最後のデータの終了アドレスまでを示すアドレス範囲を決定する。具体的には、コマンド生成部２４は、例えば、連続する読み出しデータとして、アドレス１０〜２５を指定する。そして、コマンド生成部２４は、後述するデータ記録部３２における、最初のデータでの先頭アドレス１０から最後のデータの終了アドレス２５までを示すアドレス範囲１０−２５を決定する。そして、コマンド生成部２４は、アドレス範囲１０−２５の指定情報を含む読み出しコマンドを生成し、送信する。
【００２６】
なお、読み出しデータは、一以上でありその数に制限はない。例えば、データ記録部３２に記録されている一のデータ（例えばデータ１０）のみを読み出す場合においては、コマンド生成部２４は、例えば、データ１０のアドレス１０のみ決定し、読み出しデータ数は、１と決定してもよい。また、データ記録部３２に記録されている一のデータ（例えばデータ１０）のみを読み出す場合においては、コマンド生成部２４は、アドレス範囲として、最初のデータであるデータ１０のアドレス１０から最後のデータであるデータ１０のアドレス１０までを示すアドレス範囲１０を決定してもよい。
【００２７】
コマンド生成部２４は、前回要求したデータ数とは異なるデータ数を含む読み出しコマンド（要求コマンド）を生成し送信するブロックである。コマンド生成部２４は、例えば、前回要求したデータ数としてアドレス１０〜２５のデータ数１６を含む読み出しコマンドを生成していた場合、今回は、要求データ数としてアドレス１０〜２６のデータ数１７を含む新たな読み出しコマンドを生成する。
【００２８】
また、コマンド生成部２４は、例えば、前回要求したデータ数として、アドレス１０〜アドレス２９のデータ数２０と、アドレス１０（先頭アドレス）又はアドレス２９（最後アドレス）と、を含む読み出しコマンドを生成していた場合、今回は、アドレス１０〜データ３０のデータ数２１と、アドレス１０（先頭アドレス）又はアドレス３０と、を含む新たな読み出しコマンドを生成する。
【００２９】
さらに、コマンド生成部２４は、例えば、前回要求したデータ、つまり、アドレス１０〜アドレス２９のアドレス１０（先頭アドレス）からアドレス２９までのアドレス範囲１０−２９（データ数２０）の指定情報を含む読み出しコマンドを生成していた場合、今回は、アドレス１０〜アドレス３０のアドレス１０（先頭アドレス）からアドレス３０までのアドレス範囲１０−３０（データ数２１）の指定情報を含む新たな読み出しコマンドを生成する。
【００３０】
なお、上記の説明では、コマンド生成部２４は、前回要求したデータ数と一つ異なるデータ数を含む新たな読み出しコマンドを生成しているが、これに限られず、一以上異なるデータ数を含む新たな読み出しコマンドを生成するように構成される。例えば、コマンド生成部２４は、前回要求したデータ数２０の場合に、データ数５５の新たな読み出しコマンドを生成するように構成されてもよい。
【００３１】
また、コマンド生成部２４は、少なくとも、前回要求したデータ数と異なるデータ数の新たな読み出しコマンドを生成すればよく、前々回と同一の要求データ数を含む読み出しコマンドを生成してもよい。具体的には、第１回目に要求データ数１０の読み出しコマンドを生成し、第２回目に要求データ数３５の読み出しコマンドを生成し、第３回目に要求データ１０の読み出しコマンドを生成するように構成されてもよい。
【００３２】
さらに、コマンド生成部２４は、通信速度や通信状況等に鑑みて、複数回にわたり異なる要求データ数を含む読み出しコマンドを生成してもよい。コマンド生成部２４は、例えば、第１回目に要求データ数１０の読み出しコマンドを生成し、第２回目に要求データ数２１の読み出しコマンドを生成し、第３回目に要求データ３５の読み出しコマンドを生成し、第４回目に要求データ４７の読み出しコマンドを生成するように構成されてもよい。
【００３３】
さらにまた、プロセスコントローラ２０の起動直後であったり何らかの事情でリセットされたりした場合のように、前回要求したデータ数が存在しない場合は、コマンド生成部２４は、例えば、所定の設定値（例えば、要求データ数１０）を含む要求コマンドを生成するように構成されてもよいし、通信の開始を知らせるために、要求データ数０を含む要求コマンドを生成するように構成されてもよい。
【００３４】
データ記録部２７は、各種データ・情報を記録する記録媒体である。データ記録部２７は、例えば、コマンド生成部２４が決定した読み出し条件、コマンド等を記録する。また、データ記録部２７は、例えば、後述するとおり、ＰＬＣ３０から返信されたプロセスデータを記録する。データ記録部２７に記録されたデータは、図示しないディスプレイに表示されたり、図示しない制御部が各種の制御に用いたりする。
【００３５】
判定部２８は、プロセスコントローラ２０（クライアント装置）が受信したデータが要求コマンドに対して返信されたデータであるか否かを判定するブロックである。判定部２８は、例えば、要求データ数とプロセスコントローラ２０が受信したプロセスデータの数とを比較することにより、プロセスコントローラ２０が受信したプロセスデータが、要求コマンドに対して返信されたプロセスデータであるか否かを判定する。
【００３６】
具体的に、要求データ数が１６の場合に、プロセスコントローラ２０が受信したデータの数が１６である場合は、要求データ数と、プロセスコントローラ２０が受信したデータの数と、が一致するので、判定部２８は、プロセスコントローラ２０（クライアント装置）が受信したプロセスデータは、要求データ数１６を含む要求コマンドに対して返信されたプロセスデータであると判定する。一方で、要求データ数が１６の場合に、プロセスコントローラ２０が受信したデータの数が２０である場合は、要求データ数と、プロセスコントローラ２０が受信したデータの数と、が一致しないので、判定部２８は、プロセスコントローラ２０が受信したプロセスデータは、要求データ数１６を含む要求コマンドに対して返信されたプロセスデータではないと判定する。
【００３７】
ＰＬＣ３０のデータ記録部３２は、プロセスデータを記録する記録媒体である。データ記録部３２は、例えば、フィールド機器４０が送信したプロセスデータを、例えばアドレス０〜アドレス２００に格納する。また、データ記録部３２は、各プロセスデータを、各プロセスデータが記録されているデータ記録部３２における各アドレスを示すアドレス情報と関連づけて記録する。データ記録部３２は、例えば、データ１０を、データ１０のアドレス１０と関連づけて記録する。
【００３８】
データ読み出し部３６は、プロセスコントローラ２０（クライアント装置）からの読み出しコマンド（要求コマンド）に基づいて、プロセスデータをデータ記録部３２から読み出すブロックである。データ読み出し部３６は、例えば、要求データ数１６を含む読み出しコマンドに基づいて、データ記録部３２から１６個のデータを読み出す。
【００３９】
データ読み出し部３６は、例えば、読み出しデータとして最初のデータのアドレスを示す先頭アドレス又は最後のデータのアドレスを示す最後アドレスと、読み出しデータ数（要求データ数）と、を含む読み出しコマンド（要求コマンド）に基づいて、データ記録部３２からプロセスデータを読み出す。具体的には、データ読み出し部３６は、例えば、読み出しデータ数１６と、読み出しデータ１０のアドレス１０（先頭アドレス）と、に基づいて、データ記録部３２に記録されている、アドレス１０〜２５の１６個のデータを読み出す。また、データ読み出し部３６は、例えば、読み出しデータ数１６と、読み出しデータ１０のアドレス２５と、に基づいて、データ記録部３２に記録されている、アドレス１０〜２５の１６個のデータを読み出す。上記のとおり、データ読み出し部３６は、先頭アドレスを基準として、先頭アドレスより後ろのアドレスに対応するプロセスデータ（アドレス１０、１１、１２、…、２５）をデータ記録部３２から読み出し、又は、最後アドレスを基準として、最後アドレスより前のアドレスに対応するプロセスデータ（アドレス２５、２４、２３、…、１０）をデータ記録部３２から読み出す。
【００４０】
データ読み出し部３６は、読み出しデータとして最初のデータの先頭アドレスから最後のデータの最後アドレスまでを示すアドレス範囲の指定情報を含む読み出しコマンド（要求コマンド）に基づいて、データ記録部３２からプロセスデータを読み出す。具体的には、データ読み出し部３６は、例えば、最初のデータであるデータ１０の先頭アドレス１０から最後のデータであるデータ２５の最後アドレス２５までを示すアドレス範囲１０−２５の指定情報に基づいて、データ記録部３２に記録されている、アドレス範囲１０−２５に対応するプロセスデータ１０〜２５の１６個のデータを読み出す。
【００４１】
＜動作の説明＞
以下、図３の処理シーケンス図を参照しながら、プロセス管理システム１００のプロセスデータの読み出し動作を説明する。図３は、本発明の実施形態に係るプロセス管理システムにおける、プロセスデータの読み出し処理シーケンス図である。
【００４２】
前提として、図２に示すＰＬＣ３０のデータ記録部３２は、外部機器（フィールド機器４０等）から送信された一以上のプロセスデータを記録している。図２の例では、データ記録部３２は、データ０〜２００を記録しているが、これに限られないのは、上記したとおりである。また、プロセスコントローラ２０（クライアント装置）は、ＰＬＣ３０のデータ記録部３２に記録されているプロセスデータおよび当該プロセスデータに対応するアドレスに関する情報を事前に把握している。
【００４３】
まず、図３のステップＳ１において、プロセスコントローラ２０（クライアント装置）のコマンド生成部２４は、プロセスデータの読み出し条件を決定する。コマンド生成部２４は、例えば、読み出しデータとして、連続するアドレス１０〜２５を指定する。そして、コマンド生成部２４は、読み出すデータ数（要求するデータ数）として、連続するアドレス１０〜２５のデータ数（要求データ数）を１６と決定する。
【００４４】
ステップＳ２において、コマンド生成部２４は、コマンドを生成し、生成したコマンドをＰＬＣ３０（サーバ）に送信する。コマンド生成部２４は、例えば、要求データ数１６を含む読み出しコマンド（要求コマンド）を生成し送信する。
【００４５】
ステップＳ３において、プロセスコントローラ２０は、ＰＬＣ３０から返信されるプロセスデータを受信するために所定期間、例えば、３〜５秒間待機する。
【００４６】
一方で、ステップＳ１１において、ＰＬＣ３０は、プロセスコントローラ２０が送信した読み出しコマンドを受信する。
【００４７】
ステップＳ１２において、ＰＬＣ３０のデータ読み出し部３６は、読み出しコマンドに基づいて、データ記録部３２からプロセスデータを読み出す。データ読み出し部３６は、例えば、要求データ数１６を含む読み出しコマンドに基づいて、データ記録部３２から１６個のデータを読み出す。
【００４８】
ステップＳ１３において、ＰＬＣ３０は、データ読み出し部３６が読み出したプロセスデータをプロセスコントローラ２０に送信する。ＰＬＣ３０は、例えば、データ読み出し部３６がデータ記録部３２から読み出した１６個のプロセスデータをプロセスコントローラ２０に返信する。
【００４９】
ステップＳ４において、プロセスコントローラ２０は、プロセスデータを所定期間内に受信したか否かを判断する。プロセスコントローラ２０が、ＰＬＣ３０が送信したプロセスデータを受信した場合、すなわち、ステップＳ３において、プロセスコントローラ２０が、読み出しデータを受信するための待機時間内にプロセスデータを受信した場合（ステップＳ４においてＹｅｓの場合）は、ステップＳ５に進む。
【００５０】
ステップＳ５において、プロセスコントローラ２０の判定部２８は、プロセスコントローラ２０が受信したプロセスデータ（読み出しデータ）のデータ数を計算する。
【００５１】
ステップＳ６において、プロセスコントローラ２０の判定部２８は、プロセスコントローラ２０が受信したプロセスデータが、要求コマンドに対して返信されたプロセスデータであるか否かを判定する。判定部２８は、具体的には、読み出しデータ数と要求データ数とが一致するか否かを判定する。判定部２８は、例えば、ＰＬＣ３０から返信され、プロセスコントローラ２０が受信したデータの数が１６である場合は、要求データ数１６と、プロセスコントローラ２０が受信したデータの数１６と、が一致するので、プロセスコントローラ２０が受信したプロセスデータが、要求データ数１６を含む要求コマンドに対して返信されたプロセスデータであると判定する（ステップＳ６においてＹＥＳ）。この場合は、例えば、プロセスコントローラ２０は、ＰＬＣ３０から返信され、自らが受信したデータをデータ記録部２７に記録する（ステップＳ７）。
【００５２】
しかしながら、ＰＬＣ３０から返信され、プロセスコントローラ２０が受信したデータの数が１７である場合は、要求データ数１６と、プロセスコントローラ２０が受信したデータの数１７と、が一致しないので、プロセスコントローラ２０が受信したプロセスデータは、要求データ数１６を含む要求コマンドに対して返信されたプロセスデータでないと判定する（ステップＳ６においてＮＯ）。この場合は、プロセスコントローラ２０は、例えば、ＰＬＣ３０から返信され、自らが受信したデータを記録せず、削除する等の処理を実行する（ステップＳ８）。また、過去に要求した要求コマンドに対してデータが返信されていない返信未受領の要求コマンドが存在する場合、過去に送信した要求コマンドに対応するデータとして処理してもよい。具体的には、プロセスコントローラ２０は、今回返信されてきたデータのデータ数と返信未受領の要求コマンドの要求データ数とを比較し、一致するものが存在したら、今回返信されてきたデータを要求データ数が一致している要求コマンドに対応するものとして処理する。
【００５３】
ステップＳ４に戻り、プロセスコントローラ２０が、ＰＬＣ３０が送信したプロセスデータを受信しない場合、例えば、ステップＳ３において、読み出しデータを受信するための待機時間（たとえば、３〜５秒）を過ぎたにも関わらず、プロセスコントローラ２０がプロセスデータを受信しなかった場合（ステップＳ４においてＮｏの場合）は、ステップＳ１に戻る。そして、プロセス管理システム１００は、ステップＳ１から再度、ステップＳ１〜Ｓ５、Ｓ１１〜Ｓ１３に示すプロセスデータ読み出し処理を実行する。以下に説明する再度の読み出し処理において、前回の読み出し処理と同一内容のステップについては、説明を省略する。
【００５４】
（再度の読み出し処理）
ステップＳ１において、コマンド生成部２４は、前回要求したデータ数としてアドレス１０〜２５のデータ数１６と決定しているので、今回は、例えば、要求データ数としてアドレス１０〜２６のデータ数１７と決定する。
【００５５】
ステップＳ２において、コマンド生成部２４は、前回要求したデータ数としてアドレス１０〜２５のデータ数１６を含む読み出しコマンドを生成したので、今回は、例えば、要求データ数としてアドレス１０〜２６のデータ数１７を含む新たな読み出しコマンドを生成し、送信する。
【００５６】
ステップＳ１２において、データ読み出し部３６は、読み出しコマンドに基づいて、データ記録部３２からプロセスデータを読み出す。データ読み出し部３６は、例えば、要求データ数１７を含む読み出しコマンドに基づいて、データ記録部３２から１７個のデータを読み出す。
【００５７】
ステップＳ１３において、ＰＬＣ３０は、データ読み出し部３６がデータ記録部３２から読み出した１７個のプロセスデータをプロセスコントローラ２０に返信する。
【００５８】
ステップＳ４において、プロセスコントローラ２０が、ＰＬＣ３０が返信したプロセスデータを受信した場合、すなわち、ステップＳ３において、プロセスコントローラ２０が、読み出しデータを受信するための待機時間内にプロセスデータを受信した場合（ステップＳ４においてＹｅｓの場合）は、ステップＳ５に進む。一方、ステップＳ４において、プロセスコントローラ２０が、ＰＬＣ３０が送信したプロセスデータを受信しない場合、例えば、ステップＳ３において、読み出しデータを受信するための待機時間（たとえば、３〜５秒）を過ぎたにも関わらず、プロセスコントローラ２０がプロセスデータを受信しなかった場合（ステップＳ４においてＮｏの場合）は、ステップＳ１に戻る。そして、プロセス管理システム１００は、ステップＳ１から再度、ステップＳ１〜Ｓ５、Ｓ１１〜Ｓ１３に示すプロセスデータ読み出し処理を実行する。
【００５９】
ステップＳ５において、プロセスコントローラ２０の判定部２８は、プロセスコントローラ２０が受信したプロセスデータ（読み出しデータ）のデータ数を計算する。
【００６０】
ステップＳ６において、判定部２８は、例えば、ＰＬＣ３０から返信され、プロセスコントローラ２０が受信したデータの数が１７である場合は、要求データ数１７と、プロセスコントローラ２０が受信したデータの数１７と、が一致するので、プロセスコントローラ２０が受信したプロセスデータは、要求データ数１７を含む要求コマンドに対して返信されたプロセスデータであると判定する（ステップＳ６においてＹＥＳ）。この場合は、例えば、プロセスコントローラ２０は、ＰＬＣ３０から返信され、自らが受信したデータをデータ記録部２７に記録する（ステップＳ７）。
【００６１】
しかしながら、ＰＬＣ３０から返信され、プロセスコントローラ２０が受信したデータの数が１６である場合は、要求データ数１７と、プロセスコントローラ２０が受信したデータの数１６と、が一致しないので、プロセスコントローラ２０がＰＬＣ３０から受信するプロセスデータは、要求データ数１７を含む要求コマンドに対して返信されたプロセスデータでないと判定する（ステップＳ６においてＮＯ）。この場合は、例えば、プロセスコントローラ２０は、ＰＬＣ３０から返信され、自らが受信したデータを記録せず、削除する等の処理を実行する（ステップＳ８）。
【００６２】
（効果）
以上のとおり、本実施形態においては、要求データ数を含む要求コマンドが、前回要求したデータ数とは異なる要求データ数を含むので、データの取り違えを防止できるため、通信の安定性を確保できる。
【００６３】
（その他の実施形態）
本発明における上記実施形態は、あくまでも例示であり、上記に明示しない種々の変形や技術の適用を排除する意図はない。即ち、本発明は、その趣旨を逸脱しない範囲で種々変形（各実施例を組み合わせる等）して実施することができる。例えば、上記実施形態においては、読み出しコマンドに基づくプロセスデータの読み出し処理に関して説明したが、データを要求する他のコマンド、例えば、読み込みコマンド、読み取りコマンド等に関しても適用可能である。
【符号の説明】
【００６４】
１…ユニバーサルバス
２…ローカルバス
１０…スーパーバイザリステーション
２０…プロセスコントローラ
２４…コマンド生成部
２７…データ記録部
２８…判定部
３０…ＰＬＣ
３２…データ記録部
３６…データ読み出し部
４０…フィールド機器
【図１】
2017017505.tif 000003
【図２】
2017017505.tif 000004
【図３】
2017017505.tif 000005